rehydra 0.5.2 → 0.6.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 (86) hide show
  1. package/README.md +28 -0
  2. package/dist/cli/commands/anonymize.d.ts.map +1 -1
  3. package/dist/cli/commands/anonymize.js +16 -0
  4. package/dist/cli/commands/anonymize.js.map +1 -1
  5. package/dist/cli/commands/inspect.d.ts.map +1 -1
  6. package/dist/cli/commands/inspect.js +7 -0
  7. package/dist/cli/commands/inspect.js.map +1 -1
  8. package/dist/cli/main.d.ts +2 -0
  9. package/dist/cli/main.d.ts.map +1 -1
  10. package/dist/cli/main.js +6 -0
  11. package/dist/cli/main.js.map +1 -1
  12. package/dist/core/anonymizer.d.ts +8 -1
  13. package/dist/core/anonymizer.d.ts.map +1 -1
  14. package/dist/core/anonymizer.js +68 -2
  15. package/dist/core/anonymizer.js.map +1 -1
  16. package/dist/index.d.ts +2 -0
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +1 -0
  19. package/dist/index.js.map +1 -1
  20. package/dist/opencode-plugin/index.d.ts +7 -0
  21. package/dist/opencode-plugin/index.d.ts.map +1 -0
  22. package/dist/opencode-plugin/index.js +6 -0
  23. package/dist/opencode-plugin/index.js.map +1 -0
  24. package/dist/opencode-plugin/plugin.d.ts +61 -0
  25. package/dist/opencode-plugin/plugin.d.ts.map +1 -0
  26. package/dist/opencode-plugin/plugin.js +234 -0
  27. package/dist/opencode-plugin/plugin.js.map +1 -0
  28. package/dist/opencode-plugin/types.d.ts +28 -0
  29. package/dist/opencode-plugin/types.d.ts.map +1 -0
  30. package/dist/opencode-plugin/types.js +5 -0
  31. package/dist/opencode-plugin/types.js.map +1 -0
  32. package/dist/pipeline/tagger.js +1 -1
  33. package/dist/pipeline/tagger.js.map +1 -1
  34. package/dist/recognizers/index.d.ts +2 -0
  35. package/dist/recognizers/index.d.ts.map +1 -1
  36. package/dist/recognizers/index.js +2 -0
  37. package/dist/recognizers/index.js.map +1 -1
  38. package/dist/recognizers/secrets/api-key.d.ts +6 -0
  39. package/dist/recognizers/secrets/api-key.d.ts.map +1 -0
  40. package/dist/recognizers/secrets/api-key.js +40 -0
  41. package/dist/recognizers/secrets/api-key.js.map +1 -0
  42. package/dist/recognizers/secrets/aws-credentials.d.ts +7 -0
  43. package/dist/recognizers/secrets/aws-credentials.d.ts.map +1 -0
  44. package/dist/recognizers/secrets/aws-credentials.js +68 -0
  45. package/dist/recognizers/secrets/aws-credentials.js.map +1 -0
  46. package/dist/recognizers/secrets/config-secret.d.ts +8 -0
  47. package/dist/recognizers/secrets/config-secret.d.ts.map +1 -0
  48. package/dist/recognizers/secrets/config-secret.js +59 -0
  49. package/dist/recognizers/secrets/config-secret.js.map +1 -0
  50. package/dist/recognizers/secrets/connection-string.d.ts +6 -0
  51. package/dist/recognizers/secrets/connection-string.d.ts.map +1 -0
  52. package/dist/recognizers/secrets/connection-string.js +40 -0
  53. package/dist/recognizers/secrets/connection-string.js.map +1 -0
  54. package/dist/recognizers/secrets/env-var.d.ts +8 -0
  55. package/dist/recognizers/secrets/env-var.d.ts.map +1 -0
  56. package/dist/recognizers/secrets/env-var.js +54 -0
  57. package/dist/recognizers/secrets/env-var.js.map +1 -0
  58. package/dist/recognizers/secrets/index.d.ts +19 -0
  59. package/dist/recognizers/secrets/index.d.ts.map +1 -0
  60. package/dist/recognizers/secrets/index.js +35 -0
  61. package/dist/recognizers/secrets/index.js.map +1 -0
  62. package/dist/recognizers/secrets/jwt.d.ts +6 -0
  63. package/dist/recognizers/secrets/jwt.d.ts.map +1 -0
  64. package/dist/recognizers/secrets/jwt.js +47 -0
  65. package/dist/recognizers/secrets/jwt.js.map +1 -0
  66. package/dist/recognizers/secrets/key-patterns.d.ts +10 -0
  67. package/dist/recognizers/secrets/key-patterns.d.ts.map +1 -0
  68. package/dist/recognizers/secrets/key-patterns.js +15 -0
  69. package/dist/recognizers/secrets/key-patterns.js.map +1 -0
  70. package/dist/recognizers/secrets/literal-value.d.ts +10 -0
  71. package/dist/recognizers/secrets/literal-value.d.ts.map +1 -0
  72. package/dist/recognizers/secrets/literal-value.js +48 -0
  73. package/dist/recognizers/secrets/literal-value.js.map +1 -0
  74. package/dist/recognizers/secrets/private-key.d.ts +6 -0
  75. package/dist/recognizers/secrets/private-key.d.ts.map +1 -0
  76. package/dist/recognizers/secrets/private-key.js +16 -0
  77. package/dist/recognizers/secrets/private-key.js.map +1 -0
  78. package/dist/types/index.d.ts +15 -0
  79. package/dist/types/index.d.ts.map +1 -1
  80. package/dist/types/index.js +6 -4
  81. package/dist/types/index.js.map +1 -1
  82. package/dist/types/pii-types.d.ts +12 -1
  83. package/dist/types/pii-types.d.ts.map +1 -1
  84. package/dist/types/pii-types.js +28 -0
  85. package/dist/types/pii-types.js.map +1 -1
  86. package/package.json +5 -1
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Connection String Recognizer
3
+ * Detects database/service URIs with embedded credentials
4
+ */
5
+ import { createRegexRecognizer } from "../base.js";
6
+ import { PIIType } from "../../types/index.js";
7
+ const PLACEHOLDER_PASSWORDS = new Set([
8
+ "password", "pass", "changeme", "secret", "xxx", "yyy",
9
+ "your-password", "your_password", "example", "<password>",
10
+ ]);
11
+ export const connectionStringRecognizer = createRegexRecognizer({
12
+ type: PIIType.CONNECTION_STRING,
13
+ name: "Connection String",
14
+ defaultConfidence: 0.93,
15
+ patterns: [
16
+ // postgres://user:password@host/db
17
+ /\b(?:postgres(?:ql)?|mysql|mariadb):\/\/[^\s:]+:[^\s@]+@[^\s]+/g,
18
+ // mongodb+srv://user:password@host/db
19
+ /\bmongodb(?:\+srv)?:\/\/[^\s:]+:[^\s@]+@[^\s]+/g,
20
+ // redis://user:password@host:port or redis://:password@host:port
21
+ /\brediss?:\/\/(?:[^\s:]*:)?[^\s@]+@[^\s]+/g,
22
+ // amqp://user:password@host:port
23
+ /\bamqps?:\/\/[^\s:]+:[^\s@]+@[^\s]+/g,
24
+ ],
25
+ validate(match) {
26
+ // Extract password portion (between first : after // and @)
27
+ const credMatch = match.match(/:\/\/[^:]*:([^@]+)@/);
28
+ if (credMatch === null)
29
+ return false;
30
+ const password = credMatch[1];
31
+ // Reject placeholder passwords
32
+ if (PLACEHOLDER_PASSWORDS.has(password.toLowerCase()))
33
+ return false;
34
+ // Reject very short passwords (likely placeholders)
35
+ if (password.length < 4)
36
+ return false;
37
+ return true;
38
+ },
39
+ });
40
+ //# sourceMappingURL=connection-string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-string.js","sourceRoot":"","sources":["../../../src/recognizers/secrets/connection-string.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACpC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK;IACtD,eAAe,EAAE,eAAe,EAAE,SAAS,EAAE,YAAY;CAC1D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,qBAAqB,CAAC;IAC9D,IAAI,EAAE,OAAO,CAAC,iBAAiB;IAC/B,IAAI,EAAE,mBAAmB;IACzB,iBAAiB,EAAE,IAAI;IACvB,QAAQ,EAAE;QACR,mCAAmC;QACnC,iEAAiE;QACjE,sCAAsC;QACtC,iDAAiD;QACjD,iEAAiE;QACjE,4CAA4C;QAC5C,iCAAiC;QACjC,sCAAsC;KACvC;IACD,QAAQ,CAAC,KAAa;QACpB,4DAA4D;QAC5D,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACrD,IAAI,SAAS,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QAErC,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC;QAC/B,+BAA+B;QAC/B,IAAI,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YAAE,OAAO,KAAK,CAAC;QACpE,oDAAoD;QACpD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAEtC,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Environment Variable Secret Recognizer
3
+ * Detects secrets in .env-style KEY=VALUE lines
4
+ */
5
+ import type { Recognizer } from "../base.js";
6
+ export declare function createEnvVarSecretRecognizer(minValueLength?: number, extraKeyPatterns?: RegExp[]): Recognizer;
7
+ export declare const envVarSecretRecognizer: Recognizer;
8
+ //# sourceMappingURL=env-var.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-var.d.ts","sourceRoot":"","sources":["../../../src/recognizers/secrets/env-var.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAa7C,wBAAgB,4BAA4B,CAC1C,cAAc,GAAE,MAA2B,EAC3C,gBAAgB,GAAE,MAAM,EAAO,GAC9B,UAAU,CAyCZ;AAED,eAAO,MAAM,sBAAsB,YAAiC,CAAC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Environment Variable Secret Recognizer
3
+ * Detects secrets in .env-style KEY=VALUE lines
4
+ */
5
+ import { PIIType, DetectionSource } from "../../types/index.js";
6
+ import { isSecretKeyName } from "./key-patterns.js";
7
+ const ENV_VAR_LINE = /^[ \t]*(?:export\s+)?([A-Za-z_][A-Za-z0-9_]*)[ \t]*=[ \t]*["']?(.+?)["']?$/gm;
8
+ const PLACEHOLDER_VALUES = new Set([
9
+ "changeme", "your-api-key-here", "your_api_key_here",
10
+ "xxx", "yyy", "zzz", "todo", "fixme", "replace_me",
11
+ "example", "test", "dummy", "placeholder",
12
+ ]);
13
+ const DEFAULT_MIN_LENGTH = 4;
14
+ export function createEnvVarSecretRecognizer(minValueLength = DEFAULT_MIN_LENGTH, extraKeyPatterns = []) {
15
+ return {
16
+ type: PIIType.ENV_VAR_SECRET,
17
+ name: "Environment Variable Secret",
18
+ defaultConfidence: 0.88,
19
+ find(text) {
20
+ const matches = [];
21
+ for (const match of text.matchAll(ENV_VAR_LINE)) {
22
+ if (match.index === undefined)
23
+ continue;
24
+ const key = match[1];
25
+ const value = match[2];
26
+ // Check if key name suggests a secret
27
+ const keyIsSecret = isSecretKeyName(key)
28
+ || extraKeyPatterns.some((p) => p.test(key));
29
+ if (!keyIsSecret)
30
+ continue;
31
+ // Filter out short or placeholder values
32
+ if (value.length < minValueLength)
33
+ continue;
34
+ if (PLACEHOLDER_VALUES.has(value.toLowerCase()))
35
+ continue;
36
+ // Span covers the VALUE portion only
37
+ const fullLine = match[0];
38
+ const valueStartInLine = fullLine.lastIndexOf(value);
39
+ const valueStart = match.index + valueStartInLine;
40
+ matches.push({
41
+ type: PIIType.ENV_VAR_SECRET,
42
+ start: valueStart,
43
+ end: valueStart + value.length,
44
+ confidence: 0.88,
45
+ source: DetectionSource.REGEX,
46
+ text: value,
47
+ });
48
+ }
49
+ return matches;
50
+ },
51
+ };
52
+ }
53
+ export const envVarSecretRecognizer = createEnvVarSecretRecognizer();
54
+ //# sourceMappingURL=env-var.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-var.js","sourceRoot":"","sources":["../../../src/recognizers/secrets/env-var.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAkB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEhF,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,YAAY,GAAG,8EAA8E,CAAC;AAEpG,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACjC,UAAU,EAAE,mBAAmB,EAAE,mBAAmB;IACpD,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY;IAClD,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa;CAC1C,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAE7B,MAAM,UAAU,4BAA4B,CAC1C,iBAAyB,kBAAkB,EAC3C,mBAA6B,EAAE;IAE/B,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,cAAc;QAC5B,IAAI,EAAE,6BAA6B;QACnC,iBAAiB,EAAE,IAAI;QAEvB,IAAI,CAAC,IAAY;YACf,MAAM,OAAO,GAAgB,EAAE,CAAC;YAEhC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBAChD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;oBAAE,SAAS;gBACxC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;gBACtB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;gBAExB,sCAAsC;gBACtC,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC;uBACnC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC/C,IAAI,CAAC,WAAW;oBAAE,SAAS;gBAE3B,yCAAyC;gBACzC,IAAI,KAAK,CAAC,MAAM,GAAG,cAAc;oBAAE,SAAS;gBAC5C,IAAI,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;oBAAE,SAAS;gBAE1D,qCAAqC;gBACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBACrD,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,GAAG,gBAAgB,CAAC;gBAElD,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,OAAO,CAAC,cAAc;oBAC5B,KAAK,EAAE,UAAU;oBACjB,GAAG,EAAE,UAAU,GAAG,KAAK,CAAC,MAAM;oBAC9B,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,eAAe,CAAC,KAAK;oBAC7B,IAAI,EAAE,KAAK;iBACZ,CAAC,CAAC;YACL,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,4BAA4B,EAAE,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Secret Recognizers Module
3
+ * Exports all secret/credential recognizers
4
+ */
5
+ import type { Recognizer } from "../base.js";
6
+ export { apiKeyRecognizer } from "./api-key.js";
7
+ export { privateKeyRecognizer } from "./private-key.js";
8
+ export { jwtRecognizer } from "./jwt.js";
9
+ export { connectionStringRecognizer } from "./connection-string.js";
10
+ export { awsCredentialsRecognizer } from "./aws-credentials.js";
11
+ export { envVarSecretRecognizer, createEnvVarSecretRecognizer } from "./env-var.js";
12
+ export { configSecretRecognizer, createConfigSecretRecognizer } from "./config-secret.js";
13
+ export { createLiteralValueRecognizer } from "./literal-value.js";
14
+ export { isSecretKeyName } from "./key-patterns.js";
15
+ /**
16
+ * Creates all secret recognizers
17
+ */
18
+ export declare function createSecretRecognizers(): Recognizer[];
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/recognizers/secrets/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAS7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AACpF,OAAO,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,UAAU,EAAE,CAUtD"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Secret Recognizers Module
3
+ * Exports all secret/credential recognizers
4
+ */
5
+ import { apiKeyRecognizer } from "./api-key.js";
6
+ import { privateKeyRecognizer } from "./private-key.js";
7
+ import { jwtRecognizer } from "./jwt.js";
8
+ import { connectionStringRecognizer } from "./connection-string.js";
9
+ import { awsCredentialsRecognizer } from "./aws-credentials.js";
10
+ import { envVarSecretRecognizer } from "./env-var.js";
11
+ import { configSecretRecognizer } from "./config-secret.js";
12
+ export { apiKeyRecognizer } from "./api-key.js";
13
+ export { privateKeyRecognizer } from "./private-key.js";
14
+ export { jwtRecognizer } from "./jwt.js";
15
+ export { connectionStringRecognizer } from "./connection-string.js";
16
+ export { awsCredentialsRecognizer } from "./aws-credentials.js";
17
+ export { envVarSecretRecognizer, createEnvVarSecretRecognizer } from "./env-var.js";
18
+ export { configSecretRecognizer, createConfigSecretRecognizer } from "./config-secret.js";
19
+ export { createLiteralValueRecognizer } from "./literal-value.js";
20
+ export { isSecretKeyName } from "./key-patterns.js";
21
+ /**
22
+ * Creates all secret recognizers
23
+ */
24
+ export function createSecretRecognizers() {
25
+ return [
26
+ apiKeyRecognizer,
27
+ privateKeyRecognizer,
28
+ jwtRecognizer,
29
+ connectionStringRecognizer,
30
+ awsCredentialsRecognizer,
31
+ envVarSecretRecognizer,
32
+ configSecretRecognizer,
33
+ ];
34
+ }
35
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/recognizers/secrets/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AACpF,OAAO,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO;QACL,gBAAgB;QAChB,oBAAoB;QACpB,aAAa;QACb,0BAA0B;QAC1B,wBAAwB;QACxB,sBAAsB;QACtB,sBAAsB;KACvB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * JWT Recognizer
3
+ * Detects JSON Web Tokens (three base64url dot-separated segments)
4
+ */
5
+ export declare const jwtRecognizer: import("../base.js").Recognizer;
6
+ //# sourceMappingURL=jwt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../../src/recognizers/secrets/jwt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoBH,eAAO,MAAM,aAAa,iCAuBxB,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * JWT Recognizer
3
+ * Detects JSON Web Tokens (three base64url dot-separated segments)
4
+ */
5
+ import { createRegexRecognizer } from "../base.js";
6
+ import { PIIType } from "../../types/index.js";
7
+ /**
8
+ * Decode base64url to string (no padding required)
9
+ */
10
+ function base64urlDecode(str) {
11
+ try {
12
+ // Replace base64url chars with standard base64
13
+ const base64 = str.replace(/-/g, "+").replace(/_/g, "/");
14
+ // Add padding if needed
15
+ const padded = base64 + "=".repeat((4 - (base64.length % 4)) % 4);
16
+ return atob(padded);
17
+ }
18
+ catch {
19
+ return null;
20
+ }
21
+ }
22
+ export const jwtRecognizer = createRegexRecognizer({
23
+ type: PIIType.JWT,
24
+ name: "JWT",
25
+ defaultConfidence: 0.95,
26
+ patterns: [
27
+ // JWT: eyJ header prefix, three base64url segments separated by dots
28
+ /\beyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\b/g,
29
+ ],
30
+ validate(match) {
31
+ const parts = match.split(".");
32
+ if (parts.length !== 3)
33
+ return false;
34
+ // Decode header and verify it has an "alg" field
35
+ const header = base64urlDecode(parts[0]);
36
+ if (header === null)
37
+ return false;
38
+ try {
39
+ const parsed = JSON.parse(header);
40
+ return typeof parsed.alg === "string";
41
+ }
42
+ catch {
43
+ return false;
44
+ }
45
+ },
46
+ });
47
+ //# sourceMappingURL=jwt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt.js","sourceRoot":"","sources":["../../../src/recognizers/secrets/jwt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C;;GAEG;AACH,SAAS,eAAe,CAAC,GAAW;IAClC,IAAI,CAAC;QACH,+CAA+C;QAC/C,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACzD,wBAAwB;QACxB,MAAM,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,qBAAqB,CAAC;IACjD,IAAI,EAAE,OAAO,CAAC,GAAG;IACjB,IAAI,EAAE,KAAK;IACX,iBAAiB,EAAE,IAAI;IACvB,QAAQ,EAAE;QACR,qEAAqE;QACrE,oEAAoE;KACrE;IACD,QAAQ,CAAC,KAAa;QACpB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAErC,iDAAiD;QACjD,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;QAC1C,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QAElC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAA4B,CAAC;YAC7D,OAAO,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Shared secret key name patterns
3
+ * Used by ENV_VAR_SECRET and CONFIG_SECRET recognizers
4
+ */
5
+ /**
6
+ * Checks if a key/variable name suggests it holds a secret value.
7
+ * Handles snake_case, camelCase, and kebab-case.
8
+ */
9
+ export declare function isSecretKeyName(key: string): boolean;
10
+ //# sourceMappingURL=key-patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key-patterns.d.ts","sourceRoot":"","sources":["../../../src/recognizers/secrets/key-patterns.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAIpD"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Shared secret key name patterns
3
+ * Used by ENV_VAR_SECRET and CONFIG_SECRET recognizers
4
+ */
5
+ const SECRET_KEY_PATTERN = /^(?:.*_)?(?:password|passwd|pwd|pass|secret|secret_key|secretkey|token|access_token|refresh_token|auth_token|api_key|apikey|api_secret|private_key|privatekey|credential|credentials|connection_string|connectionstring|database_url|dsn|encryption_key|signing_key|client_secret|app_secret|master_key|auth|bearer|jwt|api_token)(?:_.*)?$/i;
6
+ /**
7
+ * Checks if a key/variable name suggests it holds a secret value.
8
+ * Handles snake_case, camelCase, and kebab-case.
9
+ */
10
+ export function isSecretKeyName(key) {
11
+ // Normalize camelCase/PascalCase to snake_case for matching
12
+ const normalized = key.replace(/([a-z])([A-Z])/g, "$1_$2").replace(/-/g, "_");
13
+ return SECRET_KEY_PATTERN.test(normalized);
14
+ }
15
+ //# sourceMappingURL=key-patterns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key-patterns.js","sourceRoot":"","sources":["../../../src/recognizers/secrets/key-patterns.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,kBAAkB,GAAG,8UAA8U,CAAC;AAE1W;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,4DAA4D;IAC5D,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC9E,OAAO,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Literal Value Recognizer
3
+ * Scans for exact occurrences of known secret values (e.g., from .env files)
4
+ */
5
+ import type { Recognizer } from "../base.js";
6
+ /**
7
+ * Creates a recognizer that matches exact known secret values in text.
8
+ */
9
+ export declare function createLiteralValueRecognizer(values: string[], minLength?: number): Recognizer;
10
+ //# sourceMappingURL=literal-value.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"literal-value.d.ts","sourceRoot":"","sources":["../../../src/recognizers/secrets/literal-value.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAU7C;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,MAAM,EAAE,EAChB,SAAS,GAAE,MAAU,GACpB,UAAU,CAuCZ"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Literal Value Recognizer
3
+ * Scans for exact occurrences of known secret values (e.g., from .env files)
4
+ */
5
+ import { PIIType, DetectionSource } from "../../types/index.js";
6
+ const COMMON_NON_SECRET_VALUES = new Set([
7
+ "true", "false", "yes", "no", "on", "off",
8
+ "null", "undefined", "none",
9
+ "0", "1", "localhost", "127.0.0.1", "0.0.0.0",
10
+ "development", "production", "staging", "test",
11
+ "utf-8", "utf8", "ascii",
12
+ ]);
13
+ /**
14
+ * Creates a recognizer that matches exact known secret values in text.
15
+ */
16
+ export function createLiteralValueRecognizer(values, minLength = 4) {
17
+ // Filter out short and common values
18
+ const secretValues = values.filter((v) => v.length >= minLength && !COMMON_NON_SECRET_VALUES.has(v.toLowerCase()));
19
+ // Sort by length descending so longer matches are found first
20
+ secretValues.sort((a, b) => b.length - a.length);
21
+ return {
22
+ type: PIIType.ENV_VAR_SECRET,
23
+ name: "Literal Secret Value",
24
+ defaultConfidence: 1.0,
25
+ find(text) {
26
+ const matches = [];
27
+ for (const value of secretValues) {
28
+ let start = 0;
29
+ while (start < text.length) {
30
+ const idx = text.indexOf(value, start);
31
+ if (idx === -1)
32
+ break;
33
+ matches.push({
34
+ type: PIIType.ENV_VAR_SECRET,
35
+ start: idx,
36
+ end: idx + value.length,
37
+ confidence: 1.0,
38
+ source: DetectionSource.REGEX,
39
+ text: value,
40
+ });
41
+ start = idx + value.length;
42
+ }
43
+ }
44
+ return matches;
45
+ },
46
+ };
47
+ }
48
+ //# sourceMappingURL=literal-value.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"literal-value.js","sourceRoot":"","sources":["../../../src/recognizers/secrets/literal-value.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAkB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGhF,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC;IACvC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK;IACzC,MAAM,EAAE,WAAW,EAAE,MAAM;IAC3B,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS;IAC7C,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM;IAC9C,OAAO,EAAE,MAAM,EAAE,OAAO;CACzB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAC1C,MAAgB,EAChB,YAAoB,CAAC;IAErB,qCAAqC;IACrC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAChC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,SAAS,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAC/E,CAAC;IAEF,8DAA8D;IAC9D,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAEjD,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,cAAc;QAC5B,IAAI,EAAE,sBAAsB;QAC5B,iBAAiB,EAAE,GAAG;QAEtB,IAAI,CAAC,IAAY;YACf,MAAM,OAAO,GAAgB,EAAE,CAAC;YAEhC,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;gBACjC,IAAI,KAAK,GAAG,CAAC,CAAC;gBACd,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;oBAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;oBACvC,IAAI,GAAG,KAAK,CAAC,CAAC;wBAAE,MAAM;oBAEtB,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,OAAO,CAAC,cAAc;wBAC5B,KAAK,EAAE,GAAG;wBACV,GAAG,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM;wBACvB,UAAU,EAAE,GAAG;wBACf,MAAM,EAAE,eAAe,CAAC,KAAK;wBAC7B,IAAI,EAAE,KAAK;qBACZ,CAAC,CAAC;oBAEH,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;gBAC7B,CAAC;YACH,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Private Key Recognizer
3
+ * Detects PEM-encoded private keys
4
+ */
5
+ export declare const privateKeyRecognizer: import("../base.js").Recognizer;
6
+ //# sourceMappingURL=private-key.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"private-key.d.ts","sourceRoot":"","sources":["../../../src/recognizers/secrets/private-key.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,eAAO,MAAM,oBAAoB,iCAQ/B,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Private Key Recognizer
3
+ * Detects PEM-encoded private keys
4
+ */
5
+ import { createRegexRecognizer } from "../base.js";
6
+ import { PIIType } from "../../types/index.js";
7
+ export const privateKeyRecognizer = createRegexRecognizer({
8
+ type: PIIType.PRIVATE_KEY,
9
+ name: "Private Key",
10
+ defaultConfidence: 0.99,
11
+ patterns: [
12
+ // Full PEM block (multiline)
13
+ /-----BEGIN (?:RSA |EC |DSA |OPENSSH |PGP |ENCRYPTED )?PRIVATE KEY-----[\s\S]*?-----END (?:RSA |EC |DSA |OPENSSH |PGP |ENCRYPTED )?PRIVATE KEY-----/g,
14
+ ],
15
+ });
16
+ //# sourceMappingURL=private-key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"private-key.js","sourceRoot":"","sources":["../../../src/recognizers/secrets/private-key.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;IACxD,IAAI,EAAE,OAAO,CAAC,WAAW;IACzB,IAAI,EAAE,aAAa;IACnB,iBAAiB,EAAE,IAAI;IACvB,QAAQ,EAAE;QACR,6BAA6B;QAC7B,qJAAqJ;KACtJ;CACF,CAAC,CAAC"}
@@ -195,6 +195,21 @@ export interface AnonymizationResult {
195
195
  /**
196
196
  * Creates a default anonymization policy with all types enabled
197
197
  */
198
+ /**
199
+ * Secrets/credentials detection configuration
200
+ */
201
+ export interface SecretsConfig {
202
+ /** Enable secrets/credentials detection */
203
+ enabled: boolean;
204
+ /** .env file paths to parse for known secret values */
205
+ envFiles?: string[];
206
+ /** Explicit values to always redact */
207
+ redactValues?: string[];
208
+ /** Additional key name patterns for ENV_VAR_SECRET / CONFIG_SECRET detection */
209
+ secretKeyPatterns?: RegExp[];
210
+ /** Minimum value length to consider as a secret (default: 4) */
211
+ minValueLength?: number;
212
+ }
198
213
  export declare function createDefaultPolicy(): AnonymizationPolicy;
199
214
  /**
200
215
  * Merges a partial policy with defaults
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAyB,MAAM,gBAAgB,CAAC;AAEhE,cAAc,gBAAgB,CAAC;AAE/B;;GAEG;AACH,oBAAY,eAAe;IACzB,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,MAAM,WAAW;CAClB;AAED;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG,WAAW,CAAC;AAM7D;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAErE;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEtE;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,iCAAiC;IACjC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,gCAAgC,GAAG,CAAC,QAAQ,EAAE;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,KAAK,IAAI,CAAC;AAEX;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,kBAAkB,CAAC,EAAE,gCAAgC,CAAC;IAEtD;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,mBAAmB;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,gFAAgF;IAChF,EAAE,EAAE,MAAM,CAAC;IACX,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,GAAG,EAAE,MAAM,CAAC;IACZ,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,MAAM,EAAE,eAAe,CAAC;IACxB,qEAAqE;IACrE,QAAQ,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,mBAAmB;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,GAAG,EAAE,MAAM,CAAC;IACZ,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,MAAM,EAAE,eAAe,CAAC;IACxB,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,IAAI,EAAE,OAAO,CAAC;IACd,mCAAmC;IACnC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,sDAAsD;IACtD,YAAY,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3B,2CAA2C;IAC3C,iBAAiB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAChC,yCAAyC;IACzC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9B,yFAAyF;IACzF,YAAY,EAAE,OAAO,EAAE,CAAC;IACxB,4DAA4D;IAC5D,oBAAoB,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3C,yDAAyD;IACzD,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,iEAAiE;IACjE,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,iDAAiD;IACjD,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,8DAA8D;IAC9D,sBAAsB,EAAE,OAAO,CAAC;IAChC,oDAAoD;IACpD,cAAc,EAAE,OAAO,CAAC;IACxB,yFAAyF;IACzF,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,qCAAqC;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,YAAY,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACtC,wCAAwC;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,6BAA6B;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,gBAAgB,EAAE,MAAM,CAAC;IACzB,4CAA4C;IAC5C,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,iDAAiD;IACjD,cAAc,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,EAAE,CAAC;IAC7C,yFAAyF;IACzF,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,yCAAyC;IACzC,KAAK,EAAE,kBAAkB,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,mBAAmB,CAyCzD;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACpC,mBAAmB,CA+BrB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { PIIType, DEFAULT_TYPE_PRIORITY } from "./pii-types.js";
1
+ import { PIIType, DEFAULT_TYPE_PRIORITY, SECRET_PII_TYPES } from "./pii-types.js";
2
2
  export * from "./pii-types.js";
3
3
  /**
4
4
  * Source of entity detection
@@ -9,11 +9,13 @@ export var DetectionSource;
9
9
  DetectionSource["NER"] = "NER";
10
10
  DetectionSource["HYBRID"] = "HYBRID";
11
11
  })(DetectionSource || (DetectionSource = {}));
12
- /**
13
- * Creates a default anonymization policy with all types enabled
14
- */
15
12
  export function createDefaultPolicy() {
16
13
  const allTypes = new Set(Object.values(PIIType));
14
+ // Secret types are opt-in only — exclude from default enabled set
15
+ const secretTypeSet = new Set(SECRET_PII_TYPES);
16
+ for (const secretType of secretTypeSet) {
17
+ allTypes.delete(secretType);
18
+ }
17
19
  const defaultThresholds = new Map();
18
20
  for (const type of allTypes) {
19
21
  // Higher threshold for NER-detected types (more uncertainty)
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,14 @@ export declare enum PIIType {
19
19
  NATIONAL_ID = "NATIONAL_ID",
20
20
  DATE_OF_BIRTH = "DATE_OF_BIRTH",
21
21
  CASE_ID = "CASE_ID",
22
- CUSTOMER_ID = "CUSTOMER_ID"
22
+ CUSTOMER_ID = "CUSTOMER_ID",
23
+ API_KEY = "API_KEY",
24
+ PRIVATE_KEY = "PRIVATE_KEY",
25
+ JWT = "JWT",
26
+ CONNECTION_STRING = "CONNECTION_STRING",
27
+ AWS_CREDENTIALS = "AWS_CREDENTIALS",
28
+ ENV_VAR_SECRET = "ENV_VAR_SECRET",
29
+ CONFIG_SECRET = "CONFIG_SECRET"
23
30
  }
24
31
  /**
25
32
  * All PII types as a readonly array for iteration
@@ -29,6 +36,10 @@ export declare const ALL_PII_TYPES: readonly PIIType[];
29
36
  * PII types that are detected via regex (structured PII)
30
37
  */
31
38
  export declare const REGEX_PII_TYPES: readonly PIIType[];
39
+ /**
40
+ * PII types that are secrets/credentials (opt-in, regex-based)
41
+ */
42
+ export declare const SECRET_PII_TYPES: readonly PIIType[];
32
43
  /**
33
44
  * PII types that are detected via NER model (soft PII)
34
45
  */
@@ -1 +1 @@
1
- {"version":3,"file":"pii-types.d.ts","sourceRoot":"","sources":["../../src/types/pii-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,OAAO;IAEjB,MAAM,WAAW;IACjB,GAAG,QAAQ;IACX,QAAQ,aAAa;IACrB,OAAO,YAAY;IAGnB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,UAAU,eAAe;IAGzB,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,cAAc,mBAAmB;IACjC,WAAW,gBAAgB;IAG3B,MAAM,WAAW;IACjB,WAAW,gBAAgB;IAC3B,aAAa,kBAAkB;IAG/B,OAAO,YAAY;IACnB,WAAW,gBAAgB;CAC5B;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,OAAO,EAAwC,CAAC;AAErF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,OAAO,EAa7C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,OAAO,EAM3C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,OAAO,EAqBnD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAWzD,CAAC;AAEF;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CASpE"}
1
+ {"version":3,"file":"pii-types.d.ts","sourceRoot":"","sources":["../../src/types/pii-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,OAAO;IAEjB,MAAM,WAAW;IACjB,GAAG,QAAQ;IACX,QAAQ,aAAa;IACrB,OAAO,YAAY;IAGnB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,UAAU,eAAe;IAGzB,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,cAAc,mBAAmB;IACjC,WAAW,gBAAgB;IAG3B,MAAM,WAAW;IACjB,WAAW,gBAAgB;IAC3B,aAAa,kBAAkB;IAG/B,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAG3B,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAC3B,GAAG,QAAQ;IACX,iBAAiB,sBAAsB;IACvC,eAAe,oBAAoB;IACnC,cAAc,mBAAmB;IACjC,aAAa,kBAAkB;CAChC;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,OAAO,EAAwC,CAAC;AAErF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,OAAO,EAa7C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,OAAO,EAQ9C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,OAAO,EAM3C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,OAAO,EA6BnD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAWzD,CAAC;AAEF;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CASpE"}
@@ -26,6 +26,14 @@ export var PIIType;
26
26
  // Custom/Business identifiers
27
27
  PIIType["CASE_ID"] = "CASE_ID";
28
28
  PIIType["CUSTOMER_ID"] = "CUSTOMER_ID";
29
+ // Secrets/Credentials
30
+ PIIType["API_KEY"] = "API_KEY";
31
+ PIIType["PRIVATE_KEY"] = "PRIVATE_KEY";
32
+ PIIType["JWT"] = "JWT";
33
+ PIIType["CONNECTION_STRING"] = "CONNECTION_STRING";
34
+ PIIType["AWS_CREDENTIALS"] = "AWS_CREDENTIALS";
35
+ PIIType["ENV_VAR_SECRET"] = "ENV_VAR_SECRET";
36
+ PIIType["CONFIG_SECRET"] = "CONFIG_SECRET";
29
37
  })(PIIType || (PIIType = {}));
30
38
  /**
31
39
  * All PII types as a readonly array for iteration
@@ -48,6 +56,18 @@ export const REGEX_PII_TYPES = [
48
56
  PIIType.CASE_ID,
49
57
  PIIType.CUSTOMER_ID,
50
58
  ];
59
+ /**
60
+ * PII types that are secrets/credentials (opt-in, regex-based)
61
+ */
62
+ export const SECRET_PII_TYPES = [
63
+ PIIType.API_KEY,
64
+ PIIType.PRIVATE_KEY,
65
+ PIIType.JWT,
66
+ PIIType.CONNECTION_STRING,
67
+ PIIType.AWS_CREDENTIALS,
68
+ PIIType.ENV_VAR_SECRET,
69
+ PIIType.CONFIG_SECRET,
70
+ ];
51
71
  /**
52
72
  * PII types that are detected via NER model (soft PII)
53
73
  */
@@ -83,6 +103,14 @@ export const DEFAULT_TYPE_PRIORITY = [
83
103
  PIIType.CREDIT_CARD,
84
104
  PIIType.TAX_ID,
85
105
  PIIType.NATIONAL_ID,
106
+ // Highest priority (secrets/credentials)
107
+ PIIType.ENV_VAR_SECRET,
108
+ PIIType.CONFIG_SECRET,
109
+ PIIType.CONNECTION_STRING,
110
+ PIIType.AWS_CREDENTIALS,
111
+ PIIType.API_KEY,
112
+ PIIType.PRIVATE_KEY,
113
+ PIIType.JWT,
86
114
  ];
87
115
  /**
88
116
  * Maps NER model labels to PIIType
@@ -1 +1 @@
1
- {"version":3,"file":"pii-types.js","sourceRoot":"","sources":["../../src/types/pii-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pii-types.js","sourceRoot":"","sources":["../../src/types/pii-types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rehydra",
3
- "version": "0.5.2",
3
+ "version": "0.6.0",
4
4
  "description": "On-device PII anonymization module for high-privacy AI workflows",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -65,6 +65,10 @@
65
65
  "types": "./dist/cli/main.d.ts",
66
66
  "default": "./dist/cli/main.js"
67
67
  }
68
+ },
69
+ "./opencode-plugin": {
70
+ "types": "./dist/opencode-plugin/index.d.ts",
71
+ "default": "./dist/opencode-plugin/index.js"
68
72
  }
69
73
  },
70
74
  "files": [