@mrciphersmith/keryx 0.2.88 → 0.2.94

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 (4) hide show
  1. package/README.md +31 -0
  2. package/dist/cli.js +3365 -440
  3. package/dist/core.js +24 -1
  4. package/package.json +2 -2
package/dist/core.js CHANGED
@@ -3467,9 +3467,17 @@ var init_secrets = __esm(() => {
3467
3467
  confidence: 0.9,
3468
3468
  remediation: "Treat the JWT as a live credential; do not persist it."
3469
3469
  },
3470
+ {
3471
+ policyId: "secrets.credential-file-assignment",
3472
+ regex: /\b((?:aws_)?secret_access_key|aws_session_token|aws_secret_key|client_secret)\s*[:=]\s*["']?([^\s"'#]{6,})/gi,
3473
+ severity: "critical",
3474
+ confidence: 0.95,
3475
+ remediation: "Rotate the credential; it was read from a credentials file into agent-visible output.",
3476
+ valueGroup: 2
3477
+ },
3470
3478
  {
3471
3479
  policyId: "secrets.env-assignment",
3472
- regex: /\b([A-Z0-9_]*(?:DATABASE_URL|JWT_SECRET|SECRET(?:_KEY)?|API_?KEY|ACCESS_?TOKEN|AUTH_?TOKEN|PASSWORD|PRIVATE_?KEY|TOKEN))["']?\s*[:=]\s*["']?([^\s"'#]{6,})/g,
3480
+ regex: /\b([A-Z0-9_]*(?:DATABASE_URL|JWT_SECRET|SECRET(?:_KEY)?|API_?KEY|ACCESS_?KEY|ACCESS_?TOKEN|AUTH_?TOKEN|PASSWORD|PRIVATE_?KEY|TOKEN))["']?\s*[:=]\s*["']?([^\s"'#]{6,})/g,
3473
3481
  severity: "high",
3474
3482
  confidence: 0.85,
3475
3483
  remediation: "Move the secret to an untracked env file or secrets manager.",
@@ -6880,6 +6888,7 @@ __export(exports_service2, {
6880
6888
  analyze: () => analyze,
6881
6889
  createSecurityService: () => createSecurityService,
6882
6890
  memoizeResolved: () => memoizeResolved,
6891
+ redactSensitiveText: () => redactSensitiveText,
6883
6892
  runGate: () => runGate,
6884
6893
  runReport: () => runReport,
6885
6894
  runScan: () => runScan,
@@ -7100,6 +7109,7 @@ var init_service = __esm(() => {
7100
7109
  init_incidents();
7101
7110
  init_self_protect();
7102
7111
  init_path_scan();
7112
+ init_redact();
7103
7113
  RECOGNIZED_GATES = new Set(["pass", "needs-approval", "incomplete", "fail"]);
7104
7114
  });
7105
7115
 
@@ -10479,6 +10489,14 @@ function validateNode(value, schema, docRoot, valuePath, ctx, errors) {
10479
10489
  if (maximum !== undefined && value > maximum) {
10480
10490
  errors.push({ path: valuePath, message: `Expected number <= ${maximum}` });
10481
10491
  }
10492
+ const exclusiveMinimum = asNumber(schema.exclusiveMinimum);
10493
+ if (exclusiveMinimum !== undefined && value <= exclusiveMinimum) {
10494
+ errors.push({ path: valuePath, message: `Expected number > ${exclusiveMinimum}` });
10495
+ }
10496
+ const exclusiveMaximum = asNumber(schema.exclusiveMaximum);
10497
+ if (exclusiveMaximum !== undefined && value >= exclusiveMaximum) {
10498
+ errors.push({ path: valuePath, message: `Expected number < ${exclusiveMaximum}` });
10499
+ }
10482
10500
  }
10483
10501
  if (Array.isArray(value)) {
10484
10502
  if (schema.items !== undefined) {
@@ -10527,6 +10545,11 @@ function validateNode(value, schema, docRoot, valuePath, ctx, errors) {
10527
10545
  }
10528
10546
  }
10529
10547
  }
10548
+ if (isPlainObject(schema.propertyNames)) {
10549
+ for (const key of Object.keys(value)) {
10550
+ validateNode(key, schema.propertyNames, docRoot, `${valuePath}.${key}`, ctx, errors);
10551
+ }
10552
+ }
10530
10553
  const properties = isPlainObject(schema.properties) ? schema.properties : {};
10531
10554
  const additional = schema.additionalProperties;
10532
10555
  for (const [key, nested] of Object.entries(value)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mrciphersmith/keryx",
3
- "version": "0.2.88",
3
+ "version": "0.2.94",
4
4
  "description": "Version-controlled project context for AI coding agents: code graph, architecture wiki, project memory, relevant tests, quality signals, and task flows.",
5
5
  "private": false,
6
6
  "publishConfig": {
@@ -49,7 +49,7 @@
49
49
  "test:client:terminal": "bun test src/tui/ src/commands/shell",
50
50
  "test:client:streaming": "bun test src/harness/provider/",
51
51
  "test:client:cancel-resume": "bun test src/harness/run/ src/harness/resume/ src/harness/session/ src/session/ src/commands/sessions",
52
- "test:client:runtime": "bun test src/harness/ src/mcp-client/ src/agents/ src/commands/agent src/commands/harness src/commands/providers",
52
+ "test:client:runtime": "bun test src/harness/ src/mcp-client/ src/mcp-servers/ src/agents/ src/commands/agent src/commands/harness src/commands/providers",
53
53
  "test:client": "bun run test:client:terminal && bun run test:client:streaming && bun run test:client:cancel-resume && bun run test:client:runtime",
54
54
  "check": "bun run lint && bun run typecheck && bun run typecheck:scripts && bun test",
55
55
  "check:core": "bun run lint && bun run typecheck && bun run typecheck:scripts && bun run test:core",