@anvia/core 1.3.2 → 1.4.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 (42) hide show
  1. package/README.md +1 -0
  2. package/dist/agent/agent.js +10 -10
  3. package/dist/agent/index.js +13 -13
  4. package/dist/agent/resolve-options.js +4 -4
  5. package/dist/agent/resolved-agent.js +11 -11
  6. package/dist/agent/team/agent-team.js +13 -13
  7. package/dist/agent/team/index.js +13 -13
  8. package/dist/agent/tool-catalog.js +4 -4
  9. package/dist/{chunk-IYDGPF3C.js → chunk-6RVQ3C64.js} +3 -3
  10. package/dist/{chunk-T4UW4SUK.js → chunk-APKCA2LY.js} +3 -3
  11. package/dist/{chunk-4BDSO4PQ.js → chunk-F4BOW76L.js} +2 -2
  12. package/dist/{chunk-VKRGWGA4.js → chunk-HSWH3ZLP.js} +3 -3
  13. package/dist/{chunk-WCWSPU74.js → chunk-IHAURFIO.js} +2 -2
  14. package/dist/{chunk-KRUDSNFN.js → chunk-PXX3ITNH.js} +7 -7
  15. package/dist/{chunk-A3DGCDGF.js → chunk-U5AJS7KM.js} +7 -7
  16. package/dist/{chunk-JWD43K7W.js → chunk-XAVSWLX5.js} +4 -4
  17. package/dist/{chunk-KNZNSNP4.js → chunk-ZQC6M22O.js} +2 -2
  18. package/dist/index.js +17 -17
  19. package/dist/internal/agent-runtime/agent-run.js +7 -7
  20. package/dist/internal/agent-runtime/retrieval.js +2 -2
  21. package/dist/internal/agent-runtime/tool-execution.js +4 -4
  22. package/dist/internal/agent.js +11 -11
  23. package/dist/internal/team-runtime/run.js +12 -12
  24. package/dist/redaction/index.d.ts +39 -0
  25. package/dist/redaction/index.js +139 -0
  26. package/dist/redaction/index.js.map +1 -0
  27. package/dist/skills/index.js +4 -4
  28. package/dist/skills/load.js +4 -4
  29. package/dist/skills/tools.js +4 -4
  30. package/dist/tool/dynamic-tools.js +3 -3
  31. package/dist/tool/index.js +6 -6
  32. package/dist/vector-store/index.js +5 -5
  33. package/package.json +5 -1
  34. /package/dist/{chunk-IYDGPF3C.js.map → chunk-6RVQ3C64.js.map} +0 -0
  35. /package/dist/{chunk-T4UW4SUK.js.map → chunk-APKCA2LY.js.map} +0 -0
  36. /package/dist/{chunk-4BDSO4PQ.js.map → chunk-F4BOW76L.js.map} +0 -0
  37. /package/dist/{chunk-VKRGWGA4.js.map → chunk-HSWH3ZLP.js.map} +0 -0
  38. /package/dist/{chunk-WCWSPU74.js.map → chunk-IHAURFIO.js.map} +0 -0
  39. /package/dist/{chunk-KRUDSNFN.js.map → chunk-PXX3ITNH.js.map} +0 -0
  40. /package/dist/{chunk-A3DGCDGF.js.map → chunk-U5AJS7KM.js.map} +0 -0
  41. /package/dist/{chunk-JWD43K7W.js.map → chunk-XAVSWLX5.js.map} +0 -0
  42. /package/dist/{chunk-KNZNSNP4.js.map → chunk-ZQC6M22O.js.map} +0 -0
package/dist/index.js CHANGED
@@ -3,6 +3,8 @@ import {
3
3
  transcribe
4
4
  } from "./chunk-HTI7DZJM.js";
5
5
  import "./chunk-SC4SUIEY.js";
6
+ import "./chunk-5M6GTA3T.js";
7
+ import "./chunk-WXR5CWSC.js";
6
8
  import "./chunk-HTI343NP.js";
7
9
  import {
8
10
  loadSkills
@@ -15,8 +17,6 @@ import "./chunk-LJGQ6VQB.js";
15
17
  import {
16
18
  SkillValidationError
17
19
  } from "./chunk-B5JQDR33.js";
18
- import "./chunk-5M6GTA3T.js";
19
- import "./chunk-WXR5CWSC.js";
20
20
  import {
21
21
  generateSpeech
22
22
  } from "./chunk-SYULMZGL.js";
@@ -35,9 +35,9 @@ import {
35
35
  import "./chunk-53TPAXYR.js";
36
36
  import {
37
37
  AgentTeam
38
- } from "./chunk-T4UW4SUK.js";
38
+ } from "./chunk-APKCA2LY.js";
39
39
  import "./chunk-X6WS3XWL.js";
40
- import "./chunk-VKRGWGA4.js";
40
+ import "./chunk-HSWH3ZLP.js";
41
41
  import "./chunk-PIMD4DYG.js";
42
42
  import "./chunk-FSBDE6RF.js";
43
43
  import "./chunk-3TAQXJBC.js";
@@ -46,32 +46,32 @@ import {
46
46
  AgentTeamInteractionError,
47
47
  AgentTeamLimitError
48
48
  } from "./chunk-ENZ2XX27.js";
49
- import "./chunk-IYDGPF3C.js";
49
+ import "./chunk-6RVQ3C64.js";
50
50
  import {
51
51
  Agent
52
- } from "./chunk-KRUDSNFN.js";
53
- import "./chunk-A3DGCDGF.js";
52
+ } from "./chunk-PXX3ITNH.js";
53
+ import "./chunk-U5AJS7KM.js";
54
+ import "./chunk-B57NNDEF.js";
55
+ import "./chunk-LAIATEUB.js";
54
56
  import "./chunk-GE46NHN4.js";
55
57
  import "./chunk-GDY2Z2SZ.js";
56
58
  import "./chunk-KITX3HDN.js";
57
59
  import "./chunk-NPJ2T3L5.js";
58
60
  import "./chunk-YWRXOPHC.js";
59
61
  import "./chunk-SXE4J43E.js";
60
- import "./chunk-B57NNDEF.js";
61
62
  import "./chunk-5I2NVRHC.js";
62
63
  import "./chunk-5IURMWFN.js";
63
- import "./chunk-LAIATEUB.js";
64
64
  import "./chunk-2NLINXRF.js";
65
65
  import "./chunk-JMJFK3A4.js";
66
+ import {
67
+ createMiddleware
68
+ } from "./chunk-4AW2633B.js";
66
69
  import {
67
70
  createQuestionTool
68
71
  } from "./chunk-T3ZOZEAB.js";
69
72
  import {
70
73
  createThinkTool
71
74
  } from "./chunk-6E6ABRJ6.js";
72
- import {
73
- createMiddleware
74
- } from "./chunk-4AW2633B.js";
75
75
  import "./chunk-YNA3UR42.js";
76
76
  import "./chunk-H3H74RWJ.js";
77
77
  import {
@@ -87,7 +87,7 @@ import "./chunk-EZR5AV3J.js";
87
87
  import "./chunk-OJF67RNM.js";
88
88
  import "./chunk-FAPIZJS2.js";
89
89
  import "./chunk-7LBPRXZP.js";
90
- import "./chunk-KNZNSNP4.js";
90
+ import "./chunk-ZQC6M22O.js";
91
91
  import "./chunk-A7BXVZXZ.js";
92
92
  import "./chunk-TP3MCUXS.js";
93
93
  import {
@@ -98,7 +98,7 @@ import "./chunk-NF6WBPFG.js";
98
98
  import "./chunk-LBYJPMHC.js";
99
99
  import "./chunk-KFAVEL5F.js";
100
100
  import "./chunk-GLMYZ6OA.js";
101
- import "./chunk-WCWSPU74.js";
101
+ import "./chunk-IHAURFIO.js";
102
102
  import {
103
103
  estimateMemoryTokens
104
104
  } from "./chunk-K4IBS7VB.js";
@@ -118,12 +118,12 @@ import {
118
118
  block
119
119
  } from "./chunk-MT3BLVYN.js";
120
120
  import "./chunk-ZXLCTQUX.js";
121
- import "./chunk-4BDSO4PQ.js";
122
- import "./chunk-JWD43K7W.js";
121
+ import "./chunk-F4BOW76L.js";
122
+ import "./chunk-XAVSWLX5.js";
123
+ import "./chunk-5WLIHNNJ.js";
123
124
  import "./chunk-QHGYCYV6.js";
124
125
  import "./chunk-ESOFEAYK.js";
125
126
  import "./chunk-HAAGSIZH.js";
126
- import "./chunk-5WLIHNNJ.js";
127
127
  import "./chunk-PJNE75WC.js";
128
128
  import "./chunk-PLDJCCVL.js";
129
129
  import "./chunk-3J2CSVPR.js";
@@ -1,21 +1,21 @@
1
1
  import {
2
2
  AgentRun
3
- } from "../../chunk-A3DGCDGF.js";
3
+ } from "../../chunk-U5AJS7KM.js";
4
+ import "../../chunk-B57NNDEF.js";
5
+ import "../../chunk-LAIATEUB.js";
4
6
  import "../../chunk-GE46NHN4.js";
5
7
  import "../../chunk-GDY2Z2SZ.js";
6
8
  import "../../chunk-KITX3HDN.js";
7
9
  import "../../chunk-NPJ2T3L5.js";
8
10
  import "../../chunk-YWRXOPHC.js";
9
11
  import "../../chunk-SXE4J43E.js";
10
- import "../../chunk-B57NNDEF.js";
11
12
  import "../../chunk-5I2NVRHC.js";
12
13
  import "../../chunk-5IURMWFN.js";
13
- import "../../chunk-LAIATEUB.js";
14
14
  import "../../chunk-2NLINXRF.js";
15
15
  import "../../chunk-JMJFK3A4.js";
16
+ import "../../chunk-4AW2633B.js";
16
17
  import "../../chunk-T3ZOZEAB.js";
17
18
  import "../../chunk-6E6ABRJ6.js";
18
- import "../../chunk-4AW2633B.js";
19
19
  import "../../chunk-YNA3UR42.js";
20
20
  import "../../chunk-H3H74RWJ.js";
21
21
  import "../../chunk-E44DRLUL.js";
@@ -39,12 +39,12 @@ import "../../chunk-6TAWRKFK.js";
39
39
  import "../../chunk-6BTJC3ES.js";
40
40
  import "../../chunk-MT3BLVYN.js";
41
41
  import "../../chunk-ZXLCTQUX.js";
42
- import "../../chunk-4BDSO4PQ.js";
43
- import "../../chunk-JWD43K7W.js";
42
+ import "../../chunk-F4BOW76L.js";
43
+ import "../../chunk-XAVSWLX5.js";
44
+ import "../../chunk-5WLIHNNJ.js";
44
45
  import "../../chunk-QHGYCYV6.js";
45
46
  import "../../chunk-ESOFEAYK.js";
46
47
  import "../../chunk-HAAGSIZH.js";
47
- import "../../chunk-5WLIHNNJ.js";
48
48
  import "../../chunk-PJNE75WC.js";
49
49
  import "../../chunk-PLDJCCVL.js";
50
50
  import "../../chunk-3J2CSVPR.js";
@@ -3,11 +3,11 @@ import {
3
3
  fetchToolDefinitions
4
4
  } from "../../chunk-GDY2Z2SZ.js";
5
5
  import "../../chunk-A7BXVZXZ.js";
6
- import "../../chunk-JWD43K7W.js";
6
+ import "../../chunk-XAVSWLX5.js";
7
+ import "../../chunk-5WLIHNNJ.js";
7
8
  import "../../chunk-QHGYCYV6.js";
8
9
  import "../../chunk-ESOFEAYK.js";
9
10
  import "../../chunk-HAAGSIZH.js";
10
- import "../../chunk-5WLIHNNJ.js";
11
11
  import "../../chunk-ERN7P6Q4.js";
12
12
  import "../../chunk-7F53DOML.js";
13
13
  import "../../chunk-HHMLE3TZ.js";
@@ -4,9 +4,9 @@ import {
4
4
  import "../../chunk-5IURMWFN.js";
5
5
  import "../../chunk-2NLINXRF.js";
6
6
  import "../../chunk-JMJFK3A4.js";
7
+ import "../../chunk-4AW2633B.js";
7
8
  import "../../chunk-T3ZOZEAB.js";
8
9
  import "../../chunk-6E6ABRJ6.js";
9
- import "../../chunk-4AW2633B.js";
10
10
  import "../../chunk-OJF67RNM.js";
11
11
  import "../../chunk-FAPIZJS2.js";
12
12
  import "../../chunk-7LBPRXZP.js";
@@ -15,12 +15,12 @@ import "../../chunk-6RQYWZI3.js";
15
15
  import "../../chunk-NF6WBPFG.js";
16
16
  import "../../chunk-LBYJPMHC.js";
17
17
  import "../../chunk-KFAVEL5F.js";
18
- import "../../chunk-4BDSO4PQ.js";
19
- import "../../chunk-JWD43K7W.js";
18
+ import "../../chunk-F4BOW76L.js";
19
+ import "../../chunk-XAVSWLX5.js";
20
+ import "../../chunk-5WLIHNNJ.js";
20
21
  import "../../chunk-QHGYCYV6.js";
21
22
  import "../../chunk-ESOFEAYK.js";
22
23
  import "../../chunk-HAAGSIZH.js";
23
- import "../../chunk-5WLIHNNJ.js";
24
24
  import "../../chunk-PJNE75WC.js";
25
25
  import "../../chunk-PLDJCCVL.js";
26
26
  import "../../chunk-3J2CSVPR.js";
@@ -1,11 +1,13 @@
1
1
  import {
2
2
  createResolvedAgent,
3
3
  getResolvedAgentOptions
4
- } from "../chunk-IYDGPF3C.js";
4
+ } from "../chunk-6RVQ3C64.js";
5
5
  import {
6
6
  Agent
7
- } from "../chunk-KRUDSNFN.js";
8
- import "../chunk-A3DGCDGF.js";
7
+ } from "../chunk-PXX3ITNH.js";
8
+ import "../chunk-U5AJS7KM.js";
9
+ import "../chunk-B57NNDEF.js";
10
+ import "../chunk-LAIATEUB.js";
9
11
  import "../chunk-GE46NHN4.js";
10
12
  import "../chunk-GDY2Z2SZ.js";
11
13
  import {
@@ -14,15 +16,13 @@ import {
14
16
  import "../chunk-NPJ2T3L5.js";
15
17
  import "../chunk-YWRXOPHC.js";
16
18
  import "../chunk-SXE4J43E.js";
17
- import "../chunk-B57NNDEF.js";
18
19
  import "../chunk-5I2NVRHC.js";
19
20
  import "../chunk-5IURMWFN.js";
20
- import "../chunk-LAIATEUB.js";
21
21
  import "../chunk-2NLINXRF.js";
22
22
  import "../chunk-JMJFK3A4.js";
23
+ import "../chunk-4AW2633B.js";
23
24
  import "../chunk-T3ZOZEAB.js";
24
25
  import "../chunk-6E6ABRJ6.js";
25
- import "../chunk-4AW2633B.js";
26
26
  import "../chunk-YNA3UR42.js";
27
27
  import "../chunk-H3H74RWJ.js";
28
28
  import "../chunk-E44DRLUL.js";
@@ -34,7 +34,7 @@ import {
34
34
  createHook
35
35
  } from "../chunk-FAPIZJS2.js";
36
36
  import "../chunk-7LBPRXZP.js";
37
- import "../chunk-KNZNSNP4.js";
37
+ import "../chunk-ZQC6M22O.js";
38
38
  import {
39
39
  getAgentToolState
40
40
  } from "../chunk-A7BXVZXZ.js";
@@ -44,7 +44,7 @@ import "../chunk-NF6WBPFG.js";
44
44
  import "../chunk-LBYJPMHC.js";
45
45
  import "../chunk-KFAVEL5F.js";
46
46
  import "../chunk-GLMYZ6OA.js";
47
- import "../chunk-WCWSPU74.js";
47
+ import "../chunk-IHAURFIO.js";
48
48
  import "../chunk-K4IBS7VB.js";
49
49
  import "../chunk-ZPJFXRQZ.js";
50
50
  import "../chunk-MEN4AFDZ.js";
@@ -53,12 +53,12 @@ import "../chunk-6TAWRKFK.js";
53
53
  import "../chunk-6BTJC3ES.js";
54
54
  import "../chunk-MT3BLVYN.js";
55
55
  import "../chunk-ZXLCTQUX.js";
56
- import "../chunk-4BDSO4PQ.js";
57
- import "../chunk-JWD43K7W.js";
56
+ import "../chunk-F4BOW76L.js";
57
+ import "../chunk-XAVSWLX5.js";
58
+ import "../chunk-5WLIHNNJ.js";
58
59
  import "../chunk-QHGYCYV6.js";
59
60
  import "../chunk-ESOFEAYK.js";
60
61
  import "../chunk-HAAGSIZH.js";
61
- import "../chunk-5WLIHNNJ.js";
62
62
  import "../chunk-PJNE75WC.js";
63
63
  import "../chunk-PLDJCCVL.js";
64
64
  import "../chunk-3J2CSVPR.js";
@@ -1,28 +1,28 @@
1
1
  import {
2
2
  TeamRun
3
- } from "../../chunk-VKRGWGA4.js";
3
+ } from "../../chunk-HSWH3ZLP.js";
4
4
  import "../../chunk-PIMD4DYG.js";
5
5
  import "../../chunk-FSBDE6RF.js";
6
6
  import "../../chunk-CJKGTEN4.js";
7
7
  import "../../chunk-ENZ2XX27.js";
8
- import "../../chunk-IYDGPF3C.js";
9
- import "../../chunk-KRUDSNFN.js";
10
- import "../../chunk-A3DGCDGF.js";
8
+ import "../../chunk-6RVQ3C64.js";
9
+ import "../../chunk-PXX3ITNH.js";
10
+ import "../../chunk-U5AJS7KM.js";
11
+ import "../../chunk-B57NNDEF.js";
12
+ import "../../chunk-LAIATEUB.js";
11
13
  import "../../chunk-GE46NHN4.js";
12
14
  import "../../chunk-GDY2Z2SZ.js";
13
15
  import "../../chunk-KITX3HDN.js";
14
16
  import "../../chunk-NPJ2T3L5.js";
15
17
  import "../../chunk-YWRXOPHC.js";
16
18
  import "../../chunk-SXE4J43E.js";
17
- import "../../chunk-B57NNDEF.js";
18
19
  import "../../chunk-5I2NVRHC.js";
19
20
  import "../../chunk-5IURMWFN.js";
20
- import "../../chunk-LAIATEUB.js";
21
21
  import "../../chunk-2NLINXRF.js";
22
22
  import "../../chunk-JMJFK3A4.js";
23
+ import "../../chunk-4AW2633B.js";
23
24
  import "../../chunk-T3ZOZEAB.js";
24
25
  import "../../chunk-6E6ABRJ6.js";
25
- import "../../chunk-4AW2633B.js";
26
26
  import "../../chunk-YNA3UR42.js";
27
27
  import "../../chunk-H3H74RWJ.js";
28
28
  import "../../chunk-E44DRLUL.js";
@@ -32,7 +32,7 @@ import "../../chunk-EZR5AV3J.js";
32
32
  import "../../chunk-OJF67RNM.js";
33
33
  import "../../chunk-FAPIZJS2.js";
34
34
  import "../../chunk-7LBPRXZP.js";
35
- import "../../chunk-KNZNSNP4.js";
35
+ import "../../chunk-ZQC6M22O.js";
36
36
  import "../../chunk-A7BXVZXZ.js";
37
37
  import "../../chunk-TP3MCUXS.js";
38
38
  import "../../chunk-6RQYWZI3.js";
@@ -40,7 +40,7 @@ import "../../chunk-NF6WBPFG.js";
40
40
  import "../../chunk-LBYJPMHC.js";
41
41
  import "../../chunk-KFAVEL5F.js";
42
42
  import "../../chunk-GLMYZ6OA.js";
43
- import "../../chunk-WCWSPU74.js";
43
+ import "../../chunk-IHAURFIO.js";
44
44
  import "../../chunk-K4IBS7VB.js";
45
45
  import "../../chunk-ZPJFXRQZ.js";
46
46
  import "../../chunk-MEN4AFDZ.js";
@@ -49,12 +49,12 @@ import "../../chunk-6TAWRKFK.js";
49
49
  import "../../chunk-6BTJC3ES.js";
50
50
  import "../../chunk-MT3BLVYN.js";
51
51
  import "../../chunk-ZXLCTQUX.js";
52
- import "../../chunk-4BDSO4PQ.js";
53
- import "../../chunk-JWD43K7W.js";
52
+ import "../../chunk-F4BOW76L.js";
53
+ import "../../chunk-XAVSWLX5.js";
54
+ import "../../chunk-5WLIHNNJ.js";
54
55
  import "../../chunk-QHGYCYV6.js";
55
56
  import "../../chunk-ESOFEAYK.js";
56
57
  import "../../chunk-HAAGSIZH.js";
57
- import "../../chunk-5WLIHNNJ.js";
58
58
  import "../../chunk-PJNE75WC.js";
59
59
  import "../../chunk-PLDJCCVL.js";
60
60
  import "../../chunk-3J2CSVPR.js";
@@ -0,0 +1,39 @@
1
+ import { M as Message } from '../types-DYqZKDA8.js';
2
+ import '../model-call-options-CZkSw_xN.js';
3
+
4
+ type RedactionPattern = {
5
+ name: string;
6
+ regex: RegExp;
7
+ /**
8
+ * Optional filter for matches `regex` cannot fully qualify. Rejected matches are kept verbatim.
9
+ * Receives the match, its offset, and the full input so a pattern can inspect its surroundings.
10
+ */
11
+ validate?: ((match: string, offset: number, input: string) => boolean) | undefined;
12
+ /**
13
+ * Match numeric values whose decimal text matches. Numbers are never inspected in any other way,
14
+ * so unrelated numeric fields keep their value and type.
15
+ */
16
+ numeric?: boolean | undefined;
17
+ };
18
+ type RedactionOptions = {
19
+ patterns?: RedactionPattern[] | undefined;
20
+ replacement?: string | undefined;
21
+ };
22
+ type Redactor = {
23
+ /** Returns a redacted copy of any JSON-compatible value; the source is never mutated. */
24
+ redact(value: unknown): unknown;
25
+ redactString(value: string): string;
26
+ redactObject<T>(value: T): T;
27
+ redactMessages<M extends Message>(messages: M[]): M[];
28
+ patternNames(): string[];
29
+ };
30
+ /**
31
+ * Default PII patterns. They favor precision over recall: card matches must carry an issuer prefix
32
+ * and a valid Luhn checksum, and phone matches must not be part of a longer digit run, so grouped
33
+ * identifiers such as order numbers survive redaction.
34
+ */
35
+ declare const DEFAULT_PATTERNS: RedactionPattern[];
36
+ declare function createRedactor(options?: RedactionOptions): Redactor;
37
+ declare function passesLuhn(digits: string): boolean;
38
+
39
+ export { DEFAULT_PATTERNS, type RedactionOptions, type RedactionPattern, type Redactor, createRedactor, passesLuhn };
@@ -0,0 +1,139 @@
1
+ // src/redaction/index.ts
2
+ var MAX_DEPTH = 16;
3
+ var CIRCULAR_MARKER = "<circular>";
4
+ var MAX_DEPTH_MARKER = "<max-depth>";
5
+ var DEFAULT_REPLACEMENT = "<redacted>";
6
+ var DATA_URL_PATTERN = /^data:[^;,]+;base64,/i;
7
+ var ENCODED_VALUE_TYPES = {
8
+ base64: true,
9
+ encrypted: true,
10
+ image: true,
11
+ redacted: true
12
+ };
13
+ var DEFAULT_PATTERNS = [
14
+ { name: "email", regex: /\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b/gi },
15
+ // The final digit is separate so a trailing separator is not part of the match.
16
+ { name: "creditCard", regex: /\b(?:\d[ -]?){12,18}\d\b/g, validate: isCardNumber, numeric: true },
17
+ { name: "ipv4", regex: /\b(?:\d{1,3}\.){3}\d{1,3}\b/g },
18
+ {
19
+ name: "phone",
20
+ regex: /(?<!\d)(?:\+\d{1,3}[\s.-]?)?(?:\(\d{2,4}\)[\s.-]?)?\d{3,4}[\s.-]?\d{3,4}(?:[\s.-]?\d{2,4})?(?!\d)/g,
21
+ validate: isStandalonePhoneRun
22
+ },
23
+ { name: "jwt", regex: /\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+/g },
24
+ { name: "apiKey", regex: /\b(?:sk|pk|api|key|token)[-_][A-Za-z0-9_-]{12,}\b/gi },
25
+ { name: "bearer", regex: /\bBearer\s+[A-Za-z0-9._~+/-]+=*/gi }
26
+ ];
27
+ function createRedactor(options = {}) {
28
+ const replacement = options.replacement ?? DEFAULT_REPLACEMENT;
29
+ const patterns = options.patterns ?? DEFAULT_PATTERNS;
30
+ const compiled = patterns.map((pattern) => ({
31
+ regex: cloneRegex(pattern.regex),
32
+ validate: pattern.validate,
33
+ numeric: pattern.numeric === true
34
+ }));
35
+ const names = patterns.map((pattern) => pattern.name);
36
+ const applyPatterns = (input, numericOnly) => {
37
+ let text = input;
38
+ for (const pattern of compiled) {
39
+ if (numericOnly && !pattern.numeric) continue;
40
+ text = text.replace(pattern.regex, (...args) => {
41
+ const match = String(args[0]);
42
+ const hasGroups = typeof args[args.length - 1] === "object";
43
+ const offset = Number(args[args.length - (hasGroups ? 3 : 2)]);
44
+ const source = String(args[args.length - (hasGroups ? 2 : 1)]);
45
+ return pattern.validate === void 0 || pattern.validate(match, offset, source) ? replacement : match;
46
+ });
47
+ }
48
+ return text;
49
+ };
50
+ const redactString = (value) => {
51
+ if (typeof value !== "string") return value;
52
+ if (DATA_URL_PATTERN.test(value)) return value;
53
+ return applyPatterns(value, false);
54
+ };
55
+ const redactValue = (value, depth, seen) => {
56
+ if (typeof value === "string") return redactString(value);
57
+ if (typeof value === "number") {
58
+ if (!Number.isFinite(value)) return value;
59
+ const text = String(value);
60
+ const redacted = applyPatterns(text, true);
61
+ return redacted === text ? value : redacted;
62
+ }
63
+ if (value === null || typeof value !== "object") return value;
64
+ if (value instanceof ArrayBuffer || ArrayBuffer.isView(value)) return value;
65
+ if (depth >= MAX_DEPTH) return MAX_DEPTH_MARKER;
66
+ if (seen.has(value)) return CIRCULAR_MARKER;
67
+ seen.add(value);
68
+ try {
69
+ if (Array.isArray(value)) {
70
+ return value.map((entry) => redactValue(entry, depth + 1, seen));
71
+ }
72
+ const record = value;
73
+ const result = {};
74
+ for (const [key, entry] of Object.entries(record)) {
75
+ if (key === "data" && typeof entry === "string" && isEncodedValue(record)) {
76
+ result[key] = entry;
77
+ continue;
78
+ }
79
+ result[key] = redactValue(entry, depth + 1, seen);
80
+ }
81
+ return result;
82
+ } finally {
83
+ seen.delete(value);
84
+ }
85
+ };
86
+ return {
87
+ redact: (value) => redactValue(value, 0, /* @__PURE__ */ new WeakSet()),
88
+ redactString,
89
+ // Callers declare the value type, so the redacted copy is cast back to it.
90
+ redactObject: (value) => redactValue(value, 0, /* @__PURE__ */ new WeakSet()),
91
+ redactMessages: (messages) => messages.map((message) => redactValue(message, 0, /* @__PURE__ */ new WeakSet())),
92
+ patternNames: () => [...names]
93
+ };
94
+ }
95
+ function isEncodedValue(record) {
96
+ return typeof record.type === "string" && ENCODED_VALUE_TYPES[record.type] === true;
97
+ }
98
+ function isCardNumber(match) {
99
+ const digits = match.replaceAll(/[^0-9]/g, "");
100
+ if (digits.length < 13 || digits.length > 19) return false;
101
+ return startsWithIssuerPrefix(digits) && passesLuhn(digits);
102
+ }
103
+ function isStandalonePhoneRun(match, offset, input) {
104
+ const before = input.slice(0, offset);
105
+ const after = input.slice(offset + match.length);
106
+ return !/[0-9][\s.-]?$/.test(before) && !/^[\s.-]?[0-9]/.test(after);
107
+ }
108
+ function startsWithIssuerPrefix(digits) {
109
+ const two = digits.slice(0, 2);
110
+ const four = digits.slice(0, 4);
111
+ if (digits.startsWith("4")) return true;
112
+ if (two === "34" || two === "37" || two === "65" || two === "35") return true;
113
+ if (two >= "51" && two <= "55") return true;
114
+ return four === "6011" || four >= "2221" && four <= "2720";
115
+ }
116
+ function passesLuhn(digits) {
117
+ if (!/^\d+$/.test(digits)) return false;
118
+ let sum = 0;
119
+ let double = false;
120
+ for (let index = digits.length - 1; index >= 0; index -= 1) {
121
+ let value = digits.charCodeAt(index) - 48;
122
+ if (double) {
123
+ value *= 2;
124
+ if (value > 9) value -= 9;
125
+ }
126
+ sum += value;
127
+ double = !double;
128
+ }
129
+ return sum % 10 === 0;
130
+ }
131
+ function cloneRegex(source) {
132
+ return source.flags.includes("g") ? source : new RegExp(source.source, `${source.flags}g`);
133
+ }
134
+ export {
135
+ DEFAULT_PATTERNS,
136
+ createRedactor,
137
+ passesLuhn
138
+ };
139
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/redaction/index.ts"],"sourcesContent":["import type { Message } from \"../completion\";\n\nconst MAX_DEPTH = 16;\nconst CIRCULAR_MARKER = \"<circular>\";\nconst MAX_DEPTH_MARKER = \"<max-depth>\";\nconst DEFAULT_REPLACEMENT = \"<redacted>\";\nconst DATA_URL_PATTERN = /^data:[^;,]+;base64,/i;\nconst ENCODED_VALUE_TYPES: Record<string, true> = {\n base64: true,\n encrypted: true,\n image: true,\n redacted: true,\n};\n\nexport type RedactionPattern = {\n name: string;\n regex: RegExp;\n /**\n * Optional filter for matches `regex` cannot fully qualify. Rejected matches are kept verbatim.\n * Receives the match, its offset, and the full input so a pattern can inspect its surroundings.\n */\n validate?: ((match: string, offset: number, input: string) => boolean) | undefined;\n /**\n * Match numeric values whose decimal text matches. Numbers are never inspected in any other way,\n * so unrelated numeric fields keep their value and type.\n */\n numeric?: boolean | undefined;\n};\n\nexport type RedactionOptions = {\n patterns?: RedactionPattern[] | undefined;\n replacement?: string | undefined;\n};\n\nexport type Redactor = {\n /** Returns a redacted copy of any JSON-compatible value; the source is never mutated. */\n redact(value: unknown): unknown;\n redactString(value: string): string;\n redactObject<T>(value: T): T;\n redactMessages<M extends Message>(messages: M[]): M[];\n patternNames(): string[];\n};\n\n/**\n * Default PII patterns. They favor precision over recall: card matches must carry an issuer prefix\n * and a valid Luhn checksum, and phone matches must not be part of a longer digit run, so grouped\n * identifiers such as order numbers survive redaction.\n */\nexport const DEFAULT_PATTERNS: RedactionPattern[] = [\n { name: \"email\", regex: /\\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}\\b/gi },\n // The final digit is separate so a trailing separator is not part of the match.\n { name: \"creditCard\", regex: /\\b(?:\\d[ -]?){12,18}\\d\\b/g, validate: isCardNumber, numeric: true },\n { name: \"ipv4\", regex: /\\b(?:\\d{1,3}\\.){3}\\d{1,3}\\b/g },\n {\n name: \"phone\",\n regex:\n /(?<!\\d)(?:\\+\\d{1,3}[\\s.-]?)?(?:\\(\\d{2,4}\\)[\\s.-]?)?\\d{3,4}[\\s.-]?\\d{3,4}(?:[\\s.-]?\\d{2,4})?(?!\\d)/g,\n validate: isStandalonePhoneRun,\n },\n { name: \"jwt\", regex: /\\beyJ[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+/g },\n { name: \"apiKey\", regex: /\\b(?:sk|pk|api|key|token)[-_][A-Za-z0-9_-]{12,}\\b/gi },\n { name: \"bearer\", regex: /\\bBearer\\s+[A-Za-z0-9._~+/-]+=*/gi },\n];\n\nexport function createRedactor(options: RedactionOptions = {}): Redactor {\n const replacement = options.replacement ?? DEFAULT_REPLACEMENT;\n const patterns = options.patterns ?? DEFAULT_PATTERNS;\n const compiled = patterns.map((pattern) => ({\n regex: cloneRegex(pattern.regex),\n validate: pattern.validate,\n numeric: pattern.numeric === true,\n }));\n const names = patterns.map((pattern) => pattern.name);\n\n const applyPatterns = (input: string, numericOnly: boolean): string => {\n let text = input;\n for (const pattern of compiled) {\n if (numericOnly && !pattern.numeric) continue;\n text = text.replace(pattern.regex, (...args: unknown[]) => {\n const match = String(args[0]);\n // Capture groups shift the callback arguments. Regexes with named groups append the groups\n // object after the input, so offset and input are the last two or three values.\n const hasGroups = typeof args[args.length - 1] === \"object\";\n const offset = Number(args[args.length - (hasGroups ? 3 : 2)]);\n const source = String(args[args.length - (hasGroups ? 2 : 1)]);\n return pattern.validate === undefined || pattern.validate(match, offset, source)\n ? replacement\n : match;\n });\n }\n return text;\n };\n\n const redactString = (value: string): string => {\n if (typeof value !== \"string\") return value;\n if (DATA_URL_PATTERN.test(value)) return value;\n return applyPatterns(value, false);\n };\n\n const redactValue = (value: unknown, depth: number, seen: WeakSet<object>): unknown => {\n if (typeof value === \"string\") return redactString(value);\n if (typeof value === \"number\") {\n if (!Number.isFinite(value)) return value;\n const text = String(value);\n const redacted = applyPatterns(text, true);\n return redacted === text ? value : redacted;\n }\n if (value === null || typeof value !== \"object\") return value;\n if (value instanceof ArrayBuffer || ArrayBuffer.isView(value)) return value;\n if (depth >= MAX_DEPTH) return MAX_DEPTH_MARKER;\n if (seen.has(value)) return CIRCULAR_MARKER;\n seen.add(value);\n try {\n if (Array.isArray(value)) {\n return value.map((entry) => redactValue(entry, depth + 1, seen));\n }\n const record = value as Record<string, unknown>;\n const result: Record<string, unknown> = {};\n for (const [key, entry] of Object.entries(record)) {\n // Encoded bodies are already opaque; scanning them only risks corrupting the payload.\n // Structured data still needs traversal, so only encoded strings are preserved verbatim.\n if (key === \"data\" && typeof entry === \"string\" && isEncodedValue(record)) {\n result[key] = entry;\n continue;\n }\n result[key] = redactValue(entry, depth + 1, seen);\n }\n return result;\n } finally {\n seen.delete(value);\n }\n };\n\n return {\n redact: (value: unknown) => redactValue(value, 0, new WeakSet<object>()),\n redactString,\n // Callers declare the value type, so the redacted copy is cast back to it.\n redactObject: <T>(value: T): T => redactValue(value, 0, new WeakSet<object>()) as T,\n redactMessages: <M extends Message>(messages: M[]): M[] =>\n messages.map((message) => redactValue(message, 0, new WeakSet<object>()) as M),\n patternNames: () => [...names],\n };\n}\n\nfunction isEncodedValue(record: Record<string, unknown>): boolean {\n return typeof record.type === \"string\" && ENCODED_VALUE_TYPES[record.type] === true;\n}\n\n/**\n * Card patterns match any 13-19 digit run, so the replacement is gated on an issuer prefix and a\n * Luhn checksum to keep order numbers, timestamps, and other long identifiers intact.\n */\nfunction isCardNumber(match: string): boolean {\n const digits = match.replaceAll(/[^0-9]/g, \"\");\n if (digits.length < 13 || digits.length > 19) return false;\n return startsWithIssuerPrefix(digits) && passesLuhn(digits);\n}\n\n/**\n * Phone patterns tolerate several shapes, which also matches one segment of a longer grouped digit\n * run. Only standalone runs are replaced, so `1234 5678 9012 3456` stays intact.\n */\nfunction isStandalonePhoneRun(match: string, offset: number, input: string): boolean {\n const before = input.slice(0, offset);\n const after = input.slice(offset + match.length);\n return !/[0-9][\\s.-]?$/.test(before) && !/^[\\s.-]?[0-9]/.test(after);\n}\n\nfunction startsWithIssuerPrefix(digits: string): boolean {\n const two = digits.slice(0, 2);\n const four = digits.slice(0, 4);\n if (digits.startsWith(\"4\")) return true;\n if (two === \"34\" || two === \"37\" || two === \"65\" || two === \"35\") return true;\n if (two >= \"51\" && two <= \"55\") return true;\n return four === \"6011\" || (four >= \"2221\" && four <= \"2720\");\n}\n\nexport function passesLuhn(digits: string): boolean {\n if (!/^\\d+$/.test(digits)) return false;\n let sum = 0;\n let double = false;\n for (let index = digits.length - 1; index >= 0; index -= 1) {\n let value = digits.charCodeAt(index) - 48;\n if (double) {\n value *= 2;\n if (value > 9) value -= 9;\n }\n sum += value;\n double = !double;\n }\n return sum % 10 === 0;\n}\n\nfunction cloneRegex(source: RegExp): RegExp {\n return source.flags.includes(\"g\") ? source : new RegExp(source.source, `${source.flags}g`);\n}\n"],"mappings":"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","names":[]}
@@ -13,15 +13,15 @@ import {
13
13
  import "../chunk-V4OZ7ISA.js";
14
14
  import "../chunk-2NLINXRF.js";
15
15
  import "../chunk-JMJFK3A4.js";
16
+ import "../chunk-4AW2633B.js";
16
17
  import "../chunk-T3ZOZEAB.js";
17
18
  import "../chunk-6E6ABRJ6.js";
18
- import "../chunk-4AW2633B.js";
19
- import "../chunk-4BDSO4PQ.js";
20
- import "../chunk-JWD43K7W.js";
19
+ import "../chunk-F4BOW76L.js";
20
+ import "../chunk-XAVSWLX5.js";
21
+ import "../chunk-5WLIHNNJ.js";
21
22
  import "../chunk-QHGYCYV6.js";
22
23
  import "../chunk-ESOFEAYK.js";
23
24
  import "../chunk-HAAGSIZH.js";
24
- import "../chunk-5WLIHNNJ.js";
25
25
  import "../chunk-ERN7P6Q4.js";
26
26
  import "../chunk-7F53DOML.js";
27
27
  import "../chunk-HHMLE3TZ.js";
@@ -5,15 +5,15 @@ import "../chunk-JBQNCUXA.js";
5
5
  import "../chunk-LJGQ6VQB.js";
6
6
  import "../chunk-2NLINXRF.js";
7
7
  import "../chunk-JMJFK3A4.js";
8
+ import "../chunk-4AW2633B.js";
8
9
  import "../chunk-T3ZOZEAB.js";
9
10
  import "../chunk-6E6ABRJ6.js";
10
- import "../chunk-4AW2633B.js";
11
- import "../chunk-4BDSO4PQ.js";
12
- import "../chunk-JWD43K7W.js";
11
+ import "../chunk-F4BOW76L.js";
12
+ import "../chunk-XAVSWLX5.js";
13
+ import "../chunk-5WLIHNNJ.js";
13
14
  import "../chunk-QHGYCYV6.js";
14
15
  import "../chunk-ESOFEAYK.js";
15
16
  import "../chunk-HAAGSIZH.js";
16
- import "../chunk-5WLIHNNJ.js";
17
17
  import "../chunk-ERN7P6Q4.js";
18
18
  import "../chunk-7F53DOML.js";
19
19
  import "../chunk-HHMLE3TZ.js";
@@ -3,15 +3,15 @@ import {
3
3
  } from "../chunk-LJGQ6VQB.js";
4
4
  import "../chunk-2NLINXRF.js";
5
5
  import "../chunk-JMJFK3A4.js";
6
+ import "../chunk-4AW2633B.js";
6
7
  import "../chunk-T3ZOZEAB.js";
7
8
  import "../chunk-6E6ABRJ6.js";
8
- import "../chunk-4AW2633B.js";
9
- import "../chunk-4BDSO4PQ.js";
10
- import "../chunk-JWD43K7W.js";
9
+ import "../chunk-F4BOW76L.js";
10
+ import "../chunk-XAVSWLX5.js";
11
+ import "../chunk-5WLIHNNJ.js";
11
12
  import "../chunk-QHGYCYV6.js";
12
13
  import "../chunk-ESOFEAYK.js";
13
14
  import "../chunk-HAAGSIZH.js";
14
- import "../chunk-5WLIHNNJ.js";
15
15
  import "../chunk-ERN7P6Q4.js";
16
16
  import "../chunk-7F53DOML.js";
17
17
  import "../chunk-HHMLE3TZ.js";
@@ -2,12 +2,12 @@ import {
2
2
  createToolIndex,
3
3
  embedTools,
4
4
  isToolIndex
5
- } from "../chunk-4BDSO4PQ.js";
6
- import "../chunk-JWD43K7W.js";
5
+ } from "../chunk-F4BOW76L.js";
6
+ import "../chunk-XAVSWLX5.js";
7
+ import "../chunk-5WLIHNNJ.js";
7
8
  import "../chunk-QHGYCYV6.js";
8
9
  import "../chunk-ESOFEAYK.js";
9
10
  import "../chunk-HAAGSIZH.js";
10
- import "../chunk-5WLIHNNJ.js";
11
11
  import "../chunk-ERN7P6Q4.js";
12
12
  import "../chunk-7F53DOML.js";
13
13
  import "../chunk-HHMLE3TZ.js";
@@ -1,4 +1,7 @@
1
1
  import "../chunk-JMJFK3A4.js";
2
+ import {
3
+ createMiddleware
4
+ } from "../chunk-4AW2633B.js";
2
5
  import {
3
6
  createQuestionTool,
4
7
  isQuestionTool
@@ -6,19 +9,16 @@ import {
6
9
  import {
7
10
  createThinkTool
8
11
  } from "../chunk-6E6ABRJ6.js";
9
- import {
10
- createMiddleware
11
- } from "../chunk-4AW2633B.js";
12
12
  import {
13
13
  createToolIndex,
14
14
  embedTools,
15
15
  isToolIndex
16
- } from "../chunk-4BDSO4PQ.js";
17
- import "../chunk-JWD43K7W.js";
16
+ } from "../chunk-F4BOW76L.js";
17
+ import "../chunk-XAVSWLX5.js";
18
+ import "../chunk-5WLIHNNJ.js";
18
19
  import "../chunk-QHGYCYV6.js";
19
20
  import "../chunk-ESOFEAYK.js";
20
21
  import "../chunk-HAAGSIZH.js";
21
- import "../chunk-5WLIHNNJ.js";
22
22
  import "../chunk-ERN7P6Q4.js";
23
23
  import "../chunk-7F53DOML.js";
24
24
  import "../chunk-HHMLE3TZ.js";