@knowttl/artium-axi 0.0.19 → 0.0.21
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 +15 -2
- package/bin/artium-axi.mjs +713 -56
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -46,6 +46,7 @@ Agents keep a command-line interface with TOON discovery rather than implementin
|
|
|
46
46
|
| AWX | Pasted token or one-time password sign-in; optional operational writes |
|
|
47
47
|
| Tenable One | Access and secret API keys; optional allow-listed business writes and export jobs |
|
|
48
48
|
| Hybrid Analysis | Managed API key; investigation reads and optional allow-listed submissions, YARA mutations and consuming matches |
|
|
49
|
+
| Check Point Email Security | Regional client credentials; email, event, task and exception reads, guarded writes and authenticated email/attachment saving |
|
|
49
50
|
|
|
50
51
|
[Package pins](tools/package.json) and the [Falcon source pin](tools/falcon-source.json) own bundled versions; [reviewed inventories](tools/inventories) define the supported command boundary.
|
|
51
52
|
|
|
@@ -169,10 +170,20 @@ Administrators can opt in to the single read-only `security hunting query` comma
|
|
|
169
170
|
Hunting accepts exactly one UTF-8 plain-text upload named `query.kql`, at most 64 KiB, through `artium-axi mg-axi security hunting query --file query.kql`.
|
|
170
171
|
See [client input handling](docs/client-reference.md#command-surface-and-subcommands) for local file paths and upload restrictions.
|
|
171
172
|
Queries must use the upstream restricted read-only KQL subset.
|
|
173
|
+
Hunting parses KQL before the read-only allowlist and upstream authentication; syntax errors return positioned diagnostics without query excerpts or quoted literals.
|
|
174
|
+
Parsing does not check tables, columns, types or permissions; recognized Graph 400 errors expose only the error class and line/column, while unknown error shapes remain opaque.
|
|
172
175
|
The existing mg-axi role grant is required; other security commands remain unavailable.
|
|
173
176
|
See [Graph credential setup](docs/tool-credentials.md#microsoft-graph) for hunting permissions and consent; tenant acceptance remains unverified.
|
|
174
177
|
|
|
178
|
+
Azure Resource Graph and Log Analytics queries parse KQL before upstream authentication or requests, returning positioned syntax diagnostics and query excerpts on failure.
|
|
179
|
+
Successful parsing does not validate tables, columns, functions, permissions or service-specific restrictions.
|
|
180
|
+
|
|
175
181
|
Falcon investigation reads include detection lineage, process details and trees, existing sandbox reports, FileVantage changes and device-control policy details.
|
|
182
|
+
NG-SIEM `search start` checks CQL structure before upstream authentication, reporting code, line, column and token class without echoing query text; function names, fields and semantics remain unchecked, and ambiguous syntax passes.
|
|
183
|
+
Rejected searches preserve redacted server diagnostics, completed searches include server warnings when present, and `search start --wait` advises when the normalized filter differs.
|
|
184
|
+
|
|
185
|
+
Vectra `host show` and `entity show --type host`, plus the matching raw host reads, retain every returned API field under `host`, separate from CLI metadata.
|
|
186
|
+
Use `--full` on host/entity detail commands for complete returned text; secret redaction still applies, and upstream omissions cannot be restored.
|
|
176
187
|
|
|
177
188
|
Vectra supports selected QUX/RUX writes for detection close/open and mark-fixed, host/account close, key assets, tags, notes (including bulk notes), assignments and outcomes, triage labels and rules, groups and membership, proxies, threat feeds, internal-network settings, syslog/Kafka, notification destinations and Match, subject to deployment support in the [reviewed inventory](tools/inventories/vectra-axi.json).
|
|
178
189
|
User, role, API-client and credential administration remains blocked.
|
|
@@ -189,6 +200,7 @@ See [client input handling](docs/client-reference.md#command-surface-and-subcomm
|
|
|
189
200
|
| Azure DevOps | Reviewed mutations with administrator `allowWrites: true`; raw `api` remains GET-only. |
|
|
190
201
|
| AWX | Launch/cancel/relaunch, workflow approval/denial, project/inventory-source sync and notification tests with `allowWrites: true` and upstream `--confirm`; configuration, deletion and security writes stay blocked. |
|
|
191
202
|
| Tenable One | Business writes and export-job creation with administrator `writes.allowWrites: true`, an explicit operations allow-list, native preview, `--execute`, exact `--confirm` and durable journaling; downloads and local configuration stay blocked. |
|
|
203
|
+
| Check Point Email Security | Email and exception writes require administrator `writes.allowWrites: true`, exact selected operations and native preview, execute, confirmation and journal gates. Name-only event actions require their exact `event.action.<name>` scope. The six malware/URL/DLP remove/clear operations and click-time clear remain refused. Three separately selected downloads use [authenticated CLI saving](docs/client-reference.md#check-point-email-and-attachment-saving) with host-owned confirmation and independent SHA-256 verification; native download journal fields remain empty. Ordinary tool-run downloads and credential/origin overrides stay blocked. Live API contracts remain uncommissioned. |
|
|
192
204
|
| Hybrid Analysis | Sandbox submissions, YARA create/update/delete, consuming hunting matches and the four reviewed archive downloads require administrator `writes.allowWrites: true`, independently selected operations, native preview, `--execute`, exact `--confirm` and durable journaling. Downloads are limited to `hash-download-bin`, `report-download-bin`, `report-download-dropped-files` and `report-download-memory`, through the [authenticated CLI verified-save path](docs/client-reference.md#hybrid-analysis-archive-saving) after the [operator prerequisites](docs/runbook.md#scope-and-prerequisites) pass. All operations default off; enabling other writes never enables downloads or grants upstream entitlement. The browser provides warnings, command guidance and metadata/save status only. Ordinary tool-run downloads, local configuration and credential/origin overrides are blocked. |
|
|
193
205
|
|
|
194
206
|
Hybrid Analysis quick scans transmit the supplied sample or URL as read exceptions without a write gate; sandbox submission previews disclose that samples and reports can become visible to the community.
|
|
@@ -211,6 +223,7 @@ After an unknown write outcome, inspect state using returned guidance before ret
|
|
|
211
223
|
| AWX job list | Token identity with job read access |
|
|
212
224
|
| Tenable One card list | See [Tenable One credential permissions](docs/tool-credentials.md#tenable-one). |
|
|
213
225
|
| Hybrid Analysis quota | A valid API key; resource permissions vary by key level. See [Hybrid Analysis setup](docs/tool-credentials.md#hybrid-analysis). |
|
|
226
|
+
| Check Point doctor | Regional authentication and one bounded email search. See [Check Point setup and commissioning](docs/tool-credentials.md#check-point-email-security). |
|
|
214
227
|
|
|
215
228
|
See [tool credentials](docs/tool-credentials.md) for dedicated identities, permissions and safe credential entry.
|
|
216
229
|
Artium stores shared service credentials encrypted with AES-256-GCM and never returns saved secrets to clients.
|
|
@@ -251,9 +264,9 @@ This summary follows the [CLI help registry](src/cli/help.ts); `artium-axi --hel
|
|
|
251
264
|
| `tools` / `tools show <tool>` | Granted enabled tools / pinned help and first call |
|
|
252
265
|
| `doctor` | Server, TLS, token, version and cached health; five-second request deadlines |
|
|
253
266
|
| `update` | Update the [server-downloaded client](#verified-client) |
|
|
254
|
-
| `download` | Preview and explicitly verify/save administrator-selected Hybrid Analysis archives through the local CLI. Run `artium-axi download --help` for guards and warnings. |
|
|
267
|
+
| `download` | Preview and explicitly verify/save administrator-selected Hybrid Analysis archives and Check Point emails/attachments through the local CLI. Run `artium-axi download --help` for guards and warnings. |
|
|
255
268
|
| `setup --host <host>` | Install managed skills and optional Claude hook |
|
|
256
|
-
| `<tool> <args>` | Run any of the
|
|
269
|
+
| `<tool> <args>` | Run any of the ten managed tools above |
|
|
257
270
|
| `--managed-session --help` | Private-pipe session protocol |
|
|
258
271
|
|
|
259
272
|
`artium-axi --help falcon-axi` is local help; `artium-axi falcon-axi --help` authenticates and calls upstream.
|
package/bin/artium-axi.mjs
CHANGED
|
@@ -19801,8 +19801,14 @@ var transferSelectionSchema = external_exports.discriminatedUnion("operation", [
|
|
|
19801
19801
|
external_exports.strictObject({ operation: external_exports.literal("hash-download-bin"), selector: sampleSha256Schema, type: external_exports.literal("bin") }),
|
|
19802
19802
|
external_exports.strictObject({ operation: external_exports.literal("report-download-bin"), selector: reportIdSchema, type: external_exports.literal("bin") }),
|
|
19803
19803
|
external_exports.strictObject({ operation: external_exports.literal("report-download-dropped-files"), selector: reportIdSchema, type: external_exports.literal("dropped-files") }),
|
|
19804
|
-
external_exports.strictObject({ operation: external_exports.literal("report-download-memory"), selector: reportIdSchema, type: external_exports.literal("memory") })
|
|
19804
|
+
external_exports.strictObject({ operation: external_exports.literal("report-download-memory"), selector: reportIdSchema, type: external_exports.literal("memory") }),
|
|
19805
|
+
external_exports.strictObject({ operation: external_exports.literal("email.download"), selector: transferOwnerIdSchema, type: external_exports.enum(["email", "original"]) }),
|
|
19806
|
+
external_exports.strictObject({ operation: external_exports.literal("attachment.download"), selector: external_exports.string().regex(/^[A-Za-z0-9_-]{1,256}\/[A-Za-z0-9_-]{1,256}$/), type: external_exports.literal("attachment") }),
|
|
19807
|
+
external_exports.strictObject({ operation: external_exports.literal("attachment.download-all"), selector: transferOwnerIdSchema, type: external_exports.literal("zip") })
|
|
19805
19808
|
]);
|
|
19809
|
+
function transferTool(operation) {
|
|
19810
|
+
return ["email.download", "attachment.download", "attachment.download-all"].includes(operation) ? "checkpoint-axi" : "hybrid-axi";
|
|
19811
|
+
}
|
|
19806
19812
|
var transferPrepareSchema = external_exports.strictObject({ selection: transferSelectionSchema, targetDigest: sha256Schema });
|
|
19807
19813
|
var transferIdSchema = external_exports.uuid();
|
|
19808
19814
|
var transferScopeSchema = external_exports.strictObject({
|
|
@@ -19865,12 +19871,18 @@ var transferRoutes = {
|
|
|
19865
19871
|
cancel: { method: "POST", path: "/v1/transfers/hybrid/cancel", input: transferRetrieveSchema },
|
|
19866
19872
|
status: { method: "POST", path: "/v1/transfers/hybrid/status", input: transferRetrieveSchema, response: transferStatusSchema }
|
|
19867
19873
|
};
|
|
19874
|
+
function transferRoutesFor(tool) {
|
|
19875
|
+
return Object.fromEntries(Object.entries(transferRoutes).map(([name, route]) => [
|
|
19876
|
+
name,
|
|
19877
|
+
{ ...route, path: route.path.replace("/hybrid/", tool === "checkpoint-axi" ? "/checkpoint/" : "/hybrid/") }
|
|
19878
|
+
]));
|
|
19879
|
+
}
|
|
19868
19880
|
var transferAuditSchema = external_exports.strictObject({
|
|
19869
19881
|
transfer_id: transferIdSchema,
|
|
19870
19882
|
session_family_id: transferOwnerIdSchema,
|
|
19871
|
-
transfer_operation:
|
|
19872
|
-
artifact_type: external_exports.enum(["bin", "dropped-files", "memory"]),
|
|
19873
|
-
artifact_selector:
|
|
19883
|
+
transfer_operation: external_exports.enum(transferSelectionSchema.options.map((option) => option.shape.operation.value)),
|
|
19884
|
+
artifact_type: external_exports.enum(["bin", "dropped-files", "memory", "email", "original", "attachment", "zip"]),
|
|
19885
|
+
artifact_selector: external_exports.string().min(1).max(513),
|
|
19874
19886
|
requested_target_digest: sha256Schema,
|
|
19875
19887
|
archive_bytes: external_exports.number().int().nonnegative().max(transferLimits.artifactBytes).nullable(),
|
|
19876
19888
|
archive_sha256: sha256Schema.nullable(),
|
|
@@ -19928,7 +19940,7 @@ var meResponseSchema = external_exports.strictObject({
|
|
|
19928
19940
|
sessionExpiresAt: external_exports.number().int()
|
|
19929
19941
|
});
|
|
19930
19942
|
var accountId = external_exports.string().min(1);
|
|
19931
|
-
var toolSchema = external_exports.enum(["falcon-axi", "vectra-axi", "az-axi", "mg-axi", "ldap-axi", "ado-axi", "awx-axi", "tenable-axi", "hybrid-axi"]);
|
|
19943
|
+
var toolSchema = external_exports.enum(["falcon-axi", "vectra-axi", "az-axi", "mg-axi", "ldap-axi", "ado-axi", "awx-axi", "tenable-axi", "hybrid-axi", "checkpoint-axi"]);
|
|
19932
19944
|
var skillsResponseSchema = external_exports.strictObject({ skills: external_exports.array(external_exports.strictObject({
|
|
19933
19945
|
name: toolSchema,
|
|
19934
19946
|
content: external_exports.string().min(1)
|
|
@@ -20180,6 +20192,10 @@ var falconRtrSettingsSchema = external_exports.strictObject({
|
|
|
20180
20192
|
])).optional()
|
|
20181
20193
|
});
|
|
20182
20194
|
var nativeSettingsSchemas = {
|
|
20195
|
+
"checkpoint-axi": external_exports.strictObject({ writes: external_exports.strictObject({
|
|
20196
|
+
allowWrites: external_exports.boolean(),
|
|
20197
|
+
operations: external_exports.array(external_exports.string().regex(/^[a-z][A-Za-z0-9_.-]{0,255}$/)).min(1).max(126)
|
|
20198
|
+
}).optional() }),
|
|
20183
20199
|
"hybrid-axi": external_exports.strictObject({ writes: external_exports.strictObject({
|
|
20184
20200
|
allowWrites: external_exports.boolean(),
|
|
20185
20201
|
operations: external_exports.array(external_exports.string())
|
|
@@ -20748,7 +20764,7 @@ import { resolve } from "node:path";
|
|
|
20748
20764
|
// package.json
|
|
20749
20765
|
var package_default = {
|
|
20750
20766
|
name: "artium-axi",
|
|
20751
|
-
version: "0.0.
|
|
20767
|
+
version: "0.0.21",
|
|
20752
20768
|
private: true,
|
|
20753
20769
|
license: "MIT",
|
|
20754
20770
|
type: "module",
|
|
@@ -21236,17 +21252,18 @@ var falcon_axi_default = {
|
|
|
21236
21252
|
generatedBy: "scripts/falcon-inventory.mjs",
|
|
21237
21253
|
tool: "falcon-axi",
|
|
21238
21254
|
repository: "https://github.com/knowttl/falcon-axi.git",
|
|
21239
|
-
tag: "v0.
|
|
21240
|
-
commit: "
|
|
21241
|
-
version: "0.
|
|
21255
|
+
tag: "v0.8.0",
|
|
21256
|
+
commit: "4ba25f373a5c4df46506bdd0d306fa3ef205d965",
|
|
21257
|
+
version: "0.8.0",
|
|
21242
21258
|
distribution: {
|
|
21243
|
-
filename: "falcon_axi-0.
|
|
21244
|
-
sha256: "
|
|
21245
|
-
provenance: "https://pypi.org/integrity/falcon-axi/0.
|
|
21259
|
+
filename: "falcon_axi-0.8.0-py3-none-any.whl",
|
|
21260
|
+
sha256: "8aad289fd58847cb6555f46b8e930c5904d6afda34a7b2e6965cdd60c8df06a4",
|
|
21261
|
+
provenance: "https://pypi.org/integrity/falcon-axi/0.8.0/falcon_axi-0.8.0-py3-none-any.whl/provenance"
|
|
21246
21262
|
},
|
|
21263
|
+
skillSha256: "5d5fd1cd57ff1da68e37448c93fce57236f76448ec9a10984c01ea7300c6a8e0",
|
|
21247
21264
|
parser: {
|
|
21248
21265
|
path: "falcon_axi/cli.py",
|
|
21249
|
-
sha256: "
|
|
21266
|
+
sha256: "9b3d42e3c00b3d302948e8937c6295bbdde9cb80384ebef253f9b8a077454909",
|
|
21250
21267
|
aliases: {},
|
|
21251
21268
|
shortFlags: {},
|
|
21252
21269
|
repeats: "last value wins",
|
|
@@ -22972,10 +22989,11 @@ var falcon_axi_default = {
|
|
|
22972
22989
|
var vectra_axi_default = {
|
|
22973
22990
|
generatedBy: "scripts/upstream-inventory.mjs",
|
|
22974
22991
|
tool: "vectra-axi",
|
|
22975
|
-
version: "0.1.
|
|
22976
|
-
integrity: "sha512-
|
|
22992
|
+
version: "0.1.10",
|
|
22993
|
+
integrity: "sha512-X7yttDlwpQJW/j0eNox5vLf7nWlFejXjtaq90N7ezJ+ACNqEFspODrwQ/mYqbXFnqjpIugQnhSGcnaI8YNMeLw==",
|
|
22977
22994
|
parserEvidence: "Installed pinned catalogue exports, provisional until adapter acceptance",
|
|
22978
|
-
packageManifestSha256: "
|
|
22995
|
+
packageManifestSha256: "3f4d4e3ec1b37690087e3c8850ffd5390574e6686cafbd723fb01f83b775ea97",
|
|
22996
|
+
skillSha256: "58978bfd2468e9fac8d17644df1de46768572b1cd9a719a9eec64cdcb547ff9c",
|
|
22979
22997
|
environment: [
|
|
22980
22998
|
{
|
|
22981
22999
|
name: "VECTRA_AXI_CONFIG",
|
|
@@ -23275,7 +23293,7 @@ var vectra_axi_default = {
|
|
|
23275
23293
|
},
|
|
23276
23294
|
source: {
|
|
23277
23295
|
path: "dist/src/catalogue.js",
|
|
23278
|
-
sha256: "
|
|
23296
|
+
sha256: "02e2443a4b6d6aef9faae51e0c4418c0c565ac5b0f73969a34a4c33a110bfabf"
|
|
23279
23297
|
}
|
|
23280
23298
|
},
|
|
23281
23299
|
flags: [
|
|
@@ -23755,7 +23773,8 @@ var vectra_axi_default = {
|
|
|
23755
23773
|
help: "boolean",
|
|
23756
23774
|
profile: "value",
|
|
23757
23775
|
config: "value",
|
|
23758
|
-
id: "value"
|
|
23776
|
+
id: "value",
|
|
23777
|
+
full: "boolean"
|
|
23759
23778
|
}
|
|
23760
23779
|
},
|
|
23761
23780
|
{
|
|
@@ -23807,7 +23826,8 @@ var vectra_axi_default = {
|
|
|
23807
23826
|
profile: "value",
|
|
23808
23827
|
config: "value",
|
|
23809
23828
|
type: "value",
|
|
23810
|
-
id: "value"
|
|
23829
|
+
id: "value",
|
|
23830
|
+
full: "boolean"
|
|
23811
23831
|
}
|
|
23812
23832
|
},
|
|
23813
23833
|
{
|
|
@@ -25027,10 +25047,11 @@ var vectra_axi_default = {
|
|
|
25027
25047
|
var az_axi_default = {
|
|
25028
25048
|
generatedBy: "scripts/upstream-inventory.mjs",
|
|
25029
25049
|
tool: "az-axi",
|
|
25030
|
-
version: "0.1.
|
|
25031
|
-
integrity: "sha512-
|
|
25050
|
+
version: "0.1.13",
|
|
25051
|
+
integrity: "sha512-qltNokGPKFvUxFxNVf25gV2jtgw9MpxT5k6Zlbhz0b/Y5pvbc04SpORpUurDZNXE7runLZZhoBmm38qXcA3M7Q==",
|
|
25032
25052
|
parserEvidence: "Installed pinned catalogue exports, provisional until adapter acceptance",
|
|
25033
|
-
packageManifestSha256: "
|
|
25053
|
+
packageManifestSha256: "dc09976ff76cdda672ba89f0a7689c39873a86a19213d46687c2a9af861d3ed2",
|
|
25054
|
+
skillSha256: "8a5bc0e8866ca55add8399376784a19e81671e6d036d10815e55b3c473540080",
|
|
25034
25055
|
environment: [
|
|
25035
25056
|
{
|
|
25036
25057
|
name: "AZ_AXI_CONFIG",
|
|
@@ -25289,11 +25310,11 @@ var az_axi_default = {
|
|
|
25289
25310
|
tokenResourceSources: [
|
|
25290
25311
|
{
|
|
25291
25312
|
path: "dist/lib/registry.js",
|
|
25292
|
-
sha256: "
|
|
25313
|
+
sha256: "dc1eb46c43aa5232b58acfb1d174fe2728491a3a6da28fa3cca27fed79494efd"
|
|
25293
25314
|
},
|
|
25294
25315
|
{
|
|
25295
25316
|
path: "dist/lib/client.js",
|
|
25296
|
-
sha256: "
|
|
25317
|
+
sha256: "156af240155e71c051a6a2f0c4235d51acaf3633d7a249736ff3b24ed541d2b6"
|
|
25297
25318
|
},
|
|
25298
25319
|
{
|
|
25299
25320
|
path: "dist/lib/principals.js",
|
|
@@ -25317,7 +25338,7 @@ var az_axi_default = {
|
|
|
25317
25338
|
},
|
|
25318
25339
|
{
|
|
25319
25340
|
path: "dist/commands/logs.js",
|
|
25320
|
-
sha256: "
|
|
25341
|
+
sha256: "1cfd781bd88e13ba1c70537263220c6bdd6932586e53edd6fc22fc75202bd938"
|
|
25321
25342
|
},
|
|
25322
25343
|
{
|
|
25323
25344
|
path: "dist/commands/doctor.js",
|
|
@@ -29745,10 +29766,11 @@ var az_axi_default = {
|
|
|
29745
29766
|
var mg_axi_default = {
|
|
29746
29767
|
generatedBy: "scripts/upstream-inventory.mjs",
|
|
29747
29768
|
tool: "mg-axi",
|
|
29748
|
-
version: "0.1.
|
|
29749
|
-
integrity: "sha512-
|
|
29769
|
+
version: "0.1.13",
|
|
29770
|
+
integrity: "sha512-V9f/H1xISbn1ar3ARVnYvtT4NDUDRgvhCkrnQd6lqNdj1MeQjF4JESS6PA6hY3epXKrqE+g/2nCfgJV1JDmDTQ==",
|
|
29750
29771
|
parserEvidence: "Installed pinned catalogue exports",
|
|
29751
|
-
packageManifestSha256: "
|
|
29772
|
+
packageManifestSha256: "2357d6568740146d05a0ad67fb8e0be3c871261726d3cf110fed83e216001dc9",
|
|
29773
|
+
skillSha256: "98ff12e741b04592afae76853a00f572940dee6edf0e868d2ccba04a742b24ad",
|
|
29752
29774
|
environment: [
|
|
29753
29775
|
{
|
|
29754
29776
|
name: "MG_AXI_CONFIG"
|
|
@@ -29910,7 +29932,7 @@ var mg_axi_default = {
|
|
|
29910
29932
|
},
|
|
29911
29933
|
{
|
|
29912
29934
|
path: "dist/cli.js",
|
|
29913
|
-
sha256: "
|
|
29935
|
+
sha256: "723f00e5031068211b541ee43447fb559833bea924c91131e0d074349d5b9a4e"
|
|
29914
29936
|
},
|
|
29915
29937
|
{
|
|
29916
29938
|
path: "dist/profiles.js",
|
|
@@ -29988,7 +30010,7 @@ var mg_axi_default = {
|
|
|
29988
30010
|
},
|
|
29989
30011
|
{
|
|
29990
30012
|
path: "dist/cli.js",
|
|
29991
|
-
sha256: "
|
|
30013
|
+
sha256: "723f00e5031068211b541ee43447fb559833bea924c91131e0d074349d5b9a4e"
|
|
29992
30014
|
}
|
|
29993
30015
|
]
|
|
29994
30016
|
},
|
|
@@ -42171,8 +42193,605 @@ var hybrid_axi_default = {
|
|
|
42171
42193
|
]
|
|
42172
42194
|
};
|
|
42173
42195
|
|
|
42196
|
+
// tools/inventories/checkpoint-axi.json
|
|
42197
|
+
var checkpoint_axi_default = {
|
|
42198
|
+
generatedBy: "scripts/checkpoint-inventory.mjs",
|
|
42199
|
+
tool: "checkpoint-axi",
|
|
42200
|
+
version: "0.1.0",
|
|
42201
|
+
integrity: "sha512-fbwTL0lbbJwCDjR8bt431kWHSCEuBmAEzk/QNJzsVcAbve2x8Ehtz/mr/aPzJ6I/WMRQiRPFpCE2zsW/2CRHlQ==",
|
|
42202
|
+
parserEvidence: "Published catalogue, fixed regional map and reviewed native parsers, write coordinator and download contracts",
|
|
42203
|
+
sources: [
|
|
42204
|
+
{
|
|
42205
|
+
path: "dist/src/catalogue.js",
|
|
42206
|
+
sha256: "59b9568b614a101e2746a8275768c238ba8eb7166185119875a40f7eac191f7a"
|
|
42207
|
+
},
|
|
42208
|
+
{
|
|
42209
|
+
path: "dist/src/cli.js",
|
|
42210
|
+
sha256: "11a2e7f6c8ba3fc5507aa8ca33d480337a5a64bf79c241f4ed478f512ac8fa92"
|
|
42211
|
+
},
|
|
42212
|
+
{
|
|
42213
|
+
path: "dist/src/doctor.js",
|
|
42214
|
+
sha256: "7f25c415bc59b12e6d0a6155d701c3646bd3370e0b2024a29efdbaf5e4c0ffed"
|
|
42215
|
+
},
|
|
42216
|
+
{
|
|
42217
|
+
path: "dist/src/downloads.js",
|
|
42218
|
+
sha256: "206f08ec7d978e41fe1c9c4ba744f1cf4c3f47ee909a1f761645a802371c8d6e"
|
|
42219
|
+
},
|
|
42220
|
+
{
|
|
42221
|
+
path: "dist/src/exceptions.js",
|
|
42222
|
+
sha256: "8264427dd5871a447e3e8759341251779454490a387cdca801a0e68b81265327"
|
|
42223
|
+
},
|
|
42224
|
+
{
|
|
42225
|
+
path: "dist/src/local-commands.js",
|
|
42226
|
+
sha256: "ed9c39e204d42f45ae3c5b8008bf1c719d88f8e7214168f68de4d15921e35299"
|
|
42227
|
+
},
|
|
42228
|
+
{
|
|
42229
|
+
path: "dist/src/private-file.js",
|
|
42230
|
+
sha256: "574a40223d0bba130f903eb89e2cfd2d96bf01a4df237738af993272ebee0332"
|
|
42231
|
+
},
|
|
42232
|
+
{
|
|
42233
|
+
path: "dist/src/profiles.js",
|
|
42234
|
+
sha256: "db013b041bb6302993d7045fe3bd411bbd1a3593b5b2a84a3d8411645f55d3e6"
|
|
42235
|
+
},
|
|
42236
|
+
{
|
|
42237
|
+
path: "dist/src/reads.js",
|
|
42238
|
+
sha256: "02a5478edb3d44ab51ea300095794abc69d9e4a353060af4faed0d6e4ce592a7"
|
|
42239
|
+
},
|
|
42240
|
+
{
|
|
42241
|
+
path: "dist/src/redact.js",
|
|
42242
|
+
sha256: "9793e98af5c93c09e89748e26675b2d48663904a27e3aa42655954f93025c35a"
|
|
42243
|
+
},
|
|
42244
|
+
{
|
|
42245
|
+
path: "dist/src/regions.js",
|
|
42246
|
+
sha256: "44288abe19a68fa672bc04ad167141717aed5c3a333b2420b14ee68e13abee78"
|
|
42247
|
+
},
|
|
42248
|
+
{
|
|
42249
|
+
path: "dist/src/transport.js",
|
|
42250
|
+
sha256: "7beb28cc283e876db4f6aeaf5c308280e1fce482c20c19dd9924e29985e54e56"
|
|
42251
|
+
},
|
|
42252
|
+
{
|
|
42253
|
+
path: "dist/src/write-exceptions.js",
|
|
42254
|
+
sha256: "34114e0b2a3e04462914118ba6108f6d7eb7bf38a417f1f80ec4126deff786a8"
|
|
42255
|
+
},
|
|
42256
|
+
{
|
|
42257
|
+
path: "dist/src/write-sectools.js",
|
|
42258
|
+
sha256: "c962f2180d34625c9a0be1ad468e17b3e25d93390b0efae3dec02e9ab8f1dd9e"
|
|
42259
|
+
},
|
|
42260
|
+
{
|
|
42261
|
+
path: "dist/src/writes.js",
|
|
42262
|
+
sha256: "4f683a01ab151b4b1e61588b6c3fe86f3d8a34ebdbdb1a257dc42cae21e6f5ed"
|
|
42263
|
+
}
|
|
42264
|
+
],
|
|
42265
|
+
credentialSchema: {
|
|
42266
|
+
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
42267
|
+
$id: "https://github.com/knowttl/checkpoint-axi/axi-credential.schema.json",
|
|
42268
|
+
title: "Check Point AXI credential profile",
|
|
42269
|
+
type: "object",
|
|
42270
|
+
additionalProperties: false,
|
|
42271
|
+
required: [
|
|
42272
|
+
"region",
|
|
42273
|
+
"clientId"
|
|
42274
|
+
],
|
|
42275
|
+
properties: {
|
|
42276
|
+
region: {
|
|
42277
|
+
type: "string",
|
|
42278
|
+
enum: [
|
|
42279
|
+
"us",
|
|
42280
|
+
"eu",
|
|
42281
|
+
"ca",
|
|
42282
|
+
"au",
|
|
42283
|
+
"uk",
|
|
42284
|
+
"uae",
|
|
42285
|
+
"in"
|
|
42286
|
+
]
|
|
42287
|
+
},
|
|
42288
|
+
clientId: {
|
|
42289
|
+
type: "string",
|
|
42290
|
+
minLength: 1,
|
|
42291
|
+
pattern: "\\S"
|
|
42292
|
+
},
|
|
42293
|
+
clientSecret: {
|
|
42294
|
+
$ref: "#/$defs/secretRef",
|
|
42295
|
+
"x-secret": true,
|
|
42296
|
+
default: {
|
|
42297
|
+
env: "CHECKPOINT_AXI_CLIENT_SECRET"
|
|
42298
|
+
}
|
|
42299
|
+
},
|
|
42300
|
+
saas: {
|
|
42301
|
+
type: "string",
|
|
42302
|
+
minLength: 1,
|
|
42303
|
+
pattern: "\\S",
|
|
42304
|
+
default: "office365_emails"
|
|
42305
|
+
},
|
|
42306
|
+
scope: {
|
|
42307
|
+
type: "string",
|
|
42308
|
+
minLength: 1,
|
|
42309
|
+
pattern: "\\S"
|
|
42310
|
+
},
|
|
42311
|
+
downloads: {
|
|
42312
|
+
type: "object",
|
|
42313
|
+
additionalProperties: false,
|
|
42314
|
+
required: [
|
|
42315
|
+
"allow"
|
|
42316
|
+
],
|
|
42317
|
+
default: {
|
|
42318
|
+
allow: false
|
|
42319
|
+
},
|
|
42320
|
+
properties: {
|
|
42321
|
+
allow: {
|
|
42322
|
+
type: "boolean"
|
|
42323
|
+
}
|
|
42324
|
+
}
|
|
42325
|
+
},
|
|
42326
|
+
writes: {
|
|
42327
|
+
type: "object",
|
|
42328
|
+
additionalProperties: false,
|
|
42329
|
+
required: [
|
|
42330
|
+
"allowWrites",
|
|
42331
|
+
"operations"
|
|
42332
|
+
],
|
|
42333
|
+
default: {
|
|
42334
|
+
allowWrites: false,
|
|
42335
|
+
operations: []
|
|
42336
|
+
},
|
|
42337
|
+
properties: {
|
|
42338
|
+
allowWrites: {
|
|
42339
|
+
type: "boolean"
|
|
42340
|
+
},
|
|
42341
|
+
operations: {
|
|
42342
|
+
type: "array",
|
|
42343
|
+
items: {
|
|
42344
|
+
type: "string",
|
|
42345
|
+
pattern: "^[a-z][A-Za-z0-9_.-]*$"
|
|
42346
|
+
}
|
|
42347
|
+
}
|
|
42348
|
+
}
|
|
42349
|
+
}
|
|
42350
|
+
},
|
|
42351
|
+
$defs: {
|
|
42352
|
+
secretRef: {
|
|
42353
|
+
oneOf: [
|
|
42354
|
+
{
|
|
42355
|
+
type: "object",
|
|
42356
|
+
additionalProperties: false,
|
|
42357
|
+
required: [
|
|
42358
|
+
"env"
|
|
42359
|
+
],
|
|
42360
|
+
properties: {
|
|
42361
|
+
env: {
|
|
42362
|
+
type: "string",
|
|
42363
|
+
pattern: "^[A-Za-z_][A-Za-z0-9_]*$"
|
|
42364
|
+
}
|
|
42365
|
+
}
|
|
42366
|
+
},
|
|
42367
|
+
{
|
|
42368
|
+
type: "object",
|
|
42369
|
+
additionalProperties: false,
|
|
42370
|
+
required: [
|
|
42371
|
+
"file"
|
|
42372
|
+
],
|
|
42373
|
+
properties: {
|
|
42374
|
+
file: {
|
|
42375
|
+
type: "string",
|
|
42376
|
+
pattern: "^(?:/|[A-Za-z]:[\\\\/])"
|
|
42377
|
+
}
|
|
42378
|
+
}
|
|
42379
|
+
}
|
|
42380
|
+
]
|
|
42381
|
+
}
|
|
42382
|
+
}
|
|
42383
|
+
},
|
|
42384
|
+
regions: {
|
|
42385
|
+
us: "https://cloudinfra-gw-us.portal.checkpoint.com",
|
|
42386
|
+
eu: "https://cloudinfra-gw.portal.checkpoint.com",
|
|
42387
|
+
ca: "https://cloudinfra-gw.ca.portal.checkpoint.com",
|
|
42388
|
+
au: "https://cloudinfra-gw.ap.portal.checkpoint.com",
|
|
42389
|
+
uk: "https://cloudinfra-gw.uk.portal.checkpoint.com",
|
|
42390
|
+
uae: "https://cloudinfra-gw.me.portal.checkpoint.com",
|
|
42391
|
+
in: "https://cloudinfra-gw.in.portal.checkpoint.com"
|
|
42392
|
+
},
|
|
42393
|
+
skillSha256: "69f0754d565fc1e65163435ef698ea6dca6009470f158171cb3b4258d27c647b",
|
|
42394
|
+
nativeWriteSettings: {
|
|
42395
|
+
supportedOperations: [
|
|
42396
|
+
"attachment.download",
|
|
42397
|
+
"attachment.download-all",
|
|
42398
|
+
"email.download",
|
|
42399
|
+
"email.quarantine",
|
|
42400
|
+
"email.restore",
|
|
42401
|
+
"exception.anomaly.create",
|
|
42402
|
+
"exception.anomaly.remove",
|
|
42403
|
+
"exception.click-time.create",
|
|
42404
|
+
"exception.click-time.remove",
|
|
42405
|
+
"exception.click-time.remove-items",
|
|
42406
|
+
"exception.click-time.update",
|
|
42407
|
+
"exception.dlp.create",
|
|
42408
|
+
"exception.dlp.update",
|
|
42409
|
+
"exception.malware.create",
|
|
42410
|
+
"exception.malware.update",
|
|
42411
|
+
"exception.phishing-allow.create",
|
|
42412
|
+
"exception.phishing-allow.remove",
|
|
42413
|
+
"exception.phishing-allow.update",
|
|
42414
|
+
"exception.phishing-block.create",
|
|
42415
|
+
"exception.phishing-block.remove",
|
|
42416
|
+
"exception.phishing-block.update",
|
|
42417
|
+
"exception.spam-allow.create",
|
|
42418
|
+
"exception.spam-allow.remove",
|
|
42419
|
+
"exception.spam-allow.update",
|
|
42420
|
+
"exception.url.create",
|
|
42421
|
+
"exception.url.update"
|
|
42422
|
+
],
|
|
42423
|
+
dynamicOperation: "event.action.<exact available action name>"
|
|
42424
|
+
},
|
|
42425
|
+
adapterBoundary: {
|
|
42426
|
+
unsafeOverrides: [
|
|
42427
|
+
"config",
|
|
42428
|
+
"profile",
|
|
42429
|
+
"origin",
|
|
42430
|
+
"out"
|
|
42431
|
+
],
|
|
42432
|
+
inputFileFlags: [
|
|
42433
|
+
"input"
|
|
42434
|
+
],
|
|
42435
|
+
blockedCommands: [
|
|
42436
|
+
"profile list",
|
|
42437
|
+
"config path",
|
|
42438
|
+
"exception clear",
|
|
42439
|
+
"email download",
|
|
42440
|
+
"attachment download",
|
|
42441
|
+
"attachment download-all"
|
|
42442
|
+
],
|
|
42443
|
+
downloadCommands: [
|
|
42444
|
+
"email download",
|
|
42445
|
+
"attachment download",
|
|
42446
|
+
"attachment download-all"
|
|
42447
|
+
],
|
|
42448
|
+
inputs: {
|
|
42449
|
+
stdin: "unsupported",
|
|
42450
|
+
files: "uploaded private JSON leaves only",
|
|
42451
|
+
downloads: "authenticated hosted transfers only"
|
|
42452
|
+
},
|
|
42453
|
+
nativeWrites: "native preview, exact operation allow-list, execute, exact confirm and durable journal; ambiguous deletes refused"
|
|
42454
|
+
},
|
|
42455
|
+
discovery: {
|
|
42456
|
+
commands: [
|
|
42457
|
+
"auth",
|
|
42458
|
+
"doctor",
|
|
42459
|
+
"email",
|
|
42460
|
+
"event",
|
|
42461
|
+
"exception",
|
|
42462
|
+
"home",
|
|
42463
|
+
"task"
|
|
42464
|
+
],
|
|
42465
|
+
example: [
|
|
42466
|
+
"email",
|
|
42467
|
+
"search",
|
|
42468
|
+
"--limit",
|
|
42469
|
+
"1"
|
|
42470
|
+
],
|
|
42471
|
+
help: "checkpoint-axi email search [--limit <n>]\nArtium manages region, client ID and secret. Writes require administrator-enabled exact operations and native preview, --execute and exact --confirm. Upload private JSON with --input. Use artium-axi download for authenticated email and attachment saving with host-owned confirmation; ordinary downloads and local configuration are blocked.\n"
|
|
42472
|
+
},
|
|
42473
|
+
suggestionFields: [
|
|
42474
|
+
"help"
|
|
42475
|
+
],
|
|
42476
|
+
format: "TOON",
|
|
42477
|
+
commands: [
|
|
42478
|
+
{
|
|
42479
|
+
command: "attachment download",
|
|
42480
|
+
effect: "blocked",
|
|
42481
|
+
flags: {
|
|
42482
|
+
config: "Config path; default CHECKPOINT_AXI_CONFIG or platform path",
|
|
42483
|
+
profile: "Profile name; default CHECKPOINT_AXI_PROFILE, env profile, config default, or sole profile",
|
|
42484
|
+
help: "Show concise command help; default false",
|
|
42485
|
+
out: "Required absolute new output file; mode 0600, never stdout or overwrite",
|
|
42486
|
+
scope: "Optional authorized scope query; default profile scope when configured; live behavior unverified"
|
|
42487
|
+
}
|
|
42488
|
+
},
|
|
42489
|
+
{
|
|
42490
|
+
command: "attachment download-all",
|
|
42491
|
+
effect: "blocked",
|
|
42492
|
+
flags: {
|
|
42493
|
+
config: "Config path; default CHECKPOINT_AXI_CONFIG or platform path",
|
|
42494
|
+
profile: "Profile name; default CHECKPOINT_AXI_PROFILE, env profile, config default, or sole profile",
|
|
42495
|
+
help: "Show concise command help; default false",
|
|
42496
|
+
out: "Required absolute new output file; mode 0600, never stdout or overwrite",
|
|
42497
|
+
scope: "Optional authorized scope query; default profile scope when configured; live behavior unverified"
|
|
42498
|
+
}
|
|
42499
|
+
},
|
|
42500
|
+
{
|
|
42501
|
+
command: "auth status",
|
|
42502
|
+
effect: "read",
|
|
42503
|
+
flags: {
|
|
42504
|
+
config: "Config path; default CHECKPOINT_AXI_CONFIG or platform path",
|
|
42505
|
+
profile: "Profile name; default CHECKPOINT_AXI_PROFILE, env profile, config default, or sole profile",
|
|
42506
|
+
fields: "Comma-separated output fields; default all",
|
|
42507
|
+
full: "Show full strings instead of 500-character previews; default false",
|
|
42508
|
+
help: "Show concise command help; default false"
|
|
42509
|
+
}
|
|
42510
|
+
},
|
|
42511
|
+
{
|
|
42512
|
+
command: "config path",
|
|
42513
|
+
effect: "blocked",
|
|
42514
|
+
flags: {
|
|
42515
|
+
config: "Config path; default CHECKPOINT_AXI_CONFIG or platform path",
|
|
42516
|
+
profile: "Profile name; default CHECKPOINT_AXI_PROFILE, env profile, config default, or sole profile",
|
|
42517
|
+
fields: "Comma-separated output fields; default all",
|
|
42518
|
+
full: "Show full strings instead of 500-character previews; default false",
|
|
42519
|
+
help: "Show concise command help; default false"
|
|
42520
|
+
}
|
|
42521
|
+
},
|
|
42522
|
+
{
|
|
42523
|
+
command: "doctor",
|
|
42524
|
+
effect: "read",
|
|
42525
|
+
flags: {
|
|
42526
|
+
config: "Config path; default CHECKPOINT_AXI_CONFIG or platform path",
|
|
42527
|
+
profile: "Profile name; default CHECKPOINT_AXI_PROFILE, env profile, config default, or sole profile",
|
|
42528
|
+
fields: "Comma-separated output fields; default all",
|
|
42529
|
+
full: "Show full strings instead of 500-character previews; default false",
|
|
42530
|
+
help: "Show concise command help; default false",
|
|
42531
|
+
saas: "SaaS override; default selected profile saas or office365_emails"
|
|
42532
|
+
}
|
|
42533
|
+
},
|
|
42534
|
+
{
|
|
42535
|
+
command: "email download",
|
|
42536
|
+
effect: "blocked",
|
|
42537
|
+
flags: {
|
|
42538
|
+
config: "Config path; default CHECKPOINT_AXI_CONFIG or platform path",
|
|
42539
|
+
profile: "Profile name; default CHECKPOINT_AXI_PROFILE, env profile, config default, or sole profile",
|
|
42540
|
+
help: "Show concise command help; default false",
|
|
42541
|
+
out: "Required absolute new output file; mode 0600, never stdout or overwrite",
|
|
42542
|
+
original: "Download original email without processing modifications; default false"
|
|
42543
|
+
}
|
|
42544
|
+
},
|
|
42545
|
+
{
|
|
42546
|
+
command: "email quarantine",
|
|
42547
|
+
effect: "write",
|
|
42548
|
+
flags: {
|
|
42549
|
+
config: "Config path; default CHECKPOINT_AXI_CONFIG or platform path",
|
|
42550
|
+
profile: "Profile name; default CHECKPOINT_AXI_PROFILE, env profile, config default, or sole profile",
|
|
42551
|
+
fields: "Comma-separated output fields; default all",
|
|
42552
|
+
full: "Show full strings instead of 500-character previews; default false",
|
|
42553
|
+
help: "Show concise command help; default false",
|
|
42554
|
+
ids: "Required comma-separated unique entity IDs; maximum 20",
|
|
42555
|
+
execute: "Send once after all write gates; default false (preview)",
|
|
42556
|
+
"dry-run": "Explicit preview; cannot combine with --execute",
|
|
42557
|
+
confirm: "Exact operation followed by a space and the comma-separated IDs in supplied order"
|
|
42558
|
+
}
|
|
42559
|
+
},
|
|
42560
|
+
{
|
|
42561
|
+
command: "email restore",
|
|
42562
|
+
effect: "write",
|
|
42563
|
+
flags: {
|
|
42564
|
+
config: "Config path; default CHECKPOINT_AXI_CONFIG or platform path",
|
|
42565
|
+
profile: "Profile name; default CHECKPOINT_AXI_PROFILE, env profile, config default, or sole profile",
|
|
42566
|
+
fields: "Comma-separated output fields; default all",
|
|
42567
|
+
full: "Show full strings instead of 500-character previews; default false",
|
|
42568
|
+
help: "Show concise command help; default false",
|
|
42569
|
+
ids: "Required comma-separated unique entity IDs; maximum 20",
|
|
42570
|
+
execute: "Send once after all write gates; default false (preview)",
|
|
42571
|
+
"dry-run": "Explicit preview; cannot combine with --execute",
|
|
42572
|
+
confirm: "Exact operation followed by a space and the comma-separated IDs in supplied order"
|
|
42573
|
+
}
|
|
42574
|
+
},
|
|
42575
|
+
{
|
|
42576
|
+
command: "email search",
|
|
42577
|
+
effect: "read",
|
|
42578
|
+
flags: {
|
|
42579
|
+
config: "Config path; default CHECKPOINT_AXI_CONFIG or platform path",
|
|
42580
|
+
profile: "Profile name; default CHECKPOINT_AXI_PROFILE, env profile, config default, or sole profile",
|
|
42581
|
+
fields: "Comma-separated output fields; default all",
|
|
42582
|
+
full: "Show full strings instead of 500-character previews; default false",
|
|
42583
|
+
help: "Show concise command help; default false",
|
|
42584
|
+
saas: "SaaS override; default selected profile saas or office365_emails",
|
|
42585
|
+
"saas-entity": "Optional SaaS entity type selector",
|
|
42586
|
+
"start-date": "ISO timestamp with timezone; default 24 hours before end-date; maximum window 31 days",
|
|
42587
|
+
"end-date": "ISO timestamp with timezone; default now",
|
|
42588
|
+
limit: "Maximum rows; default 50, range 1-1000; cannot combine with --all",
|
|
42589
|
+
all: "Read up to 1000 rows / 10 HTTP requests / 60 seconds / 8 MiB; default false",
|
|
42590
|
+
cursor: "Opaque continuation bound to profile, region, operation and selectors; repeat original selectors",
|
|
42591
|
+
filter: "JSON array of {saasAttrName, saasAttrOp, saasAttrValue} filters (guide pages 19-20)"
|
|
42592
|
+
}
|
|
42593
|
+
},
|
|
42594
|
+
{
|
|
42595
|
+
command: "email show",
|
|
42596
|
+
effect: "read",
|
|
42597
|
+
flags: {
|
|
42598
|
+
config: "Config path; default CHECKPOINT_AXI_CONFIG or platform path",
|
|
42599
|
+
profile: "Profile name; default CHECKPOINT_AXI_PROFILE, env profile, config default, or sole profile",
|
|
42600
|
+
fields: "Comma-separated output fields; default all",
|
|
42601
|
+
full: "Show full strings instead of 500-character previews; default false",
|
|
42602
|
+
help: "Show concise command help; default false"
|
|
42603
|
+
}
|
|
42604
|
+
},
|
|
42605
|
+
{
|
|
42606
|
+
command: "event action",
|
|
42607
|
+
effect: "write",
|
|
42608
|
+
flags: {
|
|
42609
|
+
config: "Config path; default CHECKPOINT_AXI_CONFIG or platform path",
|
|
42610
|
+
profile: "Profile name; default CHECKPOINT_AXI_PROFILE, env profile, config default, or sole profile",
|
|
42611
|
+
fields: "Comma-separated output fields; default all",
|
|
42612
|
+
full: "Show full strings instead of 500-character previews; default false",
|
|
42613
|
+
help: "Show concise command help; default false",
|
|
42614
|
+
ids: "Required comma-separated unique event IDs; maximum 20",
|
|
42615
|
+
execute: "Send once after all write gates; default false (preview)",
|
|
42616
|
+
"dry-run": "Explicit preview; cannot combine with --execute",
|
|
42617
|
+
confirm: "Exact operation followed by a space and the comma-separated IDs in supplied order",
|
|
42618
|
+
name: "Required available action name; nonempty action parameters are unverified"
|
|
42619
|
+
}
|
|
42620
|
+
},
|
|
42621
|
+
{
|
|
42622
|
+
command: "event list",
|
|
42623
|
+
effect: "read",
|
|
42624
|
+
flags: {
|
|
42625
|
+
config: "Config path; default CHECKPOINT_AXI_CONFIG or platform path",
|
|
42626
|
+
profile: "Profile name; default CHECKPOINT_AXI_PROFILE, env profile, config default, or sole profile",
|
|
42627
|
+
fields: "Comma-separated output fields; default all",
|
|
42628
|
+
full: "Show full strings instead of 500-character previews; default false",
|
|
42629
|
+
help: "Show concise command help; default false",
|
|
42630
|
+
"start-date": "ISO timestamp with timezone; default 24 hours before end-date; maximum window 31 days",
|
|
42631
|
+
"end-date": "ISO timestamp with timezone; default now",
|
|
42632
|
+
limit: "Maximum rows; default 50, range 1-1000; cannot combine with --all",
|
|
42633
|
+
all: "Read up to 1000 rows / 10 HTTP requests / 60 seconds / 8 MiB; default false",
|
|
42634
|
+
cursor: "Opaque continuation bound to profile, region, operation and selectors; repeat original selectors",
|
|
42635
|
+
saas: "Comma-separated SaaS overrides; default selected profile saas or office365_emails",
|
|
42636
|
+
"event-types": "Comma-separated event types; default unfiltered",
|
|
42637
|
+
"event-states": "Comma-separated event states; default unfiltered",
|
|
42638
|
+
severities: "Comma-separated severities; default unfiltered",
|
|
42639
|
+
"event-ids": "Comma-separated event IDs; default unfiltered",
|
|
42640
|
+
"confidence-indicator": "Confidence indicator selector; default unfiltered",
|
|
42641
|
+
description: "Description selector; default unfiltered"
|
|
42642
|
+
}
|
|
42643
|
+
},
|
|
42644
|
+
{
|
|
42645
|
+
command: "event show",
|
|
42646
|
+
effect: "read",
|
|
42647
|
+
flags: {
|
|
42648
|
+
config: "Config path; default CHECKPOINT_AXI_CONFIG or platform path",
|
|
42649
|
+
profile: "Profile name; default CHECKPOINT_AXI_PROFILE, env profile, config default, or sole profile",
|
|
42650
|
+
fields: "Comma-separated output fields; default all",
|
|
42651
|
+
full: "Show full strings instead of 500-character previews; default false",
|
|
42652
|
+
help: "Show concise command help; default false"
|
|
42653
|
+
}
|
|
42654
|
+
},
|
|
42655
|
+
{
|
|
42656
|
+
command: "exception clear",
|
|
42657
|
+
effect: "blocked",
|
|
42658
|
+
flags: {
|
|
42659
|
+
config: "Config path; default CHECKPOINT_AXI_CONFIG or platform path",
|
|
42660
|
+
profile: "Profile name; default CHECKPOINT_AXI_PROFILE, env profile, config default, or sole profile",
|
|
42661
|
+
fields: "Comma-separated output fields; default all",
|
|
42662
|
+
full: "Show full strings instead of 500-character previews; default false",
|
|
42663
|
+
help: "Show concise command help; default false",
|
|
42664
|
+
execute: "Send once after all write gates; default false (preview)",
|
|
42665
|
+
"dry-run": "Explicit preview; cannot combine with --execute",
|
|
42666
|
+
confirm: "Exact operation followed by a space and every target from preview (payload sha256 for create and malware/url/dlp update, exception ID or comma-separated item IDs otherwise)"
|
|
42667
|
+
}
|
|
42668
|
+
},
|
|
42669
|
+
{
|
|
42670
|
+
command: "exception create",
|
|
42671
|
+
effect: "write",
|
|
42672
|
+
flags: {
|
|
42673
|
+
config: "Config path; default CHECKPOINT_AXI_CONFIG or platform path",
|
|
42674
|
+
profile: "Profile name; default CHECKPOINT_AXI_PROFILE, env profile, config default, or sole profile",
|
|
42675
|
+
fields: "Comma-separated output fields; default all",
|
|
42676
|
+
full: "Show full strings instead of 500-character previews; default false",
|
|
42677
|
+
help: "Show concise command help; default false",
|
|
42678
|
+
execute: "Send once after all write gates; default false (preview)",
|
|
42679
|
+
"dry-run": "Explicit preview; cannot combine with --execute",
|
|
42680
|
+
confirm: "Exact operation followed by a space and every target from preview (payload sha256 for create and malware/url/dlp update, exception ID or comma-separated item IDs otherwise)",
|
|
42681
|
+
input: "Required absolute private JSON file containing documented requestData fields directly; fields depend on kind; update sends a replacement PUT",
|
|
42682
|
+
specific: "Malware/url/dlp only: use the documented create-specific /exceptions route; default false; included in confirmation digest"
|
|
42683
|
+
}
|
|
42684
|
+
},
|
|
42685
|
+
{
|
|
42686
|
+
command: "exception list",
|
|
42687
|
+
effect: "read",
|
|
42688
|
+
flags: {
|
|
42689
|
+
config: "Config path; default CHECKPOINT_AXI_CONFIG or platform path",
|
|
42690
|
+
profile: "Profile name; default CHECKPOINT_AXI_PROFILE, env profile, config default, or sole profile",
|
|
42691
|
+
fields: "Comma-separated output fields; default all",
|
|
42692
|
+
full: "Show full strings instead of 500-character previews; default false",
|
|
42693
|
+
help: "Show concise command help; default false",
|
|
42694
|
+
type: "Required for malware: hash,micro_hash,file_type,ppat_sender_name,allow_file_type,sender_email; url: allow-url,allow-domain,block-url,block-domain; dlp: hash,text_content,sender_email,recipient_email",
|
|
42695
|
+
items: "Click-time item routes instead of list routes; default false",
|
|
42696
|
+
limit: "Maximum rows; default 50, range 1-1000; cannot combine with --all",
|
|
42697
|
+
all: "Return up to 1000 rows within transport budgets; no server continuation parameter is documented"
|
|
42698
|
+
}
|
|
42699
|
+
},
|
|
42700
|
+
{
|
|
42701
|
+
command: "exception remove",
|
|
42702
|
+
effect: "write",
|
|
42703
|
+
flags: {
|
|
42704
|
+
config: "Config path; default CHECKPOINT_AXI_CONFIG or platform path",
|
|
42705
|
+
profile: "Profile name; default CHECKPOINT_AXI_PROFILE, env profile, config default, or sole profile",
|
|
42706
|
+
fields: "Comma-separated output fields; default all",
|
|
42707
|
+
full: "Show full strings instead of 500-character previews; default false",
|
|
42708
|
+
help: "Show concise command help; default false",
|
|
42709
|
+
execute: "Send once after all write gates; default false (preview)",
|
|
42710
|
+
"dry-run": "Explicit preview; cannot combine with --execute",
|
|
42711
|
+
confirm: "Exact operation followed by a space and every target from preview (payload sha256 for create and malware/url/dlp update, exception ID or comma-separated item IDs otherwise)"
|
|
42712
|
+
}
|
|
42713
|
+
},
|
|
42714
|
+
{
|
|
42715
|
+
command: "exception remove-items",
|
|
42716
|
+
effect: "write",
|
|
42717
|
+
flags: {
|
|
42718
|
+
config: "Config path; default CHECKPOINT_AXI_CONFIG or platform path",
|
|
42719
|
+
profile: "Profile name; default CHECKPOINT_AXI_PROFILE, env profile, config default, or sole profile",
|
|
42720
|
+
fields: "Comma-separated output fields; default all",
|
|
42721
|
+
full: "Show full strings instead of 500-character previews; default false",
|
|
42722
|
+
help: "Show concise command help; default false",
|
|
42723
|
+
execute: "Send once after all write gates; default false (preview)",
|
|
42724
|
+
"dry-run": "Explicit preview; cannot combine with --execute",
|
|
42725
|
+
confirm: "Exact operation followed by a space and every target from preview (payload sha256 for create and malware/url/dlp update, exception ID or comma-separated item IDs otherwise)",
|
|
42726
|
+
ids: "Required 1-20 unique comma-separated click-time item IDs"
|
|
42727
|
+
}
|
|
42728
|
+
},
|
|
42729
|
+
{
|
|
42730
|
+
command: "exception show",
|
|
42731
|
+
effect: "read",
|
|
42732
|
+
flags: {
|
|
42733
|
+
config: "Config path; default CHECKPOINT_AXI_CONFIG or platform path",
|
|
42734
|
+
profile: "Profile name; default CHECKPOINT_AXI_PROFILE, env profile, config default, or sole profile",
|
|
42735
|
+
fields: "Comma-separated output fields; default all",
|
|
42736
|
+
full: "Show full strings instead of 500-character previews; default false",
|
|
42737
|
+
help: "Show concise command help; default false",
|
|
42738
|
+
type: "Required for malware: hash,micro_hash,file_type,ppat_sender_name,allow_file_type,sender_email; url: allow-url,allow-domain,block-url,block-domain; dlp: hash,text_content,sender_email,recipient_email",
|
|
42739
|
+
items: "Click-time item route instead of list route; default false"
|
|
42740
|
+
}
|
|
42741
|
+
},
|
|
42742
|
+
{
|
|
42743
|
+
command: "exception update",
|
|
42744
|
+
effect: "write",
|
|
42745
|
+
flags: {
|
|
42746
|
+
config: "Config path; default CHECKPOINT_AXI_CONFIG or platform path",
|
|
42747
|
+
profile: "Profile name; default CHECKPOINT_AXI_PROFILE, env profile, config default, or sole profile",
|
|
42748
|
+
fields: "Comma-separated output fields; default all",
|
|
42749
|
+
full: "Show full strings instead of 500-character previews; default false",
|
|
42750
|
+
help: "Show concise command help; default false",
|
|
42751
|
+
execute: "Send once after all write gates; default false (preview)",
|
|
42752
|
+
"dry-run": "Explicit preview; cannot combine with --execute",
|
|
42753
|
+
confirm: "Exact operation followed by a space and every target from preview (payload sha256 for create and malware/url/dlp update, exception ID or comma-separated item IDs otherwise)",
|
|
42754
|
+
input: "Required absolute private JSON file containing documented requestData fields directly; fields depend on kind; update sends a replacement PUT"
|
|
42755
|
+
}
|
|
42756
|
+
},
|
|
42757
|
+
{
|
|
42758
|
+
command: "home",
|
|
42759
|
+
effect: "read",
|
|
42760
|
+
flags: {
|
|
42761
|
+
config: "Config path; default CHECKPOINT_AXI_CONFIG or platform path",
|
|
42762
|
+
profile: "Profile name; default CHECKPOINT_AXI_PROFILE, env profile, config default, or sole profile",
|
|
42763
|
+
fields: "Comma-separated output fields; default all",
|
|
42764
|
+
full: "Show full strings instead of 500-character previews; default false",
|
|
42765
|
+
help: "Show concise command help; default false"
|
|
42766
|
+
}
|
|
42767
|
+
},
|
|
42768
|
+
{
|
|
42769
|
+
command: "profile list",
|
|
42770
|
+
effect: "blocked",
|
|
42771
|
+
flags: {
|
|
42772
|
+
config: "Config path; default CHECKPOINT_AXI_CONFIG or platform path",
|
|
42773
|
+
profile: "Profile name; default CHECKPOINT_AXI_PROFILE, env profile, config default, or sole profile",
|
|
42774
|
+
fields: "Comma-separated output fields; default all",
|
|
42775
|
+
full: "Show full strings instead of 500-character previews; default false",
|
|
42776
|
+
help: "Show concise command help; default false"
|
|
42777
|
+
}
|
|
42778
|
+
},
|
|
42779
|
+
{
|
|
42780
|
+
command: "task show",
|
|
42781
|
+
effect: "read",
|
|
42782
|
+
flags: {
|
|
42783
|
+
config: "Config path; default CHECKPOINT_AXI_CONFIG or platform path",
|
|
42784
|
+
profile: "Profile name; default CHECKPOINT_AXI_PROFILE, env profile, config default, or sole profile",
|
|
42785
|
+
fields: "Comma-separated output fields; default all",
|
|
42786
|
+
full: "Show full strings instead of 500-character previews; default false",
|
|
42787
|
+
help: "Show concise command help; default false"
|
|
42788
|
+
}
|
|
42789
|
+
}
|
|
42790
|
+
]
|
|
42791
|
+
};
|
|
42792
|
+
|
|
42174
42793
|
// src/shared/tool-manifests.ts
|
|
42175
|
-
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, "hybrid-axi": hybrid_axi_default };
|
|
42794
|
+
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, "hybrid-axi": hybrid_axi_default, "checkpoint-axi": checkpoint_axi_default };
|
|
42176
42795
|
|
|
42177
42796
|
// node_modules/.pnpm/@toon-format+toon@2.3.1/node_modules/@toon-format/toon/dist/index.mjs
|
|
42178
42797
|
var NULL_LITERAL = "null";
|
|
@@ -43540,6 +44159,7 @@ function resolveDecodeOptions(options) {
|
|
|
43540
44159
|
|
|
43541
44160
|
// src/cli/rewrite.ts
|
|
43542
44161
|
var managedFlags = {
|
|
44162
|
+
"checkpoint-axi": checkpoint_axi_default.adapterBoundary.unsafeOverrides,
|
|
43543
44163
|
"hybrid-axi": hybrid_axi_default.adapterBoundary.unsafeOverrides,
|
|
43544
44164
|
"tenable-axi": tenable_axi_default.adapterBoundary.unsafeOverrides,
|
|
43545
44165
|
"awx-axi": awx_axi_default.adapterBoundary.unsafeOverrides,
|
|
@@ -43565,6 +44185,25 @@ function rewriteDiscoveryHelp(help, tool) {
|
|
|
43565
44185
|
}
|
|
43566
44186
|
function rewriteSuggestions(output3, tool, truncated = false) {
|
|
43567
44187
|
if (truncated) return output3;
|
|
44188
|
+
if (tool === "checkpoint-axi") {
|
|
44189
|
+
try {
|
|
44190
|
+
const document = decode3(output3);
|
|
44191
|
+
if (document.command && document.flags) return encode3({
|
|
44192
|
+
...document,
|
|
44193
|
+
command: document.command.startsWith("artium-axi ") ? document.command : `artium-axi checkpoint-axi ${document.command}`,
|
|
44194
|
+
flags: Object.fromEntries(Object.entries(document.flags).filter(([name]) => !checkpoint_axi_default.adapterBoundary.unsafeOverrides.includes(name.replace(/^--/, "")))),
|
|
44195
|
+
examples: (document.examples ?? []).filter((example) => !/--(?:config|profile|out)\b/.test(example)).map((example) => example.replace(/^checkpoint-axi\b/, "artium-axi checkpoint-axi")),
|
|
44196
|
+
help: [checkpoint_axi_default.discovery.help.replaceAll("checkpoint-axi ", "artium-axi checkpoint-axi ")]
|
|
44197
|
+
}) + "\n";
|
|
44198
|
+
if (document.bin || document.commands) return encode3({
|
|
44199
|
+
bin: "artium-axi checkpoint-axi",
|
|
44200
|
+
description: "Investigate Check Point Email Security with managed credentials.",
|
|
44201
|
+
commands: checkpoint_axi_default.commands.filter((route) => route.effect !== "blocked").map((route) => route.command),
|
|
44202
|
+
help: [checkpoint_axi_default.discovery.help.replaceAll("checkpoint-axi ", "artium-axi checkpoint-axi ")]
|
|
44203
|
+
}) + "\n";
|
|
44204
|
+
} catch {
|
|
44205
|
+
}
|
|
44206
|
+
}
|
|
43568
44207
|
if (tool === "hybrid-axi") {
|
|
43569
44208
|
try {
|
|
43570
44209
|
const document = decode3(output3);
|
|
@@ -43728,6 +44367,10 @@ function managedFlagRanges(command, tool) {
|
|
|
43728
44367
|
return ranges;
|
|
43729
44368
|
}
|
|
43730
44369
|
function hostedHelp(help, tool, flags, commands2) {
|
|
44370
|
+
if (tool === "checkpoint-axi") {
|
|
44371
|
+
help = help.split("\n").filter((line) => !/CHECKPOINT_AXI_|SecretRef|checkpoint-axi (?:config|profile)|Valid commands:/.test(line)).join("\n");
|
|
44372
|
+
if (!help.trim()) help = checkpoint_axi_default.discovery.help;
|
|
44373
|
+
}
|
|
43731
44374
|
if (tool === "hybrid-axi") {
|
|
43732
44375
|
help = help.split("\n").filter((line) => !/HYBRID_AXI_|SecretRefs|hybrid-axi (?:setup|config|profile)|--(?:config|profile|origin|output)\b/.test(line)).join("\n");
|
|
43733
44376
|
const guidance = "Artium manages the API key and fixed origin. Submissions, YARA mutations, consuming matches and four reviewed archive downloads require independently selected administrator-enabled operations, native preview, execute, exact confirmation and journal. Quick scans transmit the supplied sample or URL. Use artium-axi download --help for authenticated one-shot CLI verified saving and live-malware warnings.";
|
|
@@ -44031,20 +44674,20 @@ var commands = {
|
|
|
44031
44674
|
doctor: { usage: "artium-axi doctor", purpose: "Check the server, certificate, token, CLI version and cached tool health.", flags: [], example: "artium-axi doctor" },
|
|
44032
44675
|
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" },
|
|
44033
44676
|
download: {
|
|
44034
|
-
usage: "artium-axi download --operation <operation> --selector <
|
|
44035
|
-
purpose: "Preview or explicitly save a hosted Hybrid Analysis archive.
|
|
44677
|
+
usage: "artium-axi download --operation <operation> --selector <selector> --type <type> --destination <absolute-new-path> [--transfer <id> --execute --confirm <exact-confirm>] [--password-stdin|--sso]",
|
|
44678
|
+
purpose: "Preview or explicitly save a hosted Hybrid Analysis archive or Check Point email/attachment. Each operation requires administrator enablement.",
|
|
44036
44679
|
flags: [
|
|
44037
|
-
"--operation <hash-download-bin|report-download-bin|report-download-dropped-files|report-download-memory> (required)",
|
|
44038
|
-
"--selector <hash|report-id> (required)",
|
|
44039
|
-
"--type <bin|dropped-files|memory> (required)",
|
|
44680
|
+
"--operation <hash-download-bin|report-download-bin|report-download-dropped-files|report-download-memory|email.download|attachment.download|attachment.download-all> (required)",
|
|
44681
|
+
"--selector <hash|report-id|entity-id|entity-id/attachment-id> (required; attachment.download uses entity-id/attachment-id)",
|
|
44682
|
+
"--type <bin|dropped-files|memory|email|original|attachment|zip> (required; email.download uses email or original, attachment.download uses attachment, attachment.download-all uses zip)",
|
|
44040
44683
|
"--destination <absolute-new-path> (required; Linux private 0700 directory, no symlink components or overwrite)",
|
|
44041
44684
|
"--transfer <id> (required for execution; preview transfer ID)",
|
|
44042
44685
|
"--execute (default false)",
|
|
44043
|
-
"--confirm <exact-confirm> (required for execution; unchanged
|
|
44686
|
+
"--confirm <exact-confirm> (required for execution; unchanged preview string; Check Point confirmation is host-owned)",
|
|
44044
44687
|
"--password-stdin (default false; otherwise terminal password)",
|
|
44045
44688
|
"--sso (default false; browser identity confirmation)",
|
|
44046
44689
|
transferWarning,
|
|
44047
|
-
`Limit ${transferLimits.artifactBytes / 1024 ** 2} MiB; ${transferLimits.reservationsPerUser} reservation per user, ${transferLimits.reservations} globally, ${transferLimits.reservedBytes / 1024 ** 3} GiB total artifact capacity; absolute expiry ${transferLimits.lifetimeMs / 6e4} minutes after preview preparation, including generation and retrieval. No resume or automatic retry. Missing receipt is unconfirmed.`
|
|
44690
|
+
`Limit ${transferLimits.artifactBytes / 1024 ** 2} MiB (Check Point: 50 MiB with mandatory upstream hash); ${transferLimits.reservationsPerUser} reservation per user, ${transferLimits.reservations} globally, ${transferLimits.reservedBytes / 1024 ** 3} GiB total artifact capacity; absolute expiry ${transferLimits.lifetimeMs / 6e4} minutes after preview preparation, including generation and retrieval. No resume or automatic retry. Missing receipt is unconfirmed.`
|
|
44048
44691
|
],
|
|
44049
44692
|
example: "artium-axi download --operation report-download-bin --selector synthetic-report --type bin --destination /controlled/artifacts/new-archive.bin --sso"
|
|
44050
44693
|
},
|
|
@@ -44081,19 +44724,25 @@ var commands = {
|
|
|
44081
44724
|
"tenable-axi": {
|
|
44082
44725
|
usage: "artium-axi tenable-axi [<args>]",
|
|
44083
44726
|
purpose: "Investigate Tenable One with managed API keys.",
|
|
44084
|
-
flags: ["Writes and export jobs are off by default and require administrator-enabled operations, preview, --execute and exact --confirm. Downloads are blocked."],
|
|
44727
|
+
flags: ["Writes and export jobs are off by default and require administrator-enabled operations, preview, --execute and exact --confirm. Downloads are blocked.", "Declared file flags accept - to read stdin to EOF within 5 s; otherwise INVALID_INPUT. Close stdin or pass a local file path."],
|
|
44085
44728
|
example: "artium-axi tenable-axi card list --limit 1"
|
|
44086
44729
|
},
|
|
44087
44730
|
"hybrid-axi": {
|
|
44088
44731
|
usage: "artium-axi hybrid-axi [<args>]",
|
|
44089
44732
|
purpose: "Investigate Hybrid Analysis with a managed API key.",
|
|
44090
|
-
flags: ["Submissions, YARA mutations, consuming matches and four reviewed archive downloads are off by default and selected independently by an administrator. Native preview, --execute and exact --confirm remain required. Use artium-axi download --help for authenticated CLI verified saving.", transferWarning],
|
|
44733
|
+
flags: ["Submissions, YARA mutations, consuming matches and four reviewed archive downloads are off by default and selected independently by an administrator. Native preview, --execute and exact --confirm remain required. Use artium-axi download --help for authenticated CLI verified saving.", "--body-file - reads stdin to EOF within 5 s; otherwise INVALID_INPUT. Close stdin or pass a local file path.", transferWarning],
|
|
44091
44734
|
example: "artium-axi hybrid-axi quota"
|
|
44092
44735
|
},
|
|
44736
|
+
"checkpoint-axi": {
|
|
44737
|
+
usage: "artium-axi checkpoint-axi [<args>]",
|
|
44738
|
+
purpose: "Investigate Check Point Email Security with managed regional credentials.",
|
|
44739
|
+
flags: ["Writes require administrator-selected exact operations, native preview, --execute and exact --confirm. Private JSON inputs are uploaded with --input; stdin is unavailable. Downloads use artium-axi download with host-owned confirmation. Ambiguous deletes remain blocked."],
|
|
44740
|
+
example: "artium-axi checkpoint-axi email search --limit 1"
|
|
44741
|
+
},
|
|
44093
44742
|
"az-axi": {
|
|
44094
44743
|
usage: "artium-axi az-axi [<args>]",
|
|
44095
44744
|
purpose: "Run Azure commands with your managed identity.",
|
|
44096
|
-
flags: ["Arguments after az-axi are forwarded upstream, including --help."],
|
|
44745
|
+
flags: ["Arguments after az-axi are forwarded upstream, including --help.", "Query commands read non-terminal stdin to EOF only without a file, positional query or query flag. api reads stdin only without --body, --body-file or --data; method/path are not body sources. The pinned upstream accepts --body, not --data.", "Tool stdin must reach EOF within 5 s; otherwise INVALID_INPUT. Close stdin or pass --file for queries, --body or --body-file for api."],
|
|
44097
44746
|
example: "artium-axi az-axi sub list"
|
|
44098
44747
|
},
|
|
44099
44748
|
"mg-axi": {
|
|
@@ -44380,9 +45029,12 @@ ${executableBlock}
|
|
|
44380
45029
|
// src/cli/input.ts
|
|
44381
45030
|
import { createReadStream } from "node:fs";
|
|
44382
45031
|
import { basename } from "node:path";
|
|
44383
|
-
async function readBounded(stream, limit) {
|
|
45032
|
+
async function readBounded(stream, limit, stdinAlternative) {
|
|
44384
45033
|
const chunks = [];
|
|
44385
45034
|
let bytes = 0;
|
|
45035
|
+
const deadline = stdinAlternative === void 0 ? void 0 : setTimeout(() => {
|
|
45036
|
+
stream.destroy(new ArtiumError("INVALID_INPUT", `no stdin EOF after 5 s; close stdin or pass ${stdinAlternative}`));
|
|
45037
|
+
}, 5e3);
|
|
44386
45038
|
try {
|
|
44387
45039
|
for await (const chunk of stream) {
|
|
44388
45040
|
const buffer = Buffer.from(chunk);
|
|
@@ -44393,6 +45045,8 @@ async function readBounded(stream, limit) {
|
|
|
44393
45045
|
} catch (error62) {
|
|
44394
45046
|
if (error62 instanceof ArtiumError) throw error62;
|
|
44395
45047
|
throw new ArtiumError("INVALID_INPUT", "Tool input could not be read.", "Check the local input file or stdin.");
|
|
45048
|
+
} finally {
|
|
45049
|
+
clearTimeout(deadline);
|
|
44396
45050
|
}
|
|
44397
45051
|
return Buffer.concat(chunks);
|
|
44398
45052
|
}
|
|
@@ -44402,8 +45056,8 @@ async function toolInput(tool, original) {
|
|
|
44402
45056
|
const input2 = {};
|
|
44403
45057
|
let totalFileBytes = 0;
|
|
44404
45058
|
const hunting = tool === "mg-axi" && args.slice(0, 3).join(" ") === "security hunting query";
|
|
44405
|
-
if ((tool === "az-axi" || tool === "hybrid-axi" || tool === "tenable-axi" || hunting) && !args.some((arg) => ["--help", "-h", "--version", "-v", "-V"].includes(arg))) {
|
|
44406
|
-
const fileFlags = hunting ? ["file"] : tool === "tenable-axi" ? tenable_axi_default.adapterBoundary.inputFileFlags : tool === "hybrid-axi" ? hybrid_axi_default.adapterBoundary.inputFileFlags : az_axi_default.adapterBoundary.inputFileFlags;
|
|
45059
|
+
if ((tool === "checkpoint-axi" || tool === "az-axi" || tool === "hybrid-axi" || tool === "tenable-axi" || hunting) && !args.some((arg) => ["--help", "-h", "--version", "-v", "-V"].includes(arg))) {
|
|
45060
|
+
const fileFlags = hunting ? ["file"] : tool === "checkpoint-axi" ? checkpoint_axi_default.adapterBoundary.inputFileFlags : tool === "tenable-axi" ? tenable_axi_default.adapterBoundary.inputFileFlags : tool === "hybrid-axi" ? hybrid_axi_default.adapterBoundary.inputFileFlags : az_axi_default.adapterBoundary.inputFileFlags;
|
|
44407
45061
|
for (let index = 0; index < args.length; index++) {
|
|
44408
45062
|
if (args[index] === "--") break;
|
|
44409
45063
|
const [flag] = args[index].split("=");
|
|
@@ -44411,7 +45065,7 @@ async function toolInput(tool, original) {
|
|
|
44411
45065
|
const equals = args[index].indexOf("=");
|
|
44412
45066
|
const path = equals < 0 ? args[++index] : args[index].slice(equals + 1);
|
|
44413
45067
|
if (path === "-" && (tool === "tenable-axi" || tool === "hybrid-axi" && flag === "--body-file")) {
|
|
44414
|
-
input2.stdin = (await readBounded(process.stdin, inputLimits.stdinBytes)).toString("utf8");
|
|
45068
|
+
input2.stdin = (await readBounded(process.stdin, inputLimits.stdinBytes, flag)).toString("utf8");
|
|
44415
45069
|
continue;
|
|
44416
45070
|
}
|
|
44417
45071
|
if (!path || path === "-") throw new ArtiumError("UNSUPPORTED_INPUT", "A file flag requires a local file path.");
|
|
@@ -44436,20 +45090,22 @@ async function toolInput(tool, original) {
|
|
|
44436
45090
|
}
|
|
44437
45091
|
const route = az_axi_default.commands.find((route2) => ["rg query", "logs query", "api"].includes(route2.handlerCommand) && route2.command.split(" ").every((word, index) => args[leading + index] === word));
|
|
44438
45092
|
let positional = false;
|
|
45093
|
+
let explicitInput = false;
|
|
44439
45094
|
if (route) {
|
|
44440
45095
|
for (let index = leading + route.command.split(" ").length; index < args.length; index++) {
|
|
44441
45096
|
const token = args[index];
|
|
44442
45097
|
if (token === "--") {
|
|
44443
|
-
positional
|
|
45098
|
+
positional ||= index + 1 < args.length;
|
|
44444
45099
|
break;
|
|
44445
45100
|
}
|
|
44446
45101
|
if (!token.startsWith("-") || token === "-") {
|
|
44447
45102
|
positional = true;
|
|
44448
|
-
|
|
45103
|
+
continue;
|
|
44449
45104
|
}
|
|
44450
45105
|
const raw = token.slice(token.startsWith("--") ? 2 : 1).split("=")[0];
|
|
44451
45106
|
const expanded = token.startsWith("--") ? raw : route.shortFlags[raw] ?? raw;
|
|
44452
45107
|
const name = route.flagAliases[expanded] ?? expanded;
|
|
45108
|
+
if ((route.handlerCommand === "api" ? ["body", "body-file", "data"] : ["graph-query", "analytics-query"]).includes(name)) explicitInput = true;
|
|
44453
45109
|
const kind = route.flags[name];
|
|
44454
45110
|
if (token.includes("=") || !kind) continue;
|
|
44455
45111
|
if (kind === "boolean") {
|
|
@@ -44462,8 +45118,8 @@ async function toolInput(tool, original) {
|
|
|
44462
45118
|
}
|
|
44463
45119
|
}
|
|
44464
45120
|
}
|
|
44465
|
-
if (tool === "az-axi" && route && !input2.files?.length && !positional && !process.stdin.isTTY) {
|
|
44466
|
-
const stdin = await readBounded(process.stdin, inputLimits.stdinBytes);
|
|
45121
|
+
if (tool === "az-axi" && route && !input2.files?.length && !explicitInput && (route.handlerCommand === "api" || !positional) && !process.stdin.isTTY) {
|
|
45122
|
+
const stdin = await readBounded(process.stdin, inputLimits.stdinBytes, route.handlerCommand === "api" ? "--data (supported body flag: --body)" : "--file");
|
|
44467
45123
|
if (stdin.length) input2.stdin = stdin.toString("utf8");
|
|
44468
45124
|
}
|
|
44469
45125
|
}
|
|
@@ -44846,6 +45502,7 @@ async function download(args, output3, managed2) {
|
|
|
44846
45502
|
targetDigest: createHash4("sha256").update(destination).digest("hex")
|
|
44847
45503
|
});
|
|
44848
45504
|
if (!input2.success || !destination || flags.has("--sso") && flags.has("--password-stdin")) throw new ArtiumError("INVALID_INPUT");
|
|
45505
|
+
const transferRoutes2 = transferRoutesFor(transferTool(input2.data.selection.operation));
|
|
44849
45506
|
const execute = flags.has("--execute");
|
|
44850
45507
|
if (execute !== flags.has("--transfer") || execute !== flags.has("--confirm")) throw new ArtiumError("INVALID_INPUT");
|
|
44851
45508
|
let execution;
|
|
@@ -44897,7 +45554,7 @@ async function download(args, output3, managed2) {
|
|
|
44897
45554
|
{ "x-artium-reauth-ticket": ticket }
|
|
44898
45555
|
);
|
|
44899
45556
|
if (!execution) {
|
|
44900
|
-
const preview = transferPreviewSchema.parse(await request(
|
|
45557
|
+
const preview = transferPreviewSchema.parse(await request(transferRoutes2.prepare.path, input2.data));
|
|
44901
45558
|
if (preview.targetDigest !== input2.data.targetDigest) throw new ArtiumError("INVALID_RESPONSE");
|
|
44902
45559
|
announce({
|
|
44903
45560
|
...input2.data.selection,
|
|
@@ -44914,7 +45571,7 @@ async function download(args, output3, managed2) {
|
|
|
44914
45571
|
let saved = false;
|
|
44915
45572
|
let receipt = "unconfirmed";
|
|
44916
45573
|
try {
|
|
44917
|
-
const pending = transferStatusSchema.parse(await request(
|
|
45574
|
+
const pending = transferStatusSchema.parse(await request(transferRoutes2.status.path, retrieval));
|
|
44918
45575
|
if (pending.transferId !== execution.transferId || pending.outcome !== "preview" || pending.archive !== null) throw new ArtiumError("INVALID_RESPONSE");
|
|
44919
45576
|
announce({
|
|
44920
45577
|
...input2.data.selection,
|
|
@@ -44923,11 +45580,11 @@ async function download(args, output3, managed2) {
|
|
|
44923
45580
|
expiresAt: pending.expiresAt,
|
|
44924
45581
|
saveOutcome: "unconfirmed"
|
|
44925
45582
|
});
|
|
44926
|
-
const status = transferStatusSchema.parse(await request(
|
|
45583
|
+
const status = transferStatusSchema.parse(await request(transferRoutes2.execute.path, execution));
|
|
44927
45584
|
if (status.transferId !== execution.transferId || status.expiresAt !== pending.expiresAt || status.outcome !== "ready" || !status.archive) throw new ArtiumError("INVALID_RESPONSE");
|
|
44928
45585
|
archive = status.archive;
|
|
44929
45586
|
await client.artifact(
|
|
44930
|
-
|
|
45587
|
+
transferRoutes2.retrieve.path,
|
|
44931
45588
|
retrieval,
|
|
44932
45589
|
token,
|
|
44933
45590
|
ticket,
|
|
@@ -44937,19 +45594,19 @@ async function download(args, output3, managed2) {
|
|
|
44937
45594
|
saved = true;
|
|
44938
45595
|
await local.close();
|
|
44939
45596
|
try {
|
|
44940
|
-
await request(
|
|
45597
|
+
await request(transferRoutes2.receipt.path, { ...retrieval, archive, saveOutcome: "verified-save" });
|
|
44941
45598
|
receipt = "confirmed";
|
|
44942
45599
|
} catch {
|
|
44943
45600
|
}
|
|
44944
45601
|
} catch (error62) {
|
|
44945
45602
|
if (archive && !saved) {
|
|
44946
45603
|
try {
|
|
44947
|
-
await request(
|
|
45604
|
+
await request(transferRoutes2.receipt.path, { ...retrieval, archive, saveOutcome: "save-failed" });
|
|
44948
45605
|
} catch {
|
|
44949
45606
|
}
|
|
44950
45607
|
}
|
|
44951
45608
|
try {
|
|
44952
|
-
await request(
|
|
45609
|
+
await request(transferRoutes2.cancel.path, retrieval);
|
|
44953
45610
|
} catch {
|
|
44954
45611
|
}
|
|
44955
45612
|
throw error62;
|