@knowttl/artium-axi 0.0.20 → 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 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
 
@@ -199,6 +200,7 @@ See [client input handling](docs/client-reference.md#command-surface-and-subcomm
199
200
  | Azure DevOps | Reviewed mutations with administrator `allowWrites: true`; raw `api` remains GET-only. |
200
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. |
201
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. |
202
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. |
203
205
 
204
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.
@@ -221,6 +223,7 @@ After an unknown write outcome, inspect state using returned guidance before ret
221
223
  | AWX job list | Token identity with job read access |
222
224
  | Tenable One card list | See [Tenable One credential permissions](docs/tool-credentials.md#tenable-one). |
223
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). |
224
227
 
225
228
  See [tool credentials](docs/tool-credentials.md) for dedicated identities, permissions and safe credential entry.
226
229
  Artium stores shared service credentials encrypted with AES-256-GCM and never returns saved secrets to clients.
@@ -261,9 +264,9 @@ This summary follows the [CLI help registry](src/cli/help.ts); `artium-axi --hel
261
264
  | `tools` / `tools show <tool>` | Granted enabled tools / pinned help and first call |
262
265
  | `doctor` | Server, TLS, token, version and cached health; five-second request deadlines |
263
266
  | `update` | Update the [server-downloaded client](#verified-client) |
264
- | `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. |
265
268
  | `setup --host <host>` | Install managed skills and optional Claude hook |
266
- | `<tool> <args>` | Run any of the nine managed tools above |
269
+ | `<tool> <args>` | Run any of the ten managed tools above |
267
270
  | `--managed-session --help` | Private-pipe session protocol |
268
271
 
269
272
  `artium-axi --help falcon-axi` is local help; `artium-axi falcon-axi --help` authenticates and calls upstream.
@@ -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: transferSelectionSchema.options[0].shape.operation.or(transferSelectionSchema.options[1].shape.operation).or(transferSelectionSchema.options[2].shape.operation).or(transferSelectionSchema.options[3].shape.operation),
19872
- artifact_type: external_exports.enum(["bin", "dropped-files", "memory"]),
19873
- artifact_selector: sha256Schema.or(reportIdSchema),
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.20",
20767
+ version: "0.0.21",
20752
20768
  private: true,
20753
20769
  license: "MIT",
20754
20770
  type: "module",
@@ -42177,8 +42193,605 @@ var hybrid_axi_default = {
42177
42193
  ]
42178
42194
  };
42179
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
+
42180
42793
  // src/shared/tool-manifests.ts
42181
- 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 };
42182
42795
 
42183
42796
  // node_modules/.pnpm/@toon-format+toon@2.3.1/node_modules/@toon-format/toon/dist/index.mjs
42184
42797
  var NULL_LITERAL = "null";
@@ -43546,6 +44159,7 @@ function resolveDecodeOptions(options) {
43546
44159
 
43547
44160
  // src/cli/rewrite.ts
43548
44161
  var managedFlags = {
44162
+ "checkpoint-axi": checkpoint_axi_default.adapterBoundary.unsafeOverrides,
43549
44163
  "hybrid-axi": hybrid_axi_default.adapterBoundary.unsafeOverrides,
43550
44164
  "tenable-axi": tenable_axi_default.adapterBoundary.unsafeOverrides,
43551
44165
  "awx-axi": awx_axi_default.adapterBoundary.unsafeOverrides,
@@ -43571,6 +44185,25 @@ function rewriteDiscoveryHelp(help, tool) {
43571
44185
  }
43572
44186
  function rewriteSuggestions(output3, tool, truncated = false) {
43573
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
+ }
43574
44207
  if (tool === "hybrid-axi") {
43575
44208
  try {
43576
44209
  const document = decode3(output3);
@@ -43734,6 +44367,10 @@ function managedFlagRanges(command, tool) {
43734
44367
  return ranges;
43735
44368
  }
43736
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
+ }
43737
44374
  if (tool === "hybrid-axi") {
43738
44375
  help = help.split("\n").filter((line) => !/HYBRID_AXI_|SecretRefs|hybrid-axi (?:setup|config|profile)|--(?:config|profile|origin|output)\b/.test(line)).join("\n");
43739
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.";
@@ -44037,20 +44674,20 @@ var commands = {
44037
44674
  doctor: { usage: "artium-axi doctor", purpose: "Check the server, certificate, token, CLI version and cached tool health.", flags: [], example: "artium-axi doctor" },
44038
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" },
44039
44676
  download: {
44040
- usage: "artium-axi download --operation <operation> --selector <hash|report-id> --type <bin|dropped-files|memory> --destination <absolute-new-path> [--transfer <id> --execute --confirm <exact-confirm>] [--password-stdin|--sso]",
44041
- purpose: "Preview or explicitly save a hosted Hybrid Analysis archive. Operations remain unavailable until adapter enablement.",
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.",
44042
44679
  flags: [
44043
- "--operation <hash-download-bin|report-download-bin|report-download-dropped-files|report-download-memory> (required)",
44044
- "--selector <hash|report-id> (required)",
44045
- "--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)",
44046
44683
  "--destination <absolute-new-path> (required; Linux private 0700 directory, no symlink components or overwrite)",
44047
44684
  "--transfer <id> (required for execution; preview transfer ID)",
44048
44685
  "--execute (default false)",
44049
- "--confirm <exact-confirm> (required for execution; unchanged native preview string)",
44686
+ "--confirm <exact-confirm> (required for execution; unchanged preview string; Check Point confirmation is host-owned)",
44050
44687
  "--password-stdin (default false; otherwise terminal password)",
44051
44688
  "--sso (default false; browser identity confirmation)",
44052
44689
  transferWarning,
44053
- `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.`
44054
44691
  ],
44055
44692
  example: "artium-axi download --operation report-download-bin --selector synthetic-report --type bin --destination /controlled/artifacts/new-archive.bin --sso"
44056
44693
  },
@@ -44096,6 +44733,12 @@ var commands = {
44096
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],
44097
44734
  example: "artium-axi hybrid-axi quota"
44098
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
+ },
44099
44742
  "az-axi": {
44100
44743
  usage: "artium-axi az-axi [<args>]",
44101
44744
  purpose: "Run Azure commands with your managed identity.",
@@ -44413,8 +45056,8 @@ async function toolInput(tool, original) {
44413
45056
  const input2 = {};
44414
45057
  let totalFileBytes = 0;
44415
45058
  const hunting = tool === "mg-axi" && args.slice(0, 3).join(" ") === "security hunting query";
44416
- if ((tool === "az-axi" || tool === "hybrid-axi" || tool === "tenable-axi" || hunting) && !args.some((arg) => ["--help", "-h", "--version", "-v", "-V"].includes(arg))) {
44417
- 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;
44418
45061
  for (let index = 0; index < args.length; index++) {
44419
45062
  if (args[index] === "--") break;
44420
45063
  const [flag] = args[index].split("=");
@@ -44859,6 +45502,7 @@ async function download(args, output3, managed2) {
44859
45502
  targetDigest: createHash4("sha256").update(destination).digest("hex")
44860
45503
  });
44861
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));
44862
45506
  const execute = flags.has("--execute");
44863
45507
  if (execute !== flags.has("--transfer") || execute !== flags.has("--confirm")) throw new ArtiumError("INVALID_INPUT");
44864
45508
  let execution;
@@ -44910,7 +45554,7 @@ async function download(args, output3, managed2) {
44910
45554
  { "x-artium-reauth-ticket": ticket }
44911
45555
  );
44912
45556
  if (!execution) {
44913
- const preview = transferPreviewSchema.parse(await request(transferRoutes.prepare.path, input2.data));
45557
+ const preview = transferPreviewSchema.parse(await request(transferRoutes2.prepare.path, input2.data));
44914
45558
  if (preview.targetDigest !== input2.data.targetDigest) throw new ArtiumError("INVALID_RESPONSE");
44915
45559
  announce({
44916
45560
  ...input2.data.selection,
@@ -44927,7 +45571,7 @@ async function download(args, output3, managed2) {
44927
45571
  let saved = false;
44928
45572
  let receipt = "unconfirmed";
44929
45573
  try {
44930
- const pending = transferStatusSchema.parse(await request(transferRoutes.status.path, retrieval));
45574
+ const pending = transferStatusSchema.parse(await request(transferRoutes2.status.path, retrieval));
44931
45575
  if (pending.transferId !== execution.transferId || pending.outcome !== "preview" || pending.archive !== null) throw new ArtiumError("INVALID_RESPONSE");
44932
45576
  announce({
44933
45577
  ...input2.data.selection,
@@ -44936,11 +45580,11 @@ async function download(args, output3, managed2) {
44936
45580
  expiresAt: pending.expiresAt,
44937
45581
  saveOutcome: "unconfirmed"
44938
45582
  });
44939
- const status = transferStatusSchema.parse(await request(transferRoutes.execute.path, execution));
45583
+ const status = transferStatusSchema.parse(await request(transferRoutes2.execute.path, execution));
44940
45584
  if (status.transferId !== execution.transferId || status.expiresAt !== pending.expiresAt || status.outcome !== "ready" || !status.archive) throw new ArtiumError("INVALID_RESPONSE");
44941
45585
  archive = status.archive;
44942
45586
  await client.artifact(
44943
- transferRoutes.retrieve.path,
45587
+ transferRoutes2.retrieve.path,
44944
45588
  retrieval,
44945
45589
  token,
44946
45590
  ticket,
@@ -44950,19 +45594,19 @@ async function download(args, output3, managed2) {
44950
45594
  saved = true;
44951
45595
  await local.close();
44952
45596
  try {
44953
- await request(transferRoutes.receipt.path, { ...retrieval, archive, saveOutcome: "verified-save" });
45597
+ await request(transferRoutes2.receipt.path, { ...retrieval, archive, saveOutcome: "verified-save" });
44954
45598
  receipt = "confirmed";
44955
45599
  } catch {
44956
45600
  }
44957
45601
  } catch (error62) {
44958
45602
  if (archive && !saved) {
44959
45603
  try {
44960
- await request(transferRoutes.receipt.path, { ...retrieval, archive, saveOutcome: "save-failed" });
45604
+ await request(transferRoutes2.receipt.path, { ...retrieval, archive, saveOutcome: "save-failed" });
44961
45605
  } catch {
44962
45606
  }
44963
45607
  }
44964
45608
  try {
44965
- await request(transferRoutes.cancel.path, retrieval);
45609
+ await request(transferRoutes2.cancel.path, retrieval);
44966
45610
  } catch {
44967
45611
  }
44968
45612
  throw error62;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@knowttl/artium-axi",
3
- "version": "0.0.20",
3
+ "version": "0.0.21",
4
4
  "description": "Client CLI and embedded skill for the Artium managed tools server.",
5
5
  "license": "MIT",
6
6
  "type": "module",