@slicedearth/whoisleuth-cli 2.0.0 → 2.1.0

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.
Files changed (97) hide show
  1. package/cli/arguments.mjs +21 -5
  2. package/cli/artifact-validation/case-response.mjs +771 -0
  3. package/cli/artifact-validation/investigation-capsule.mjs +426 -0
  4. package/cli/artifact-validation/lookup-evidence.mjs +718 -0
  5. package/cli/artifact-validation/signed-review.mjs +598 -0
  6. package/cli/artifact-validation/structure-primitives.mjs +105 -0
  7. package/cli/artifact-verify.mjs +1 -1
  8. package/cli/assurance-command-runner.mjs +324 -0
  9. package/cli/command-reference.mjs +1175 -843
  10. package/cli/completion.mjs +56 -9
  11. package/cli/discriminated-command-handlers.mjs +11 -0
  12. package/cli/doctor.mjs +2 -2
  13. package/cli/evidence-command-runner.mjs +41 -31
  14. package/cli/export-evidence.mjs +1 -1
  15. package/cli/fail-policy.mjs +33 -8
  16. package/cli/formatters/terminal-command-formats.mjs +437 -0
  17. package/cli/formatters/terminal-lookup.mjs +758 -0
  18. package/cli/formatters/terminal-metadata.mjs +58 -0
  19. package/cli/formatters/terminal-shared.mjs +83 -0
  20. package/cli/formatters/terminal.mjs +5 -1232
  21. package/cli/history-command-runner.mjs +132 -0
  22. package/cli/inline-command-families.mjs +45 -0
  23. package/cli/inline-command-runner.mjs +55 -0
  24. package/cli/investigation-plan.mjs +9 -2
  25. package/cli/investigation-run.mjs +114 -9
  26. package/cli/lookup-brief.mjs +141 -23
  27. package/cli/lookup-browser-view.mjs +289 -0
  28. package/cli/lookup-browser.mjs +3 -288
  29. package/cli/mail-review.mjs +2 -6
  30. package/cli/offline-artifact-validation.mjs +19 -0
  31. package/cli/review-command-runner.mjs +269 -0
  32. package/cli/runner.mjs +15 -972
  33. package/cli/saved-lookup.mjs +19 -2
  34. package/cli/support-command-runner.mjs +229 -0
  35. package/cli/workflow-command-runner.mjs +129 -0
  36. package/docs/cli-reference.md +17 -10
  37. package/docs/cli.md +5 -3
  38. package/lib/availability.mjs +12 -9
  39. package/lib/bounded-contract-normalizers.mjs +2 -9
  40. package/lib/browser-library-profile.mjs +1 -2
  41. package/lib/client-behavior-profile.mjs +1 -2
  42. package/lib/credential-surface-profile.mjs +1 -1
  43. package/lib/domain-posture-analysis.mjs +10 -1
  44. package/lib/domain-posture.mjs +51 -23
  45. package/lib/evidence-export.mjs +46 -5
  46. package/lib/evidence-report-markdown.mjs +4 -0
  47. package/lib/evidence-report.mjs +50 -0
  48. package/lib/generated/cisa-kev-catalog.mjs +34 -4
  49. package/lib/generated/registrar-standing-catalogue.mjs +367 -0
  50. package/lib/json-record.mjs +12 -0
  51. package/lib/lookup-child-profile-contract.mjs +858 -0
  52. package/lib/lookup-contract-primitives.mjs +98 -0
  53. package/lib/lookup-diagnostics.mjs +96 -0
  54. package/lib/lookup-network-evidence-bounds.mjs +1 -0
  55. package/lib/lookup-response.mjs +367 -0
  56. package/lib/lookup.mjs +28 -443
  57. package/lib/page-role-profile.mjs +1 -3
  58. package/lib/project-metadata.mjs +1 -1
  59. package/lib/registrar-standing-catalogue-contract.mjs +70 -0
  60. package/lib/registrar-standing-contract.mjs +300 -0
  61. package/lib/registrar-standing.mjs +269 -0
  62. package/lib/registry-insights.mjs +2 -8
  63. package/lib/risk-scoring.mjs +26 -10
  64. package/lib/sslbl-certificates.generated.mjs +138 -136
  65. package/lib/structured-data-identity.mjs +1 -3
  66. package/lib/technology-evidence-role.mjs +51 -0
  67. package/lib/threat-intelligence-runtime.mjs +3 -3
  68. package/lib/threat-intelligence-types.mjs +13 -0
  69. package/lib/threatfox-intelligence.mjs +1 -3
  70. package/lib/tls-intelligence.mjs +1 -2
  71. package/lib/urlhaus-intelligence.mjs +1 -3
  72. package/lib/urlscan-intelligence.mjs +1 -3
  73. package/lib/website-security-posture.mjs +1 -2
  74. package/lib/website-technology.mjs +72 -23
  75. package/lib/whois-common-formats.mjs +276 -0
  76. package/lib/whois-dialects.mjs +534 -0
  77. package/lib/whois-parser-support.mjs +305 -0
  78. package/lib/whois-parser.mjs +135 -0
  79. package/lib/whois.mjs +6 -1187
  80. package/package.json +3 -3
  81. package/packages/cases/case-evidence-model.mjs +9 -0
  82. package/packages/cases/case-migration-model.mjs +17 -11
  83. package/packages/cases/case-response-model.mjs +13 -9
  84. package/packages/cases/case-response-packet.mjs +297 -112
  85. package/packages/comparison/page-similarity.mjs +23 -0
  86. package/packages/contracts/case-portability.mjs +227 -63
  87. package/packages/contracts/cli-lookup.mjs +4 -3
  88. package/packages/contracts/domain-control-manifest.mjs +1 -1
  89. package/packages/contracts/investigation-portability.mjs +1 -1
  90. package/packages/contracts/risk-calibration.mjs +2 -2
  91. package/packages/contracts/workspace-portability.mjs +34 -6
  92. package/packages/investigation/evidence-coverage-ledger.mjs +21 -0
  93. package/packages/investigation/lookup-claim-readiness.mjs +2 -2
  94. package/packages/workspace/brand-profile-model.mjs +1 -1
  95. package/packages/workspace/website-snapshot-model.mjs +79 -6
  96. package/third-party-notices.txt +1 -1
  97. package/cli/artifact-structure.mjs +0 -2507
package/cli/arguments.mjs CHANGED
@@ -204,7 +204,7 @@ function parseLookupArguments(lookupArguments) {
204
204
  else if (argument === '--fail-on') {
205
205
  if (failOn !== null)
206
206
  throw new CliUsageError('--fail-on may be supplied only once.');
207
- failOn = parseCliFailPolicies(lookupArguments[++index]);
207
+ failOn = parseCliFailPolicies(lookupArguments[++index], 'lookup');
208
208
  }
209
209
  else if (argument === '--observer' || argument === '--vantage') {
210
210
  const isObserver = argument === '--observer';
@@ -497,7 +497,7 @@ function parseBulkArguments(argv) {
497
497
  else if (argument === '--fail-on') {
498
498
  if (failOn !== null)
499
499
  throw new CliUsageError('--fail-on may be supplied only once.');
500
- failOn = parseCliFailPolicies(argv[++index]);
500
+ failOn = parseCliFailPolicies(argv[++index], 'bulk');
501
501
  }
502
502
  else if (argument === '--registered-only' || argument === '--inconclusive-only' || argument === '--errors-only') {
503
503
  if (filter !== 'all')
@@ -802,7 +802,7 @@ function parseDiscoverScanArguments(argv) {
802
802
  else if (argument === '--fail-on') {
803
803
  if (failOn !== null)
804
804
  throw new CliUsageError('--fail-on may be supplied only once.');
805
- failOn = parseCliFailPolicies(argv[++index]);
805
+ failOn = parseCliFailPolicies(argv[++index], 'discover-scan');
806
806
  }
807
807
  else if (argument === '--quiet')
808
808
  quiet = true;
@@ -1229,7 +1229,7 @@ function parseMonitorOnceArguments(argv) {
1229
1229
  else if (argument === '--fail-on') {
1230
1230
  if (failOn !== null)
1231
1231
  throw new CliUsageError('--fail-on may be supplied only once.');
1232
- failOn = parseCliFailPolicies(argv[++index]);
1232
+ failOn = parseCliFailPolicies(argv[++index], 'monitor-once');
1233
1233
  }
1234
1234
  else if (argument === '--quiet')
1235
1235
  quiet = true;
@@ -1391,6 +1391,7 @@ function parseWorkflowPlanArguments(argv) {
1391
1391
  }
1392
1392
  function parseWorkflowRunArguments(argv) {
1393
1393
  const positional = [];
1394
+ const selections = [];
1394
1395
  let resumeSource = null;
1395
1396
  let approveNetwork = false;
1396
1397
  let output = 'terminal';
@@ -1405,6 +1406,21 @@ function parseWorkflowRunArguments(argv) {
1405
1406
  throw new CliUsageError('--json may be supplied only once.');
1406
1407
  output = 'json';
1407
1408
  }
1409
+ else if (argument === '--select') {
1410
+ const value = argv[++index];
1411
+ if (!value)
1412
+ throw new CliUsageError('--select requires <step-id>=<path-or-value>.');
1413
+ const separator = value.indexOf('=');
1414
+ const stepId = separator === -1 ? '' : value.slice(0, separator);
1415
+ const selection = separator === -1 ? '' : value.slice(separator + 1);
1416
+ if (!/^[a-z0-9]+(?:-[a-z0-9]+)*$/u.test(stepId) || !selection.trim()) {
1417
+ throw new CliUsageError('--select requires <step-id>=<path-or-value>.');
1418
+ }
1419
+ if (selection.startsWith('-')) {
1420
+ throw new CliUsageError('--select values cannot start with a hyphen; prefix a file path with ./ when needed.');
1421
+ }
1422
+ selections.push(Object.freeze({ stepId, value: selection }));
1423
+ }
1408
1424
  else if (argument === '--resume') {
1409
1425
  if (resumeSource !== null)
1410
1426
  throw new CliUsageError('--resume may be supplied only once.');
@@ -1435,7 +1451,7 @@ function parseWorkflowRunArguments(argv) {
1435
1451
  }
1436
1452
  if (quiet && output !== 'terminal')
1437
1453
  throw new CliUsageError('--quiet cannot be combined with machine-readable output.');
1438
- return { action: 'workflow-run', recipe: recipe, subject: positional[1], resumeSource, approveNetwork, output, quiet, color };
1454
+ return { action: 'workflow-run', recipe: recipe, subject: positional[1], resumeSource, selections: Object.freeze(selections), approveNetwork, output, quiet, color };
1439
1455
  }
1440
1456
  function parseDiffArguments(argv) {
1441
1457
  let leftSource = null;