@knowttl/artium-axi 0.0.8 → 0.0.10
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 +24 -16
- package/bin/artium-axi.mjs +2509 -1008
- package/package.json +1 -1
package/bin/artium-axi.mjs
CHANGED
|
@@ -6,9 +6,9 @@ var __export = (target, all) => {
|
|
|
6
6
|
};
|
|
7
7
|
|
|
8
8
|
// src/cli/main.ts
|
|
9
|
-
import { randomUUID as
|
|
9
|
+
import { randomUUID as randomUUID4 } from "node:crypto";
|
|
10
10
|
import { homedir as homedir3 } from "node:os";
|
|
11
|
-
import { resolve as
|
|
11
|
+
import { resolve as resolve3, relative, sep, isAbsolute } from "node:path";
|
|
12
12
|
|
|
13
13
|
// node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/external.js
|
|
14
14
|
var external_exports = {};
|
|
@@ -5036,7 +5036,7 @@ var recursive = /* @__PURE__ */ new WeakMap();
|
|
|
5036
5036
|
var NONE = 0;
|
|
5037
5037
|
var ASSUMED = 1;
|
|
5038
5038
|
var PROVEN = 2;
|
|
5039
|
-
function isRecursive(inst, stack,
|
|
5039
|
+
function isRecursive(inst, stack, resolve4) {
|
|
5040
5040
|
const cached2 = recursive.get(inst);
|
|
5041
5041
|
if (cached2 !== void 0)
|
|
5042
5042
|
return cached2 ? PROVEN : NONE;
|
|
@@ -5046,7 +5046,7 @@ function isRecursive(inst, stack, resolve3) {
|
|
|
5046
5046
|
let result = NONE;
|
|
5047
5047
|
const check2 = (child) => {
|
|
5048
5048
|
if (result !== PROVEN && child?._zod) {
|
|
5049
|
-
const answer = isRecursive(child, stack,
|
|
5049
|
+
const answer = isRecursive(child, stack, resolve4);
|
|
5050
5050
|
if (answer > result)
|
|
5051
5051
|
result = answer;
|
|
5052
5052
|
}
|
|
@@ -5057,7 +5057,7 @@ function isRecursive(inst, stack, resolve3) {
|
|
|
5057
5057
|
const desc = Object.getOwnPropertyDescriptor(sh, key);
|
|
5058
5058
|
if (spread && !desc.enumerable)
|
|
5059
5059
|
continue;
|
|
5060
|
-
const child = desc.get ? ASSUMED : desc.value?._zod ? isRecursive(desc.value, stack,
|
|
5060
|
+
const child = desc.get ? ASSUMED : desc.value?._zod ? isRecursive(desc.value, stack, resolve4) : NONE;
|
|
5061
5061
|
if (child > answer)
|
|
5062
5062
|
answer = child;
|
|
5063
5063
|
}
|
|
@@ -5121,7 +5121,7 @@ function isRecursive(inst, stack, resolve3) {
|
|
|
5121
5121
|
break;
|
|
5122
5122
|
// `$ZodLazy` caches its inner on the def, so a resolved edge is followed exactly
|
|
5123
5123
|
case "lazy": {
|
|
5124
|
-
const inner = def._cachedInner ?? (
|
|
5124
|
+
const inner = def._cachedInner ?? (resolve4 ? inst._zod.innerType : void 0);
|
|
5125
5125
|
merge2(inner ? isRecursive(inner, stack, false) : ASSUMED);
|
|
5126
5126
|
break;
|
|
5127
5127
|
}
|
|
@@ -19683,7 +19683,7 @@ var definitions = {
|
|
|
19683
19683
|
STORE_SCHEMA_INVALID: { status: 503, message: "The store schema is unsupported by this image.", next: "Use the matching image, or restore the pre-upgrade backup into a new volume with its matching image and key." },
|
|
19684
19684
|
BACKUP_FAILED: { status: 500, message: "Database backup did not complete.", next: "Check the source store and a writable backup directory; choose a new output file." },
|
|
19685
19685
|
RESTORE_FAILED: { status: 500, message: "Database restore did not complete.", next: "Stop the destination server and use an empty new data volume, an intact backup and its matching master key." },
|
|
19686
|
-
CLI_OUTDATED: { status: 426, message: "The CLI version is too old for this server.", next: "
|
|
19686
|
+
CLI_OUTDATED: { status: 426, message: "The CLI version is too old for this server.", next: "Run artium-axi update to install the current CLI." },
|
|
19687
19687
|
CERTIFICATE_INVALID: { status: 503, message: "The server certificate could not be verified.", next: "Check certificate trust or set ARTIUM_AXI_CA_FILE to the trusted CA file." },
|
|
19688
19688
|
ADMIN_REQUIRED: { status: 403, message: "Administrator capability is required.", next: "Ask an administrator to perform this operation." },
|
|
19689
19689
|
REVISION_CONFLICT: { status: 409, message: "The record changed since it was read.", next: "Read the current record revision and retry your edit." },
|
|
@@ -19823,10 +19823,11 @@ var meResponseSchema = external_exports.strictObject({
|
|
|
19823
19823
|
displayName: external_exports.string(),
|
|
19824
19824
|
administrator: external_exports.boolean(),
|
|
19825
19825
|
roles: external_exports.array(external_exports.string()),
|
|
19826
|
-
accessExpiresAt: external_exports.number().int()
|
|
19826
|
+
accessExpiresAt: external_exports.number().int(),
|
|
19827
|
+
sessionExpiresAt: external_exports.number().int()
|
|
19827
19828
|
});
|
|
19828
19829
|
var accountId = external_exports.string().min(1);
|
|
19829
|
-
var toolSchema = external_exports.enum(["falcon-axi", "vectra-axi", "az-axi", "mg-axi", "ldap-axi", "ado-axi", "awx-axi"]);
|
|
19830
|
+
var toolSchema = external_exports.enum(["falcon-axi", "vectra-axi", "az-axi", "mg-axi", "ldap-axi", "ado-axi", "awx-axi", "tenable-axi"]);
|
|
19830
19831
|
var skillsResponseSchema = external_exports.strictObject({ skills: external_exports.array(external_exports.strictObject({
|
|
19831
19832
|
name: toolSchema,
|
|
19832
19833
|
content: external_exports.string().min(1)
|
|
@@ -20046,6 +20047,10 @@ var adminAuditRoute = {
|
|
|
20046
20047
|
auditEvent: null
|
|
20047
20048
|
};
|
|
20048
20049
|
var nativeSettingsSchemas = {
|
|
20050
|
+
"tenable-axi": external_exports.strictObject({ writes: external_exports.strictObject({
|
|
20051
|
+
allowWrites: external_exports.boolean(),
|
|
20052
|
+
operations: external_exports.array(external_exports.string().regex(/^[A-Za-z0-9][A-Za-z0-9_-]*$/)).min(1).max(64)
|
|
20053
|
+
}).optional() }),
|
|
20049
20054
|
"awx-axi": external_exports.strictObject({ allowWrites: external_exports.boolean().optional() }),
|
|
20050
20055
|
"ldap-axi": external_exports.strictObject({}),
|
|
20051
20056
|
"ado-axi": external_exports.strictObject({ allowWrites: external_exports.boolean().optional() }),
|
|
@@ -20091,10 +20096,25 @@ var healthSchema = external_exports.strictObject({
|
|
|
20091
20096
|
credentialRevision: external_exports.number().int().nullable(),
|
|
20092
20097
|
errorCode: external_exports.enum(Object.keys(errors)).nullable()
|
|
20093
20098
|
});
|
|
20099
|
+
var toolWriteStateSchema = external_exports.strictObject({
|
|
20100
|
+
capable: external_exports.boolean(),
|
|
20101
|
+
enabled: external_exports.boolean(),
|
|
20102
|
+
reason: external_exports.string().nullable(),
|
|
20103
|
+
supportedOperations: external_exports.array(external_exports.string()).nullable(),
|
|
20104
|
+
allowedOperations: external_exports.array(external_exports.string()),
|
|
20105
|
+
unlocks: external_exports.string(),
|
|
20106
|
+
blocked: external_exports.string()
|
|
20107
|
+
});
|
|
20108
|
+
var writeAccessInputSchema = external_exports.strictObject({
|
|
20109
|
+
enabled: external_exports.boolean(),
|
|
20110
|
+
operations: external_exports.array(external_exports.string().min(1).max(256)).max(64).refine((operations) => new Set(operations).size === operations.length).optional(),
|
|
20111
|
+
expectedRevision: external_exports.number().int().positive()
|
|
20112
|
+
});
|
|
20094
20113
|
var adminToolSchema = external_exports.strictObject({
|
|
20095
20114
|
name: toolSchema,
|
|
20096
20115
|
enabled: external_exports.boolean(),
|
|
20097
20116
|
version: external_exports.string(),
|
|
20117
|
+
writeAccess: toolWriteStateSchema,
|
|
20098
20118
|
readOnly: external_exports.boolean().default(true),
|
|
20099
20119
|
nativeSettings: external_exports.record(external_exports.string(), external_exports.unknown()),
|
|
20100
20120
|
revision: external_exports.number().int().positive(),
|
|
@@ -20140,7 +20160,6 @@ var certificateInspectionSchema = external_exports.strictObject({
|
|
|
20140
20160
|
warnings: external_exports.array(external_exports.string()),
|
|
20141
20161
|
reason: external_exports.string(),
|
|
20142
20162
|
verificationError: external_exports.string().nullable(),
|
|
20143
|
-
repairAvailable: external_exports.boolean(),
|
|
20144
20163
|
previousFingerprints: external_exports.array(external_exports.string())
|
|
20145
20164
|
});
|
|
20146
20165
|
var trustedCredentialCertificateSchema = external_exports.strictObject({
|
|
@@ -20148,7 +20167,7 @@ var trustedCredentialCertificateSchema = external_exports.strictObject({
|
|
|
20148
20167
|
endpoint: external_exports.string(),
|
|
20149
20168
|
certificate: certificateDetailsSchema,
|
|
20150
20169
|
leaf: certificateDetailsSchema,
|
|
20151
|
-
mode: external_exports.enum(["
|
|
20170
|
+
mode: external_exports.enum(["ca", "pin"]),
|
|
20152
20171
|
createdAt: external_exports.number().int()
|
|
20153
20172
|
});
|
|
20154
20173
|
var adminCertificateRoutes = {
|
|
@@ -20167,7 +20186,7 @@ var adminCertificateRoutes = {
|
|
|
20167
20186
|
trust: {
|
|
20168
20187
|
method: "POST",
|
|
20169
20188
|
path: "/v1/admin/tools/:tool/certificates/trust",
|
|
20170
|
-
input: external_exports.strictObject({ inspectionId: external_exports.string() }),
|
|
20189
|
+
input: external_exports.strictObject({ inspectionId: external_exports.string(), mode: external_exports.enum(["ca", "pin"]).default("ca") }),
|
|
20171
20190
|
response: external_exports.strictObject({ trusted: external_exports.literal(true) })
|
|
20172
20191
|
},
|
|
20173
20192
|
remove: {
|
|
@@ -20178,6 +20197,26 @@ var adminCertificateRoutes = {
|
|
|
20178
20197
|
}
|
|
20179
20198
|
};
|
|
20180
20199
|
var adminToolRoutes = {
|
|
20200
|
+
get: {
|
|
20201
|
+
method: "GET",
|
|
20202
|
+
path: "/v1/admin/tools/:tool",
|
|
20203
|
+
input: external_exports.strictObject({}),
|
|
20204
|
+
response: adminToolSchema,
|
|
20205
|
+
authorization: "administrator-and-recent-auth",
|
|
20206
|
+
auditEvent: null
|
|
20207
|
+
},
|
|
20208
|
+
// Changes only write policy. Omitted operations retain the current allow-list; an empty
|
|
20209
|
+
// list clears it while disabling. Graph and Vectra require a supported nonempty allow-list
|
|
20210
|
+
// when enabling; tools without an allow-list reject operations input.
|
|
20211
|
+
// Other native settings and credentials are preserved. Revision conflicts never mutate.
|
|
20212
|
+
writeAccess: {
|
|
20213
|
+
method: "PATCH",
|
|
20214
|
+
path: "/v1/admin/tools/:tool/write-access",
|
|
20215
|
+
input: writeAccessInputSchema,
|
|
20216
|
+
response: adminToolSchema,
|
|
20217
|
+
authorization: "administrator-and-recent-auth",
|
|
20218
|
+
auditEvent: "tool-write-access"
|
|
20219
|
+
},
|
|
20181
20220
|
list: {
|
|
20182
20221
|
method: "GET",
|
|
20183
20222
|
path: "/v1/admin/tools",
|
|
@@ -20560,11 +20599,12 @@ import { readFileSync as readFileSync2 } from "node:fs";
|
|
|
20560
20599
|
import { request as httpRequest } from "node:http";
|
|
20561
20600
|
import { request as httpsRequest } from "node:https";
|
|
20562
20601
|
import { rootCertificates } from "node:tls";
|
|
20602
|
+
import { resolve } from "node:path";
|
|
20563
20603
|
|
|
20564
20604
|
// package.json
|
|
20565
20605
|
var package_default = {
|
|
20566
20606
|
name: "artium-axi",
|
|
20567
|
-
version: "0.0.
|
|
20607
|
+
version: "0.0.10",
|
|
20568
20608
|
private: true,
|
|
20569
20609
|
license: "MIT",
|
|
20570
20610
|
type: "module",
|
|
@@ -20642,8 +20682,20 @@ function sessionPath(platform = process.platform, environment = process.env, hom
|
|
|
20642
20682
|
if (!base) throw new ArtiumError("CLIENT_CONFIG_INVALID", void 0, "Set APPDATA to your writable roaming configuration folder, then sign in again.");
|
|
20643
20683
|
return paths.join(base, "artium-axi", "session.json");
|
|
20644
20684
|
}
|
|
20685
|
+
function clientConfigPath(platform = process.platform, environment = process.env, home = homedir()) {
|
|
20686
|
+
return sessionPath(platform, environment, home).replace(/session\.json$/, "config.json");
|
|
20687
|
+
}
|
|
20688
|
+
function readClientConfig(environment = process.env) {
|
|
20689
|
+
try {
|
|
20690
|
+
return external_exports.object({ serverUrl: external_exports.string(), caFile: external_exports.string().optional() }).parse(JSON.parse(readFileSync(clientConfigPath(process.platform, environment), "utf8")));
|
|
20691
|
+
} catch (error62) {
|
|
20692
|
+
if (error62.code === "ENOENT") return void 0;
|
|
20693
|
+
if (error62 instanceof ArtiumError) throw error62;
|
|
20694
|
+
throw new ArtiumError("CLIENT_CONFIG_INVALID");
|
|
20695
|
+
}
|
|
20696
|
+
}
|
|
20645
20697
|
function restrictWindowsAcl(path, directory) {
|
|
20646
|
-
const script = `$ErrorActionPreference='Stop'; $path=$env:ARTIUM_AXI_SESSION_ACL_PATH; $directory=$env:ARTIUM_AXI_SESSION_ACL_KIND -eq 'directory'; $acl=if ($directory) { [System.Security.AccessControl.DirectorySecurity]::new() } else { [System.Security.AccessControl.FileSecurity]::new() }; $acl.SetAccessRuleProtection($true,$false); $user=[System.Security.Principal.WindowsIdentity]::GetCurrent().User; $inherit=if ($directory) { [System.Security.AccessControl.InheritanceFlags]'ContainerInherit,ObjectInherit' } else { [System.Security.AccessControl.InheritanceFlags]::None }; foreach ($sid in @($user,[System.Security.Principal.SecurityIdentifier]::new('S-1-5-18'),[System.Security.Principal.SecurityIdentifier]::new('S-1-5-32-544'))) { $acl.AddAccessRule([System.Security.AccessControl.FileSystemAccessRule]::new($sid,'FullControl',$inherit,'None','Allow')) };
|
|
20698
|
+
const script = `$ErrorActionPreference='Stop'; $path=$env:ARTIUM_AXI_SESSION_ACL_PATH; $directory=$env:ARTIUM_AXI_SESSION_ACL_KIND -eq 'directory'; $acl=if ($directory) { [System.Security.AccessControl.DirectorySecurity]::new() } else { [System.Security.AccessControl.FileSecurity]::new() }; $acl.SetAccessRuleProtection($true,$false); $user=[System.Security.Principal.WindowsIdentity]::GetCurrent().User; $inherit=if ($directory) { [System.Security.AccessControl.InheritanceFlags]'ContainerInherit,ObjectInherit' } else { [System.Security.AccessControl.InheritanceFlags]::None }; foreach ($sid in @($user,[System.Security.Principal.SecurityIdentifier]::new('S-1-5-18'),[System.Security.Principal.SecurityIdentifier]::new('S-1-5-32-544'))) { $acl.AddAccessRule([System.Security.AccessControl.FileSystemAccessRule]::new($sid,'FullControl',$inherit,'None','Allow')) }; $item=if ($directory) { [System.IO.DirectoryInfo]::new($path) } else { [System.IO.FileInfo]::new($path) }; $item.SetAccessControl($acl)`;
|
|
20647
20699
|
execFileSync("powershell.exe", ["-NoProfile", "-NonInteractive", "-EncodedCommand", Buffer.from(script, "utf16le").toString("base64")], {
|
|
20648
20700
|
stdio: "ignore",
|
|
20649
20701
|
env: { ...process.env, ARTIUM_AXI_SESSION_ACL_PATH: path, ARTIUM_AXI_SESSION_ACL_KIND: directory ? "directory" : "file" }
|
|
@@ -20707,6 +20759,26 @@ var SessionStore = class {
|
|
|
20707
20759
|
rmSync(temporary, { force: true });
|
|
20708
20760
|
}
|
|
20709
20761
|
}
|
|
20762
|
+
writeClientConfig(caFile) {
|
|
20763
|
+
this.secureDirectory();
|
|
20764
|
+
const temporary = join(this.directory, `${randomUUID()}.tmp`);
|
|
20765
|
+
try {
|
|
20766
|
+
const file2 = openSync(temporary, "wx", 384);
|
|
20767
|
+
try {
|
|
20768
|
+
if (this.platform === "win32") this.acl(temporary, false);
|
|
20769
|
+
else fchmodSync(file2, 384);
|
|
20770
|
+
writeFileSync(file2, JSON.stringify({ serverUrl: this.serverUrl, caFile }));
|
|
20771
|
+
fsyncSync(file2);
|
|
20772
|
+
} finally {
|
|
20773
|
+
closeSync(file2);
|
|
20774
|
+
}
|
|
20775
|
+
renameSync(temporary, join(this.directory, "config.json"));
|
|
20776
|
+
} catch {
|
|
20777
|
+
throw new ArtiumError("SESSION_STORAGE_UNAVAILABLE");
|
|
20778
|
+
} finally {
|
|
20779
|
+
rmSync(temporary, { force: true });
|
|
20780
|
+
}
|
|
20781
|
+
}
|
|
20710
20782
|
remove() {
|
|
20711
20783
|
try {
|
|
20712
20784
|
rmSync(this.file, { force: true });
|
|
@@ -20721,8 +20793,8 @@ var SessionStore = class {
|
|
|
20721
20793
|
while (true) {
|
|
20722
20794
|
const watcher = watch(this.directory);
|
|
20723
20795
|
let timer;
|
|
20724
|
-
const changed = new Promise((
|
|
20725
|
-
watcher.once("change", () =>
|
|
20796
|
+
const changed = new Promise((resolve4, reject) => {
|
|
20797
|
+
watcher.once("change", () => resolve4());
|
|
20726
20798
|
watcher.once("error", () => reject(new ArtiumError("SESSION_STORAGE_UNAVAILABLE")));
|
|
20727
20799
|
timer = setTimeout(() => reject(new ArtiumError("SESSION_BUSY")), Math.max(0, deadline - Date.now()));
|
|
20728
20800
|
});
|
|
@@ -20751,11 +20823,14 @@ var SessionStore = class {
|
|
|
20751
20823
|
var DEFAULT_REQUEST_DEADLINE_MS = 9e4;
|
|
20752
20824
|
var Client = class {
|
|
20753
20825
|
constructor(environment = process.env, managed2, requestDeadlineMs = DEFAULT_REQUEST_DEADLINE_MS) {
|
|
20754
|
-
this.environment = environment;
|
|
20755
20826
|
this.managed = managed2;
|
|
20756
20827
|
this.requestDeadlineMs = requestDeadlineMs;
|
|
20757
20828
|
try {
|
|
20758
|
-
const
|
|
20829
|
+
const config2 = !managed2 && (environment.ARTIUM_AXI_URL === void 0 || environment.ARTIUM_AXI_CA_FILE === void 0) ? readClientConfig(environment) : void 0;
|
|
20830
|
+
this.serverUrlSource = environment.ARTIUM_AXI_URL === void 0 ? "config.json" : "ARTIUM_AXI_URL";
|
|
20831
|
+
const caFile = environment.ARTIUM_AXI_CA_FILE ?? config2?.caFile;
|
|
20832
|
+
this.caFile = caFile ? resolve(caFile) : void 0;
|
|
20833
|
+
const url2 = new URL(environment.ARTIUM_AXI_URL ?? config2?.serverUrl ?? "");
|
|
20759
20834
|
if (url2.username || url2.password || url2.href.includes("?") || url2.href.includes("#") || url2.protocol !== "https:" && !(url2.protocol === "http:" && environment.ARTIUM_AXI_TEST_HTTP === "1" && ["localhost", "127.0.0.1", "[::1]"].includes(url2.hostname))) throw new Error();
|
|
20760
20835
|
this.serverUrl = url2.href.replace(/\/$/, "");
|
|
20761
20836
|
if (!managed2) this.storedSessions = new SessionStore(this.serverUrl, sessionPath(process.platform, environment));
|
|
@@ -20765,21 +20840,22 @@ var Client = class {
|
|
|
20765
20840
|
}
|
|
20766
20841
|
managed2?.checkServer(this.serverUrl);
|
|
20767
20842
|
}
|
|
20768
|
-
environment;
|
|
20769
20843
|
managed;
|
|
20770
20844
|
requestDeadlineMs;
|
|
20771
20845
|
serverUrl;
|
|
20846
|
+
serverUrlSource;
|
|
20847
|
+
caFile;
|
|
20772
20848
|
storedSessions;
|
|
20773
20849
|
get sessions() {
|
|
20774
20850
|
if (!this.storedSessions) throw new ArtiumError("INVALID_INPUT", "Session-file operations are unavailable in managed mode.");
|
|
20775
20851
|
return this.storedSessions;
|
|
20776
20852
|
}
|
|
20777
20853
|
certificateVerified = false;
|
|
20778
|
-
async request(path, method, input2, token) {
|
|
20854
|
+
async request(path, method, input2, token, bytes = false) {
|
|
20779
20855
|
this.certificateVerified = false;
|
|
20780
20856
|
let ca;
|
|
20781
20857
|
try {
|
|
20782
|
-
if (this.
|
|
20858
|
+
if (this.caFile) ca = [...rootCertificates, readFileSync2(this.caFile, "utf8")];
|
|
20783
20859
|
} catch {
|
|
20784
20860
|
throw new ArtiumError("CLIENT_CONFIG_INVALID");
|
|
20785
20861
|
}
|
|
@@ -20787,7 +20863,7 @@ var Client = class {
|
|
|
20787
20863
|
const controller = new AbortController();
|
|
20788
20864
|
const deadline = setTimeout(() => controller.abort(), this.requestDeadlineMs);
|
|
20789
20865
|
const url2 = new URL(`${this.serverUrl}${path}`);
|
|
20790
|
-
const result = await new Promise((
|
|
20866
|
+
const result = await new Promise((resolve4, reject) => {
|
|
20791
20867
|
const request = (url2.protocol === "https:" ? httpsRequest : httpRequest)(url2, {
|
|
20792
20868
|
method,
|
|
20793
20869
|
ca,
|
|
@@ -20805,9 +20881,9 @@ var Client = class {
|
|
|
20805
20881
|
response.on("error", () => reject(new ArtiumError("SERVER_UNAVAILABLE")));
|
|
20806
20882
|
response.on("end", () => {
|
|
20807
20883
|
try {
|
|
20808
|
-
|
|
20884
|
+
resolve4({
|
|
20809
20885
|
status: response.statusCode,
|
|
20810
|
-
body: response.statusCode === 204 ? void 0 : JSON.parse(Buffer.concat(chunks).toString("utf8")),
|
|
20886
|
+
body: bytes ? Buffer.concat(chunks) : response.statusCode === 204 ? void 0 : JSON.parse(Buffer.concat(chunks).toString("utf8")),
|
|
20811
20887
|
serverVersion: typeof response.headers["x-artium-cli-version"] === "string" ? response.headers["x-artium-cli-version"] : void 0
|
|
20812
20888
|
});
|
|
20813
20889
|
} catch {
|
|
@@ -20843,7 +20919,7 @@ var Client = class {
|
|
|
20843
20919
|
if (result.status !== 200 && result.status !== 204) throw new ArtiumError("INVALID_RESPONSE");
|
|
20844
20920
|
if ((path === "/v1/auth/login" || path === "/v1/auth/device") && result.serverVersion && result.serverVersion !== cliVersion) {
|
|
20845
20921
|
const version2 = result.serverVersion.replace(/[\x00-\x1f\x7f]/g, "");
|
|
20846
|
-
const warning = `warning: CLI ${cliVersion} differs from server ${version2};
|
|
20922
|
+
const warning = `warning: CLI ${cliVersion} differs from server ${version2}; run artium-axi update, or run npm install -g @knowttl/artium-axi@${version2}.
|
|
20847
20923
|
`;
|
|
20848
20924
|
if (this.managed) this.managed.write("stderr", warning);
|
|
20849
20925
|
else process.stderr.write(warning);
|
|
@@ -20917,13 +20993,13 @@ async function readPassword(stdin, environmentVariable) {
|
|
|
20917
20993
|
process.stdin.setRawMode(true);
|
|
20918
20994
|
process.stdin.resume();
|
|
20919
20995
|
try {
|
|
20920
|
-
return await new Promise((
|
|
20996
|
+
return await new Promise((resolve4, reject) => {
|
|
20921
20997
|
let password = "";
|
|
20922
20998
|
const keypress = (text2, key) => {
|
|
20923
20999
|
if (key.name === "return" || key.ctrl && key.name === "c") {
|
|
20924
21000
|
process.stdin.off("keypress", keypress);
|
|
20925
21001
|
if (key.ctrl) reject(new ArtiumError("CANCELLED"));
|
|
20926
|
-
else
|
|
21002
|
+
else resolve4(password);
|
|
20927
21003
|
} else if (key.name === "backspace") password = Array.from(password).slice(0, -1).join("");
|
|
20928
21004
|
else if (text2 && !key.ctrl && !new RegExp("\\p{Cc}", "u").test(text2)) password += text2;
|
|
20929
21005
|
};
|
|
@@ -20937,82 +21013,17 @@ async function readPassword(stdin, environmentVariable) {
|
|
|
20937
21013
|
}
|
|
20938
21014
|
}
|
|
20939
21015
|
|
|
20940
|
-
// src/cli/doctor.ts
|
|
20941
|
-
var DIAGNOSTIC_REQUEST_DEADLINE_MS = 5e3;
|
|
20942
|
-
async function doctor(createClient = (deadline) => new Client(process.env, void 0, deadline), write = (text2) => {
|
|
20943
|
-
process.stdout.write(text2);
|
|
20944
|
-
}) {
|
|
20945
|
-
let failure2;
|
|
20946
|
-
const line = (name, pass, detail, error62) => {
|
|
20947
|
-
if (!pass) failure2 ??= error62 ?? new ArtiumError("INVALID_RESPONSE");
|
|
20948
|
-
write(`${pass ? "pass" : "fail"}: ${name}${detail ? ` (${detail})` : ""}
|
|
20949
|
-
`);
|
|
20950
|
-
};
|
|
20951
|
-
let client;
|
|
20952
|
-
try {
|
|
20953
|
-
client = createClient(DIAGNOSTIC_REQUEST_DEADLINE_MS);
|
|
20954
|
-
} catch (error62) {
|
|
20955
|
-
for (const name of ["server address", "certificate", "token", "CLI version"]) line(name, false, "CLIENT_CONFIG_INVALID");
|
|
20956
|
-
throw error62;
|
|
20957
|
-
}
|
|
20958
|
-
let addressOk = false;
|
|
20959
|
-
try {
|
|
20960
|
-
const live = await client.request("/health/live", "GET");
|
|
20961
|
-
addressOk = !!live && typeof live === "object" && "status" in live && live.status === "ok";
|
|
20962
|
-
line("server address", addressOk);
|
|
20963
|
-
line("certificate", client.certificateVerified, client.certificateVerified ? void 0 : "test HTTP", new ArtiumError("CLIENT_CONFIG_INVALID"));
|
|
20964
|
-
} catch (error62) {
|
|
20965
|
-
const cause = error62 instanceof ArtiumError ? error62 : new ArtiumError("INVALID_RESPONSE");
|
|
20966
|
-
line("server address", cause.code === "CERTIFICATE_INVALID", cause.code, cause);
|
|
20967
|
-
line("certificate", client.certificateVerified, client.certificateVerified ? void 0 : cause.code, cause);
|
|
20968
|
-
}
|
|
20969
|
-
if (!addressOk && failure2) throw failure2;
|
|
20970
|
-
let versionOk = true;
|
|
20971
|
-
let versionError;
|
|
20972
|
-
try {
|
|
20973
|
-
await client.request("/v1/me", "GET");
|
|
20974
|
-
} catch (error62) {
|
|
20975
|
-
versionOk = error62 instanceof ArtiumError && error62.code === "TOKEN_INVALID";
|
|
20976
|
-
if (!versionOk) versionError = error62 instanceof ArtiumError ? error62 : new ArtiumError("INVALID_RESPONSE");
|
|
20977
|
-
}
|
|
20978
|
-
let tokenOk = false;
|
|
20979
|
-
let tokenError;
|
|
20980
|
-
try {
|
|
20981
|
-
tokenOk = meResponseSchema.safeParse(await client.authenticated("/v1/me", "GET")).success;
|
|
20982
|
-
} catch (error62) {
|
|
20983
|
-
tokenError = error62 instanceof ArtiumError ? error62 : new ArtiumError("INVALID_RESPONSE");
|
|
20984
|
-
}
|
|
20985
|
-
line("token", tokenOk, void 0, tokenError);
|
|
20986
|
-
line("CLI version", versionOk, void 0, versionError);
|
|
20987
|
-
if (tokenOk && versionOk) {
|
|
20988
|
-
try {
|
|
20989
|
-
const parsed = toolsResponseSchema.safeParse(await client.authenticated("/v1/tools", "GET"));
|
|
20990
|
-
if (!parsed.success) throw new ArtiumError("INVALID_RESPONSE");
|
|
20991
|
-
for (const tool of parsed.data.tools) line(
|
|
20992
|
-
tool.name,
|
|
20993
|
-
tool.status === "ok",
|
|
20994
|
-
tool.status,
|
|
20995
|
-
new ArtiumError(tool.status === "unconfigured" ? "CREDENTIAL_NOT_CONFIGURED" : tool.status === "error" ? "TOOL_FAILED" : tool.status === "disabled" ? "TOOL_DISABLED" : "SERVER_UNAVAILABLE")
|
|
20996
|
-
);
|
|
20997
|
-
} catch (error62) {
|
|
20998
|
-
const cause = error62 instanceof ArtiumError ? error62 : new ArtiumError("INVALID_RESPONSE");
|
|
20999
|
-
line("tools", false, cause.code, cause);
|
|
21000
|
-
}
|
|
21001
|
-
}
|
|
21002
|
-
if (failure2) throw failure2;
|
|
21003
|
-
}
|
|
21004
|
-
|
|
21005
21016
|
// tools/inventories/falcon-axi.json
|
|
21006
21017
|
var falcon_axi_default = {
|
|
21007
21018
|
generatedBy: "scripts/falcon-inventory.mjs",
|
|
21008
21019
|
tool: "falcon-axi",
|
|
21009
21020
|
repository: "https://github.com/knowttl/falcon-axi.git",
|
|
21010
|
-
tag: "v0.5.
|
|
21011
|
-
commit: "
|
|
21012
|
-
version: "0.5.
|
|
21021
|
+
tag: "v0.5.1",
|
|
21022
|
+
commit: "b595b500681eee476ddeb2d8d459bb9f8ad2125f",
|
|
21023
|
+
version: "0.5.1",
|
|
21013
21024
|
parser: {
|
|
21014
21025
|
path: "falcon_axi/cli.py",
|
|
21015
|
-
sha256: "
|
|
21026
|
+
sha256: "2f7ee1d6601dafb63e5e40cc3b1fe28b295f67f7da2f9e23e747cca644caa09d",
|
|
21016
21027
|
aliases: {},
|
|
21017
21028
|
shortFlags: {},
|
|
21018
21029
|
repeats: "last value wins",
|
|
@@ -21633,7 +21644,8 @@ var falcon_axi_default = {
|
|
|
21633
21644
|
profile: "value",
|
|
21634
21645
|
query: "value",
|
|
21635
21646
|
repository: "value",
|
|
21636
|
-
since: "value"
|
|
21647
|
+
since: "value",
|
|
21648
|
+
wait: "value"
|
|
21637
21649
|
},
|
|
21638
21650
|
input: "No file or raw URL input; cursors and queries remain native values"
|
|
21639
21651
|
},
|
|
@@ -21647,7 +21659,8 @@ var falcon_axi_default = {
|
|
|
21647
21659
|
"no-member-cid": "boolean",
|
|
21648
21660
|
config: "value",
|
|
21649
21661
|
profile: "value",
|
|
21650
|
-
repository: "value"
|
|
21662
|
+
repository: "value",
|
|
21663
|
+
wait: "value"
|
|
21651
21664
|
},
|
|
21652
21665
|
input: "No file or raw URL input; cursors and queries remain native values"
|
|
21653
21666
|
},
|
|
@@ -22478,10 +22491,10 @@ var falcon_axi_default = {
|
|
|
22478
22491
|
var vectra_axi_default = {
|
|
22479
22492
|
generatedBy: "scripts/upstream-inventory.mjs",
|
|
22480
22493
|
tool: "vectra-axi",
|
|
22481
|
-
version: "0.1.
|
|
22482
|
-
integrity: "sha512-
|
|
22494
|
+
version: "0.1.8",
|
|
22495
|
+
integrity: "sha512-Wvn73g5hm4mzQQKhNnKvAjt6SfGFrPD2EAYMa4AXhoVqFfjXjxnQLk6tUw7E92jozeHtpZ+aDXSGMHaJhhTi1Q==",
|
|
22483
22496
|
parserEvidence: "Installed pinned catalogue exports, provisional until adapter acceptance",
|
|
22484
|
-
packageManifestSha256: "
|
|
22497
|
+
packageManifestSha256: "0e2e4e616e06435582fcd96787a2088f7fda5b0b99c32daa4d6c7dc8c2b2f3fb",
|
|
22485
22498
|
environment: [
|
|
22486
22499
|
{
|
|
22487
22500
|
name: "VECTRA_AXI_CONFIG",
|
|
@@ -22547,6 +22560,38 @@ var vectra_axi_default = {
|
|
|
22547
22560
|
nativeWriteSettings: {
|
|
22548
22561
|
default: "disabled",
|
|
22549
22562
|
disposition: "server-owned",
|
|
22563
|
+
supportedOperations: [
|
|
22564
|
+
"qux.account.assignment.create",
|
|
22565
|
+
"qux.account.assignment.reassign",
|
|
22566
|
+
"qux.account.assignment.unassign",
|
|
22567
|
+
"qux.account.note.add",
|
|
22568
|
+
"qux.account.note.delete",
|
|
22569
|
+
"qux.account.note.edit",
|
|
22570
|
+
"qux.account.tag.bulk-delete",
|
|
22571
|
+
"qux.account.tag.bulk-set",
|
|
22572
|
+
"qux.account.tag.set",
|
|
22573
|
+
"qux.detection.note.add",
|
|
22574
|
+
"qux.detection.note.delete",
|
|
22575
|
+
"qux.detection.note.edit",
|
|
22576
|
+
"qux.detection.tag.bulk-delete",
|
|
22577
|
+
"qux.detection.tag.bulk-set",
|
|
22578
|
+
"qux.detection.tag.set",
|
|
22579
|
+
"qux.host.assignment.create",
|
|
22580
|
+
"qux.host.assignment.reassign",
|
|
22581
|
+
"qux.host.assignment.unassign",
|
|
22582
|
+
"qux.host.note.add",
|
|
22583
|
+
"qux.host.note.delete",
|
|
22584
|
+
"qux.host.note.edit",
|
|
22585
|
+
"qux.host.tag.bulk-delete",
|
|
22586
|
+
"qux.host.tag.bulk-set",
|
|
22587
|
+
"qux.host.tag.set",
|
|
22588
|
+
"rux.account.note.delete",
|
|
22589
|
+
"rux.account.note.edit",
|
|
22590
|
+
"rux.detection.note.delete",
|
|
22591
|
+
"rux.detection.note.edit",
|
|
22592
|
+
"rux.host.note.delete",
|
|
22593
|
+
"rux.host.note.edit"
|
|
22594
|
+
],
|
|
22550
22595
|
profileFields: {
|
|
22551
22596
|
"writes.allowWrites": "boolean",
|
|
22552
22597
|
"writes.operations": "string[]"
|
|
@@ -22598,12 +22643,13 @@ var vectra_axi_default = {
|
|
|
22598
22643
|
help: {
|
|
22599
22644
|
command: "vectra-axi detection list",
|
|
22600
22645
|
description: "List detections on QUX v2.5 or RUX v3.4 with server-side filters and a bounded window",
|
|
22646
|
+
pagination: "QUX: collection pages; bounded --all supported; RUX: collection pages; bounded --all supported",
|
|
22601
22647
|
flags: {
|
|
22602
22648
|
"--help": "Show concise help; default false",
|
|
22603
22649
|
"--state <state>": "Filter by server-side detection state",
|
|
22604
22650
|
"--detection-type <type>": "Filter by server-side detection type",
|
|
22605
22651
|
"--detection-category <category>": "Filter by server-side detection category",
|
|
22606
|
-
"--host-id <id>": "Filter by server-side host ID (non-negative integer)",
|
|
22652
|
+
"--host-id <id>": "Filter by server-side host ID (non-negative integer); find it with host list --name <text>, then detection list --host-id <id>",
|
|
22607
22653
|
"--tags <tags>": "Filter by server-side tags",
|
|
22608
22654
|
"--certainty-gte <score>": "Filter by server-side minimum certainty",
|
|
22609
22655
|
"--threat-gte <score>": "Filter by server-side minimum threat",
|
|
@@ -22611,7 +22657,7 @@ var vectra_axi_default = {
|
|
|
22611
22657
|
"--min-id <id>": "Server-side minimum detection ID (non-negative integer)",
|
|
22612
22658
|
"--max-id <id>": "Server-side maximum detection ID (non-negative integer)",
|
|
22613
22659
|
"--limit <rows>": "Row window for this read; default 100",
|
|
22614
|
-
"--fields <list>": "Comma-separated
|
|
22660
|
+
"--fields <list>": "Comma-separated detection fields, including first_timestamp,last_timestamp,src_ip,src_host,summary,grouped_details; default id,detection_type,state,threat,certainty",
|
|
22615
22661
|
"--all": "Traverse pages within 10 requests, 8 MiB, 60 seconds and 10000 rows; cannot combine with --limit",
|
|
22616
22662
|
"--cursor <cursor>": "Resume a capped list with its original filters"
|
|
22617
22663
|
},
|
|
@@ -22643,7 +22689,7 @@ var vectra_axi_default = {
|
|
|
22643
22689
|
},
|
|
22644
22690
|
source: {
|
|
22645
22691
|
path: "dist/src/catalogue.js",
|
|
22646
|
-
sha256: "
|
|
22692
|
+
sha256: "5fadea660c71fb4021a4c130699ae3883c54e801c8e3eb6c3f370a10b0a04930"
|
|
22647
22693
|
}
|
|
22648
22694
|
},
|
|
22649
22695
|
flags: [
|
|
@@ -22974,6 +23020,7 @@ var vectra_axi_default = {
|
|
|
22974
23020
|
profile: "value",
|
|
22975
23021
|
config: "value",
|
|
22976
23022
|
id: "value",
|
|
23023
|
+
fields: "value",
|
|
22977
23024
|
full: "boolean"
|
|
22978
23025
|
}
|
|
22979
23026
|
},
|
|
@@ -22996,6 +23043,7 @@ var vectra_axi_default = {
|
|
|
22996
23043
|
help: "boolean",
|
|
22997
23044
|
profile: "value",
|
|
22998
23045
|
config: "value",
|
|
23046
|
+
name: "value",
|
|
22999
23047
|
"threat-gte": "value",
|
|
23000
23048
|
"certainty-gte": "value",
|
|
23001
23049
|
tags: "value",
|
|
@@ -23403,6 +23451,7 @@ var vectra_axi_default = {
|
|
|
23403
23451
|
help: "boolean",
|
|
23404
23452
|
profile: "value",
|
|
23405
23453
|
config: "value",
|
|
23454
|
+
all: "boolean",
|
|
23406
23455
|
account: "value",
|
|
23407
23456
|
host: "value",
|
|
23408
23457
|
assignee: "value",
|
|
@@ -23435,6 +23484,7 @@ var vectra_axi_default = {
|
|
|
23435
23484
|
help: "boolean",
|
|
23436
23485
|
profile: "value",
|
|
23437
23486
|
config: "value",
|
|
23487
|
+
all: "boolean",
|
|
23438
23488
|
limit: "value",
|
|
23439
23489
|
fields: "value",
|
|
23440
23490
|
cursor: "value"
|
|
@@ -23455,6 +23505,7 @@ var vectra_axi_default = {
|
|
|
23455
23505
|
help: "boolean",
|
|
23456
23506
|
profile: "value",
|
|
23457
23507
|
config: "value",
|
|
23508
|
+
all: "boolean",
|
|
23458
23509
|
username: "value",
|
|
23459
23510
|
limit: "value",
|
|
23460
23511
|
fields: "value",
|
|
@@ -23491,6 +23542,7 @@ var vectra_axi_default = {
|
|
|
23491
23542
|
help: "boolean",
|
|
23492
23543
|
profile: "value",
|
|
23493
23544
|
config: "value",
|
|
23545
|
+
all: "boolean",
|
|
23494
23546
|
name: "value",
|
|
23495
23547
|
type: "value",
|
|
23496
23548
|
limit: "value",
|
|
@@ -23513,6 +23565,7 @@ var vectra_axi_default = {
|
|
|
23513
23565
|
help: "boolean",
|
|
23514
23566
|
profile: "value",
|
|
23515
23567
|
config: "value",
|
|
23568
|
+
all: "boolean",
|
|
23516
23569
|
id: "value",
|
|
23517
23570
|
name: "value",
|
|
23518
23571
|
ordering: "value",
|
|
@@ -23528,6 +23581,7 @@ var vectra_axi_default = {
|
|
|
23528
23581
|
help: "boolean",
|
|
23529
23582
|
profile: "value",
|
|
23530
23583
|
config: "value",
|
|
23584
|
+
all: "boolean",
|
|
23531
23585
|
contains: "value",
|
|
23532
23586
|
ordering: "value",
|
|
23533
23587
|
limit: "value",
|
|
@@ -23612,727 +23666,6 @@ var vectra_axi_default = {
|
|
|
23612
23666
|
]
|
|
23613
23667
|
};
|
|
23614
23668
|
|
|
23615
|
-
// tools/inventories/ldap-axi.json
|
|
23616
|
-
var ldap_axi_default = {
|
|
23617
|
-
generatedBy: "scripts/ldap-inventory.mjs",
|
|
23618
|
-
tool: "ldap-axi",
|
|
23619
|
-
version: "0.2.0",
|
|
23620
|
-
integrity: "sha512-w/gE4jHaUHE0iKh3ucDnDG0AVrhP0VwpFCEcw3wSTzLmTBMNZrJ9AFB06j2jnf4TFgK5+5NhF0EE0R69mv7crA==",
|
|
23621
|
-
parserEvidence: "Installed pinned command schemas and reviewed CLI globals and entry routes",
|
|
23622
|
-
sources: [
|
|
23623
|
-
{
|
|
23624
|
-
path: "package.json",
|
|
23625
|
-
sha256: "7ee133bf0333fe975c905418c9ecdd542836dab39f52aa5f7f630776d2bcc0b0"
|
|
23626
|
-
},
|
|
23627
|
-
{
|
|
23628
|
-
path: "README.md",
|
|
23629
|
-
sha256: "3a1eeda8c376c39853e4835acf2a1d61f76f23a555651417d0d691459fbb3139"
|
|
23630
|
-
},
|
|
23631
|
-
{
|
|
23632
|
-
path: "axi-credential.schema.json",
|
|
23633
|
-
sha256: "76b9f5f449d844dcd4365b966ed907515582f72fc920b936dae825ebf1b7cc53"
|
|
23634
|
-
},
|
|
23635
|
-
{
|
|
23636
|
-
path: "dist/src/cli.js",
|
|
23637
|
-
sha256: "2cb024b2848c2c9e27c292205b3ed86a829cfed21d52e8fea06ef544a039ec2a"
|
|
23638
|
-
},
|
|
23639
|
-
{
|
|
23640
|
-
path: "dist/src/schema.js",
|
|
23641
|
-
sha256: "0d5946fa26efb55e8480e9a22f93cdb6b321c48697e77ca02c4c99630f11284f"
|
|
23642
|
-
},
|
|
23643
|
-
{
|
|
23644
|
-
path: "dist/src/config.js",
|
|
23645
|
-
sha256: "cbc48584b6ff2a2a70375e9e8e6242a87543a3e6e6f7e1c055a2d29c42b677f9"
|
|
23646
|
-
},
|
|
23647
|
-
{
|
|
23648
|
-
path: "dist/src/secrets.js",
|
|
23649
|
-
sha256: "9f2ccf86515cec1dd65f2dd5850188232374535f7fe56a788fdc7b94d91c8532"
|
|
23650
|
-
},
|
|
23651
|
-
{
|
|
23652
|
-
path: "dist/src/directory/auth.js",
|
|
23653
|
-
sha256: "d2b3a61cb9e63744462e3a6a2841fcddb2b48e7823c307841028288cfe9d688b"
|
|
23654
|
-
},
|
|
23655
|
-
{
|
|
23656
|
-
path: "dist/src/directory/policy.js",
|
|
23657
|
-
sha256: "a697dd78990493f7f1c19d22278ebb922c997e9cf88a51b12adfaca30fa8a01d"
|
|
23658
|
-
}
|
|
23659
|
-
],
|
|
23660
|
-
credentialSchema: {
|
|
23661
|
-
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
23662
|
-
title: "ldap-axi profile",
|
|
23663
|
-
type: "object",
|
|
23664
|
-
additionalProperties: false,
|
|
23665
|
-
required: [
|
|
23666
|
-
"url"
|
|
23667
|
-
],
|
|
23668
|
-
properties: {
|
|
23669
|
-
url: {
|
|
23670
|
-
type: "string",
|
|
23671
|
-
pattern: "^ldaps?://",
|
|
23672
|
-
description: "LDAP URL without userinfo; use the server FQDN for ambient authentication"
|
|
23673
|
-
},
|
|
23674
|
-
auth: {
|
|
23675
|
-
enum: [
|
|
23676
|
-
"auto",
|
|
23677
|
-
"gssapi",
|
|
23678
|
-
"simple"
|
|
23679
|
-
],
|
|
23680
|
-
default: "auto"
|
|
23681
|
-
},
|
|
23682
|
-
bindDn: {
|
|
23683
|
-
type: "string",
|
|
23684
|
-
minLength: 1,
|
|
23685
|
-
description: "Simple-bind identity, required for simple authentication"
|
|
23686
|
-
},
|
|
23687
|
-
bindPassword: {
|
|
23688
|
-
"x-secret": true,
|
|
23689
|
-
description: "Simple-bind password reference; defaults to env LDAP_AXI_BIND_PASSWORD. No stored secrets.",
|
|
23690
|
-
oneOf: [
|
|
23691
|
-
{
|
|
23692
|
-
type: "object",
|
|
23693
|
-
additionalProperties: false,
|
|
23694
|
-
required: [
|
|
23695
|
-
"env"
|
|
23696
|
-
],
|
|
23697
|
-
properties: {
|
|
23698
|
-
env: {
|
|
23699
|
-
type: "string",
|
|
23700
|
-
pattern: "^[A-Za-z_][A-Za-z0-9_]*$"
|
|
23701
|
-
}
|
|
23702
|
-
}
|
|
23703
|
-
},
|
|
23704
|
-
{
|
|
23705
|
-
type: "object",
|
|
23706
|
-
additionalProperties: false,
|
|
23707
|
-
required: [
|
|
23708
|
-
"file"
|
|
23709
|
-
],
|
|
23710
|
-
properties: {
|
|
23711
|
-
file: {
|
|
23712
|
-
type: "string",
|
|
23713
|
-
pattern: "^(?:/|[A-Za-z]:[\\\\/])",
|
|
23714
|
-
description: "Absolute local path to a private UTF-8 password file; UNC/device paths are forbidden on Windows"
|
|
23715
|
-
}
|
|
23716
|
-
}
|
|
23717
|
-
}
|
|
23718
|
-
]
|
|
23719
|
-
},
|
|
23720
|
-
base: {
|
|
23721
|
-
type: "string"
|
|
23722
|
-
},
|
|
23723
|
-
pageSize: {
|
|
23724
|
-
type: "integer",
|
|
23725
|
-
minimum: 1,
|
|
23726
|
-
maximum: 1e3
|
|
23727
|
-
},
|
|
23728
|
-
caFile: {
|
|
23729
|
-
type: "string",
|
|
23730
|
-
minLength: 1
|
|
23731
|
-
},
|
|
23732
|
-
startTls: {
|
|
23733
|
-
type: "boolean",
|
|
23734
|
-
default: false
|
|
23735
|
-
},
|
|
23736
|
-
tlsMaxVersion: {
|
|
23737
|
-
const: "1.2"
|
|
23738
|
-
},
|
|
23739
|
-
flavor: {
|
|
23740
|
-
enum: [
|
|
23741
|
-
"ad",
|
|
23742
|
-
"adlds",
|
|
23743
|
-
"ldapv3"
|
|
23744
|
-
]
|
|
23745
|
-
},
|
|
23746
|
-
gssapiService: {
|
|
23747
|
-
type: "string",
|
|
23748
|
-
minLength: 1
|
|
23749
|
-
},
|
|
23750
|
-
gssapiProtection: {
|
|
23751
|
-
enum: [
|
|
23752
|
-
"none",
|
|
23753
|
-
"confidentiality"
|
|
23754
|
-
]
|
|
23755
|
-
}
|
|
23756
|
-
}
|
|
23757
|
-
},
|
|
23758
|
-
adapterBoundary: {
|
|
23759
|
-
unsafeOverrides: [
|
|
23760
|
-
"config",
|
|
23761
|
-
"url",
|
|
23762
|
-
"start-tls",
|
|
23763
|
-
"ca-file",
|
|
23764
|
-
"ca-only",
|
|
23765
|
-
"tls-no-verify",
|
|
23766
|
-
"tls-max-version",
|
|
23767
|
-
"insecure-plaintext",
|
|
23768
|
-
"anonymous",
|
|
23769
|
-
"profile",
|
|
23770
|
-
"auth",
|
|
23771
|
-
"gssapi-service",
|
|
23772
|
-
"gssapi-protection"
|
|
23773
|
-
],
|
|
23774
|
-
blockedCommands: [
|
|
23775
|
-
"config",
|
|
23776
|
-
"profile",
|
|
23777
|
-
"setup"
|
|
23778
|
-
],
|
|
23779
|
-
sensitiveFlags: [
|
|
23780
|
-
"base",
|
|
23781
|
-
"filter",
|
|
23782
|
-
"name",
|
|
23783
|
-
"sam",
|
|
23784
|
-
"upn",
|
|
23785
|
-
"uid"
|
|
23786
|
-
],
|
|
23787
|
-
authentication: "Stored simple-bind identity over verified LDAPS or StartTLS; no ambient ticket or keytab",
|
|
23788
|
-
inputs: {
|
|
23789
|
-
stdin: "unsupported",
|
|
23790
|
-
files: "unsupported",
|
|
23791
|
-
caFile: "stored PEM materialized privately by host"
|
|
23792
|
-
},
|
|
23793
|
-
resources: {
|
|
23794
|
-
nodeHeapMiB: 128
|
|
23795
|
-
},
|
|
23796
|
-
nativeWrites: "read-only upstream design"
|
|
23797
|
-
},
|
|
23798
|
-
discovery: {
|
|
23799
|
-
commands: [
|
|
23800
|
-
"entry",
|
|
23801
|
-
"user",
|
|
23802
|
-
"group",
|
|
23803
|
-
"computer",
|
|
23804
|
-
"auth status",
|
|
23805
|
-
"server"
|
|
23806
|
-
],
|
|
23807
|
-
example: [
|
|
23808
|
-
"user",
|
|
23809
|
-
"list",
|
|
23810
|
-
"--limit",
|
|
23811
|
-
"1"
|
|
23812
|
-
],
|
|
23813
|
-
help: "List user accounts.\nLDAPv3 users are inetOrgPerson or posixAccount entries; use ldap-axi entry search for account + simpleSecurityObject service accounts.\nUsage: ldap-axi user list [flags]\nFlags:\n --help show this help\n --base <dn> search base (default: environment, config, or server naming contexts)\n --disabled include disabled accounts (LDAPv3: permanent ppolicy locks)\n --enabled include enabled accounts (LDAPv3: exclude permanent ppolicy locks)\n --locked include current AD locks or recorded LDAPv3 ppolicy lock candidates\n --all read all pages up to --max-rows or --limit\n --name <pattern> match cn\n --sam <pattern> AD only: match sAMAccountName\n --upn <pattern> AD only: match userPrincipalName\n --uid <pattern> LDAPv3 only: match uid\n --filter <RFC4515> add a raw LDAP filter\n --scope <base|one|sub> search scope (default: sub)\n --max-rows <n> maximum output rows\n --page-size <1..1000> LDAP page size (default: AD 1000, LDAPv3 500; config overrides)\n --limit <n> alias for bounded list output\n --fields <name,...> select output fields\n --attributes <name,...> request and emit raw attributes\nActive Directory fields: sam, upn, name, dn, enabled, locked, last_logon, object_sid, when_created\nActive Directory defaults: sam, name, enabled, last_logon\nLDAPv3 fields: uid, name, mail, enabled, locked, account_state, dn, entry_uuid, when_created\nLDAPv3 defaults: uid, name, mail, enabled, locked, account_state\nExamples:\n ldap-axi user list --disabled --max-rows 25\n ldap-axi user list --name Alice --fields name,dn --limit 50"
|
|
23814
|
-
},
|
|
23815
|
-
suggestionFields: [
|
|
23816
|
-
"help"
|
|
23817
|
-
],
|
|
23818
|
-
format: "TOON",
|
|
23819
|
-
commands: [
|
|
23820
|
-
{
|
|
23821
|
-
command: "home",
|
|
23822
|
-
flags: {
|
|
23823
|
-
help: "boolean",
|
|
23824
|
-
config: "value",
|
|
23825
|
-
url: "value",
|
|
23826
|
-
base: "value",
|
|
23827
|
-
"start-tls": "boolean",
|
|
23828
|
-
"ca-file": "value",
|
|
23829
|
-
"ca-only": "boolean",
|
|
23830
|
-
"tls-no-verify": "boolean",
|
|
23831
|
-
"tls-max-version": "value",
|
|
23832
|
-
"insecure-plaintext": "boolean",
|
|
23833
|
-
anonymous: "boolean",
|
|
23834
|
-
profile: "value",
|
|
23835
|
-
auth: "value",
|
|
23836
|
-
"gssapi-service": "value",
|
|
23837
|
-
"gssapi-protection": "value"
|
|
23838
|
-
},
|
|
23839
|
-
positionalInput: false
|
|
23840
|
-
},
|
|
23841
|
-
{
|
|
23842
|
-
command: "auth status",
|
|
23843
|
-
flags: {
|
|
23844
|
-
help: "boolean",
|
|
23845
|
-
config: "value",
|
|
23846
|
-
url: "value",
|
|
23847
|
-
base: "value",
|
|
23848
|
-
"start-tls": "boolean",
|
|
23849
|
-
"ca-file": "value",
|
|
23850
|
-
"ca-only": "boolean",
|
|
23851
|
-
"tls-no-verify": "boolean",
|
|
23852
|
-
"tls-max-version": "value",
|
|
23853
|
-
"insecure-plaintext": "boolean",
|
|
23854
|
-
anonymous: "boolean",
|
|
23855
|
-
profile: "value",
|
|
23856
|
-
auth: "value",
|
|
23857
|
-
"gssapi-service": "value",
|
|
23858
|
-
"gssapi-protection": "value",
|
|
23859
|
-
offline: "boolean"
|
|
23860
|
-
},
|
|
23861
|
-
positionalInput: false
|
|
23862
|
-
},
|
|
23863
|
-
{
|
|
23864
|
-
command: "server",
|
|
23865
|
-
flags: {
|
|
23866
|
-
help: "boolean",
|
|
23867
|
-
config: "value",
|
|
23868
|
-
url: "value",
|
|
23869
|
-
base: "value",
|
|
23870
|
-
"start-tls": "boolean",
|
|
23871
|
-
"ca-file": "value",
|
|
23872
|
-
"ca-only": "boolean",
|
|
23873
|
-
"tls-no-verify": "boolean",
|
|
23874
|
-
"tls-max-version": "value",
|
|
23875
|
-
"insecure-plaintext": "boolean",
|
|
23876
|
-
anonymous: "boolean",
|
|
23877
|
-
profile: "value",
|
|
23878
|
-
auth: "value",
|
|
23879
|
-
"gssapi-service": "value",
|
|
23880
|
-
"gssapi-protection": "value"
|
|
23881
|
-
},
|
|
23882
|
-
positionalInput: false
|
|
23883
|
-
},
|
|
23884
|
-
{
|
|
23885
|
-
command: "entry search",
|
|
23886
|
-
flags: {
|
|
23887
|
-
help: "boolean",
|
|
23888
|
-
config: "value",
|
|
23889
|
-
url: "value",
|
|
23890
|
-
base: "value",
|
|
23891
|
-
"start-tls": "boolean",
|
|
23892
|
-
"ca-file": "value",
|
|
23893
|
-
"ca-only": "boolean",
|
|
23894
|
-
"tls-no-verify": "boolean",
|
|
23895
|
-
"tls-max-version": "value",
|
|
23896
|
-
"insecure-plaintext": "boolean",
|
|
23897
|
-
anonymous: "boolean",
|
|
23898
|
-
profile: "value",
|
|
23899
|
-
auth: "value",
|
|
23900
|
-
"gssapi-service": "value",
|
|
23901
|
-
"gssapi-protection": "value",
|
|
23902
|
-
filter: "value",
|
|
23903
|
-
scope: "value",
|
|
23904
|
-
attributes: "value",
|
|
23905
|
-
"page-size": "value",
|
|
23906
|
-
"max-rows": "value",
|
|
23907
|
-
all: "boolean"
|
|
23908
|
-
},
|
|
23909
|
-
positionalInput: false
|
|
23910
|
-
},
|
|
23911
|
-
{
|
|
23912
|
-
command: "entry show",
|
|
23913
|
-
flags: {
|
|
23914
|
-
help: "boolean",
|
|
23915
|
-
config: "value",
|
|
23916
|
-
url: "value",
|
|
23917
|
-
base: "value",
|
|
23918
|
-
"start-tls": "boolean",
|
|
23919
|
-
"ca-file": "value",
|
|
23920
|
-
"ca-only": "boolean",
|
|
23921
|
-
"tls-no-verify": "boolean",
|
|
23922
|
-
"tls-max-version": "value",
|
|
23923
|
-
"insecure-plaintext": "boolean",
|
|
23924
|
-
anonymous: "boolean",
|
|
23925
|
-
profile: "value",
|
|
23926
|
-
auth: "value",
|
|
23927
|
-
"gssapi-service": "value",
|
|
23928
|
-
"gssapi-protection": "value",
|
|
23929
|
-
attributes: "value",
|
|
23930
|
-
"page-size": "value"
|
|
23931
|
-
},
|
|
23932
|
-
positionalInput: true
|
|
23933
|
-
},
|
|
23934
|
-
{
|
|
23935
|
-
command: "user list",
|
|
23936
|
-
flags: {
|
|
23937
|
-
help: "boolean",
|
|
23938
|
-
config: "value",
|
|
23939
|
-
url: "value",
|
|
23940
|
-
base: "value",
|
|
23941
|
-
"start-tls": "boolean",
|
|
23942
|
-
"ca-file": "value",
|
|
23943
|
-
"ca-only": "boolean",
|
|
23944
|
-
"tls-no-verify": "boolean",
|
|
23945
|
-
"tls-max-version": "value",
|
|
23946
|
-
"insecure-plaintext": "boolean",
|
|
23947
|
-
anonymous: "boolean",
|
|
23948
|
-
profile: "value",
|
|
23949
|
-
auth: "value",
|
|
23950
|
-
"gssapi-service": "value",
|
|
23951
|
-
"gssapi-protection": "value",
|
|
23952
|
-
disabled: "boolean",
|
|
23953
|
-
enabled: "boolean",
|
|
23954
|
-
locked: "boolean",
|
|
23955
|
-
all: "boolean",
|
|
23956
|
-
name: "value",
|
|
23957
|
-
sam: "value",
|
|
23958
|
-
upn: "value",
|
|
23959
|
-
uid: "value",
|
|
23960
|
-
filter: "value",
|
|
23961
|
-
scope: "value",
|
|
23962
|
-
"max-rows": "value",
|
|
23963
|
-
"page-size": "value",
|
|
23964
|
-
limit: "value",
|
|
23965
|
-
fields: "value",
|
|
23966
|
-
attributes: "value"
|
|
23967
|
-
},
|
|
23968
|
-
positionalInput: false
|
|
23969
|
-
},
|
|
23970
|
-
{
|
|
23971
|
-
command: "user show",
|
|
23972
|
-
flags: {
|
|
23973
|
-
help: "boolean",
|
|
23974
|
-
config: "value",
|
|
23975
|
-
url: "value",
|
|
23976
|
-
base: "value",
|
|
23977
|
-
"start-tls": "boolean",
|
|
23978
|
-
"ca-file": "value",
|
|
23979
|
-
"ca-only": "boolean",
|
|
23980
|
-
"tls-no-verify": "boolean",
|
|
23981
|
-
"tls-max-version": "value",
|
|
23982
|
-
"insecure-plaintext": "boolean",
|
|
23983
|
-
anonymous: "boolean",
|
|
23984
|
-
profile: "value",
|
|
23985
|
-
auth: "value",
|
|
23986
|
-
"gssapi-service": "value",
|
|
23987
|
-
"gssapi-protection": "value",
|
|
23988
|
-
fields: "value",
|
|
23989
|
-
attributes: "value"
|
|
23990
|
-
},
|
|
23991
|
-
positionalInput: true
|
|
23992
|
-
},
|
|
23993
|
-
{
|
|
23994
|
-
command: "user groups",
|
|
23995
|
-
flags: {
|
|
23996
|
-
help: "boolean",
|
|
23997
|
-
config: "value",
|
|
23998
|
-
url: "value",
|
|
23999
|
-
base: "value",
|
|
24000
|
-
"start-tls": "boolean",
|
|
24001
|
-
"ca-file": "value",
|
|
24002
|
-
"ca-only": "boolean",
|
|
24003
|
-
"tls-no-verify": "boolean",
|
|
24004
|
-
"tls-max-version": "value",
|
|
24005
|
-
"insecure-plaintext": "boolean",
|
|
24006
|
-
anonymous: "boolean",
|
|
24007
|
-
profile: "value",
|
|
24008
|
-
auth: "value",
|
|
24009
|
-
"gssapi-service": "value",
|
|
24010
|
-
"gssapi-protection": "value",
|
|
24011
|
-
nested: "boolean",
|
|
24012
|
-
"max-rows": "value",
|
|
24013
|
-
"page-size": "value",
|
|
24014
|
-
fields: "value"
|
|
24015
|
-
},
|
|
24016
|
-
positionalInput: true
|
|
24017
|
-
},
|
|
24018
|
-
{
|
|
24019
|
-
command: "group list",
|
|
24020
|
-
flags: {
|
|
24021
|
-
help: "boolean",
|
|
24022
|
-
config: "value",
|
|
24023
|
-
url: "value",
|
|
24024
|
-
base: "value",
|
|
24025
|
-
"start-tls": "boolean",
|
|
24026
|
-
"ca-file": "value",
|
|
24027
|
-
"ca-only": "boolean",
|
|
24028
|
-
"tls-no-verify": "boolean",
|
|
24029
|
-
"tls-max-version": "value",
|
|
24030
|
-
"insecure-plaintext": "boolean",
|
|
24031
|
-
anonymous: "boolean",
|
|
24032
|
-
profile: "value",
|
|
24033
|
-
auth: "value",
|
|
24034
|
-
"gssapi-service": "value",
|
|
24035
|
-
"gssapi-protection": "value",
|
|
24036
|
-
all: "boolean",
|
|
24037
|
-
name: "value",
|
|
24038
|
-
sam: "value",
|
|
24039
|
-
filter: "value",
|
|
24040
|
-
scope: "value",
|
|
24041
|
-
"max-rows": "value",
|
|
24042
|
-
"page-size": "value",
|
|
24043
|
-
limit: "value",
|
|
24044
|
-
fields: "value",
|
|
24045
|
-
attributes: "value"
|
|
24046
|
-
},
|
|
24047
|
-
positionalInput: false
|
|
24048
|
-
},
|
|
24049
|
-
{
|
|
24050
|
-
command: "group show",
|
|
24051
|
-
flags: {
|
|
24052
|
-
help: "boolean",
|
|
24053
|
-
config: "value",
|
|
24054
|
-
url: "value",
|
|
24055
|
-
base: "value",
|
|
24056
|
-
"start-tls": "boolean",
|
|
24057
|
-
"ca-file": "value",
|
|
24058
|
-
"ca-only": "boolean",
|
|
24059
|
-
"tls-no-verify": "boolean",
|
|
24060
|
-
"tls-max-version": "value",
|
|
24061
|
-
"insecure-plaintext": "boolean",
|
|
24062
|
-
anonymous: "boolean",
|
|
24063
|
-
profile: "value",
|
|
24064
|
-
auth: "value",
|
|
24065
|
-
"gssapi-service": "value",
|
|
24066
|
-
"gssapi-protection": "value",
|
|
24067
|
-
fields: "value",
|
|
24068
|
-
attributes: "value"
|
|
24069
|
-
},
|
|
24070
|
-
positionalInput: true
|
|
24071
|
-
},
|
|
24072
|
-
{
|
|
24073
|
-
command: "group members",
|
|
24074
|
-
flags: {
|
|
24075
|
-
help: "boolean",
|
|
24076
|
-
config: "value",
|
|
24077
|
-
url: "value",
|
|
24078
|
-
base: "value",
|
|
24079
|
-
"start-tls": "boolean",
|
|
24080
|
-
"ca-file": "value",
|
|
24081
|
-
"ca-only": "boolean",
|
|
24082
|
-
"tls-no-verify": "boolean",
|
|
24083
|
-
"tls-max-version": "value",
|
|
24084
|
-
"insecure-plaintext": "boolean",
|
|
24085
|
-
anonymous: "boolean",
|
|
24086
|
-
profile: "value",
|
|
24087
|
-
auth: "value",
|
|
24088
|
-
"gssapi-service": "value",
|
|
24089
|
-
"gssapi-protection": "value",
|
|
24090
|
-
nested: "boolean",
|
|
24091
|
-
"max-rows": "value",
|
|
24092
|
-
"page-size": "value",
|
|
24093
|
-
fields: "value"
|
|
24094
|
-
},
|
|
24095
|
-
positionalInput: true
|
|
24096
|
-
},
|
|
24097
|
-
{
|
|
24098
|
-
command: "computer list",
|
|
24099
|
-
flags: {
|
|
24100
|
-
help: "boolean",
|
|
24101
|
-
config: "value",
|
|
24102
|
-
url: "value",
|
|
24103
|
-
base: "value",
|
|
24104
|
-
"start-tls": "boolean",
|
|
24105
|
-
"ca-file": "value",
|
|
24106
|
-
"ca-only": "boolean",
|
|
24107
|
-
"tls-no-verify": "boolean",
|
|
24108
|
-
"tls-max-version": "value",
|
|
24109
|
-
"insecure-plaintext": "boolean",
|
|
24110
|
-
anonymous: "boolean",
|
|
24111
|
-
profile: "value",
|
|
24112
|
-
auth: "value",
|
|
24113
|
-
"gssapi-service": "value",
|
|
24114
|
-
"gssapi-protection": "value",
|
|
24115
|
-
all: "boolean",
|
|
24116
|
-
name: "value",
|
|
24117
|
-
sam: "value",
|
|
24118
|
-
filter: "value",
|
|
24119
|
-
scope: "value",
|
|
24120
|
-
"max-rows": "value",
|
|
24121
|
-
"page-size": "value",
|
|
24122
|
-
limit: "value",
|
|
24123
|
-
fields: "value",
|
|
24124
|
-
attributes: "value"
|
|
24125
|
-
},
|
|
24126
|
-
positionalInput: false
|
|
24127
|
-
},
|
|
24128
|
-
{
|
|
24129
|
-
command: "computer show",
|
|
24130
|
-
flags: {
|
|
24131
|
-
help: "boolean",
|
|
24132
|
-
config: "value",
|
|
24133
|
-
url: "value",
|
|
24134
|
-
base: "value",
|
|
24135
|
-
"start-tls": "boolean",
|
|
24136
|
-
"ca-file": "value",
|
|
24137
|
-
"ca-only": "boolean",
|
|
24138
|
-
"tls-no-verify": "boolean",
|
|
24139
|
-
"tls-max-version": "value",
|
|
24140
|
-
"insecure-plaintext": "boolean",
|
|
24141
|
-
anonymous: "boolean",
|
|
24142
|
-
profile: "value",
|
|
24143
|
-
auth: "value",
|
|
24144
|
-
"gssapi-service": "value",
|
|
24145
|
-
"gssapi-protection": "value",
|
|
24146
|
-
fields: "value",
|
|
24147
|
-
attributes: "value"
|
|
24148
|
-
},
|
|
24149
|
-
positionalInput: true
|
|
24150
|
-
}
|
|
24151
|
-
]
|
|
24152
|
-
};
|
|
24153
|
-
|
|
24154
|
-
// src/cli/help.ts
|
|
24155
|
-
var commands = {
|
|
24156
|
-
home: { usage: "artium-axi [tools [show <tool>]|whoami|login|passwd|logout|doctor|setup|<tool> <args>]", purpose: "Show your identity, roles and available tools.", flags: ["--version (default false; print the client package version and exit)"], example: "artium-axi" },
|
|
24157
|
-
setup: {
|
|
24158
|
-
usage: "artium-axi setup --host <claude|codex|opencode|pi> [--hook] [--force]",
|
|
24159
|
-
purpose: "Install skills for your signed-in account\u2019s granted tools and an optional Claude Code session hook.",
|
|
24160
|
-
flags: ["--host <claude|codex|opencode|pi> (required)", "--hook (default false; Claude Code only)", "--force (default false; explicitly replace an edited skill)"],
|
|
24161
|
-
example: "artium-axi setup --host claude --hook"
|
|
24162
|
-
},
|
|
24163
|
-
tools: { usage: "artium-axi tools", purpose: "List available tools with their status and pinned version.", flags: [], example: "artium-axi tools" },
|
|
24164
|
-
"tools show": { usage: "artium-axi tools show <tool>", purpose: "Show one available tool and its vetted upstream help.", flags: [], example: "artium-axi tools show falcon-axi" },
|
|
24165
|
-
whoami: { usage: "artium-axi whoami", purpose: "Show your identity, roles, access expiry and server.", flags: [], example: "artium-axi whoami" },
|
|
24166
|
-
login: {
|
|
24167
|
-
usage: "artium-axi login --sso | --username <username> [--password-stdin]",
|
|
24168
|
-
purpose: "Sign in through browser SSO (8-hour session) or with a local account.",
|
|
24169
|
-
flags: ["--sso (default false; open the displayed URL in any browser and approve your terminal code; no password flags)", "--username <username> (required for local sign-in)", "--password-stdin (default false; local only; otherwise ARTIUM_AXI_PASSWORD or a terminal prompt)"],
|
|
24170
|
-
example: "artium-axi login --sso"
|
|
24171
|
-
},
|
|
24172
|
-
passwd: {
|
|
24173
|
-
usage: "artium-axi passwd [--password-stdin]",
|
|
24174
|
-
purpose: "Change your password, then sign in again.",
|
|
24175
|
-
flags: ["--password-stdin (default false; otherwise a terminal prompt; current password uses ARTIUM_AXI_CURRENT_PASSWORD or a terminal prompt)"],
|
|
24176
|
-
example: "artium-axi passwd --password-stdin"
|
|
24177
|
-
},
|
|
24178
|
-
logout: { usage: "artium-axi logout", purpose: "Remove local tokens and revoke the server session.", flags: [], example: "artium-axi logout" },
|
|
24179
|
-
doctor: { usage: "artium-axi doctor", purpose: "Check the server, certificate, token, CLI version and cached tool health.", flags: [], example: "artium-axi doctor" },
|
|
24180
|
-
"falcon-axi": {
|
|
24181
|
-
usage: "artium-axi falcon-axi [<args>]",
|
|
24182
|
-
purpose: "Run Falcon commands with your managed credentials.",
|
|
24183
|
-
flags: ["Arguments after falcon-axi are forwarded upstream, including --help."],
|
|
24184
|
-
example: `artium-axi falcon-axi ${falcon_axi_default.discovery.example.join(" ")}`
|
|
24185
|
-
},
|
|
24186
|
-
"vectra-axi": {
|
|
24187
|
-
usage: "artium-axi vectra-axi [<args>]",
|
|
24188
|
-
purpose: "Run Vectra commands with your managed credentials.",
|
|
24189
|
-
flags: ["Arguments after vectra-axi are forwarded upstream, including --help."],
|
|
24190
|
-
example: `artium-axi vectra-axi ${vectra_axi_default.discovery.example.join(" ")}`
|
|
24191
|
-
},
|
|
24192
|
-
"ldap-axi": {
|
|
24193
|
-
usage: "artium-axi ldap-axi [<args>]",
|
|
24194
|
-
purpose: "Read directory data with the managed LDAP bind identity.",
|
|
24195
|
-
flags: ["Arguments after ldap-axi are forwarded upstream, including --help."],
|
|
24196
|
-
example: `artium-axi ldap-axi ${ldap_axi_default.discovery.example.join(" ")}`
|
|
24197
|
-
},
|
|
24198
|
-
"ado-axi": {
|
|
24199
|
-
usage: "artium-axi ado-axi [<args>]",
|
|
24200
|
-
purpose: "Run Azure DevOps commands with managed credentials.",
|
|
24201
|
-
flags: ["Arguments after ado-axi include --help. Organization and credentials are managed by Artium; api is GET only; writes are off by default."],
|
|
24202
|
-
example: "artium-axi ado-axi project list --limit 1"
|
|
24203
|
-
},
|
|
24204
|
-
"awx-axi": {
|
|
24205
|
-
usage: "artium-axi awx-axi [<args>]",
|
|
24206
|
-
purpose: "Inspect AWX automation with managed credentials.",
|
|
24207
|
-
flags: ["Arguments after awx-axi include --help. Operational writes are off by default; configuration, deletion and security writes are blocked."],
|
|
24208
|
-
example: "artium-axi awx-axi job list --limit 1"
|
|
24209
|
-
},
|
|
24210
|
-
"az-axi": {
|
|
24211
|
-
usage: "artium-axi az-axi [<args>]",
|
|
24212
|
-
purpose: "Run Azure commands with your managed identity.",
|
|
24213
|
-
flags: ["Arguments after az-axi are forwarded upstream, including --help."],
|
|
24214
|
-
example: "artium-axi az-axi sub list"
|
|
24215
|
-
},
|
|
24216
|
-
"mg-axi": {
|
|
24217
|
-
usage: "artium-axi mg-axi [<args>]",
|
|
24218
|
-
purpose: "Run Microsoft Graph commands with your managed identity.",
|
|
24219
|
-
flags: ["Arguments after mg-axi are forwarded upstream, including --help."],
|
|
24220
|
-
example: "artium-axi mg-axi entra user list"
|
|
24221
|
-
},
|
|
24222
|
-
"managed-session": {
|
|
24223
|
-
usage: "artium-axi --managed-session <command> [<args>]",
|
|
24224
|
-
purpose: "Let a caller supply and persist sessions through private pipes.",
|
|
24225
|
-
flags: [],
|
|
24226
|
-
example: "artium-axi --managed-session whoami"
|
|
24227
|
-
}
|
|
24228
|
-
};
|
|
24229
|
-
function commandHelp(command) {
|
|
24230
|
-
const entry = commands[command];
|
|
24231
|
-
const flags = [
|
|
24232
|
-
toolSchema.safeParse(command).success ? "--help before the tool name (default false)" : "--help (default false)",
|
|
24233
|
-
...entry.flags,
|
|
24234
|
-
"--managed-session before the command (default false; caller-owned sessions; see artium-axi --managed-session --help)"
|
|
24235
|
-
];
|
|
24236
|
-
const protocol = [
|
|
24237
|
-
"Session JSON on inherited pipe fd 3, new sessions and rotations as JSON lines on private pipe fd 4; no session file.",
|
|
24238
|
-
"Managed input: {serverUrl, accessToken, refreshToken?}; close fd 3 after JSON (64 KiB maximum). Output: {serverUrl, status, accessToken, refreshToken, accessExpiresAt, familyExpiresAt} per rotation, before retry, including on later failure.",
|
|
24239
|
-
"Managed login: fd 3 is unused; fd 4 must be a writable private pipe/socket. Local sign-in requires --username <username> --password-stdin with protected inherited stdin; password argv and ARTIUM_AXI_PASSWORD are refused. SSO uses login --sso and displays browser approval instructions immediately. New sessions use the rotation envelope; password-change-required returns {serverUrl, status, passwordChangeToken, passwordChangeExpiresAt} on fd 4 and exits 1.",
|
|
24240
|
-
"Managed exits: 0 success; 2 invalid JSON/descriptors or refused passwd/logout/setup; 1 authentication/transport failure; tool exit codes pass through. Only TOKEN_EXPIRED permits one refresh/retry; without refreshToken or on refusal, return control to the caller."
|
|
24241
|
-
];
|
|
24242
|
-
const purposes = command === "home" ? `commands[${Object.keys(commands).length - 2}]{command,purpose}:
|
|
24243
|
-
${Object.entries(commands).filter(([name]) => name !== "home" && name !== "managed-session").map(([name, value]) => ` ${name},${JSON.stringify(value.purpose)}`).join("\n")}
|
|
24244
|
-
` : "";
|
|
24245
|
-
return `purpose: ${entry.purpose}
|
|
24246
|
-
usage: ${entry.usage}
|
|
24247
|
-
${purposes}flags[${flags.length}]:
|
|
24248
|
-
${flags.map((flag) => ` - ${JSON.stringify(flag)}`).join("\n")}
|
|
24249
|
-
example: ${entry.example}
|
|
24250
|
-
` + (command === "login" || command === "managed-session" ? `managedSession[${protocol.length}]:
|
|
24251
|
-
${protocol.map((line) => ` - ${JSON.stringify(line)}`).join("\n")}
|
|
24252
|
-
` : "");
|
|
24253
|
-
}
|
|
24254
|
-
function validateArguments(args, prefixHelp) {
|
|
24255
|
-
const command = args[0];
|
|
24256
|
-
if (command === "tools") args = [...args.filter((arg) => arg !== "--help"), ...args.filter((arg) => arg === "--help")];
|
|
24257
|
-
const rootFlags = "--help, --version, --managed-session (before the command)";
|
|
24258
|
-
const rootCommands = Object.keys(commands).filter((name) => name !== "home" && name !== "managed-session" && name !== "tools show").join(", ");
|
|
24259
|
-
function fail(token, level2, choices2) {
|
|
24260
|
-
const kind = token?.startsWith("-") ? "flag" : "argument";
|
|
24261
|
-
const message = token === void 0 ? `Missing argument for ${level2}.` : command === "login" || command === "passwd" ? `Unexpected argument at position ${args.indexOf(token) + 1} for ${level2}. Password arguments are refused.` : `Unknown or unexpected ${kind} ${JSON.stringify(kind === "flag" ? token.split("=")[0] : token)} for ${level2}.`;
|
|
24262
|
-
throw new ArtiumError("INVALID_INPUT", message, choices2);
|
|
24263
|
-
}
|
|
24264
|
-
if (!command) return;
|
|
24265
|
-
if (command === "--version" && args.length === 1) return;
|
|
24266
|
-
if (!Object.hasOwn(commands, command) || command === "home" || command === "managed-session" || command === "tools show") {
|
|
24267
|
-
fail(command, "artium-axi", `Valid commands: ${rootCommands}. Valid flags: ${rootFlags}.`);
|
|
24268
|
-
}
|
|
24269
|
-
if (toolSchema.safeParse(command).success) {
|
|
24270
|
-
if (prefixHelp && args.length > 1) fail(args[1], command, `Use artium-axi --help ${command} for local help; artium-axi ${command} --help for upstream flags.`);
|
|
24271
|
-
return;
|
|
24272
|
-
}
|
|
24273
|
-
let level = command;
|
|
24274
|
-
let start = 1;
|
|
24275
|
-
if (command === "tools" && args[1] === "show") {
|
|
24276
|
-
level = "tools show";
|
|
24277
|
-
start = 2;
|
|
24278
|
-
}
|
|
24279
|
-
const entry = commands[level];
|
|
24280
|
-
const validFlags = ["--help", ...entry.flags.map((flag) => flag.split(" ")[0])];
|
|
24281
|
-
const choices = `Valid flags for ${level}: ${validFlags.join(", ")}.` + (level === "tools" ? " Valid subcommands: show <tool>." : level === "tools show" ? ` Valid tools: ${toolSchema.options.join(", ")}.` : "");
|
|
24282
|
-
let tool = false;
|
|
24283
|
-
const seen = /* @__PURE__ */ new Set();
|
|
24284
|
-
for (let index = start; index < args.length; index++) {
|
|
24285
|
-
const token = args[index];
|
|
24286
|
-
if (level === "tools show" && !token.startsWith("-") && !tool) {
|
|
24287
|
-
if (!toolSchema.safeParse(token).success) fail(token, level, choices);
|
|
24288
|
-
tool = true;
|
|
24289
|
-
} else {
|
|
24290
|
-
if (!validFlags.includes(token) || seen.has(token)) fail(token, level, choices);
|
|
24291
|
-
seen.add(token);
|
|
24292
|
-
if (token === "--username" || token === "--host") {
|
|
24293
|
-
const value = args[index + 1];
|
|
24294
|
-
if (!value) fail(value, `${level} ${token}`, `Supply ${token} ${token === "--host" ? "<claude|codex|opencode|pi>" : "<username>"}. ${choices}`);
|
|
24295
|
-
if (token === "--host" && !["claude", "codex", "opencode", "pi"].includes(value)) fail(value, `${level} --host`, `Valid hosts: claude, codex, opencode, pi. Use ${entry.usage}.`);
|
|
24296
|
-
index++;
|
|
24297
|
-
}
|
|
24298
|
-
}
|
|
24299
|
-
}
|
|
24300
|
-
if (level === "tools show" && !tool && !seen.has("--help") && !prefixHelp) fail(void 0, level, choices);
|
|
24301
|
-
}
|
|
24302
|
-
function helpCommand(args, prefixHelp = false) {
|
|
24303
|
-
if (args[0] === "setup" && args.includes("--help")) {
|
|
24304
|
-
const path2 = args.filter((arg) => arg !== "--help");
|
|
24305
|
-
for (let index = 1; index < path2.length; index++) {
|
|
24306
|
-
if (path2[index] === "--host" && ["claude", "codex", "opencode", "pi"].includes(path2[index + 1])) index++;
|
|
24307
|
-
else if (path2[index] !== "--hook" && path2[index] !== "--force") return void 0;
|
|
24308
|
-
}
|
|
24309
|
-
return "setup";
|
|
24310
|
-
}
|
|
24311
|
-
if (toolSchema.safeParse(args[0]).success) return prefixHelp && args.length === 2 ? args[0] : void 0;
|
|
24312
|
-
if (args[0] === "login" || args[0] === "passwd") {
|
|
24313
|
-
if (args[0] === "login" && args.length === 3 && args.includes("--sso") && args.includes("--help")) return "login";
|
|
24314
|
-
let requested = false;
|
|
24315
|
-
let username = false;
|
|
24316
|
-
let stdin = false;
|
|
24317
|
-
for (let index = 1; index < args.length; index++) {
|
|
24318
|
-
const option = args[index];
|
|
24319
|
-
if (option === "--username" && args[0] === "login" && !username && args[index + 1] !== void 0) {
|
|
24320
|
-
username = true;
|
|
24321
|
-
index++;
|
|
24322
|
-
} else if (option === "--password-stdin" && !stdin) stdin = true;
|
|
24323
|
-
else if (option === "--help" && !requested) requested = true;
|
|
24324
|
-
else return void 0;
|
|
24325
|
-
}
|
|
24326
|
-
return requested ? args[0] : void 0;
|
|
24327
|
-
}
|
|
24328
|
-
if (!args.includes("--help")) return void 0;
|
|
24329
|
-
const path = args.filter((arg) => arg !== "--help");
|
|
24330
|
-
if (path.length === 0) return "home";
|
|
24331
|
-
if (path[0] === "tools" && path[1] === "show" && (path.length === 2 || path.length === 3 && toolSchema.safeParse(path[2]).success)) return "tools show";
|
|
24332
|
-
if (path.length === 1 && path[0] !== "home" && Object.hasOwn(commands, path[0])) return path[0];
|
|
24333
|
-
return void 0;
|
|
24334
|
-
}
|
|
24335
|
-
|
|
24336
23669
|
// tools/inventories/az-axi.json
|
|
24337
23670
|
var az_axi_default = {
|
|
24338
23671
|
generatedBy: "scripts/upstream-inventory.mjs",
|
|
@@ -29065,6 +28398,13 @@ var mg_axi_default = {
|
|
|
29065
28398
|
],
|
|
29066
28399
|
nativeWriteSettings: {
|
|
29067
28400
|
default: "disabled",
|
|
28401
|
+
supportedOperations: [
|
|
28402
|
+
"entra.conditional-access.policy.update",
|
|
28403
|
+
"entra.risky-user.dismiss",
|
|
28404
|
+
"entra.user.revokeSessions",
|
|
28405
|
+
"entra.user.update",
|
|
28406
|
+
"mg.entra.group.member.add"
|
|
28407
|
+
],
|
|
29068
28408
|
profileFields: {
|
|
29069
28409
|
"writes.allowWrites": "boolean",
|
|
29070
28410
|
"writes.operations": "string[]"
|
|
@@ -33641,171 +32981,710 @@ var mg_axi_default = {
|
|
|
33641
32981
|
positionalInput: false
|
|
33642
32982
|
},
|
|
33643
32983
|
{
|
|
33644
|
-
command: "entra lifecycle run user-processing-result count",
|
|
32984
|
+
command: "entra lifecycle run user-processing-result count",
|
|
32985
|
+
flags: {
|
|
32986
|
+
help: "boolean",
|
|
32987
|
+
profile: "value",
|
|
32988
|
+
"api-version": "value",
|
|
32989
|
+
workflow: "value",
|
|
32990
|
+
run: "value",
|
|
32991
|
+
scopes: "value",
|
|
32992
|
+
config: "value"
|
|
32993
|
+
},
|
|
32994
|
+
positionalInput: false
|
|
32995
|
+
},
|
|
32996
|
+
{
|
|
32997
|
+
command: "entra lifecycle run subject-processing-result list",
|
|
32998
|
+
flags: {
|
|
32999
|
+
help: "boolean",
|
|
33000
|
+
profile: "value",
|
|
33001
|
+
"api-version": "value",
|
|
33002
|
+
workflow: "value",
|
|
33003
|
+
run: "value",
|
|
33004
|
+
limit: "value",
|
|
33005
|
+
all: "boolean",
|
|
33006
|
+
filter: "value",
|
|
33007
|
+
fields: "value",
|
|
33008
|
+
full: "boolean",
|
|
33009
|
+
cursor: "value",
|
|
33010
|
+
scopes: "value",
|
|
33011
|
+
config: "value"
|
|
33012
|
+
},
|
|
33013
|
+
positionalInput: false
|
|
33014
|
+
},
|
|
33015
|
+
{
|
|
33016
|
+
command: "entra lifecycle run subject-processing-result show",
|
|
33017
|
+
flags: {
|
|
33018
|
+
help: "boolean",
|
|
33019
|
+
profile: "value",
|
|
33020
|
+
"api-version": "value",
|
|
33021
|
+
workflow: "value",
|
|
33022
|
+
run: "value",
|
|
33023
|
+
id: "value",
|
|
33024
|
+
fields: "value",
|
|
33025
|
+
full: "boolean",
|
|
33026
|
+
scopes: "value",
|
|
33027
|
+
config: "value"
|
|
33028
|
+
},
|
|
33029
|
+
positionalInput: false
|
|
33030
|
+
},
|
|
33031
|
+
{
|
|
33032
|
+
command: "entra lifecycle run subject-processing-result count",
|
|
33033
|
+
flags: {
|
|
33034
|
+
help: "boolean",
|
|
33035
|
+
profile: "value",
|
|
33036
|
+
"api-version": "value",
|
|
33037
|
+
workflow: "value",
|
|
33038
|
+
run: "value",
|
|
33039
|
+
scopes: "value",
|
|
33040
|
+
config: "value"
|
|
33041
|
+
},
|
|
33042
|
+
positionalInput: false
|
|
33043
|
+
},
|
|
33044
|
+
{
|
|
33045
|
+
command: "entra lifecycle run task-processing-result list",
|
|
33046
|
+
flags: {
|
|
33047
|
+
help: "boolean",
|
|
33048
|
+
profile: "value",
|
|
33049
|
+
"api-version": "value",
|
|
33050
|
+
workflow: "value",
|
|
33051
|
+
run: "value",
|
|
33052
|
+
limit: "value",
|
|
33053
|
+
all: "boolean",
|
|
33054
|
+
filter: "value",
|
|
33055
|
+
select: "value",
|
|
33056
|
+
fields: "value",
|
|
33057
|
+
full: "boolean",
|
|
33058
|
+
cursor: "value",
|
|
33059
|
+
scopes: "value",
|
|
33060
|
+
config: "value"
|
|
33061
|
+
},
|
|
33062
|
+
positionalInput: false
|
|
33063
|
+
},
|
|
33064
|
+
{
|
|
33065
|
+
command: "entra lifecycle run task-processing-result show",
|
|
33066
|
+
flags: {
|
|
33067
|
+
help: "boolean",
|
|
33068
|
+
profile: "value",
|
|
33069
|
+
"api-version": "value",
|
|
33070
|
+
workflow: "value",
|
|
33071
|
+
run: "value",
|
|
33072
|
+
id: "value",
|
|
33073
|
+
fields: "value",
|
|
33074
|
+
full: "boolean",
|
|
33075
|
+
scopes: "value",
|
|
33076
|
+
config: "value"
|
|
33077
|
+
},
|
|
33078
|
+
positionalInput: false
|
|
33079
|
+
},
|
|
33080
|
+
{
|
|
33081
|
+
command: "entra lifecycle run task-processing-result count",
|
|
33082
|
+
flags: {
|
|
33083
|
+
help: "boolean",
|
|
33084
|
+
profile: "value",
|
|
33085
|
+
"api-version": "value",
|
|
33086
|
+
workflow: "value",
|
|
33087
|
+
run: "value",
|
|
33088
|
+
scopes: "value",
|
|
33089
|
+
config: "value"
|
|
33090
|
+
},
|
|
33091
|
+
positionalInput: false
|
|
33092
|
+
},
|
|
33093
|
+
{
|
|
33094
|
+
command: "api get",
|
|
33095
|
+
flags: {
|
|
33096
|
+
help: "boolean",
|
|
33097
|
+
profile: "value",
|
|
33098
|
+
"api-version": "value",
|
|
33099
|
+
odata: "value",
|
|
33100
|
+
cursor: "value",
|
|
33101
|
+
scopes: "value",
|
|
33102
|
+
limit: "value",
|
|
33103
|
+
all: "boolean",
|
|
33104
|
+
full: "boolean",
|
|
33105
|
+
config: "value"
|
|
33106
|
+
},
|
|
33107
|
+
positionalInput: {
|
|
33108
|
+
name: "path",
|
|
33109
|
+
description: "Server-relative Graph path, e.g. /users",
|
|
33110
|
+
required: true
|
|
33111
|
+
}
|
|
33112
|
+
},
|
|
33113
|
+
{
|
|
33114
|
+
command: "login",
|
|
33115
|
+
flags: {
|
|
33116
|
+
help: "boolean",
|
|
33117
|
+
profile: "value",
|
|
33118
|
+
method: "value",
|
|
33119
|
+
scopes: "value",
|
|
33120
|
+
config: "value"
|
|
33121
|
+
},
|
|
33122
|
+
positionalInput: false
|
|
33123
|
+
},
|
|
33124
|
+
{
|
|
33125
|
+
command: "config path",
|
|
33126
|
+
flags: {
|
|
33127
|
+
help: "boolean",
|
|
33128
|
+
config: "value"
|
|
33129
|
+
},
|
|
33130
|
+
positionalInput: false
|
|
33131
|
+
},
|
|
33132
|
+
{
|
|
33133
|
+
command: "auth status",
|
|
33134
|
+
flags: {
|
|
33135
|
+
help: "boolean",
|
|
33136
|
+
profile: "value",
|
|
33137
|
+
config: "value"
|
|
33138
|
+
},
|
|
33139
|
+
positionalInput: false
|
|
33140
|
+
},
|
|
33141
|
+
{
|
|
33142
|
+
command: "auth logout",
|
|
33143
|
+
flags: {
|
|
33144
|
+
help: "boolean",
|
|
33145
|
+
profile: "value",
|
|
33146
|
+
config: "value"
|
|
33147
|
+
},
|
|
33148
|
+
positionalInput: false
|
|
33149
|
+
}
|
|
33150
|
+
]
|
|
33151
|
+
};
|
|
33152
|
+
|
|
33153
|
+
// tools/inventories/ldap-axi.json
|
|
33154
|
+
var ldap_axi_default = {
|
|
33155
|
+
generatedBy: "scripts/ldap-inventory.mjs",
|
|
33156
|
+
tool: "ldap-axi",
|
|
33157
|
+
version: "0.3.0",
|
|
33158
|
+
integrity: "sha512-QVectHNsRxYWNBf0im5DjeN78mcgK0Te0Sxh7uXGNb+AhQjsS5ywiCrnKAk0/INA/oxiZ1TiXaDX7jHAg5OvDg==",
|
|
33159
|
+
parserEvidence: "Installed pinned command schemas and reviewed CLI globals and entry routes",
|
|
33160
|
+
sources: [
|
|
33161
|
+
{
|
|
33162
|
+
path: "package.json",
|
|
33163
|
+
sha256: "9fa26acd15443dad0857c7468f570164e436f7b25aef3df733da3c4d859917a9"
|
|
33164
|
+
},
|
|
33165
|
+
{
|
|
33166
|
+
path: "README.md",
|
|
33167
|
+
sha256: "cd05d13da53b80aa651a5207b680e7fa6a0fb0c975244e4cc135d26b13391204"
|
|
33168
|
+
},
|
|
33169
|
+
{
|
|
33170
|
+
path: "axi-credential.schema.json",
|
|
33171
|
+
sha256: "76b9f5f449d844dcd4365b966ed907515582f72fc920b936dae825ebf1b7cc53"
|
|
33172
|
+
},
|
|
33173
|
+
{
|
|
33174
|
+
path: "dist/src/cli.js",
|
|
33175
|
+
sha256: "2cb024b2848c2c9e27c292205b3ed86a829cfed21d52e8fea06ef544a039ec2a"
|
|
33176
|
+
},
|
|
33177
|
+
{
|
|
33178
|
+
path: "dist/src/schema.js",
|
|
33179
|
+
sha256: "ba2285cbda6e5994c536b2f9de65736df1b43b0b10c5d5b7a1c2d7124ab198a0"
|
|
33180
|
+
},
|
|
33181
|
+
{
|
|
33182
|
+
path: "dist/src/config.js",
|
|
33183
|
+
sha256: "cbc48584b6ff2a2a70375e9e8e6242a87543a3e6e6f7e1c055a2d29c42b677f9"
|
|
33184
|
+
},
|
|
33185
|
+
{
|
|
33186
|
+
path: "dist/src/secrets.js",
|
|
33187
|
+
sha256: "9f2ccf86515cec1dd65f2dd5850188232374535f7fe56a788fdc7b94d91c8532"
|
|
33188
|
+
},
|
|
33189
|
+
{
|
|
33190
|
+
path: "dist/src/directory/auth.js",
|
|
33191
|
+
sha256: "64885ea4bc5067c58dcb4d432610f99eedfa9af65fa46273b68d503d26ec3214"
|
|
33192
|
+
},
|
|
33193
|
+
{
|
|
33194
|
+
path: "dist/src/directory/policy.js",
|
|
33195
|
+
sha256: "a697dd78990493f7f1c19d22278ebb922c997e9cf88a51b12adfaca30fa8a01d"
|
|
33196
|
+
}
|
|
33197
|
+
],
|
|
33198
|
+
credentialSchema: {
|
|
33199
|
+
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
33200
|
+
title: "ldap-axi profile",
|
|
33201
|
+
type: "object",
|
|
33202
|
+
additionalProperties: false,
|
|
33203
|
+
required: [
|
|
33204
|
+
"url"
|
|
33205
|
+
],
|
|
33206
|
+
properties: {
|
|
33207
|
+
url: {
|
|
33208
|
+
type: "string",
|
|
33209
|
+
pattern: "^ldaps?://",
|
|
33210
|
+
description: "LDAP URL without userinfo; use the server FQDN for ambient authentication"
|
|
33211
|
+
},
|
|
33212
|
+
auth: {
|
|
33213
|
+
enum: [
|
|
33214
|
+
"auto",
|
|
33215
|
+
"gssapi",
|
|
33216
|
+
"simple"
|
|
33217
|
+
],
|
|
33218
|
+
default: "auto"
|
|
33219
|
+
},
|
|
33220
|
+
bindDn: {
|
|
33221
|
+
type: "string",
|
|
33222
|
+
minLength: 1,
|
|
33223
|
+
description: "Simple-bind identity, required for simple authentication"
|
|
33224
|
+
},
|
|
33225
|
+
bindPassword: {
|
|
33226
|
+
"x-secret": true,
|
|
33227
|
+
description: "Simple-bind password reference; defaults to env LDAP_AXI_BIND_PASSWORD. No stored secrets.",
|
|
33228
|
+
oneOf: [
|
|
33229
|
+
{
|
|
33230
|
+
type: "object",
|
|
33231
|
+
additionalProperties: false,
|
|
33232
|
+
required: [
|
|
33233
|
+
"env"
|
|
33234
|
+
],
|
|
33235
|
+
properties: {
|
|
33236
|
+
env: {
|
|
33237
|
+
type: "string",
|
|
33238
|
+
pattern: "^[A-Za-z_][A-Za-z0-9_]*$"
|
|
33239
|
+
}
|
|
33240
|
+
}
|
|
33241
|
+
},
|
|
33242
|
+
{
|
|
33243
|
+
type: "object",
|
|
33244
|
+
additionalProperties: false,
|
|
33245
|
+
required: [
|
|
33246
|
+
"file"
|
|
33247
|
+
],
|
|
33248
|
+
properties: {
|
|
33249
|
+
file: {
|
|
33250
|
+
type: "string",
|
|
33251
|
+
pattern: "^(?:/|[A-Za-z]:[\\\\/])",
|
|
33252
|
+
description: "Absolute local path to a private UTF-8 password file; UNC/device paths are forbidden on Windows"
|
|
33253
|
+
}
|
|
33254
|
+
}
|
|
33255
|
+
}
|
|
33256
|
+
]
|
|
33257
|
+
},
|
|
33258
|
+
base: {
|
|
33259
|
+
type: "string"
|
|
33260
|
+
},
|
|
33261
|
+
pageSize: {
|
|
33262
|
+
type: "integer",
|
|
33263
|
+
minimum: 1,
|
|
33264
|
+
maximum: 1e3
|
|
33265
|
+
},
|
|
33266
|
+
caFile: {
|
|
33267
|
+
type: "string",
|
|
33268
|
+
minLength: 1
|
|
33269
|
+
},
|
|
33270
|
+
startTls: {
|
|
33271
|
+
type: "boolean",
|
|
33272
|
+
default: false
|
|
33273
|
+
},
|
|
33274
|
+
tlsMaxVersion: {
|
|
33275
|
+
const: "1.2"
|
|
33276
|
+
},
|
|
33277
|
+
flavor: {
|
|
33278
|
+
enum: [
|
|
33279
|
+
"ad",
|
|
33280
|
+
"adlds",
|
|
33281
|
+
"ldapv3"
|
|
33282
|
+
]
|
|
33283
|
+
},
|
|
33284
|
+
gssapiService: {
|
|
33285
|
+
type: "string",
|
|
33286
|
+
minLength: 1
|
|
33287
|
+
},
|
|
33288
|
+
gssapiProtection: {
|
|
33289
|
+
enum: [
|
|
33290
|
+
"none",
|
|
33291
|
+
"confidentiality"
|
|
33292
|
+
]
|
|
33293
|
+
}
|
|
33294
|
+
}
|
|
33295
|
+
},
|
|
33296
|
+
adapterBoundary: {
|
|
33297
|
+
unsafeOverrides: [
|
|
33298
|
+
"config",
|
|
33299
|
+
"url",
|
|
33300
|
+
"start-tls",
|
|
33301
|
+
"ca-file",
|
|
33302
|
+
"ca-only",
|
|
33303
|
+
"tls-no-verify",
|
|
33304
|
+
"tls-max-version",
|
|
33305
|
+
"insecure-plaintext",
|
|
33306
|
+
"anonymous",
|
|
33307
|
+
"profile",
|
|
33308
|
+
"auth",
|
|
33309
|
+
"gssapi-service",
|
|
33310
|
+
"gssapi-protection"
|
|
33311
|
+
],
|
|
33312
|
+
blockedCommands: [
|
|
33313
|
+
"config",
|
|
33314
|
+
"profile",
|
|
33315
|
+
"setup"
|
|
33316
|
+
],
|
|
33317
|
+
sensitiveFlags: [
|
|
33318
|
+
"base",
|
|
33319
|
+
"filter",
|
|
33320
|
+
"name",
|
|
33321
|
+
"sam",
|
|
33322
|
+
"upn",
|
|
33323
|
+
"uid"
|
|
33324
|
+
],
|
|
33325
|
+
authentication: "Stored simple-bind identity over verified LDAPS or StartTLS; no ambient ticket or keytab",
|
|
33326
|
+
inputs: {
|
|
33327
|
+
stdin: "unsupported",
|
|
33328
|
+
files: "unsupported",
|
|
33329
|
+
caFile: "stored PEM materialized privately by host"
|
|
33330
|
+
},
|
|
33331
|
+
resources: {
|
|
33332
|
+
nodeHeapMiB: 128
|
|
33333
|
+
},
|
|
33334
|
+
nativeWrites: "read-only upstream design"
|
|
33335
|
+
},
|
|
33336
|
+
discovery: {
|
|
33337
|
+
commands: [
|
|
33338
|
+
"entry",
|
|
33339
|
+
"user",
|
|
33340
|
+
"group",
|
|
33341
|
+
"computer",
|
|
33342
|
+
"auth status",
|
|
33343
|
+
"server"
|
|
33344
|
+
],
|
|
33345
|
+
example: [
|
|
33346
|
+
"user",
|
|
33347
|
+
"list",
|
|
33348
|
+
"--limit",
|
|
33349
|
+
"1"
|
|
33350
|
+
],
|
|
33351
|
+
help: "List user accounts.\nLDAPv3 users are inetOrgPerson or posixAccount entries; use ldap-axi entry search for account + simpleSecurityObject service accounts.\nUsage: ldap-axi user list [flags]\nFlags:\n --help show this help\n --base <dn> search base (default: environment, config, or server naming contexts)\n --disabled include disabled accounts (LDAPv3: permanent ppolicy locks)\n --enabled include enabled accounts (LDAPv3: exclude permanent ppolicy locks)\n --locked include current AD locks or recorded LDAPv3 ppolicy lock candidates\n --all read all pages up to --max-rows or --limit\n --name <pattern> match cn\n --sam <pattern> AD only: match sAMAccountName\n --upn <pattern> AD only: match userPrincipalName\n --uid <pattern> LDAPv3 only: match uid\n --filter <RFC4515> add a raw LDAP filter\n --scope <base|one|sub> search scope (default: sub)\n --max-rows <n> maximum output rows\n --page-size <1..1000> LDAP page size (default: AD 1000, LDAPv3 500; config overrides)\n --limit <n> alias for bounded list output\n --fields <name,...> select output fields\n --attributes <name,...> request and emit raw attributes\nActive Directory fields: sam, upn, name, dn, enabled, locked, last_logon, object_sid, when_created, description, display_name, memberOf\nActive Directory defaults: sam, name, enabled, last_logon\nLDAPv3 fields: uid, name, mail, enabled, locked, account_state, dn, entry_uuid, when_created\nLDAPv3 defaults: uid, name, mail, enabled, locked, account_state\nExamples:\n ldap-axi user list --disabled --max-rows 25\n ldap-axi user list --name Alice --fields name,dn --limit 50"
|
|
33352
|
+
},
|
|
33353
|
+
suggestionFields: [
|
|
33354
|
+
"help"
|
|
33355
|
+
],
|
|
33356
|
+
format: "TOON",
|
|
33357
|
+
commands: [
|
|
33358
|
+
{
|
|
33359
|
+
command: "home",
|
|
33360
|
+
flags: {
|
|
33361
|
+
help: "boolean",
|
|
33362
|
+
config: "value",
|
|
33363
|
+
url: "value",
|
|
33364
|
+
base: "value",
|
|
33365
|
+
"start-tls": "boolean",
|
|
33366
|
+
"ca-file": "value",
|
|
33367
|
+
"ca-only": "boolean",
|
|
33368
|
+
"tls-no-verify": "boolean",
|
|
33369
|
+
"tls-max-version": "value",
|
|
33370
|
+
"insecure-plaintext": "boolean",
|
|
33371
|
+
anonymous: "boolean",
|
|
33372
|
+
profile: "value",
|
|
33373
|
+
auth: "value",
|
|
33374
|
+
"gssapi-service": "value",
|
|
33375
|
+
"gssapi-protection": "value"
|
|
33376
|
+
},
|
|
33377
|
+
positionalInput: false
|
|
33378
|
+
},
|
|
33379
|
+
{
|
|
33380
|
+
command: "auth status",
|
|
33645
33381
|
flags: {
|
|
33646
33382
|
help: "boolean",
|
|
33383
|
+
config: "value",
|
|
33384
|
+
url: "value",
|
|
33385
|
+
base: "value",
|
|
33386
|
+
"start-tls": "boolean",
|
|
33387
|
+
"ca-file": "value",
|
|
33388
|
+
"ca-only": "boolean",
|
|
33389
|
+
"tls-no-verify": "boolean",
|
|
33390
|
+
"tls-max-version": "value",
|
|
33391
|
+
"insecure-plaintext": "boolean",
|
|
33392
|
+
anonymous: "boolean",
|
|
33647
33393
|
profile: "value",
|
|
33648
|
-
|
|
33649
|
-
|
|
33650
|
-
|
|
33651
|
-
|
|
33652
|
-
config: "value"
|
|
33394
|
+
auth: "value",
|
|
33395
|
+
"gssapi-service": "value",
|
|
33396
|
+
"gssapi-protection": "value",
|
|
33397
|
+
offline: "boolean"
|
|
33653
33398
|
},
|
|
33654
33399
|
positionalInput: false
|
|
33655
33400
|
},
|
|
33656
33401
|
{
|
|
33657
|
-
command: "
|
|
33402
|
+
command: "server",
|
|
33658
33403
|
flags: {
|
|
33659
33404
|
help: "boolean",
|
|
33405
|
+
config: "value",
|
|
33406
|
+
url: "value",
|
|
33407
|
+
base: "value",
|
|
33408
|
+
"start-tls": "boolean",
|
|
33409
|
+
"ca-file": "value",
|
|
33410
|
+
"ca-only": "boolean",
|
|
33411
|
+
"tls-no-verify": "boolean",
|
|
33412
|
+
"tls-max-version": "value",
|
|
33413
|
+
"insecure-plaintext": "boolean",
|
|
33414
|
+
anonymous: "boolean",
|
|
33660
33415
|
profile: "value",
|
|
33661
|
-
|
|
33662
|
-
|
|
33663
|
-
|
|
33664
|
-
limit: "value",
|
|
33665
|
-
all: "boolean",
|
|
33666
|
-
filter: "value",
|
|
33667
|
-
fields: "value",
|
|
33668
|
-
full: "boolean",
|
|
33669
|
-
cursor: "value",
|
|
33670
|
-
scopes: "value",
|
|
33671
|
-
config: "value"
|
|
33416
|
+
auth: "value",
|
|
33417
|
+
"gssapi-service": "value",
|
|
33418
|
+
"gssapi-protection": "value"
|
|
33672
33419
|
},
|
|
33673
33420
|
positionalInput: false
|
|
33674
33421
|
},
|
|
33675
33422
|
{
|
|
33676
|
-
command: "
|
|
33423
|
+
command: "entry search",
|
|
33677
33424
|
flags: {
|
|
33678
33425
|
help: "boolean",
|
|
33426
|
+
config: "value",
|
|
33427
|
+
url: "value",
|
|
33428
|
+
base: "value",
|
|
33429
|
+
"start-tls": "boolean",
|
|
33430
|
+
"ca-file": "value",
|
|
33431
|
+
"ca-only": "boolean",
|
|
33432
|
+
"tls-no-verify": "boolean",
|
|
33433
|
+
"tls-max-version": "value",
|
|
33434
|
+
"insecure-plaintext": "boolean",
|
|
33435
|
+
anonymous: "boolean",
|
|
33679
33436
|
profile: "value",
|
|
33680
|
-
|
|
33681
|
-
|
|
33682
|
-
|
|
33683
|
-
|
|
33684
|
-
|
|
33685
|
-
|
|
33686
|
-
|
|
33687
|
-
|
|
33437
|
+
auth: "value",
|
|
33438
|
+
"gssapi-service": "value",
|
|
33439
|
+
"gssapi-protection": "value",
|
|
33440
|
+
filter: "value",
|
|
33441
|
+
scope: "value",
|
|
33442
|
+
attributes: "value",
|
|
33443
|
+
"page-size": "value",
|
|
33444
|
+
"max-rows": "value",
|
|
33445
|
+
all: "boolean"
|
|
33688
33446
|
},
|
|
33689
33447
|
positionalInput: false
|
|
33690
33448
|
},
|
|
33691
33449
|
{
|
|
33692
|
-
command: "
|
|
33450
|
+
command: "entry show",
|
|
33693
33451
|
flags: {
|
|
33694
33452
|
help: "boolean",
|
|
33453
|
+
config: "value",
|
|
33454
|
+
url: "value",
|
|
33455
|
+
base: "value",
|
|
33456
|
+
"start-tls": "boolean",
|
|
33457
|
+
"ca-file": "value",
|
|
33458
|
+
"ca-only": "boolean",
|
|
33459
|
+
"tls-no-verify": "boolean",
|
|
33460
|
+
"tls-max-version": "value",
|
|
33461
|
+
"insecure-plaintext": "boolean",
|
|
33462
|
+
anonymous: "boolean",
|
|
33695
33463
|
profile: "value",
|
|
33696
|
-
|
|
33697
|
-
|
|
33698
|
-
|
|
33699
|
-
|
|
33700
|
-
|
|
33464
|
+
auth: "value",
|
|
33465
|
+
"gssapi-service": "value",
|
|
33466
|
+
"gssapi-protection": "value",
|
|
33467
|
+
attributes: "value",
|
|
33468
|
+
"page-size": "value"
|
|
33701
33469
|
},
|
|
33702
|
-
positionalInput:
|
|
33470
|
+
positionalInput: true
|
|
33703
33471
|
},
|
|
33704
33472
|
{
|
|
33705
|
-
command: "
|
|
33473
|
+
command: "user list",
|
|
33706
33474
|
flags: {
|
|
33707
33475
|
help: "boolean",
|
|
33476
|
+
config: "value",
|
|
33477
|
+
url: "value",
|
|
33478
|
+
base: "value",
|
|
33479
|
+
"start-tls": "boolean",
|
|
33480
|
+
"ca-file": "value",
|
|
33481
|
+
"ca-only": "boolean",
|
|
33482
|
+
"tls-no-verify": "boolean",
|
|
33483
|
+
"tls-max-version": "value",
|
|
33484
|
+
"insecure-plaintext": "boolean",
|
|
33485
|
+
anonymous: "boolean",
|
|
33708
33486
|
profile: "value",
|
|
33709
|
-
|
|
33710
|
-
|
|
33711
|
-
|
|
33712
|
-
|
|
33487
|
+
auth: "value",
|
|
33488
|
+
"gssapi-service": "value",
|
|
33489
|
+
"gssapi-protection": "value",
|
|
33490
|
+
disabled: "boolean",
|
|
33491
|
+
enabled: "boolean",
|
|
33492
|
+
locked: "boolean",
|
|
33713
33493
|
all: "boolean",
|
|
33494
|
+
name: "value",
|
|
33495
|
+
sam: "value",
|
|
33496
|
+
upn: "value",
|
|
33497
|
+
uid: "value",
|
|
33714
33498
|
filter: "value",
|
|
33715
|
-
|
|
33499
|
+
scope: "value",
|
|
33500
|
+
"max-rows": "value",
|
|
33501
|
+
"page-size": "value",
|
|
33502
|
+
limit: "value",
|
|
33716
33503
|
fields: "value",
|
|
33717
|
-
|
|
33718
|
-
cursor: "value",
|
|
33719
|
-
scopes: "value",
|
|
33720
|
-
config: "value"
|
|
33504
|
+
attributes: "value"
|
|
33721
33505
|
},
|
|
33722
33506
|
positionalInput: false
|
|
33723
33507
|
},
|
|
33724
33508
|
{
|
|
33725
|
-
command: "
|
|
33509
|
+
command: "user show",
|
|
33726
33510
|
flags: {
|
|
33727
33511
|
help: "boolean",
|
|
33512
|
+
config: "value",
|
|
33513
|
+
url: "value",
|
|
33514
|
+
base: "value",
|
|
33515
|
+
"start-tls": "boolean",
|
|
33516
|
+
"ca-file": "value",
|
|
33517
|
+
"ca-only": "boolean",
|
|
33518
|
+
"tls-no-verify": "boolean",
|
|
33519
|
+
"tls-max-version": "value",
|
|
33520
|
+
"insecure-plaintext": "boolean",
|
|
33521
|
+
anonymous: "boolean",
|
|
33728
33522
|
profile: "value",
|
|
33729
|
-
|
|
33730
|
-
|
|
33731
|
-
|
|
33732
|
-
id: "value",
|
|
33523
|
+
auth: "value",
|
|
33524
|
+
"gssapi-service": "value",
|
|
33525
|
+
"gssapi-protection": "value",
|
|
33733
33526
|
fields: "value",
|
|
33734
|
-
|
|
33735
|
-
scopes: "value",
|
|
33736
|
-
config: "value"
|
|
33527
|
+
attributes: "value"
|
|
33737
33528
|
},
|
|
33738
|
-
positionalInput:
|
|
33529
|
+
positionalInput: true
|
|
33739
33530
|
},
|
|
33740
33531
|
{
|
|
33741
|
-
command: "
|
|
33532
|
+
command: "user groups",
|
|
33742
33533
|
flags: {
|
|
33743
33534
|
help: "boolean",
|
|
33535
|
+
config: "value",
|
|
33536
|
+
url: "value",
|
|
33537
|
+
base: "value",
|
|
33538
|
+
"start-tls": "boolean",
|
|
33539
|
+
"ca-file": "value",
|
|
33540
|
+
"ca-only": "boolean",
|
|
33541
|
+
"tls-no-verify": "boolean",
|
|
33542
|
+
"tls-max-version": "value",
|
|
33543
|
+
"insecure-plaintext": "boolean",
|
|
33544
|
+
anonymous: "boolean",
|
|
33744
33545
|
profile: "value",
|
|
33745
|
-
|
|
33746
|
-
|
|
33747
|
-
|
|
33748
|
-
|
|
33749
|
-
|
|
33546
|
+
auth: "value",
|
|
33547
|
+
"gssapi-service": "value",
|
|
33548
|
+
"gssapi-protection": "value",
|
|
33549
|
+
nested: "boolean",
|
|
33550
|
+
"max-rows": "value",
|
|
33551
|
+
"page-size": "value",
|
|
33552
|
+
fields: "value"
|
|
33750
33553
|
},
|
|
33751
|
-
positionalInput:
|
|
33554
|
+
positionalInput: true
|
|
33752
33555
|
},
|
|
33753
33556
|
{
|
|
33754
|
-
command: "
|
|
33557
|
+
command: "group list",
|
|
33755
33558
|
flags: {
|
|
33756
33559
|
help: "boolean",
|
|
33560
|
+
config: "value",
|
|
33561
|
+
url: "value",
|
|
33562
|
+
base: "value",
|
|
33563
|
+
"start-tls": "boolean",
|
|
33564
|
+
"ca-file": "value",
|
|
33565
|
+
"ca-only": "boolean",
|
|
33566
|
+
"tls-no-verify": "boolean",
|
|
33567
|
+
"tls-max-version": "value",
|
|
33568
|
+
"insecure-plaintext": "boolean",
|
|
33569
|
+
anonymous: "boolean",
|
|
33757
33570
|
profile: "value",
|
|
33758
|
-
|
|
33759
|
-
|
|
33760
|
-
|
|
33761
|
-
scopes: "value",
|
|
33762
|
-
limit: "value",
|
|
33571
|
+
auth: "value",
|
|
33572
|
+
"gssapi-service": "value",
|
|
33573
|
+
"gssapi-protection": "value",
|
|
33763
33574
|
all: "boolean",
|
|
33764
|
-
|
|
33765
|
-
|
|
33575
|
+
name: "value",
|
|
33576
|
+
sam: "value",
|
|
33577
|
+
filter: "value",
|
|
33578
|
+
scope: "value",
|
|
33579
|
+
"max-rows": "value",
|
|
33580
|
+
"page-size": "value",
|
|
33581
|
+
limit: "value",
|
|
33582
|
+
fields: "value",
|
|
33583
|
+
attributes: "value"
|
|
33766
33584
|
},
|
|
33767
|
-
positionalInput:
|
|
33768
|
-
name: "path",
|
|
33769
|
-
description: "Server-relative Graph path, e.g. /users",
|
|
33770
|
-
required: true
|
|
33771
|
-
}
|
|
33585
|
+
positionalInput: false
|
|
33772
33586
|
},
|
|
33773
33587
|
{
|
|
33774
|
-
command: "
|
|
33588
|
+
command: "group show",
|
|
33775
33589
|
flags: {
|
|
33776
33590
|
help: "boolean",
|
|
33591
|
+
config: "value",
|
|
33592
|
+
url: "value",
|
|
33593
|
+
base: "value",
|
|
33594
|
+
"start-tls": "boolean",
|
|
33595
|
+
"ca-file": "value",
|
|
33596
|
+
"ca-only": "boolean",
|
|
33597
|
+
"tls-no-verify": "boolean",
|
|
33598
|
+
"tls-max-version": "value",
|
|
33599
|
+
"insecure-plaintext": "boolean",
|
|
33600
|
+
anonymous: "boolean",
|
|
33777
33601
|
profile: "value",
|
|
33778
|
-
|
|
33779
|
-
|
|
33780
|
-
|
|
33602
|
+
auth: "value",
|
|
33603
|
+
"gssapi-service": "value",
|
|
33604
|
+
"gssapi-protection": "value",
|
|
33605
|
+
fields: "value",
|
|
33606
|
+
attributes: "value"
|
|
33781
33607
|
},
|
|
33782
|
-
positionalInput:
|
|
33608
|
+
positionalInput: true
|
|
33783
33609
|
},
|
|
33784
33610
|
{
|
|
33785
|
-
command: "
|
|
33611
|
+
command: "group members",
|
|
33786
33612
|
flags: {
|
|
33787
33613
|
help: "boolean",
|
|
33788
|
-
config: "value"
|
|
33614
|
+
config: "value",
|
|
33615
|
+
url: "value",
|
|
33616
|
+
base: "value",
|
|
33617
|
+
"start-tls": "boolean",
|
|
33618
|
+
"ca-file": "value",
|
|
33619
|
+
"ca-only": "boolean",
|
|
33620
|
+
"tls-no-verify": "boolean",
|
|
33621
|
+
"tls-max-version": "value",
|
|
33622
|
+
"insecure-plaintext": "boolean",
|
|
33623
|
+
anonymous: "boolean",
|
|
33624
|
+
profile: "value",
|
|
33625
|
+
auth: "value",
|
|
33626
|
+
"gssapi-service": "value",
|
|
33627
|
+
"gssapi-protection": "value",
|
|
33628
|
+
nested: "boolean",
|
|
33629
|
+
"max-rows": "value",
|
|
33630
|
+
"page-size": "value",
|
|
33631
|
+
fields: "value"
|
|
33789
33632
|
},
|
|
33790
|
-
positionalInput:
|
|
33633
|
+
positionalInput: true
|
|
33791
33634
|
},
|
|
33792
33635
|
{
|
|
33793
|
-
command: "
|
|
33636
|
+
command: "computer list",
|
|
33794
33637
|
flags: {
|
|
33795
33638
|
help: "boolean",
|
|
33639
|
+
config: "value",
|
|
33640
|
+
url: "value",
|
|
33641
|
+
base: "value",
|
|
33642
|
+
"start-tls": "boolean",
|
|
33643
|
+
"ca-file": "value",
|
|
33644
|
+
"ca-only": "boolean",
|
|
33645
|
+
"tls-no-verify": "boolean",
|
|
33646
|
+
"tls-max-version": "value",
|
|
33647
|
+
"insecure-plaintext": "boolean",
|
|
33648
|
+
anonymous: "boolean",
|
|
33796
33649
|
profile: "value",
|
|
33797
|
-
|
|
33650
|
+
auth: "value",
|
|
33651
|
+
"gssapi-service": "value",
|
|
33652
|
+
"gssapi-protection": "value",
|
|
33653
|
+
all: "boolean",
|
|
33654
|
+
name: "value",
|
|
33655
|
+
sam: "value",
|
|
33656
|
+
filter: "value",
|
|
33657
|
+
scope: "value",
|
|
33658
|
+
"max-rows": "value",
|
|
33659
|
+
"page-size": "value",
|
|
33660
|
+
limit: "value",
|
|
33661
|
+
fields: "value",
|
|
33662
|
+
attributes: "value"
|
|
33798
33663
|
},
|
|
33799
33664
|
positionalInput: false
|
|
33800
33665
|
},
|
|
33801
33666
|
{
|
|
33802
|
-
command: "
|
|
33667
|
+
command: "computer show",
|
|
33803
33668
|
flags: {
|
|
33804
33669
|
help: "boolean",
|
|
33670
|
+
config: "value",
|
|
33671
|
+
url: "value",
|
|
33672
|
+
base: "value",
|
|
33673
|
+
"start-tls": "boolean",
|
|
33674
|
+
"ca-file": "value",
|
|
33675
|
+
"ca-only": "boolean",
|
|
33676
|
+
"tls-no-verify": "boolean",
|
|
33677
|
+
"tls-max-version": "value",
|
|
33678
|
+
"insecure-plaintext": "boolean",
|
|
33679
|
+
anonymous: "boolean",
|
|
33805
33680
|
profile: "value",
|
|
33806
|
-
|
|
33681
|
+
auth: "value",
|
|
33682
|
+
"gssapi-service": "value",
|
|
33683
|
+
"gssapi-protection": "value",
|
|
33684
|
+
fields: "value",
|
|
33685
|
+
attributes: "value"
|
|
33807
33686
|
},
|
|
33808
|
-
positionalInput:
|
|
33687
|
+
positionalInput: true
|
|
33809
33688
|
}
|
|
33810
33689
|
]
|
|
33811
33690
|
};
|
|
@@ -34880,8 +34759,8 @@ var ado_axi_default = {
|
|
|
34880
34759
|
var awx_axi_default = {
|
|
34881
34760
|
generatedBy: "scripts/awx-inventory.mjs",
|
|
34882
34761
|
tool: "awx-axi",
|
|
34883
|
-
version: "0.1.
|
|
34884
|
-
integrity: "sha512-
|
|
34762
|
+
version: "0.1.8",
|
|
34763
|
+
integrity: "sha512-tkheZgSTjs6nZT3KWo0e/+SH43ZacfvZpo7COktmpIs8lNr8VLhUtrGARz+mvwj8pov4zscdfmxAHL/8V025Bw==",
|
|
34885
34764
|
parserEvidence: "Published domain registry, reviewed plan effects and transport safety gates",
|
|
34886
34765
|
sources: [
|
|
34887
34766
|
{
|
|
@@ -34894,7 +34773,7 @@ var awx_axi_default = {
|
|
|
34894
34773
|
},
|
|
34895
34774
|
{
|
|
34896
34775
|
path: "dist/commands/auth.js",
|
|
34897
|
-
sha256: "
|
|
34776
|
+
sha256: "cf8e52f33d6acb5091d009c23df4957da3d208d4e9417bdcbba547f4d7c8b690"
|
|
34898
34777
|
},
|
|
34899
34778
|
{
|
|
34900
34779
|
path: "dist/commands/home.js",
|
|
@@ -34918,7 +34797,7 @@ var awx_axi_default = {
|
|
|
34918
34797
|
},
|
|
34919
34798
|
{
|
|
34920
34799
|
path: "dist/core/flags.js",
|
|
34921
|
-
sha256: "
|
|
34800
|
+
sha256: "60d5c58ab68c3cc61e57c249b93db544d619469c6fbd1e3082ee573ed1b50498"
|
|
34922
34801
|
},
|
|
34923
34802
|
{
|
|
34924
34803
|
path: "dist/core/mutations.js",
|
|
@@ -34926,11 +34805,11 @@ var awx_axi_default = {
|
|
|
34926
34805
|
},
|
|
34927
34806
|
{
|
|
34928
34807
|
path: "dist/core/output.js",
|
|
34929
|
-
sha256: "
|
|
34808
|
+
sha256: "7406df524ee329a3e2eb1f2b37295d8699de678e687525c8d55a3ce67d78dd0a"
|
|
34930
34809
|
},
|
|
34931
34810
|
{
|
|
34932
34811
|
path: "dist/core/paginate.js",
|
|
34933
|
-
sha256: "
|
|
34812
|
+
sha256: "d952bc390a4ac2da263b1d98c24f05e416652335904de37b26379576632059a3"
|
|
34934
34813
|
},
|
|
34935
34814
|
{
|
|
34936
34815
|
path: "dist/core/poll.js",
|
|
@@ -34938,19 +34817,19 @@ var awx_axi_default = {
|
|
|
34938
34817
|
},
|
|
34939
34818
|
{
|
|
34940
34819
|
path: "dist/core/private-file.js",
|
|
34941
|
-
sha256: "
|
|
34820
|
+
sha256: "30f44672d91f74b232ae6f7884b7daee6bd12ce6702ca57b3213a8a5da4bf992"
|
|
34942
34821
|
},
|
|
34943
34822
|
{
|
|
34944
34823
|
path: "dist/core/profiles.js",
|
|
34945
|
-
sha256: "
|
|
34824
|
+
sha256: "c3ac1d2a531115d253ed83020d88e3763108249a4a03ca710da40833db05bc7d"
|
|
34946
34825
|
},
|
|
34947
34826
|
{
|
|
34948
34827
|
path: "dist/core/redact.js",
|
|
34949
|
-
sha256: "
|
|
34828
|
+
sha256: "4fa205b30a3165738578c01ecfa5787bb6993ee11b07dbcb74b6401d4441679f"
|
|
34950
34829
|
},
|
|
34951
34830
|
{
|
|
34952
34831
|
path: "dist/core/registry.js",
|
|
34953
|
-
sha256: "
|
|
34832
|
+
sha256: "89d3983928dd3a63712e9c78a4959c2e9c950097a3d200f6d1ccf2c3327bbdfd"
|
|
34954
34833
|
},
|
|
34955
34834
|
{
|
|
34956
34835
|
path: "dist/core/resolve.js",
|
|
@@ -34966,95 +34845,95 @@ var awx_axi_default = {
|
|
|
34966
34845
|
},
|
|
34967
34846
|
{
|
|
34968
34847
|
path: "dist/domains/activity-stream/index.js",
|
|
34969
|
-
sha256: "
|
|
34848
|
+
sha256: "633995f66b7e24cb4c6d98341e943a7e8d61b3b271503cb1b191b161b3fb927f"
|
|
34970
34849
|
},
|
|
34971
34850
|
{
|
|
34972
34851
|
path: "dist/domains/ad-hoc/index.js",
|
|
34973
|
-
sha256: "
|
|
34852
|
+
sha256: "92f5395f74f449bb6fde43276764dfe965eaa8afb491a8f5e13323dc9a366084"
|
|
34974
34853
|
},
|
|
34975
34854
|
{
|
|
34976
34855
|
path: "dist/domains/approval/index.js",
|
|
34977
|
-
sha256: "
|
|
34856
|
+
sha256: "741282a1143b776ba0850cd8cc0ec3da913e1d354cc08f671b51cdea58621b1b"
|
|
34978
34857
|
},
|
|
34979
34858
|
{
|
|
34980
34859
|
path: "dist/domains/credential/index.js",
|
|
34981
|
-
sha256: "
|
|
34860
|
+
sha256: "00e5171e9b653f8266722cc53302748bbd54c874c07e60e2967f95797c7bcf05"
|
|
34982
34861
|
},
|
|
34983
34862
|
{
|
|
34984
34863
|
path: "dist/domains/execution-environment/index.js",
|
|
34985
|
-
sha256: "
|
|
34864
|
+
sha256: "0038065d8d51b9fe370e8e517ddcebfdb8ccf0b3ee512a89147eea413e918685"
|
|
34986
34865
|
},
|
|
34987
34866
|
{
|
|
34988
34867
|
path: "dist/domains/group/index.js",
|
|
34989
|
-
sha256: "
|
|
34868
|
+
sha256: "7fdd83edd141372fcc5486ba07968137f913ac9a73147aa748127b523c4cc785"
|
|
34990
34869
|
},
|
|
34991
34870
|
{
|
|
34992
34871
|
path: "dist/domains/host/index.js",
|
|
34993
|
-
sha256: "
|
|
34872
|
+
sha256: "478ff268a6a6a8452aa206be7671e402782fbfde8504808d9cc4fe10205b6707"
|
|
34994
34873
|
},
|
|
34995
34874
|
{
|
|
34996
34875
|
path: "dist/domains/inventory-source/index.js",
|
|
34997
|
-
sha256: "
|
|
34876
|
+
sha256: "56d8f203514f688eb734c29c2db45930dcddb96bdb82424bf8cc835c493cb279"
|
|
34998
34877
|
},
|
|
34999
34878
|
{
|
|
35000
34879
|
path: "dist/domains/inventory/index.js",
|
|
35001
|
-
sha256: "
|
|
34880
|
+
sha256: "0352fc474d38aed258ab069a6a80da83d3acf00c9cccd37c3d26b16e8b6d8e2d"
|
|
35002
34881
|
},
|
|
35003
34882
|
{
|
|
35004
34883
|
path: "dist/domains/job/index.js",
|
|
35005
|
-
sha256: "
|
|
34884
|
+
sha256: "db22aa5cd3c15da799d7aaea4430c9a6aa5e04e7f5fa1a5cacb340799f34f38c"
|
|
35006
34885
|
},
|
|
35007
34886
|
{
|
|
35008
34887
|
path: "dist/domains/notification-template/index.js",
|
|
35009
|
-
sha256: "
|
|
34888
|
+
sha256: "c3ddb6e7abcdc57583bc1ada57f30302f63b01a559381c2be196b7ee3bbfdc9b"
|
|
35010
34889
|
},
|
|
35011
34890
|
{
|
|
35012
34891
|
path: "dist/domains/notification/index.js",
|
|
35013
|
-
sha256: "
|
|
34892
|
+
sha256: "d9c46319aabe8187e3417710c3ebeda5650b55463f84fa9baa3d6fe91edc1ced"
|
|
35014
34893
|
},
|
|
35015
34894
|
{
|
|
35016
34895
|
path: "dist/domains/organization/index.js",
|
|
35017
|
-
sha256: "
|
|
34896
|
+
sha256: "65072b9afb1706b67b1f7c37c9d96bf12104d8ec56a214f06a512e6283fb0229"
|
|
35018
34897
|
},
|
|
35019
34898
|
{
|
|
35020
34899
|
path: "dist/domains/project/index.js",
|
|
35021
|
-
sha256: "
|
|
34900
|
+
sha256: "eafb98f7148e2a5e8c194af16ebbaa7569ddf74344e367531ba9f6946a39ef46"
|
|
35022
34901
|
},
|
|
35023
34902
|
{
|
|
35024
34903
|
path: "dist/domains/role/index.js",
|
|
35025
|
-
sha256: "
|
|
34904
|
+
sha256: "0e5ee47acb703d2f202f01450eb87330140b97c430440eff31c4f33bab28a647"
|
|
35026
34905
|
},
|
|
35027
34906
|
{
|
|
35028
34907
|
path: "dist/domains/schedule/index.js",
|
|
35029
|
-
sha256: "
|
|
34908
|
+
sha256: "d3267a27432a6911027a2d5dc04177eb46db703ea012cc6d1cfe33c19be49694"
|
|
35030
34909
|
},
|
|
35031
34910
|
{
|
|
35032
34911
|
path: "dist/domains/system-job-template/index.js",
|
|
35033
|
-
sha256: "
|
|
34912
|
+
sha256: "8f485966f9f290399dfaf2eedf21b4182d2dd712bb6833e1df377eabb53ebb04"
|
|
35034
34913
|
},
|
|
35035
34914
|
{
|
|
35036
34915
|
path: "dist/domains/system-job/index.js",
|
|
35037
|
-
sha256: "
|
|
34916
|
+
sha256: "25bae07068cd93cf705c2bebcd8a4f6e5f6071c6b41951edb62527630e2c678f"
|
|
35038
34917
|
},
|
|
35039
34918
|
{
|
|
35040
34919
|
path: "dist/domains/team/index.js",
|
|
35041
|
-
sha256: "
|
|
34920
|
+
sha256: "eb3a4b5cff91f8ef1b07b64a934a3b9d9bc025cf2eb476f6aafa92086b9c07b6"
|
|
35042
34921
|
},
|
|
35043
34922
|
{
|
|
35044
34923
|
path: "dist/domains/template/index.js",
|
|
35045
|
-
sha256: "
|
|
34924
|
+
sha256: "92dd83d5adbba8b572b2bcec6090630a34d572b4a1346906dafdc8499d6f7941"
|
|
35046
34925
|
},
|
|
35047
34926
|
{
|
|
35048
34927
|
path: "dist/domains/user/index.js",
|
|
35049
|
-
sha256: "
|
|
34928
|
+
sha256: "dc2de36112a32b61f34d631f642a134b317255a5f5a1c1f2da6f3cf6d09e7cf3"
|
|
35050
34929
|
},
|
|
35051
34930
|
{
|
|
35052
34931
|
path: "dist/domains/workflow/index.js",
|
|
35053
|
-
sha256: "
|
|
34932
|
+
sha256: "811a3b1df2bfa7a2f76f6fb1c3464de91ed2b7c171788bc82ae4cd991ce4c52a"
|
|
35054
34933
|
},
|
|
35055
34934
|
{
|
|
35056
34935
|
path: "dist/skill.js",
|
|
35057
|
-
sha256: "
|
|
34936
|
+
sha256: "c7280e3093b0f547c577d54dc1f861cac4ce13ec70afabf7a3d1d55e3dbd6247"
|
|
35058
34937
|
}
|
|
35059
34938
|
],
|
|
35060
34939
|
credentialSchema: {
|
|
@@ -35146,7 +35025,7 @@ var awx_axi_default = {
|
|
|
35146
35025
|
}
|
|
35147
35026
|
}
|
|
35148
35027
|
},
|
|
35149
|
-
skillSha256: "
|
|
35028
|
+
skillSha256: "71f03eed887e2a5189b1b08b692fc5fd7a4acfd274102bd925c27d1dd16177ce",
|
|
35150
35029
|
adapterBoundary: {
|
|
35151
35030
|
unsafeOverrides: [
|
|
35152
35031
|
"config",
|
|
@@ -35219,7 +35098,9 @@ var awx_axi_default = {
|
|
|
35219
35098
|
template: "value",
|
|
35220
35099
|
failed: "boolean",
|
|
35221
35100
|
since: "value",
|
|
35222
|
-
limit: "value"
|
|
35101
|
+
limit: "value",
|
|
35102
|
+
all: "boolean",
|
|
35103
|
+
"max-rows": "value"
|
|
35223
35104
|
},
|
|
35224
35105
|
positionals: {
|
|
35225
35106
|
names: [],
|
|
@@ -35264,7 +35145,9 @@ var awx_axi_default = {
|
|
|
35264
35145
|
failed: "boolean",
|
|
35265
35146
|
host: "value",
|
|
35266
35147
|
task: "value",
|
|
35267
|
-
limit: "value"
|
|
35148
|
+
limit: "value",
|
|
35149
|
+
all: "boolean",
|
|
35150
|
+
"max-rows": "value"
|
|
35268
35151
|
},
|
|
35269
35152
|
positionals: {
|
|
35270
35153
|
names: [
|
|
@@ -35277,7 +35160,10 @@ var awx_axi_default = {
|
|
|
35277
35160
|
command: "job hosts",
|
|
35278
35161
|
effect: "read",
|
|
35279
35162
|
flags: {
|
|
35280
|
-
help: "boolean"
|
|
35163
|
+
help: "boolean",
|
|
35164
|
+
limit: "value",
|
|
35165
|
+
all: "boolean",
|
|
35166
|
+
"max-rows": "value"
|
|
35281
35167
|
},
|
|
35282
35168
|
positionals: {
|
|
35283
35169
|
names: [
|
|
@@ -35367,7 +35253,9 @@ var awx_axi_default = {
|
|
|
35367
35253
|
effect: "read",
|
|
35368
35254
|
flags: {
|
|
35369
35255
|
help: "boolean",
|
|
35370
|
-
limit: "value"
|
|
35256
|
+
limit: "value",
|
|
35257
|
+
all: "boolean",
|
|
35258
|
+
"max-rows": "value"
|
|
35371
35259
|
},
|
|
35372
35260
|
positionals: {
|
|
35373
35261
|
names: [
|
|
@@ -35594,7 +35482,9 @@ var awx_axi_default = {
|
|
|
35594
35482
|
help: "boolean",
|
|
35595
35483
|
project: "value",
|
|
35596
35484
|
search: "value",
|
|
35597
|
-
limit: "value"
|
|
35485
|
+
limit: "value",
|
|
35486
|
+
all: "boolean",
|
|
35487
|
+
"max-rows": "value"
|
|
35598
35488
|
},
|
|
35599
35489
|
positionals: {
|
|
35600
35490
|
names: [],
|
|
@@ -35659,7 +35549,9 @@ var awx_axi_default = {
|
|
|
35659
35549
|
effect: "read",
|
|
35660
35550
|
flags: {
|
|
35661
35551
|
help: "boolean",
|
|
35662
|
-
limit: "value"
|
|
35552
|
+
limit: "value",
|
|
35553
|
+
all: "boolean",
|
|
35554
|
+
"max-rows": "value"
|
|
35663
35555
|
},
|
|
35664
35556
|
positionals: {
|
|
35665
35557
|
names: [
|
|
@@ -36020,7 +35912,9 @@ var awx_axi_default = {
|
|
|
36020
35912
|
flags: {
|
|
36021
35913
|
help: "boolean",
|
|
36022
35914
|
search: "value",
|
|
36023
|
-
limit: "value"
|
|
35915
|
+
limit: "value",
|
|
35916
|
+
all: "boolean",
|
|
35917
|
+
"max-rows": "value"
|
|
36024
35918
|
},
|
|
36025
35919
|
positionals: {
|
|
36026
35920
|
names: [],
|
|
@@ -36077,7 +35971,10 @@ var awx_axi_default = {
|
|
|
36077
35971
|
command: "workflow nodes",
|
|
36078
35972
|
effect: "read",
|
|
36079
35973
|
flags: {
|
|
36080
|
-
help: "boolean"
|
|
35974
|
+
help: "boolean",
|
|
35975
|
+
limit: "value",
|
|
35976
|
+
all: "boolean",
|
|
35977
|
+
"max-rows": "value"
|
|
36081
35978
|
},
|
|
36082
35979
|
positionals: {
|
|
36083
35980
|
names: [
|
|
@@ -36091,7 +35988,9 @@ var awx_axi_default = {
|
|
|
36091
35988
|
effect: "read",
|
|
36092
35989
|
flags: {
|
|
36093
35990
|
help: "boolean",
|
|
36094
|
-
limit: "value"
|
|
35991
|
+
limit: "value",
|
|
35992
|
+
all: "boolean",
|
|
35993
|
+
"max-rows": "value"
|
|
36095
35994
|
},
|
|
36096
35995
|
positionals: {
|
|
36097
35996
|
names: [
|
|
@@ -36104,8 +36003,7 @@ var awx_axi_default = {
|
|
|
36104
36003
|
command: "workflow template-node",
|
|
36105
36004
|
effect: "read",
|
|
36106
36005
|
flags: {
|
|
36107
|
-
help: "boolean"
|
|
36108
|
-
limit: "value"
|
|
36006
|
+
help: "boolean"
|
|
36109
36007
|
},
|
|
36110
36008
|
positionals: {
|
|
36111
36009
|
names: [
|
|
@@ -36431,7 +36329,9 @@ var awx_axi_default = {
|
|
|
36431
36329
|
flags: {
|
|
36432
36330
|
help: "boolean",
|
|
36433
36331
|
search: "value",
|
|
36434
|
-
limit: "value"
|
|
36332
|
+
limit: "value",
|
|
36333
|
+
all: "boolean",
|
|
36334
|
+
"max-rows": "value"
|
|
36435
36335
|
},
|
|
36436
36336
|
positionals: {
|
|
36437
36337
|
names: [],
|
|
@@ -36473,7 +36373,9 @@ var awx_axi_default = {
|
|
|
36473
36373
|
flags: {
|
|
36474
36374
|
help: "boolean",
|
|
36475
36375
|
search: "value",
|
|
36476
|
-
limit: "value"
|
|
36376
|
+
limit: "value",
|
|
36377
|
+
all: "boolean",
|
|
36378
|
+
"max-rows": "value"
|
|
36477
36379
|
},
|
|
36478
36380
|
positionals: {
|
|
36479
36381
|
names: [],
|
|
@@ -36516,7 +36418,9 @@ var awx_axi_default = {
|
|
|
36516
36418
|
search: "value",
|
|
36517
36419
|
template: "value",
|
|
36518
36420
|
status: "value",
|
|
36519
|
-
limit: "value"
|
|
36421
|
+
limit: "value",
|
|
36422
|
+
all: "boolean",
|
|
36423
|
+
"max-rows": "value"
|
|
36520
36424
|
},
|
|
36521
36425
|
positionals: {
|
|
36522
36426
|
names: [],
|
|
@@ -36544,7 +36448,9 @@ var awx_axi_default = {
|
|
|
36544
36448
|
failed: "boolean",
|
|
36545
36449
|
host: "value",
|
|
36546
36450
|
task: "value",
|
|
36547
|
-
limit: "value"
|
|
36451
|
+
limit: "value",
|
|
36452
|
+
all: "boolean",
|
|
36453
|
+
"max-rows": "value"
|
|
36548
36454
|
},
|
|
36549
36455
|
positionals: {
|
|
36550
36456
|
names: [
|
|
@@ -36558,7 +36464,9 @@ var awx_axi_default = {
|
|
|
36558
36464
|
effect: "read",
|
|
36559
36465
|
flags: {
|
|
36560
36466
|
help: "boolean",
|
|
36561
|
-
limit: "value"
|
|
36467
|
+
limit: "value",
|
|
36468
|
+
all: "boolean",
|
|
36469
|
+
"max-rows": "value"
|
|
36562
36470
|
},
|
|
36563
36471
|
positionals: {
|
|
36564
36472
|
names: [
|
|
@@ -36572,7 +36480,9 @@ var awx_axi_default = {
|
|
|
36572
36480
|
effect: "read",
|
|
36573
36481
|
flags: {
|
|
36574
36482
|
help: "boolean",
|
|
36575
|
-
limit: "value"
|
|
36483
|
+
limit: "value",
|
|
36484
|
+
all: "boolean",
|
|
36485
|
+
"max-rows": "value"
|
|
36576
36486
|
},
|
|
36577
36487
|
positionals: {
|
|
36578
36488
|
names: [
|
|
@@ -36659,7 +36569,9 @@ var awx_axi_default = {
|
|
|
36659
36569
|
help: "boolean",
|
|
36660
36570
|
search: "value",
|
|
36661
36571
|
organization: "value",
|
|
36662
|
-
limit: "value"
|
|
36572
|
+
limit: "value",
|
|
36573
|
+
all: "boolean",
|
|
36574
|
+
"max-rows": "value"
|
|
36663
36575
|
},
|
|
36664
36576
|
positionals: {
|
|
36665
36577
|
names: [],
|
|
@@ -36685,7 +36597,9 @@ var awx_axi_default = {
|
|
|
36685
36597
|
flags: {
|
|
36686
36598
|
help: "boolean",
|
|
36687
36599
|
"include-decided": "boolean",
|
|
36688
|
-
limit: "value"
|
|
36600
|
+
limit: "value",
|
|
36601
|
+
all: "boolean",
|
|
36602
|
+
"max-rows": "value"
|
|
36689
36603
|
},
|
|
36690
36604
|
positionals: {
|
|
36691
36605
|
names: [],
|
|
@@ -36767,7 +36681,9 @@ var awx_axi_default = {
|
|
|
36767
36681
|
flags: {
|
|
36768
36682
|
help: "boolean",
|
|
36769
36683
|
search: "value",
|
|
36770
|
-
limit: "value"
|
|
36684
|
+
limit: "value",
|
|
36685
|
+
all: "boolean",
|
|
36686
|
+
"max-rows": "value"
|
|
36771
36687
|
},
|
|
36772
36688
|
positionals: {
|
|
36773
36689
|
names: [],
|
|
@@ -36794,7 +36710,9 @@ var awx_axi_default = {
|
|
|
36794
36710
|
help: "boolean",
|
|
36795
36711
|
host: "value",
|
|
36796
36712
|
task: "value",
|
|
36797
|
-
limit: "value"
|
|
36713
|
+
limit: "value",
|
|
36714
|
+
all: "boolean",
|
|
36715
|
+
"max-rows": "value"
|
|
36798
36716
|
},
|
|
36799
36717
|
positionals: {
|
|
36800
36718
|
names: [
|
|
@@ -36933,7 +36851,9 @@ var awx_axi_default = {
|
|
|
36933
36851
|
flags: {
|
|
36934
36852
|
help: "boolean",
|
|
36935
36853
|
search: "value",
|
|
36936
|
-
limit: "value"
|
|
36854
|
+
limit: "value",
|
|
36855
|
+
all: "boolean",
|
|
36856
|
+
"max-rows": "value"
|
|
36937
36857
|
},
|
|
36938
36858
|
positionals: {
|
|
36939
36859
|
names: [],
|
|
@@ -36971,7 +36891,9 @@ var awx_axi_default = {
|
|
|
36971
36891
|
effect: "read",
|
|
36972
36892
|
flags: {
|
|
36973
36893
|
help: "boolean",
|
|
36974
|
-
limit: "value"
|
|
36894
|
+
limit: "value",
|
|
36895
|
+
all: "boolean",
|
|
36896
|
+
"max-rows": "value"
|
|
36975
36897
|
},
|
|
36976
36898
|
positionals: {
|
|
36977
36899
|
names: [
|
|
@@ -36984,7 +36906,10 @@ var awx_axi_default = {
|
|
|
36984
36906
|
command: "project roles",
|
|
36985
36907
|
effect: "read",
|
|
36986
36908
|
flags: {
|
|
36987
|
-
help: "boolean"
|
|
36909
|
+
help: "boolean",
|
|
36910
|
+
limit: "value",
|
|
36911
|
+
all: "boolean",
|
|
36912
|
+
"max-rows": "value"
|
|
36988
36913
|
},
|
|
36989
36914
|
positionals: {
|
|
36990
36915
|
names: [
|
|
@@ -37416,7 +37341,9 @@ var awx_axi_default = {
|
|
|
37416
37341
|
flags: {
|
|
37417
37342
|
help: "boolean",
|
|
37418
37343
|
search: "value",
|
|
37419
|
-
limit: "value"
|
|
37344
|
+
limit: "value",
|
|
37345
|
+
all: "boolean",
|
|
37346
|
+
"max-rows": "value"
|
|
37420
37347
|
},
|
|
37421
37348
|
positionals: {
|
|
37422
37349
|
names: [],
|
|
@@ -37442,7 +37369,9 @@ var awx_axi_default = {
|
|
|
37442
37369
|
flags: {
|
|
37443
37370
|
help: "boolean",
|
|
37444
37371
|
search: "value",
|
|
37445
|
-
limit: "value"
|
|
37372
|
+
limit: "value",
|
|
37373
|
+
all: "boolean",
|
|
37374
|
+
"max-rows": "value"
|
|
37446
37375
|
},
|
|
37447
37376
|
positionals: {
|
|
37448
37377
|
names: [
|
|
@@ -37458,6 +37387,8 @@ var awx_axi_default = {
|
|
|
37458
37387
|
help: "boolean",
|
|
37459
37388
|
search: "value",
|
|
37460
37389
|
limit: "value",
|
|
37390
|
+
all: "boolean",
|
|
37391
|
+
"max-rows": "value",
|
|
37461
37392
|
facts: "boolean"
|
|
37462
37393
|
},
|
|
37463
37394
|
positionals: {
|
|
@@ -37473,7 +37404,9 @@ var awx_axi_default = {
|
|
|
37473
37404
|
flags: {
|
|
37474
37405
|
help: "boolean",
|
|
37475
37406
|
search: "value",
|
|
37476
|
-
limit: "value"
|
|
37407
|
+
limit: "value",
|
|
37408
|
+
all: "boolean",
|
|
37409
|
+
"max-rows": "value"
|
|
37477
37410
|
},
|
|
37478
37411
|
positionals: {
|
|
37479
37412
|
names: [
|
|
@@ -37504,7 +37437,9 @@ var awx_axi_default = {
|
|
|
37504
37437
|
flags: {
|
|
37505
37438
|
help: "boolean",
|
|
37506
37439
|
search: "value",
|
|
37507
|
-
limit: "value"
|
|
37440
|
+
limit: "value",
|
|
37441
|
+
all: "boolean",
|
|
37442
|
+
"max-rows": "value"
|
|
37508
37443
|
},
|
|
37509
37444
|
positionals: {
|
|
37510
37445
|
names: [],
|
|
@@ -37532,7 +37467,9 @@ var awx_axi_default = {
|
|
|
37532
37467
|
search: "value",
|
|
37533
37468
|
name: "value",
|
|
37534
37469
|
inventory: "value",
|
|
37535
|
-
limit: "value"
|
|
37470
|
+
limit: "value",
|
|
37471
|
+
all: "boolean",
|
|
37472
|
+
"max-rows": "value"
|
|
37536
37473
|
},
|
|
37537
37474
|
positionals: {
|
|
37538
37475
|
names: [],
|
|
@@ -37560,7 +37497,9 @@ var awx_axi_default = {
|
|
|
37560
37497
|
search: "value",
|
|
37561
37498
|
name: "value",
|
|
37562
37499
|
inventory: "value",
|
|
37563
|
-
limit: "value"
|
|
37500
|
+
limit: "value",
|
|
37501
|
+
all: "boolean",
|
|
37502
|
+
"max-rows": "value"
|
|
37564
37503
|
},
|
|
37565
37504
|
positionals: {
|
|
37566
37505
|
names: [],
|
|
@@ -37590,7 +37529,9 @@ var awx_axi_default = {
|
|
|
37590
37529
|
inventory: "value",
|
|
37591
37530
|
source: "value",
|
|
37592
37531
|
status: "value",
|
|
37593
|
-
limit: "value"
|
|
37532
|
+
limit: "value",
|
|
37533
|
+
all: "boolean",
|
|
37534
|
+
"max-rows": "value"
|
|
37594
37535
|
},
|
|
37595
37536
|
positionals: {
|
|
37596
37537
|
names: [],
|
|
@@ -37782,7 +37723,9 @@ var awx_axi_default = {
|
|
|
37782
37723
|
template: "value",
|
|
37783
37724
|
enabled: "boolean",
|
|
37784
37725
|
disabled: "boolean",
|
|
37785
|
-
limit: "value"
|
|
37726
|
+
limit: "value",
|
|
37727
|
+
all: "boolean",
|
|
37728
|
+
"max-rows": "value"
|
|
37786
37729
|
},
|
|
37787
37730
|
positionals: {
|
|
37788
37731
|
names: [],
|
|
@@ -37883,7 +37826,9 @@ var awx_axi_default = {
|
|
|
37883
37826
|
search: "value",
|
|
37884
37827
|
organization: "value",
|
|
37885
37828
|
type: "value",
|
|
37886
|
-
limit: "value"
|
|
37829
|
+
limit: "value",
|
|
37830
|
+
all: "boolean",
|
|
37831
|
+
"max-rows": "value"
|
|
37887
37832
|
},
|
|
37888
37833
|
positionals: {
|
|
37889
37834
|
names: [],
|
|
@@ -38001,7 +37946,9 @@ var awx_axi_default = {
|
|
|
38001
37946
|
flags: {
|
|
38002
37947
|
help: "boolean",
|
|
38003
37948
|
search: "value",
|
|
38004
|
-
limit: "value"
|
|
37949
|
+
limit: "value",
|
|
37950
|
+
all: "boolean",
|
|
37951
|
+
"max-rows": "value"
|
|
38005
37952
|
},
|
|
38006
37953
|
positionals: {
|
|
38007
37954
|
names: [],
|
|
@@ -38035,7 +37982,9 @@ var awx_axi_default = {
|
|
|
38035
37982
|
"inventory-update": "value",
|
|
38036
37983
|
"ad-hoc": "value",
|
|
38037
37984
|
"system-job": "value",
|
|
38038
|
-
limit: "value"
|
|
37985
|
+
limit: "value",
|
|
37986
|
+
all: "boolean",
|
|
37987
|
+
"max-rows": "value"
|
|
38039
37988
|
},
|
|
38040
37989
|
positionals: {
|
|
38041
37990
|
names: [],
|
|
@@ -38153,7 +38102,9 @@ var awx_axi_default = {
|
|
|
38153
38102
|
search: "value",
|
|
38154
38103
|
type: "value",
|
|
38155
38104
|
organization: "value",
|
|
38156
|
-
limit: "value"
|
|
38105
|
+
limit: "value",
|
|
38106
|
+
all: "boolean",
|
|
38107
|
+
"max-rows": "value"
|
|
38157
38108
|
},
|
|
38158
38109
|
positionals: {
|
|
38159
38110
|
names: [],
|
|
@@ -38190,7 +38141,9 @@ var awx_axi_default = {
|
|
|
38190
38141
|
team: "value",
|
|
38191
38142
|
user: "value",
|
|
38192
38143
|
credential: "value",
|
|
38193
|
-
limit: "value"
|
|
38144
|
+
limit: "value",
|
|
38145
|
+
all: "boolean",
|
|
38146
|
+
"max-rows": "value"
|
|
38194
38147
|
},
|
|
38195
38148
|
positionals: {
|
|
38196
38149
|
names: [],
|
|
@@ -38318,7 +38271,9 @@ var awx_axi_default = {
|
|
|
38318
38271
|
help: "boolean",
|
|
38319
38272
|
search: "value",
|
|
38320
38273
|
organization: "value",
|
|
38321
|
-
limit: "value"
|
|
38274
|
+
limit: "value",
|
|
38275
|
+
all: "boolean",
|
|
38276
|
+
"max-rows": "value"
|
|
38322
38277
|
},
|
|
38323
38278
|
positionals: {
|
|
38324
38279
|
names: [],
|
|
@@ -38343,7 +38298,9 @@ var awx_axi_default = {
|
|
|
38343
38298
|
effect: "read",
|
|
38344
38299
|
flags: {
|
|
38345
38300
|
help: "boolean",
|
|
38346
|
-
limit: "value"
|
|
38301
|
+
limit: "value",
|
|
38302
|
+
all: "boolean",
|
|
38303
|
+
"max-rows": "value"
|
|
38347
38304
|
},
|
|
38348
38305
|
positionals: {
|
|
38349
38306
|
names: [
|
|
@@ -38357,7 +38314,9 @@ var awx_axi_default = {
|
|
|
38357
38314
|
effect: "read",
|
|
38358
38315
|
flags: {
|
|
38359
38316
|
help: "boolean",
|
|
38360
|
-
limit: "value"
|
|
38317
|
+
limit: "value",
|
|
38318
|
+
all: "boolean",
|
|
38319
|
+
"max-rows": "value"
|
|
38361
38320
|
},
|
|
38362
38321
|
positionals: {
|
|
38363
38322
|
names: [
|
|
@@ -38371,7 +38330,9 @@ var awx_axi_default = {
|
|
|
38371
38330
|
effect: "read",
|
|
38372
38331
|
flags: {
|
|
38373
38332
|
help: "boolean",
|
|
38374
|
-
limit: "value"
|
|
38333
|
+
limit: "value",
|
|
38334
|
+
all: "boolean",
|
|
38335
|
+
"max-rows": "value"
|
|
38375
38336
|
},
|
|
38376
38337
|
positionals: {
|
|
38377
38338
|
names: [
|
|
@@ -38385,7 +38346,9 @@ var awx_axi_default = {
|
|
|
38385
38346
|
effect: "read",
|
|
38386
38347
|
flags: {
|
|
38387
38348
|
help: "boolean",
|
|
38388
|
-
limit: "value"
|
|
38349
|
+
limit: "value",
|
|
38350
|
+
all: "boolean",
|
|
38351
|
+
"max-rows": "value"
|
|
38389
38352
|
},
|
|
38390
38353
|
positionals: {
|
|
38391
38354
|
names: [
|
|
@@ -38399,7 +38362,9 @@ var awx_axi_default = {
|
|
|
38399
38362
|
effect: "read",
|
|
38400
38363
|
flags: {
|
|
38401
38364
|
help: "boolean",
|
|
38402
|
-
limit: "value"
|
|
38365
|
+
limit: "value",
|
|
38366
|
+
all: "boolean",
|
|
38367
|
+
"max-rows": "value"
|
|
38403
38368
|
},
|
|
38404
38369
|
positionals: {
|
|
38405
38370
|
names: [
|
|
@@ -38413,7 +38378,9 @@ var awx_axi_default = {
|
|
|
38413
38378
|
effect: "read",
|
|
38414
38379
|
flags: {
|
|
38415
38380
|
help: "boolean",
|
|
38416
|
-
limit: "value"
|
|
38381
|
+
limit: "value",
|
|
38382
|
+
all: "boolean",
|
|
38383
|
+
"max-rows": "value"
|
|
38417
38384
|
},
|
|
38418
38385
|
positionals: {
|
|
38419
38386
|
names: [
|
|
@@ -38463,7 +38430,9 @@ var awx_axi_default = {
|
|
|
38463
38430
|
help: "boolean",
|
|
38464
38431
|
search: "value",
|
|
38465
38432
|
type: "value",
|
|
38466
|
-
limit: "value"
|
|
38433
|
+
limit: "value",
|
|
38434
|
+
all: "boolean",
|
|
38435
|
+
"max-rows": "value"
|
|
38467
38436
|
},
|
|
38468
38437
|
positionals: {
|
|
38469
38438
|
names: [],
|
|
@@ -38488,7 +38457,9 @@ var awx_axi_default = {
|
|
|
38488
38457
|
effect: "read",
|
|
38489
38458
|
flags: {
|
|
38490
38459
|
help: "boolean",
|
|
38491
|
-
limit: "value"
|
|
38460
|
+
limit: "value",
|
|
38461
|
+
all: "boolean",
|
|
38462
|
+
"max-rows": "value"
|
|
38492
38463
|
},
|
|
38493
38464
|
positionals: {
|
|
38494
38465
|
names: [
|
|
@@ -38502,7 +38473,9 @@ var awx_axi_default = {
|
|
|
38502
38473
|
effect: "read",
|
|
38503
38474
|
flags: {
|
|
38504
38475
|
help: "boolean",
|
|
38505
|
-
limit: "value"
|
|
38476
|
+
limit: "value",
|
|
38477
|
+
all: "boolean",
|
|
38478
|
+
"max-rows": "value"
|
|
38506
38479
|
},
|
|
38507
38480
|
positionals: {
|
|
38508
38481
|
names: [
|
|
@@ -38516,7 +38489,9 @@ var awx_axi_default = {
|
|
|
38516
38489
|
effect: "read",
|
|
38517
38490
|
flags: {
|
|
38518
38491
|
help: "boolean",
|
|
38519
|
-
limit: "value"
|
|
38492
|
+
limit: "value",
|
|
38493
|
+
all: "boolean",
|
|
38494
|
+
"max-rows": "value"
|
|
38520
38495
|
},
|
|
38521
38496
|
positionals: {
|
|
38522
38497
|
names: [
|
|
@@ -38530,7 +38505,9 @@ var awx_axi_default = {
|
|
|
38530
38505
|
effect: "read",
|
|
38531
38506
|
flags: {
|
|
38532
38507
|
help: "boolean",
|
|
38533
|
-
limit: "value"
|
|
38508
|
+
limit: "value",
|
|
38509
|
+
all: "boolean",
|
|
38510
|
+
"max-rows": "value"
|
|
38534
38511
|
},
|
|
38535
38512
|
positionals: {
|
|
38536
38513
|
names: [
|
|
@@ -38641,8 +38618,1210 @@ var awx_axi_default = {
|
|
|
38641
38618
|
]
|
|
38642
38619
|
};
|
|
38643
38620
|
|
|
38621
|
+
// tools/inventories/tenable-axi.json
|
|
38622
|
+
var tenable_axi_default = {
|
|
38623
|
+
generatedBy: "scripts/tenable-inventory.mjs",
|
|
38624
|
+
tool: "tenable-axi",
|
|
38625
|
+
version: "0.1.0",
|
|
38626
|
+
integrity: "sha512-nw1HLOmUZdeo/x1po1uOmFQhZsg0rP1eMGrcwLj+Pd2UkdwKodAQjDCjgBdl5DNLIqaafkUEV6mPMJmkFLQpzw==",
|
|
38627
|
+
parserEvidence: "Published command catalogue, mutation registry and reviewed native parsers and transport gates",
|
|
38628
|
+
sources: [
|
|
38629
|
+
{
|
|
38630
|
+
path: "dist/src/attack-catalogue.js",
|
|
38631
|
+
sha256: "022f9d46c0e0a76b62ed528b17552fccae9634208698e541146f8af2f6107316"
|
|
38632
|
+
},
|
|
38633
|
+
{
|
|
38634
|
+
path: "dist/src/attack-export-catalogue.js",
|
|
38635
|
+
sha256: "7127a33fdbb01db34886b2c91b36bdc174131819b5753c1201c56999389584ee"
|
|
38636
|
+
},
|
|
38637
|
+
{
|
|
38638
|
+
path: "dist/src/attack-export.js",
|
|
38639
|
+
sha256: "38adf6d13ab1afe4f8d0123803257c2f10a1c47b9a7f9b216ee9107ea30368c8"
|
|
38640
|
+
},
|
|
38641
|
+
{
|
|
38642
|
+
path: "dist/src/attack.js",
|
|
38643
|
+
sha256: "76905fe54d1038ffbaa6b4a82b4cb4fadb6473462d28679319a98ab7cdd08650"
|
|
38644
|
+
},
|
|
38645
|
+
{
|
|
38646
|
+
path: "dist/src/catalogue.js",
|
|
38647
|
+
sha256: "d05c8dfebce3219c2ee0a305888fa336e62db5fc3b3b4bc95a27c0588943587b"
|
|
38648
|
+
},
|
|
38649
|
+
{
|
|
38650
|
+
path: "dist/src/cli.js",
|
|
38651
|
+
sha256: "df6dfee98019af2da15ac7a3c4d1ea7b3860c73021cbf2f08ac52386a64f441c"
|
|
38652
|
+
},
|
|
38653
|
+
{
|
|
38654
|
+
path: "dist/src/export-file.js",
|
|
38655
|
+
sha256: "2eb4f73e2d9a3361283a62e887c6cf95de70d5d3f353441bcd4de738377d57df"
|
|
38656
|
+
},
|
|
38657
|
+
{
|
|
38658
|
+
path: "dist/src/exposure-contracts.js",
|
|
38659
|
+
sha256: "febe68635d243ce801607d76af753d21f2ff30712c0efe9c3a2805209cc4b915"
|
|
38660
|
+
},
|
|
38661
|
+
{
|
|
38662
|
+
path: "dist/src/exposure.js",
|
|
38663
|
+
sha256: "0278853a917eb583c721c69d10c5e466aed9d18c8d910f20991dcfe33faac738"
|
|
38664
|
+
},
|
|
38665
|
+
{
|
|
38666
|
+
path: "dist/src/hook-install.js",
|
|
38667
|
+
sha256: "74fce246ea8fd1ee83bc89f06ab71b3bbf10b2b6ebce0701d24c95eae7755668"
|
|
38668
|
+
},
|
|
38669
|
+
{
|
|
38670
|
+
path: "dist/src/inventory-catalogue.js",
|
|
38671
|
+
sha256: "2a4b4338917af9060b6859eaa2cfc94cc5ccb936bf96f744b51755d4d92d98a7"
|
|
38672
|
+
},
|
|
38673
|
+
{
|
|
38674
|
+
path: "dist/src/inventory-export-catalogue.js",
|
|
38675
|
+
sha256: "a85ef57098bdec74dccd587b7065ebb4c84b3902043fc87c8aedd878d74b375f"
|
|
38676
|
+
},
|
|
38677
|
+
{
|
|
38678
|
+
path: "dist/src/inventory-export.js",
|
|
38679
|
+
sha256: "5422b59008eecad8476d8c0ce5f287188a2f1ad4fcfe763450ac187423d7d0f2"
|
|
38680
|
+
},
|
|
38681
|
+
{
|
|
38682
|
+
path: "dist/src/inventory.js",
|
|
38683
|
+
sha256: "12ad8effb2728fea7791e5f62716d079484b377c56f8b9cdb83d500842258b7d"
|
|
38684
|
+
},
|
|
38685
|
+
{
|
|
38686
|
+
path: "dist/src/inventory/schema.js",
|
|
38687
|
+
sha256: "1dc7cf0f1fb0e07dcf79bcac7e41450e1394345fc4fcd410119ab639064926af"
|
|
38688
|
+
},
|
|
38689
|
+
{
|
|
38690
|
+
path: "dist/src/local-commands.js",
|
|
38691
|
+
sha256: "4bb2769049b72126c47857f850b3cd008a371f952c479e0b288d5279d7aaa77a"
|
|
38692
|
+
},
|
|
38693
|
+
{
|
|
38694
|
+
path: "dist/src/platform-tag-catalogue.js",
|
|
38695
|
+
sha256: "9c887c06dd1179a877696deae8873ffce5e3b3e001f2c61ae7968f883eafe314"
|
|
38696
|
+
},
|
|
38697
|
+
{
|
|
38698
|
+
path: "dist/src/platform-tag.js",
|
|
38699
|
+
sha256: "ff31eb9a454ba20d2e378403fd4cb29b097e8de4b8b241b3af13197598a66972"
|
|
38700
|
+
},
|
|
38701
|
+
{
|
|
38702
|
+
path: "dist/src/private-file.js",
|
|
38703
|
+
sha256: "a5f01182fe09394ecf508deb46d54c9fb0b39c9fd205094d155ace212bbd1c8b"
|
|
38704
|
+
},
|
|
38705
|
+
{
|
|
38706
|
+
path: "dist/src/profiles.js",
|
|
38707
|
+
sha256: "12defbf234e4da8584e1f6ba601eb3826733ff85c76445197b0162ac52299b4a"
|
|
38708
|
+
},
|
|
38709
|
+
{
|
|
38710
|
+
path: "dist/src/redact.js",
|
|
38711
|
+
sha256: "e88631746e63a7fc08f206b58ddf3754ecea6f0ec21011c37ded0114dfbb6830"
|
|
38712
|
+
},
|
|
38713
|
+
{
|
|
38714
|
+
path: "dist/src/response-catalogue.js",
|
|
38715
|
+
sha256: "6f0eb3f6ba860e59e7bfd764a0d3932b52101e4013acea4ee5aa63081a1f83db"
|
|
38716
|
+
},
|
|
38717
|
+
{
|
|
38718
|
+
path: "dist/src/response.js",
|
|
38719
|
+
sha256: "44277f2a0c28b3e6801c47578603270ed59c76aac5214c6428fd2dbf8a83f1d4"
|
|
38720
|
+
},
|
|
38721
|
+
{
|
|
38722
|
+
path: "dist/src/setup.js",
|
|
38723
|
+
sha256: "2e9c8430b4fbf0f95e0e31267ba828107fd054e9d525a5c970f7c9c2e20d5348"
|
|
38724
|
+
},
|
|
38725
|
+
{
|
|
38726
|
+
path: "dist/src/transport-core.js",
|
|
38727
|
+
sha256: "db13c1c33aa1716bc8a32e3ebc6459421c64f078ea4641f248e552c5b74a621d"
|
|
38728
|
+
},
|
|
38729
|
+
{
|
|
38730
|
+
path: "dist/src/transport.js",
|
|
38731
|
+
sha256: "c3639f96d71c80217da15fe7449b586ee797c94e9f4f6b3f22d0472613d28ee1"
|
|
38732
|
+
},
|
|
38733
|
+
{
|
|
38734
|
+
path: "dist/src/writes-core.js",
|
|
38735
|
+
sha256: "55a76961512751653c8d14778b6b74094318ba1527b50dedf2167127f1e7c1f9"
|
|
38736
|
+
},
|
|
38737
|
+
{
|
|
38738
|
+
path: "dist/src/writes.js",
|
|
38739
|
+
sha256: "43099c373b451991102515f0f583c9a7678edb89a5b6bc9ad7e261a1c1f4a5dd"
|
|
38740
|
+
}
|
|
38741
|
+
],
|
|
38742
|
+
credentialSchema: {
|
|
38743
|
+
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
38744
|
+
$id: "https://github.com/knowttl/tenable-axi/axi-credential.schema.json",
|
|
38745
|
+
title: "Tenable AXI credential profile",
|
|
38746
|
+
type: "object",
|
|
38747
|
+
additionalProperties: false,
|
|
38748
|
+
properties: {
|
|
38749
|
+
origin: {
|
|
38750
|
+
const: "https://cloud.tenable.com",
|
|
38751
|
+
default: "https://cloud.tenable.com"
|
|
38752
|
+
},
|
|
38753
|
+
accessKey: {
|
|
38754
|
+
$ref: "#/$defs/secretRef",
|
|
38755
|
+
"x-secret": true,
|
|
38756
|
+
default: {
|
|
38757
|
+
env: "TENABLE_AXI_ACCESS_KEY"
|
|
38758
|
+
}
|
|
38759
|
+
},
|
|
38760
|
+
secretKey: {
|
|
38761
|
+
$ref: "#/$defs/secretRef",
|
|
38762
|
+
"x-secret": true,
|
|
38763
|
+
default: {
|
|
38764
|
+
env: "TENABLE_AXI_SECRET_KEY"
|
|
38765
|
+
}
|
|
38766
|
+
},
|
|
38767
|
+
writes: {
|
|
38768
|
+
type: "object",
|
|
38769
|
+
additionalProperties: false,
|
|
38770
|
+
required: [
|
|
38771
|
+
"allowWrites",
|
|
38772
|
+
"operations"
|
|
38773
|
+
],
|
|
38774
|
+
default: {
|
|
38775
|
+
allowWrites: false,
|
|
38776
|
+
operations: []
|
|
38777
|
+
},
|
|
38778
|
+
properties: {
|
|
38779
|
+
allowWrites: {
|
|
38780
|
+
type: "boolean"
|
|
38781
|
+
},
|
|
38782
|
+
operations: {
|
|
38783
|
+
type: "array",
|
|
38784
|
+
items: {
|
|
38785
|
+
type: "string",
|
|
38786
|
+
pattern: "^[A-Za-z0-9][A-Za-z0-9_-]*$"
|
|
38787
|
+
}
|
|
38788
|
+
}
|
|
38789
|
+
}
|
|
38790
|
+
}
|
|
38791
|
+
},
|
|
38792
|
+
$defs: {
|
|
38793
|
+
secretRef: {
|
|
38794
|
+
oneOf: [
|
|
38795
|
+
{
|
|
38796
|
+
type: "object",
|
|
38797
|
+
additionalProperties: false,
|
|
38798
|
+
required: [
|
|
38799
|
+
"env"
|
|
38800
|
+
],
|
|
38801
|
+
properties: {
|
|
38802
|
+
env: {
|
|
38803
|
+
type: "string",
|
|
38804
|
+
pattern: "^[A-Za-z_][A-Za-z0-9_]*$"
|
|
38805
|
+
}
|
|
38806
|
+
}
|
|
38807
|
+
},
|
|
38808
|
+
{
|
|
38809
|
+
type: "object",
|
|
38810
|
+
additionalProperties: false,
|
|
38811
|
+
required: [
|
|
38812
|
+
"file"
|
|
38813
|
+
],
|
|
38814
|
+
properties: {
|
|
38815
|
+
file: {
|
|
38816
|
+
type: "string",
|
|
38817
|
+
pattern: "^(?:/|[A-Za-z]:[\\\\/])"
|
|
38818
|
+
}
|
|
38819
|
+
}
|
|
38820
|
+
}
|
|
38821
|
+
]
|
|
38822
|
+
}
|
|
38823
|
+
}
|
|
38824
|
+
},
|
|
38825
|
+
skillSha256: "ea35fe90d39fee3982f731ccc3c717c92aabd0799ff2371f6f3cc5e12d7aea9a",
|
|
38826
|
+
nativeWriteSettings: {
|
|
38827
|
+
supportedOperations: [
|
|
38828
|
+
"apa-export-attack-path",
|
|
38829
|
+
"apa-export-attack-technique",
|
|
38830
|
+
"apa-export-mitre-heatmap",
|
|
38831
|
+
"combinations-create",
|
|
38832
|
+
"combinations-delete",
|
|
38833
|
+
"combinations-update",
|
|
38834
|
+
"initiatives-create",
|
|
38835
|
+
"initiatives-delete",
|
|
38836
|
+
"initiatives-update",
|
|
38837
|
+
"inventory-export-assets",
|
|
38838
|
+
"inventory-export-findings",
|
|
38839
|
+
"tags-assign-asset-tags",
|
|
38840
|
+
"tags-create-tag-category",
|
|
38841
|
+
"tags-create-tag-value",
|
|
38842
|
+
"tags-delete-tag-category",
|
|
38843
|
+
"tags-delete-tag-value",
|
|
38844
|
+
"tags-delete-tag-values-bulk",
|
|
38845
|
+
"tags-edit-tag-category",
|
|
38846
|
+
"tags-update-tag-value"
|
|
38847
|
+
]
|
|
38848
|
+
},
|
|
38849
|
+
adapterBoundary: {
|
|
38850
|
+
unsafeOverrides: [
|
|
38851
|
+
"config",
|
|
38852
|
+
"profile",
|
|
38853
|
+
"origin",
|
|
38854
|
+
"output"
|
|
38855
|
+
],
|
|
38856
|
+
inputFileFlags: [
|
|
38857
|
+
"filter-file",
|
|
38858
|
+
"body-file",
|
|
38859
|
+
"ids-file",
|
|
38860
|
+
"asset-ids-file",
|
|
38861
|
+
"tag-ids-file"
|
|
38862
|
+
],
|
|
38863
|
+
blockedCommands: [
|
|
38864
|
+
"setup hooks",
|
|
38865
|
+
"config path",
|
|
38866
|
+
"profile list",
|
|
38867
|
+
"hook",
|
|
38868
|
+
"export attack download",
|
|
38869
|
+
"export inventory download"
|
|
38870
|
+
],
|
|
38871
|
+
inputs: {
|
|
38872
|
+
stdin: "explicit file flag with - only",
|
|
38873
|
+
files: "uploaded leaves only",
|
|
38874
|
+
downloads: "unsupported"
|
|
38875
|
+
},
|
|
38876
|
+
nativeWrites: "native preview, operation allow-list, execute, exact confirm and durable journal"
|
|
38877
|
+
},
|
|
38878
|
+
discovery: {
|
|
38879
|
+
commands: [
|
|
38880
|
+
"asset",
|
|
38881
|
+
"attack-path",
|
|
38882
|
+
"attack-technique",
|
|
38883
|
+
"auth",
|
|
38884
|
+
"card",
|
|
38885
|
+
"combination",
|
|
38886
|
+
"connector",
|
|
38887
|
+
"doctor",
|
|
38888
|
+
"export",
|
|
38889
|
+
"finding",
|
|
38890
|
+
"home",
|
|
38891
|
+
"initiative",
|
|
38892
|
+
"software",
|
|
38893
|
+
"tag"
|
|
38894
|
+
],
|
|
38895
|
+
example: [
|
|
38896
|
+
"card",
|
|
38897
|
+
"list",
|
|
38898
|
+
"--limit",
|
|
38899
|
+
"1"
|
|
38900
|
+
],
|
|
38901
|
+
help: "tenable-axi card list [--limit <n>]\nArtium manages both API keys and the fixed https://cloud.tenable.com origin. Writes and export-job creation require administrator-enabled operations, preview, --execute and exact --confirm. File inputs accept uploaded leaves or explicit stdin (-). Downloads and local configuration are blocked.\n"
|
|
38902
|
+
},
|
|
38903
|
+
suggestionFields: [
|
|
38904
|
+
"help"
|
|
38905
|
+
],
|
|
38906
|
+
format: "TOON",
|
|
38907
|
+
commands: [
|
|
38908
|
+
{
|
|
38909
|
+
command: "asset list",
|
|
38910
|
+
effect: "read",
|
|
38911
|
+
flags: {
|
|
38912
|
+
config: "Config path; default credential precedence",
|
|
38913
|
+
profile: "Profile name; default credential precedence",
|
|
38914
|
+
fields: "Comma-separated display or wire properties; default compact view",
|
|
38915
|
+
full: "Show full text; default false",
|
|
38916
|
+
help: "Show help",
|
|
38917
|
+
limit: "Maximum emitted rows, 1-10000; default 100",
|
|
38918
|
+
all: "Read up to 10000 rows within invocation budgets; excludes --limit",
|
|
38919
|
+
cursor: "Opaque resume cursor; retain the original selectors and filters",
|
|
38920
|
+
query: "Simple query text",
|
|
38921
|
+
filter: "Repeatable: <property> <operator> <JSON string array>",
|
|
38922
|
+
"filter-file": "JSON flat array of {property, operator, value: string[]}; '-' reads stdin; excludes --filter",
|
|
38923
|
+
sort: "Wire property:asc|desc",
|
|
38924
|
+
"extra-properties": "Comma-separated extra wire properties",
|
|
38925
|
+
offset: "Starting record; default 0; excludes --cursor",
|
|
38926
|
+
class: "Server-side asset class filter"
|
|
38927
|
+
}
|
|
38928
|
+
},
|
|
38929
|
+
{
|
|
38930
|
+
command: "asset properties",
|
|
38931
|
+
effect: "read",
|
|
38932
|
+
flags: {
|
|
38933
|
+
config: "Config path; default credential precedence",
|
|
38934
|
+
profile: "Profile name; default credential precedence",
|
|
38935
|
+
fields: "Comma-separated display or wire properties; default compact view",
|
|
38936
|
+
full: "Show full text; default false",
|
|
38937
|
+
help: "Show help",
|
|
38938
|
+
limit: "Maximum emitted rows, 1-10000; default 100",
|
|
38939
|
+
all: "Read up to 10000 rows within invocation budgets; excludes --limit",
|
|
38940
|
+
cursor: "Opaque resume cursor; retain the original selectors and filters",
|
|
38941
|
+
"asset-classes": "Comma-separated documented asset classes"
|
|
38942
|
+
}
|
|
38943
|
+
},
|
|
38944
|
+
{
|
|
38945
|
+
command: "asset show",
|
|
38946
|
+
effect: "read",
|
|
38947
|
+
flags: {
|
|
38948
|
+
config: "Config path; default credential precedence",
|
|
38949
|
+
profile: "Profile name; default credential precedence",
|
|
38950
|
+
fields: "Comma-separated display or wire properties; default compact view",
|
|
38951
|
+
full: "Show full text; default false",
|
|
38952
|
+
help: "Show help",
|
|
38953
|
+
id: "Required exact inventory ID",
|
|
38954
|
+
"extra-properties": "Comma-separated extra wire properties"
|
|
38955
|
+
}
|
|
38956
|
+
},
|
|
38957
|
+
{
|
|
38958
|
+
command: "attack-path list",
|
|
38959
|
+
effect: "read",
|
|
38960
|
+
flags: {
|
|
38961
|
+
config: "Config path; default credential precedence",
|
|
38962
|
+
profile: "Profile name; default credential precedence",
|
|
38963
|
+
fields: "Comma-separated display or wire fields; default compact view",
|
|
38964
|
+
full: "Show full text; default false",
|
|
38965
|
+
help: "Show help",
|
|
38966
|
+
limit: "Maximum emitted rows, 1-10000; default 100",
|
|
38967
|
+
all: "Read up to 10000 rows within invocation budgets; excludes --limit",
|
|
38968
|
+
cursor: "Bounded resume cursor; retain original selectors, filters, sort and fields",
|
|
38969
|
+
offset: "Starting record; default 0; excludes --cursor",
|
|
38970
|
+
sort: "Documented wire property:direction",
|
|
38971
|
+
filter: "Repeatable: <property> <operator> <JSON-value>; combines with AND (paths) or and (techniques)",
|
|
38972
|
+
"filter-file": "Documented single or nested JSON filter, at most two logical levels; '-' reads stdin; excludes --filter",
|
|
38973
|
+
"include-resolved": "Include resolved records; default false (exclude_resolved=true)",
|
|
38974
|
+
"run-ai-summarization": "true|false; default false"
|
|
38975
|
+
}
|
|
38976
|
+
},
|
|
38977
|
+
{
|
|
38978
|
+
command: "attack-technique list",
|
|
38979
|
+
effect: "read",
|
|
38980
|
+
flags: {
|
|
38981
|
+
config: "Config path; default credential precedence",
|
|
38982
|
+
profile: "Profile name; default credential precedence",
|
|
38983
|
+
fields: "Comma-separated display or wire fields; default compact view",
|
|
38984
|
+
full: "Show full text; default false",
|
|
38985
|
+
help: "Show help",
|
|
38986
|
+
limit: "Maximum emitted rows, 1-10000; default 100",
|
|
38987
|
+
all: "Read up to 10000 rows within invocation budgets; excludes --limit",
|
|
38988
|
+
cursor: "Bounded resume cursor; retain original selectors, filters, sort and fields",
|
|
38989
|
+
offset: "Starting record; default 0; excludes --cursor",
|
|
38990
|
+
sort: "Documented wire property:direction",
|
|
38991
|
+
filter: "Repeatable: <property> <operator> <JSON-value>; combines with AND (paths) or and (techniques)",
|
|
38992
|
+
"filter-file": "Documented single or nested JSON filter, at most two logical levels; '-' reads stdin; excludes --filter",
|
|
38993
|
+
"include-resolved": "Include resolved records; default false (exclude_resolved=true)"
|
|
38994
|
+
}
|
|
38995
|
+
},
|
|
38996
|
+
{
|
|
38997
|
+
command: "auth status",
|
|
38998
|
+
effect: "read",
|
|
38999
|
+
flags: {
|
|
39000
|
+
config: "Config path; default TENABLE_AXI_CONFIG or platform path",
|
|
39001
|
+
profile: "Profile name; default credential precedence",
|
|
39002
|
+
fields: "Comma-separated output fields; default all",
|
|
39003
|
+
full: "Show full text; default false",
|
|
39004
|
+
help: "Show help; default false"
|
|
39005
|
+
}
|
|
39006
|
+
},
|
|
39007
|
+
{
|
|
39008
|
+
command: "card list",
|
|
39009
|
+
effect: "read",
|
|
39010
|
+
flags: {
|
|
39011
|
+
config: "Config path; default platform path",
|
|
39012
|
+
profile: "Profile name; default credential precedence",
|
|
39013
|
+
fields: "Comma-separated output fields; default compact projection",
|
|
39014
|
+
full: "Full text; default false",
|
|
39015
|
+
help: "Show help; default false",
|
|
39016
|
+
limit: "Output rows; default 100",
|
|
39017
|
+
offset: "Starting record; default 0",
|
|
39018
|
+
cursor: "Resume the same scoped collection",
|
|
39019
|
+
all: "Read up to 10000 rows; incompatible with --limit",
|
|
39020
|
+
global: "true or false; default all cards",
|
|
39021
|
+
query: "Card name search",
|
|
39022
|
+
"sorting-order": "asc or desc; default API order"
|
|
39023
|
+
}
|
|
39024
|
+
},
|
|
39025
|
+
{
|
|
39026
|
+
command: "card show",
|
|
39027
|
+
effect: "read",
|
|
39028
|
+
flags: {
|
|
39029
|
+
config: "Config path; default platform path",
|
|
39030
|
+
profile: "Profile name; default credential precedence",
|
|
39031
|
+
fields: "Comma-separated output fields; default compact projection",
|
|
39032
|
+
full: "Full text; default false",
|
|
39033
|
+
help: "Show help; default false",
|
|
39034
|
+
id: "Required card ID",
|
|
39035
|
+
"trend-start-date": "UTC ISO timestamp",
|
|
39036
|
+
"trend-end-date": "UTC ISO timestamp",
|
|
39037
|
+
"sla-efficiency-start-date": "UTC ISO timestamp",
|
|
39038
|
+
"sla-efficiency-end-date": "UTC ISO timestamp",
|
|
39039
|
+
"sla-breakdown-filter": "ANY, REMEDIATED or NON_REMEDIATED; default ANY",
|
|
39040
|
+
"include-trend-events": "true or false; default false"
|
|
39041
|
+
}
|
|
39042
|
+
},
|
|
39043
|
+
{
|
|
39044
|
+
command: "combination create",
|
|
39045
|
+
effect: "write",
|
|
39046
|
+
flags: {
|
|
39047
|
+
config: "Config path; default credential precedence",
|
|
39048
|
+
profile: "Profile name; default credential precedence",
|
|
39049
|
+
fields: "Comma-separated fields; default compact view",
|
|
39050
|
+
full: "Full text; default false",
|
|
39051
|
+
help: "Show help",
|
|
39052
|
+
execute: "Send once; default preview",
|
|
39053
|
+
"dry-run": "Preview only; excludes --execute",
|
|
39054
|
+
confirm: "Exact preview confirmation; required to execute",
|
|
39055
|
+
"body-file": "Required strict JSON, at most 1 MiB; '-' reads stdin"
|
|
39056
|
+
}
|
|
39057
|
+
},
|
|
39058
|
+
{
|
|
39059
|
+
command: "combination delete",
|
|
39060
|
+
effect: "write",
|
|
39061
|
+
flags: {
|
|
39062
|
+
config: "Config path; default credential precedence",
|
|
39063
|
+
profile: "Profile name; default credential precedence",
|
|
39064
|
+
fields: "Comma-separated fields; default compact view",
|
|
39065
|
+
full: "Full text; default false",
|
|
39066
|
+
help: "Show help",
|
|
39067
|
+
id: "Required exact UUID",
|
|
39068
|
+
execute: "Send once; default preview",
|
|
39069
|
+
"dry-run": "Preview only; excludes --execute",
|
|
39070
|
+
confirm: "Exact preview confirmation; required to execute"
|
|
39071
|
+
}
|
|
39072
|
+
},
|
|
39073
|
+
{
|
|
39074
|
+
command: "combination filters",
|
|
39075
|
+
effect: "read",
|
|
39076
|
+
flags: {
|
|
39077
|
+
config: "Config path; default credential precedence",
|
|
39078
|
+
profile: "Profile name; default credential precedence",
|
|
39079
|
+
fields: "Comma-separated fields; default compact view",
|
|
39080
|
+
full: "Full text; default false",
|
|
39081
|
+
help: "Show help",
|
|
39082
|
+
limit: "Output rows; default 100, maximum 10000",
|
|
39083
|
+
all: "Up to 10000 rows; excludes --limit",
|
|
39084
|
+
cursor: "Re-fetch and resume an unchanged unpaged collection; requires original selectors"
|
|
39085
|
+
}
|
|
39086
|
+
},
|
|
39087
|
+
{
|
|
39088
|
+
command: "combination list",
|
|
39089
|
+
effect: "read",
|
|
39090
|
+
flags: {
|
|
39091
|
+
config: "Config path; default credential precedence",
|
|
39092
|
+
profile: "Profile name; default credential precedence",
|
|
39093
|
+
fields: "Comma-separated fields; default compact view",
|
|
39094
|
+
full: "Full text; default false",
|
|
39095
|
+
help: "Show help",
|
|
39096
|
+
limit: "Output rows; default 100, maximum 10000",
|
|
39097
|
+
all: "Up to 10000 rows; excludes --limit",
|
|
39098
|
+
cursor: "Re-fetch and resume an unchanged unpaged collection; requires original selectors",
|
|
39099
|
+
type: "private, shared or tenable; default all accessible"
|
|
39100
|
+
}
|
|
39101
|
+
},
|
|
39102
|
+
{
|
|
39103
|
+
command: "combination show",
|
|
39104
|
+
effect: "read",
|
|
39105
|
+
flags: {
|
|
39106
|
+
config: "Config path; default credential precedence",
|
|
39107
|
+
profile: "Profile name; default credential precedence",
|
|
39108
|
+
fields: "Comma-separated fields; default compact view",
|
|
39109
|
+
full: "Full text; default false",
|
|
39110
|
+
help: "Show help",
|
|
39111
|
+
id: "Required exact UUID"
|
|
39112
|
+
}
|
|
39113
|
+
},
|
|
39114
|
+
{
|
|
39115
|
+
command: "combination update",
|
|
39116
|
+
effect: "write",
|
|
39117
|
+
flags: {
|
|
39118
|
+
config: "Config path; default credential precedence",
|
|
39119
|
+
profile: "Profile name; default credential precedence",
|
|
39120
|
+
fields: "Comma-separated fields; default compact view",
|
|
39121
|
+
full: "Full text; default false",
|
|
39122
|
+
help: "Show help",
|
|
39123
|
+
id: "Required exact UUID",
|
|
39124
|
+
execute: "Send once; default preview",
|
|
39125
|
+
"dry-run": "Preview only; excludes --execute",
|
|
39126
|
+
confirm: "Exact preview confirmation; required to execute",
|
|
39127
|
+
"body-file": "Required strict JSON, at most 1 MiB; '-' reads stdin"
|
|
39128
|
+
}
|
|
39129
|
+
},
|
|
39130
|
+
{
|
|
39131
|
+
command: "config path",
|
|
39132
|
+
effect: "blocked",
|
|
39133
|
+
flags: {
|
|
39134
|
+
config: "Config path; default TENABLE_AXI_CONFIG or platform path",
|
|
39135
|
+
profile: "Common selector; paths are independent of profile",
|
|
39136
|
+
fields: "Comma-separated output fields; default all",
|
|
39137
|
+
full: "Show full text; default false",
|
|
39138
|
+
help: "Show help; default false"
|
|
39139
|
+
}
|
|
39140
|
+
},
|
|
39141
|
+
{
|
|
39142
|
+
command: "connector logs",
|
|
39143
|
+
effect: "read",
|
|
39144
|
+
flags: {
|
|
39145
|
+
config: "Config path; default credential precedence",
|
|
39146
|
+
profile: "Profile name; default credential precedence",
|
|
39147
|
+
fields: "Comma-separated display or wire fields; default compact view",
|
|
39148
|
+
full: "Show full text; default false",
|
|
39149
|
+
help: "Show help",
|
|
39150
|
+
limit: "Maximum emitted rows, 1-10000; default 100",
|
|
39151
|
+
all: "Read up to 10000 rows within invocation budgets; excludes --limit",
|
|
39152
|
+
cursor: "Bounded resume cursor; retain original selectors, filters, sort and fields",
|
|
39153
|
+
"connector-id": "Nonnegative numeric connector ID",
|
|
39154
|
+
status: "SUCCEEDED|FAILED",
|
|
39155
|
+
"start-date": "Inclusive YYYY-MM-DD; requires --end-date",
|
|
39156
|
+
"end-date": "Exclusive YYYY-MM-DD; requires --start-date"
|
|
39157
|
+
}
|
|
39158
|
+
},
|
|
39159
|
+
{
|
|
39160
|
+
command: "doctor",
|
|
39161
|
+
effect: "read",
|
|
39162
|
+
flags: {
|
|
39163
|
+
config: "Config path; default platform path",
|
|
39164
|
+
profile: "Profile name; default credential precedence",
|
|
39165
|
+
fields: "Comma-separated output fields; default compact projection",
|
|
39166
|
+
full: "Full text; default false",
|
|
39167
|
+
help: "Show help; default false"
|
|
39168
|
+
}
|
|
39169
|
+
},
|
|
39170
|
+
{
|
|
39171
|
+
command: "export asset jobs",
|
|
39172
|
+
effect: "read",
|
|
39173
|
+
flags: {
|
|
39174
|
+
config: "Config path; default platform path",
|
|
39175
|
+
profile: "Profile name; default credential precedence",
|
|
39176
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39177
|
+
full: "Full output; default false",
|
|
39178
|
+
help: "Show help",
|
|
39179
|
+
status: "QUEUED|PROCESSING|FINISHED|ERROR",
|
|
39180
|
+
limit: "1-1000; default 100; last three days only"
|
|
39181
|
+
}
|
|
39182
|
+
},
|
|
39183
|
+
{
|
|
39184
|
+
command: "export asset start",
|
|
39185
|
+
effect: "write",
|
|
39186
|
+
flags: {
|
|
39187
|
+
config: "Config path; default platform path",
|
|
39188
|
+
profile: "Profile name; default credential precedence",
|
|
39189
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39190
|
+
full: "Full output; default false",
|
|
39191
|
+
help: "Show help",
|
|
39192
|
+
"body-file": "Optional strict query/filters JSON file, '-' for stdin; maximum 1 MiB",
|
|
39193
|
+
properties: "Comma-separated property names",
|
|
39194
|
+
"use-readable-name": "true|false; API default true",
|
|
39195
|
+
"max-chunk-file-size": "5242880-104857600 bytes; API default 20971520",
|
|
39196
|
+
sort: "property:asc|desc",
|
|
39197
|
+
"file-format": "JSON|CSV; API default JSON",
|
|
39198
|
+
compress: "true|false; API default false",
|
|
39199
|
+
execute: "Create once; default preview",
|
|
39200
|
+
"dry-run": "Explicit preview; excludes --execute",
|
|
39201
|
+
confirm: "Exact confirmation from preview",
|
|
39202
|
+
"intent-id": "Unique execution intent for replay protection"
|
|
39203
|
+
}
|
|
39204
|
+
},
|
|
39205
|
+
{
|
|
39206
|
+
command: "export attack download",
|
|
39207
|
+
effect: "blocked",
|
|
39208
|
+
flags: {
|
|
39209
|
+
config: "Config path; default credential precedence",
|
|
39210
|
+
profile: "Profile name; default credential precedence",
|
|
39211
|
+
fields: "Comma-separated metadata fields; default compact view",
|
|
39212
|
+
full: "Full metadata text; default false",
|
|
39213
|
+
help: "Show help",
|
|
39214
|
+
id: "Required attack export UUID",
|
|
39215
|
+
output: "Required new output file; overwrite refused"
|
|
39216
|
+
}
|
|
39217
|
+
},
|
|
39218
|
+
{
|
|
39219
|
+
command: "export attack status",
|
|
39220
|
+
effect: "read",
|
|
39221
|
+
flags: {
|
|
39222
|
+
config: "Config path; default credential precedence",
|
|
39223
|
+
profile: "Profile name; default credential precedence",
|
|
39224
|
+
fields: "Comma-separated metadata fields; default compact view",
|
|
39225
|
+
full: "Full metadata text; default false",
|
|
39226
|
+
help: "Show help",
|
|
39227
|
+
id: "Required attack export UUID",
|
|
39228
|
+
wait: "Poll once per second within 20-second/20-request budgets; default false"
|
|
39229
|
+
}
|
|
39230
|
+
},
|
|
39231
|
+
{
|
|
39232
|
+
command: "export attack-path start",
|
|
39233
|
+
effect: "write",
|
|
39234
|
+
flags: {
|
|
39235
|
+
config: "Config path; default credential precedence",
|
|
39236
|
+
profile: "Profile name; default credential precedence",
|
|
39237
|
+
fields: "Comma-separated metadata fields; default compact view",
|
|
39238
|
+
full: "Full metadata text; default false",
|
|
39239
|
+
help: "Show help",
|
|
39240
|
+
"body-file": "Required strict operation-specific JSON file, at most 1 MiB; '-' reads stdin",
|
|
39241
|
+
execute: "Create the previewed job once; default false",
|
|
39242
|
+
"dry-run": "Preview only; excludes --execute",
|
|
39243
|
+
confirm: "Exact confirmation string from preview; required with --execute"
|
|
39244
|
+
}
|
|
39245
|
+
},
|
|
39246
|
+
{
|
|
39247
|
+
command: "export attack-technique start",
|
|
39248
|
+
effect: "write",
|
|
39249
|
+
flags: {
|
|
39250
|
+
config: "Config path; default credential precedence",
|
|
39251
|
+
profile: "Profile name; default credential precedence",
|
|
39252
|
+
fields: "Comma-separated metadata fields; default compact view",
|
|
39253
|
+
full: "Full metadata text; default false",
|
|
39254
|
+
help: "Show help",
|
|
39255
|
+
"body-file": "Required strict operation-specific JSON file, at most 1 MiB; '-' reads stdin",
|
|
39256
|
+
execute: "Create the previewed job once; default false",
|
|
39257
|
+
"dry-run": "Preview only; excludes --execute",
|
|
39258
|
+
confirm: "Exact confirmation string from preview; required with --execute"
|
|
39259
|
+
}
|
|
39260
|
+
},
|
|
39261
|
+
{
|
|
39262
|
+
command: "export finding jobs",
|
|
39263
|
+
effect: "read",
|
|
39264
|
+
flags: {
|
|
39265
|
+
config: "Config path; default platform path",
|
|
39266
|
+
profile: "Profile name; default credential precedence",
|
|
39267
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39268
|
+
full: "Full output; default false",
|
|
39269
|
+
help: "Show help",
|
|
39270
|
+
status: "QUEUED|PROCESSING|FINISHED|ERROR",
|
|
39271
|
+
limit: "1-1000; default 100; last three days only"
|
|
39272
|
+
}
|
|
39273
|
+
},
|
|
39274
|
+
{
|
|
39275
|
+
command: "export finding start",
|
|
39276
|
+
effect: "write",
|
|
39277
|
+
flags: {
|
|
39278
|
+
config: "Config path; default platform path",
|
|
39279
|
+
profile: "Profile name; default credential precedence",
|
|
39280
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39281
|
+
full: "Full output; default false",
|
|
39282
|
+
help: "Show help",
|
|
39283
|
+
"body-file": "Optional strict query/filters JSON file, '-' for stdin; maximum 1 MiB",
|
|
39284
|
+
properties: "Comma-separated property names",
|
|
39285
|
+
"use-readable-name": "true|false; API default true",
|
|
39286
|
+
"max-chunk-file-size": "5242880-104857600 bytes; API default 20971520",
|
|
39287
|
+
sort: "property:asc|desc",
|
|
39288
|
+
"file-format": "JSON|CSV; API default JSON",
|
|
39289
|
+
compress: "true|false; API default false",
|
|
39290
|
+
execute: "Create once; default preview",
|
|
39291
|
+
"dry-run": "Explicit preview; excludes --execute",
|
|
39292
|
+
confirm: "Exact confirmation from preview",
|
|
39293
|
+
"intent-id": "Unique execution intent for replay protection"
|
|
39294
|
+
}
|
|
39295
|
+
},
|
|
39296
|
+
{
|
|
39297
|
+
command: "export inventory download",
|
|
39298
|
+
effect: "blocked",
|
|
39299
|
+
flags: {
|
|
39300
|
+
config: "Config path; default platform path",
|
|
39301
|
+
profile: "Profile name; default credential precedence",
|
|
39302
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39303
|
+
full: "Full output; default false",
|
|
39304
|
+
help: "Show help",
|
|
39305
|
+
id: "Required export UUID",
|
|
39306
|
+
chunk: "Required nonnegative chunk number from status",
|
|
39307
|
+
output: "Required new output file; refuses overwrite"
|
|
39308
|
+
}
|
|
39309
|
+
},
|
|
39310
|
+
{
|
|
39311
|
+
command: "export inventory status",
|
|
39312
|
+
effect: "read",
|
|
39313
|
+
flags: {
|
|
39314
|
+
config: "Config path; default platform path",
|
|
39315
|
+
profile: "Profile name; default credential precedence",
|
|
39316
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39317
|
+
full: "Full output; default false",
|
|
39318
|
+
help: "Show help",
|
|
39319
|
+
id: "Required export UUID"
|
|
39320
|
+
}
|
|
39321
|
+
},
|
|
39322
|
+
{
|
|
39323
|
+
command: "export mitre-heatmap start",
|
|
39324
|
+
effect: "write",
|
|
39325
|
+
flags: {
|
|
39326
|
+
config: "Config path; default credential precedence",
|
|
39327
|
+
profile: "Profile name; default credential precedence",
|
|
39328
|
+
fields: "Comma-separated metadata fields; default compact view",
|
|
39329
|
+
full: "Full metadata text; default false",
|
|
39330
|
+
help: "Show help",
|
|
39331
|
+
"body-file": "Required strict operation-specific JSON file, at most 1 MiB; '-' reads stdin",
|
|
39332
|
+
execute: "Create the previewed job once; default false",
|
|
39333
|
+
"dry-run": "Preview only; excludes --execute",
|
|
39334
|
+
confirm: "Exact confirmation string from preview; required with --execute"
|
|
39335
|
+
}
|
|
39336
|
+
},
|
|
39337
|
+
{
|
|
39338
|
+
command: "finding list",
|
|
39339
|
+
effect: "read",
|
|
39340
|
+
flags: {
|
|
39341
|
+
config: "Config path; default credential precedence",
|
|
39342
|
+
profile: "Profile name; default credential precedence",
|
|
39343
|
+
fields: "Comma-separated display or wire properties; default compact view",
|
|
39344
|
+
full: "Show full text; default false",
|
|
39345
|
+
help: "Show help",
|
|
39346
|
+
limit: "Maximum emitted rows, 1-10000; default 100",
|
|
39347
|
+
all: "Read up to 10000 rows within invocation budgets; excludes --limit",
|
|
39348
|
+
cursor: "Opaque resume cursor; retain the original selectors and filters",
|
|
39349
|
+
query: "Simple query text",
|
|
39350
|
+
filter: "Repeatable: <property> <operator> <JSON string array>",
|
|
39351
|
+
"filter-file": "JSON flat array of {property, operator, value: string[]}; '-' reads stdin; excludes --filter",
|
|
39352
|
+
sort: "Wire property:asc|desc",
|
|
39353
|
+
"extra-properties": "Comma-separated extra wire properties",
|
|
39354
|
+
offset: "Starting record; default 0; excludes --cursor"
|
|
39355
|
+
}
|
|
39356
|
+
},
|
|
39357
|
+
{
|
|
39358
|
+
command: "finding properties",
|
|
39359
|
+
effect: "read",
|
|
39360
|
+
flags: {
|
|
39361
|
+
config: "Config path; default credential precedence",
|
|
39362
|
+
profile: "Profile name; default credential precedence",
|
|
39363
|
+
fields: "Comma-separated display or wire properties; default compact view",
|
|
39364
|
+
full: "Show full text; default false",
|
|
39365
|
+
help: "Show help",
|
|
39366
|
+
limit: "Maximum emitted rows, 1-10000; default 100",
|
|
39367
|
+
all: "Read up to 10000 rows within invocation budgets; excludes --limit",
|
|
39368
|
+
cursor: "Opaque resume cursor; retain the original selectors and filters"
|
|
39369
|
+
}
|
|
39370
|
+
},
|
|
39371
|
+
{
|
|
39372
|
+
command: "finding show",
|
|
39373
|
+
effect: "read",
|
|
39374
|
+
flags: {
|
|
39375
|
+
config: "Config path; default credential precedence",
|
|
39376
|
+
profile: "Profile name; default credential precedence",
|
|
39377
|
+
fields: "Comma-separated display or wire properties; default compact view",
|
|
39378
|
+
full: "Show full text; default false",
|
|
39379
|
+
help: "Show help",
|
|
39380
|
+
id: "Required exact inventory ID",
|
|
39381
|
+
"extra-properties": "Comma-separated extra wire properties"
|
|
39382
|
+
}
|
|
39383
|
+
},
|
|
39384
|
+
{
|
|
39385
|
+
command: "home",
|
|
39386
|
+
effect: "read",
|
|
39387
|
+
flags: {
|
|
39388
|
+
config: "Config path; default platform path",
|
|
39389
|
+
profile: "Profile name; default credential precedence",
|
|
39390
|
+
fields: "Card fields; default id,name,score",
|
|
39391
|
+
full: "Full text; default false",
|
|
39392
|
+
help: "Show help; default false"
|
|
39393
|
+
}
|
|
39394
|
+
},
|
|
39395
|
+
{
|
|
39396
|
+
command: "hook",
|
|
39397
|
+
effect: "blocked",
|
|
39398
|
+
flags: {
|
|
39399
|
+
config: "Config path; default platform path",
|
|
39400
|
+
profile: "Profile name; default credential precedence",
|
|
39401
|
+
fields: "Comma-separated output fields; default compact projection",
|
|
39402
|
+
full: "Full text; default false",
|
|
39403
|
+
help: "Show help; default false"
|
|
39404
|
+
}
|
|
39405
|
+
},
|
|
39406
|
+
{
|
|
39407
|
+
command: "initiative create",
|
|
39408
|
+
effect: "write",
|
|
39409
|
+
flags: {
|
|
39410
|
+
config: "Config path; default credential precedence",
|
|
39411
|
+
profile: "Profile name; default credential precedence",
|
|
39412
|
+
fields: "Comma-separated fields; default compact view",
|
|
39413
|
+
full: "Full text; default false",
|
|
39414
|
+
help: "Show help",
|
|
39415
|
+
execute: "Send once; default preview",
|
|
39416
|
+
"dry-run": "Preview only; excludes --execute",
|
|
39417
|
+
confirm: "Exact preview confirmation; required to execute",
|
|
39418
|
+
"body-file": "Required strict JSON, at most 1 MiB; '-' reads stdin"
|
|
39419
|
+
}
|
|
39420
|
+
},
|
|
39421
|
+
{
|
|
39422
|
+
command: "initiative delete",
|
|
39423
|
+
effect: "write",
|
|
39424
|
+
flags: {
|
|
39425
|
+
config: "Config path; default credential precedence",
|
|
39426
|
+
profile: "Profile name; default credential precedence",
|
|
39427
|
+
fields: "Comma-separated fields; default compact view",
|
|
39428
|
+
full: "Full text; default false",
|
|
39429
|
+
help: "Show help",
|
|
39430
|
+
id: "Required exact UUID",
|
|
39431
|
+
execute: "Send once; default preview",
|
|
39432
|
+
"dry-run": "Preview only; excludes --execute",
|
|
39433
|
+
confirm: "Exact preview confirmation; required to execute"
|
|
39434
|
+
}
|
|
39435
|
+
},
|
|
39436
|
+
{
|
|
39437
|
+
command: "initiative list",
|
|
39438
|
+
effect: "read",
|
|
39439
|
+
flags: {
|
|
39440
|
+
config: "Config path; default credential precedence",
|
|
39441
|
+
profile: "Profile name; default credential precedence",
|
|
39442
|
+
fields: "Comma-separated fields; default compact view",
|
|
39443
|
+
full: "Full text; default false",
|
|
39444
|
+
help: "Show help",
|
|
39445
|
+
limit: "Output rows; default 100, maximum 10000",
|
|
39446
|
+
all: "Up to 10000 rows; excludes --limit",
|
|
39447
|
+
cursor: "Re-fetch and resume an unchanged unpaged collection; requires original selectors"
|
|
39448
|
+
}
|
|
39449
|
+
},
|
|
39450
|
+
{
|
|
39451
|
+
command: "initiative show",
|
|
39452
|
+
effect: "read",
|
|
39453
|
+
flags: {
|
|
39454
|
+
config: "Config path; default credential precedence",
|
|
39455
|
+
profile: "Profile name; default credential precedence",
|
|
39456
|
+
fields: "Comma-separated fields; default compact view",
|
|
39457
|
+
full: "Full text; default false",
|
|
39458
|
+
help: "Show help",
|
|
39459
|
+
id: "Required exact UUID"
|
|
39460
|
+
}
|
|
39461
|
+
},
|
|
39462
|
+
{
|
|
39463
|
+
command: "initiative update",
|
|
39464
|
+
effect: "write",
|
|
39465
|
+
flags: {
|
|
39466
|
+
config: "Config path; default credential precedence",
|
|
39467
|
+
profile: "Profile name; default credential precedence",
|
|
39468
|
+
fields: "Comma-separated fields; default compact view",
|
|
39469
|
+
full: "Full text; default false",
|
|
39470
|
+
help: "Show help",
|
|
39471
|
+
id: "Required exact UUID",
|
|
39472
|
+
execute: "Send once; default preview",
|
|
39473
|
+
"dry-run": "Preview only; excludes --execute",
|
|
39474
|
+
confirm: "Exact preview confirmation; required to execute",
|
|
39475
|
+
"body-file": "Required strict JSON, at most 1 MiB; '-' reads stdin"
|
|
39476
|
+
}
|
|
39477
|
+
},
|
|
39478
|
+
{
|
|
39479
|
+
command: "profile list",
|
|
39480
|
+
effect: "blocked",
|
|
39481
|
+
flags: {
|
|
39482
|
+
config: "Config path; default TENABLE_AXI_CONFIG or platform path",
|
|
39483
|
+
profile: "Common selector; list still shows all profiles",
|
|
39484
|
+
fields: "Comma-separated output fields; default all",
|
|
39485
|
+
full: "Show full text; default false",
|
|
39486
|
+
help: "Show help; default false"
|
|
39487
|
+
}
|
|
39488
|
+
},
|
|
39489
|
+
{
|
|
39490
|
+
command: "setup hooks",
|
|
39491
|
+
effect: "blocked",
|
|
39492
|
+
flags: {
|
|
39493
|
+
scope: "user or project; default user; project targets the current directory",
|
|
39494
|
+
help: "Show help; default false"
|
|
39495
|
+
}
|
|
39496
|
+
},
|
|
39497
|
+
{
|
|
39498
|
+
command: "software list",
|
|
39499
|
+
effect: "read",
|
|
39500
|
+
flags: {
|
|
39501
|
+
config: "Config path; default credential precedence",
|
|
39502
|
+
profile: "Profile name; default credential precedence",
|
|
39503
|
+
fields: "Comma-separated display or wire properties; default compact view",
|
|
39504
|
+
full: "Show full text; default false",
|
|
39505
|
+
help: "Show help",
|
|
39506
|
+
limit: "Maximum emitted rows, 1-10000; default 100",
|
|
39507
|
+
all: "Read up to 10000 rows within invocation budgets; excludes --limit",
|
|
39508
|
+
cursor: "Opaque resume cursor; retain the original selectors and filters",
|
|
39509
|
+
query: "Simple query text",
|
|
39510
|
+
filter: "Repeatable: <property> <operator> <JSON string array>",
|
|
39511
|
+
"filter-file": "JSON flat array of {property, operator, value: string[]}; '-' reads stdin; excludes --filter",
|
|
39512
|
+
sort: "Wire property:asc|desc",
|
|
39513
|
+
"extra-properties": "Comma-separated extra wire properties",
|
|
39514
|
+
offset: "Starting record; default 0; excludes --cursor"
|
|
39515
|
+
}
|
|
39516
|
+
},
|
|
39517
|
+
{
|
|
39518
|
+
command: "software properties",
|
|
39519
|
+
effect: "read",
|
|
39520
|
+
flags: {
|
|
39521
|
+
config: "Config path; default credential precedence",
|
|
39522
|
+
profile: "Profile name; default credential precedence",
|
|
39523
|
+
fields: "Comma-separated display or wire properties; default compact view",
|
|
39524
|
+
full: "Show full text; default false",
|
|
39525
|
+
help: "Show help",
|
|
39526
|
+
limit: "Maximum emitted rows, 1-10000; default 100",
|
|
39527
|
+
all: "Read up to 10000 rows within invocation budgets; excludes --limit",
|
|
39528
|
+
cursor: "Opaque resume cursor; retain the original selectors and filters"
|
|
39529
|
+
}
|
|
39530
|
+
},
|
|
39531
|
+
{
|
|
39532
|
+
command: "tag asset-filter list",
|
|
39533
|
+
effect: "read",
|
|
39534
|
+
flags: {
|
|
39535
|
+
config: "Config path; default platform path",
|
|
39536
|
+
profile: "Profile name; default credential precedence",
|
|
39537
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39538
|
+
full: "Full text; default false",
|
|
39539
|
+
help: "Show help",
|
|
39540
|
+
limit: "Output rows; default 100; maximum 10000",
|
|
39541
|
+
cursor: "Resume the same scoped collection",
|
|
39542
|
+
all: "Read at most 10000 rows; excludes --limit"
|
|
39543
|
+
}
|
|
39544
|
+
},
|
|
39545
|
+
{
|
|
39546
|
+
command: "tag assignment add",
|
|
39547
|
+
effect: "write",
|
|
39548
|
+
flags: {
|
|
39549
|
+
config: "Config path; default platform path",
|
|
39550
|
+
profile: "Profile name; default credential precedence",
|
|
39551
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39552
|
+
full: "Full text; default false",
|
|
39553
|
+
help: "Show help",
|
|
39554
|
+
execute: "Execute once; default preview",
|
|
39555
|
+
"dry-run": "Explicit preview; excludes --execute",
|
|
39556
|
+
confirm: "Exact confirmation from preview",
|
|
39557
|
+
"intent-id": "Unique execution intent for replay protection",
|
|
39558
|
+
"asset-ids-file": "Required JSON asset UUID array; '-' for stdin",
|
|
39559
|
+
"tag-ids-file": "Required JSON tag UUID array; '-' for stdin"
|
|
39560
|
+
}
|
|
39561
|
+
},
|
|
39562
|
+
{
|
|
39563
|
+
command: "tag assignment list",
|
|
39564
|
+
effect: "read",
|
|
39565
|
+
flags: {
|
|
39566
|
+
config: "Config path; default platform path",
|
|
39567
|
+
profile: "Profile name; default credential precedence",
|
|
39568
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39569
|
+
full: "Full text; default false",
|
|
39570
|
+
help: "Show help",
|
|
39571
|
+
"asset-id": "Required exact asset UUID",
|
|
39572
|
+
limit: "Output rows; default 100; maximum 10000",
|
|
39573
|
+
cursor: "Resume the same scoped collection",
|
|
39574
|
+
all: "Read at most 10000 rows; excludes --limit"
|
|
39575
|
+
}
|
|
39576
|
+
},
|
|
39577
|
+
{
|
|
39578
|
+
command: "tag assignment remove",
|
|
39579
|
+
effect: "write",
|
|
39580
|
+
flags: {
|
|
39581
|
+
config: "Config path; default platform path",
|
|
39582
|
+
profile: "Profile name; default credential precedence",
|
|
39583
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39584
|
+
full: "Full text; default false",
|
|
39585
|
+
help: "Show help",
|
|
39586
|
+
execute: "Execute once; default preview",
|
|
39587
|
+
"dry-run": "Explicit preview; excludes --execute",
|
|
39588
|
+
confirm: "Exact confirmation from preview",
|
|
39589
|
+
"intent-id": "Unique execution intent for replay protection",
|
|
39590
|
+
"asset-ids-file": "Required JSON asset UUID array; '-' for stdin",
|
|
39591
|
+
"tag-ids-file": "Required JSON tag UUID array; '-' for stdin"
|
|
39592
|
+
}
|
|
39593
|
+
},
|
|
39594
|
+
{
|
|
39595
|
+
command: "tag category create",
|
|
39596
|
+
effect: "write",
|
|
39597
|
+
flags: {
|
|
39598
|
+
config: "Config path; default platform path",
|
|
39599
|
+
profile: "Profile name; default credential precedence",
|
|
39600
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39601
|
+
full: "Full text; default false",
|
|
39602
|
+
help: "Show help",
|
|
39603
|
+
name: "Required category name, at most 127 characters, no colon",
|
|
39604
|
+
description: "Optional description, at most 3000 characters",
|
|
39605
|
+
execute: "Execute once; default preview",
|
|
39606
|
+
"dry-run": "Explicit preview; excludes --execute",
|
|
39607
|
+
confirm: "Exact confirmation from preview",
|
|
39608
|
+
"intent-id": "Unique execution intent for replay protection"
|
|
39609
|
+
}
|
|
39610
|
+
},
|
|
39611
|
+
{
|
|
39612
|
+
command: "tag category delete",
|
|
39613
|
+
effect: "write",
|
|
39614
|
+
flags: {
|
|
39615
|
+
config: "Config path; default platform path",
|
|
39616
|
+
profile: "Profile name; default credential precedence",
|
|
39617
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39618
|
+
full: "Full text; default false",
|
|
39619
|
+
help: "Show help",
|
|
39620
|
+
id: "Required exact UUID",
|
|
39621
|
+
execute: "Execute once; default preview",
|
|
39622
|
+
"dry-run": "Explicit preview; excludes --execute",
|
|
39623
|
+
confirm: "Exact confirmation from preview",
|
|
39624
|
+
"intent-id": "Unique execution intent for replay protection"
|
|
39625
|
+
}
|
|
39626
|
+
},
|
|
39627
|
+
{
|
|
39628
|
+
command: "tag category list",
|
|
39629
|
+
effect: "read",
|
|
39630
|
+
flags: {
|
|
39631
|
+
config: "Config path; default platform path",
|
|
39632
|
+
profile: "Profile name; default credential precedence",
|
|
39633
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39634
|
+
full: "Full text; default false",
|
|
39635
|
+
help: "Show help",
|
|
39636
|
+
limit: "Output rows; default 100; maximum 10000",
|
|
39637
|
+
offset: "Starting record; default 0",
|
|
39638
|
+
cursor: "Resume the same scoped collection",
|
|
39639
|
+
all: "Read at most 10000 rows; excludes --limit",
|
|
39640
|
+
filter: "Repeatable field:operator:value",
|
|
39641
|
+
"filter-type": "and|or; API default and",
|
|
39642
|
+
sort: "Comma-separated field:asc|desc"
|
|
39643
|
+
}
|
|
39644
|
+
},
|
|
39645
|
+
{
|
|
39646
|
+
command: "tag category show",
|
|
39647
|
+
effect: "read",
|
|
39648
|
+
flags: {
|
|
39649
|
+
config: "Config path; default platform path",
|
|
39650
|
+
profile: "Profile name; default credential precedence",
|
|
39651
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39652
|
+
full: "Full text; default false",
|
|
39653
|
+
help: "Show help",
|
|
39654
|
+
id: "Required exact UUID"
|
|
39655
|
+
}
|
|
39656
|
+
},
|
|
39657
|
+
{
|
|
39658
|
+
command: "tag category update",
|
|
39659
|
+
effect: "write",
|
|
39660
|
+
flags: {
|
|
39661
|
+
config: "Config path; default platform path",
|
|
39662
|
+
profile: "Profile name; default credential precedence",
|
|
39663
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39664
|
+
full: "Full text; default false",
|
|
39665
|
+
help: "Show help",
|
|
39666
|
+
id: "Required exact UUID",
|
|
39667
|
+
name: "Required category name, at most 127 characters, no colon",
|
|
39668
|
+
description: "Optional description, at most 3000 characters",
|
|
39669
|
+
execute: "Execute once; default preview",
|
|
39670
|
+
"dry-run": "Explicit preview; excludes --execute",
|
|
39671
|
+
confirm: "Exact confirmation from preview",
|
|
39672
|
+
"intent-id": "Unique execution intent for replay protection"
|
|
39673
|
+
}
|
|
39674
|
+
},
|
|
39675
|
+
{
|
|
39676
|
+
command: "tag exclusion list",
|
|
39677
|
+
effect: "read",
|
|
39678
|
+
flags: {
|
|
39679
|
+
config: "Config path; default platform path",
|
|
39680
|
+
profile: "Profile name; default credential precedence",
|
|
39681
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39682
|
+
full: "Full text; default false",
|
|
39683
|
+
help: "Show help",
|
|
39684
|
+
limit: "Output rows; default 100; maximum 10000",
|
|
39685
|
+
offset: "Starting record; default 0",
|
|
39686
|
+
cursor: "Resume the same scoped collection",
|
|
39687
|
+
all: "Read at most 10000 rows; excludes --limit",
|
|
39688
|
+
"tag-id": "Required exact dynamic tag UUID",
|
|
39689
|
+
"target-type": "assets; API default assets"
|
|
39690
|
+
}
|
|
39691
|
+
},
|
|
39692
|
+
{
|
|
39693
|
+
command: "tag list",
|
|
39694
|
+
effect: "read",
|
|
39695
|
+
flags: {
|
|
39696
|
+
config: "Config path; default platform path",
|
|
39697
|
+
profile: "Profile name; default credential precedence",
|
|
39698
|
+
fields: "Comma-separated output fields; default compact projection",
|
|
39699
|
+
full: "Full text; default false",
|
|
39700
|
+
help: "Show help; default false",
|
|
39701
|
+
limit: "Output rows; default 100",
|
|
39702
|
+
offset: "Starting record; default 0",
|
|
39703
|
+
cursor: "Resume the same scoped collection",
|
|
39704
|
+
all: "Read up to 10000 rows; incompatible with --limit",
|
|
39705
|
+
query: "Simple text search",
|
|
39706
|
+
filter: "Repeatable: property operator JSON-array-of-strings",
|
|
39707
|
+
"filter-file": "Strict documented tag filter array; incompatible with --filter",
|
|
39708
|
+
sort: "property:asc or property:desc",
|
|
39709
|
+
"extra-properties": "Comma-separated property names"
|
|
39710
|
+
}
|
|
39711
|
+
},
|
|
39712
|
+
{
|
|
39713
|
+
command: "tag properties",
|
|
39714
|
+
effect: "read",
|
|
39715
|
+
flags: {
|
|
39716
|
+
config: "Config path; default platform path",
|
|
39717
|
+
profile: "Profile name; default credential precedence",
|
|
39718
|
+
fields: "Comma-separated output fields; default compact projection",
|
|
39719
|
+
full: "Full text; default false",
|
|
39720
|
+
help: "Show help; default false"
|
|
39721
|
+
}
|
|
39722
|
+
},
|
|
39723
|
+
{
|
|
39724
|
+
command: "tag value bulk-delete",
|
|
39725
|
+
effect: "write",
|
|
39726
|
+
flags: {
|
|
39727
|
+
config: "Config path; default platform path",
|
|
39728
|
+
profile: "Profile name; default credential precedence",
|
|
39729
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39730
|
+
full: "Full text; default false",
|
|
39731
|
+
help: "Show help",
|
|
39732
|
+
execute: "Execute once; default preview",
|
|
39733
|
+
"dry-run": "Explicit preview; excludes --execute",
|
|
39734
|
+
confirm: "Exact confirmation from preview",
|
|
39735
|
+
"intent-id": "Unique execution intent for replay protection",
|
|
39736
|
+
"ids-file": "Required JSON UUID array; '-' for stdin; maximum 1 MiB"
|
|
39737
|
+
}
|
|
39738
|
+
},
|
|
39739
|
+
{
|
|
39740
|
+
command: "tag value create",
|
|
39741
|
+
effect: "write",
|
|
39742
|
+
flags: {
|
|
39743
|
+
config: "Config path; default platform path",
|
|
39744
|
+
profile: "Profile name; default credential precedence",
|
|
39745
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39746
|
+
full: "Full text; default false",
|
|
39747
|
+
help: "Show help",
|
|
39748
|
+
"body-file": "Required strict tag JSON; '-' for stdin; maximum 1 MiB; no access_control",
|
|
39749
|
+
execute: "Execute once; default preview",
|
|
39750
|
+
"dry-run": "Explicit preview; excludes --execute",
|
|
39751
|
+
confirm: "Exact confirmation from preview",
|
|
39752
|
+
"intent-id": "Unique execution intent for replay protection"
|
|
39753
|
+
}
|
|
39754
|
+
},
|
|
39755
|
+
{
|
|
39756
|
+
command: "tag value delete",
|
|
39757
|
+
effect: "write",
|
|
39758
|
+
flags: {
|
|
39759
|
+
config: "Config path; default platform path",
|
|
39760
|
+
profile: "Profile name; default credential precedence",
|
|
39761
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39762
|
+
full: "Full text; default false",
|
|
39763
|
+
help: "Show help",
|
|
39764
|
+
id: "Required exact UUID",
|
|
39765
|
+
execute: "Execute once; default preview",
|
|
39766
|
+
"dry-run": "Explicit preview; excludes --execute",
|
|
39767
|
+
confirm: "Exact confirmation from preview",
|
|
39768
|
+
"intent-id": "Unique execution intent for replay protection"
|
|
39769
|
+
}
|
|
39770
|
+
},
|
|
39771
|
+
{
|
|
39772
|
+
command: "tag value list",
|
|
39773
|
+
effect: "read",
|
|
39774
|
+
flags: {
|
|
39775
|
+
config: "Config path; default platform path",
|
|
39776
|
+
profile: "Profile name; default credential precedence",
|
|
39777
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39778
|
+
full: "Full text; default false",
|
|
39779
|
+
help: "Show help",
|
|
39780
|
+
limit: "Output rows; default 100; maximum 10000",
|
|
39781
|
+
offset: "Starting record; default 0",
|
|
39782
|
+
cursor: "Resume the same scoped collection",
|
|
39783
|
+
all: "Read at most 10000 rows; excludes --limit",
|
|
39784
|
+
filter: "Repeatable field:operator:value",
|
|
39785
|
+
"filter-type": "and|or; API default and",
|
|
39786
|
+
sort: "Comma-separated field:asc|desc",
|
|
39787
|
+
with: "Wildcard search value (w)",
|
|
39788
|
+
"with-filter": "Comma-separated wildcard fields (wf)"
|
|
39789
|
+
}
|
|
39790
|
+
},
|
|
39791
|
+
{
|
|
39792
|
+
command: "tag value show",
|
|
39793
|
+
effect: "read",
|
|
39794
|
+
flags: {
|
|
39795
|
+
config: "Config path; default platform path",
|
|
39796
|
+
profile: "Profile name; default credential precedence",
|
|
39797
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39798
|
+
full: "Full text; default false",
|
|
39799
|
+
help: "Show help",
|
|
39800
|
+
id: "Required exact UUID"
|
|
39801
|
+
}
|
|
39802
|
+
},
|
|
39803
|
+
{
|
|
39804
|
+
command: "tag value update",
|
|
39805
|
+
effect: "write",
|
|
39806
|
+
flags: {
|
|
39807
|
+
config: "Config path; default platform path",
|
|
39808
|
+
profile: "Profile name; default credential precedence",
|
|
39809
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39810
|
+
full: "Full text; default false",
|
|
39811
|
+
help: "Show help",
|
|
39812
|
+
id: "Required exact UUID",
|
|
39813
|
+
"body-file": "Required strict tag JSON; '-' for stdin; maximum 1 MiB; no access_control",
|
|
39814
|
+
execute: "Execute once; default preview",
|
|
39815
|
+
"dry-run": "Explicit preview; excludes --execute",
|
|
39816
|
+
confirm: "Exact confirmation from preview",
|
|
39817
|
+
"intent-id": "Unique execution intent for replay protection"
|
|
39818
|
+
}
|
|
39819
|
+
}
|
|
39820
|
+
]
|
|
39821
|
+
};
|
|
39822
|
+
|
|
38644
39823
|
// src/shared/tool-manifests.ts
|
|
38645
|
-
var toolManifests = { "falcon-axi": falcon_axi_default, "vectra-axi": vectra_axi_default, "az-axi": az_axi_default, "mg-axi": mg_axi_default, "ldap-axi": ldap_axi_default, "ado-axi": ado_axi_default, "awx-axi": awx_axi_default };
|
|
39824
|
+
var toolManifests = { "falcon-axi": falcon_axi_default, "vectra-axi": vectra_axi_default, "az-axi": az_axi_default, "mg-axi": mg_axi_default, "ldap-axi": ldap_axi_default, "ado-axi": ado_axi_default, "awx-axi": awx_axi_default, "tenable-axi": tenable_axi_default };
|
|
38646
39825
|
|
|
38647
39826
|
// node_modules/.pnpm/@toon-format+toon@2.3.1/node_modules/@toon-format/toon/dist/index.mjs
|
|
38648
39827
|
var NULL_LITERAL = "null";
|
|
@@ -40010,6 +41189,7 @@ function resolveDecodeOptions(options) {
|
|
|
40010
41189
|
|
|
40011
41190
|
// src/cli/rewrite.ts
|
|
40012
41191
|
var managedFlags = {
|
|
41192
|
+
"tenable-axi": tenable_axi_default.adapterBoundary.unsafeOverrides,
|
|
40013
41193
|
"awx-axi": awx_axi_default.adapterBoundary.unsafeOverrides,
|
|
40014
41194
|
"falcon-axi": falcon_axi_default.unsafeOverrides,
|
|
40015
41195
|
"vectra-axi": vectra_axi_default.adapterBoundary.unsafeOverrides,
|
|
@@ -40072,6 +41252,13 @@ function rewriteSuggestions(output3, tool, truncated = false) {
|
|
|
40072
41252
|
try {
|
|
40073
41253
|
const json2 = output3.trimStart().startsWith("{");
|
|
40074
41254
|
let parsed = json2 ? jsonHelp(output3) : toonHelp(output3);
|
|
41255
|
+
if (tool === "tenable-axi" && parsed.document.commands) {
|
|
41256
|
+
return encode3({
|
|
41257
|
+
description: "Investigate Tenable One with managed API keys.",
|
|
41258
|
+
commands: tenable_axi_default.commands.filter((route) => route.effect !== "blocked").map((route) => route.command),
|
|
41259
|
+
help: [tenable_axi_default.discovery.help.replaceAll("tenable-axi ", "artium-axi tenable-axi ")]
|
|
41260
|
+
}) + "\n";
|
|
41261
|
+
}
|
|
40075
41262
|
if (tool === "ldap-axi" && parsed.document.description === "Read Active Directory and LDAPv3 directories safely with ldap-axi (read-only)" && Array.isArray(parsed.document.commands) && parsed.spans.length) {
|
|
40076
41263
|
const home = {
|
|
40077
41264
|
...parsed.document,
|
|
@@ -40167,9 +41354,14 @@ function managedFlagRanges(command, tool) {
|
|
|
40167
41354
|
return ranges;
|
|
40168
41355
|
}
|
|
40169
41356
|
function hostedHelp(help, tool, flags, commands2) {
|
|
41357
|
+
if (tool === "tenable-axi") {
|
|
41358
|
+
help = help.split("\n").filter((line) => !/TENABLE_AXI_|SecretRefs|tenable-axi (?:setup|config|profile|hook)|export (?:attack|inventory) download/.test(line)).join("\n");
|
|
41359
|
+
const guidance = "Artium manages both API keys and the fixed origin. Administrators enable write operations; native preview, execute, exact confirmation and journal gates remain required. Downloads are unavailable.";
|
|
41360
|
+
if (commands2 && !help.includes(guidance)) help = help.trimEnd() + "\n" + guidance + "\n";
|
|
41361
|
+
}
|
|
40170
41362
|
if (tool === "awx-axi") {
|
|
40171
41363
|
const guidance = "Artium manages the controller origin, verified TLS and token. Operational writes require administrator allowWrites and --confirm; configuration, deletion and security writes are blocked. No stdin or files. Ask an administrator to update the managed credential.";
|
|
40172
|
-
help = help.split("\n").filter((line) => !/(?:\bAWX_AXI_[A-Z_]+\b|\bawx-axi (?:auth (?:login|logout)|setup|config|profile|update)\b|--(?:origin|profile|config|verify-ssl|allow-http)\b)/.test(line)).filter((line) => !/^(?:Run|Use) .*\bawx-axi job stdout\b.*--download\b/.test(line)).map((line) => (/^(?:artium-axi )?awx-axi job stdout\b/.test(line) ? line.replace(/ \[--(?:full|ansi)\]| \[--download <path>\]/g, "") : line).replace(/--timeout (?:600|3600)/g, "--timeout 50")).join("\n");
|
|
41364
|
+
help = help.split("\n").filter((line) => !/(?:\bAWX_AXI_[A-Z_]+\b|\bawx-axi (?:auth (?:login|logout)|setup|config|profile|update)\b|--(?:origin|profile|config|verify-ssl|allow-http)\b)/.test(line)).filter((line) => !/^(?:Run|Use) .*\bawx-axi job stdout\b.*--download\b/.test(line)).map((line) => (/^(?:artium-axi )?awx-axi job stdout\b/.test(line) ? line.replace(/ \[--(?:full|ansi)\]| \[--download <path>\]/g, "") : line).replace(/^((?:artium-axi )?awx-axi job list\b[^\n]*) \[--fields <fields>\]/, "$1").replace(/--timeout (?:600|3600)/g, "--timeout 50")).join("\n");
|
|
40173
41365
|
if (!help.trim()) help = guidance;
|
|
40174
41366
|
else if (commands2 && !help.includes(guidance)) help = help.trimEnd() + "\n" + guidance + "\n";
|
|
40175
41367
|
}
|
|
@@ -40199,7 +41391,8 @@ function hostedHelp(help, tool, flags, commands2) {
|
|
|
40199
41391
|
const filtered = help.replace(
|
|
40200
41392
|
/^([ \t]*(?:(?:Flags|Globals|Global flags|Selector flags on every command|[Vv]alid flags for `[^`]+`): |(?=--)))([^\r\n]*)(\r?\n|$)/gm,
|
|
40201
41393
|
(_, label, listed, ending) => {
|
|
40202
|
-
const
|
|
41394
|
+
const entries = label.trim() || /^--[\w-]+(?: <[^>]+>)?(?:, --[\w-]+(?: <[^>]+>)?)*\.?$/.test(listed) ? listed.split(", ") : [listed];
|
|
41395
|
+
const retained = entries.filter((flag) => !flags.includes(/^--([\w-]+)/.exec(flag)?.[1] ?? "")).join(", ");
|
|
40203
41396
|
if (!retained && !label.trim()) return "";
|
|
40204
41397
|
return label + retained + (listed.endsWith(".") && !retained.endsWith(".") ? "." : "") + ending;
|
|
40205
41398
|
}
|
|
@@ -40322,9 +41515,16 @@ function identityView(user, server) {
|
|
|
40322
41515
|
return `user: ${JSON.stringify(user.username)}
|
|
40323
41516
|
server: ${JSON.stringify(server)}
|
|
40324
41517
|
roles[${user.roles.length}]: ${user.roles.map((role) => JSON.stringify(role)).join(",")}
|
|
40325
|
-
|
|
41518
|
+
sessionExpiresAt: ${sessionExpiryView(user.sessionExpiresAt)}
|
|
41519
|
+
accessExpiresAt: ${sessionExpiryView(user.accessExpiresAt)}
|
|
41520
|
+
note: Access tokens refresh automatically when a refresh token is available.
|
|
40326
41521
|
`;
|
|
40327
41522
|
}
|
|
41523
|
+
function sessionExpiryView(expiresAt, now = Date.now()) {
|
|
41524
|
+
const minutes = Math.max(0, Math.floor((expiresAt - now) / 6e4));
|
|
41525
|
+
const remaining = expiresAt <= now ? "expired" : `in ${Math.floor(minutes / 60)}h ${minutes % 60}m`;
|
|
41526
|
+
return `${new Date(expiresAt).toISOString().replace(".000Z", "Z")} (${remaining})`;
|
|
41527
|
+
}
|
|
40328
41528
|
function toolsView(tools) {
|
|
40329
41529
|
if (!tools.length) return "tools: 0 available\nreason: No enabled runtime tool is available through your assigned roles.\ncontact: Ask an administrator to check your role assignments and enabled tools.\nnext[1]:\n - artium-axi whoami\n";
|
|
40330
41530
|
return `tools[${tools.length}]{name,status,version,readOnly}:
|
|
@@ -40349,11 +41549,268 @@ upstreamHelp: ${JSON.stringify(help)}
|
|
|
40349
41549
|
`;
|
|
40350
41550
|
}
|
|
40351
41551
|
|
|
41552
|
+
// src/cli/doctor.ts
|
|
41553
|
+
var DIAGNOSTIC_REQUEST_DEADLINE_MS = 5e3;
|
|
41554
|
+
async function doctor(createClient = (deadline) => new Client(process.env, void 0, deadline), write = (text2) => {
|
|
41555
|
+
process.stdout.write(text2);
|
|
41556
|
+
}) {
|
|
41557
|
+
let failure2;
|
|
41558
|
+
const line = (name, pass, detail, error62) => {
|
|
41559
|
+
if (!pass) failure2 ??= error62 ?? new ArtiumError("INVALID_RESPONSE");
|
|
41560
|
+
write(`${pass ? "pass" : "fail"}: ${name}${detail ? ` (${detail})` : ""}
|
|
41561
|
+
`);
|
|
41562
|
+
};
|
|
41563
|
+
let client;
|
|
41564
|
+
try {
|
|
41565
|
+
client = createClient(DIAGNOSTIC_REQUEST_DEADLINE_MS);
|
|
41566
|
+
} catch (error62) {
|
|
41567
|
+
for (const name of ["server address", "certificate", "token", "CLI version"]) line(name, false, "CLIENT_CONFIG_INVALID");
|
|
41568
|
+
throw error62;
|
|
41569
|
+
}
|
|
41570
|
+
let addressOk = false;
|
|
41571
|
+
try {
|
|
41572
|
+
const live = await client.request("/health/live", "GET");
|
|
41573
|
+
addressOk = !!live && typeof live === "object" && "status" in live && live.status === "ok";
|
|
41574
|
+
line("server address", addressOk, client.serverUrlSource);
|
|
41575
|
+
line("certificate", client.certificateVerified, client.certificateVerified ? void 0 : "test HTTP", new ArtiumError("CLIENT_CONFIG_INVALID"));
|
|
41576
|
+
} catch (error62) {
|
|
41577
|
+
const cause = error62 instanceof ArtiumError ? error62 : new ArtiumError("INVALID_RESPONSE");
|
|
41578
|
+
line("server address", cause.code === "CERTIFICATE_INVALID", `${client.serverUrlSource}: ${cause.code}`, cause);
|
|
41579
|
+
line("certificate", client.certificateVerified, client.certificateVerified ? void 0 : cause.code, cause);
|
|
41580
|
+
}
|
|
41581
|
+
if (!addressOk && failure2) throw failure2;
|
|
41582
|
+
let versionOk = true;
|
|
41583
|
+
let versionError;
|
|
41584
|
+
try {
|
|
41585
|
+
await client.request("/v1/me", "GET");
|
|
41586
|
+
} catch (error62) {
|
|
41587
|
+
versionOk = error62 instanceof ArtiumError && error62.code === "TOKEN_INVALID";
|
|
41588
|
+
if (!versionOk) versionError = error62 instanceof ArtiumError ? error62 : new ArtiumError("INVALID_RESPONSE");
|
|
41589
|
+
}
|
|
41590
|
+
let tokenOk = false;
|
|
41591
|
+
let tokenError;
|
|
41592
|
+
let tokenDetail;
|
|
41593
|
+
try {
|
|
41594
|
+
const parsed = meResponseSchema.safeParse(await client.authenticated("/v1/me", "GET"));
|
|
41595
|
+
tokenOk = parsed.success;
|
|
41596
|
+
if (parsed.success) tokenDetail = `session expires ${sessionExpiryView(parsed.data.sessionExpiresAt)}`;
|
|
41597
|
+
} catch (error62) {
|
|
41598
|
+
tokenError = error62 instanceof ArtiumError ? error62 : new ArtiumError("INVALID_RESPONSE");
|
|
41599
|
+
}
|
|
41600
|
+
line("token", tokenOk, tokenDetail, tokenError);
|
|
41601
|
+
line("CLI version", versionOk, void 0, versionError);
|
|
41602
|
+
if (tokenOk && versionOk) {
|
|
41603
|
+
try {
|
|
41604
|
+
const parsed = toolsResponseSchema.safeParse(await client.authenticated("/v1/tools", "GET"));
|
|
41605
|
+
if (!parsed.success) throw new ArtiumError("INVALID_RESPONSE");
|
|
41606
|
+
for (const tool of parsed.data.tools) line(
|
|
41607
|
+
tool.name,
|
|
41608
|
+
tool.status === "ok",
|
|
41609
|
+
tool.status,
|
|
41610
|
+
new ArtiumError(tool.status === "unconfigured" ? "CREDENTIAL_NOT_CONFIGURED" : tool.status === "error" ? "TOOL_FAILED" : tool.status === "disabled" ? "TOOL_DISABLED" : "SERVER_UNAVAILABLE")
|
|
41611
|
+
);
|
|
41612
|
+
} catch (error62) {
|
|
41613
|
+
const cause = error62 instanceof ArtiumError ? error62 : new ArtiumError("INVALID_RESPONSE");
|
|
41614
|
+
line("tools", false, cause.code, cause);
|
|
41615
|
+
}
|
|
41616
|
+
}
|
|
41617
|
+
if (failure2) throw failure2;
|
|
41618
|
+
}
|
|
41619
|
+
|
|
41620
|
+
// src/cli/help.ts
|
|
41621
|
+
var commands = {
|
|
41622
|
+
home: { usage: "artium-axi [tools [show <tool>]|whoami|login|passwd|logout|doctor|setup|update|<tool> <args>]", purpose: "Show your identity, roles and available tools.", flags: ["--version (default false; print the client package version and exit)"], example: "artium-axi" },
|
|
41623
|
+
setup: {
|
|
41624
|
+
usage: "artium-axi setup --host <claude|codex|opencode|pi> [--hook] [--force]",
|
|
41625
|
+
purpose: "Install skills for your signed-in account\u2019s granted tools and an optional Claude Code session hook.",
|
|
41626
|
+
flags: ["--host <claude|codex|opencode|pi> (required)", "--hook (default false; Claude Code only)", "--force (default false; explicitly replace an edited skill)"],
|
|
41627
|
+
example: "artium-axi setup --host claude --hook"
|
|
41628
|
+
},
|
|
41629
|
+
tools: { usage: "artium-axi tools", purpose: "List available tools with their status and pinned version.", flags: [], example: "artium-axi tools" },
|
|
41630
|
+
"tools show": { usage: "artium-axi tools show <tool>", purpose: "Show one available tool and its vetted upstream help.", flags: [], example: "artium-axi tools show falcon-axi" },
|
|
41631
|
+
whoami: { usage: "artium-axi whoami", purpose: "Show your identity, roles, session expiry and server.", flags: [], example: "artium-axi whoami" },
|
|
41632
|
+
login: {
|
|
41633
|
+
usage: "artium-axi login --sso | --username <username> [--password-stdin]",
|
|
41634
|
+
purpose: "Sign in through browser SSO (8-hour session) or with a local account.",
|
|
41635
|
+
flags: ["--sso (default false; open the displayed URL in any browser and approve your terminal code; no password flags)", "--username <username> (required for local sign-in)", "--password-stdin (default false; local only; otherwise ARTIUM_AXI_PASSWORD or a terminal prompt)"],
|
|
41636
|
+
example: "artium-axi login --sso"
|
|
41637
|
+
},
|
|
41638
|
+
passwd: {
|
|
41639
|
+
usage: "artium-axi passwd [--password-stdin]",
|
|
41640
|
+
purpose: "Change your password, then sign in again.",
|
|
41641
|
+
flags: ["--password-stdin (default false; otherwise a terminal prompt; current password uses ARTIUM_AXI_CURRENT_PASSWORD or a terminal prompt)"],
|
|
41642
|
+
example: "artium-axi passwd --password-stdin"
|
|
41643
|
+
},
|
|
41644
|
+
logout: { usage: "artium-axi logout", purpose: "Remove local tokens and revoke the server session.", flags: [], example: "artium-axi logout" },
|
|
41645
|
+
doctor: { usage: "artium-axi doctor", purpose: "Check the server, certificate, token, CLI version and cached tool health.", flags: [], example: "artium-axi doctor" },
|
|
41646
|
+
update: { usage: "artium-axi update", purpose: "Download and verify the server\u2019s client, replace this file and keep a .bak backup. npm installations must use npm install -g @knowttl/artium-axi.", flags: [], example: "artium-axi update" },
|
|
41647
|
+
"falcon-axi": {
|
|
41648
|
+
usage: "artium-axi falcon-axi [<args>]",
|
|
41649
|
+
purpose: "Run Falcon commands with your managed credentials.",
|
|
41650
|
+
flags: ["Arguments after falcon-axi are forwarded upstream, including --help."],
|
|
41651
|
+
example: `artium-axi falcon-axi ${falcon_axi_default.discovery.example.join(" ")}`
|
|
41652
|
+
},
|
|
41653
|
+
"vectra-axi": {
|
|
41654
|
+
usage: "artium-axi vectra-axi [<args>]",
|
|
41655
|
+
purpose: "Run Vectra commands with your managed credentials.",
|
|
41656
|
+
flags: ["Arguments after vectra-axi are forwarded upstream, including --help."],
|
|
41657
|
+
example: `artium-axi vectra-axi ${vectra_axi_default.discovery.example.join(" ")}`
|
|
41658
|
+
},
|
|
41659
|
+
"ldap-axi": {
|
|
41660
|
+
usage: "artium-axi ldap-axi [<args>]",
|
|
41661
|
+
purpose: "Read directory data with the managed LDAP bind identity.",
|
|
41662
|
+
flags: ["Arguments after ldap-axi are forwarded upstream, including --help."],
|
|
41663
|
+
example: `artium-axi ldap-axi ${ldap_axi_default.discovery.example.join(" ")}`
|
|
41664
|
+
},
|
|
41665
|
+
"ado-axi": {
|
|
41666
|
+
usage: "artium-axi ado-axi [<args>]",
|
|
41667
|
+
purpose: "Run Azure DevOps commands with managed credentials.",
|
|
41668
|
+
flags: ["Arguments after ado-axi include --help. Organization and credentials are managed by Artium; api is GET only; writes are off by default."],
|
|
41669
|
+
example: "artium-axi ado-axi project list --limit 1"
|
|
41670
|
+
},
|
|
41671
|
+
"awx-axi": {
|
|
41672
|
+
usage: "artium-axi awx-axi [<args>]",
|
|
41673
|
+
purpose: "Inspect AWX automation with managed credentials.",
|
|
41674
|
+
flags: ["Arguments after awx-axi include --help. Operational writes are off by default; configuration, deletion and security writes are blocked."],
|
|
41675
|
+
example: "artium-axi awx-axi job list --limit 1"
|
|
41676
|
+
},
|
|
41677
|
+
"tenable-axi": {
|
|
41678
|
+
usage: "artium-axi tenable-axi [<args>]",
|
|
41679
|
+
purpose: "Investigate Tenable One with managed API keys.",
|
|
41680
|
+
flags: ["Writes and export jobs are off by default and require administrator-enabled operations, preview, --execute and exact --confirm. Downloads are blocked."],
|
|
41681
|
+
example: "artium-axi tenable-axi card list --limit 1"
|
|
41682
|
+
},
|
|
41683
|
+
"az-axi": {
|
|
41684
|
+
usage: "artium-axi az-axi [<args>]",
|
|
41685
|
+
purpose: "Run Azure commands with your managed identity.",
|
|
41686
|
+
flags: ["Arguments after az-axi are forwarded upstream, including --help."],
|
|
41687
|
+
example: "artium-axi az-axi sub list"
|
|
41688
|
+
},
|
|
41689
|
+
"mg-axi": {
|
|
41690
|
+
usage: "artium-axi mg-axi [<args>]",
|
|
41691
|
+
purpose: "Run Microsoft Graph commands with your managed identity.",
|
|
41692
|
+
flags: ["Arguments after mg-axi are forwarded upstream, including --help."],
|
|
41693
|
+
example: "artium-axi mg-axi entra user list"
|
|
41694
|
+
},
|
|
41695
|
+
"managed-session": {
|
|
41696
|
+
usage: "artium-axi --managed-session <command> [<args>]",
|
|
41697
|
+
purpose: "Let a caller supply and persist sessions through private pipes.",
|
|
41698
|
+
flags: [],
|
|
41699
|
+
example: "artium-axi --managed-session whoami"
|
|
41700
|
+
}
|
|
41701
|
+
};
|
|
41702
|
+
function commandHelp(command) {
|
|
41703
|
+
const entry = commands[command];
|
|
41704
|
+
const flags = [
|
|
41705
|
+
toolSchema.safeParse(command).success ? "--help before the tool name (default false)" : "--help (default false)",
|
|
41706
|
+
...entry.flags,
|
|
41707
|
+
...command === "update" ? [] : ["--managed-session before the command (default false; caller-owned sessions; see artium-axi --managed-session --help)"]
|
|
41708
|
+
];
|
|
41709
|
+
const protocol = [
|
|
41710
|
+
"Session JSON on inherited pipe fd 3, new sessions and rotations as JSON lines on private pipe fd 4; no session file.",
|
|
41711
|
+
"Managed input: {serverUrl, accessToken, refreshToken?}; close fd 3 after JSON (64 KiB maximum). Output: {serverUrl, status, accessToken, refreshToken, accessExpiresAt, familyExpiresAt} per rotation, before retry, including on later failure.",
|
|
41712
|
+
"Managed login: fd 3 is unused; fd 4 must be a writable private pipe/socket. Local sign-in requires --username <username> --password-stdin with protected inherited stdin; password argv and ARTIUM_AXI_PASSWORD are refused. SSO uses login --sso and displays browser approval instructions immediately. New sessions use the rotation envelope; password-change-required returns {serverUrl, status, passwordChangeToken, passwordChangeExpiresAt} on fd 4 and exits 1.",
|
|
41713
|
+
"Managed exits: 0 success; 2 invalid JSON/descriptors or refused passwd/logout/setup/update; 1 authentication/transport failure; tool exit codes pass through. Only TOKEN_EXPIRED permits one refresh/retry; without refreshToken or on refusal, return control to the caller."
|
|
41714
|
+
];
|
|
41715
|
+
const purposes = command === "home" ? `commands[${Object.keys(commands).length - 2}]{command,purpose}:
|
|
41716
|
+
${Object.entries(commands).filter(([name]) => name !== "home" && name !== "managed-session").map(([name, value]) => ` ${name},${JSON.stringify(value.purpose)}`).join("\n")}
|
|
41717
|
+
` : "";
|
|
41718
|
+
return `purpose: ${entry.purpose}
|
|
41719
|
+
usage: ${entry.usage}
|
|
41720
|
+
${purposes}flags[${flags.length}]:
|
|
41721
|
+
${flags.map((flag) => ` - ${JSON.stringify(flag)}`).join("\n")}
|
|
41722
|
+
example: ${entry.example}
|
|
41723
|
+
` + (command === "login" || command === "managed-session" ? `managedSession[${protocol.length}]:
|
|
41724
|
+
${protocol.map((line) => ` - ${JSON.stringify(line)}`).join("\n")}
|
|
41725
|
+
` : "");
|
|
41726
|
+
}
|
|
41727
|
+
function validateArguments(args, prefixHelp) {
|
|
41728
|
+
const command = args[0];
|
|
41729
|
+
if (command === "tools") args = [...args.filter((arg) => arg !== "--help"), ...args.filter((arg) => arg === "--help")];
|
|
41730
|
+
const rootFlags = "--help, --version, --managed-session (before the command)";
|
|
41731
|
+
const rootCommands = Object.keys(commands).filter((name) => name !== "home" && name !== "managed-session" && name !== "tools show").join(", ");
|
|
41732
|
+
function fail(token, level2, choices2) {
|
|
41733
|
+
const kind = token?.startsWith("-") ? "flag" : "argument";
|
|
41734
|
+
const message = token === void 0 ? `Missing argument for ${level2}.` : command === "login" || command === "passwd" ? `Unexpected argument at position ${args.indexOf(token) + 1} for ${level2}. Password arguments are refused.` : `Unknown or unexpected ${kind} ${JSON.stringify(kind === "flag" ? token.split("=")[0] : token)} for ${level2}.`;
|
|
41735
|
+
throw new ArtiumError("INVALID_INPUT", message, choices2);
|
|
41736
|
+
}
|
|
41737
|
+
if (!command) return;
|
|
41738
|
+
if (command === "--version" && args.length === 1) return;
|
|
41739
|
+
if (!Object.hasOwn(commands, command) || command === "home" || command === "managed-session" || command === "tools show") {
|
|
41740
|
+
fail(command, "artium-axi", `Valid commands: ${rootCommands}. Valid flags: ${rootFlags}.`);
|
|
41741
|
+
}
|
|
41742
|
+
if (toolSchema.safeParse(command).success) {
|
|
41743
|
+
if (prefixHelp && args.length > 1) fail(args[1], command, `Use artium-axi --help ${command} for local help; artium-axi ${command} --help for upstream flags.`);
|
|
41744
|
+
return;
|
|
41745
|
+
}
|
|
41746
|
+
let level = command;
|
|
41747
|
+
let start = 1;
|
|
41748
|
+
if (command === "tools" && args[1] === "show") {
|
|
41749
|
+
level = "tools show";
|
|
41750
|
+
start = 2;
|
|
41751
|
+
}
|
|
41752
|
+
const entry = commands[level];
|
|
41753
|
+
const validFlags = ["--help", ...entry.flags.map((flag) => flag.split(" ")[0])];
|
|
41754
|
+
const choices = `Valid flags for ${level}: ${validFlags.join(", ")}.` + (level === "tools" ? " Valid subcommands: show <tool>." : level === "tools show" ? ` Valid tools: ${toolSchema.options.join(", ")}.` : "");
|
|
41755
|
+
let tool = false;
|
|
41756
|
+
const seen = /* @__PURE__ */ new Set();
|
|
41757
|
+
for (let index = start; index < args.length; index++) {
|
|
41758
|
+
const token = args[index];
|
|
41759
|
+
if (level === "tools show" && !token.startsWith("-") && !tool) {
|
|
41760
|
+
if (!toolSchema.safeParse(token).success) fail(token, level, choices);
|
|
41761
|
+
tool = true;
|
|
41762
|
+
} else {
|
|
41763
|
+
if (!validFlags.includes(token) || seen.has(token)) fail(token, level, choices);
|
|
41764
|
+
seen.add(token);
|
|
41765
|
+
if (token === "--username" || token === "--host") {
|
|
41766
|
+
const value = args[index + 1];
|
|
41767
|
+
if (!value) fail(value, `${level} ${token}`, `Supply ${token} ${token === "--host" ? "<claude|codex|opencode|pi>" : "<username>"}. ${choices}`);
|
|
41768
|
+
if (token === "--host" && !["claude", "codex", "opencode", "pi"].includes(value)) fail(value, `${level} --host`, `Valid hosts: claude, codex, opencode, pi. Use ${entry.usage}.`);
|
|
41769
|
+
index++;
|
|
41770
|
+
}
|
|
41771
|
+
}
|
|
41772
|
+
}
|
|
41773
|
+
if (level === "tools show" && !tool && !seen.has("--help") && !prefixHelp) fail(void 0, level, choices);
|
|
41774
|
+
}
|
|
41775
|
+
function helpCommand(args, prefixHelp = false) {
|
|
41776
|
+
if (args[0] === "setup" && args.includes("--help")) {
|
|
41777
|
+
const path2 = args.filter((arg) => arg !== "--help");
|
|
41778
|
+
for (let index = 1; index < path2.length; index++) {
|
|
41779
|
+
if (path2[index] === "--host" && ["claude", "codex", "opencode", "pi"].includes(path2[index + 1])) index++;
|
|
41780
|
+
else if (path2[index] !== "--hook" && path2[index] !== "--force") return void 0;
|
|
41781
|
+
}
|
|
41782
|
+
return "setup";
|
|
41783
|
+
}
|
|
41784
|
+
if (toolSchema.safeParse(args[0]).success) return prefixHelp && args.length === 2 ? args[0] : void 0;
|
|
41785
|
+
if (args[0] === "login" || args[0] === "passwd") {
|
|
41786
|
+
if (args[0] === "login" && args.length === 3 && args.includes("--sso") && args.includes("--help")) return "login";
|
|
41787
|
+
let requested = false;
|
|
41788
|
+
let username = false;
|
|
41789
|
+
let stdin = false;
|
|
41790
|
+
for (let index = 1; index < args.length; index++) {
|
|
41791
|
+
const option = args[index];
|
|
41792
|
+
if (option === "--username" && args[0] === "login" && !username && args[index + 1] !== void 0) {
|
|
41793
|
+
username = true;
|
|
41794
|
+
index++;
|
|
41795
|
+
} else if (option === "--password-stdin" && !stdin) stdin = true;
|
|
41796
|
+
else if (option === "--help" && !requested) requested = true;
|
|
41797
|
+
else return void 0;
|
|
41798
|
+
}
|
|
41799
|
+
return requested ? args[0] : void 0;
|
|
41800
|
+
}
|
|
41801
|
+
if (!args.includes("--help")) return void 0;
|
|
41802
|
+
const path = args.filter((arg) => arg !== "--help");
|
|
41803
|
+
if (path.length === 0) return "home";
|
|
41804
|
+
if (path[0] === "tools" && path[1] === "show" && (path.length === 2 || path.length === 3 && toolSchema.safeParse(path[2]).success)) return "tools show";
|
|
41805
|
+
if (path.length === 1 && path[0] !== "home" && Object.hasOwn(commands, path[0])) return path[0];
|
|
41806
|
+
return void 0;
|
|
41807
|
+
}
|
|
41808
|
+
|
|
40352
41809
|
// src/cli/setup.ts
|
|
40353
41810
|
import { createHash, randomUUID as randomUUID2 } from "node:crypto";
|
|
40354
41811
|
import { existsSync as existsSync2, mkdirSync as mkdirSync2, readFileSync as readFileSync3, renameSync as renameSync2, rmSync as rmSync2, statSync as statSync2, writeFileSync as writeFileSync2 } from "node:fs";
|
|
40355
41812
|
import { homedir as homedir2 } from "node:os";
|
|
40356
|
-
import { dirname as dirname2, join as join2, resolve } from "node:path";
|
|
41813
|
+
import { dirname as dirname2, join as join2, resolve as resolve2 } from "node:path";
|
|
40357
41814
|
|
|
40358
41815
|
// skill/artium-axi/SKILL.md
|
|
40359
41816
|
var SKILL_default = "---\nname: artium-axi\ndescription: Discover and run managed commands through Artium, using the signed-in account and its granted tools.\n---\n\nUse artium-axi tools first for requests involving data from Artium-managed tools.\nRun `artium-axi tools` to discover the tools available to this account before choosing a tool.\nRun `artium-axi tools show <tool>` for its commands and a vetted example, then run `artium-axi <tool> <args>`.\nFollow the returned next commands; they already include the Artium prefix.\nKeep upstream arguments intact and use the managed credentials rather than configuring an upstream CLI directly.\n\nIf artium-axi is absent from PATH, use the installed command below in place of `artium-axi` in every example:\n\n<!-- artium-axi executable -->\nThe setup command records the standalone bundle's Node invocation here.\n<!-- /artium-axi executable -->\n\nIf sign-in is required, ask the user to follow `artium-axi login --help` for their SSO or local account.\nNever request or print tokens or put passwords in arguments.\nAn empty tool list means no enabled runtime tool is available through the account's roles; ask an administrator to check grants and enabled tools.\nUse `artium-axi doctor` for connection or cached health diagnostics.\nDo not retry an uncertain command outcome, especially a write.\n";
|
|
@@ -40452,7 +41909,7 @@ async function setup(args) {
|
|
|
40452
41909
|
if (hook && host !== "claude") {
|
|
40453
41910
|
throw new ArtiumError("INVALID_INPUT", `Hook installation is unsupported for ${host}: this installer has no verified ${host} hook implementation. No files were written.`, `Install the skill with artium-axi setup --host ${host} without --hook; Claude Code supports --hook.`);
|
|
40454
41911
|
}
|
|
40455
|
-
const executable =
|
|
41912
|
+
const executable = resolve2(process.argv[1]);
|
|
40456
41913
|
const invocation = process.platform === "win32" ? `& '${process.execPath.replaceAll("'", "''")}' '${executable.replaceAll("'", "''")}'` : `${quote(process.execPath)} ${quote(executable)}`;
|
|
40457
41914
|
const executableBlock = `<!-- artium-axi executable -->
|
|
40458
41915
|
|
|
@@ -40462,7 +41919,7 @@ ${invocation}
|
|
|
40462
41919
|
|
|
40463
41920
|
<!-- /artium-axi executable -->`;
|
|
40464
41921
|
const content = SKILL_default.replace(/<!-- artium-axi executable -->[\s\S]*?<!-- \/artium-axi executable -->/, () => executableBlock);
|
|
40465
|
-
const hostDirectory = host === "claude" && process.env.CLAUDE_CONFIG_DIR ?
|
|
41922
|
+
const hostDirectory = host === "claude" && process.env.CLAUDE_CONFIG_DIR ? resolve2(process.env.CLAUDE_CONFIG_DIR) : host === "pi" && process.env.PI_CODING_AGENT_DIR ? resolve2(process.env.PI_CODING_AGENT_DIR.replace(/^~(?=\/|$)/, () => homedir2())) : join2(homedir2(), ...hosts[host]);
|
|
40466
41923
|
const client = new Client();
|
|
40467
41924
|
const response = skillsResponseSchema.safeParse(await client.authenticated("/v1/skills", "GET"));
|
|
40468
41925
|
if (!response.success) throw new ArtiumError("INVALID_RESPONSE");
|
|
@@ -40581,6 +42038,7 @@ expires: ${new Date(device.expiresAt).toISOString()}
|
|
|
40581
42038
|
if (managed2) await managed2.emit(client.serverUrl, session);
|
|
40582
42039
|
else await client.sessions.locked(async () => {
|
|
40583
42040
|
client.sessions.write(session);
|
|
42041
|
+
client.sessions.writeClientConfig(client.caFile);
|
|
40584
42042
|
});
|
|
40585
42043
|
const message = `status: authenticated
|
|
40586
42044
|
session-ends: ${new Date(session.familyExpiresAt).toISOString()}
|
|
@@ -40735,9 +42193,9 @@ var ManagedSession = class _ManagedSession {
|
|
|
40735
42193
|
if (session.status === "authenticated") this.protect(session.accessToken, session.refreshToken);
|
|
40736
42194
|
else this.protect(session.passwordChangeToken);
|
|
40737
42195
|
try {
|
|
40738
|
-
await new Promise((
|
|
42196
|
+
await new Promise((resolve4, reject) => {
|
|
40739
42197
|
this.channel.write(`${JSON.stringify({ serverUrl, ...session })}
|
|
40740
|
-
`, (error62) => error62 ? reject(error62) :
|
|
42198
|
+
`, (error62) => error62 ? reject(error62) : resolve4());
|
|
40741
42199
|
});
|
|
40742
42200
|
} catch {
|
|
40743
42201
|
throw new ArtiumError(
|
|
@@ -40761,9 +42219,45 @@ var ManagedSession = class _ManagedSession {
|
|
|
40761
42219
|
}
|
|
40762
42220
|
};
|
|
40763
42221
|
|
|
42222
|
+
// src/cli/update.ts
|
|
42223
|
+
import { createHash as createHash2, randomUUID as randomUUID3 } from "node:crypto";
|
|
42224
|
+
import { copyFileSync, existsSync as existsSync3, readFileSync as readFileSync4, realpathSync, renameSync as renameSync3, rmSync as rmSync3, statSync as statSync3, writeFileSync as writeFileSync3 } from "node:fs";
|
|
42225
|
+
import { dirname as dirname3, join as join3 } from "node:path";
|
|
42226
|
+
async function update() {
|
|
42227
|
+
const executable = realpathSync(process.argv[1]);
|
|
42228
|
+
const metadata = join3(dirname3(executable), "..", "package.json");
|
|
42229
|
+
if (existsSync3(metadata) && JSON.parse(readFileSync4(metadata, "utf8")).name === "@knowttl/artium-axi") {
|
|
42230
|
+
throw new ArtiumError("INVALID_INPUT", "This client was installed from npm.", "Run npm install -g @knowttl/artium-axi@latest.");
|
|
42231
|
+
}
|
|
42232
|
+
const client = new Client();
|
|
42233
|
+
const bundle = await client.request("/cli/artium-axi.mjs", "GET", void 0, void 0, true);
|
|
42234
|
+
const checksum2 = await client.request("/cli/artium-axi.mjs.sha256", "GET", void 0, void 0, true);
|
|
42235
|
+
const digest = checksum2.toString("utf8").trim().split(/\s+/)[0];
|
|
42236
|
+
if (!/^[a-fA-F0-9]{64}$/.test(digest) || createHash2("sha256").update(bundle).digest("hex") !== digest.toLowerCase()) {
|
|
42237
|
+
throw new ArtiumError("INVALID_RESPONSE", "The downloaded client failed SHA-256 verification.", "Run artium-axi update again after checking the server bundle and checksum.");
|
|
42238
|
+
}
|
|
42239
|
+
const temporary = `${executable}.${randomUUID3()}.tmp`;
|
|
42240
|
+
try {
|
|
42241
|
+
writeFileSync3(temporary, bundle, { flag: "wx", mode: statSync3(executable).mode & 511 });
|
|
42242
|
+
copyFileSync(executable, `${executable}.bak`);
|
|
42243
|
+
renameSync3(temporary, executable);
|
|
42244
|
+
} catch {
|
|
42245
|
+
throw new ArtiumError("INTERNAL_ERROR", "The client could not be replaced.", "Check write permissions for the client file and its directory, then run artium-axi update.");
|
|
42246
|
+
} finally {
|
|
42247
|
+
rmSync3(temporary, { force: true });
|
|
42248
|
+
}
|
|
42249
|
+
return "status: updated\nnext: artium-axi --version\n";
|
|
42250
|
+
}
|
|
42251
|
+
|
|
40764
42252
|
// src/cli/main.ts
|
|
40765
42253
|
var managed;
|
|
42254
|
+
for (const stream of [process.stdout, process.stderr]) {
|
|
42255
|
+
stream.on("error", (error62) => {
|
|
42256
|
+
if (error62.code !== "EPIPE") throw error62;
|
|
42257
|
+
});
|
|
42258
|
+
}
|
|
40766
42259
|
function output2(stream, text2) {
|
|
42260
|
+
if (process[stream].destroyed) return;
|
|
40767
42261
|
if (managed) managed.write(stream, text2);
|
|
40768
42262
|
else process[stream].write(text2);
|
|
40769
42263
|
}
|
|
@@ -40791,7 +42285,7 @@ async function main(args) {
|
|
|
40791
42285
|
return;
|
|
40792
42286
|
}
|
|
40793
42287
|
if (managedMode) {
|
|
40794
|
-
if (["passwd", "logout", "setup"].includes(args[0])) {
|
|
42288
|
+
if (["passwd", "logout", "setup", "update"].includes(args[0])) {
|
|
40795
42289
|
throw new ArtiumError(
|
|
40796
42290
|
"INVALID_INPUT",
|
|
40797
42291
|
"This command is unavailable in managed session mode.",
|
|
@@ -40800,6 +42294,10 @@ async function main(args) {
|
|
|
40800
42294
|
}
|
|
40801
42295
|
managed = await ManagedSession.read(args[0] === "login");
|
|
40802
42296
|
}
|
|
42297
|
+
if (command === "update") {
|
|
42298
|
+
output2("stdout", await update());
|
|
42299
|
+
return;
|
|
42300
|
+
}
|
|
40803
42301
|
if (command === "setup") {
|
|
40804
42302
|
output2("stdout", await setup(args.slice(1)));
|
|
40805
42303
|
return;
|
|
@@ -40854,7 +42352,10 @@ async function main(args) {
|
|
|
40854
42352
|
const parsed = loginResponseSchema.safeParse(await client2.request("/v1/auth/login", "POST", { username, password }));
|
|
40855
42353
|
if (!parsed.success) throw new ArtiumError("INVALID_RESPONSE");
|
|
40856
42354
|
if (managed) await managed.emit(client2.serverUrl, parsed.data);
|
|
40857
|
-
else
|
|
42355
|
+
else {
|
|
42356
|
+
client2.sessions.write(parsed.data);
|
|
42357
|
+
client2.sessions.writeClientConfig(client2.caFile);
|
|
42358
|
+
}
|
|
40858
42359
|
return parsed.data;
|
|
40859
42360
|
};
|
|
40860
42361
|
const session = await (managed ? signIn() : client2.sessions.locked(signIn));
|
|
@@ -40916,7 +42417,7 @@ remoteRevocation: ${verified ? "verified" : "unverified"}
|
|
|
40916
42417
|
if (home) {
|
|
40917
42418
|
const tools = toolsResponseSchema.safeParse(await client.authenticated("/v1/tools", "GET", void 0, homeSession));
|
|
40918
42419
|
if (!tools.success) throw new ArtiumError("INVALID_RESPONSE");
|
|
40919
|
-
const executable =
|
|
42420
|
+
const executable = resolve3(process.argv[1]);
|
|
40920
42421
|
const local = relative(homedir3(), executable);
|
|
40921
42422
|
const bin = local && !isAbsolute(local) && !local.startsWith(`..${sep}`) && local !== ".." ? `~${sep}${local}` : executable;
|
|
40922
42423
|
view = `bin: ${JSON.stringify(bin)}
|
|
@@ -40950,11 +42451,11 @@ ${Object.entries(response.error).map(([key, value]) => ` ${key}: ${JSON.stringi
|
|
|
40950
42451
|
`);
|
|
40951
42452
|
process.exitCode = errors[response.error.code].exitCode;
|
|
40952
42453
|
}
|
|
40953
|
-
main(process.argv.slice(2)).catch((error62) => printError(errorResponse(error62 instanceof ArtiumError ? error62 : new ArtiumError("INTERNAL_ERROR"),
|
|
42454
|
+
main(process.argv.slice(2)).catch((error62) => printError(errorResponse(error62 instanceof ArtiumError ? error62 : new ArtiumError("INTERNAL_ERROR"), randomUUID4()))).then(() => {
|
|
40954
42455
|
try {
|
|
40955
42456
|
managed?.flush();
|
|
40956
42457
|
} catch {
|
|
40957
42458
|
managed = void 0;
|
|
40958
|
-
printError(errorResponse(new ArtiumError("SECRET_IN_OUTPUT"),
|
|
42459
|
+
printError(errorResponse(new ArtiumError("SECRET_IN_OUTPUT"), randomUUID4()));
|
|
40959
42460
|
}
|
|
40960
42461
|
});
|