@knowttl/artium-axi 0.0.9 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -16
- package/bin/artium-axi.mjs +2623 -1014
- 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." },
|
|
@@ -19775,7 +19775,7 @@ function errorResponse(error62, requestId) {
|
|
|
19775
19775
|
var inputLimits = {
|
|
19776
19776
|
requestBytes: 16 * 1024 * 1024,
|
|
19777
19777
|
arguments: 64,
|
|
19778
|
-
argumentBytes:
|
|
19778
|
+
argumentBytes: 64 * 1024,
|
|
19779
19779
|
stdinBytes: 512 * 1024,
|
|
19780
19780
|
fileBytes: 1024 * 1024,
|
|
19781
19781
|
totalFileBytes: 4 * 1024 * 1024,
|
|
@@ -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)
|
|
@@ -20045,7 +20046,34 @@ var adminAuditRoute = {
|
|
|
20045
20046
|
authorization: "administrator-and-recent-auth",
|
|
20046
20047
|
auditEvent: null
|
|
20047
20048
|
};
|
|
20049
|
+
var falconRtrSettingsSchema = external_exports.strictObject({
|
|
20050
|
+
enabled: external_exports.boolean(),
|
|
20051
|
+
commands: external_exports.array(external_exports.enum([
|
|
20052
|
+
"cat",
|
|
20053
|
+
"cd",
|
|
20054
|
+
"clear",
|
|
20055
|
+
"csrutil",
|
|
20056
|
+
"env",
|
|
20057
|
+
"eventlog",
|
|
20058
|
+
"filehash",
|
|
20059
|
+
"getsid",
|
|
20060
|
+
"help",
|
|
20061
|
+
"history",
|
|
20062
|
+
"ifconfig",
|
|
20063
|
+
"ipconfig",
|
|
20064
|
+
"ls",
|
|
20065
|
+
"mount",
|
|
20066
|
+
"netstat",
|
|
20067
|
+
"ps",
|
|
20068
|
+
"reg query",
|
|
20069
|
+
"users"
|
|
20070
|
+
])).optional()
|
|
20071
|
+
});
|
|
20048
20072
|
var nativeSettingsSchemas = {
|
|
20073
|
+
"tenable-axi": external_exports.strictObject({ writes: external_exports.strictObject({
|
|
20074
|
+
allowWrites: external_exports.boolean(),
|
|
20075
|
+
operations: external_exports.array(external_exports.string().regex(/^[A-Za-z0-9][A-Za-z0-9_-]*$/)).min(1).max(64)
|
|
20076
|
+
}).optional() }),
|
|
20049
20077
|
"awx-axi": external_exports.strictObject({ allowWrites: external_exports.boolean().optional() }),
|
|
20050
20078
|
"ldap-axi": external_exports.strictObject({}),
|
|
20051
20079
|
"ado-axi": external_exports.strictObject({ allowWrites: external_exports.boolean().optional() }),
|
|
@@ -20053,7 +20081,7 @@ var nativeSettingsSchemas = {
|
|
|
20053
20081
|
allowWrites: external_exports.boolean(),
|
|
20054
20082
|
operations: external_exports.array(external_exports.string().min(1).max(256)).min(1).max(64)
|
|
20055
20083
|
}).optional() }),
|
|
20056
|
-
"falcon-axi": external_exports.strictObject({ allowWrites: external_exports.boolean().optional() }),
|
|
20084
|
+
"falcon-axi": external_exports.strictObject({ allowWrites: external_exports.boolean().optional(), rtr: falconRtrSettingsSchema.optional() }),
|
|
20057
20085
|
"vectra-axi": external_exports.strictObject({ writes: external_exports.strictObject({
|
|
20058
20086
|
allowWrites: external_exports.boolean(),
|
|
20059
20087
|
operations: external_exports.array(external_exports.string().min(1).refine((value) => value.trim().length > 0)).min(1)
|
|
@@ -20091,10 +20119,25 @@ var healthSchema = external_exports.strictObject({
|
|
|
20091
20119
|
credentialRevision: external_exports.number().int().nullable(),
|
|
20092
20120
|
errorCode: external_exports.enum(Object.keys(errors)).nullable()
|
|
20093
20121
|
});
|
|
20122
|
+
var toolWriteStateSchema = external_exports.strictObject({
|
|
20123
|
+
capable: external_exports.boolean(),
|
|
20124
|
+
enabled: external_exports.boolean(),
|
|
20125
|
+
reason: external_exports.string().nullable(),
|
|
20126
|
+
supportedOperations: external_exports.array(external_exports.string()).nullable(),
|
|
20127
|
+
allowedOperations: external_exports.array(external_exports.string()),
|
|
20128
|
+
unlocks: external_exports.string(),
|
|
20129
|
+
blocked: external_exports.string()
|
|
20130
|
+
});
|
|
20131
|
+
var writeAccessInputSchema = external_exports.strictObject({
|
|
20132
|
+
enabled: external_exports.boolean(),
|
|
20133
|
+
operations: external_exports.array(external_exports.string().min(1).max(256)).max(64).refine((operations) => new Set(operations).size === operations.length).optional(),
|
|
20134
|
+
expectedRevision: external_exports.number().int().positive()
|
|
20135
|
+
});
|
|
20094
20136
|
var adminToolSchema = external_exports.strictObject({
|
|
20095
20137
|
name: toolSchema,
|
|
20096
20138
|
enabled: external_exports.boolean(),
|
|
20097
20139
|
version: external_exports.string(),
|
|
20140
|
+
writeAccess: toolWriteStateSchema,
|
|
20098
20141
|
readOnly: external_exports.boolean().default(true),
|
|
20099
20142
|
nativeSettings: external_exports.record(external_exports.string(), external_exports.unknown()),
|
|
20100
20143
|
revision: external_exports.number().int().positive(),
|
|
@@ -20177,6 +20220,26 @@ var adminCertificateRoutes = {
|
|
|
20177
20220
|
}
|
|
20178
20221
|
};
|
|
20179
20222
|
var adminToolRoutes = {
|
|
20223
|
+
get: {
|
|
20224
|
+
method: "GET",
|
|
20225
|
+
path: "/v1/admin/tools/:tool",
|
|
20226
|
+
input: external_exports.strictObject({}),
|
|
20227
|
+
response: adminToolSchema,
|
|
20228
|
+
authorization: "administrator-and-recent-auth",
|
|
20229
|
+
auditEvent: null
|
|
20230
|
+
},
|
|
20231
|
+
// Changes only write policy. Omitted operations retain the current allow-list; an empty
|
|
20232
|
+
// list clears it while disabling. Graph and Vectra require a supported nonempty allow-list
|
|
20233
|
+
// when enabling; tools without an allow-list reject operations input.
|
|
20234
|
+
// Other native settings and credentials are preserved. Revision conflicts never mutate.
|
|
20235
|
+
writeAccess: {
|
|
20236
|
+
method: "PATCH",
|
|
20237
|
+
path: "/v1/admin/tools/:tool/write-access",
|
|
20238
|
+
input: writeAccessInputSchema,
|
|
20239
|
+
response: adminToolSchema,
|
|
20240
|
+
authorization: "administrator-and-recent-auth",
|
|
20241
|
+
auditEvent: "tool-write-access"
|
|
20242
|
+
},
|
|
20180
20243
|
list: {
|
|
20181
20244
|
method: "GET",
|
|
20182
20245
|
path: "/v1/admin/tools",
|
|
@@ -20559,11 +20622,12 @@ import { readFileSync as readFileSync2 } from "node:fs";
|
|
|
20559
20622
|
import { request as httpRequest } from "node:http";
|
|
20560
20623
|
import { request as httpsRequest } from "node:https";
|
|
20561
20624
|
import { rootCertificates } from "node:tls";
|
|
20625
|
+
import { resolve } from "node:path";
|
|
20562
20626
|
|
|
20563
20627
|
// package.json
|
|
20564
20628
|
var package_default = {
|
|
20565
20629
|
name: "artium-axi",
|
|
20566
|
-
version: "0.0.
|
|
20630
|
+
version: "0.0.11",
|
|
20567
20631
|
private: true,
|
|
20568
20632
|
license: "MIT",
|
|
20569
20633
|
type: "module",
|
|
@@ -20641,8 +20705,20 @@ function sessionPath(platform = process.platform, environment = process.env, hom
|
|
|
20641
20705
|
if (!base) throw new ArtiumError("CLIENT_CONFIG_INVALID", void 0, "Set APPDATA to your writable roaming configuration folder, then sign in again.");
|
|
20642
20706
|
return paths.join(base, "artium-axi", "session.json");
|
|
20643
20707
|
}
|
|
20708
|
+
function clientConfigPath(platform = process.platform, environment = process.env, home = homedir()) {
|
|
20709
|
+
return sessionPath(platform, environment, home).replace(/session\.json$/, "config.json");
|
|
20710
|
+
}
|
|
20711
|
+
function readClientConfig(environment = process.env) {
|
|
20712
|
+
try {
|
|
20713
|
+
return external_exports.object({ serverUrl: external_exports.string(), caFile: external_exports.string().optional() }).parse(JSON.parse(readFileSync(clientConfigPath(process.platform, environment), "utf8")));
|
|
20714
|
+
} catch (error62) {
|
|
20715
|
+
if (error62.code === "ENOENT") return void 0;
|
|
20716
|
+
if (error62 instanceof ArtiumError) throw error62;
|
|
20717
|
+
throw new ArtiumError("CLIENT_CONFIG_INVALID");
|
|
20718
|
+
}
|
|
20719
|
+
}
|
|
20644
20720
|
function restrictWindowsAcl(path, directory) {
|
|
20645
|
-
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')) };
|
|
20721
|
+
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)`;
|
|
20646
20722
|
execFileSync("powershell.exe", ["-NoProfile", "-NonInteractive", "-EncodedCommand", Buffer.from(script, "utf16le").toString("base64")], {
|
|
20647
20723
|
stdio: "ignore",
|
|
20648
20724
|
env: { ...process.env, ARTIUM_AXI_SESSION_ACL_PATH: path, ARTIUM_AXI_SESSION_ACL_KIND: directory ? "directory" : "file" }
|
|
@@ -20706,6 +20782,26 @@ var SessionStore = class {
|
|
|
20706
20782
|
rmSync(temporary, { force: true });
|
|
20707
20783
|
}
|
|
20708
20784
|
}
|
|
20785
|
+
writeClientConfig(caFile) {
|
|
20786
|
+
this.secureDirectory();
|
|
20787
|
+
const temporary = join(this.directory, `${randomUUID()}.tmp`);
|
|
20788
|
+
try {
|
|
20789
|
+
const file2 = openSync(temporary, "wx", 384);
|
|
20790
|
+
try {
|
|
20791
|
+
if (this.platform === "win32") this.acl(temporary, false);
|
|
20792
|
+
else fchmodSync(file2, 384);
|
|
20793
|
+
writeFileSync(file2, JSON.stringify({ serverUrl: this.serverUrl, caFile }));
|
|
20794
|
+
fsyncSync(file2);
|
|
20795
|
+
} finally {
|
|
20796
|
+
closeSync(file2);
|
|
20797
|
+
}
|
|
20798
|
+
renameSync(temporary, join(this.directory, "config.json"));
|
|
20799
|
+
} catch {
|
|
20800
|
+
throw new ArtiumError("SESSION_STORAGE_UNAVAILABLE");
|
|
20801
|
+
} finally {
|
|
20802
|
+
rmSync(temporary, { force: true });
|
|
20803
|
+
}
|
|
20804
|
+
}
|
|
20709
20805
|
remove() {
|
|
20710
20806
|
try {
|
|
20711
20807
|
rmSync(this.file, { force: true });
|
|
@@ -20720,8 +20816,8 @@ var SessionStore = class {
|
|
|
20720
20816
|
while (true) {
|
|
20721
20817
|
const watcher = watch(this.directory);
|
|
20722
20818
|
let timer;
|
|
20723
|
-
const changed = new Promise((
|
|
20724
|
-
watcher.once("change", () =>
|
|
20819
|
+
const changed = new Promise((resolve4, reject) => {
|
|
20820
|
+
watcher.once("change", () => resolve4());
|
|
20725
20821
|
watcher.once("error", () => reject(new ArtiumError("SESSION_STORAGE_UNAVAILABLE")));
|
|
20726
20822
|
timer = setTimeout(() => reject(new ArtiumError("SESSION_BUSY")), Math.max(0, deadline - Date.now()));
|
|
20727
20823
|
});
|
|
@@ -20750,11 +20846,14 @@ var SessionStore = class {
|
|
|
20750
20846
|
var DEFAULT_REQUEST_DEADLINE_MS = 9e4;
|
|
20751
20847
|
var Client = class {
|
|
20752
20848
|
constructor(environment = process.env, managed2, requestDeadlineMs = DEFAULT_REQUEST_DEADLINE_MS) {
|
|
20753
|
-
this.environment = environment;
|
|
20754
20849
|
this.managed = managed2;
|
|
20755
20850
|
this.requestDeadlineMs = requestDeadlineMs;
|
|
20756
20851
|
try {
|
|
20757
|
-
const
|
|
20852
|
+
const config2 = !managed2 && (environment.ARTIUM_AXI_URL === void 0 || environment.ARTIUM_AXI_CA_FILE === void 0) ? readClientConfig(environment) : void 0;
|
|
20853
|
+
this.serverUrlSource = environment.ARTIUM_AXI_URL === void 0 ? "config.json" : "ARTIUM_AXI_URL";
|
|
20854
|
+
const caFile = environment.ARTIUM_AXI_CA_FILE ?? config2?.caFile;
|
|
20855
|
+
this.caFile = caFile ? resolve(caFile) : void 0;
|
|
20856
|
+
const url2 = new URL(environment.ARTIUM_AXI_URL ?? config2?.serverUrl ?? "");
|
|
20758
20857
|
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();
|
|
20759
20858
|
this.serverUrl = url2.href.replace(/\/$/, "");
|
|
20760
20859
|
if (!managed2) this.storedSessions = new SessionStore(this.serverUrl, sessionPath(process.platform, environment));
|
|
@@ -20764,21 +20863,22 @@ var Client = class {
|
|
|
20764
20863
|
}
|
|
20765
20864
|
managed2?.checkServer(this.serverUrl);
|
|
20766
20865
|
}
|
|
20767
|
-
environment;
|
|
20768
20866
|
managed;
|
|
20769
20867
|
requestDeadlineMs;
|
|
20770
20868
|
serverUrl;
|
|
20869
|
+
serverUrlSource;
|
|
20870
|
+
caFile;
|
|
20771
20871
|
storedSessions;
|
|
20772
20872
|
get sessions() {
|
|
20773
20873
|
if (!this.storedSessions) throw new ArtiumError("INVALID_INPUT", "Session-file operations are unavailable in managed mode.");
|
|
20774
20874
|
return this.storedSessions;
|
|
20775
20875
|
}
|
|
20776
20876
|
certificateVerified = false;
|
|
20777
|
-
async request(path, method, input2, token) {
|
|
20877
|
+
async request(path, method, input2, token, bytes = false) {
|
|
20778
20878
|
this.certificateVerified = false;
|
|
20779
20879
|
let ca;
|
|
20780
20880
|
try {
|
|
20781
|
-
if (this.
|
|
20881
|
+
if (this.caFile) ca = [...rootCertificates, readFileSync2(this.caFile, "utf8")];
|
|
20782
20882
|
} catch {
|
|
20783
20883
|
throw new ArtiumError("CLIENT_CONFIG_INVALID");
|
|
20784
20884
|
}
|
|
@@ -20786,7 +20886,7 @@ var Client = class {
|
|
|
20786
20886
|
const controller = new AbortController();
|
|
20787
20887
|
const deadline = setTimeout(() => controller.abort(), this.requestDeadlineMs);
|
|
20788
20888
|
const url2 = new URL(`${this.serverUrl}${path}`);
|
|
20789
|
-
const result = await new Promise((
|
|
20889
|
+
const result = await new Promise((resolve4, reject) => {
|
|
20790
20890
|
const request = (url2.protocol === "https:" ? httpsRequest : httpRequest)(url2, {
|
|
20791
20891
|
method,
|
|
20792
20892
|
ca,
|
|
@@ -20804,9 +20904,9 @@ var Client = class {
|
|
|
20804
20904
|
response.on("error", () => reject(new ArtiumError("SERVER_UNAVAILABLE")));
|
|
20805
20905
|
response.on("end", () => {
|
|
20806
20906
|
try {
|
|
20807
|
-
|
|
20907
|
+
resolve4({
|
|
20808
20908
|
status: response.statusCode,
|
|
20809
|
-
body: response.statusCode === 204 ? void 0 : JSON.parse(Buffer.concat(chunks).toString("utf8")),
|
|
20909
|
+
body: bytes ? Buffer.concat(chunks) : response.statusCode === 204 ? void 0 : JSON.parse(Buffer.concat(chunks).toString("utf8")),
|
|
20810
20910
|
serverVersion: typeof response.headers["x-artium-cli-version"] === "string" ? response.headers["x-artium-cli-version"] : void 0
|
|
20811
20911
|
});
|
|
20812
20912
|
} catch {
|
|
@@ -20842,7 +20942,7 @@ var Client = class {
|
|
|
20842
20942
|
if (result.status !== 200 && result.status !== 204) throw new ArtiumError("INVALID_RESPONSE");
|
|
20843
20943
|
if ((path === "/v1/auth/login" || path === "/v1/auth/device") && result.serverVersion && result.serverVersion !== cliVersion) {
|
|
20844
20944
|
const version2 = result.serverVersion.replace(/[\x00-\x1f\x7f]/g, "");
|
|
20845
|
-
const warning = `warning: CLI ${cliVersion} differs from server ${version2};
|
|
20945
|
+
const warning = `warning: CLI ${cliVersion} differs from server ${version2}; run artium-axi update, or run npm install -g @knowttl/artium-axi@${version2}.
|
|
20846
20946
|
`;
|
|
20847
20947
|
if (this.managed) this.managed.write("stderr", warning);
|
|
20848
20948
|
else process.stderr.write(warning);
|
|
@@ -20916,13 +21016,13 @@ async function readPassword(stdin, environmentVariable) {
|
|
|
20916
21016
|
process.stdin.setRawMode(true);
|
|
20917
21017
|
process.stdin.resume();
|
|
20918
21018
|
try {
|
|
20919
|
-
return await new Promise((
|
|
21019
|
+
return await new Promise((resolve4, reject) => {
|
|
20920
21020
|
let password = "";
|
|
20921
21021
|
const keypress = (text2, key) => {
|
|
20922
21022
|
if (key.name === "return" || key.ctrl && key.name === "c") {
|
|
20923
21023
|
process.stdin.off("keypress", keypress);
|
|
20924
21024
|
if (key.ctrl) reject(new ArtiumError("CANCELLED"));
|
|
20925
|
-
else
|
|
21025
|
+
else resolve4(password);
|
|
20926
21026
|
} else if (key.name === "backspace") password = Array.from(password).slice(0, -1).join("");
|
|
20927
21027
|
else if (text2 && !key.ctrl && !new RegExp("\\p{Cc}", "u").test(text2)) password += text2;
|
|
20928
21028
|
};
|
|
@@ -20936,82 +21036,22 @@ async function readPassword(stdin, environmentVariable) {
|
|
|
20936
21036
|
}
|
|
20937
21037
|
}
|
|
20938
21038
|
|
|
20939
|
-
// src/cli/doctor.ts
|
|
20940
|
-
var DIAGNOSTIC_REQUEST_DEADLINE_MS = 5e3;
|
|
20941
|
-
async function doctor(createClient = (deadline) => new Client(process.env, void 0, deadline), write = (text2) => {
|
|
20942
|
-
process.stdout.write(text2);
|
|
20943
|
-
}) {
|
|
20944
|
-
let failure2;
|
|
20945
|
-
const line = (name, pass, detail, error62) => {
|
|
20946
|
-
if (!pass) failure2 ??= error62 ?? new ArtiumError("INVALID_RESPONSE");
|
|
20947
|
-
write(`${pass ? "pass" : "fail"}: ${name}${detail ? ` (${detail})` : ""}
|
|
20948
|
-
`);
|
|
20949
|
-
};
|
|
20950
|
-
let client;
|
|
20951
|
-
try {
|
|
20952
|
-
client = createClient(DIAGNOSTIC_REQUEST_DEADLINE_MS);
|
|
20953
|
-
} catch (error62) {
|
|
20954
|
-
for (const name of ["server address", "certificate", "token", "CLI version"]) line(name, false, "CLIENT_CONFIG_INVALID");
|
|
20955
|
-
throw error62;
|
|
20956
|
-
}
|
|
20957
|
-
let addressOk = false;
|
|
20958
|
-
try {
|
|
20959
|
-
const live = await client.request("/health/live", "GET");
|
|
20960
|
-
addressOk = !!live && typeof live === "object" && "status" in live && live.status === "ok";
|
|
20961
|
-
line("server address", addressOk);
|
|
20962
|
-
line("certificate", client.certificateVerified, client.certificateVerified ? void 0 : "test HTTP", new ArtiumError("CLIENT_CONFIG_INVALID"));
|
|
20963
|
-
} catch (error62) {
|
|
20964
|
-
const cause = error62 instanceof ArtiumError ? error62 : new ArtiumError("INVALID_RESPONSE");
|
|
20965
|
-
line("server address", cause.code === "CERTIFICATE_INVALID", cause.code, cause);
|
|
20966
|
-
line("certificate", client.certificateVerified, client.certificateVerified ? void 0 : cause.code, cause);
|
|
20967
|
-
}
|
|
20968
|
-
if (!addressOk && failure2) throw failure2;
|
|
20969
|
-
let versionOk = true;
|
|
20970
|
-
let versionError;
|
|
20971
|
-
try {
|
|
20972
|
-
await client.request("/v1/me", "GET");
|
|
20973
|
-
} catch (error62) {
|
|
20974
|
-
versionOk = error62 instanceof ArtiumError && error62.code === "TOKEN_INVALID";
|
|
20975
|
-
if (!versionOk) versionError = error62 instanceof ArtiumError ? error62 : new ArtiumError("INVALID_RESPONSE");
|
|
20976
|
-
}
|
|
20977
|
-
let tokenOk = false;
|
|
20978
|
-
let tokenError;
|
|
20979
|
-
try {
|
|
20980
|
-
tokenOk = meResponseSchema.safeParse(await client.authenticated("/v1/me", "GET")).success;
|
|
20981
|
-
} catch (error62) {
|
|
20982
|
-
tokenError = error62 instanceof ArtiumError ? error62 : new ArtiumError("INVALID_RESPONSE");
|
|
20983
|
-
}
|
|
20984
|
-
line("token", tokenOk, void 0, tokenError);
|
|
20985
|
-
line("CLI version", versionOk, void 0, versionError);
|
|
20986
|
-
if (tokenOk && versionOk) {
|
|
20987
|
-
try {
|
|
20988
|
-
const parsed = toolsResponseSchema.safeParse(await client.authenticated("/v1/tools", "GET"));
|
|
20989
|
-
if (!parsed.success) throw new ArtiumError("INVALID_RESPONSE");
|
|
20990
|
-
for (const tool of parsed.data.tools) line(
|
|
20991
|
-
tool.name,
|
|
20992
|
-
tool.status === "ok",
|
|
20993
|
-
tool.status,
|
|
20994
|
-
new ArtiumError(tool.status === "unconfigured" ? "CREDENTIAL_NOT_CONFIGURED" : tool.status === "error" ? "TOOL_FAILED" : tool.status === "disabled" ? "TOOL_DISABLED" : "SERVER_UNAVAILABLE")
|
|
20995
|
-
);
|
|
20996
|
-
} catch (error62) {
|
|
20997
|
-
const cause = error62 instanceof ArtiumError ? error62 : new ArtiumError("INVALID_RESPONSE");
|
|
20998
|
-
line("tools", false, cause.code, cause);
|
|
20999
|
-
}
|
|
21000
|
-
}
|
|
21001
|
-
if (failure2) throw failure2;
|
|
21002
|
-
}
|
|
21003
|
-
|
|
21004
21039
|
// tools/inventories/falcon-axi.json
|
|
21005
21040
|
var falcon_axi_default = {
|
|
21006
21041
|
generatedBy: "scripts/falcon-inventory.mjs",
|
|
21007
21042
|
tool: "falcon-axi",
|
|
21008
21043
|
repository: "https://github.com/knowttl/falcon-axi.git",
|
|
21009
|
-
tag: "v0.
|
|
21010
|
-
commit: "
|
|
21011
|
-
version: "0.
|
|
21044
|
+
tag: "v0.6.0",
|
|
21045
|
+
commit: "84017f66e72757a8468992c793b3c1095fe6baa3",
|
|
21046
|
+
version: "0.6.0",
|
|
21047
|
+
distribution: {
|
|
21048
|
+
filename: "falcon_axi-0.6.0-py3-none-any.whl",
|
|
21049
|
+
sha256: "88bacab2be710432807678f6c710fc5f8d00eb5b1d44680f3807d64398b23781",
|
|
21050
|
+
provenance: "https://pypi.org/integrity/falcon-axi/0.6.0/falcon_axi-0.6.0-py3-none-any.whl/provenance"
|
|
21051
|
+
},
|
|
21012
21052
|
parser: {
|
|
21013
21053
|
path: "falcon_axi/cli.py",
|
|
21014
|
-
sha256: "
|
|
21054
|
+
sha256: "d8b94b90440d7c538847a7da5dc8b3daa12fbaee09a400144c70539261ae7ec6",
|
|
21015
21055
|
aliases: {},
|
|
21016
21056
|
shortFlags: {},
|
|
21017
21057
|
repeats: "last value wins",
|
|
@@ -21122,6 +21162,20 @@ var falcon_axi_default = {
|
|
|
21122
21162
|
},
|
|
21123
21163
|
input: "No file or raw URL input; cursors and queries remain native values"
|
|
21124
21164
|
},
|
|
21165
|
+
{
|
|
21166
|
+
command: "detection process",
|
|
21167
|
+
flags: {
|
|
21168
|
+
help: "boolean",
|
|
21169
|
+
region: "value",
|
|
21170
|
+
"allow-unknown-origin": "boolean",
|
|
21171
|
+
"member-cid": "value",
|
|
21172
|
+
"no-member-cid": "boolean",
|
|
21173
|
+
config: "value",
|
|
21174
|
+
profile: "value",
|
|
21175
|
+
full: "boolean"
|
|
21176
|
+
},
|
|
21177
|
+
input: "No file or raw URL input; cursors and queries remain native values"
|
|
21178
|
+
},
|
|
21125
21179
|
{
|
|
21126
21180
|
command: "host list",
|
|
21127
21181
|
flags: {
|
|
@@ -21632,7 +21686,8 @@ var falcon_axi_default = {
|
|
|
21632
21686
|
profile: "value",
|
|
21633
21687
|
query: "value",
|
|
21634
21688
|
repository: "value",
|
|
21635
|
-
since: "value"
|
|
21689
|
+
since: "value",
|
|
21690
|
+
wait: "value"
|
|
21636
21691
|
},
|
|
21637
21692
|
input: "No file or raw URL input; cursors and queries remain native values"
|
|
21638
21693
|
},
|
|
@@ -21646,7 +21701,8 @@ var falcon_axi_default = {
|
|
|
21646
21701
|
"no-member-cid": "boolean",
|
|
21647
21702
|
config: "value",
|
|
21648
21703
|
profile: "value",
|
|
21649
|
-
repository: "value"
|
|
21704
|
+
repository: "value",
|
|
21705
|
+
wait: "value"
|
|
21650
21706
|
},
|
|
21651
21707
|
input: "No file or raw URL input; cursors and queries remain native values"
|
|
21652
21708
|
},
|
|
@@ -22188,6 +22244,68 @@ var falcon_axi_default = {
|
|
|
22188
22244
|
},
|
|
22189
22245
|
input: "No file or raw URL input; cursors and queries remain native values"
|
|
22190
22246
|
},
|
|
22247
|
+
{
|
|
22248
|
+
command: "rtr session list",
|
|
22249
|
+
flags: {
|
|
22250
|
+
help: "boolean",
|
|
22251
|
+
region: "value",
|
|
22252
|
+
"allow-unknown-origin": "boolean",
|
|
22253
|
+
"member-cid": "value",
|
|
22254
|
+
"no-member-cid": "boolean",
|
|
22255
|
+
config: "value",
|
|
22256
|
+
profile: "value",
|
|
22257
|
+
filter: "value",
|
|
22258
|
+
limit: "value",
|
|
22259
|
+
cursor: "value"
|
|
22260
|
+
},
|
|
22261
|
+
input: "No file or raw URL input; cursors and queries remain native values"
|
|
22262
|
+
},
|
|
22263
|
+
{
|
|
22264
|
+
command: "rtr session show",
|
|
22265
|
+
flags: {
|
|
22266
|
+
help: "boolean",
|
|
22267
|
+
region: "value",
|
|
22268
|
+
"allow-unknown-origin": "boolean",
|
|
22269
|
+
"member-cid": "value",
|
|
22270
|
+
"no-member-cid": "boolean",
|
|
22271
|
+
config: "value",
|
|
22272
|
+
profile: "value",
|
|
22273
|
+
full: "boolean"
|
|
22274
|
+
},
|
|
22275
|
+
input: "No file or raw URL input; cursors and queries remain native values"
|
|
22276
|
+
},
|
|
22277
|
+
{
|
|
22278
|
+
command: "rtr audit list",
|
|
22279
|
+
flags: {
|
|
22280
|
+
help: "boolean",
|
|
22281
|
+
region: "value",
|
|
22282
|
+
"allow-unknown-origin": "boolean",
|
|
22283
|
+
"member-cid": "value",
|
|
22284
|
+
"no-member-cid": "boolean",
|
|
22285
|
+
config: "value",
|
|
22286
|
+
profile: "value",
|
|
22287
|
+
filter: "value",
|
|
22288
|
+
limit: "value",
|
|
22289
|
+
cursor: "value"
|
|
22290
|
+
},
|
|
22291
|
+
input: "No file or raw URL input; cursors and queries remain native values"
|
|
22292
|
+
},
|
|
22293
|
+
{
|
|
22294
|
+
command: "rtr run",
|
|
22295
|
+
flags: {
|
|
22296
|
+
help: "boolean",
|
|
22297
|
+
region: "value",
|
|
22298
|
+
"allow-unknown-origin": "boolean",
|
|
22299
|
+
"member-cid": "value",
|
|
22300
|
+
"no-member-cid": "boolean",
|
|
22301
|
+
config: "value",
|
|
22302
|
+
profile: "value",
|
|
22303
|
+
command: "value",
|
|
22304
|
+
execute: "boolean",
|
|
22305
|
+
confirm: "value"
|
|
22306
|
+
},
|
|
22307
|
+
input: "No file or raw URL input; cursors and queries remain native values"
|
|
22308
|
+
},
|
|
22191
22309
|
{
|
|
22192
22310
|
command: "auth status",
|
|
22193
22311
|
flags: {
|
|
@@ -22384,6 +22502,10 @@ var falcon_axi_default = {
|
|
|
22384
22502
|
name: "FALCON_AXI_READ_ONLY",
|
|
22385
22503
|
disposition: "injected"
|
|
22386
22504
|
},
|
|
22505
|
+
{
|
|
22506
|
+
name: "FALCON_AXI_WRITE_LOG",
|
|
22507
|
+
disposition: "injected"
|
|
22508
|
+
},
|
|
22387
22509
|
{
|
|
22388
22510
|
name: "FALCON_AXI_MEMBER_CID",
|
|
22389
22511
|
disposition: "never injected"
|
|
@@ -22403,17 +22525,15 @@ var falcon_axi_default = {
|
|
|
22403
22525
|
{
|
|
22404
22526
|
name: "FALCON_AXI_PROFILE",
|
|
22405
22527
|
disposition: "never injected"
|
|
22406
|
-
},
|
|
22407
|
-
{
|
|
22408
|
-
name: "FALCON_AXI_WRITE_LOG",
|
|
22409
|
-
disposition: "never injected"
|
|
22410
22528
|
}
|
|
22411
22529
|
],
|
|
22412
22530
|
requirements: {
|
|
22413
22531
|
runtime: "python",
|
|
22414
|
-
timeoutMs:
|
|
22415
|
-
temporaryFiles: [
|
|
22416
|
-
|
|
22532
|
+
timeoutMs: 65e3,
|
|
22533
|
+
temporaryFiles: [
|
|
22534
|
+
"falcon-axi/config.json"
|
|
22535
|
+
],
|
|
22536
|
+
nativeWrites: "RTR read-only command execution requires host permission, profile opt-in and exact confirmation"
|
|
22417
22537
|
},
|
|
22418
22538
|
healthRead: [
|
|
22419
22539
|
"auth",
|
|
@@ -22457,6 +22577,7 @@ var falcon_axi_default = {
|
|
|
22457
22577
|
"ioa",
|
|
22458
22578
|
"correlation-rule",
|
|
22459
22579
|
"case",
|
|
22580
|
+
"rtr",
|
|
22460
22581
|
"auth",
|
|
22461
22582
|
"scopes",
|
|
22462
22583
|
"sensor-usage",
|
|
@@ -22477,10 +22598,10 @@ var falcon_axi_default = {
|
|
|
22477
22598
|
var vectra_axi_default = {
|
|
22478
22599
|
generatedBy: "scripts/upstream-inventory.mjs",
|
|
22479
22600
|
tool: "vectra-axi",
|
|
22480
|
-
version: "0.1.
|
|
22481
|
-
integrity: "sha512-
|
|
22601
|
+
version: "0.1.8",
|
|
22602
|
+
integrity: "sha512-Wvn73g5hm4mzQQKhNnKvAjt6SfGFrPD2EAYMa4AXhoVqFfjXjxnQLk6tUw7E92jozeHtpZ+aDXSGMHaJhhTi1Q==",
|
|
22482
22603
|
parserEvidence: "Installed pinned catalogue exports, provisional until adapter acceptance",
|
|
22483
|
-
packageManifestSha256: "
|
|
22604
|
+
packageManifestSha256: "0e2e4e616e06435582fcd96787a2088f7fda5b0b99c32daa4d6c7dc8c2b2f3fb",
|
|
22484
22605
|
environment: [
|
|
22485
22606
|
{
|
|
22486
22607
|
name: "VECTRA_AXI_CONFIG",
|
|
@@ -22546,6 +22667,38 @@ var vectra_axi_default = {
|
|
|
22546
22667
|
nativeWriteSettings: {
|
|
22547
22668
|
default: "disabled",
|
|
22548
22669
|
disposition: "server-owned",
|
|
22670
|
+
supportedOperations: [
|
|
22671
|
+
"qux.account.assignment.create",
|
|
22672
|
+
"qux.account.assignment.reassign",
|
|
22673
|
+
"qux.account.assignment.unassign",
|
|
22674
|
+
"qux.account.note.add",
|
|
22675
|
+
"qux.account.note.delete",
|
|
22676
|
+
"qux.account.note.edit",
|
|
22677
|
+
"qux.account.tag.bulk-delete",
|
|
22678
|
+
"qux.account.tag.bulk-set",
|
|
22679
|
+
"qux.account.tag.set",
|
|
22680
|
+
"qux.detection.note.add",
|
|
22681
|
+
"qux.detection.note.delete",
|
|
22682
|
+
"qux.detection.note.edit",
|
|
22683
|
+
"qux.detection.tag.bulk-delete",
|
|
22684
|
+
"qux.detection.tag.bulk-set",
|
|
22685
|
+
"qux.detection.tag.set",
|
|
22686
|
+
"qux.host.assignment.create",
|
|
22687
|
+
"qux.host.assignment.reassign",
|
|
22688
|
+
"qux.host.assignment.unassign",
|
|
22689
|
+
"qux.host.note.add",
|
|
22690
|
+
"qux.host.note.delete",
|
|
22691
|
+
"qux.host.note.edit",
|
|
22692
|
+
"qux.host.tag.bulk-delete",
|
|
22693
|
+
"qux.host.tag.bulk-set",
|
|
22694
|
+
"qux.host.tag.set",
|
|
22695
|
+
"rux.account.note.delete",
|
|
22696
|
+
"rux.account.note.edit",
|
|
22697
|
+
"rux.detection.note.delete",
|
|
22698
|
+
"rux.detection.note.edit",
|
|
22699
|
+
"rux.host.note.delete",
|
|
22700
|
+
"rux.host.note.edit"
|
|
22701
|
+
],
|
|
22549
22702
|
profileFields: {
|
|
22550
22703
|
"writes.allowWrites": "boolean",
|
|
22551
22704
|
"writes.operations": "string[]"
|
|
@@ -22597,12 +22750,13 @@ var vectra_axi_default = {
|
|
|
22597
22750
|
help: {
|
|
22598
22751
|
command: "vectra-axi detection list",
|
|
22599
22752
|
description: "List detections on QUX v2.5 or RUX v3.4 with server-side filters and a bounded window",
|
|
22753
|
+
pagination: "QUX: collection pages; bounded --all supported; RUX: collection pages; bounded --all supported",
|
|
22600
22754
|
flags: {
|
|
22601
22755
|
"--help": "Show concise help; default false",
|
|
22602
22756
|
"--state <state>": "Filter by server-side detection state",
|
|
22603
22757
|
"--detection-type <type>": "Filter by server-side detection type",
|
|
22604
22758
|
"--detection-category <category>": "Filter by server-side detection category",
|
|
22605
|
-
"--host-id <id>": "Filter by server-side host ID (non-negative integer)",
|
|
22759
|
+
"--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>",
|
|
22606
22760
|
"--tags <tags>": "Filter by server-side tags",
|
|
22607
22761
|
"--certainty-gte <score>": "Filter by server-side minimum certainty",
|
|
22608
22762
|
"--threat-gte <score>": "Filter by server-side minimum threat",
|
|
@@ -22610,7 +22764,7 @@ var vectra_axi_default = {
|
|
|
22610
22764
|
"--min-id <id>": "Server-side minimum detection ID (non-negative integer)",
|
|
22611
22765
|
"--max-id <id>": "Server-side maximum detection ID (non-negative integer)",
|
|
22612
22766
|
"--limit <rows>": "Row window for this read; default 100",
|
|
22613
|
-
"--fields <list>": "Comma-separated
|
|
22767
|
+
"--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",
|
|
22614
22768
|
"--all": "Traverse pages within 10 requests, 8 MiB, 60 seconds and 10000 rows; cannot combine with --limit",
|
|
22615
22769
|
"--cursor <cursor>": "Resume a capped list with its original filters"
|
|
22616
22770
|
},
|
|
@@ -22642,7 +22796,7 @@ var vectra_axi_default = {
|
|
|
22642
22796
|
},
|
|
22643
22797
|
source: {
|
|
22644
22798
|
path: "dist/src/catalogue.js",
|
|
22645
|
-
sha256: "
|
|
22799
|
+
sha256: "5fadea660c71fb4021a4c130699ae3883c54e801c8e3eb6c3f370a10b0a04930"
|
|
22646
22800
|
}
|
|
22647
22801
|
},
|
|
22648
22802
|
flags: [
|
|
@@ -22973,6 +23127,7 @@ var vectra_axi_default = {
|
|
|
22973
23127
|
profile: "value",
|
|
22974
23128
|
config: "value",
|
|
22975
23129
|
id: "value",
|
|
23130
|
+
fields: "value",
|
|
22976
23131
|
full: "boolean"
|
|
22977
23132
|
}
|
|
22978
23133
|
},
|
|
@@ -22995,6 +23150,7 @@ var vectra_axi_default = {
|
|
|
22995
23150
|
help: "boolean",
|
|
22996
23151
|
profile: "value",
|
|
22997
23152
|
config: "value",
|
|
23153
|
+
name: "value",
|
|
22998
23154
|
"threat-gte": "value",
|
|
22999
23155
|
"certainty-gte": "value",
|
|
23000
23156
|
tags: "value",
|
|
@@ -23402,6 +23558,7 @@ var vectra_axi_default = {
|
|
|
23402
23558
|
help: "boolean",
|
|
23403
23559
|
profile: "value",
|
|
23404
23560
|
config: "value",
|
|
23561
|
+
all: "boolean",
|
|
23405
23562
|
account: "value",
|
|
23406
23563
|
host: "value",
|
|
23407
23564
|
assignee: "value",
|
|
@@ -23434,6 +23591,7 @@ var vectra_axi_default = {
|
|
|
23434
23591
|
help: "boolean",
|
|
23435
23592
|
profile: "value",
|
|
23436
23593
|
config: "value",
|
|
23594
|
+
all: "boolean",
|
|
23437
23595
|
limit: "value",
|
|
23438
23596
|
fields: "value",
|
|
23439
23597
|
cursor: "value"
|
|
@@ -23454,6 +23612,7 @@ var vectra_axi_default = {
|
|
|
23454
23612
|
help: "boolean",
|
|
23455
23613
|
profile: "value",
|
|
23456
23614
|
config: "value",
|
|
23615
|
+
all: "boolean",
|
|
23457
23616
|
username: "value",
|
|
23458
23617
|
limit: "value",
|
|
23459
23618
|
fields: "value",
|
|
@@ -23490,6 +23649,7 @@ var vectra_axi_default = {
|
|
|
23490
23649
|
help: "boolean",
|
|
23491
23650
|
profile: "value",
|
|
23492
23651
|
config: "value",
|
|
23652
|
+
all: "boolean",
|
|
23493
23653
|
name: "value",
|
|
23494
23654
|
type: "value",
|
|
23495
23655
|
limit: "value",
|
|
@@ -23512,6 +23672,7 @@ var vectra_axi_default = {
|
|
|
23512
23672
|
help: "boolean",
|
|
23513
23673
|
profile: "value",
|
|
23514
23674
|
config: "value",
|
|
23675
|
+
all: "boolean",
|
|
23515
23676
|
id: "value",
|
|
23516
23677
|
name: "value",
|
|
23517
23678
|
ordering: "value",
|
|
@@ -23527,6 +23688,7 @@ var vectra_axi_default = {
|
|
|
23527
23688
|
help: "boolean",
|
|
23528
23689
|
profile: "value",
|
|
23529
23690
|
config: "value",
|
|
23691
|
+
all: "boolean",
|
|
23530
23692
|
contains: "value",
|
|
23531
23693
|
ordering: "value",
|
|
23532
23694
|
limit: "value",
|
|
@@ -23611,727 +23773,6 @@ var vectra_axi_default = {
|
|
|
23611
23773
|
]
|
|
23612
23774
|
};
|
|
23613
23775
|
|
|
23614
|
-
// tools/inventories/ldap-axi.json
|
|
23615
|
-
var ldap_axi_default = {
|
|
23616
|
-
generatedBy: "scripts/ldap-inventory.mjs",
|
|
23617
|
-
tool: "ldap-axi",
|
|
23618
|
-
version: "0.2.0",
|
|
23619
|
-
integrity: "sha512-w/gE4jHaUHE0iKh3ucDnDG0AVrhP0VwpFCEcw3wSTzLmTBMNZrJ9AFB06j2jnf4TFgK5+5NhF0EE0R69mv7crA==",
|
|
23620
|
-
parserEvidence: "Installed pinned command schemas and reviewed CLI globals and entry routes",
|
|
23621
|
-
sources: [
|
|
23622
|
-
{
|
|
23623
|
-
path: "package.json",
|
|
23624
|
-
sha256: "7ee133bf0333fe975c905418c9ecdd542836dab39f52aa5f7f630776d2bcc0b0"
|
|
23625
|
-
},
|
|
23626
|
-
{
|
|
23627
|
-
path: "README.md",
|
|
23628
|
-
sha256: "3a1eeda8c376c39853e4835acf2a1d61f76f23a555651417d0d691459fbb3139"
|
|
23629
|
-
},
|
|
23630
|
-
{
|
|
23631
|
-
path: "axi-credential.schema.json",
|
|
23632
|
-
sha256: "76b9f5f449d844dcd4365b966ed907515582f72fc920b936dae825ebf1b7cc53"
|
|
23633
|
-
},
|
|
23634
|
-
{
|
|
23635
|
-
path: "dist/src/cli.js",
|
|
23636
|
-
sha256: "2cb024b2848c2c9e27c292205b3ed86a829cfed21d52e8fea06ef544a039ec2a"
|
|
23637
|
-
},
|
|
23638
|
-
{
|
|
23639
|
-
path: "dist/src/schema.js",
|
|
23640
|
-
sha256: "0d5946fa26efb55e8480e9a22f93cdb6b321c48697e77ca02c4c99630f11284f"
|
|
23641
|
-
},
|
|
23642
|
-
{
|
|
23643
|
-
path: "dist/src/config.js",
|
|
23644
|
-
sha256: "cbc48584b6ff2a2a70375e9e8e6242a87543a3e6e6f7e1c055a2d29c42b677f9"
|
|
23645
|
-
},
|
|
23646
|
-
{
|
|
23647
|
-
path: "dist/src/secrets.js",
|
|
23648
|
-
sha256: "9f2ccf86515cec1dd65f2dd5850188232374535f7fe56a788fdc7b94d91c8532"
|
|
23649
|
-
},
|
|
23650
|
-
{
|
|
23651
|
-
path: "dist/src/directory/auth.js",
|
|
23652
|
-
sha256: "d2b3a61cb9e63744462e3a6a2841fcddb2b48e7823c307841028288cfe9d688b"
|
|
23653
|
-
},
|
|
23654
|
-
{
|
|
23655
|
-
path: "dist/src/directory/policy.js",
|
|
23656
|
-
sha256: "a697dd78990493f7f1c19d22278ebb922c997e9cf88a51b12adfaca30fa8a01d"
|
|
23657
|
-
}
|
|
23658
|
-
],
|
|
23659
|
-
credentialSchema: {
|
|
23660
|
-
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
23661
|
-
title: "ldap-axi profile",
|
|
23662
|
-
type: "object",
|
|
23663
|
-
additionalProperties: false,
|
|
23664
|
-
required: [
|
|
23665
|
-
"url"
|
|
23666
|
-
],
|
|
23667
|
-
properties: {
|
|
23668
|
-
url: {
|
|
23669
|
-
type: "string",
|
|
23670
|
-
pattern: "^ldaps?://",
|
|
23671
|
-
description: "LDAP URL without userinfo; use the server FQDN for ambient authentication"
|
|
23672
|
-
},
|
|
23673
|
-
auth: {
|
|
23674
|
-
enum: [
|
|
23675
|
-
"auto",
|
|
23676
|
-
"gssapi",
|
|
23677
|
-
"simple"
|
|
23678
|
-
],
|
|
23679
|
-
default: "auto"
|
|
23680
|
-
},
|
|
23681
|
-
bindDn: {
|
|
23682
|
-
type: "string",
|
|
23683
|
-
minLength: 1,
|
|
23684
|
-
description: "Simple-bind identity, required for simple authentication"
|
|
23685
|
-
},
|
|
23686
|
-
bindPassword: {
|
|
23687
|
-
"x-secret": true,
|
|
23688
|
-
description: "Simple-bind password reference; defaults to env LDAP_AXI_BIND_PASSWORD. No stored secrets.",
|
|
23689
|
-
oneOf: [
|
|
23690
|
-
{
|
|
23691
|
-
type: "object",
|
|
23692
|
-
additionalProperties: false,
|
|
23693
|
-
required: [
|
|
23694
|
-
"env"
|
|
23695
|
-
],
|
|
23696
|
-
properties: {
|
|
23697
|
-
env: {
|
|
23698
|
-
type: "string",
|
|
23699
|
-
pattern: "^[A-Za-z_][A-Za-z0-9_]*$"
|
|
23700
|
-
}
|
|
23701
|
-
}
|
|
23702
|
-
},
|
|
23703
|
-
{
|
|
23704
|
-
type: "object",
|
|
23705
|
-
additionalProperties: false,
|
|
23706
|
-
required: [
|
|
23707
|
-
"file"
|
|
23708
|
-
],
|
|
23709
|
-
properties: {
|
|
23710
|
-
file: {
|
|
23711
|
-
type: "string",
|
|
23712
|
-
pattern: "^(?:/|[A-Za-z]:[\\\\/])",
|
|
23713
|
-
description: "Absolute local path to a private UTF-8 password file; UNC/device paths are forbidden on Windows"
|
|
23714
|
-
}
|
|
23715
|
-
}
|
|
23716
|
-
}
|
|
23717
|
-
]
|
|
23718
|
-
},
|
|
23719
|
-
base: {
|
|
23720
|
-
type: "string"
|
|
23721
|
-
},
|
|
23722
|
-
pageSize: {
|
|
23723
|
-
type: "integer",
|
|
23724
|
-
minimum: 1,
|
|
23725
|
-
maximum: 1e3
|
|
23726
|
-
},
|
|
23727
|
-
caFile: {
|
|
23728
|
-
type: "string",
|
|
23729
|
-
minLength: 1
|
|
23730
|
-
},
|
|
23731
|
-
startTls: {
|
|
23732
|
-
type: "boolean",
|
|
23733
|
-
default: false
|
|
23734
|
-
},
|
|
23735
|
-
tlsMaxVersion: {
|
|
23736
|
-
const: "1.2"
|
|
23737
|
-
},
|
|
23738
|
-
flavor: {
|
|
23739
|
-
enum: [
|
|
23740
|
-
"ad",
|
|
23741
|
-
"adlds",
|
|
23742
|
-
"ldapv3"
|
|
23743
|
-
]
|
|
23744
|
-
},
|
|
23745
|
-
gssapiService: {
|
|
23746
|
-
type: "string",
|
|
23747
|
-
minLength: 1
|
|
23748
|
-
},
|
|
23749
|
-
gssapiProtection: {
|
|
23750
|
-
enum: [
|
|
23751
|
-
"none",
|
|
23752
|
-
"confidentiality"
|
|
23753
|
-
]
|
|
23754
|
-
}
|
|
23755
|
-
}
|
|
23756
|
-
},
|
|
23757
|
-
adapterBoundary: {
|
|
23758
|
-
unsafeOverrides: [
|
|
23759
|
-
"config",
|
|
23760
|
-
"url",
|
|
23761
|
-
"start-tls",
|
|
23762
|
-
"ca-file",
|
|
23763
|
-
"ca-only",
|
|
23764
|
-
"tls-no-verify",
|
|
23765
|
-
"tls-max-version",
|
|
23766
|
-
"insecure-plaintext",
|
|
23767
|
-
"anonymous",
|
|
23768
|
-
"profile",
|
|
23769
|
-
"auth",
|
|
23770
|
-
"gssapi-service",
|
|
23771
|
-
"gssapi-protection"
|
|
23772
|
-
],
|
|
23773
|
-
blockedCommands: [
|
|
23774
|
-
"config",
|
|
23775
|
-
"profile",
|
|
23776
|
-
"setup"
|
|
23777
|
-
],
|
|
23778
|
-
sensitiveFlags: [
|
|
23779
|
-
"base",
|
|
23780
|
-
"filter",
|
|
23781
|
-
"name",
|
|
23782
|
-
"sam",
|
|
23783
|
-
"upn",
|
|
23784
|
-
"uid"
|
|
23785
|
-
],
|
|
23786
|
-
authentication: "Stored simple-bind identity over verified LDAPS or StartTLS; no ambient ticket or keytab",
|
|
23787
|
-
inputs: {
|
|
23788
|
-
stdin: "unsupported",
|
|
23789
|
-
files: "unsupported",
|
|
23790
|
-
caFile: "stored PEM materialized privately by host"
|
|
23791
|
-
},
|
|
23792
|
-
resources: {
|
|
23793
|
-
nodeHeapMiB: 128
|
|
23794
|
-
},
|
|
23795
|
-
nativeWrites: "read-only upstream design"
|
|
23796
|
-
},
|
|
23797
|
-
discovery: {
|
|
23798
|
-
commands: [
|
|
23799
|
-
"entry",
|
|
23800
|
-
"user",
|
|
23801
|
-
"group",
|
|
23802
|
-
"computer",
|
|
23803
|
-
"auth status",
|
|
23804
|
-
"server"
|
|
23805
|
-
],
|
|
23806
|
-
example: [
|
|
23807
|
-
"user",
|
|
23808
|
-
"list",
|
|
23809
|
-
"--limit",
|
|
23810
|
-
"1"
|
|
23811
|
-
],
|
|
23812
|
-
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"
|
|
23813
|
-
},
|
|
23814
|
-
suggestionFields: [
|
|
23815
|
-
"help"
|
|
23816
|
-
],
|
|
23817
|
-
format: "TOON",
|
|
23818
|
-
commands: [
|
|
23819
|
-
{
|
|
23820
|
-
command: "home",
|
|
23821
|
-
flags: {
|
|
23822
|
-
help: "boolean",
|
|
23823
|
-
config: "value",
|
|
23824
|
-
url: "value",
|
|
23825
|
-
base: "value",
|
|
23826
|
-
"start-tls": "boolean",
|
|
23827
|
-
"ca-file": "value",
|
|
23828
|
-
"ca-only": "boolean",
|
|
23829
|
-
"tls-no-verify": "boolean",
|
|
23830
|
-
"tls-max-version": "value",
|
|
23831
|
-
"insecure-plaintext": "boolean",
|
|
23832
|
-
anonymous: "boolean",
|
|
23833
|
-
profile: "value",
|
|
23834
|
-
auth: "value",
|
|
23835
|
-
"gssapi-service": "value",
|
|
23836
|
-
"gssapi-protection": "value"
|
|
23837
|
-
},
|
|
23838
|
-
positionalInput: false
|
|
23839
|
-
},
|
|
23840
|
-
{
|
|
23841
|
-
command: "auth status",
|
|
23842
|
-
flags: {
|
|
23843
|
-
help: "boolean",
|
|
23844
|
-
config: "value",
|
|
23845
|
-
url: "value",
|
|
23846
|
-
base: "value",
|
|
23847
|
-
"start-tls": "boolean",
|
|
23848
|
-
"ca-file": "value",
|
|
23849
|
-
"ca-only": "boolean",
|
|
23850
|
-
"tls-no-verify": "boolean",
|
|
23851
|
-
"tls-max-version": "value",
|
|
23852
|
-
"insecure-plaintext": "boolean",
|
|
23853
|
-
anonymous: "boolean",
|
|
23854
|
-
profile: "value",
|
|
23855
|
-
auth: "value",
|
|
23856
|
-
"gssapi-service": "value",
|
|
23857
|
-
"gssapi-protection": "value",
|
|
23858
|
-
offline: "boolean"
|
|
23859
|
-
},
|
|
23860
|
-
positionalInput: false
|
|
23861
|
-
},
|
|
23862
|
-
{
|
|
23863
|
-
command: "server",
|
|
23864
|
-
flags: {
|
|
23865
|
-
help: "boolean",
|
|
23866
|
-
config: "value",
|
|
23867
|
-
url: "value",
|
|
23868
|
-
base: "value",
|
|
23869
|
-
"start-tls": "boolean",
|
|
23870
|
-
"ca-file": "value",
|
|
23871
|
-
"ca-only": "boolean",
|
|
23872
|
-
"tls-no-verify": "boolean",
|
|
23873
|
-
"tls-max-version": "value",
|
|
23874
|
-
"insecure-plaintext": "boolean",
|
|
23875
|
-
anonymous: "boolean",
|
|
23876
|
-
profile: "value",
|
|
23877
|
-
auth: "value",
|
|
23878
|
-
"gssapi-service": "value",
|
|
23879
|
-
"gssapi-protection": "value"
|
|
23880
|
-
},
|
|
23881
|
-
positionalInput: false
|
|
23882
|
-
},
|
|
23883
|
-
{
|
|
23884
|
-
command: "entry search",
|
|
23885
|
-
flags: {
|
|
23886
|
-
help: "boolean",
|
|
23887
|
-
config: "value",
|
|
23888
|
-
url: "value",
|
|
23889
|
-
base: "value",
|
|
23890
|
-
"start-tls": "boolean",
|
|
23891
|
-
"ca-file": "value",
|
|
23892
|
-
"ca-only": "boolean",
|
|
23893
|
-
"tls-no-verify": "boolean",
|
|
23894
|
-
"tls-max-version": "value",
|
|
23895
|
-
"insecure-plaintext": "boolean",
|
|
23896
|
-
anonymous: "boolean",
|
|
23897
|
-
profile: "value",
|
|
23898
|
-
auth: "value",
|
|
23899
|
-
"gssapi-service": "value",
|
|
23900
|
-
"gssapi-protection": "value",
|
|
23901
|
-
filter: "value",
|
|
23902
|
-
scope: "value",
|
|
23903
|
-
attributes: "value",
|
|
23904
|
-
"page-size": "value",
|
|
23905
|
-
"max-rows": "value",
|
|
23906
|
-
all: "boolean"
|
|
23907
|
-
},
|
|
23908
|
-
positionalInput: false
|
|
23909
|
-
},
|
|
23910
|
-
{
|
|
23911
|
-
command: "entry show",
|
|
23912
|
-
flags: {
|
|
23913
|
-
help: "boolean",
|
|
23914
|
-
config: "value",
|
|
23915
|
-
url: "value",
|
|
23916
|
-
base: "value",
|
|
23917
|
-
"start-tls": "boolean",
|
|
23918
|
-
"ca-file": "value",
|
|
23919
|
-
"ca-only": "boolean",
|
|
23920
|
-
"tls-no-verify": "boolean",
|
|
23921
|
-
"tls-max-version": "value",
|
|
23922
|
-
"insecure-plaintext": "boolean",
|
|
23923
|
-
anonymous: "boolean",
|
|
23924
|
-
profile: "value",
|
|
23925
|
-
auth: "value",
|
|
23926
|
-
"gssapi-service": "value",
|
|
23927
|
-
"gssapi-protection": "value",
|
|
23928
|
-
attributes: "value",
|
|
23929
|
-
"page-size": "value"
|
|
23930
|
-
},
|
|
23931
|
-
positionalInput: true
|
|
23932
|
-
},
|
|
23933
|
-
{
|
|
23934
|
-
command: "user list",
|
|
23935
|
-
flags: {
|
|
23936
|
-
help: "boolean",
|
|
23937
|
-
config: "value",
|
|
23938
|
-
url: "value",
|
|
23939
|
-
base: "value",
|
|
23940
|
-
"start-tls": "boolean",
|
|
23941
|
-
"ca-file": "value",
|
|
23942
|
-
"ca-only": "boolean",
|
|
23943
|
-
"tls-no-verify": "boolean",
|
|
23944
|
-
"tls-max-version": "value",
|
|
23945
|
-
"insecure-plaintext": "boolean",
|
|
23946
|
-
anonymous: "boolean",
|
|
23947
|
-
profile: "value",
|
|
23948
|
-
auth: "value",
|
|
23949
|
-
"gssapi-service": "value",
|
|
23950
|
-
"gssapi-protection": "value",
|
|
23951
|
-
disabled: "boolean",
|
|
23952
|
-
enabled: "boolean",
|
|
23953
|
-
locked: "boolean",
|
|
23954
|
-
all: "boolean",
|
|
23955
|
-
name: "value",
|
|
23956
|
-
sam: "value",
|
|
23957
|
-
upn: "value",
|
|
23958
|
-
uid: "value",
|
|
23959
|
-
filter: "value",
|
|
23960
|
-
scope: "value",
|
|
23961
|
-
"max-rows": "value",
|
|
23962
|
-
"page-size": "value",
|
|
23963
|
-
limit: "value",
|
|
23964
|
-
fields: "value",
|
|
23965
|
-
attributes: "value"
|
|
23966
|
-
},
|
|
23967
|
-
positionalInput: false
|
|
23968
|
-
},
|
|
23969
|
-
{
|
|
23970
|
-
command: "user show",
|
|
23971
|
-
flags: {
|
|
23972
|
-
help: "boolean",
|
|
23973
|
-
config: "value",
|
|
23974
|
-
url: "value",
|
|
23975
|
-
base: "value",
|
|
23976
|
-
"start-tls": "boolean",
|
|
23977
|
-
"ca-file": "value",
|
|
23978
|
-
"ca-only": "boolean",
|
|
23979
|
-
"tls-no-verify": "boolean",
|
|
23980
|
-
"tls-max-version": "value",
|
|
23981
|
-
"insecure-plaintext": "boolean",
|
|
23982
|
-
anonymous: "boolean",
|
|
23983
|
-
profile: "value",
|
|
23984
|
-
auth: "value",
|
|
23985
|
-
"gssapi-service": "value",
|
|
23986
|
-
"gssapi-protection": "value",
|
|
23987
|
-
fields: "value",
|
|
23988
|
-
attributes: "value"
|
|
23989
|
-
},
|
|
23990
|
-
positionalInput: true
|
|
23991
|
-
},
|
|
23992
|
-
{
|
|
23993
|
-
command: "user groups",
|
|
23994
|
-
flags: {
|
|
23995
|
-
help: "boolean",
|
|
23996
|
-
config: "value",
|
|
23997
|
-
url: "value",
|
|
23998
|
-
base: "value",
|
|
23999
|
-
"start-tls": "boolean",
|
|
24000
|
-
"ca-file": "value",
|
|
24001
|
-
"ca-only": "boolean",
|
|
24002
|
-
"tls-no-verify": "boolean",
|
|
24003
|
-
"tls-max-version": "value",
|
|
24004
|
-
"insecure-plaintext": "boolean",
|
|
24005
|
-
anonymous: "boolean",
|
|
24006
|
-
profile: "value",
|
|
24007
|
-
auth: "value",
|
|
24008
|
-
"gssapi-service": "value",
|
|
24009
|
-
"gssapi-protection": "value",
|
|
24010
|
-
nested: "boolean",
|
|
24011
|
-
"max-rows": "value",
|
|
24012
|
-
"page-size": "value",
|
|
24013
|
-
fields: "value"
|
|
24014
|
-
},
|
|
24015
|
-
positionalInput: true
|
|
24016
|
-
},
|
|
24017
|
-
{
|
|
24018
|
-
command: "group list",
|
|
24019
|
-
flags: {
|
|
24020
|
-
help: "boolean",
|
|
24021
|
-
config: "value",
|
|
24022
|
-
url: "value",
|
|
24023
|
-
base: "value",
|
|
24024
|
-
"start-tls": "boolean",
|
|
24025
|
-
"ca-file": "value",
|
|
24026
|
-
"ca-only": "boolean",
|
|
24027
|
-
"tls-no-verify": "boolean",
|
|
24028
|
-
"tls-max-version": "value",
|
|
24029
|
-
"insecure-plaintext": "boolean",
|
|
24030
|
-
anonymous: "boolean",
|
|
24031
|
-
profile: "value",
|
|
24032
|
-
auth: "value",
|
|
24033
|
-
"gssapi-service": "value",
|
|
24034
|
-
"gssapi-protection": "value",
|
|
24035
|
-
all: "boolean",
|
|
24036
|
-
name: "value",
|
|
24037
|
-
sam: "value",
|
|
24038
|
-
filter: "value",
|
|
24039
|
-
scope: "value",
|
|
24040
|
-
"max-rows": "value",
|
|
24041
|
-
"page-size": "value",
|
|
24042
|
-
limit: "value",
|
|
24043
|
-
fields: "value",
|
|
24044
|
-
attributes: "value"
|
|
24045
|
-
},
|
|
24046
|
-
positionalInput: false
|
|
24047
|
-
},
|
|
24048
|
-
{
|
|
24049
|
-
command: "group show",
|
|
24050
|
-
flags: {
|
|
24051
|
-
help: "boolean",
|
|
24052
|
-
config: "value",
|
|
24053
|
-
url: "value",
|
|
24054
|
-
base: "value",
|
|
24055
|
-
"start-tls": "boolean",
|
|
24056
|
-
"ca-file": "value",
|
|
24057
|
-
"ca-only": "boolean",
|
|
24058
|
-
"tls-no-verify": "boolean",
|
|
24059
|
-
"tls-max-version": "value",
|
|
24060
|
-
"insecure-plaintext": "boolean",
|
|
24061
|
-
anonymous: "boolean",
|
|
24062
|
-
profile: "value",
|
|
24063
|
-
auth: "value",
|
|
24064
|
-
"gssapi-service": "value",
|
|
24065
|
-
"gssapi-protection": "value",
|
|
24066
|
-
fields: "value",
|
|
24067
|
-
attributes: "value"
|
|
24068
|
-
},
|
|
24069
|
-
positionalInput: true
|
|
24070
|
-
},
|
|
24071
|
-
{
|
|
24072
|
-
command: "group members",
|
|
24073
|
-
flags: {
|
|
24074
|
-
help: "boolean",
|
|
24075
|
-
config: "value",
|
|
24076
|
-
url: "value",
|
|
24077
|
-
base: "value",
|
|
24078
|
-
"start-tls": "boolean",
|
|
24079
|
-
"ca-file": "value",
|
|
24080
|
-
"ca-only": "boolean",
|
|
24081
|
-
"tls-no-verify": "boolean",
|
|
24082
|
-
"tls-max-version": "value",
|
|
24083
|
-
"insecure-plaintext": "boolean",
|
|
24084
|
-
anonymous: "boolean",
|
|
24085
|
-
profile: "value",
|
|
24086
|
-
auth: "value",
|
|
24087
|
-
"gssapi-service": "value",
|
|
24088
|
-
"gssapi-protection": "value",
|
|
24089
|
-
nested: "boolean",
|
|
24090
|
-
"max-rows": "value",
|
|
24091
|
-
"page-size": "value",
|
|
24092
|
-
fields: "value"
|
|
24093
|
-
},
|
|
24094
|
-
positionalInput: true
|
|
24095
|
-
},
|
|
24096
|
-
{
|
|
24097
|
-
command: "computer list",
|
|
24098
|
-
flags: {
|
|
24099
|
-
help: "boolean",
|
|
24100
|
-
config: "value",
|
|
24101
|
-
url: "value",
|
|
24102
|
-
base: "value",
|
|
24103
|
-
"start-tls": "boolean",
|
|
24104
|
-
"ca-file": "value",
|
|
24105
|
-
"ca-only": "boolean",
|
|
24106
|
-
"tls-no-verify": "boolean",
|
|
24107
|
-
"tls-max-version": "value",
|
|
24108
|
-
"insecure-plaintext": "boolean",
|
|
24109
|
-
anonymous: "boolean",
|
|
24110
|
-
profile: "value",
|
|
24111
|
-
auth: "value",
|
|
24112
|
-
"gssapi-service": "value",
|
|
24113
|
-
"gssapi-protection": "value",
|
|
24114
|
-
all: "boolean",
|
|
24115
|
-
name: "value",
|
|
24116
|
-
sam: "value",
|
|
24117
|
-
filter: "value",
|
|
24118
|
-
scope: "value",
|
|
24119
|
-
"max-rows": "value",
|
|
24120
|
-
"page-size": "value",
|
|
24121
|
-
limit: "value",
|
|
24122
|
-
fields: "value",
|
|
24123
|
-
attributes: "value"
|
|
24124
|
-
},
|
|
24125
|
-
positionalInput: false
|
|
24126
|
-
},
|
|
24127
|
-
{
|
|
24128
|
-
command: "computer show",
|
|
24129
|
-
flags: {
|
|
24130
|
-
help: "boolean",
|
|
24131
|
-
config: "value",
|
|
24132
|
-
url: "value",
|
|
24133
|
-
base: "value",
|
|
24134
|
-
"start-tls": "boolean",
|
|
24135
|
-
"ca-file": "value",
|
|
24136
|
-
"ca-only": "boolean",
|
|
24137
|
-
"tls-no-verify": "boolean",
|
|
24138
|
-
"tls-max-version": "value",
|
|
24139
|
-
"insecure-plaintext": "boolean",
|
|
24140
|
-
anonymous: "boolean",
|
|
24141
|
-
profile: "value",
|
|
24142
|
-
auth: "value",
|
|
24143
|
-
"gssapi-service": "value",
|
|
24144
|
-
"gssapi-protection": "value",
|
|
24145
|
-
fields: "value",
|
|
24146
|
-
attributes: "value"
|
|
24147
|
-
},
|
|
24148
|
-
positionalInput: true
|
|
24149
|
-
}
|
|
24150
|
-
]
|
|
24151
|
-
};
|
|
24152
|
-
|
|
24153
|
-
// src/cli/help.ts
|
|
24154
|
-
var commands = {
|
|
24155
|
-
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" },
|
|
24156
|
-
setup: {
|
|
24157
|
-
usage: "artium-axi setup --host <claude|codex|opencode|pi> [--hook] [--force]",
|
|
24158
|
-
purpose: "Install skills for your signed-in account\u2019s granted tools and an optional Claude Code session hook.",
|
|
24159
|
-
flags: ["--host <claude|codex|opencode|pi> (required)", "--hook (default false; Claude Code only)", "--force (default false; explicitly replace an edited skill)"],
|
|
24160
|
-
example: "artium-axi setup --host claude --hook"
|
|
24161
|
-
},
|
|
24162
|
-
tools: { usage: "artium-axi tools", purpose: "List available tools with their status and pinned version.", flags: [], example: "artium-axi tools" },
|
|
24163
|
-
"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" },
|
|
24164
|
-
whoami: { usage: "artium-axi whoami", purpose: "Show your identity, roles, access expiry and server.", flags: [], example: "artium-axi whoami" },
|
|
24165
|
-
login: {
|
|
24166
|
-
usage: "artium-axi login --sso | --username <username> [--password-stdin]",
|
|
24167
|
-
purpose: "Sign in through browser SSO (8-hour session) or with a local account.",
|
|
24168
|
-
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)"],
|
|
24169
|
-
example: "artium-axi login --sso"
|
|
24170
|
-
},
|
|
24171
|
-
passwd: {
|
|
24172
|
-
usage: "artium-axi passwd [--password-stdin]",
|
|
24173
|
-
purpose: "Change your password, then sign in again.",
|
|
24174
|
-
flags: ["--password-stdin (default false; otherwise a terminal prompt; current password uses ARTIUM_AXI_CURRENT_PASSWORD or a terminal prompt)"],
|
|
24175
|
-
example: "artium-axi passwd --password-stdin"
|
|
24176
|
-
},
|
|
24177
|
-
logout: { usage: "artium-axi logout", purpose: "Remove local tokens and revoke the server session.", flags: [], example: "artium-axi logout" },
|
|
24178
|
-
doctor: { usage: "artium-axi doctor", purpose: "Check the server, certificate, token, CLI version and cached tool health.", flags: [], example: "artium-axi doctor" },
|
|
24179
|
-
"falcon-axi": {
|
|
24180
|
-
usage: "artium-axi falcon-axi [<args>]",
|
|
24181
|
-
purpose: "Run Falcon commands with your managed credentials.",
|
|
24182
|
-
flags: ["Arguments after falcon-axi are forwarded upstream, including --help."],
|
|
24183
|
-
example: `artium-axi falcon-axi ${falcon_axi_default.discovery.example.join(" ")}`
|
|
24184
|
-
},
|
|
24185
|
-
"vectra-axi": {
|
|
24186
|
-
usage: "artium-axi vectra-axi [<args>]",
|
|
24187
|
-
purpose: "Run Vectra commands with your managed credentials.",
|
|
24188
|
-
flags: ["Arguments after vectra-axi are forwarded upstream, including --help."],
|
|
24189
|
-
example: `artium-axi vectra-axi ${vectra_axi_default.discovery.example.join(" ")}`
|
|
24190
|
-
},
|
|
24191
|
-
"ldap-axi": {
|
|
24192
|
-
usage: "artium-axi ldap-axi [<args>]",
|
|
24193
|
-
purpose: "Read directory data with the managed LDAP bind identity.",
|
|
24194
|
-
flags: ["Arguments after ldap-axi are forwarded upstream, including --help."],
|
|
24195
|
-
example: `artium-axi ldap-axi ${ldap_axi_default.discovery.example.join(" ")}`
|
|
24196
|
-
},
|
|
24197
|
-
"ado-axi": {
|
|
24198
|
-
usage: "artium-axi ado-axi [<args>]",
|
|
24199
|
-
purpose: "Run Azure DevOps commands with managed credentials.",
|
|
24200
|
-
flags: ["Arguments after ado-axi include --help. Organization and credentials are managed by Artium; api is GET only; writes are off by default."],
|
|
24201
|
-
example: "artium-axi ado-axi project list --limit 1"
|
|
24202
|
-
},
|
|
24203
|
-
"awx-axi": {
|
|
24204
|
-
usage: "artium-axi awx-axi [<args>]",
|
|
24205
|
-
purpose: "Inspect AWX automation with managed credentials.",
|
|
24206
|
-
flags: ["Arguments after awx-axi include --help. Operational writes are off by default; configuration, deletion and security writes are blocked."],
|
|
24207
|
-
example: "artium-axi awx-axi job list --limit 1"
|
|
24208
|
-
},
|
|
24209
|
-
"az-axi": {
|
|
24210
|
-
usage: "artium-axi az-axi [<args>]",
|
|
24211
|
-
purpose: "Run Azure commands with your managed identity.",
|
|
24212
|
-
flags: ["Arguments after az-axi are forwarded upstream, including --help."],
|
|
24213
|
-
example: "artium-axi az-axi sub list"
|
|
24214
|
-
},
|
|
24215
|
-
"mg-axi": {
|
|
24216
|
-
usage: "artium-axi mg-axi [<args>]",
|
|
24217
|
-
purpose: "Run Microsoft Graph commands with your managed identity.",
|
|
24218
|
-
flags: ["Arguments after mg-axi are forwarded upstream, including --help."],
|
|
24219
|
-
example: "artium-axi mg-axi entra user list"
|
|
24220
|
-
},
|
|
24221
|
-
"managed-session": {
|
|
24222
|
-
usage: "artium-axi --managed-session <command> [<args>]",
|
|
24223
|
-
purpose: "Let a caller supply and persist sessions through private pipes.",
|
|
24224
|
-
flags: [],
|
|
24225
|
-
example: "artium-axi --managed-session whoami"
|
|
24226
|
-
}
|
|
24227
|
-
};
|
|
24228
|
-
function commandHelp(command) {
|
|
24229
|
-
const entry = commands[command];
|
|
24230
|
-
const flags = [
|
|
24231
|
-
toolSchema.safeParse(command).success ? "--help before the tool name (default false)" : "--help (default false)",
|
|
24232
|
-
...entry.flags,
|
|
24233
|
-
"--managed-session before the command (default false; caller-owned sessions; see artium-axi --managed-session --help)"
|
|
24234
|
-
];
|
|
24235
|
-
const protocol = [
|
|
24236
|
-
"Session JSON on inherited pipe fd 3, new sessions and rotations as JSON lines on private pipe fd 4; no session file.",
|
|
24237
|
-
"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.",
|
|
24238
|
-
"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.",
|
|
24239
|
-
"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."
|
|
24240
|
-
];
|
|
24241
|
-
const purposes = command === "home" ? `commands[${Object.keys(commands).length - 2}]{command,purpose}:
|
|
24242
|
-
${Object.entries(commands).filter(([name]) => name !== "home" && name !== "managed-session").map(([name, value]) => ` ${name},${JSON.stringify(value.purpose)}`).join("\n")}
|
|
24243
|
-
` : "";
|
|
24244
|
-
return `purpose: ${entry.purpose}
|
|
24245
|
-
usage: ${entry.usage}
|
|
24246
|
-
${purposes}flags[${flags.length}]:
|
|
24247
|
-
${flags.map((flag) => ` - ${JSON.stringify(flag)}`).join("\n")}
|
|
24248
|
-
example: ${entry.example}
|
|
24249
|
-
` + (command === "login" || command === "managed-session" ? `managedSession[${protocol.length}]:
|
|
24250
|
-
${protocol.map((line) => ` - ${JSON.stringify(line)}`).join("\n")}
|
|
24251
|
-
` : "");
|
|
24252
|
-
}
|
|
24253
|
-
function validateArguments(args, prefixHelp) {
|
|
24254
|
-
const command = args[0];
|
|
24255
|
-
if (command === "tools") args = [...args.filter((arg) => arg !== "--help"), ...args.filter((arg) => arg === "--help")];
|
|
24256
|
-
const rootFlags = "--help, --version, --managed-session (before the command)";
|
|
24257
|
-
const rootCommands = Object.keys(commands).filter((name) => name !== "home" && name !== "managed-session" && name !== "tools show").join(", ");
|
|
24258
|
-
function fail(token, level2, choices2) {
|
|
24259
|
-
const kind = token?.startsWith("-") ? "flag" : "argument";
|
|
24260
|
-
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}.`;
|
|
24261
|
-
throw new ArtiumError("INVALID_INPUT", message, choices2);
|
|
24262
|
-
}
|
|
24263
|
-
if (!command) return;
|
|
24264
|
-
if (command === "--version" && args.length === 1) return;
|
|
24265
|
-
if (!Object.hasOwn(commands, command) || command === "home" || command === "managed-session" || command === "tools show") {
|
|
24266
|
-
fail(command, "artium-axi", `Valid commands: ${rootCommands}. Valid flags: ${rootFlags}.`);
|
|
24267
|
-
}
|
|
24268
|
-
if (toolSchema.safeParse(command).success) {
|
|
24269
|
-
if (prefixHelp && args.length > 1) fail(args[1], command, `Use artium-axi --help ${command} for local help; artium-axi ${command} --help for upstream flags.`);
|
|
24270
|
-
return;
|
|
24271
|
-
}
|
|
24272
|
-
let level = command;
|
|
24273
|
-
let start = 1;
|
|
24274
|
-
if (command === "tools" && args[1] === "show") {
|
|
24275
|
-
level = "tools show";
|
|
24276
|
-
start = 2;
|
|
24277
|
-
}
|
|
24278
|
-
const entry = commands[level];
|
|
24279
|
-
const validFlags = ["--help", ...entry.flags.map((flag) => flag.split(" ")[0])];
|
|
24280
|
-
const choices = `Valid flags for ${level}: ${validFlags.join(", ")}.` + (level === "tools" ? " Valid subcommands: show <tool>." : level === "tools show" ? ` Valid tools: ${toolSchema.options.join(", ")}.` : "");
|
|
24281
|
-
let tool = false;
|
|
24282
|
-
const seen = /* @__PURE__ */ new Set();
|
|
24283
|
-
for (let index = start; index < args.length; index++) {
|
|
24284
|
-
const token = args[index];
|
|
24285
|
-
if (level === "tools show" && !token.startsWith("-") && !tool) {
|
|
24286
|
-
if (!toolSchema.safeParse(token).success) fail(token, level, choices);
|
|
24287
|
-
tool = true;
|
|
24288
|
-
} else {
|
|
24289
|
-
if (!validFlags.includes(token) || seen.has(token)) fail(token, level, choices);
|
|
24290
|
-
seen.add(token);
|
|
24291
|
-
if (token === "--username" || token === "--host") {
|
|
24292
|
-
const value = args[index + 1];
|
|
24293
|
-
if (!value) fail(value, `${level} ${token}`, `Supply ${token} ${token === "--host" ? "<claude|codex|opencode|pi>" : "<username>"}. ${choices}`);
|
|
24294
|
-
if (token === "--host" && !["claude", "codex", "opencode", "pi"].includes(value)) fail(value, `${level} --host`, `Valid hosts: claude, codex, opencode, pi. Use ${entry.usage}.`);
|
|
24295
|
-
index++;
|
|
24296
|
-
}
|
|
24297
|
-
}
|
|
24298
|
-
}
|
|
24299
|
-
if (level === "tools show" && !tool && !seen.has("--help") && !prefixHelp) fail(void 0, level, choices);
|
|
24300
|
-
}
|
|
24301
|
-
function helpCommand(args, prefixHelp = false) {
|
|
24302
|
-
if (args[0] === "setup" && args.includes("--help")) {
|
|
24303
|
-
const path2 = args.filter((arg) => arg !== "--help");
|
|
24304
|
-
for (let index = 1; index < path2.length; index++) {
|
|
24305
|
-
if (path2[index] === "--host" && ["claude", "codex", "opencode", "pi"].includes(path2[index + 1])) index++;
|
|
24306
|
-
else if (path2[index] !== "--hook" && path2[index] !== "--force") return void 0;
|
|
24307
|
-
}
|
|
24308
|
-
return "setup";
|
|
24309
|
-
}
|
|
24310
|
-
if (toolSchema.safeParse(args[0]).success) return prefixHelp && args.length === 2 ? args[0] : void 0;
|
|
24311
|
-
if (args[0] === "login" || args[0] === "passwd") {
|
|
24312
|
-
if (args[0] === "login" && args.length === 3 && args.includes("--sso") && args.includes("--help")) return "login";
|
|
24313
|
-
let requested = false;
|
|
24314
|
-
let username = false;
|
|
24315
|
-
let stdin = false;
|
|
24316
|
-
for (let index = 1; index < args.length; index++) {
|
|
24317
|
-
const option = args[index];
|
|
24318
|
-
if (option === "--username" && args[0] === "login" && !username && args[index + 1] !== void 0) {
|
|
24319
|
-
username = true;
|
|
24320
|
-
index++;
|
|
24321
|
-
} else if (option === "--password-stdin" && !stdin) stdin = true;
|
|
24322
|
-
else if (option === "--help" && !requested) requested = true;
|
|
24323
|
-
else return void 0;
|
|
24324
|
-
}
|
|
24325
|
-
return requested ? args[0] : void 0;
|
|
24326
|
-
}
|
|
24327
|
-
if (!args.includes("--help")) return void 0;
|
|
24328
|
-
const path = args.filter((arg) => arg !== "--help");
|
|
24329
|
-
if (path.length === 0) return "home";
|
|
24330
|
-
if (path[0] === "tools" && path[1] === "show" && (path.length === 2 || path.length === 3 && toolSchema.safeParse(path[2]).success)) return "tools show";
|
|
24331
|
-
if (path.length === 1 && path[0] !== "home" && Object.hasOwn(commands, path[0])) return path[0];
|
|
24332
|
-
return void 0;
|
|
24333
|
-
}
|
|
24334
|
-
|
|
24335
23776
|
// tools/inventories/az-axi.json
|
|
24336
23777
|
var az_axi_default = {
|
|
24337
23778
|
generatedBy: "scripts/upstream-inventory.mjs",
|
|
@@ -29064,6 +28505,13 @@ var mg_axi_default = {
|
|
|
29064
28505
|
],
|
|
29065
28506
|
nativeWriteSettings: {
|
|
29066
28507
|
default: "disabled",
|
|
28508
|
+
supportedOperations: [
|
|
28509
|
+
"entra.conditional-access.policy.update",
|
|
28510
|
+
"entra.risky-user.dismiss",
|
|
28511
|
+
"entra.user.revokeSessions",
|
|
28512
|
+
"entra.user.update",
|
|
28513
|
+
"mg.entra.group.member.add"
|
|
28514
|
+
],
|
|
29067
28515
|
profileFields: {
|
|
29068
28516
|
"writes.allowWrites": "boolean",
|
|
29069
28517
|
"writes.operations": "string[]"
|
|
@@ -33640,171 +33088,710 @@ var mg_axi_default = {
|
|
|
33640
33088
|
positionalInput: false
|
|
33641
33089
|
},
|
|
33642
33090
|
{
|
|
33643
|
-
command: "entra lifecycle run user-processing-result count",
|
|
33091
|
+
command: "entra lifecycle run user-processing-result count",
|
|
33092
|
+
flags: {
|
|
33093
|
+
help: "boolean",
|
|
33094
|
+
profile: "value",
|
|
33095
|
+
"api-version": "value",
|
|
33096
|
+
workflow: "value",
|
|
33097
|
+
run: "value",
|
|
33098
|
+
scopes: "value",
|
|
33099
|
+
config: "value"
|
|
33100
|
+
},
|
|
33101
|
+
positionalInput: false
|
|
33102
|
+
},
|
|
33103
|
+
{
|
|
33104
|
+
command: "entra lifecycle run subject-processing-result list",
|
|
33105
|
+
flags: {
|
|
33106
|
+
help: "boolean",
|
|
33107
|
+
profile: "value",
|
|
33108
|
+
"api-version": "value",
|
|
33109
|
+
workflow: "value",
|
|
33110
|
+
run: "value",
|
|
33111
|
+
limit: "value",
|
|
33112
|
+
all: "boolean",
|
|
33113
|
+
filter: "value",
|
|
33114
|
+
fields: "value",
|
|
33115
|
+
full: "boolean",
|
|
33116
|
+
cursor: "value",
|
|
33117
|
+
scopes: "value",
|
|
33118
|
+
config: "value"
|
|
33119
|
+
},
|
|
33120
|
+
positionalInput: false
|
|
33121
|
+
},
|
|
33122
|
+
{
|
|
33123
|
+
command: "entra lifecycle run subject-processing-result show",
|
|
33124
|
+
flags: {
|
|
33125
|
+
help: "boolean",
|
|
33126
|
+
profile: "value",
|
|
33127
|
+
"api-version": "value",
|
|
33128
|
+
workflow: "value",
|
|
33129
|
+
run: "value",
|
|
33130
|
+
id: "value",
|
|
33131
|
+
fields: "value",
|
|
33132
|
+
full: "boolean",
|
|
33133
|
+
scopes: "value",
|
|
33134
|
+
config: "value"
|
|
33135
|
+
},
|
|
33136
|
+
positionalInput: false
|
|
33137
|
+
},
|
|
33138
|
+
{
|
|
33139
|
+
command: "entra lifecycle run subject-processing-result count",
|
|
33140
|
+
flags: {
|
|
33141
|
+
help: "boolean",
|
|
33142
|
+
profile: "value",
|
|
33143
|
+
"api-version": "value",
|
|
33144
|
+
workflow: "value",
|
|
33145
|
+
run: "value",
|
|
33146
|
+
scopes: "value",
|
|
33147
|
+
config: "value"
|
|
33148
|
+
},
|
|
33149
|
+
positionalInput: false
|
|
33150
|
+
},
|
|
33151
|
+
{
|
|
33152
|
+
command: "entra lifecycle run task-processing-result list",
|
|
33153
|
+
flags: {
|
|
33154
|
+
help: "boolean",
|
|
33155
|
+
profile: "value",
|
|
33156
|
+
"api-version": "value",
|
|
33157
|
+
workflow: "value",
|
|
33158
|
+
run: "value",
|
|
33159
|
+
limit: "value",
|
|
33160
|
+
all: "boolean",
|
|
33161
|
+
filter: "value",
|
|
33162
|
+
select: "value",
|
|
33163
|
+
fields: "value",
|
|
33164
|
+
full: "boolean",
|
|
33165
|
+
cursor: "value",
|
|
33166
|
+
scopes: "value",
|
|
33167
|
+
config: "value"
|
|
33168
|
+
},
|
|
33169
|
+
positionalInput: false
|
|
33170
|
+
},
|
|
33171
|
+
{
|
|
33172
|
+
command: "entra lifecycle run task-processing-result show",
|
|
33173
|
+
flags: {
|
|
33174
|
+
help: "boolean",
|
|
33175
|
+
profile: "value",
|
|
33176
|
+
"api-version": "value",
|
|
33177
|
+
workflow: "value",
|
|
33178
|
+
run: "value",
|
|
33179
|
+
id: "value",
|
|
33180
|
+
fields: "value",
|
|
33181
|
+
full: "boolean",
|
|
33182
|
+
scopes: "value",
|
|
33183
|
+
config: "value"
|
|
33184
|
+
},
|
|
33185
|
+
positionalInput: false
|
|
33186
|
+
},
|
|
33187
|
+
{
|
|
33188
|
+
command: "entra lifecycle run task-processing-result count",
|
|
33189
|
+
flags: {
|
|
33190
|
+
help: "boolean",
|
|
33191
|
+
profile: "value",
|
|
33192
|
+
"api-version": "value",
|
|
33193
|
+
workflow: "value",
|
|
33194
|
+
run: "value",
|
|
33195
|
+
scopes: "value",
|
|
33196
|
+
config: "value"
|
|
33197
|
+
},
|
|
33198
|
+
positionalInput: false
|
|
33199
|
+
},
|
|
33200
|
+
{
|
|
33201
|
+
command: "api get",
|
|
33202
|
+
flags: {
|
|
33203
|
+
help: "boolean",
|
|
33204
|
+
profile: "value",
|
|
33205
|
+
"api-version": "value",
|
|
33206
|
+
odata: "value",
|
|
33207
|
+
cursor: "value",
|
|
33208
|
+
scopes: "value",
|
|
33209
|
+
limit: "value",
|
|
33210
|
+
all: "boolean",
|
|
33211
|
+
full: "boolean",
|
|
33212
|
+
config: "value"
|
|
33213
|
+
},
|
|
33214
|
+
positionalInput: {
|
|
33215
|
+
name: "path",
|
|
33216
|
+
description: "Server-relative Graph path, e.g. /users",
|
|
33217
|
+
required: true
|
|
33218
|
+
}
|
|
33219
|
+
},
|
|
33220
|
+
{
|
|
33221
|
+
command: "login",
|
|
33222
|
+
flags: {
|
|
33223
|
+
help: "boolean",
|
|
33224
|
+
profile: "value",
|
|
33225
|
+
method: "value",
|
|
33226
|
+
scopes: "value",
|
|
33227
|
+
config: "value"
|
|
33228
|
+
},
|
|
33229
|
+
positionalInput: false
|
|
33230
|
+
},
|
|
33231
|
+
{
|
|
33232
|
+
command: "config path",
|
|
33233
|
+
flags: {
|
|
33234
|
+
help: "boolean",
|
|
33235
|
+
config: "value"
|
|
33236
|
+
},
|
|
33237
|
+
positionalInput: false
|
|
33238
|
+
},
|
|
33239
|
+
{
|
|
33240
|
+
command: "auth status",
|
|
33241
|
+
flags: {
|
|
33242
|
+
help: "boolean",
|
|
33243
|
+
profile: "value",
|
|
33244
|
+
config: "value"
|
|
33245
|
+
},
|
|
33246
|
+
positionalInput: false
|
|
33247
|
+
},
|
|
33248
|
+
{
|
|
33249
|
+
command: "auth logout",
|
|
33250
|
+
flags: {
|
|
33251
|
+
help: "boolean",
|
|
33252
|
+
profile: "value",
|
|
33253
|
+
config: "value"
|
|
33254
|
+
},
|
|
33255
|
+
positionalInput: false
|
|
33256
|
+
}
|
|
33257
|
+
]
|
|
33258
|
+
};
|
|
33259
|
+
|
|
33260
|
+
// tools/inventories/ldap-axi.json
|
|
33261
|
+
var ldap_axi_default = {
|
|
33262
|
+
generatedBy: "scripts/ldap-inventory.mjs",
|
|
33263
|
+
tool: "ldap-axi",
|
|
33264
|
+
version: "0.3.0",
|
|
33265
|
+
integrity: "sha512-QVectHNsRxYWNBf0im5DjeN78mcgK0Te0Sxh7uXGNb+AhQjsS5ywiCrnKAk0/INA/oxiZ1TiXaDX7jHAg5OvDg==",
|
|
33266
|
+
parserEvidence: "Installed pinned command schemas and reviewed CLI globals and entry routes",
|
|
33267
|
+
sources: [
|
|
33268
|
+
{
|
|
33269
|
+
path: "package.json",
|
|
33270
|
+
sha256: "9fa26acd15443dad0857c7468f570164e436f7b25aef3df733da3c4d859917a9"
|
|
33271
|
+
},
|
|
33272
|
+
{
|
|
33273
|
+
path: "README.md",
|
|
33274
|
+
sha256: "cd05d13da53b80aa651a5207b680e7fa6a0fb0c975244e4cc135d26b13391204"
|
|
33275
|
+
},
|
|
33276
|
+
{
|
|
33277
|
+
path: "axi-credential.schema.json",
|
|
33278
|
+
sha256: "76b9f5f449d844dcd4365b966ed907515582f72fc920b936dae825ebf1b7cc53"
|
|
33279
|
+
},
|
|
33280
|
+
{
|
|
33281
|
+
path: "dist/src/cli.js",
|
|
33282
|
+
sha256: "2cb024b2848c2c9e27c292205b3ed86a829cfed21d52e8fea06ef544a039ec2a"
|
|
33283
|
+
},
|
|
33284
|
+
{
|
|
33285
|
+
path: "dist/src/schema.js",
|
|
33286
|
+
sha256: "ba2285cbda6e5994c536b2f9de65736df1b43b0b10c5d5b7a1c2d7124ab198a0"
|
|
33287
|
+
},
|
|
33288
|
+
{
|
|
33289
|
+
path: "dist/src/config.js",
|
|
33290
|
+
sha256: "cbc48584b6ff2a2a70375e9e8e6242a87543a3e6e6f7e1c055a2d29c42b677f9"
|
|
33291
|
+
},
|
|
33292
|
+
{
|
|
33293
|
+
path: "dist/src/secrets.js",
|
|
33294
|
+
sha256: "9f2ccf86515cec1dd65f2dd5850188232374535f7fe56a788fdc7b94d91c8532"
|
|
33295
|
+
},
|
|
33296
|
+
{
|
|
33297
|
+
path: "dist/src/directory/auth.js",
|
|
33298
|
+
sha256: "64885ea4bc5067c58dcb4d432610f99eedfa9af65fa46273b68d503d26ec3214"
|
|
33299
|
+
},
|
|
33300
|
+
{
|
|
33301
|
+
path: "dist/src/directory/policy.js",
|
|
33302
|
+
sha256: "a697dd78990493f7f1c19d22278ebb922c997e9cf88a51b12adfaca30fa8a01d"
|
|
33303
|
+
}
|
|
33304
|
+
],
|
|
33305
|
+
credentialSchema: {
|
|
33306
|
+
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
33307
|
+
title: "ldap-axi profile",
|
|
33308
|
+
type: "object",
|
|
33309
|
+
additionalProperties: false,
|
|
33310
|
+
required: [
|
|
33311
|
+
"url"
|
|
33312
|
+
],
|
|
33313
|
+
properties: {
|
|
33314
|
+
url: {
|
|
33315
|
+
type: "string",
|
|
33316
|
+
pattern: "^ldaps?://",
|
|
33317
|
+
description: "LDAP URL without userinfo; use the server FQDN for ambient authentication"
|
|
33318
|
+
},
|
|
33319
|
+
auth: {
|
|
33320
|
+
enum: [
|
|
33321
|
+
"auto",
|
|
33322
|
+
"gssapi",
|
|
33323
|
+
"simple"
|
|
33324
|
+
],
|
|
33325
|
+
default: "auto"
|
|
33326
|
+
},
|
|
33327
|
+
bindDn: {
|
|
33328
|
+
type: "string",
|
|
33329
|
+
minLength: 1,
|
|
33330
|
+
description: "Simple-bind identity, required for simple authentication"
|
|
33331
|
+
},
|
|
33332
|
+
bindPassword: {
|
|
33333
|
+
"x-secret": true,
|
|
33334
|
+
description: "Simple-bind password reference; defaults to env LDAP_AXI_BIND_PASSWORD. No stored secrets.",
|
|
33335
|
+
oneOf: [
|
|
33336
|
+
{
|
|
33337
|
+
type: "object",
|
|
33338
|
+
additionalProperties: false,
|
|
33339
|
+
required: [
|
|
33340
|
+
"env"
|
|
33341
|
+
],
|
|
33342
|
+
properties: {
|
|
33343
|
+
env: {
|
|
33344
|
+
type: "string",
|
|
33345
|
+
pattern: "^[A-Za-z_][A-Za-z0-9_]*$"
|
|
33346
|
+
}
|
|
33347
|
+
}
|
|
33348
|
+
},
|
|
33349
|
+
{
|
|
33350
|
+
type: "object",
|
|
33351
|
+
additionalProperties: false,
|
|
33352
|
+
required: [
|
|
33353
|
+
"file"
|
|
33354
|
+
],
|
|
33355
|
+
properties: {
|
|
33356
|
+
file: {
|
|
33357
|
+
type: "string",
|
|
33358
|
+
pattern: "^(?:/|[A-Za-z]:[\\\\/])",
|
|
33359
|
+
description: "Absolute local path to a private UTF-8 password file; UNC/device paths are forbidden on Windows"
|
|
33360
|
+
}
|
|
33361
|
+
}
|
|
33362
|
+
}
|
|
33363
|
+
]
|
|
33364
|
+
},
|
|
33365
|
+
base: {
|
|
33366
|
+
type: "string"
|
|
33367
|
+
},
|
|
33368
|
+
pageSize: {
|
|
33369
|
+
type: "integer",
|
|
33370
|
+
minimum: 1,
|
|
33371
|
+
maximum: 1e3
|
|
33372
|
+
},
|
|
33373
|
+
caFile: {
|
|
33374
|
+
type: "string",
|
|
33375
|
+
minLength: 1
|
|
33376
|
+
},
|
|
33377
|
+
startTls: {
|
|
33378
|
+
type: "boolean",
|
|
33379
|
+
default: false
|
|
33380
|
+
},
|
|
33381
|
+
tlsMaxVersion: {
|
|
33382
|
+
const: "1.2"
|
|
33383
|
+
},
|
|
33384
|
+
flavor: {
|
|
33385
|
+
enum: [
|
|
33386
|
+
"ad",
|
|
33387
|
+
"adlds",
|
|
33388
|
+
"ldapv3"
|
|
33389
|
+
]
|
|
33390
|
+
},
|
|
33391
|
+
gssapiService: {
|
|
33392
|
+
type: "string",
|
|
33393
|
+
minLength: 1
|
|
33394
|
+
},
|
|
33395
|
+
gssapiProtection: {
|
|
33396
|
+
enum: [
|
|
33397
|
+
"none",
|
|
33398
|
+
"confidentiality"
|
|
33399
|
+
]
|
|
33400
|
+
}
|
|
33401
|
+
}
|
|
33402
|
+
},
|
|
33403
|
+
adapterBoundary: {
|
|
33404
|
+
unsafeOverrides: [
|
|
33405
|
+
"config",
|
|
33406
|
+
"url",
|
|
33407
|
+
"start-tls",
|
|
33408
|
+
"ca-file",
|
|
33409
|
+
"ca-only",
|
|
33410
|
+
"tls-no-verify",
|
|
33411
|
+
"tls-max-version",
|
|
33412
|
+
"insecure-plaintext",
|
|
33413
|
+
"anonymous",
|
|
33414
|
+
"profile",
|
|
33415
|
+
"auth",
|
|
33416
|
+
"gssapi-service",
|
|
33417
|
+
"gssapi-protection"
|
|
33418
|
+
],
|
|
33419
|
+
blockedCommands: [
|
|
33420
|
+
"config",
|
|
33421
|
+
"profile",
|
|
33422
|
+
"setup"
|
|
33423
|
+
],
|
|
33424
|
+
sensitiveFlags: [
|
|
33425
|
+
"base",
|
|
33426
|
+
"filter",
|
|
33427
|
+
"name",
|
|
33428
|
+
"sam",
|
|
33429
|
+
"upn",
|
|
33430
|
+
"uid"
|
|
33431
|
+
],
|
|
33432
|
+
authentication: "Stored simple-bind identity over verified LDAPS or StartTLS; no ambient ticket or keytab",
|
|
33433
|
+
inputs: {
|
|
33434
|
+
stdin: "unsupported",
|
|
33435
|
+
files: "unsupported",
|
|
33436
|
+
caFile: "stored PEM materialized privately by host"
|
|
33437
|
+
},
|
|
33438
|
+
resources: {
|
|
33439
|
+
nodeHeapMiB: 128
|
|
33440
|
+
},
|
|
33441
|
+
nativeWrites: "read-only upstream design"
|
|
33442
|
+
},
|
|
33443
|
+
discovery: {
|
|
33444
|
+
commands: [
|
|
33445
|
+
"entry",
|
|
33446
|
+
"user",
|
|
33447
|
+
"group",
|
|
33448
|
+
"computer",
|
|
33449
|
+
"auth status",
|
|
33450
|
+
"server"
|
|
33451
|
+
],
|
|
33452
|
+
example: [
|
|
33453
|
+
"user",
|
|
33454
|
+
"list",
|
|
33455
|
+
"--limit",
|
|
33456
|
+
"1"
|
|
33457
|
+
],
|
|
33458
|
+
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"
|
|
33459
|
+
},
|
|
33460
|
+
suggestionFields: [
|
|
33461
|
+
"help"
|
|
33462
|
+
],
|
|
33463
|
+
format: "TOON",
|
|
33464
|
+
commands: [
|
|
33465
|
+
{
|
|
33466
|
+
command: "home",
|
|
33467
|
+
flags: {
|
|
33468
|
+
help: "boolean",
|
|
33469
|
+
config: "value",
|
|
33470
|
+
url: "value",
|
|
33471
|
+
base: "value",
|
|
33472
|
+
"start-tls": "boolean",
|
|
33473
|
+
"ca-file": "value",
|
|
33474
|
+
"ca-only": "boolean",
|
|
33475
|
+
"tls-no-verify": "boolean",
|
|
33476
|
+
"tls-max-version": "value",
|
|
33477
|
+
"insecure-plaintext": "boolean",
|
|
33478
|
+
anonymous: "boolean",
|
|
33479
|
+
profile: "value",
|
|
33480
|
+
auth: "value",
|
|
33481
|
+
"gssapi-service": "value",
|
|
33482
|
+
"gssapi-protection": "value"
|
|
33483
|
+
},
|
|
33484
|
+
positionalInput: false
|
|
33485
|
+
},
|
|
33486
|
+
{
|
|
33487
|
+
command: "auth status",
|
|
33644
33488
|
flags: {
|
|
33645
33489
|
help: "boolean",
|
|
33490
|
+
config: "value",
|
|
33491
|
+
url: "value",
|
|
33492
|
+
base: "value",
|
|
33493
|
+
"start-tls": "boolean",
|
|
33494
|
+
"ca-file": "value",
|
|
33495
|
+
"ca-only": "boolean",
|
|
33496
|
+
"tls-no-verify": "boolean",
|
|
33497
|
+
"tls-max-version": "value",
|
|
33498
|
+
"insecure-plaintext": "boolean",
|
|
33499
|
+
anonymous: "boolean",
|
|
33646
33500
|
profile: "value",
|
|
33647
|
-
|
|
33648
|
-
|
|
33649
|
-
|
|
33650
|
-
|
|
33651
|
-
config: "value"
|
|
33501
|
+
auth: "value",
|
|
33502
|
+
"gssapi-service": "value",
|
|
33503
|
+
"gssapi-protection": "value",
|
|
33504
|
+
offline: "boolean"
|
|
33652
33505
|
},
|
|
33653
33506
|
positionalInput: false
|
|
33654
33507
|
},
|
|
33655
33508
|
{
|
|
33656
|
-
command: "
|
|
33509
|
+
command: "server",
|
|
33657
33510
|
flags: {
|
|
33658
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",
|
|
33659
33522
|
profile: "value",
|
|
33660
|
-
|
|
33661
|
-
|
|
33662
|
-
|
|
33663
|
-
limit: "value",
|
|
33664
|
-
all: "boolean",
|
|
33665
|
-
filter: "value",
|
|
33666
|
-
fields: "value",
|
|
33667
|
-
full: "boolean",
|
|
33668
|
-
cursor: "value",
|
|
33669
|
-
scopes: "value",
|
|
33670
|
-
config: "value"
|
|
33523
|
+
auth: "value",
|
|
33524
|
+
"gssapi-service": "value",
|
|
33525
|
+
"gssapi-protection": "value"
|
|
33671
33526
|
},
|
|
33672
33527
|
positionalInput: false
|
|
33673
33528
|
},
|
|
33674
33529
|
{
|
|
33675
|
-
command: "
|
|
33530
|
+
command: "entry search",
|
|
33676
33531
|
flags: {
|
|
33677
33532
|
help: "boolean",
|
|
33533
|
+
config: "value",
|
|
33534
|
+
url: "value",
|
|
33535
|
+
base: "value",
|
|
33536
|
+
"start-tls": "boolean",
|
|
33537
|
+
"ca-file": "value",
|
|
33538
|
+
"ca-only": "boolean",
|
|
33539
|
+
"tls-no-verify": "boolean",
|
|
33540
|
+
"tls-max-version": "value",
|
|
33541
|
+
"insecure-plaintext": "boolean",
|
|
33542
|
+
anonymous: "boolean",
|
|
33678
33543
|
profile: "value",
|
|
33679
|
-
|
|
33680
|
-
|
|
33681
|
-
|
|
33682
|
-
|
|
33683
|
-
|
|
33684
|
-
|
|
33685
|
-
|
|
33686
|
-
|
|
33544
|
+
auth: "value",
|
|
33545
|
+
"gssapi-service": "value",
|
|
33546
|
+
"gssapi-protection": "value",
|
|
33547
|
+
filter: "value",
|
|
33548
|
+
scope: "value",
|
|
33549
|
+
attributes: "value",
|
|
33550
|
+
"page-size": "value",
|
|
33551
|
+
"max-rows": "value",
|
|
33552
|
+
all: "boolean"
|
|
33687
33553
|
},
|
|
33688
33554
|
positionalInput: false
|
|
33689
33555
|
},
|
|
33690
33556
|
{
|
|
33691
|
-
command: "
|
|
33557
|
+
command: "entry show",
|
|
33692
33558
|
flags: {
|
|
33693
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",
|
|
33694
33570
|
profile: "value",
|
|
33695
|
-
|
|
33696
|
-
|
|
33697
|
-
|
|
33698
|
-
|
|
33699
|
-
|
|
33571
|
+
auth: "value",
|
|
33572
|
+
"gssapi-service": "value",
|
|
33573
|
+
"gssapi-protection": "value",
|
|
33574
|
+
attributes: "value",
|
|
33575
|
+
"page-size": "value"
|
|
33700
33576
|
},
|
|
33701
|
-
positionalInput:
|
|
33577
|
+
positionalInput: true
|
|
33702
33578
|
},
|
|
33703
33579
|
{
|
|
33704
|
-
command: "
|
|
33580
|
+
command: "user list",
|
|
33705
33581
|
flags: {
|
|
33706
33582
|
help: "boolean",
|
|
33583
|
+
config: "value",
|
|
33584
|
+
url: "value",
|
|
33585
|
+
base: "value",
|
|
33586
|
+
"start-tls": "boolean",
|
|
33587
|
+
"ca-file": "value",
|
|
33588
|
+
"ca-only": "boolean",
|
|
33589
|
+
"tls-no-verify": "boolean",
|
|
33590
|
+
"tls-max-version": "value",
|
|
33591
|
+
"insecure-plaintext": "boolean",
|
|
33592
|
+
anonymous: "boolean",
|
|
33707
33593
|
profile: "value",
|
|
33708
|
-
|
|
33709
|
-
|
|
33710
|
-
|
|
33711
|
-
|
|
33594
|
+
auth: "value",
|
|
33595
|
+
"gssapi-service": "value",
|
|
33596
|
+
"gssapi-protection": "value",
|
|
33597
|
+
disabled: "boolean",
|
|
33598
|
+
enabled: "boolean",
|
|
33599
|
+
locked: "boolean",
|
|
33712
33600
|
all: "boolean",
|
|
33601
|
+
name: "value",
|
|
33602
|
+
sam: "value",
|
|
33603
|
+
upn: "value",
|
|
33604
|
+
uid: "value",
|
|
33713
33605
|
filter: "value",
|
|
33714
|
-
|
|
33606
|
+
scope: "value",
|
|
33607
|
+
"max-rows": "value",
|
|
33608
|
+
"page-size": "value",
|
|
33609
|
+
limit: "value",
|
|
33715
33610
|
fields: "value",
|
|
33716
|
-
|
|
33717
|
-
cursor: "value",
|
|
33718
|
-
scopes: "value",
|
|
33719
|
-
config: "value"
|
|
33611
|
+
attributes: "value"
|
|
33720
33612
|
},
|
|
33721
33613
|
positionalInput: false
|
|
33722
33614
|
},
|
|
33723
33615
|
{
|
|
33724
|
-
command: "
|
|
33616
|
+
command: "user show",
|
|
33725
33617
|
flags: {
|
|
33726
33618
|
help: "boolean",
|
|
33619
|
+
config: "value",
|
|
33620
|
+
url: "value",
|
|
33621
|
+
base: "value",
|
|
33622
|
+
"start-tls": "boolean",
|
|
33623
|
+
"ca-file": "value",
|
|
33624
|
+
"ca-only": "boolean",
|
|
33625
|
+
"tls-no-verify": "boolean",
|
|
33626
|
+
"tls-max-version": "value",
|
|
33627
|
+
"insecure-plaintext": "boolean",
|
|
33628
|
+
anonymous: "boolean",
|
|
33727
33629
|
profile: "value",
|
|
33728
|
-
|
|
33729
|
-
|
|
33730
|
-
|
|
33731
|
-
id: "value",
|
|
33630
|
+
auth: "value",
|
|
33631
|
+
"gssapi-service": "value",
|
|
33632
|
+
"gssapi-protection": "value",
|
|
33732
33633
|
fields: "value",
|
|
33733
|
-
|
|
33734
|
-
scopes: "value",
|
|
33735
|
-
config: "value"
|
|
33634
|
+
attributes: "value"
|
|
33736
33635
|
},
|
|
33737
|
-
positionalInput:
|
|
33636
|
+
positionalInput: true
|
|
33738
33637
|
},
|
|
33739
33638
|
{
|
|
33740
|
-
command: "
|
|
33639
|
+
command: "user groups",
|
|
33741
33640
|
flags: {
|
|
33742
33641
|
help: "boolean",
|
|
33642
|
+
config: "value",
|
|
33643
|
+
url: "value",
|
|
33644
|
+
base: "value",
|
|
33645
|
+
"start-tls": "boolean",
|
|
33646
|
+
"ca-file": "value",
|
|
33647
|
+
"ca-only": "boolean",
|
|
33648
|
+
"tls-no-verify": "boolean",
|
|
33649
|
+
"tls-max-version": "value",
|
|
33650
|
+
"insecure-plaintext": "boolean",
|
|
33651
|
+
anonymous: "boolean",
|
|
33743
33652
|
profile: "value",
|
|
33744
|
-
|
|
33745
|
-
|
|
33746
|
-
|
|
33747
|
-
|
|
33748
|
-
|
|
33653
|
+
auth: "value",
|
|
33654
|
+
"gssapi-service": "value",
|
|
33655
|
+
"gssapi-protection": "value",
|
|
33656
|
+
nested: "boolean",
|
|
33657
|
+
"max-rows": "value",
|
|
33658
|
+
"page-size": "value",
|
|
33659
|
+
fields: "value"
|
|
33749
33660
|
},
|
|
33750
|
-
positionalInput:
|
|
33661
|
+
positionalInput: true
|
|
33751
33662
|
},
|
|
33752
33663
|
{
|
|
33753
|
-
command: "
|
|
33664
|
+
command: "group list",
|
|
33754
33665
|
flags: {
|
|
33755
33666
|
help: "boolean",
|
|
33667
|
+
config: "value",
|
|
33668
|
+
url: "value",
|
|
33669
|
+
base: "value",
|
|
33670
|
+
"start-tls": "boolean",
|
|
33671
|
+
"ca-file": "value",
|
|
33672
|
+
"ca-only": "boolean",
|
|
33673
|
+
"tls-no-verify": "boolean",
|
|
33674
|
+
"tls-max-version": "value",
|
|
33675
|
+
"insecure-plaintext": "boolean",
|
|
33676
|
+
anonymous: "boolean",
|
|
33756
33677
|
profile: "value",
|
|
33757
|
-
|
|
33758
|
-
|
|
33759
|
-
|
|
33760
|
-
scopes: "value",
|
|
33761
|
-
limit: "value",
|
|
33678
|
+
auth: "value",
|
|
33679
|
+
"gssapi-service": "value",
|
|
33680
|
+
"gssapi-protection": "value",
|
|
33762
33681
|
all: "boolean",
|
|
33763
|
-
|
|
33764
|
-
|
|
33682
|
+
name: "value",
|
|
33683
|
+
sam: "value",
|
|
33684
|
+
filter: "value",
|
|
33685
|
+
scope: "value",
|
|
33686
|
+
"max-rows": "value",
|
|
33687
|
+
"page-size": "value",
|
|
33688
|
+
limit: "value",
|
|
33689
|
+
fields: "value",
|
|
33690
|
+
attributes: "value"
|
|
33765
33691
|
},
|
|
33766
|
-
positionalInput:
|
|
33767
|
-
name: "path",
|
|
33768
|
-
description: "Server-relative Graph path, e.g. /users",
|
|
33769
|
-
required: true
|
|
33770
|
-
}
|
|
33692
|
+
positionalInput: false
|
|
33771
33693
|
},
|
|
33772
33694
|
{
|
|
33773
|
-
command: "
|
|
33695
|
+
command: "group show",
|
|
33774
33696
|
flags: {
|
|
33775
33697
|
help: "boolean",
|
|
33698
|
+
config: "value",
|
|
33699
|
+
url: "value",
|
|
33700
|
+
base: "value",
|
|
33701
|
+
"start-tls": "boolean",
|
|
33702
|
+
"ca-file": "value",
|
|
33703
|
+
"ca-only": "boolean",
|
|
33704
|
+
"tls-no-verify": "boolean",
|
|
33705
|
+
"tls-max-version": "value",
|
|
33706
|
+
"insecure-plaintext": "boolean",
|
|
33707
|
+
anonymous: "boolean",
|
|
33776
33708
|
profile: "value",
|
|
33777
|
-
|
|
33778
|
-
|
|
33779
|
-
|
|
33709
|
+
auth: "value",
|
|
33710
|
+
"gssapi-service": "value",
|
|
33711
|
+
"gssapi-protection": "value",
|
|
33712
|
+
fields: "value",
|
|
33713
|
+
attributes: "value"
|
|
33780
33714
|
},
|
|
33781
|
-
positionalInput:
|
|
33715
|
+
positionalInput: true
|
|
33782
33716
|
},
|
|
33783
33717
|
{
|
|
33784
|
-
command: "
|
|
33718
|
+
command: "group members",
|
|
33785
33719
|
flags: {
|
|
33786
33720
|
help: "boolean",
|
|
33787
|
-
config: "value"
|
|
33721
|
+
config: "value",
|
|
33722
|
+
url: "value",
|
|
33723
|
+
base: "value",
|
|
33724
|
+
"start-tls": "boolean",
|
|
33725
|
+
"ca-file": "value",
|
|
33726
|
+
"ca-only": "boolean",
|
|
33727
|
+
"tls-no-verify": "boolean",
|
|
33728
|
+
"tls-max-version": "value",
|
|
33729
|
+
"insecure-plaintext": "boolean",
|
|
33730
|
+
anonymous: "boolean",
|
|
33731
|
+
profile: "value",
|
|
33732
|
+
auth: "value",
|
|
33733
|
+
"gssapi-service": "value",
|
|
33734
|
+
"gssapi-protection": "value",
|
|
33735
|
+
nested: "boolean",
|
|
33736
|
+
"max-rows": "value",
|
|
33737
|
+
"page-size": "value",
|
|
33738
|
+
fields: "value"
|
|
33788
33739
|
},
|
|
33789
|
-
positionalInput:
|
|
33740
|
+
positionalInput: true
|
|
33790
33741
|
},
|
|
33791
33742
|
{
|
|
33792
|
-
command: "
|
|
33743
|
+
command: "computer list",
|
|
33793
33744
|
flags: {
|
|
33794
33745
|
help: "boolean",
|
|
33746
|
+
config: "value",
|
|
33747
|
+
url: "value",
|
|
33748
|
+
base: "value",
|
|
33749
|
+
"start-tls": "boolean",
|
|
33750
|
+
"ca-file": "value",
|
|
33751
|
+
"ca-only": "boolean",
|
|
33752
|
+
"tls-no-verify": "boolean",
|
|
33753
|
+
"tls-max-version": "value",
|
|
33754
|
+
"insecure-plaintext": "boolean",
|
|
33755
|
+
anonymous: "boolean",
|
|
33795
33756
|
profile: "value",
|
|
33796
|
-
|
|
33757
|
+
auth: "value",
|
|
33758
|
+
"gssapi-service": "value",
|
|
33759
|
+
"gssapi-protection": "value",
|
|
33760
|
+
all: "boolean",
|
|
33761
|
+
name: "value",
|
|
33762
|
+
sam: "value",
|
|
33763
|
+
filter: "value",
|
|
33764
|
+
scope: "value",
|
|
33765
|
+
"max-rows": "value",
|
|
33766
|
+
"page-size": "value",
|
|
33767
|
+
limit: "value",
|
|
33768
|
+
fields: "value",
|
|
33769
|
+
attributes: "value"
|
|
33797
33770
|
},
|
|
33798
33771
|
positionalInput: false
|
|
33799
33772
|
},
|
|
33800
33773
|
{
|
|
33801
|
-
command: "
|
|
33774
|
+
command: "computer show",
|
|
33802
33775
|
flags: {
|
|
33803
33776
|
help: "boolean",
|
|
33777
|
+
config: "value",
|
|
33778
|
+
url: "value",
|
|
33779
|
+
base: "value",
|
|
33780
|
+
"start-tls": "boolean",
|
|
33781
|
+
"ca-file": "value",
|
|
33782
|
+
"ca-only": "boolean",
|
|
33783
|
+
"tls-no-verify": "boolean",
|
|
33784
|
+
"tls-max-version": "value",
|
|
33785
|
+
"insecure-plaintext": "boolean",
|
|
33786
|
+
anonymous: "boolean",
|
|
33804
33787
|
profile: "value",
|
|
33805
|
-
|
|
33788
|
+
auth: "value",
|
|
33789
|
+
"gssapi-service": "value",
|
|
33790
|
+
"gssapi-protection": "value",
|
|
33791
|
+
fields: "value",
|
|
33792
|
+
attributes: "value"
|
|
33806
33793
|
},
|
|
33807
|
-
positionalInput:
|
|
33794
|
+
positionalInput: true
|
|
33808
33795
|
}
|
|
33809
33796
|
]
|
|
33810
33797
|
};
|
|
@@ -34879,8 +34866,8 @@ var ado_axi_default = {
|
|
|
34879
34866
|
var awx_axi_default = {
|
|
34880
34867
|
generatedBy: "scripts/awx-inventory.mjs",
|
|
34881
34868
|
tool: "awx-axi",
|
|
34882
|
-
version: "0.1.
|
|
34883
|
-
integrity: "sha512-
|
|
34869
|
+
version: "0.1.8",
|
|
34870
|
+
integrity: "sha512-tkheZgSTjs6nZT3KWo0e/+SH43ZacfvZpo7COktmpIs8lNr8VLhUtrGARz+mvwj8pov4zscdfmxAHL/8V025Bw==",
|
|
34884
34871
|
parserEvidence: "Published domain registry, reviewed plan effects and transport safety gates",
|
|
34885
34872
|
sources: [
|
|
34886
34873
|
{
|
|
@@ -34893,7 +34880,7 @@ var awx_axi_default = {
|
|
|
34893
34880
|
},
|
|
34894
34881
|
{
|
|
34895
34882
|
path: "dist/commands/auth.js",
|
|
34896
|
-
sha256: "
|
|
34883
|
+
sha256: "cf8e52f33d6acb5091d009c23df4957da3d208d4e9417bdcbba547f4d7c8b690"
|
|
34897
34884
|
},
|
|
34898
34885
|
{
|
|
34899
34886
|
path: "dist/commands/home.js",
|
|
@@ -34917,7 +34904,7 @@ var awx_axi_default = {
|
|
|
34917
34904
|
},
|
|
34918
34905
|
{
|
|
34919
34906
|
path: "dist/core/flags.js",
|
|
34920
|
-
sha256: "
|
|
34907
|
+
sha256: "60d5c58ab68c3cc61e57c249b93db544d619469c6fbd1e3082ee573ed1b50498"
|
|
34921
34908
|
},
|
|
34922
34909
|
{
|
|
34923
34910
|
path: "dist/core/mutations.js",
|
|
@@ -34925,11 +34912,11 @@ var awx_axi_default = {
|
|
|
34925
34912
|
},
|
|
34926
34913
|
{
|
|
34927
34914
|
path: "dist/core/output.js",
|
|
34928
|
-
sha256: "
|
|
34915
|
+
sha256: "7406df524ee329a3e2eb1f2b37295d8699de678e687525c8d55a3ce67d78dd0a"
|
|
34929
34916
|
},
|
|
34930
34917
|
{
|
|
34931
34918
|
path: "dist/core/paginate.js",
|
|
34932
|
-
sha256: "
|
|
34919
|
+
sha256: "d952bc390a4ac2da263b1d98c24f05e416652335904de37b26379576632059a3"
|
|
34933
34920
|
},
|
|
34934
34921
|
{
|
|
34935
34922
|
path: "dist/core/poll.js",
|
|
@@ -34937,19 +34924,19 @@ var awx_axi_default = {
|
|
|
34937
34924
|
},
|
|
34938
34925
|
{
|
|
34939
34926
|
path: "dist/core/private-file.js",
|
|
34940
|
-
sha256: "
|
|
34927
|
+
sha256: "30f44672d91f74b232ae6f7884b7daee6bd12ce6702ca57b3213a8a5da4bf992"
|
|
34941
34928
|
},
|
|
34942
34929
|
{
|
|
34943
34930
|
path: "dist/core/profiles.js",
|
|
34944
|
-
sha256: "
|
|
34931
|
+
sha256: "c3ac1d2a531115d253ed83020d88e3763108249a4a03ca710da40833db05bc7d"
|
|
34945
34932
|
},
|
|
34946
34933
|
{
|
|
34947
34934
|
path: "dist/core/redact.js",
|
|
34948
|
-
sha256: "
|
|
34935
|
+
sha256: "4fa205b30a3165738578c01ecfa5787bb6993ee11b07dbcb74b6401d4441679f"
|
|
34949
34936
|
},
|
|
34950
34937
|
{
|
|
34951
34938
|
path: "dist/core/registry.js",
|
|
34952
|
-
sha256: "
|
|
34939
|
+
sha256: "89d3983928dd3a63712e9c78a4959c2e9c950097a3d200f6d1ccf2c3327bbdfd"
|
|
34953
34940
|
},
|
|
34954
34941
|
{
|
|
34955
34942
|
path: "dist/core/resolve.js",
|
|
@@ -34965,95 +34952,95 @@ var awx_axi_default = {
|
|
|
34965
34952
|
},
|
|
34966
34953
|
{
|
|
34967
34954
|
path: "dist/domains/activity-stream/index.js",
|
|
34968
|
-
sha256: "
|
|
34955
|
+
sha256: "633995f66b7e24cb4c6d98341e943a7e8d61b3b271503cb1b191b161b3fb927f"
|
|
34969
34956
|
},
|
|
34970
34957
|
{
|
|
34971
34958
|
path: "dist/domains/ad-hoc/index.js",
|
|
34972
|
-
sha256: "
|
|
34959
|
+
sha256: "92f5395f74f449bb6fde43276764dfe965eaa8afb491a8f5e13323dc9a366084"
|
|
34973
34960
|
},
|
|
34974
34961
|
{
|
|
34975
34962
|
path: "dist/domains/approval/index.js",
|
|
34976
|
-
sha256: "
|
|
34963
|
+
sha256: "741282a1143b776ba0850cd8cc0ec3da913e1d354cc08f671b51cdea58621b1b"
|
|
34977
34964
|
},
|
|
34978
34965
|
{
|
|
34979
34966
|
path: "dist/domains/credential/index.js",
|
|
34980
|
-
sha256: "
|
|
34967
|
+
sha256: "00e5171e9b653f8266722cc53302748bbd54c874c07e60e2967f95797c7bcf05"
|
|
34981
34968
|
},
|
|
34982
34969
|
{
|
|
34983
34970
|
path: "dist/domains/execution-environment/index.js",
|
|
34984
|
-
sha256: "
|
|
34971
|
+
sha256: "0038065d8d51b9fe370e8e517ddcebfdb8ccf0b3ee512a89147eea413e918685"
|
|
34985
34972
|
},
|
|
34986
34973
|
{
|
|
34987
34974
|
path: "dist/domains/group/index.js",
|
|
34988
|
-
sha256: "
|
|
34975
|
+
sha256: "7fdd83edd141372fcc5486ba07968137f913ac9a73147aa748127b523c4cc785"
|
|
34989
34976
|
},
|
|
34990
34977
|
{
|
|
34991
34978
|
path: "dist/domains/host/index.js",
|
|
34992
|
-
sha256: "
|
|
34979
|
+
sha256: "478ff268a6a6a8452aa206be7671e402782fbfde8504808d9cc4fe10205b6707"
|
|
34993
34980
|
},
|
|
34994
34981
|
{
|
|
34995
34982
|
path: "dist/domains/inventory-source/index.js",
|
|
34996
|
-
sha256: "
|
|
34983
|
+
sha256: "56d8f203514f688eb734c29c2db45930dcddb96bdb82424bf8cc835c493cb279"
|
|
34997
34984
|
},
|
|
34998
34985
|
{
|
|
34999
34986
|
path: "dist/domains/inventory/index.js",
|
|
35000
|
-
sha256: "
|
|
34987
|
+
sha256: "0352fc474d38aed258ab069a6a80da83d3acf00c9cccd37c3d26b16e8b6d8e2d"
|
|
35001
34988
|
},
|
|
35002
34989
|
{
|
|
35003
34990
|
path: "dist/domains/job/index.js",
|
|
35004
|
-
sha256: "
|
|
34991
|
+
sha256: "db22aa5cd3c15da799d7aaea4430c9a6aa5e04e7f5fa1a5cacb340799f34f38c"
|
|
35005
34992
|
},
|
|
35006
34993
|
{
|
|
35007
34994
|
path: "dist/domains/notification-template/index.js",
|
|
35008
|
-
sha256: "
|
|
34995
|
+
sha256: "c3ddb6e7abcdc57583bc1ada57f30302f63b01a559381c2be196b7ee3bbfdc9b"
|
|
35009
34996
|
},
|
|
35010
34997
|
{
|
|
35011
34998
|
path: "dist/domains/notification/index.js",
|
|
35012
|
-
sha256: "
|
|
34999
|
+
sha256: "d9c46319aabe8187e3417710c3ebeda5650b55463f84fa9baa3d6fe91edc1ced"
|
|
35013
35000
|
},
|
|
35014
35001
|
{
|
|
35015
35002
|
path: "dist/domains/organization/index.js",
|
|
35016
|
-
sha256: "
|
|
35003
|
+
sha256: "65072b9afb1706b67b1f7c37c9d96bf12104d8ec56a214f06a512e6283fb0229"
|
|
35017
35004
|
},
|
|
35018
35005
|
{
|
|
35019
35006
|
path: "dist/domains/project/index.js",
|
|
35020
|
-
sha256: "
|
|
35007
|
+
sha256: "eafb98f7148e2a5e8c194af16ebbaa7569ddf74344e367531ba9f6946a39ef46"
|
|
35021
35008
|
},
|
|
35022
35009
|
{
|
|
35023
35010
|
path: "dist/domains/role/index.js",
|
|
35024
|
-
sha256: "
|
|
35011
|
+
sha256: "0e5ee47acb703d2f202f01450eb87330140b97c430440eff31c4f33bab28a647"
|
|
35025
35012
|
},
|
|
35026
35013
|
{
|
|
35027
35014
|
path: "dist/domains/schedule/index.js",
|
|
35028
|
-
sha256: "
|
|
35015
|
+
sha256: "d3267a27432a6911027a2d5dc04177eb46db703ea012cc6d1cfe33c19be49694"
|
|
35029
35016
|
},
|
|
35030
35017
|
{
|
|
35031
35018
|
path: "dist/domains/system-job-template/index.js",
|
|
35032
|
-
sha256: "
|
|
35019
|
+
sha256: "8f485966f9f290399dfaf2eedf21b4182d2dd712bb6833e1df377eabb53ebb04"
|
|
35033
35020
|
},
|
|
35034
35021
|
{
|
|
35035
35022
|
path: "dist/domains/system-job/index.js",
|
|
35036
|
-
sha256: "
|
|
35023
|
+
sha256: "25bae07068cd93cf705c2bebcd8a4f6e5f6071c6b41951edb62527630e2c678f"
|
|
35037
35024
|
},
|
|
35038
35025
|
{
|
|
35039
35026
|
path: "dist/domains/team/index.js",
|
|
35040
|
-
sha256: "
|
|
35027
|
+
sha256: "eb3a4b5cff91f8ef1b07b64a934a3b9d9bc025cf2eb476f6aafa92086b9c07b6"
|
|
35041
35028
|
},
|
|
35042
35029
|
{
|
|
35043
35030
|
path: "dist/domains/template/index.js",
|
|
35044
|
-
sha256: "
|
|
35031
|
+
sha256: "92dd83d5adbba8b572b2bcec6090630a34d572b4a1346906dafdc8499d6f7941"
|
|
35045
35032
|
},
|
|
35046
35033
|
{
|
|
35047
35034
|
path: "dist/domains/user/index.js",
|
|
35048
|
-
sha256: "
|
|
35035
|
+
sha256: "dc2de36112a32b61f34d631f642a134b317255a5f5a1c1f2da6f3cf6d09e7cf3"
|
|
35049
35036
|
},
|
|
35050
35037
|
{
|
|
35051
35038
|
path: "dist/domains/workflow/index.js",
|
|
35052
|
-
sha256: "
|
|
35039
|
+
sha256: "811a3b1df2bfa7a2f76f6fb1c3464de91ed2b7c171788bc82ae4cd991ce4c52a"
|
|
35053
35040
|
},
|
|
35054
35041
|
{
|
|
35055
35042
|
path: "dist/skill.js",
|
|
35056
|
-
sha256: "
|
|
35043
|
+
sha256: "c7280e3093b0f547c577d54dc1f861cac4ce13ec70afabf7a3d1d55e3dbd6247"
|
|
35057
35044
|
}
|
|
35058
35045
|
],
|
|
35059
35046
|
credentialSchema: {
|
|
@@ -35145,7 +35132,7 @@ var awx_axi_default = {
|
|
|
35145
35132
|
}
|
|
35146
35133
|
}
|
|
35147
35134
|
},
|
|
35148
|
-
skillSha256: "
|
|
35135
|
+
skillSha256: "71f03eed887e2a5189b1b08b692fc5fd7a4acfd274102bd925c27d1dd16177ce",
|
|
35149
35136
|
adapterBoundary: {
|
|
35150
35137
|
unsafeOverrides: [
|
|
35151
35138
|
"config",
|
|
@@ -35218,7 +35205,9 @@ var awx_axi_default = {
|
|
|
35218
35205
|
template: "value",
|
|
35219
35206
|
failed: "boolean",
|
|
35220
35207
|
since: "value",
|
|
35221
|
-
limit: "value"
|
|
35208
|
+
limit: "value",
|
|
35209
|
+
all: "boolean",
|
|
35210
|
+
"max-rows": "value"
|
|
35222
35211
|
},
|
|
35223
35212
|
positionals: {
|
|
35224
35213
|
names: [],
|
|
@@ -35263,7 +35252,9 @@ var awx_axi_default = {
|
|
|
35263
35252
|
failed: "boolean",
|
|
35264
35253
|
host: "value",
|
|
35265
35254
|
task: "value",
|
|
35266
|
-
limit: "value"
|
|
35255
|
+
limit: "value",
|
|
35256
|
+
all: "boolean",
|
|
35257
|
+
"max-rows": "value"
|
|
35267
35258
|
},
|
|
35268
35259
|
positionals: {
|
|
35269
35260
|
names: [
|
|
@@ -35276,7 +35267,10 @@ var awx_axi_default = {
|
|
|
35276
35267
|
command: "job hosts",
|
|
35277
35268
|
effect: "read",
|
|
35278
35269
|
flags: {
|
|
35279
|
-
help: "boolean"
|
|
35270
|
+
help: "boolean",
|
|
35271
|
+
limit: "value",
|
|
35272
|
+
all: "boolean",
|
|
35273
|
+
"max-rows": "value"
|
|
35280
35274
|
},
|
|
35281
35275
|
positionals: {
|
|
35282
35276
|
names: [
|
|
@@ -35366,7 +35360,9 @@ var awx_axi_default = {
|
|
|
35366
35360
|
effect: "read",
|
|
35367
35361
|
flags: {
|
|
35368
35362
|
help: "boolean",
|
|
35369
|
-
limit: "value"
|
|
35363
|
+
limit: "value",
|
|
35364
|
+
all: "boolean",
|
|
35365
|
+
"max-rows": "value"
|
|
35370
35366
|
},
|
|
35371
35367
|
positionals: {
|
|
35372
35368
|
names: [
|
|
@@ -35593,7 +35589,9 @@ var awx_axi_default = {
|
|
|
35593
35589
|
help: "boolean",
|
|
35594
35590
|
project: "value",
|
|
35595
35591
|
search: "value",
|
|
35596
|
-
limit: "value"
|
|
35592
|
+
limit: "value",
|
|
35593
|
+
all: "boolean",
|
|
35594
|
+
"max-rows": "value"
|
|
35597
35595
|
},
|
|
35598
35596
|
positionals: {
|
|
35599
35597
|
names: [],
|
|
@@ -35658,7 +35656,9 @@ var awx_axi_default = {
|
|
|
35658
35656
|
effect: "read",
|
|
35659
35657
|
flags: {
|
|
35660
35658
|
help: "boolean",
|
|
35661
|
-
limit: "value"
|
|
35659
|
+
limit: "value",
|
|
35660
|
+
all: "boolean",
|
|
35661
|
+
"max-rows": "value"
|
|
35662
35662
|
},
|
|
35663
35663
|
positionals: {
|
|
35664
35664
|
names: [
|
|
@@ -36019,7 +36019,9 @@ var awx_axi_default = {
|
|
|
36019
36019
|
flags: {
|
|
36020
36020
|
help: "boolean",
|
|
36021
36021
|
search: "value",
|
|
36022
|
-
limit: "value"
|
|
36022
|
+
limit: "value",
|
|
36023
|
+
all: "boolean",
|
|
36024
|
+
"max-rows": "value"
|
|
36023
36025
|
},
|
|
36024
36026
|
positionals: {
|
|
36025
36027
|
names: [],
|
|
@@ -36076,7 +36078,10 @@ var awx_axi_default = {
|
|
|
36076
36078
|
command: "workflow nodes",
|
|
36077
36079
|
effect: "read",
|
|
36078
36080
|
flags: {
|
|
36079
|
-
help: "boolean"
|
|
36081
|
+
help: "boolean",
|
|
36082
|
+
limit: "value",
|
|
36083
|
+
all: "boolean",
|
|
36084
|
+
"max-rows": "value"
|
|
36080
36085
|
},
|
|
36081
36086
|
positionals: {
|
|
36082
36087
|
names: [
|
|
@@ -36090,7 +36095,9 @@ var awx_axi_default = {
|
|
|
36090
36095
|
effect: "read",
|
|
36091
36096
|
flags: {
|
|
36092
36097
|
help: "boolean",
|
|
36093
|
-
limit: "value"
|
|
36098
|
+
limit: "value",
|
|
36099
|
+
all: "boolean",
|
|
36100
|
+
"max-rows": "value"
|
|
36094
36101
|
},
|
|
36095
36102
|
positionals: {
|
|
36096
36103
|
names: [
|
|
@@ -36103,8 +36110,7 @@ var awx_axi_default = {
|
|
|
36103
36110
|
command: "workflow template-node",
|
|
36104
36111
|
effect: "read",
|
|
36105
36112
|
flags: {
|
|
36106
|
-
help: "boolean"
|
|
36107
|
-
limit: "value"
|
|
36113
|
+
help: "boolean"
|
|
36108
36114
|
},
|
|
36109
36115
|
positionals: {
|
|
36110
36116
|
names: [
|
|
@@ -36430,7 +36436,9 @@ var awx_axi_default = {
|
|
|
36430
36436
|
flags: {
|
|
36431
36437
|
help: "boolean",
|
|
36432
36438
|
search: "value",
|
|
36433
|
-
limit: "value"
|
|
36439
|
+
limit: "value",
|
|
36440
|
+
all: "boolean",
|
|
36441
|
+
"max-rows": "value"
|
|
36434
36442
|
},
|
|
36435
36443
|
positionals: {
|
|
36436
36444
|
names: [],
|
|
@@ -36472,7 +36480,9 @@ var awx_axi_default = {
|
|
|
36472
36480
|
flags: {
|
|
36473
36481
|
help: "boolean",
|
|
36474
36482
|
search: "value",
|
|
36475
|
-
limit: "value"
|
|
36483
|
+
limit: "value",
|
|
36484
|
+
all: "boolean",
|
|
36485
|
+
"max-rows": "value"
|
|
36476
36486
|
},
|
|
36477
36487
|
positionals: {
|
|
36478
36488
|
names: [],
|
|
@@ -36515,7 +36525,9 @@ var awx_axi_default = {
|
|
|
36515
36525
|
search: "value",
|
|
36516
36526
|
template: "value",
|
|
36517
36527
|
status: "value",
|
|
36518
|
-
limit: "value"
|
|
36528
|
+
limit: "value",
|
|
36529
|
+
all: "boolean",
|
|
36530
|
+
"max-rows": "value"
|
|
36519
36531
|
},
|
|
36520
36532
|
positionals: {
|
|
36521
36533
|
names: [],
|
|
@@ -36543,7 +36555,9 @@ var awx_axi_default = {
|
|
|
36543
36555
|
failed: "boolean",
|
|
36544
36556
|
host: "value",
|
|
36545
36557
|
task: "value",
|
|
36546
|
-
limit: "value"
|
|
36558
|
+
limit: "value",
|
|
36559
|
+
all: "boolean",
|
|
36560
|
+
"max-rows": "value"
|
|
36547
36561
|
},
|
|
36548
36562
|
positionals: {
|
|
36549
36563
|
names: [
|
|
@@ -36557,7 +36571,9 @@ var awx_axi_default = {
|
|
|
36557
36571
|
effect: "read",
|
|
36558
36572
|
flags: {
|
|
36559
36573
|
help: "boolean",
|
|
36560
|
-
limit: "value"
|
|
36574
|
+
limit: "value",
|
|
36575
|
+
all: "boolean",
|
|
36576
|
+
"max-rows": "value"
|
|
36561
36577
|
},
|
|
36562
36578
|
positionals: {
|
|
36563
36579
|
names: [
|
|
@@ -36571,7 +36587,9 @@ var awx_axi_default = {
|
|
|
36571
36587
|
effect: "read",
|
|
36572
36588
|
flags: {
|
|
36573
36589
|
help: "boolean",
|
|
36574
|
-
limit: "value"
|
|
36590
|
+
limit: "value",
|
|
36591
|
+
all: "boolean",
|
|
36592
|
+
"max-rows": "value"
|
|
36575
36593
|
},
|
|
36576
36594
|
positionals: {
|
|
36577
36595
|
names: [
|
|
@@ -36658,7 +36676,9 @@ var awx_axi_default = {
|
|
|
36658
36676
|
help: "boolean",
|
|
36659
36677
|
search: "value",
|
|
36660
36678
|
organization: "value",
|
|
36661
|
-
limit: "value"
|
|
36679
|
+
limit: "value",
|
|
36680
|
+
all: "boolean",
|
|
36681
|
+
"max-rows": "value"
|
|
36662
36682
|
},
|
|
36663
36683
|
positionals: {
|
|
36664
36684
|
names: [],
|
|
@@ -36684,7 +36704,9 @@ var awx_axi_default = {
|
|
|
36684
36704
|
flags: {
|
|
36685
36705
|
help: "boolean",
|
|
36686
36706
|
"include-decided": "boolean",
|
|
36687
|
-
limit: "value"
|
|
36707
|
+
limit: "value",
|
|
36708
|
+
all: "boolean",
|
|
36709
|
+
"max-rows": "value"
|
|
36688
36710
|
},
|
|
36689
36711
|
positionals: {
|
|
36690
36712
|
names: [],
|
|
@@ -36766,7 +36788,9 @@ var awx_axi_default = {
|
|
|
36766
36788
|
flags: {
|
|
36767
36789
|
help: "boolean",
|
|
36768
36790
|
search: "value",
|
|
36769
|
-
limit: "value"
|
|
36791
|
+
limit: "value",
|
|
36792
|
+
all: "boolean",
|
|
36793
|
+
"max-rows": "value"
|
|
36770
36794
|
},
|
|
36771
36795
|
positionals: {
|
|
36772
36796
|
names: [],
|
|
@@ -36793,7 +36817,9 @@ var awx_axi_default = {
|
|
|
36793
36817
|
help: "boolean",
|
|
36794
36818
|
host: "value",
|
|
36795
36819
|
task: "value",
|
|
36796
|
-
limit: "value"
|
|
36820
|
+
limit: "value",
|
|
36821
|
+
all: "boolean",
|
|
36822
|
+
"max-rows": "value"
|
|
36797
36823
|
},
|
|
36798
36824
|
positionals: {
|
|
36799
36825
|
names: [
|
|
@@ -36932,7 +36958,9 @@ var awx_axi_default = {
|
|
|
36932
36958
|
flags: {
|
|
36933
36959
|
help: "boolean",
|
|
36934
36960
|
search: "value",
|
|
36935
|
-
limit: "value"
|
|
36961
|
+
limit: "value",
|
|
36962
|
+
all: "boolean",
|
|
36963
|
+
"max-rows": "value"
|
|
36936
36964
|
},
|
|
36937
36965
|
positionals: {
|
|
36938
36966
|
names: [],
|
|
@@ -36970,7 +36998,9 @@ var awx_axi_default = {
|
|
|
36970
36998
|
effect: "read",
|
|
36971
36999
|
flags: {
|
|
36972
37000
|
help: "boolean",
|
|
36973
|
-
limit: "value"
|
|
37001
|
+
limit: "value",
|
|
37002
|
+
all: "boolean",
|
|
37003
|
+
"max-rows": "value"
|
|
36974
37004
|
},
|
|
36975
37005
|
positionals: {
|
|
36976
37006
|
names: [
|
|
@@ -36983,7 +37013,10 @@ var awx_axi_default = {
|
|
|
36983
37013
|
command: "project roles",
|
|
36984
37014
|
effect: "read",
|
|
36985
37015
|
flags: {
|
|
36986
|
-
help: "boolean"
|
|
37016
|
+
help: "boolean",
|
|
37017
|
+
limit: "value",
|
|
37018
|
+
all: "boolean",
|
|
37019
|
+
"max-rows": "value"
|
|
36987
37020
|
},
|
|
36988
37021
|
positionals: {
|
|
36989
37022
|
names: [
|
|
@@ -37415,7 +37448,9 @@ var awx_axi_default = {
|
|
|
37415
37448
|
flags: {
|
|
37416
37449
|
help: "boolean",
|
|
37417
37450
|
search: "value",
|
|
37418
|
-
limit: "value"
|
|
37451
|
+
limit: "value",
|
|
37452
|
+
all: "boolean",
|
|
37453
|
+
"max-rows": "value"
|
|
37419
37454
|
},
|
|
37420
37455
|
positionals: {
|
|
37421
37456
|
names: [],
|
|
@@ -37441,7 +37476,9 @@ var awx_axi_default = {
|
|
|
37441
37476
|
flags: {
|
|
37442
37477
|
help: "boolean",
|
|
37443
37478
|
search: "value",
|
|
37444
|
-
limit: "value"
|
|
37479
|
+
limit: "value",
|
|
37480
|
+
all: "boolean",
|
|
37481
|
+
"max-rows": "value"
|
|
37445
37482
|
},
|
|
37446
37483
|
positionals: {
|
|
37447
37484
|
names: [
|
|
@@ -37457,6 +37494,8 @@ var awx_axi_default = {
|
|
|
37457
37494
|
help: "boolean",
|
|
37458
37495
|
search: "value",
|
|
37459
37496
|
limit: "value",
|
|
37497
|
+
all: "boolean",
|
|
37498
|
+
"max-rows": "value",
|
|
37460
37499
|
facts: "boolean"
|
|
37461
37500
|
},
|
|
37462
37501
|
positionals: {
|
|
@@ -37472,7 +37511,9 @@ var awx_axi_default = {
|
|
|
37472
37511
|
flags: {
|
|
37473
37512
|
help: "boolean",
|
|
37474
37513
|
search: "value",
|
|
37475
|
-
limit: "value"
|
|
37514
|
+
limit: "value",
|
|
37515
|
+
all: "boolean",
|
|
37516
|
+
"max-rows": "value"
|
|
37476
37517
|
},
|
|
37477
37518
|
positionals: {
|
|
37478
37519
|
names: [
|
|
@@ -37503,7 +37544,9 @@ var awx_axi_default = {
|
|
|
37503
37544
|
flags: {
|
|
37504
37545
|
help: "boolean",
|
|
37505
37546
|
search: "value",
|
|
37506
|
-
limit: "value"
|
|
37547
|
+
limit: "value",
|
|
37548
|
+
all: "boolean",
|
|
37549
|
+
"max-rows": "value"
|
|
37507
37550
|
},
|
|
37508
37551
|
positionals: {
|
|
37509
37552
|
names: [],
|
|
@@ -37531,7 +37574,9 @@ var awx_axi_default = {
|
|
|
37531
37574
|
search: "value",
|
|
37532
37575
|
name: "value",
|
|
37533
37576
|
inventory: "value",
|
|
37534
|
-
limit: "value"
|
|
37577
|
+
limit: "value",
|
|
37578
|
+
all: "boolean",
|
|
37579
|
+
"max-rows": "value"
|
|
37535
37580
|
},
|
|
37536
37581
|
positionals: {
|
|
37537
37582
|
names: [],
|
|
@@ -37559,7 +37604,9 @@ var awx_axi_default = {
|
|
|
37559
37604
|
search: "value",
|
|
37560
37605
|
name: "value",
|
|
37561
37606
|
inventory: "value",
|
|
37562
|
-
limit: "value"
|
|
37607
|
+
limit: "value",
|
|
37608
|
+
all: "boolean",
|
|
37609
|
+
"max-rows": "value"
|
|
37563
37610
|
},
|
|
37564
37611
|
positionals: {
|
|
37565
37612
|
names: [],
|
|
@@ -37589,7 +37636,9 @@ var awx_axi_default = {
|
|
|
37589
37636
|
inventory: "value",
|
|
37590
37637
|
source: "value",
|
|
37591
37638
|
status: "value",
|
|
37592
|
-
limit: "value"
|
|
37639
|
+
limit: "value",
|
|
37640
|
+
all: "boolean",
|
|
37641
|
+
"max-rows": "value"
|
|
37593
37642
|
},
|
|
37594
37643
|
positionals: {
|
|
37595
37644
|
names: [],
|
|
@@ -37781,7 +37830,9 @@ var awx_axi_default = {
|
|
|
37781
37830
|
template: "value",
|
|
37782
37831
|
enabled: "boolean",
|
|
37783
37832
|
disabled: "boolean",
|
|
37784
|
-
limit: "value"
|
|
37833
|
+
limit: "value",
|
|
37834
|
+
all: "boolean",
|
|
37835
|
+
"max-rows": "value"
|
|
37785
37836
|
},
|
|
37786
37837
|
positionals: {
|
|
37787
37838
|
names: [],
|
|
@@ -37882,7 +37933,9 @@ var awx_axi_default = {
|
|
|
37882
37933
|
search: "value",
|
|
37883
37934
|
organization: "value",
|
|
37884
37935
|
type: "value",
|
|
37885
|
-
limit: "value"
|
|
37936
|
+
limit: "value",
|
|
37937
|
+
all: "boolean",
|
|
37938
|
+
"max-rows": "value"
|
|
37886
37939
|
},
|
|
37887
37940
|
positionals: {
|
|
37888
37941
|
names: [],
|
|
@@ -38000,7 +38053,9 @@ var awx_axi_default = {
|
|
|
38000
38053
|
flags: {
|
|
38001
38054
|
help: "boolean",
|
|
38002
38055
|
search: "value",
|
|
38003
|
-
limit: "value"
|
|
38056
|
+
limit: "value",
|
|
38057
|
+
all: "boolean",
|
|
38058
|
+
"max-rows": "value"
|
|
38004
38059
|
},
|
|
38005
38060
|
positionals: {
|
|
38006
38061
|
names: [],
|
|
@@ -38034,7 +38089,9 @@ var awx_axi_default = {
|
|
|
38034
38089
|
"inventory-update": "value",
|
|
38035
38090
|
"ad-hoc": "value",
|
|
38036
38091
|
"system-job": "value",
|
|
38037
|
-
limit: "value"
|
|
38092
|
+
limit: "value",
|
|
38093
|
+
all: "boolean",
|
|
38094
|
+
"max-rows": "value"
|
|
38038
38095
|
},
|
|
38039
38096
|
positionals: {
|
|
38040
38097
|
names: [],
|
|
@@ -38152,7 +38209,9 @@ var awx_axi_default = {
|
|
|
38152
38209
|
search: "value",
|
|
38153
38210
|
type: "value",
|
|
38154
38211
|
organization: "value",
|
|
38155
|
-
limit: "value"
|
|
38212
|
+
limit: "value",
|
|
38213
|
+
all: "boolean",
|
|
38214
|
+
"max-rows": "value"
|
|
38156
38215
|
},
|
|
38157
38216
|
positionals: {
|
|
38158
38217
|
names: [],
|
|
@@ -38189,7 +38248,9 @@ var awx_axi_default = {
|
|
|
38189
38248
|
team: "value",
|
|
38190
38249
|
user: "value",
|
|
38191
38250
|
credential: "value",
|
|
38192
|
-
limit: "value"
|
|
38251
|
+
limit: "value",
|
|
38252
|
+
all: "boolean",
|
|
38253
|
+
"max-rows": "value"
|
|
38193
38254
|
},
|
|
38194
38255
|
positionals: {
|
|
38195
38256
|
names: [],
|
|
@@ -38317,7 +38378,9 @@ var awx_axi_default = {
|
|
|
38317
38378
|
help: "boolean",
|
|
38318
38379
|
search: "value",
|
|
38319
38380
|
organization: "value",
|
|
38320
|
-
limit: "value"
|
|
38381
|
+
limit: "value",
|
|
38382
|
+
all: "boolean",
|
|
38383
|
+
"max-rows": "value"
|
|
38321
38384
|
},
|
|
38322
38385
|
positionals: {
|
|
38323
38386
|
names: [],
|
|
@@ -38342,7 +38405,9 @@ var awx_axi_default = {
|
|
|
38342
38405
|
effect: "read",
|
|
38343
38406
|
flags: {
|
|
38344
38407
|
help: "boolean",
|
|
38345
|
-
limit: "value"
|
|
38408
|
+
limit: "value",
|
|
38409
|
+
all: "boolean",
|
|
38410
|
+
"max-rows": "value"
|
|
38346
38411
|
},
|
|
38347
38412
|
positionals: {
|
|
38348
38413
|
names: [
|
|
@@ -38356,7 +38421,9 @@ var awx_axi_default = {
|
|
|
38356
38421
|
effect: "read",
|
|
38357
38422
|
flags: {
|
|
38358
38423
|
help: "boolean",
|
|
38359
|
-
limit: "value"
|
|
38424
|
+
limit: "value",
|
|
38425
|
+
all: "boolean",
|
|
38426
|
+
"max-rows": "value"
|
|
38360
38427
|
},
|
|
38361
38428
|
positionals: {
|
|
38362
38429
|
names: [
|
|
@@ -38370,7 +38437,9 @@ var awx_axi_default = {
|
|
|
38370
38437
|
effect: "read",
|
|
38371
38438
|
flags: {
|
|
38372
38439
|
help: "boolean",
|
|
38373
|
-
limit: "value"
|
|
38440
|
+
limit: "value",
|
|
38441
|
+
all: "boolean",
|
|
38442
|
+
"max-rows": "value"
|
|
38374
38443
|
},
|
|
38375
38444
|
positionals: {
|
|
38376
38445
|
names: [
|
|
@@ -38384,7 +38453,9 @@ var awx_axi_default = {
|
|
|
38384
38453
|
effect: "read",
|
|
38385
38454
|
flags: {
|
|
38386
38455
|
help: "boolean",
|
|
38387
|
-
limit: "value"
|
|
38456
|
+
limit: "value",
|
|
38457
|
+
all: "boolean",
|
|
38458
|
+
"max-rows": "value"
|
|
38388
38459
|
},
|
|
38389
38460
|
positionals: {
|
|
38390
38461
|
names: [
|
|
@@ -38398,7 +38469,9 @@ var awx_axi_default = {
|
|
|
38398
38469
|
effect: "read",
|
|
38399
38470
|
flags: {
|
|
38400
38471
|
help: "boolean",
|
|
38401
|
-
limit: "value"
|
|
38472
|
+
limit: "value",
|
|
38473
|
+
all: "boolean",
|
|
38474
|
+
"max-rows": "value"
|
|
38402
38475
|
},
|
|
38403
38476
|
positionals: {
|
|
38404
38477
|
names: [
|
|
@@ -38412,7 +38485,9 @@ var awx_axi_default = {
|
|
|
38412
38485
|
effect: "read",
|
|
38413
38486
|
flags: {
|
|
38414
38487
|
help: "boolean",
|
|
38415
|
-
limit: "value"
|
|
38488
|
+
limit: "value",
|
|
38489
|
+
all: "boolean",
|
|
38490
|
+
"max-rows": "value"
|
|
38416
38491
|
},
|
|
38417
38492
|
positionals: {
|
|
38418
38493
|
names: [
|
|
@@ -38462,7 +38537,9 @@ var awx_axi_default = {
|
|
|
38462
38537
|
help: "boolean",
|
|
38463
38538
|
search: "value",
|
|
38464
38539
|
type: "value",
|
|
38465
|
-
limit: "value"
|
|
38540
|
+
limit: "value",
|
|
38541
|
+
all: "boolean",
|
|
38542
|
+
"max-rows": "value"
|
|
38466
38543
|
},
|
|
38467
38544
|
positionals: {
|
|
38468
38545
|
names: [],
|
|
@@ -38487,7 +38564,9 @@ var awx_axi_default = {
|
|
|
38487
38564
|
effect: "read",
|
|
38488
38565
|
flags: {
|
|
38489
38566
|
help: "boolean",
|
|
38490
|
-
limit: "value"
|
|
38567
|
+
limit: "value",
|
|
38568
|
+
all: "boolean",
|
|
38569
|
+
"max-rows": "value"
|
|
38491
38570
|
},
|
|
38492
38571
|
positionals: {
|
|
38493
38572
|
names: [
|
|
@@ -38501,7 +38580,9 @@ var awx_axi_default = {
|
|
|
38501
38580
|
effect: "read",
|
|
38502
38581
|
flags: {
|
|
38503
38582
|
help: "boolean",
|
|
38504
|
-
limit: "value"
|
|
38583
|
+
limit: "value",
|
|
38584
|
+
all: "boolean",
|
|
38585
|
+
"max-rows": "value"
|
|
38505
38586
|
},
|
|
38506
38587
|
positionals: {
|
|
38507
38588
|
names: [
|
|
@@ -38515,7 +38596,9 @@ var awx_axi_default = {
|
|
|
38515
38596
|
effect: "read",
|
|
38516
38597
|
flags: {
|
|
38517
38598
|
help: "boolean",
|
|
38518
|
-
limit: "value"
|
|
38599
|
+
limit: "value",
|
|
38600
|
+
all: "boolean",
|
|
38601
|
+
"max-rows": "value"
|
|
38519
38602
|
},
|
|
38520
38603
|
positionals: {
|
|
38521
38604
|
names: [
|
|
@@ -38529,7 +38612,9 @@ var awx_axi_default = {
|
|
|
38529
38612
|
effect: "read",
|
|
38530
38613
|
flags: {
|
|
38531
38614
|
help: "boolean",
|
|
38532
|
-
limit: "value"
|
|
38615
|
+
limit: "value",
|
|
38616
|
+
all: "boolean",
|
|
38617
|
+
"max-rows": "value"
|
|
38533
38618
|
},
|
|
38534
38619
|
positionals: {
|
|
38535
38620
|
names: [
|
|
@@ -38640,8 +38725,1210 @@ var awx_axi_default = {
|
|
|
38640
38725
|
]
|
|
38641
38726
|
};
|
|
38642
38727
|
|
|
38728
|
+
// tools/inventories/tenable-axi.json
|
|
38729
|
+
var tenable_axi_default = {
|
|
38730
|
+
generatedBy: "scripts/tenable-inventory.mjs",
|
|
38731
|
+
tool: "tenable-axi",
|
|
38732
|
+
version: "0.1.1",
|
|
38733
|
+
integrity: "sha512-ukWwVny4DeEBLqqWJhaM0au4Z5dvQTsDKoE2NhROIE3p114WUz2tT5dOfWL8MaalVrmU/zSMhk+S29sUocR3xg==",
|
|
38734
|
+
parserEvidence: "Published command catalogue, mutation registry and reviewed native parsers and transport gates",
|
|
38735
|
+
sources: [
|
|
38736
|
+
{
|
|
38737
|
+
path: "dist/src/attack-catalogue.js",
|
|
38738
|
+
sha256: "022f9d46c0e0a76b62ed528b17552fccae9634208698e541146f8af2f6107316"
|
|
38739
|
+
},
|
|
38740
|
+
{
|
|
38741
|
+
path: "dist/src/attack-export-catalogue.js",
|
|
38742
|
+
sha256: "7127a33fdbb01db34886b2c91b36bdc174131819b5753c1201c56999389584ee"
|
|
38743
|
+
},
|
|
38744
|
+
{
|
|
38745
|
+
path: "dist/src/attack-export.js",
|
|
38746
|
+
sha256: "38adf6d13ab1afe4f8d0123803257c2f10a1c47b9a7f9b216ee9107ea30368c8"
|
|
38747
|
+
},
|
|
38748
|
+
{
|
|
38749
|
+
path: "dist/src/attack.js",
|
|
38750
|
+
sha256: "76905fe54d1038ffbaa6b4a82b4cb4fadb6473462d28679319a98ab7cdd08650"
|
|
38751
|
+
},
|
|
38752
|
+
{
|
|
38753
|
+
path: "dist/src/catalogue.js",
|
|
38754
|
+
sha256: "d05c8dfebce3219c2ee0a305888fa336e62db5fc3b3b4bc95a27c0588943587b"
|
|
38755
|
+
},
|
|
38756
|
+
{
|
|
38757
|
+
path: "dist/src/cli.js",
|
|
38758
|
+
sha256: "df6dfee98019af2da15ac7a3c4d1ea7b3860c73021cbf2f08ac52386a64f441c"
|
|
38759
|
+
},
|
|
38760
|
+
{
|
|
38761
|
+
path: "dist/src/export-file.js",
|
|
38762
|
+
sha256: "2eb4f73e2d9a3361283a62e887c6cf95de70d5d3f353441bcd4de738377d57df"
|
|
38763
|
+
},
|
|
38764
|
+
{
|
|
38765
|
+
path: "dist/src/exposure-contracts.js",
|
|
38766
|
+
sha256: "febe68635d243ce801607d76af753d21f2ff30712c0efe9c3a2805209cc4b915"
|
|
38767
|
+
},
|
|
38768
|
+
{
|
|
38769
|
+
path: "dist/src/exposure.js",
|
|
38770
|
+
sha256: "5e93b01dc54368627f1f7c1ac4a96579af2f4beae7c2b10189ba190cf5cc9af6"
|
|
38771
|
+
},
|
|
38772
|
+
{
|
|
38773
|
+
path: "dist/src/hook-install.js",
|
|
38774
|
+
sha256: "74fce246ea8fd1ee83bc89f06ab71b3bbf10b2b6ebce0701d24c95eae7755668"
|
|
38775
|
+
},
|
|
38776
|
+
{
|
|
38777
|
+
path: "dist/src/inventory-catalogue.js",
|
|
38778
|
+
sha256: "ccd42834a43aabffbd90e7326926660e9cff788997ab836cb2eb858fc36f1119"
|
|
38779
|
+
},
|
|
38780
|
+
{
|
|
38781
|
+
path: "dist/src/inventory-export-catalogue.js",
|
|
38782
|
+
sha256: "cf07efc8540e83fcda3f79df4a5ec6c75e081e1557a52e6e178a24ee7d393905"
|
|
38783
|
+
},
|
|
38784
|
+
{
|
|
38785
|
+
path: "dist/src/inventory-export.js",
|
|
38786
|
+
sha256: "176bd2aef67901383e29f5984867d104fdb8278a40d13d1281aa459ea44a8f9c"
|
|
38787
|
+
},
|
|
38788
|
+
{
|
|
38789
|
+
path: "dist/src/inventory.js",
|
|
38790
|
+
sha256: "83bd3b19b1ad54785fdf107b57a66ffc882141706337bb886108b67f75565bb1"
|
|
38791
|
+
},
|
|
38792
|
+
{
|
|
38793
|
+
path: "dist/src/inventory/schema.js",
|
|
38794
|
+
sha256: "1dc7cf0f1fb0e07dcf79bcac7e41450e1394345fc4fcd410119ab639064926af"
|
|
38795
|
+
},
|
|
38796
|
+
{
|
|
38797
|
+
path: "dist/src/local-commands.js",
|
|
38798
|
+
sha256: "4bb2769049b72126c47857f850b3cd008a371f952c479e0b288d5279d7aaa77a"
|
|
38799
|
+
},
|
|
38800
|
+
{
|
|
38801
|
+
path: "dist/src/platform-tag-catalogue.js",
|
|
38802
|
+
sha256: "9efb6f39618f2508e7e3cf58e1f50ce0c994351d5e8d69463c8caad8ecf020d7"
|
|
38803
|
+
},
|
|
38804
|
+
{
|
|
38805
|
+
path: "dist/src/platform-tag.js",
|
|
38806
|
+
sha256: "89933fd5ed557037afab537d147348cad8131684cd8422f20ee4fb5846707a18"
|
|
38807
|
+
},
|
|
38808
|
+
{
|
|
38809
|
+
path: "dist/src/private-file.js",
|
|
38810
|
+
sha256: "a5f01182fe09394ecf508deb46d54c9fb0b39c9fd205094d155ace212bbd1c8b"
|
|
38811
|
+
},
|
|
38812
|
+
{
|
|
38813
|
+
path: "dist/src/profiles.js",
|
|
38814
|
+
sha256: "12defbf234e4da8584e1f6ba601eb3826733ff85c76445197b0162ac52299b4a"
|
|
38815
|
+
},
|
|
38816
|
+
{
|
|
38817
|
+
path: "dist/src/redact.js",
|
|
38818
|
+
sha256: "e88631746e63a7fc08f206b58ddf3754ecea6f0ec21011c37ded0114dfbb6830"
|
|
38819
|
+
},
|
|
38820
|
+
{
|
|
38821
|
+
path: "dist/src/response-catalogue.js",
|
|
38822
|
+
sha256: "6f0eb3f6ba860e59e7bfd764a0d3932b52101e4013acea4ee5aa63081a1f83db"
|
|
38823
|
+
},
|
|
38824
|
+
{
|
|
38825
|
+
path: "dist/src/response.js",
|
|
38826
|
+
sha256: "44277f2a0c28b3e6801c47578603270ed59c76aac5214c6428fd2dbf8a83f1d4"
|
|
38827
|
+
},
|
|
38828
|
+
{
|
|
38829
|
+
path: "dist/src/setup.js",
|
|
38830
|
+
sha256: "2e9c8430b4fbf0f95e0e31267ba828107fd054e9d525a5c970f7c9c2e20d5348"
|
|
38831
|
+
},
|
|
38832
|
+
{
|
|
38833
|
+
path: "dist/src/transport-core.js",
|
|
38834
|
+
sha256: "3419fbee2b091109495216c4da4f68fdaa1779449f9eee29a9ec429b0d306195"
|
|
38835
|
+
},
|
|
38836
|
+
{
|
|
38837
|
+
path: "dist/src/transport.js",
|
|
38838
|
+
sha256: "c3639f96d71c80217da15fe7449b586ee797c94e9f4f6b3f22d0472613d28ee1"
|
|
38839
|
+
},
|
|
38840
|
+
{
|
|
38841
|
+
path: "dist/src/writes-core.js",
|
|
38842
|
+
sha256: "55a76961512751653c8d14778b6b74094318ba1527b50dedf2167127f1e7c1f9"
|
|
38843
|
+
},
|
|
38844
|
+
{
|
|
38845
|
+
path: "dist/src/writes.js",
|
|
38846
|
+
sha256: "43099c373b451991102515f0f583c9a7678edb89a5b6bc9ad7e261a1c1f4a5dd"
|
|
38847
|
+
}
|
|
38848
|
+
],
|
|
38849
|
+
credentialSchema: {
|
|
38850
|
+
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
38851
|
+
$id: "https://github.com/knowttl/tenable-axi/axi-credential.schema.json",
|
|
38852
|
+
title: "Tenable AXI credential profile",
|
|
38853
|
+
type: "object",
|
|
38854
|
+
additionalProperties: false,
|
|
38855
|
+
properties: {
|
|
38856
|
+
origin: {
|
|
38857
|
+
const: "https://cloud.tenable.com",
|
|
38858
|
+
default: "https://cloud.tenable.com"
|
|
38859
|
+
},
|
|
38860
|
+
accessKey: {
|
|
38861
|
+
$ref: "#/$defs/secretRef",
|
|
38862
|
+
"x-secret": true,
|
|
38863
|
+
default: {
|
|
38864
|
+
env: "TENABLE_AXI_ACCESS_KEY"
|
|
38865
|
+
}
|
|
38866
|
+
},
|
|
38867
|
+
secretKey: {
|
|
38868
|
+
$ref: "#/$defs/secretRef",
|
|
38869
|
+
"x-secret": true,
|
|
38870
|
+
default: {
|
|
38871
|
+
env: "TENABLE_AXI_SECRET_KEY"
|
|
38872
|
+
}
|
|
38873
|
+
},
|
|
38874
|
+
writes: {
|
|
38875
|
+
type: "object",
|
|
38876
|
+
additionalProperties: false,
|
|
38877
|
+
required: [
|
|
38878
|
+
"allowWrites",
|
|
38879
|
+
"operations"
|
|
38880
|
+
],
|
|
38881
|
+
default: {
|
|
38882
|
+
allowWrites: false,
|
|
38883
|
+
operations: []
|
|
38884
|
+
},
|
|
38885
|
+
properties: {
|
|
38886
|
+
allowWrites: {
|
|
38887
|
+
type: "boolean"
|
|
38888
|
+
},
|
|
38889
|
+
operations: {
|
|
38890
|
+
type: "array",
|
|
38891
|
+
items: {
|
|
38892
|
+
type: "string",
|
|
38893
|
+
pattern: "^[A-Za-z0-9][A-Za-z0-9_-]*$"
|
|
38894
|
+
}
|
|
38895
|
+
}
|
|
38896
|
+
}
|
|
38897
|
+
}
|
|
38898
|
+
},
|
|
38899
|
+
$defs: {
|
|
38900
|
+
secretRef: {
|
|
38901
|
+
oneOf: [
|
|
38902
|
+
{
|
|
38903
|
+
type: "object",
|
|
38904
|
+
additionalProperties: false,
|
|
38905
|
+
required: [
|
|
38906
|
+
"env"
|
|
38907
|
+
],
|
|
38908
|
+
properties: {
|
|
38909
|
+
env: {
|
|
38910
|
+
type: "string",
|
|
38911
|
+
pattern: "^[A-Za-z_][A-Za-z0-9_]*$"
|
|
38912
|
+
}
|
|
38913
|
+
}
|
|
38914
|
+
},
|
|
38915
|
+
{
|
|
38916
|
+
type: "object",
|
|
38917
|
+
additionalProperties: false,
|
|
38918
|
+
required: [
|
|
38919
|
+
"file"
|
|
38920
|
+
],
|
|
38921
|
+
properties: {
|
|
38922
|
+
file: {
|
|
38923
|
+
type: "string",
|
|
38924
|
+
pattern: "^(?:/|[A-Za-z]:[\\\\/])"
|
|
38925
|
+
}
|
|
38926
|
+
}
|
|
38927
|
+
}
|
|
38928
|
+
]
|
|
38929
|
+
}
|
|
38930
|
+
}
|
|
38931
|
+
},
|
|
38932
|
+
skillSha256: "ea35fe90d39fee3982f731ccc3c717c92aabd0799ff2371f6f3cc5e12d7aea9a",
|
|
38933
|
+
nativeWriteSettings: {
|
|
38934
|
+
supportedOperations: [
|
|
38935
|
+
"apa-export-attack-path",
|
|
38936
|
+
"apa-export-attack-technique",
|
|
38937
|
+
"apa-export-mitre-heatmap",
|
|
38938
|
+
"combinations-create",
|
|
38939
|
+
"combinations-delete",
|
|
38940
|
+
"combinations-update",
|
|
38941
|
+
"initiatives-create",
|
|
38942
|
+
"initiatives-delete",
|
|
38943
|
+
"initiatives-update",
|
|
38944
|
+
"inventory-export-assets",
|
|
38945
|
+
"inventory-export-findings",
|
|
38946
|
+
"tags-assign-asset-tags",
|
|
38947
|
+
"tags-create-tag-category",
|
|
38948
|
+
"tags-create-tag-value",
|
|
38949
|
+
"tags-delete-tag-category",
|
|
38950
|
+
"tags-delete-tag-value",
|
|
38951
|
+
"tags-delete-tag-values-bulk",
|
|
38952
|
+
"tags-edit-tag-category",
|
|
38953
|
+
"tags-update-tag-value"
|
|
38954
|
+
]
|
|
38955
|
+
},
|
|
38956
|
+
adapterBoundary: {
|
|
38957
|
+
unsafeOverrides: [
|
|
38958
|
+
"config",
|
|
38959
|
+
"profile",
|
|
38960
|
+
"origin",
|
|
38961
|
+
"output"
|
|
38962
|
+
],
|
|
38963
|
+
inputFileFlags: [
|
|
38964
|
+
"filter-file",
|
|
38965
|
+
"body-file",
|
|
38966
|
+
"ids-file",
|
|
38967
|
+
"asset-ids-file",
|
|
38968
|
+
"tag-ids-file"
|
|
38969
|
+
],
|
|
38970
|
+
blockedCommands: [
|
|
38971
|
+
"setup hooks",
|
|
38972
|
+
"config path",
|
|
38973
|
+
"profile list",
|
|
38974
|
+
"hook",
|
|
38975
|
+
"export attack download",
|
|
38976
|
+
"export inventory download"
|
|
38977
|
+
],
|
|
38978
|
+
inputs: {
|
|
38979
|
+
stdin: "explicit file flag with - only",
|
|
38980
|
+
files: "uploaded leaves only",
|
|
38981
|
+
downloads: "unsupported"
|
|
38982
|
+
},
|
|
38983
|
+
nativeWrites: "native preview, operation allow-list, execute, exact confirm and durable journal"
|
|
38984
|
+
},
|
|
38985
|
+
discovery: {
|
|
38986
|
+
commands: [
|
|
38987
|
+
"asset",
|
|
38988
|
+
"attack-path",
|
|
38989
|
+
"attack-technique",
|
|
38990
|
+
"auth",
|
|
38991
|
+
"card",
|
|
38992
|
+
"combination",
|
|
38993
|
+
"connector",
|
|
38994
|
+
"doctor",
|
|
38995
|
+
"export",
|
|
38996
|
+
"finding",
|
|
38997
|
+
"home",
|
|
38998
|
+
"initiative",
|
|
38999
|
+
"software",
|
|
39000
|
+
"tag"
|
|
39001
|
+
],
|
|
39002
|
+
example: [
|
|
39003
|
+
"card",
|
|
39004
|
+
"list",
|
|
39005
|
+
"--limit",
|
|
39006
|
+
"1"
|
|
39007
|
+
],
|
|
39008
|
+
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"
|
|
39009
|
+
},
|
|
39010
|
+
suggestionFields: [
|
|
39011
|
+
"help"
|
|
39012
|
+
],
|
|
39013
|
+
format: "TOON",
|
|
39014
|
+
commands: [
|
|
39015
|
+
{
|
|
39016
|
+
command: "asset list",
|
|
39017
|
+
effect: "read",
|
|
39018
|
+
flags: {
|
|
39019
|
+
config: "Config path; default credential precedence",
|
|
39020
|
+
profile: "Profile name; default credential precedence",
|
|
39021
|
+
fields: "Comma-separated display or wire properties; default compact view",
|
|
39022
|
+
full: "Show full text; default false",
|
|
39023
|
+
help: "Show help",
|
|
39024
|
+
limit: "Maximum emitted rows, 1-10000; default 100",
|
|
39025
|
+
all: "Read up to 10000 rows within invocation budgets; excludes --limit",
|
|
39026
|
+
cursor: "Opaque resume cursor; retain the original selectors and filters",
|
|
39027
|
+
query: "Simple query text",
|
|
39028
|
+
filter: "Repeatable: <property> <operator> <JSON string array>",
|
|
39029
|
+
"filter-file": "JSON flat array of {property, operator, value: string[]}; '-' reads stdin; excludes --filter",
|
|
39030
|
+
sort: "Wire property:asc|desc",
|
|
39031
|
+
"extra-properties": "Comma-separated extra wire properties",
|
|
39032
|
+
offset: "Starting record; default 0; excludes --cursor",
|
|
39033
|
+
class: "Server-side asset class filter"
|
|
39034
|
+
}
|
|
39035
|
+
},
|
|
39036
|
+
{
|
|
39037
|
+
command: "asset properties",
|
|
39038
|
+
effect: "read",
|
|
39039
|
+
flags: {
|
|
39040
|
+
config: "Config path; default credential precedence",
|
|
39041
|
+
profile: "Profile name; default credential precedence",
|
|
39042
|
+
fields: "Comma-separated display or wire properties; default compact view",
|
|
39043
|
+
full: "Show full text; default false",
|
|
39044
|
+
help: "Show help",
|
|
39045
|
+
limit: "Maximum emitted rows, 1-10000; default 100",
|
|
39046
|
+
all: "Read up to 10000 rows within invocation budgets; excludes --limit",
|
|
39047
|
+
cursor: "Opaque resume cursor; retain the original selectors and filters",
|
|
39048
|
+
"asset-classes": "Comma-separated documented asset classes"
|
|
39049
|
+
}
|
|
39050
|
+
},
|
|
39051
|
+
{
|
|
39052
|
+
command: "asset show",
|
|
39053
|
+
effect: "read",
|
|
39054
|
+
flags: {
|
|
39055
|
+
config: "Config path; default credential precedence",
|
|
39056
|
+
profile: "Profile name; default credential precedence",
|
|
39057
|
+
fields: "Comma-separated display or wire properties; default compact view",
|
|
39058
|
+
full: "Show full text; default false",
|
|
39059
|
+
help: "Show help",
|
|
39060
|
+
id: "Required exact inventory ID",
|
|
39061
|
+
"extra-properties": "Comma-separated extra wire properties"
|
|
39062
|
+
}
|
|
39063
|
+
},
|
|
39064
|
+
{
|
|
39065
|
+
command: "attack-path list",
|
|
39066
|
+
effect: "read",
|
|
39067
|
+
flags: {
|
|
39068
|
+
config: "Config path; default credential precedence",
|
|
39069
|
+
profile: "Profile name; default credential precedence",
|
|
39070
|
+
fields: "Comma-separated display or wire fields; default compact view",
|
|
39071
|
+
full: "Show full text; default false",
|
|
39072
|
+
help: "Show help",
|
|
39073
|
+
limit: "Maximum emitted rows, 1-10000; default 100",
|
|
39074
|
+
all: "Read up to 10000 rows within invocation budgets; excludes --limit",
|
|
39075
|
+
cursor: "Bounded resume cursor; retain original selectors, filters, sort and fields",
|
|
39076
|
+
offset: "Starting record; default 0; excludes --cursor",
|
|
39077
|
+
sort: "Documented wire property:direction",
|
|
39078
|
+
filter: "Repeatable: <property> <operator> <JSON-value>; combines with AND (paths) or and (techniques)",
|
|
39079
|
+
"filter-file": "Documented single or nested JSON filter, at most two logical levels; '-' reads stdin; excludes --filter",
|
|
39080
|
+
"include-resolved": "Include resolved records; default false (exclude_resolved=true)",
|
|
39081
|
+
"run-ai-summarization": "true|false; default false"
|
|
39082
|
+
}
|
|
39083
|
+
},
|
|
39084
|
+
{
|
|
39085
|
+
command: "attack-technique list",
|
|
39086
|
+
effect: "read",
|
|
39087
|
+
flags: {
|
|
39088
|
+
config: "Config path; default credential precedence",
|
|
39089
|
+
profile: "Profile name; default credential precedence",
|
|
39090
|
+
fields: "Comma-separated display or wire fields; default compact view",
|
|
39091
|
+
full: "Show full text; default false",
|
|
39092
|
+
help: "Show help",
|
|
39093
|
+
limit: "Maximum emitted rows, 1-10000; default 100",
|
|
39094
|
+
all: "Read up to 10000 rows within invocation budgets; excludes --limit",
|
|
39095
|
+
cursor: "Bounded resume cursor; retain original selectors, filters, sort and fields",
|
|
39096
|
+
offset: "Starting record; default 0; excludes --cursor",
|
|
39097
|
+
sort: "Documented wire property:direction",
|
|
39098
|
+
filter: "Repeatable: <property> <operator> <JSON-value>; combines with AND (paths) or and (techniques)",
|
|
39099
|
+
"filter-file": "Documented single or nested JSON filter, at most two logical levels; '-' reads stdin; excludes --filter",
|
|
39100
|
+
"include-resolved": "Include resolved records; default false (exclude_resolved=true)"
|
|
39101
|
+
}
|
|
39102
|
+
},
|
|
39103
|
+
{
|
|
39104
|
+
command: "auth status",
|
|
39105
|
+
effect: "read",
|
|
39106
|
+
flags: {
|
|
39107
|
+
config: "Config path; default TENABLE_AXI_CONFIG or platform path",
|
|
39108
|
+
profile: "Profile name; default credential precedence",
|
|
39109
|
+
fields: "Comma-separated output fields; default all",
|
|
39110
|
+
full: "Show full text; default false",
|
|
39111
|
+
help: "Show help; default false"
|
|
39112
|
+
}
|
|
39113
|
+
},
|
|
39114
|
+
{
|
|
39115
|
+
command: "card list",
|
|
39116
|
+
effect: "read",
|
|
39117
|
+
flags: {
|
|
39118
|
+
config: "Config path; default platform path",
|
|
39119
|
+
profile: "Profile name; default credential precedence",
|
|
39120
|
+
fields: "Comma-separated output fields; default compact projection",
|
|
39121
|
+
full: "Full text; default false",
|
|
39122
|
+
help: "Show help; default false",
|
|
39123
|
+
limit: "Output rows; default 100",
|
|
39124
|
+
offset: "Starting record; default 0",
|
|
39125
|
+
cursor: "Resume the same scoped collection",
|
|
39126
|
+
all: "Read up to 10000 rows; incompatible with --limit",
|
|
39127
|
+
global: "true or false; default all cards",
|
|
39128
|
+
query: "Card name search",
|
|
39129
|
+
"sorting-order": "asc or desc; default API order"
|
|
39130
|
+
}
|
|
39131
|
+
},
|
|
39132
|
+
{
|
|
39133
|
+
command: "card show",
|
|
39134
|
+
effect: "read",
|
|
39135
|
+
flags: {
|
|
39136
|
+
config: "Config path; default platform path",
|
|
39137
|
+
profile: "Profile name; default credential precedence",
|
|
39138
|
+
fields: "Comma-separated output fields; default compact projection",
|
|
39139
|
+
full: "Full text; default false",
|
|
39140
|
+
help: "Show help; default false",
|
|
39141
|
+
id: "Required card ID",
|
|
39142
|
+
"trend-start-date": "UTC ISO timestamp",
|
|
39143
|
+
"trend-end-date": "UTC ISO timestamp",
|
|
39144
|
+
"sla-efficiency-start-date": "UTC ISO timestamp",
|
|
39145
|
+
"sla-efficiency-end-date": "UTC ISO timestamp",
|
|
39146
|
+
"sla-breakdown-filter": "ANY, REMEDIATED or NON_REMEDIATED; default ANY",
|
|
39147
|
+
"include-trend-events": "true or false; default false"
|
|
39148
|
+
}
|
|
39149
|
+
},
|
|
39150
|
+
{
|
|
39151
|
+
command: "combination create",
|
|
39152
|
+
effect: "write",
|
|
39153
|
+
flags: {
|
|
39154
|
+
config: "Config path; default credential precedence",
|
|
39155
|
+
profile: "Profile name; default credential precedence",
|
|
39156
|
+
fields: "Comma-separated fields; default compact view",
|
|
39157
|
+
full: "Full text; default false",
|
|
39158
|
+
help: "Show help",
|
|
39159
|
+
execute: "Send once; default preview",
|
|
39160
|
+
"dry-run": "Preview only; excludes --execute",
|
|
39161
|
+
confirm: "Exact preview confirmation; required to execute",
|
|
39162
|
+
"body-file": "Required strict JSON, at most 1 MiB; '-' reads stdin"
|
|
39163
|
+
}
|
|
39164
|
+
},
|
|
39165
|
+
{
|
|
39166
|
+
command: "combination delete",
|
|
39167
|
+
effect: "write",
|
|
39168
|
+
flags: {
|
|
39169
|
+
config: "Config path; default credential precedence",
|
|
39170
|
+
profile: "Profile name; default credential precedence",
|
|
39171
|
+
fields: "Comma-separated fields; default compact view",
|
|
39172
|
+
full: "Full text; default false",
|
|
39173
|
+
help: "Show help",
|
|
39174
|
+
id: "Required exact UUID",
|
|
39175
|
+
execute: "Send once; default preview",
|
|
39176
|
+
"dry-run": "Preview only; excludes --execute",
|
|
39177
|
+
confirm: "Exact preview confirmation; required to execute"
|
|
39178
|
+
}
|
|
39179
|
+
},
|
|
39180
|
+
{
|
|
39181
|
+
command: "combination filters",
|
|
39182
|
+
effect: "read",
|
|
39183
|
+
flags: {
|
|
39184
|
+
config: "Config path; default credential precedence",
|
|
39185
|
+
profile: "Profile name; default credential precedence",
|
|
39186
|
+
fields: "Comma-separated fields; default compact view",
|
|
39187
|
+
full: "Full text; default false",
|
|
39188
|
+
help: "Show help",
|
|
39189
|
+
limit: "Output rows; default 100, maximum 10000",
|
|
39190
|
+
all: "Up to 10000 rows; excludes --limit",
|
|
39191
|
+
cursor: "Re-fetch and resume an unchanged unpaged collection; requires original selectors"
|
|
39192
|
+
}
|
|
39193
|
+
},
|
|
39194
|
+
{
|
|
39195
|
+
command: "combination list",
|
|
39196
|
+
effect: "read",
|
|
39197
|
+
flags: {
|
|
39198
|
+
config: "Config path; default credential precedence",
|
|
39199
|
+
profile: "Profile name; default credential precedence",
|
|
39200
|
+
fields: "Comma-separated fields; default compact view",
|
|
39201
|
+
full: "Full text; default false",
|
|
39202
|
+
help: "Show help",
|
|
39203
|
+
limit: "Output rows; default 100, maximum 10000",
|
|
39204
|
+
all: "Up to 10000 rows; excludes --limit",
|
|
39205
|
+
cursor: "Re-fetch and resume an unchanged unpaged collection; requires original selectors",
|
|
39206
|
+
type: "private, shared or tenable; default all accessible"
|
|
39207
|
+
}
|
|
39208
|
+
},
|
|
39209
|
+
{
|
|
39210
|
+
command: "combination show",
|
|
39211
|
+
effect: "read",
|
|
39212
|
+
flags: {
|
|
39213
|
+
config: "Config path; default credential precedence",
|
|
39214
|
+
profile: "Profile name; default credential precedence",
|
|
39215
|
+
fields: "Comma-separated fields; default compact view",
|
|
39216
|
+
full: "Full text; default false",
|
|
39217
|
+
help: "Show help",
|
|
39218
|
+
id: "Required exact UUID"
|
|
39219
|
+
}
|
|
39220
|
+
},
|
|
39221
|
+
{
|
|
39222
|
+
command: "combination update",
|
|
39223
|
+
effect: "write",
|
|
39224
|
+
flags: {
|
|
39225
|
+
config: "Config path; default credential precedence",
|
|
39226
|
+
profile: "Profile name; default credential precedence",
|
|
39227
|
+
fields: "Comma-separated fields; default compact view",
|
|
39228
|
+
full: "Full text; default false",
|
|
39229
|
+
help: "Show help",
|
|
39230
|
+
id: "Required exact UUID",
|
|
39231
|
+
execute: "Send once; default preview",
|
|
39232
|
+
"dry-run": "Preview only; excludes --execute",
|
|
39233
|
+
confirm: "Exact preview confirmation; required to execute",
|
|
39234
|
+
"body-file": "Required strict JSON, at most 1 MiB; '-' reads stdin"
|
|
39235
|
+
}
|
|
39236
|
+
},
|
|
39237
|
+
{
|
|
39238
|
+
command: "config path",
|
|
39239
|
+
effect: "blocked",
|
|
39240
|
+
flags: {
|
|
39241
|
+
config: "Config path; default TENABLE_AXI_CONFIG or platform path",
|
|
39242
|
+
profile: "Common selector; paths are independent of profile",
|
|
39243
|
+
fields: "Comma-separated output fields; default all",
|
|
39244
|
+
full: "Show full text; default false",
|
|
39245
|
+
help: "Show help; default false"
|
|
39246
|
+
}
|
|
39247
|
+
},
|
|
39248
|
+
{
|
|
39249
|
+
command: "connector logs",
|
|
39250
|
+
effect: "read",
|
|
39251
|
+
flags: {
|
|
39252
|
+
config: "Config path; default credential precedence",
|
|
39253
|
+
profile: "Profile name; default credential precedence",
|
|
39254
|
+
fields: "Comma-separated display or wire fields; default compact view",
|
|
39255
|
+
full: "Show full text; default false",
|
|
39256
|
+
help: "Show help",
|
|
39257
|
+
limit: "Maximum emitted rows, 1-10000; default 100",
|
|
39258
|
+
all: "Read up to 10000 rows within invocation budgets; excludes --limit",
|
|
39259
|
+
cursor: "Bounded resume cursor; retain original selectors, filters, sort and fields",
|
|
39260
|
+
"connector-id": "Nonnegative numeric connector ID",
|
|
39261
|
+
status: "SUCCEEDED|FAILED",
|
|
39262
|
+
"start-date": "Inclusive YYYY-MM-DD; requires --end-date",
|
|
39263
|
+
"end-date": "Exclusive YYYY-MM-DD; requires --start-date"
|
|
39264
|
+
}
|
|
39265
|
+
},
|
|
39266
|
+
{
|
|
39267
|
+
command: "doctor",
|
|
39268
|
+
effect: "read",
|
|
39269
|
+
flags: {
|
|
39270
|
+
config: "Config path; default platform path",
|
|
39271
|
+
profile: "Profile name; default credential precedence",
|
|
39272
|
+
fields: "Comma-separated output fields; default compact projection",
|
|
39273
|
+
full: "Full text; default false",
|
|
39274
|
+
help: "Show help; default false"
|
|
39275
|
+
}
|
|
39276
|
+
},
|
|
39277
|
+
{
|
|
39278
|
+
command: "export asset jobs",
|
|
39279
|
+
effect: "read",
|
|
39280
|
+
flags: {
|
|
39281
|
+
config: "Config path; default platform path",
|
|
39282
|
+
profile: "Profile name; default credential precedence",
|
|
39283
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39284
|
+
full: "Full output; default false",
|
|
39285
|
+
help: "Show help",
|
|
39286
|
+
status: "QUEUED|PROCESSING|FINISHED|ERROR",
|
|
39287
|
+
limit: "1-1000; default 100; last three days only"
|
|
39288
|
+
}
|
|
39289
|
+
},
|
|
39290
|
+
{
|
|
39291
|
+
command: "export asset start",
|
|
39292
|
+
effect: "write",
|
|
39293
|
+
flags: {
|
|
39294
|
+
config: "Config path; default platform path",
|
|
39295
|
+
profile: "Profile name; default credential precedence",
|
|
39296
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39297
|
+
full: "Full output; default false",
|
|
39298
|
+
help: "Show help",
|
|
39299
|
+
"body-file": "Optional strict query/filters JSON file, '-' for stdin; maximum 1 MiB",
|
|
39300
|
+
properties: "Comma-separated names from asset properties; id maps to asset_id",
|
|
39301
|
+
"use-readable-name": "true|false; API default true",
|
|
39302
|
+
"max-chunk-file-size": "5242880-104857600 bytes; API default 20971520",
|
|
39303
|
+
sort: "property:asc|desc",
|
|
39304
|
+
"file-format": "JSON|CSV; API default JSON",
|
|
39305
|
+
compress: "true|false; API default false",
|
|
39306
|
+
execute: "Create once; default preview",
|
|
39307
|
+
"dry-run": "Explicit preview; excludes --execute",
|
|
39308
|
+
confirm: "Exact confirmation from preview",
|
|
39309
|
+
"intent-id": "Unique execution intent for replay protection"
|
|
39310
|
+
}
|
|
39311
|
+
},
|
|
39312
|
+
{
|
|
39313
|
+
command: "export attack download",
|
|
39314
|
+
effect: "blocked",
|
|
39315
|
+
flags: {
|
|
39316
|
+
config: "Config path; default credential precedence",
|
|
39317
|
+
profile: "Profile name; default credential precedence",
|
|
39318
|
+
fields: "Comma-separated metadata fields; default compact view",
|
|
39319
|
+
full: "Full metadata text; default false",
|
|
39320
|
+
help: "Show help",
|
|
39321
|
+
id: "Required attack export UUID",
|
|
39322
|
+
output: "Required new output file; overwrite refused"
|
|
39323
|
+
}
|
|
39324
|
+
},
|
|
39325
|
+
{
|
|
39326
|
+
command: "export attack status",
|
|
39327
|
+
effect: "read",
|
|
39328
|
+
flags: {
|
|
39329
|
+
config: "Config path; default credential precedence",
|
|
39330
|
+
profile: "Profile name; default credential precedence",
|
|
39331
|
+
fields: "Comma-separated metadata fields; default compact view",
|
|
39332
|
+
full: "Full metadata text; default false",
|
|
39333
|
+
help: "Show help",
|
|
39334
|
+
id: "Required attack export UUID",
|
|
39335
|
+
wait: "Poll once per second within 20-second/20-request budgets; default false"
|
|
39336
|
+
}
|
|
39337
|
+
},
|
|
39338
|
+
{
|
|
39339
|
+
command: "export attack-path start",
|
|
39340
|
+
effect: "write",
|
|
39341
|
+
flags: {
|
|
39342
|
+
config: "Config path; default credential precedence",
|
|
39343
|
+
profile: "Profile name; default credential precedence",
|
|
39344
|
+
fields: "Comma-separated metadata fields; default compact view",
|
|
39345
|
+
full: "Full metadata text; default false",
|
|
39346
|
+
help: "Show help",
|
|
39347
|
+
"body-file": "Required strict operation-specific JSON file, at most 1 MiB; '-' reads stdin",
|
|
39348
|
+
execute: "Create the previewed job once; default false",
|
|
39349
|
+
"dry-run": "Preview only; excludes --execute",
|
|
39350
|
+
confirm: "Exact confirmation string from preview; required with --execute"
|
|
39351
|
+
}
|
|
39352
|
+
},
|
|
39353
|
+
{
|
|
39354
|
+
command: "export attack-technique start",
|
|
39355
|
+
effect: "write",
|
|
39356
|
+
flags: {
|
|
39357
|
+
config: "Config path; default credential precedence",
|
|
39358
|
+
profile: "Profile name; default credential precedence",
|
|
39359
|
+
fields: "Comma-separated metadata fields; default compact view",
|
|
39360
|
+
full: "Full metadata text; default false",
|
|
39361
|
+
help: "Show help",
|
|
39362
|
+
"body-file": "Required strict operation-specific JSON file, at most 1 MiB; '-' reads stdin",
|
|
39363
|
+
execute: "Create the previewed job once; default false",
|
|
39364
|
+
"dry-run": "Preview only; excludes --execute",
|
|
39365
|
+
confirm: "Exact confirmation string from preview; required with --execute"
|
|
39366
|
+
}
|
|
39367
|
+
},
|
|
39368
|
+
{
|
|
39369
|
+
command: "export finding jobs",
|
|
39370
|
+
effect: "read",
|
|
39371
|
+
flags: {
|
|
39372
|
+
config: "Config path; default platform path",
|
|
39373
|
+
profile: "Profile name; default credential precedence",
|
|
39374
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39375
|
+
full: "Full output; default false",
|
|
39376
|
+
help: "Show help",
|
|
39377
|
+
status: "QUEUED|PROCESSING|FINISHED|ERROR",
|
|
39378
|
+
limit: "1-1000; default 100; last three days only"
|
|
39379
|
+
}
|
|
39380
|
+
},
|
|
39381
|
+
{
|
|
39382
|
+
command: "export finding start",
|
|
39383
|
+
effect: "write",
|
|
39384
|
+
flags: {
|
|
39385
|
+
config: "Config path; default platform path",
|
|
39386
|
+
profile: "Profile name; default credential precedence",
|
|
39387
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39388
|
+
full: "Full output; default false",
|
|
39389
|
+
help: "Show help",
|
|
39390
|
+
"body-file": "Optional strict query/filters JSON file, '-' for stdin; maximum 1 MiB",
|
|
39391
|
+
properties: "Comma-separated names from finding properties; id maps to finding_id",
|
|
39392
|
+
"use-readable-name": "true|false; API default true",
|
|
39393
|
+
"max-chunk-file-size": "5242880-104857600 bytes; API default 20971520",
|
|
39394
|
+
sort: "property:asc|desc",
|
|
39395
|
+
"file-format": "JSON|CSV; API default JSON",
|
|
39396
|
+
compress: "true|false; API default false",
|
|
39397
|
+
execute: "Create once; default preview",
|
|
39398
|
+
"dry-run": "Explicit preview; excludes --execute",
|
|
39399
|
+
confirm: "Exact confirmation from preview",
|
|
39400
|
+
"intent-id": "Unique execution intent for replay protection"
|
|
39401
|
+
}
|
|
39402
|
+
},
|
|
39403
|
+
{
|
|
39404
|
+
command: "export inventory download",
|
|
39405
|
+
effect: "blocked",
|
|
39406
|
+
flags: {
|
|
39407
|
+
config: "Config path; default platform path",
|
|
39408
|
+
profile: "Profile name; default credential precedence",
|
|
39409
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39410
|
+
full: "Full output; default false",
|
|
39411
|
+
help: "Show help",
|
|
39412
|
+
id: "Required export UUID",
|
|
39413
|
+
chunk: "Required nonnegative chunk number from status",
|
|
39414
|
+
output: "Required new output file; refuses overwrite"
|
|
39415
|
+
}
|
|
39416
|
+
},
|
|
39417
|
+
{
|
|
39418
|
+
command: "export inventory status",
|
|
39419
|
+
effect: "read",
|
|
39420
|
+
flags: {
|
|
39421
|
+
config: "Config path; default platform path",
|
|
39422
|
+
profile: "Profile name; default credential precedence",
|
|
39423
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39424
|
+
full: "Full output; default false",
|
|
39425
|
+
help: "Show help",
|
|
39426
|
+
id: "Required export UUID"
|
|
39427
|
+
}
|
|
39428
|
+
},
|
|
39429
|
+
{
|
|
39430
|
+
command: "export mitre-heatmap start",
|
|
39431
|
+
effect: "write",
|
|
39432
|
+
flags: {
|
|
39433
|
+
config: "Config path; default credential precedence",
|
|
39434
|
+
profile: "Profile name; default credential precedence",
|
|
39435
|
+
fields: "Comma-separated metadata fields; default compact view",
|
|
39436
|
+
full: "Full metadata text; default false",
|
|
39437
|
+
help: "Show help",
|
|
39438
|
+
"body-file": "Required strict operation-specific JSON file, at most 1 MiB; '-' reads stdin",
|
|
39439
|
+
execute: "Create the previewed job once; default false",
|
|
39440
|
+
"dry-run": "Preview only; excludes --execute",
|
|
39441
|
+
confirm: "Exact confirmation string from preview; required with --execute"
|
|
39442
|
+
}
|
|
39443
|
+
},
|
|
39444
|
+
{
|
|
39445
|
+
command: "finding list",
|
|
39446
|
+
effect: "read",
|
|
39447
|
+
flags: {
|
|
39448
|
+
config: "Config path; default credential precedence",
|
|
39449
|
+
profile: "Profile name; default credential precedence",
|
|
39450
|
+
fields: "Comma-separated display or wire properties; default compact view",
|
|
39451
|
+
full: "Show full text; default false",
|
|
39452
|
+
help: "Show help",
|
|
39453
|
+
limit: "Maximum emitted rows, 1-10000; default 100",
|
|
39454
|
+
all: "Read up to 10000 rows within invocation budgets; excludes --limit",
|
|
39455
|
+
cursor: "Opaque resume cursor; retain the original selectors and filters",
|
|
39456
|
+
query: "Simple query text",
|
|
39457
|
+
filter: "Repeatable: <property> <operator> <JSON string array>",
|
|
39458
|
+
"filter-file": "JSON flat array of {property, operator, value: string[]}; '-' reads stdin; excludes --filter",
|
|
39459
|
+
sort: "Wire property:asc|desc",
|
|
39460
|
+
"extra-properties": "Comma-separated extra wire properties",
|
|
39461
|
+
offset: "Starting record; default 0; excludes --cursor"
|
|
39462
|
+
}
|
|
39463
|
+
},
|
|
39464
|
+
{
|
|
39465
|
+
command: "finding properties",
|
|
39466
|
+
effect: "read",
|
|
39467
|
+
flags: {
|
|
39468
|
+
config: "Config path; default credential precedence",
|
|
39469
|
+
profile: "Profile name; default credential precedence",
|
|
39470
|
+
fields: "Comma-separated display or wire properties; default compact view",
|
|
39471
|
+
full: "Show full text; default false",
|
|
39472
|
+
help: "Show help",
|
|
39473
|
+
limit: "Maximum emitted rows, 1-10000; default 100",
|
|
39474
|
+
all: "Read up to 10000 rows within invocation budgets; excludes --limit",
|
|
39475
|
+
cursor: "Opaque resume cursor; retain the original selectors and filters"
|
|
39476
|
+
}
|
|
39477
|
+
},
|
|
39478
|
+
{
|
|
39479
|
+
command: "finding show",
|
|
39480
|
+
effect: "read",
|
|
39481
|
+
flags: {
|
|
39482
|
+
config: "Config path; default credential precedence",
|
|
39483
|
+
profile: "Profile name; default credential precedence",
|
|
39484
|
+
fields: "Comma-separated display or wire properties; default compact view",
|
|
39485
|
+
full: "Show full text; default false",
|
|
39486
|
+
help: "Show help",
|
|
39487
|
+
id: "Required exact inventory ID",
|
|
39488
|
+
"extra-properties": "Comma-separated extra wire properties"
|
|
39489
|
+
}
|
|
39490
|
+
},
|
|
39491
|
+
{
|
|
39492
|
+
command: "home",
|
|
39493
|
+
effect: "read",
|
|
39494
|
+
flags: {
|
|
39495
|
+
config: "Config path; default platform path",
|
|
39496
|
+
profile: "Profile name; default credential precedence",
|
|
39497
|
+
fields: "Card fields; default id,name,score",
|
|
39498
|
+
full: "Full text; default false",
|
|
39499
|
+
help: "Show help; default false"
|
|
39500
|
+
}
|
|
39501
|
+
},
|
|
39502
|
+
{
|
|
39503
|
+
command: "hook",
|
|
39504
|
+
effect: "blocked",
|
|
39505
|
+
flags: {
|
|
39506
|
+
config: "Config path; default platform path",
|
|
39507
|
+
profile: "Profile name; default credential precedence",
|
|
39508
|
+
fields: "Comma-separated output fields; default compact projection",
|
|
39509
|
+
full: "Full text; default false",
|
|
39510
|
+
help: "Show help; default false"
|
|
39511
|
+
}
|
|
39512
|
+
},
|
|
39513
|
+
{
|
|
39514
|
+
command: "initiative create",
|
|
39515
|
+
effect: "write",
|
|
39516
|
+
flags: {
|
|
39517
|
+
config: "Config path; default credential precedence",
|
|
39518
|
+
profile: "Profile name; default credential precedence",
|
|
39519
|
+
fields: "Comma-separated fields; default compact view",
|
|
39520
|
+
full: "Full text; default false",
|
|
39521
|
+
help: "Show help",
|
|
39522
|
+
execute: "Send once; default preview",
|
|
39523
|
+
"dry-run": "Preview only; excludes --execute",
|
|
39524
|
+
confirm: "Exact preview confirmation; required to execute",
|
|
39525
|
+
"body-file": "Required strict JSON, at most 1 MiB; '-' reads stdin"
|
|
39526
|
+
}
|
|
39527
|
+
},
|
|
39528
|
+
{
|
|
39529
|
+
command: "initiative delete",
|
|
39530
|
+
effect: "write",
|
|
39531
|
+
flags: {
|
|
39532
|
+
config: "Config path; default credential precedence",
|
|
39533
|
+
profile: "Profile name; default credential precedence",
|
|
39534
|
+
fields: "Comma-separated fields; default compact view",
|
|
39535
|
+
full: "Full text; default false",
|
|
39536
|
+
help: "Show help",
|
|
39537
|
+
id: "Required exact UUID",
|
|
39538
|
+
execute: "Send once; default preview",
|
|
39539
|
+
"dry-run": "Preview only; excludes --execute",
|
|
39540
|
+
confirm: "Exact preview confirmation; required to execute"
|
|
39541
|
+
}
|
|
39542
|
+
},
|
|
39543
|
+
{
|
|
39544
|
+
command: "initiative list",
|
|
39545
|
+
effect: "read",
|
|
39546
|
+
flags: {
|
|
39547
|
+
config: "Config path; default credential precedence",
|
|
39548
|
+
profile: "Profile name; default credential precedence",
|
|
39549
|
+
fields: "Comma-separated fields; default compact view",
|
|
39550
|
+
full: "Full text; default false",
|
|
39551
|
+
help: "Show help",
|
|
39552
|
+
limit: "Output rows; default 100, maximum 10000",
|
|
39553
|
+
all: "Up to 10000 rows; excludes --limit",
|
|
39554
|
+
cursor: "Re-fetch and resume an unchanged unpaged collection; requires original selectors"
|
|
39555
|
+
}
|
|
39556
|
+
},
|
|
39557
|
+
{
|
|
39558
|
+
command: "initiative show",
|
|
39559
|
+
effect: "read",
|
|
39560
|
+
flags: {
|
|
39561
|
+
config: "Config path; default credential precedence",
|
|
39562
|
+
profile: "Profile name; default credential precedence",
|
|
39563
|
+
fields: "Comma-separated fields; default compact view",
|
|
39564
|
+
full: "Full text; default false",
|
|
39565
|
+
help: "Show help",
|
|
39566
|
+
id: "Required exact UUID"
|
|
39567
|
+
}
|
|
39568
|
+
},
|
|
39569
|
+
{
|
|
39570
|
+
command: "initiative update",
|
|
39571
|
+
effect: "write",
|
|
39572
|
+
flags: {
|
|
39573
|
+
config: "Config path; default credential precedence",
|
|
39574
|
+
profile: "Profile name; default credential precedence",
|
|
39575
|
+
fields: "Comma-separated fields; default compact view",
|
|
39576
|
+
full: "Full text; default false",
|
|
39577
|
+
help: "Show help",
|
|
39578
|
+
id: "Required exact UUID",
|
|
39579
|
+
execute: "Send once; default preview",
|
|
39580
|
+
"dry-run": "Preview only; excludes --execute",
|
|
39581
|
+
confirm: "Exact preview confirmation; required to execute",
|
|
39582
|
+
"body-file": "Required strict JSON, at most 1 MiB; '-' reads stdin"
|
|
39583
|
+
}
|
|
39584
|
+
},
|
|
39585
|
+
{
|
|
39586
|
+
command: "profile list",
|
|
39587
|
+
effect: "blocked",
|
|
39588
|
+
flags: {
|
|
39589
|
+
config: "Config path; default TENABLE_AXI_CONFIG or platform path",
|
|
39590
|
+
profile: "Common selector; list still shows all profiles",
|
|
39591
|
+
fields: "Comma-separated output fields; default all",
|
|
39592
|
+
full: "Show full text; default false",
|
|
39593
|
+
help: "Show help; default false"
|
|
39594
|
+
}
|
|
39595
|
+
},
|
|
39596
|
+
{
|
|
39597
|
+
command: "setup hooks",
|
|
39598
|
+
effect: "blocked",
|
|
39599
|
+
flags: {
|
|
39600
|
+
scope: "user or project; default user; project targets the current directory",
|
|
39601
|
+
help: "Show help; default false"
|
|
39602
|
+
}
|
|
39603
|
+
},
|
|
39604
|
+
{
|
|
39605
|
+
command: "software list",
|
|
39606
|
+
effect: "read",
|
|
39607
|
+
flags: {
|
|
39608
|
+
config: "Config path; default credential precedence",
|
|
39609
|
+
profile: "Profile name; default credential precedence",
|
|
39610
|
+
fields: "Comma-separated display or wire properties; default compact view",
|
|
39611
|
+
full: "Show full text; default false",
|
|
39612
|
+
help: "Show help",
|
|
39613
|
+
limit: "Maximum emitted rows, 1-10000; default 100",
|
|
39614
|
+
all: "Read up to 10000 rows within invocation budgets; excludes --limit",
|
|
39615
|
+
cursor: "Opaque resume cursor; retain the original selectors and filters",
|
|
39616
|
+
query: "Simple query text",
|
|
39617
|
+
filter: "Repeatable: <property> <operator> <JSON string array>",
|
|
39618
|
+
"filter-file": "JSON flat array of {property, operator, value: string[]}; '-' reads stdin; excludes --filter",
|
|
39619
|
+
sort: "Wire property:asc|desc",
|
|
39620
|
+
"extra-properties": "Comma-separated extra wire properties",
|
|
39621
|
+
offset: "Starting record; default 0; excludes --cursor"
|
|
39622
|
+
}
|
|
39623
|
+
},
|
|
39624
|
+
{
|
|
39625
|
+
command: "software properties",
|
|
39626
|
+
effect: "read",
|
|
39627
|
+
flags: {
|
|
39628
|
+
config: "Config path; default credential precedence",
|
|
39629
|
+
profile: "Profile name; default credential precedence",
|
|
39630
|
+
fields: "Comma-separated display or wire properties; default compact view",
|
|
39631
|
+
full: "Show full text; default false",
|
|
39632
|
+
help: "Show help",
|
|
39633
|
+
limit: "Maximum emitted rows, 1-10000; default 100",
|
|
39634
|
+
all: "Read up to 10000 rows within invocation budgets; excludes --limit",
|
|
39635
|
+
cursor: "Opaque resume cursor; retain the original selectors and filters"
|
|
39636
|
+
}
|
|
39637
|
+
},
|
|
39638
|
+
{
|
|
39639
|
+
command: "tag asset-filter list",
|
|
39640
|
+
effect: "read",
|
|
39641
|
+
flags: {
|
|
39642
|
+
config: "Config path; default platform path",
|
|
39643
|
+
profile: "Profile name; default credential precedence",
|
|
39644
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39645
|
+
full: "Full text; default false",
|
|
39646
|
+
help: "Show help",
|
|
39647
|
+
limit: "Output rows; default 100; maximum 10000",
|
|
39648
|
+
cursor: "Resume the same scoped collection",
|
|
39649
|
+
all: "Read at most 10000 rows; excludes --limit"
|
|
39650
|
+
}
|
|
39651
|
+
},
|
|
39652
|
+
{
|
|
39653
|
+
command: "tag assignment add",
|
|
39654
|
+
effect: "write",
|
|
39655
|
+
flags: {
|
|
39656
|
+
config: "Config path; default platform path",
|
|
39657
|
+
profile: "Profile name; default credential precedence",
|
|
39658
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39659
|
+
full: "Full text; default false",
|
|
39660
|
+
help: "Show help",
|
|
39661
|
+
execute: "Execute once; default preview",
|
|
39662
|
+
"dry-run": "Explicit preview; excludes --execute",
|
|
39663
|
+
confirm: "Exact confirmation from preview",
|
|
39664
|
+
"intent-id": "Unique execution intent for replay protection",
|
|
39665
|
+
"asset-ids-file": "Required JSON asset UUID array; '-' for stdin",
|
|
39666
|
+
"tag-ids-file": "Required JSON tag UUID array; '-' for stdin"
|
|
39667
|
+
}
|
|
39668
|
+
},
|
|
39669
|
+
{
|
|
39670
|
+
command: "tag assignment list",
|
|
39671
|
+
effect: "read",
|
|
39672
|
+
flags: {
|
|
39673
|
+
config: "Config path; default platform path",
|
|
39674
|
+
profile: "Profile name; default credential precedence",
|
|
39675
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39676
|
+
full: "Full text; default false",
|
|
39677
|
+
help: "Show help",
|
|
39678
|
+
"asset-id": "Required exact asset UUID",
|
|
39679
|
+
limit: "Output rows; default 100; maximum 10000",
|
|
39680
|
+
cursor: "Resume the same scoped collection",
|
|
39681
|
+
all: "Read at most 10000 rows; excludes --limit"
|
|
39682
|
+
}
|
|
39683
|
+
},
|
|
39684
|
+
{
|
|
39685
|
+
command: "tag assignment remove",
|
|
39686
|
+
effect: "write",
|
|
39687
|
+
flags: {
|
|
39688
|
+
config: "Config path; default platform path",
|
|
39689
|
+
profile: "Profile name; default credential precedence",
|
|
39690
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39691
|
+
full: "Full text; default false",
|
|
39692
|
+
help: "Show help",
|
|
39693
|
+
execute: "Execute once; default preview",
|
|
39694
|
+
"dry-run": "Explicit preview; excludes --execute",
|
|
39695
|
+
confirm: "Exact confirmation from preview",
|
|
39696
|
+
"intent-id": "Unique execution intent for replay protection",
|
|
39697
|
+
"asset-ids-file": "Required JSON asset UUID array; '-' for stdin",
|
|
39698
|
+
"tag-ids-file": "Required JSON tag UUID array; '-' for stdin"
|
|
39699
|
+
}
|
|
39700
|
+
},
|
|
39701
|
+
{
|
|
39702
|
+
command: "tag category create",
|
|
39703
|
+
effect: "write",
|
|
39704
|
+
flags: {
|
|
39705
|
+
config: "Config path; default platform path",
|
|
39706
|
+
profile: "Profile name; default credential precedence",
|
|
39707
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39708
|
+
full: "Full text; default false",
|
|
39709
|
+
help: "Show help",
|
|
39710
|
+
name: "Required category name, at most 127 characters, no colon",
|
|
39711
|
+
description: "Optional description, at most 3000 characters",
|
|
39712
|
+
execute: "Execute once; default preview",
|
|
39713
|
+
"dry-run": "Explicit preview; excludes --execute",
|
|
39714
|
+
confirm: "Exact confirmation from preview",
|
|
39715
|
+
"intent-id": "Unique execution intent for replay protection"
|
|
39716
|
+
}
|
|
39717
|
+
},
|
|
39718
|
+
{
|
|
39719
|
+
command: "tag category delete",
|
|
39720
|
+
effect: "write",
|
|
39721
|
+
flags: {
|
|
39722
|
+
config: "Config path; default platform path",
|
|
39723
|
+
profile: "Profile name; default credential precedence",
|
|
39724
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39725
|
+
full: "Full text; default false",
|
|
39726
|
+
help: "Show help",
|
|
39727
|
+
id: "Required exact UUID",
|
|
39728
|
+
execute: "Execute once; default preview",
|
|
39729
|
+
"dry-run": "Explicit preview; excludes --execute",
|
|
39730
|
+
confirm: "Exact confirmation from preview",
|
|
39731
|
+
"intent-id": "Unique execution intent for replay protection"
|
|
39732
|
+
}
|
|
39733
|
+
},
|
|
39734
|
+
{
|
|
39735
|
+
command: "tag category list",
|
|
39736
|
+
effect: "read",
|
|
39737
|
+
flags: {
|
|
39738
|
+
config: "Config path; default platform path",
|
|
39739
|
+
profile: "Profile name; default credential precedence",
|
|
39740
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39741
|
+
full: "Full text; default false",
|
|
39742
|
+
help: "Show help",
|
|
39743
|
+
limit: "Output rows; default 100; maximum 10000",
|
|
39744
|
+
offset: "Starting record; default 0",
|
|
39745
|
+
cursor: "Resume the same scoped collection",
|
|
39746
|
+
all: "Read at most 10000 rows; excludes --limit",
|
|
39747
|
+
filter: "Repeatable field:operator:value",
|
|
39748
|
+
"filter-type": "and|or; API default and",
|
|
39749
|
+
sort: "Comma-separated field:asc|desc"
|
|
39750
|
+
}
|
|
39751
|
+
},
|
|
39752
|
+
{
|
|
39753
|
+
command: "tag category show",
|
|
39754
|
+
effect: "read",
|
|
39755
|
+
flags: {
|
|
39756
|
+
config: "Config path; default platform path",
|
|
39757
|
+
profile: "Profile name; default credential precedence",
|
|
39758
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39759
|
+
full: "Full text; default false",
|
|
39760
|
+
help: "Show help",
|
|
39761
|
+
id: "Required exact UUID"
|
|
39762
|
+
}
|
|
39763
|
+
},
|
|
39764
|
+
{
|
|
39765
|
+
command: "tag category update",
|
|
39766
|
+
effect: "write",
|
|
39767
|
+
flags: {
|
|
39768
|
+
config: "Config path; default platform path",
|
|
39769
|
+
profile: "Profile name; default credential precedence",
|
|
39770
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39771
|
+
full: "Full text; default false",
|
|
39772
|
+
help: "Show help",
|
|
39773
|
+
id: "Required exact UUID",
|
|
39774
|
+
name: "Required category name, at most 127 characters, no colon",
|
|
39775
|
+
description: "Optional description, at most 3000 characters",
|
|
39776
|
+
execute: "Execute once; default preview",
|
|
39777
|
+
"dry-run": "Explicit preview; excludes --execute",
|
|
39778
|
+
confirm: "Exact confirmation from preview",
|
|
39779
|
+
"intent-id": "Unique execution intent for replay protection"
|
|
39780
|
+
}
|
|
39781
|
+
},
|
|
39782
|
+
{
|
|
39783
|
+
command: "tag exclusion list",
|
|
39784
|
+
effect: "read",
|
|
39785
|
+
flags: {
|
|
39786
|
+
config: "Config path; default platform path",
|
|
39787
|
+
profile: "Profile name; default credential precedence",
|
|
39788
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39789
|
+
full: "Full text; default false",
|
|
39790
|
+
help: "Show help",
|
|
39791
|
+
limit: "Output rows; default 100; maximum 10000",
|
|
39792
|
+
offset: "Starting record; default 0",
|
|
39793
|
+
cursor: "Resume the same scoped collection",
|
|
39794
|
+
all: "Read at most 10000 rows; excludes --limit",
|
|
39795
|
+
"tag-id": "Required exact dynamic tag UUID",
|
|
39796
|
+
"target-type": "assets; API default assets"
|
|
39797
|
+
}
|
|
39798
|
+
},
|
|
39799
|
+
{
|
|
39800
|
+
command: "tag list",
|
|
39801
|
+
effect: "read",
|
|
39802
|
+
flags: {
|
|
39803
|
+
config: "Config path; default platform path",
|
|
39804
|
+
profile: "Profile name; default credential precedence",
|
|
39805
|
+
fields: "Comma-separated output fields; default compact projection",
|
|
39806
|
+
full: "Full text; default false",
|
|
39807
|
+
help: "Show help; default false",
|
|
39808
|
+
limit: "Output rows; default 100",
|
|
39809
|
+
offset: "Starting record; default 0",
|
|
39810
|
+
cursor: "Resume the same scoped collection",
|
|
39811
|
+
all: "Read up to 10000 rows; incompatible with --limit",
|
|
39812
|
+
query: "Simple text search",
|
|
39813
|
+
filter: "Repeatable: property operator JSON-array-of-strings",
|
|
39814
|
+
"filter-file": "Strict documented tag filter array; incompatible with --filter",
|
|
39815
|
+
sort: "property:asc or property:desc",
|
|
39816
|
+
"extra-properties": "Comma-separated property names"
|
|
39817
|
+
}
|
|
39818
|
+
},
|
|
39819
|
+
{
|
|
39820
|
+
command: "tag properties",
|
|
39821
|
+
effect: "read",
|
|
39822
|
+
flags: {
|
|
39823
|
+
config: "Config path; default platform path",
|
|
39824
|
+
profile: "Profile name; default credential precedence",
|
|
39825
|
+
fields: "Comma-separated output fields; default compact projection",
|
|
39826
|
+
full: "Full text; default false",
|
|
39827
|
+
help: "Show help; default false"
|
|
39828
|
+
}
|
|
39829
|
+
},
|
|
39830
|
+
{
|
|
39831
|
+
command: "tag value bulk-delete",
|
|
39832
|
+
effect: "write",
|
|
39833
|
+
flags: {
|
|
39834
|
+
config: "Config path; default platform path",
|
|
39835
|
+
profile: "Profile name; default credential precedence",
|
|
39836
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39837
|
+
full: "Full text; default false",
|
|
39838
|
+
help: "Show help",
|
|
39839
|
+
execute: "Execute once; default preview",
|
|
39840
|
+
"dry-run": "Explicit preview; excludes --execute",
|
|
39841
|
+
confirm: "Exact confirmation from preview",
|
|
39842
|
+
"intent-id": "Unique execution intent for replay protection",
|
|
39843
|
+
"ids-file": "Required JSON UUID array; '-' for stdin; maximum 1 MiB"
|
|
39844
|
+
}
|
|
39845
|
+
},
|
|
39846
|
+
{
|
|
39847
|
+
command: "tag value create",
|
|
39848
|
+
effect: "write",
|
|
39849
|
+
flags: {
|
|
39850
|
+
config: "Config path; default platform path",
|
|
39851
|
+
profile: "Profile name; default credential precedence",
|
|
39852
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39853
|
+
full: "Full text; default false",
|
|
39854
|
+
help: "Show help",
|
|
39855
|
+
"body-file": "Required strict tag JSON; '-' for stdin; maximum 1 MiB; no access_control",
|
|
39856
|
+
execute: "Execute once; default preview",
|
|
39857
|
+
"dry-run": "Explicit preview; excludes --execute",
|
|
39858
|
+
confirm: "Exact confirmation from preview",
|
|
39859
|
+
"intent-id": "Unique execution intent for replay protection"
|
|
39860
|
+
}
|
|
39861
|
+
},
|
|
39862
|
+
{
|
|
39863
|
+
command: "tag value delete",
|
|
39864
|
+
effect: "write",
|
|
39865
|
+
flags: {
|
|
39866
|
+
config: "Config path; default platform path",
|
|
39867
|
+
profile: "Profile name; default credential precedence",
|
|
39868
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39869
|
+
full: "Full text; default false",
|
|
39870
|
+
help: "Show help",
|
|
39871
|
+
id: "Required exact UUID",
|
|
39872
|
+
execute: "Execute once; default preview",
|
|
39873
|
+
"dry-run": "Explicit preview; excludes --execute",
|
|
39874
|
+
confirm: "Exact confirmation from preview",
|
|
39875
|
+
"intent-id": "Unique execution intent for replay protection"
|
|
39876
|
+
}
|
|
39877
|
+
},
|
|
39878
|
+
{
|
|
39879
|
+
command: "tag value list",
|
|
39880
|
+
effect: "read",
|
|
39881
|
+
flags: {
|
|
39882
|
+
config: "Config path; default platform path",
|
|
39883
|
+
profile: "Profile name; default credential precedence",
|
|
39884
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39885
|
+
full: "Full text; default false",
|
|
39886
|
+
help: "Show help",
|
|
39887
|
+
limit: "Output rows; default 100; maximum 10000",
|
|
39888
|
+
offset: "Starting record; default 0",
|
|
39889
|
+
cursor: "Resume the same scoped collection",
|
|
39890
|
+
all: "Read at most 10000 rows; excludes --limit",
|
|
39891
|
+
filter: "Repeatable field:operator:value",
|
|
39892
|
+
"filter-type": "and|or; API default and",
|
|
39893
|
+
sort: "Comma-separated field:asc|desc",
|
|
39894
|
+
with: "Wildcard search value (w)",
|
|
39895
|
+
"with-filter": "Comma-separated wildcard fields (wf)"
|
|
39896
|
+
}
|
|
39897
|
+
},
|
|
39898
|
+
{
|
|
39899
|
+
command: "tag value show",
|
|
39900
|
+
effect: "read",
|
|
39901
|
+
flags: {
|
|
39902
|
+
config: "Config path; default platform path",
|
|
39903
|
+
profile: "Profile name; default credential precedence",
|
|
39904
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39905
|
+
full: "Full text; default false",
|
|
39906
|
+
help: "Show help",
|
|
39907
|
+
id: "Required exact UUID"
|
|
39908
|
+
}
|
|
39909
|
+
},
|
|
39910
|
+
{
|
|
39911
|
+
command: "tag value update",
|
|
39912
|
+
effect: "write",
|
|
39913
|
+
flags: {
|
|
39914
|
+
config: "Config path; default platform path",
|
|
39915
|
+
profile: "Profile name; default credential precedence",
|
|
39916
|
+
fields: "Comma-separated output fields; default compact view",
|
|
39917
|
+
full: "Full text; default false",
|
|
39918
|
+
help: "Show help",
|
|
39919
|
+
id: "Required exact UUID",
|
|
39920
|
+
"body-file": "Required strict tag JSON; '-' for stdin; maximum 1 MiB; no access_control",
|
|
39921
|
+
execute: "Execute once; default preview",
|
|
39922
|
+
"dry-run": "Explicit preview; excludes --execute",
|
|
39923
|
+
confirm: "Exact confirmation from preview",
|
|
39924
|
+
"intent-id": "Unique execution intent for replay protection"
|
|
39925
|
+
}
|
|
39926
|
+
}
|
|
39927
|
+
]
|
|
39928
|
+
};
|
|
39929
|
+
|
|
38643
39930
|
// src/shared/tool-manifests.ts
|
|
38644
|
-
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 };
|
|
39931
|
+
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 };
|
|
38645
39932
|
|
|
38646
39933
|
// node_modules/.pnpm/@toon-format+toon@2.3.1/node_modules/@toon-format/toon/dist/index.mjs
|
|
38647
39934
|
var NULL_LITERAL = "null";
|
|
@@ -40009,6 +41296,7 @@ function resolveDecodeOptions(options) {
|
|
|
40009
41296
|
|
|
40010
41297
|
// src/cli/rewrite.ts
|
|
40011
41298
|
var managedFlags = {
|
|
41299
|
+
"tenable-axi": tenable_axi_default.adapterBoundary.unsafeOverrides,
|
|
40012
41300
|
"awx-axi": awx_axi_default.adapterBoundary.unsafeOverrides,
|
|
40013
41301
|
"falcon-axi": falcon_axi_default.unsafeOverrides,
|
|
40014
41302
|
"vectra-axi": vectra_axi_default.adapterBoundary.unsafeOverrides,
|
|
@@ -40071,6 +41359,13 @@ function rewriteSuggestions(output3, tool, truncated = false) {
|
|
|
40071
41359
|
try {
|
|
40072
41360
|
const json2 = output3.trimStart().startsWith("{");
|
|
40073
41361
|
let parsed = json2 ? jsonHelp(output3) : toonHelp(output3);
|
|
41362
|
+
if (tool === "tenable-axi" && parsed.document.commands) {
|
|
41363
|
+
return encode3({
|
|
41364
|
+
description: "Investigate Tenable One with managed API keys.",
|
|
41365
|
+
commands: tenable_axi_default.commands.filter((route) => route.effect !== "blocked").map((route) => route.command),
|
|
41366
|
+
help: [tenable_axi_default.discovery.help.replaceAll("tenable-axi ", "artium-axi tenable-axi ")]
|
|
41367
|
+
}) + "\n";
|
|
41368
|
+
}
|
|
40074
41369
|
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) {
|
|
40075
41370
|
const home = {
|
|
40076
41371
|
...parsed.document,
|
|
@@ -40166,9 +41461,14 @@ function managedFlagRanges(command, tool) {
|
|
|
40166
41461
|
return ranges;
|
|
40167
41462
|
}
|
|
40168
41463
|
function hostedHelp(help, tool, flags, commands2) {
|
|
41464
|
+
if (tool === "tenable-axi") {
|
|
41465
|
+
help = help.split("\n").filter((line) => !/TENABLE_AXI_|SecretRefs|tenable-axi (?:setup|config|profile|hook)|export (?:attack|inventory) download/.test(line)).join("\n");
|
|
41466
|
+
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.";
|
|
41467
|
+
if (commands2 && !help.includes(guidance)) help = help.trimEnd() + "\n" + guidance + "\n";
|
|
41468
|
+
}
|
|
40169
41469
|
if (tool === "awx-axi") {
|
|
40170
41470
|
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.";
|
|
40171
|
-
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");
|
|
41471
|
+
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");
|
|
40172
41472
|
if (!help.trim()) help = guidance;
|
|
40173
41473
|
else if (commands2 && !help.includes(guidance)) help = help.trimEnd() + "\n" + guidance + "\n";
|
|
40174
41474
|
}
|
|
@@ -40198,7 +41498,8 @@ function hostedHelp(help, tool, flags, commands2) {
|
|
|
40198
41498
|
const filtered = help.replace(
|
|
40199
41499
|
/^([ \t]*(?:(?:Flags|Globals|Global flags|Selector flags on every command|[Vv]alid flags for `[^`]+`): |(?=--)))([^\r\n]*)(\r?\n|$)/gm,
|
|
40200
41500
|
(_, label, listed, ending) => {
|
|
40201
|
-
const
|
|
41501
|
+
const entries = label.trim() || /^--[\w-]+(?: <[^>]+>)?(?:, --[\w-]+(?: <[^>]+>)?)*\.?$/.test(listed) ? listed.split(", ") : [listed];
|
|
41502
|
+
const retained = entries.filter((flag) => !flags.includes(/^--([\w-]+)/.exec(flag)?.[1] ?? "")).join(", ");
|
|
40202
41503
|
if (!retained && !label.trim()) return "";
|
|
40203
41504
|
return label + retained + (listed.endsWith(".") && !retained.endsWith(".") ? "." : "") + ending;
|
|
40204
41505
|
}
|
|
@@ -40321,9 +41622,16 @@ function identityView(user, server) {
|
|
|
40321
41622
|
return `user: ${JSON.stringify(user.username)}
|
|
40322
41623
|
server: ${JSON.stringify(server)}
|
|
40323
41624
|
roles[${user.roles.length}]: ${user.roles.map((role) => JSON.stringify(role)).join(",")}
|
|
40324
|
-
|
|
41625
|
+
sessionExpiresAt: ${sessionExpiryView(user.sessionExpiresAt)}
|
|
41626
|
+
accessExpiresAt: ${sessionExpiryView(user.accessExpiresAt)}
|
|
41627
|
+
note: Access tokens refresh automatically when a refresh token is available.
|
|
40325
41628
|
`;
|
|
40326
41629
|
}
|
|
41630
|
+
function sessionExpiryView(expiresAt, now = Date.now()) {
|
|
41631
|
+
const minutes = Math.max(0, Math.floor((expiresAt - now) / 6e4));
|
|
41632
|
+
const remaining = expiresAt <= now ? "expired" : `in ${Math.floor(minutes / 60)}h ${minutes % 60}m`;
|
|
41633
|
+
return `${new Date(expiresAt).toISOString().replace(".000Z", "Z")} (${remaining})`;
|
|
41634
|
+
}
|
|
40327
41635
|
function toolsView(tools) {
|
|
40328
41636
|
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";
|
|
40329
41637
|
return `tools[${tools.length}]{name,status,version,readOnly}:
|
|
@@ -40348,11 +41656,268 @@ upstreamHelp: ${JSON.stringify(help)}
|
|
|
40348
41656
|
`;
|
|
40349
41657
|
}
|
|
40350
41658
|
|
|
41659
|
+
// src/cli/doctor.ts
|
|
41660
|
+
var DIAGNOSTIC_REQUEST_DEADLINE_MS = 5e3;
|
|
41661
|
+
async function doctor(createClient = (deadline) => new Client(process.env, void 0, deadline), write = (text2) => {
|
|
41662
|
+
process.stdout.write(text2);
|
|
41663
|
+
}) {
|
|
41664
|
+
let failure2;
|
|
41665
|
+
const line = (name, pass, detail, error62) => {
|
|
41666
|
+
if (!pass) failure2 ??= error62 ?? new ArtiumError("INVALID_RESPONSE");
|
|
41667
|
+
write(`${pass ? "pass" : "fail"}: ${name}${detail ? ` (${detail})` : ""}
|
|
41668
|
+
`);
|
|
41669
|
+
};
|
|
41670
|
+
let client;
|
|
41671
|
+
try {
|
|
41672
|
+
client = createClient(DIAGNOSTIC_REQUEST_DEADLINE_MS);
|
|
41673
|
+
} catch (error62) {
|
|
41674
|
+
for (const name of ["server address", "certificate", "token", "CLI version"]) line(name, false, "CLIENT_CONFIG_INVALID");
|
|
41675
|
+
throw error62;
|
|
41676
|
+
}
|
|
41677
|
+
let addressOk = false;
|
|
41678
|
+
try {
|
|
41679
|
+
const live = await client.request("/health/live", "GET");
|
|
41680
|
+
addressOk = !!live && typeof live === "object" && "status" in live && live.status === "ok";
|
|
41681
|
+
line("server address", addressOk, client.serverUrlSource);
|
|
41682
|
+
line("certificate", client.certificateVerified, client.certificateVerified ? void 0 : "test HTTP", new ArtiumError("CLIENT_CONFIG_INVALID"));
|
|
41683
|
+
} catch (error62) {
|
|
41684
|
+
const cause = error62 instanceof ArtiumError ? error62 : new ArtiumError("INVALID_RESPONSE");
|
|
41685
|
+
line("server address", cause.code === "CERTIFICATE_INVALID", `${client.serverUrlSource}: ${cause.code}`, cause);
|
|
41686
|
+
line("certificate", client.certificateVerified, client.certificateVerified ? void 0 : cause.code, cause);
|
|
41687
|
+
}
|
|
41688
|
+
if (!addressOk && failure2) throw failure2;
|
|
41689
|
+
let versionOk = true;
|
|
41690
|
+
let versionError;
|
|
41691
|
+
try {
|
|
41692
|
+
await client.request("/v1/me", "GET");
|
|
41693
|
+
} catch (error62) {
|
|
41694
|
+
versionOk = error62 instanceof ArtiumError && error62.code === "TOKEN_INVALID";
|
|
41695
|
+
if (!versionOk) versionError = error62 instanceof ArtiumError ? error62 : new ArtiumError("INVALID_RESPONSE");
|
|
41696
|
+
}
|
|
41697
|
+
let tokenOk = false;
|
|
41698
|
+
let tokenError;
|
|
41699
|
+
let tokenDetail;
|
|
41700
|
+
try {
|
|
41701
|
+
const parsed = meResponseSchema.safeParse(await client.authenticated("/v1/me", "GET"));
|
|
41702
|
+
tokenOk = parsed.success;
|
|
41703
|
+
if (parsed.success) tokenDetail = `session expires ${sessionExpiryView(parsed.data.sessionExpiresAt)}`;
|
|
41704
|
+
} catch (error62) {
|
|
41705
|
+
tokenError = error62 instanceof ArtiumError ? error62 : new ArtiumError("INVALID_RESPONSE");
|
|
41706
|
+
}
|
|
41707
|
+
line("token", tokenOk, tokenDetail, tokenError);
|
|
41708
|
+
line("CLI version", versionOk, void 0, versionError);
|
|
41709
|
+
if (tokenOk && versionOk) {
|
|
41710
|
+
try {
|
|
41711
|
+
const parsed = toolsResponseSchema.safeParse(await client.authenticated("/v1/tools", "GET"));
|
|
41712
|
+
if (!parsed.success) throw new ArtiumError("INVALID_RESPONSE");
|
|
41713
|
+
for (const tool of parsed.data.tools) line(
|
|
41714
|
+
tool.name,
|
|
41715
|
+
tool.status === "ok",
|
|
41716
|
+
tool.status,
|
|
41717
|
+
new ArtiumError(tool.status === "unconfigured" ? "CREDENTIAL_NOT_CONFIGURED" : tool.status === "error" ? "TOOL_FAILED" : tool.status === "disabled" ? "TOOL_DISABLED" : "SERVER_UNAVAILABLE")
|
|
41718
|
+
);
|
|
41719
|
+
} catch (error62) {
|
|
41720
|
+
const cause = error62 instanceof ArtiumError ? error62 : new ArtiumError("INVALID_RESPONSE");
|
|
41721
|
+
line("tools", false, cause.code, cause);
|
|
41722
|
+
}
|
|
41723
|
+
}
|
|
41724
|
+
if (failure2) throw failure2;
|
|
41725
|
+
}
|
|
41726
|
+
|
|
41727
|
+
// src/cli/help.ts
|
|
41728
|
+
var commands = {
|
|
41729
|
+
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" },
|
|
41730
|
+
setup: {
|
|
41731
|
+
usage: "artium-axi setup --host <claude|codex|opencode|pi> [--hook] [--force]",
|
|
41732
|
+
purpose: "Install skills for your signed-in account\u2019s granted tools and an optional Claude Code session hook.",
|
|
41733
|
+
flags: ["--host <claude|codex|opencode|pi> (required)", "--hook (default false; Claude Code only)", "--force (default false; explicitly replace an edited skill)"],
|
|
41734
|
+
example: "artium-axi setup --host claude --hook"
|
|
41735
|
+
},
|
|
41736
|
+
tools: { usage: "artium-axi tools", purpose: "List available tools with their status and pinned version.", flags: [], example: "artium-axi tools" },
|
|
41737
|
+
"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" },
|
|
41738
|
+
whoami: { usage: "artium-axi whoami", purpose: "Show your identity, roles, session expiry and server.", flags: [], example: "artium-axi whoami" },
|
|
41739
|
+
login: {
|
|
41740
|
+
usage: "artium-axi login --sso | --username <username> [--password-stdin]",
|
|
41741
|
+
purpose: "Sign in through browser SSO (8-hour session) or with a local account.",
|
|
41742
|
+
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)"],
|
|
41743
|
+
example: "artium-axi login --sso"
|
|
41744
|
+
},
|
|
41745
|
+
passwd: {
|
|
41746
|
+
usage: "artium-axi passwd [--password-stdin]",
|
|
41747
|
+
purpose: "Change your password, then sign in again.",
|
|
41748
|
+
flags: ["--password-stdin (default false; otherwise a terminal prompt; current password uses ARTIUM_AXI_CURRENT_PASSWORD or a terminal prompt)"],
|
|
41749
|
+
example: "artium-axi passwd --password-stdin"
|
|
41750
|
+
},
|
|
41751
|
+
logout: { usage: "artium-axi logout", purpose: "Remove local tokens and revoke the server session.", flags: [], example: "artium-axi logout" },
|
|
41752
|
+
doctor: { usage: "artium-axi doctor", purpose: "Check the server, certificate, token, CLI version and cached tool health.", flags: [], example: "artium-axi doctor" },
|
|
41753
|
+
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" },
|
|
41754
|
+
"falcon-axi": {
|
|
41755
|
+
usage: "artium-axi falcon-axi [<args>]",
|
|
41756
|
+
purpose: "Run Falcon commands with your managed credentials.",
|
|
41757
|
+
flags: ["Arguments after falcon-axi are forwarded upstream, including --help."],
|
|
41758
|
+
example: `artium-axi falcon-axi ${falcon_axi_default.discovery.example.join(" ")}`
|
|
41759
|
+
},
|
|
41760
|
+
"vectra-axi": {
|
|
41761
|
+
usage: "artium-axi vectra-axi [<args>]",
|
|
41762
|
+
purpose: "Run Vectra commands with your managed credentials.",
|
|
41763
|
+
flags: ["Arguments after vectra-axi are forwarded upstream, including --help."],
|
|
41764
|
+
example: `artium-axi vectra-axi ${vectra_axi_default.discovery.example.join(" ")}`
|
|
41765
|
+
},
|
|
41766
|
+
"ldap-axi": {
|
|
41767
|
+
usage: "artium-axi ldap-axi [<args>]",
|
|
41768
|
+
purpose: "Read directory data with the managed LDAP bind identity.",
|
|
41769
|
+
flags: ["Arguments after ldap-axi are forwarded upstream, including --help."],
|
|
41770
|
+
example: `artium-axi ldap-axi ${ldap_axi_default.discovery.example.join(" ")}`
|
|
41771
|
+
},
|
|
41772
|
+
"ado-axi": {
|
|
41773
|
+
usage: "artium-axi ado-axi [<args>]",
|
|
41774
|
+
purpose: "Run Azure DevOps commands with managed credentials.",
|
|
41775
|
+
flags: ["Arguments after ado-axi include --help. Organization and credentials are managed by Artium; api is GET only; writes are off by default."],
|
|
41776
|
+
example: "artium-axi ado-axi project list --limit 1"
|
|
41777
|
+
},
|
|
41778
|
+
"awx-axi": {
|
|
41779
|
+
usage: "artium-axi awx-axi [<args>]",
|
|
41780
|
+
purpose: "Inspect AWX automation with managed credentials.",
|
|
41781
|
+
flags: ["Arguments after awx-axi include --help. Operational writes are off by default; configuration, deletion and security writes are blocked."],
|
|
41782
|
+
example: "artium-axi awx-axi job list --limit 1"
|
|
41783
|
+
},
|
|
41784
|
+
"tenable-axi": {
|
|
41785
|
+
usage: "artium-axi tenable-axi [<args>]",
|
|
41786
|
+
purpose: "Investigate Tenable One with managed API keys.",
|
|
41787
|
+
flags: ["Writes and export jobs are off by default and require administrator-enabled operations, preview, --execute and exact --confirm. Downloads are blocked."],
|
|
41788
|
+
example: "artium-axi tenable-axi card list --limit 1"
|
|
41789
|
+
},
|
|
41790
|
+
"az-axi": {
|
|
41791
|
+
usage: "artium-axi az-axi [<args>]",
|
|
41792
|
+
purpose: "Run Azure commands with your managed identity.",
|
|
41793
|
+
flags: ["Arguments after az-axi are forwarded upstream, including --help."],
|
|
41794
|
+
example: "artium-axi az-axi sub list"
|
|
41795
|
+
},
|
|
41796
|
+
"mg-axi": {
|
|
41797
|
+
usage: "artium-axi mg-axi [<args>]",
|
|
41798
|
+
purpose: "Run Microsoft Graph commands with your managed identity.",
|
|
41799
|
+
flags: ["Arguments after mg-axi are forwarded upstream, including --help."],
|
|
41800
|
+
example: "artium-axi mg-axi entra user list"
|
|
41801
|
+
},
|
|
41802
|
+
"managed-session": {
|
|
41803
|
+
usage: "artium-axi --managed-session <command> [<args>]",
|
|
41804
|
+
purpose: "Let a caller supply and persist sessions through private pipes.",
|
|
41805
|
+
flags: [],
|
|
41806
|
+
example: "artium-axi --managed-session whoami"
|
|
41807
|
+
}
|
|
41808
|
+
};
|
|
41809
|
+
function commandHelp(command) {
|
|
41810
|
+
const entry = commands[command];
|
|
41811
|
+
const flags = [
|
|
41812
|
+
toolSchema.safeParse(command).success ? "--help before the tool name (default false)" : "--help (default false)",
|
|
41813
|
+
...entry.flags,
|
|
41814
|
+
...command === "update" ? [] : ["--managed-session before the command (default false; caller-owned sessions; see artium-axi --managed-session --help)"]
|
|
41815
|
+
];
|
|
41816
|
+
const protocol = [
|
|
41817
|
+
"Session JSON on inherited pipe fd 3, new sessions and rotations as JSON lines on private pipe fd 4; no session file.",
|
|
41818
|
+
"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.",
|
|
41819
|
+
"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.",
|
|
41820
|
+
"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."
|
|
41821
|
+
];
|
|
41822
|
+
const purposes = command === "home" ? `commands[${Object.keys(commands).length - 2}]{command,purpose}:
|
|
41823
|
+
${Object.entries(commands).filter(([name]) => name !== "home" && name !== "managed-session").map(([name, value]) => ` ${name},${JSON.stringify(value.purpose)}`).join("\n")}
|
|
41824
|
+
` : "";
|
|
41825
|
+
return `purpose: ${entry.purpose}
|
|
41826
|
+
usage: ${entry.usage}
|
|
41827
|
+
${purposes}flags[${flags.length}]:
|
|
41828
|
+
${flags.map((flag) => ` - ${JSON.stringify(flag)}`).join("\n")}
|
|
41829
|
+
example: ${entry.example}
|
|
41830
|
+
` + (command === "login" || command === "managed-session" ? `managedSession[${protocol.length}]:
|
|
41831
|
+
${protocol.map((line) => ` - ${JSON.stringify(line)}`).join("\n")}
|
|
41832
|
+
` : "");
|
|
41833
|
+
}
|
|
41834
|
+
function validateArguments(args, prefixHelp) {
|
|
41835
|
+
const command = args[0];
|
|
41836
|
+
if (command === "tools") args = [...args.filter((arg) => arg !== "--help"), ...args.filter((arg) => arg === "--help")];
|
|
41837
|
+
const rootFlags = "--help, --version, --managed-session (before the command)";
|
|
41838
|
+
const rootCommands = Object.keys(commands).filter((name) => name !== "home" && name !== "managed-session" && name !== "tools show").join(", ");
|
|
41839
|
+
function fail(token, level2, choices2) {
|
|
41840
|
+
const kind = token?.startsWith("-") ? "flag" : "argument";
|
|
41841
|
+
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}.`;
|
|
41842
|
+
throw new ArtiumError("INVALID_INPUT", message, choices2);
|
|
41843
|
+
}
|
|
41844
|
+
if (!command) return;
|
|
41845
|
+
if (command === "--version" && args.length === 1) return;
|
|
41846
|
+
if (!Object.hasOwn(commands, command) || command === "home" || command === "managed-session" || command === "tools show") {
|
|
41847
|
+
fail(command, "artium-axi", `Valid commands: ${rootCommands}. Valid flags: ${rootFlags}.`);
|
|
41848
|
+
}
|
|
41849
|
+
if (toolSchema.safeParse(command).success) {
|
|
41850
|
+
if (prefixHelp && args.length > 1) fail(args[1], command, `Use artium-axi --help ${command} for local help; artium-axi ${command} --help for upstream flags.`);
|
|
41851
|
+
return;
|
|
41852
|
+
}
|
|
41853
|
+
let level = command;
|
|
41854
|
+
let start = 1;
|
|
41855
|
+
if (command === "tools" && args[1] === "show") {
|
|
41856
|
+
level = "tools show";
|
|
41857
|
+
start = 2;
|
|
41858
|
+
}
|
|
41859
|
+
const entry = commands[level];
|
|
41860
|
+
const validFlags = ["--help", ...entry.flags.map((flag) => flag.split(" ")[0])];
|
|
41861
|
+
const choices = `Valid flags for ${level}: ${validFlags.join(", ")}.` + (level === "tools" ? " Valid subcommands: show <tool>." : level === "tools show" ? ` Valid tools: ${toolSchema.options.join(", ")}.` : "");
|
|
41862
|
+
let tool = false;
|
|
41863
|
+
const seen = /* @__PURE__ */ new Set();
|
|
41864
|
+
for (let index = start; index < args.length; index++) {
|
|
41865
|
+
const token = args[index];
|
|
41866
|
+
if (level === "tools show" && !token.startsWith("-") && !tool) {
|
|
41867
|
+
if (!toolSchema.safeParse(token).success) fail(token, level, choices);
|
|
41868
|
+
tool = true;
|
|
41869
|
+
} else {
|
|
41870
|
+
if (!validFlags.includes(token) || seen.has(token)) fail(token, level, choices);
|
|
41871
|
+
seen.add(token);
|
|
41872
|
+
if (token === "--username" || token === "--host") {
|
|
41873
|
+
const value = args[index + 1];
|
|
41874
|
+
if (!value) fail(value, `${level} ${token}`, `Supply ${token} ${token === "--host" ? "<claude|codex|opencode|pi>" : "<username>"}. ${choices}`);
|
|
41875
|
+
if (token === "--host" && !["claude", "codex", "opencode", "pi"].includes(value)) fail(value, `${level} --host`, `Valid hosts: claude, codex, opencode, pi. Use ${entry.usage}.`);
|
|
41876
|
+
index++;
|
|
41877
|
+
}
|
|
41878
|
+
}
|
|
41879
|
+
}
|
|
41880
|
+
if (level === "tools show" && !tool && !seen.has("--help") && !prefixHelp) fail(void 0, level, choices);
|
|
41881
|
+
}
|
|
41882
|
+
function helpCommand(args, prefixHelp = false) {
|
|
41883
|
+
if (args[0] === "setup" && args.includes("--help")) {
|
|
41884
|
+
const path2 = args.filter((arg) => arg !== "--help");
|
|
41885
|
+
for (let index = 1; index < path2.length; index++) {
|
|
41886
|
+
if (path2[index] === "--host" && ["claude", "codex", "opencode", "pi"].includes(path2[index + 1])) index++;
|
|
41887
|
+
else if (path2[index] !== "--hook" && path2[index] !== "--force") return void 0;
|
|
41888
|
+
}
|
|
41889
|
+
return "setup";
|
|
41890
|
+
}
|
|
41891
|
+
if (toolSchema.safeParse(args[0]).success) return prefixHelp && args.length === 2 ? args[0] : void 0;
|
|
41892
|
+
if (args[0] === "login" || args[0] === "passwd") {
|
|
41893
|
+
if (args[0] === "login" && args.length === 3 && args.includes("--sso") && args.includes("--help")) return "login";
|
|
41894
|
+
let requested = false;
|
|
41895
|
+
let username = false;
|
|
41896
|
+
let stdin = false;
|
|
41897
|
+
for (let index = 1; index < args.length; index++) {
|
|
41898
|
+
const option = args[index];
|
|
41899
|
+
if (option === "--username" && args[0] === "login" && !username && args[index + 1] !== void 0) {
|
|
41900
|
+
username = true;
|
|
41901
|
+
index++;
|
|
41902
|
+
} else if (option === "--password-stdin" && !stdin) stdin = true;
|
|
41903
|
+
else if (option === "--help" && !requested) requested = true;
|
|
41904
|
+
else return void 0;
|
|
41905
|
+
}
|
|
41906
|
+
return requested ? args[0] : void 0;
|
|
41907
|
+
}
|
|
41908
|
+
if (!args.includes("--help")) return void 0;
|
|
41909
|
+
const path = args.filter((arg) => arg !== "--help");
|
|
41910
|
+
if (path.length === 0) return "home";
|
|
41911
|
+
if (path[0] === "tools" && path[1] === "show" && (path.length === 2 || path.length === 3 && toolSchema.safeParse(path[2]).success)) return "tools show";
|
|
41912
|
+
if (path.length === 1 && path[0] !== "home" && Object.hasOwn(commands, path[0])) return path[0];
|
|
41913
|
+
return void 0;
|
|
41914
|
+
}
|
|
41915
|
+
|
|
40351
41916
|
// src/cli/setup.ts
|
|
40352
41917
|
import { createHash, randomUUID as randomUUID2 } from "node:crypto";
|
|
40353
41918
|
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";
|
|
40354
41919
|
import { homedir as homedir2 } from "node:os";
|
|
40355
|
-
import { dirname as dirname2, join as join2, resolve } from "node:path";
|
|
41920
|
+
import { dirname as dirname2, join as join2, resolve as resolve2 } from "node:path";
|
|
40356
41921
|
|
|
40357
41922
|
// skill/artium-axi/SKILL.md
|
|
40358
41923
|
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";
|
|
@@ -40451,7 +42016,7 @@ async function setup(args) {
|
|
|
40451
42016
|
if (hook && host !== "claude") {
|
|
40452
42017
|
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.`);
|
|
40453
42018
|
}
|
|
40454
|
-
const executable =
|
|
42019
|
+
const executable = resolve2(process.argv[1]);
|
|
40455
42020
|
const invocation = process.platform === "win32" ? `& '${process.execPath.replaceAll("'", "''")}' '${executable.replaceAll("'", "''")}'` : `${quote(process.execPath)} ${quote(executable)}`;
|
|
40456
42021
|
const executableBlock = `<!-- artium-axi executable -->
|
|
40457
42022
|
|
|
@@ -40461,7 +42026,7 @@ ${invocation}
|
|
|
40461
42026
|
|
|
40462
42027
|
<!-- /artium-axi executable -->`;
|
|
40463
42028
|
const content = SKILL_default.replace(/<!-- artium-axi executable -->[\s\S]*?<!-- \/artium-axi executable -->/, () => executableBlock);
|
|
40464
|
-
const hostDirectory = host === "claude" && process.env.CLAUDE_CONFIG_DIR ?
|
|
42029
|
+
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]);
|
|
40465
42030
|
const client = new Client();
|
|
40466
42031
|
const response = skillsResponseSchema.safeParse(await client.authenticated("/v1/skills", "GET"));
|
|
40467
42032
|
if (!response.success) throw new ArtiumError("INVALID_RESPONSE");
|
|
@@ -40580,6 +42145,7 @@ expires: ${new Date(device.expiresAt).toISOString()}
|
|
|
40580
42145
|
if (managed2) await managed2.emit(client.serverUrl, session);
|
|
40581
42146
|
else await client.sessions.locked(async () => {
|
|
40582
42147
|
client.sessions.write(session);
|
|
42148
|
+
client.sessions.writeClientConfig(client.caFile);
|
|
40583
42149
|
});
|
|
40584
42150
|
const message = `status: authenticated
|
|
40585
42151
|
session-ends: ${new Date(session.familyExpiresAt).toISOString()}
|
|
@@ -40734,9 +42300,9 @@ var ManagedSession = class _ManagedSession {
|
|
|
40734
42300
|
if (session.status === "authenticated") this.protect(session.accessToken, session.refreshToken);
|
|
40735
42301
|
else this.protect(session.passwordChangeToken);
|
|
40736
42302
|
try {
|
|
40737
|
-
await new Promise((
|
|
42303
|
+
await new Promise((resolve4, reject) => {
|
|
40738
42304
|
this.channel.write(`${JSON.stringify({ serverUrl, ...session })}
|
|
40739
|
-
`, (error62) => error62 ? reject(error62) :
|
|
42305
|
+
`, (error62) => error62 ? reject(error62) : resolve4());
|
|
40740
42306
|
});
|
|
40741
42307
|
} catch {
|
|
40742
42308
|
throw new ArtiumError(
|
|
@@ -40760,9 +42326,45 @@ var ManagedSession = class _ManagedSession {
|
|
|
40760
42326
|
}
|
|
40761
42327
|
};
|
|
40762
42328
|
|
|
42329
|
+
// src/cli/update.ts
|
|
42330
|
+
import { createHash as createHash2, randomUUID as randomUUID3 } from "node:crypto";
|
|
42331
|
+
import { copyFileSync, existsSync as existsSync3, readFileSync as readFileSync4, realpathSync, renameSync as renameSync3, rmSync as rmSync3, statSync as statSync3, writeFileSync as writeFileSync3 } from "node:fs";
|
|
42332
|
+
import { dirname as dirname3, join as join3 } from "node:path";
|
|
42333
|
+
async function update() {
|
|
42334
|
+
const executable = realpathSync(process.argv[1]);
|
|
42335
|
+
const metadata = join3(dirname3(executable), "..", "package.json");
|
|
42336
|
+
if (existsSync3(metadata) && JSON.parse(readFileSync4(metadata, "utf8")).name === "@knowttl/artium-axi") {
|
|
42337
|
+
throw new ArtiumError("INVALID_INPUT", "This client was installed from npm.", "Run npm install -g @knowttl/artium-axi@latest.");
|
|
42338
|
+
}
|
|
42339
|
+
const client = new Client();
|
|
42340
|
+
const bundle = await client.request("/cli/artium-axi.mjs", "GET", void 0, void 0, true);
|
|
42341
|
+
const checksum2 = await client.request("/cli/artium-axi.mjs.sha256", "GET", void 0, void 0, true);
|
|
42342
|
+
const digest = checksum2.toString("utf8").trim().split(/\s+/)[0];
|
|
42343
|
+
if (!/^[a-fA-F0-9]{64}$/.test(digest) || createHash2("sha256").update(bundle).digest("hex") !== digest.toLowerCase()) {
|
|
42344
|
+
throw new ArtiumError("INVALID_RESPONSE", "The downloaded client failed SHA-256 verification.", "Run artium-axi update again after checking the server bundle and checksum.");
|
|
42345
|
+
}
|
|
42346
|
+
const temporary = `${executable}.${randomUUID3()}.tmp`;
|
|
42347
|
+
try {
|
|
42348
|
+
writeFileSync3(temporary, bundle, { flag: "wx", mode: statSync3(executable).mode & 511 });
|
|
42349
|
+
copyFileSync(executable, `${executable}.bak`);
|
|
42350
|
+
renameSync3(temporary, executable);
|
|
42351
|
+
} catch {
|
|
42352
|
+
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.");
|
|
42353
|
+
} finally {
|
|
42354
|
+
rmSync3(temporary, { force: true });
|
|
42355
|
+
}
|
|
42356
|
+
return "status: updated\nnext: artium-axi --version\n";
|
|
42357
|
+
}
|
|
42358
|
+
|
|
40763
42359
|
// src/cli/main.ts
|
|
40764
42360
|
var managed;
|
|
42361
|
+
for (const stream of [process.stdout, process.stderr]) {
|
|
42362
|
+
stream.on("error", (error62) => {
|
|
42363
|
+
if (error62.code !== "EPIPE") throw error62;
|
|
42364
|
+
});
|
|
42365
|
+
}
|
|
40765
42366
|
function output2(stream, text2) {
|
|
42367
|
+
if (process[stream].destroyed) return;
|
|
40766
42368
|
if (managed) managed.write(stream, text2);
|
|
40767
42369
|
else process[stream].write(text2);
|
|
40768
42370
|
}
|
|
@@ -40790,7 +42392,7 @@ async function main(args) {
|
|
|
40790
42392
|
return;
|
|
40791
42393
|
}
|
|
40792
42394
|
if (managedMode) {
|
|
40793
|
-
if (["passwd", "logout", "setup"].includes(args[0])) {
|
|
42395
|
+
if (["passwd", "logout", "setup", "update"].includes(args[0])) {
|
|
40794
42396
|
throw new ArtiumError(
|
|
40795
42397
|
"INVALID_INPUT",
|
|
40796
42398
|
"This command is unavailable in managed session mode.",
|
|
@@ -40799,6 +42401,10 @@ async function main(args) {
|
|
|
40799
42401
|
}
|
|
40800
42402
|
managed = await ManagedSession.read(args[0] === "login");
|
|
40801
42403
|
}
|
|
42404
|
+
if (command === "update") {
|
|
42405
|
+
output2("stdout", await update());
|
|
42406
|
+
return;
|
|
42407
|
+
}
|
|
40802
42408
|
if (command === "setup") {
|
|
40803
42409
|
output2("stdout", await setup(args.slice(1)));
|
|
40804
42410
|
return;
|
|
@@ -40853,7 +42459,10 @@ async function main(args) {
|
|
|
40853
42459
|
const parsed = loginResponseSchema.safeParse(await client2.request("/v1/auth/login", "POST", { username, password }));
|
|
40854
42460
|
if (!parsed.success) throw new ArtiumError("INVALID_RESPONSE");
|
|
40855
42461
|
if (managed) await managed.emit(client2.serverUrl, parsed.data);
|
|
40856
|
-
else
|
|
42462
|
+
else {
|
|
42463
|
+
client2.sessions.write(parsed.data);
|
|
42464
|
+
client2.sessions.writeClientConfig(client2.caFile);
|
|
42465
|
+
}
|
|
40857
42466
|
return parsed.data;
|
|
40858
42467
|
};
|
|
40859
42468
|
const session = await (managed ? signIn() : client2.sessions.locked(signIn));
|
|
@@ -40915,7 +42524,7 @@ remoteRevocation: ${verified ? "verified" : "unverified"}
|
|
|
40915
42524
|
if (home) {
|
|
40916
42525
|
const tools = toolsResponseSchema.safeParse(await client.authenticated("/v1/tools", "GET", void 0, homeSession));
|
|
40917
42526
|
if (!tools.success) throw new ArtiumError("INVALID_RESPONSE");
|
|
40918
|
-
const executable =
|
|
42527
|
+
const executable = resolve3(process.argv[1]);
|
|
40919
42528
|
const local = relative(homedir3(), executable);
|
|
40920
42529
|
const bin = local && !isAbsolute(local) && !local.startsWith(`..${sep}`) && local !== ".." ? `~${sep}${local}` : executable;
|
|
40921
42530
|
view = `bin: ${JSON.stringify(bin)}
|
|
@@ -40949,11 +42558,11 @@ ${Object.entries(response.error).map(([key, value]) => ` ${key}: ${JSON.stringi
|
|
|
40949
42558
|
`);
|
|
40950
42559
|
process.exitCode = errors[response.error.code].exitCode;
|
|
40951
42560
|
}
|
|
40952
|
-
main(process.argv.slice(2)).catch((error62) => printError(errorResponse(error62 instanceof ArtiumError ? error62 : new ArtiumError("INTERNAL_ERROR"),
|
|
42561
|
+
main(process.argv.slice(2)).catch((error62) => printError(errorResponse(error62 instanceof ArtiumError ? error62 : new ArtiumError("INTERNAL_ERROR"), randomUUID4()))).then(() => {
|
|
40953
42562
|
try {
|
|
40954
42563
|
managed?.flush();
|
|
40955
42564
|
} catch {
|
|
40956
42565
|
managed = void 0;
|
|
40957
|
-
printError(errorResponse(new ArtiumError("SECRET_IN_OUTPUT"),
|
|
42566
|
+
printError(errorResponse(new ArtiumError("SECRET_IN_OUTPUT"), randomUUID4()));
|
|
40958
42567
|
}
|
|
40959
42568
|
});
|