@agntk/core 0.3.3 → 1.0.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.
- package/dist/advanced/index.d.ts +13 -22
- package/dist/advanced/index.d.ts.map +1 -1
- package/dist/advanced/index.js +10 -55
- package/dist/advanced/index.js.map +1 -1
- package/dist/agent.d.ts +2 -35
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +113 -111
- package/dist/agent.js.map +1 -1
- package/dist/config/defaults.d.ts +1 -5
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +1 -11
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/index.d.ts +5 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +7 -7
- package/dist/config/index.js.map +1 -1
- package/dist/config/loader.d.ts +0 -40
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +3 -80
- package/dist/config/loader.js.map +1 -1
- package/dist/config/schema.d.ts +117 -788
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +52 -63
- package/dist/config/schema.js.map +1 -1
- package/dist/constants.d.ts +0 -11
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +0 -17
- package/dist/constants.js.map +1 -1
- package/dist/evals/assertions.d.ts +0 -35
- package/dist/evals/assertions.d.ts.map +1 -1
- package/dist/evals/assertions.js +0 -51
- package/dist/evals/assertions.js.map +1 -1
- package/dist/evals/index.d.ts +0 -5
- package/dist/evals/index.d.ts.map +1 -1
- package/dist/evals/index.js +0 -5
- package/dist/evals/index.js.map +1 -1
- package/dist/evals/runner.d.ts +0 -27
- package/dist/evals/runner.d.ts.map +1 -1
- package/dist/evals/runner.js +3 -45
- package/dist/evals/runner.js.map +1 -1
- package/dist/evals/types.d.ts +0 -14
- package/dist/evals/types.d.ts.map +1 -1
- package/dist/evals/types.js +0 -3
- package/dist/evals/types.js.map +1 -1
- package/dist/guardrails/built-ins.d.ts +0 -28
- package/dist/guardrails/built-ins.d.ts.map +1 -1
- package/dist/guardrails/built-ins.js +21 -47
- package/dist/guardrails/built-ins.js.map +1 -1
- package/dist/guardrails/index.d.ts +1 -4
- package/dist/guardrails/index.d.ts.map +1 -1
- package/dist/guardrails/index.js +1 -4
- package/dist/guardrails/index.js.map +1 -1
- package/dist/guardrails/runner.d.ts +0 -30
- package/dist/guardrails/runner.d.ts.map +1 -1
- package/dist/guardrails/runner.js +1 -46
- package/dist/guardrails/runner.js.map +1 -1
- package/dist/guardrails/types.d.ts +0 -35
- package/dist/guardrails/types.d.ts.map +1 -1
- package/dist/guardrails/types.js +4 -7
- package/dist/guardrails/types.js.map +1 -1
- package/dist/index.d.ts +4 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -31
- package/dist/index.js.map +1 -1
- package/dist/memory/loader.d.ts +0 -17
- package/dist/memory/loader.d.ts.map +1 -1
- package/dist/memory/loader.js +5 -27
- package/dist/memory/loader.js.map +1 -1
- package/dist/memory/store.d.ts +8 -16
- package/dist/memory/store.d.ts.map +1 -1
- package/dist/memory/store.js +101 -32
- package/dist/memory/store.js.map +1 -1
- package/dist/memory/types.d.ts +10 -30
- package/dist/memory/types.d.ts.map +1 -1
- package/dist/memory/types.js +0 -6
- package/dist/memory/types.js.map +1 -1
- package/dist/models.d.ts +9 -32
- package/dist/models.d.ts.map +1 -1
- package/dist/models.js +25 -68
- package/dist/models.js.map +1 -1
- package/dist/observability/index.d.ts +0 -3
- package/dist/observability/index.d.ts.map +1 -1
- package/dist/observability/index.js +0 -3
- package/dist/observability/index.js.map +1 -1
- package/dist/observability/langfuse.d.ts +0 -38
- package/dist/observability/langfuse.d.ts.map +1 -1
- package/dist/observability/langfuse.js +6 -55
- package/dist/observability/langfuse.js.map +1 -1
- package/dist/observability/types.d.ts +0 -21
- package/dist/observability/types.d.ts.map +1 -1
- package/dist/observability/types.js +0 -3
- package/dist/observability/types.js.map +1 -1
- package/dist/presets/tool-preset-registry.d.ts +0 -21
- package/dist/presets/tool-preset-registry.d.ts.map +1 -1
- package/dist/presets/tool-preset-registry.js +15 -34
- package/dist/presets/tool-preset-registry.js.map +1 -1
- package/dist/presets/tools.d.ts +41 -39
- package/dist/presets/tools.d.ts.map +1 -1
- package/dist/presets/tools.js +46 -40
- package/dist/presets/tools.js.map +1 -1
- package/dist/prompts/context.d.ts +0 -4
- package/dist/prompts/context.d.ts.map +1 -1
- package/dist/prompts/context.js +21 -33
- package/dist/prompts/context.js.map +1 -1
- package/dist/prompts/template.d.ts +0 -11
- package/dist/prompts/template.d.ts.map +1 -1
- package/dist/prompts/template.js +4 -14
- package/dist/prompts/template.js.map +1 -1
- package/dist/provider-resolver.d.ts +0 -29
- package/dist/provider-resolver.d.ts.map +1 -1
- package/dist/provider-resolver.js +17 -61
- package/dist/provider-resolver.js.map +1 -1
- package/dist/reflection.d.ts +0 -34
- package/dist/reflection.d.ts.map +1 -1
- package/dist/reflection.js +0 -40
- package/dist/reflection.js.map +1 -1
- package/dist/skills/index.d.ts +0 -3
- package/dist/skills/index.d.ts.map +1 -1
- package/dist/skills/index.js +0 -3
- package/dist/skills/index.js.map +1 -1
- package/dist/skills/loader.d.ts +0 -69
- package/dist/skills/loader.d.ts.map +1 -1
- package/dist/skills/loader.js +38 -130
- package/dist/skills/loader.js.map +1 -1
- package/dist/skills/types.d.ts +0 -36
- package/dist/skills/types.d.ts.map +1 -1
- package/dist/skills/types.js +0 -4
- package/dist/skills/types.js.map +1 -1
- package/dist/system-detect.d.ts +0 -57
- package/dist/system-detect.d.ts.map +1 -1
- package/dist/system-detect.js +9 -114
- package/dist/system-detect.js.map +1 -1
- package/dist/tools/approval.d.ts +0 -47
- package/dist/tools/approval.d.ts.map +1 -1
- package/dist/tools/approval.js +0 -46
- package/dist/tools/approval.js.map +1 -1
- package/dist/tools/ast-grep/cli.d.ts.map +1 -1
- package/dist/tools/ast-grep/cli.js +10 -4
- package/dist/tools/ast-grep/cli.js.map +1 -1
- package/dist/tools/ast-grep/constants.d.ts.map +1 -1
- package/dist/tools/ast-grep/constants.js +7 -14
- package/dist/tools/ast-grep/constants.js.map +1 -1
- package/dist/tools/ast-grep/downloader.d.ts.map +1 -1
- package/dist/tools/ast-grep/downloader.js +1 -4
- package/dist/tools/ast-grep/downloader.js.map +1 -1
- package/dist/tools/ast-grep/index.d.ts +2 -2
- package/dist/tools/ast-grep/index.d.ts.map +1 -1
- package/dist/tools/ast-grep/index.js +1 -1
- package/dist/tools/ast-grep/index.js.map +1 -1
- package/dist/tools/ast-grep/tools.d.ts +4 -4
- package/dist/tools/ast-grep/tools.d.ts.map +1 -1
- package/dist/tools/ast-grep/tools.js +2 -8
- package/dist/tools/ast-grep/tools.js.map +1 -1
- package/dist/tools/browser/index.d.ts +4 -4
- package/dist/tools/browser/index.d.ts.map +1 -1
- package/dist/tools/browser/index.js +2 -3
- package/dist/tools/browser/index.js.map +1 -1
- package/dist/tools/browser/stream.d.ts +0 -32
- package/dist/tools/browser/stream.d.ts.map +1 -1
- package/dist/tools/browser/stream.js +0 -53
- package/dist/tools/browser/stream.js.map +1 -1
- package/dist/tools/browser/tool.d.ts +10 -15
- package/dist/tools/browser/tool.d.ts.map +1 -1
- package/dist/tools/browser/tool.js +2 -26
- package/dist/tools/browser/tool.js.map +1 -1
- package/dist/tools/browser/types.d.ts +31 -156
- package/dist/tools/browser/types.d.ts.map +1 -1
- package/dist/tools/browser/types.js +22 -17
- package/dist/tools/browser/types.js.map +1 -1
- package/dist/tools/deep-reasoning/constants.d.ts +0 -6
- package/dist/tools/deep-reasoning/constants.d.ts.map +1 -1
- package/dist/tools/deep-reasoning/constants.js +0 -6
- package/dist/tools/deep-reasoning/constants.js.map +1 -1
- package/dist/tools/deep-reasoning/engine.d.ts.map +1 -1
- package/dist/tools/deep-reasoning/engine.js +0 -1
- package/dist/tools/deep-reasoning/engine.js.map +1 -1
- package/dist/tools/deep-reasoning/index.d.ts +4 -0
- package/dist/tools/deep-reasoning/index.d.ts.map +1 -1
- package/dist/tools/deep-reasoning/index.js +4 -3
- package/dist/tools/deep-reasoning/index.js.map +1 -1
- package/dist/tools/deep-reasoning/tools.d.ts.map +1 -1
- package/dist/tools/deep-reasoning/tools.js +8 -1
- package/dist/tools/deep-reasoning/tools.js.map +1 -1
- package/dist/tools/deep-reasoning/types.d.ts +5 -30
- package/dist/tools/deep-reasoning/types.d.ts.map +1 -1
- package/dist/tools/deep-reasoning/types.js +10 -1
- package/dist/tools/deep-reasoning/types.js.map +1 -1
- package/dist/tools/file/index.d.ts +3 -5
- package/dist/tools/file/index.d.ts.map +1 -1
- package/dist/tools/file/index.js +2 -4
- package/dist/tools/file/index.js.map +1 -1
- package/dist/tools/file/tools.d.ts +8 -11
- package/dist/tools/file/tools.d.ts.map +1 -1
- package/dist/tools/file/tools.js +45 -59
- package/dist/tools/file/tools.js.map +1 -1
- package/dist/tools/glob/cli.d.ts.map +1 -1
- package/dist/tools/glob/cli.js +8 -6
- package/dist/tools/glob/cli.js.map +1 -1
- package/dist/tools/glob/tools.d.ts.map +1 -1
- package/dist/tools/glob/tools.js +7 -10
- package/dist/tools/glob/tools.js.map +1 -1
- package/dist/tools/grep/cli.d.ts.map +1 -1
- package/dist/tools/grep/cli.js +0 -2
- package/dist/tools/grep/cli.js.map +1 -1
- package/dist/tools/grep/constants.d.ts.map +1 -1
- package/dist/tools/grep/constants.js +3 -5
- package/dist/tools/grep/constants.js.map +1 -1
- package/dist/tools/grep/downloader.d.ts.map +1 -1
- package/dist/tools/grep/downloader.js +3 -3
- package/dist/tools/grep/downloader.js.map +1 -1
- package/dist/tools/grep/tools.d.ts +2 -2
- package/dist/tools/grep/tools.d.ts.map +1 -1
- package/dist/tools/grep/tools.js +8 -14
- package/dist/tools/grep/tools.js.map +1 -1
- package/dist/tools/index.d.ts +10 -11
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +9 -22
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/model-retry.d.ts +0 -40
- package/dist/tools/model-retry.d.ts.map +1 -1
- package/dist/tools/model-retry.js +1 -49
- package/dist/tools/model-retry.js.map +1 -1
- package/dist/tools/plan/constants.d.ts +0 -6
- package/dist/tools/plan/constants.d.ts.map +1 -1
- package/dist/tools/plan/constants.js +9 -6
- package/dist/tools/plan/constants.js.map +1 -1
- package/dist/tools/plan/index.d.ts +1 -1
- package/dist/tools/plan/index.d.ts.map +1 -1
- package/dist/tools/plan/index.js +1 -4
- package/dist/tools/plan/index.js.map +1 -1
- package/dist/tools/plan/tools.d.ts +2 -2
- package/dist/tools/plan/tools.d.ts.map +1 -1
- package/dist/tools/plan/tools.js +10 -11
- package/dist/tools/plan/tools.js.map +1 -1
- package/dist/tools/plan/types.d.ts +22 -32
- package/dist/tools/plan/types.d.ts.map +1 -1
- package/dist/tools/plan/types.js +11 -3
- package/dist/tools/plan/types.js.map +1 -1
- package/dist/tools/progress/index.d.ts +3 -22
- package/dist/tools/progress/index.d.ts.map +1 -1
- package/dist/tools/progress/index.js +19 -34
- package/dist/tools/progress/index.js.map +1 -1
- package/dist/tools/search-skills.d.ts +0 -23
- package/dist/tools/search-skills.d.ts.map +1 -1
- package/dist/tools/search-skills.js +3 -32
- package/dist/tools/search-skills.js.map +1 -1
- package/dist/tools/shell/background.d.ts +2 -18
- package/dist/tools/shell/background.d.ts.map +1 -1
- package/dist/tools/shell/background.js +45 -48
- package/dist/tools/shell/background.js.map +1 -1
- package/dist/tools/shell/constants.d.ts +0 -3
- package/dist/tools/shell/constants.d.ts.map +1 -1
- package/dist/tools/shell/constants.js +16 -6
- package/dist/tools/shell/constants.js.map +1 -1
- package/dist/tools/shell/index.d.ts +1 -1
- package/dist/tools/shell/index.d.ts.map +1 -1
- package/dist/tools/shell/index.js +1 -1
- package/dist/tools/shell/index.js.map +1 -1
- package/dist/tools/shell/tools.d.ts +3 -3
- package/dist/tools/shell/tools.d.ts.map +1 -1
- package/dist/tools/shell/tools.js +0 -2
- package/dist/tools/shell/tools.js.map +1 -1
- package/dist/tools/shell/types.d.ts +5 -13
- package/dist/tools/shell/types.d.ts.map +1 -1
- package/dist/tools/shell/types.js +10 -1
- package/dist/tools/shell/types.js.map +1 -1
- package/dist/tools/spawn-agent/check-agent.d.ts +45 -0
- package/dist/tools/spawn-agent/check-agent.d.ts.map +1 -0
- package/dist/tools/spawn-agent/check-agent.js +84 -0
- package/dist/tools/spawn-agent/check-agent.js.map +1 -0
- package/dist/tools/spawn-agent/index.d.ts +44 -51
- package/dist/tools/spawn-agent/index.d.ts.map +1 -1
- package/dist/tools/spawn-agent/index.js +196 -84
- package/dist/tools/spawn-agent/index.js.map +1 -1
- package/dist/tools/spawn-agent/registry.d.ts +36 -0
- package/dist/tools/spawn-agent/registry.d.ts.map +1 -0
- package/dist/tools/spawn-agent/registry.js +88 -0
- package/dist/tools/spawn-agent/registry.js.map +1 -0
- package/dist/tools/utils/errors.d.ts +2 -1
- package/dist/tools/utils/errors.d.ts.map +1 -1
- package/dist/tools/utils/errors.js +2 -1
- package/dist/tools/utils/errors.js.map +1 -1
- package/dist/tools/utils/shell.d.ts +0 -11
- package/dist/tools/utils/shell.d.ts.map +1 -1
- package/dist/tools/utils/shell.js +10 -78
- package/dist/tools/utils/shell.js.map +1 -1
- package/dist/tools/utils/tool-result.d.ts +0 -3
- package/dist/tools/utils/tool-result.d.ts.map +1 -1
- package/dist/tools/utils/tool-result.js +4 -4
- package/dist/tools/utils/tool-result.js.map +1 -1
- package/dist/tools/web-search/index.d.ts +4 -0
- package/dist/tools/web-search/index.d.ts.map +1 -0
- package/dist/tools/web-search/index.js +3 -0
- package/dist/tools/web-search/index.js.map +1 -0
- package/dist/tools/web-search/tools.d.ts +17 -0
- package/dist/tools/web-search/tools.d.ts.map +1 -0
- package/dist/tools/web-search/tools.js +81 -0
- package/dist/tools/web-search/tools.js.map +1 -0
- package/dist/tools/web-search/types.d.ts +16 -0
- package/dist/tools/web-search/types.d.ts.map +1 -0
- package/dist/tools/web-search/types.js +29 -0
- package/dist/tools/web-search/types.js.map +1 -0
- package/dist/tools/workspace-middleware.d.ts +14 -0
- package/dist/tools/workspace-middleware.d.ts.map +1 -0
- package/dist/tools/workspace-middleware.js +97 -0
- package/dist/tools/workspace-middleware.js.map +1 -0
- package/dist/types/agent.d.ts +1 -66
- package/dist/types/agent.d.ts.map +1 -1
- package/dist/types/agent.js +0 -6
- package/dist/types/agent.js.map +1 -1
- package/dist/types/index.d.ts +4 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +3 -3
- package/dist/types/index.js.map +1 -1
- package/dist/types/lifecycle.d.ts +0 -141
- package/dist/types/lifecycle.d.ts.map +1 -1
- package/dist/types/lifecycle.js +4 -54
- package/dist/types/lifecycle.js.map +1 -1
- package/dist/types/streaming.d.ts +0 -4
- package/dist/types/streaming.d.ts.map +1 -1
- package/dist/types/streaming.js +0 -4
- package/dist/types/streaming.js.map +1 -1
- package/dist/usage-limits.d.ts +0 -37
- package/dist/usage-limits.d.ts.map +1 -1
- package/dist/usage-limits.js +1 -40
- package/dist/usage-limits.js.map +1 -1
- package/dist/workflow/durable-tool.d.ts +0 -84
- package/dist/workflow/durable-tool.d.ts.map +1 -1
- package/dist/workflow/durable-tool.js +2 -104
- package/dist/workflow/durable-tool.js.map +1 -1
- package/dist/workflow/hooks.d.ts +0 -215
- package/dist/workflow/hooks.d.ts.map +1 -1
- package/dist/workflow/hooks.js +15 -221
- package/dist/workflow/hooks.js.map +1 -1
- package/dist/workflow/index.d.ts +0 -9
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +0 -12
- package/dist/workflow/index.js.map +1 -1
- package/dist/workflow/utils.d.ts +0 -24
- package/dist/workflow/utils.d.ts.map +1 -1
- package/dist/workflow/utils.js +1 -32
- package/dist/workflow/utils.js.map +1 -1
- package/dist/wrappers/best-of-n.d.ts +0 -35
- package/dist/wrappers/best-of-n.d.ts.map +1 -1
- package/dist/wrappers/best-of-n.js +4 -53
- package/dist/wrappers/best-of-n.js.map +1 -1
- package/dist/wrappers/refine-loop.d.ts +36 -0
- package/dist/wrappers/refine-loop.d.ts.map +1 -0
- package/dist/wrappers/refine-loop.js +135 -0
- package/dist/wrappers/refine-loop.js.map +1 -0
- package/package.json +14 -8
package/dist/evals/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/evals/runner.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/evals/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAW7C,MAAM,GAAG,GAAG,YAAY,CAAC,mBAAmB,CAAC,CAAC;AAE9C,MAAM,UAAU,eAAe,CAAC,MAAuB;IACrD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,GAAG,CAAC,EAAE,QAAQ,EAAE,cAAc,GAAG,SAAS,EAAE,GAAG,MAAM,CAAC;IAEhG,MAAM,QAAQ,GACZ,OAAO,cAAc,KAAK,QAAQ;QAChC,CAAC,CAAC,cAAc,KAAK,MAAM;YACzB,CAAC,CAAC,kBAAkB,EAAE;YACtB,CAAC,CAAC,qBAAqB,EAAE;QAC3B,CAAC,CAAC,cAAc,CAAC;IAErB,OAAO;QACL,IAAI;QACJ,KAAK;QAEL,KAAK,CAAC,GAAG;YACP,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;YAEnF,MAAM,WAAW,GAAqB,EAAE,CAAC;YAEzC,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;YACzB,MAAM,MAAM,GAAoB,EAAE,CAAC;YAEnC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7C,OAAO,MAAM,CAAC,MAAM,GAAG,cAAc,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC1D,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;oBAChC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;wBACjE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACzB,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;wBACpC,IAAI,GAAG,KAAK,CAAC,CAAC;4BAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;oBACxC,CAAC,CAAC,CAAC;oBACH,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACvB,CAAC;gBAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtB,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;YAED,MAAM,WAAW,GAAoB;gBACnC,IAAI;gBACJ,UAAU,EAAE,KAAK,CAAC,MAAM;gBACxB,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM;gBAClD,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM;gBACnD,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBAChC,KAAK,EAAE,WAAW;aACnB,CAAC;YAEF,QAAQ,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,CAAC;YACnC,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE;gBAC9B,IAAI;gBACJ,MAAM,EAAE,WAAW,CAAC,MAAM;gBAC1B,MAAM,EAAE,WAAW,CAAC,MAAM;gBAC1B,QAAQ,EAAE,WAAW,CAAC,QAAQ;aAC/B,CAAC,CAAC;YAEH,OAAO,WAAW,CAAC;QACrB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,OAAO,CACpB,KAAY,EACZ,QAAkB,EAClB,QAAsB;IAEtB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEtC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,MAAM,CAAC;QAC3C,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YACtC,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;YACzC,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAC/B,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,OAAO,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CACvF;SACF,CAAC,CAAC;QAEH,6DAA6D;QAC7D,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;YACnD,KAAK,CAAC,CAAC;QACT,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC;QAEvC,MAAM,UAAU,GAAoB;YAClC,IAAI,EAAE,IAAI,IAAI,EAAE;YAChB,KAAK,EAAE,EAAE;YACT,UAAU,EAAE,KAAK;gBACf,CAAC,CAAC;oBACE,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,CAAC;oBACnC,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,CAAC;oBACrC,WAAW,EAAE,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC;iBAClE;gBACH,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE;SACxD,CAAC;QAEF,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,GAAG,CACxC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CACpE,CAAC;QAEF,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAmB;YAC7B,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAChC,UAAU,EAAE,gBAAgB;SAC7B,CAAC;QAEF,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC;QAC7B,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAmB;YAC7B,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAChC,UAAU,EAAE,EAAE;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC;QACF,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC;QAC7B,OAAO,MAAM,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB;IAC5B,OAAO;QACL,WAAW,CAAC,QAAQ;YAClB,GAAG,CAAC,IAAI,CAAC,cAAc,QAAQ,EAAE,CAAC,CAAC;QACrC,CAAC;QACD,SAAS,CAAC,MAAM;YACd,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;YAC7C,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC;YAC7D,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;oBAClC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;wBACd,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,IAAI,QAAQ,EAAE,CAAC,CAAC;oBACxD,CAAC;gBACH,CAAC;gBACD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBACjB,GAAG,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;QACH,CAAC;QACD,UAAU,CAAC,MAAM;YACf,GAAG,CAAC,IAAI,CACN,OAAO,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,YAAY,MAAM,CAAC,QAAQ,OAAO,CAC5F,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB;IACzB,OAAO;QACL,UAAU,CAAC,MAAM;YACf,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAC3B;gBACE,KAAK,EAAE,MAAM,CAAC,IAAI;gBAClB,KAAK,EAAE,MAAM,CAAC,UAAU;gBACxB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC9B,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBACnC,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,MAAM,EAAE,CAAC,CAAC,MAAM;wBAChB,OAAO,EAAE,CAAC,CAAC,OAAO;qBACnB,CAAC,CAAC;oBACH,KAAK,EAAE,CAAC,CAAC,KAAK;iBACf,CAAC,CAAC;aACJ,EACD,IAAI,EACJ,CAAC,CACF,CAAC;YACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QACtC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/evals/types.d.ts
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @agntk/core - Evals Framework Types
|
|
3
|
-
*/
|
|
4
1
|
import type { StepResult, ToolSet } from 'ai';
|
|
5
2
|
import type { Agent } from '../types/agent.js';
|
|
6
|
-
/** Result of a single eval case. */
|
|
7
3
|
export interface EvalCaseResult {
|
|
8
4
|
name: string;
|
|
9
5
|
passed: boolean;
|
|
@@ -11,26 +7,21 @@ export interface EvalCaseResult {
|
|
|
11
7
|
assertions: AssertionResult[];
|
|
12
8
|
error?: string;
|
|
13
9
|
}
|
|
14
|
-
/** Result of a single assertion check. */
|
|
15
10
|
export interface AssertionResult {
|
|
16
11
|
name: string;
|
|
17
12
|
passed: boolean;
|
|
18
13
|
message?: string;
|
|
19
14
|
}
|
|
20
|
-
/** A single eval case definition. */
|
|
21
15
|
export interface EvalCase {
|
|
22
16
|
name: string;
|
|
23
17
|
prompt: string;
|
|
24
18
|
assertions: Assertion[];
|
|
25
|
-
/** Timeout in ms. Default: 30000 */
|
|
26
19
|
timeout?: number;
|
|
27
20
|
}
|
|
28
|
-
/** An assertion function that checks agent output. */
|
|
29
21
|
export interface Assertion {
|
|
30
22
|
name: string;
|
|
31
23
|
check: (result: EvalAgentResult) => AssertionResult | Promise<AssertionResult>;
|
|
32
24
|
}
|
|
33
|
-
/** Agent execution result passed to assertions. */
|
|
34
25
|
export interface EvalAgentResult {
|
|
35
26
|
text: string;
|
|
36
27
|
steps: StepResult<ToolSet>[];
|
|
@@ -40,17 +31,13 @@ export interface EvalAgentResult {
|
|
|
40
31
|
totalTokens?: number;
|
|
41
32
|
};
|
|
42
33
|
}
|
|
43
|
-
/** Eval suite configuration. */
|
|
44
34
|
export interface EvalSuiteConfig {
|
|
45
35
|
name: string;
|
|
46
36
|
agent: Agent;
|
|
47
37
|
cases: EvalCase[];
|
|
48
|
-
/** Max concurrent eval cases. Default: 1 */
|
|
49
38
|
maxConcurrency?: number;
|
|
50
|
-
/** Reporter for results. Default: 'console' */
|
|
51
39
|
reporter?: 'console' | 'json' | EvalReporter;
|
|
52
40
|
}
|
|
53
|
-
/** Eval suite runner result. */
|
|
54
41
|
export interface EvalSuiteResult {
|
|
55
42
|
name: string;
|
|
56
43
|
totalCases: number;
|
|
@@ -59,7 +46,6 @@ export interface EvalSuiteResult {
|
|
|
59
46
|
duration: number;
|
|
60
47
|
cases: EvalCaseResult[];
|
|
61
48
|
}
|
|
62
|
-
/** Custom reporter interface. */
|
|
63
49
|
export interface EvalReporter {
|
|
64
50
|
onCaseStart?: (caseName: string) => void;
|
|
65
51
|
onCaseEnd?: (result: EvalCaseResult) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/evals/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/evals/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,SAAS,EAAE,CAAC;IAExB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CAChF;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7B,UAAU,EAAE;QACV,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,QAAQ,EAAE,CAAC;IAElB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,QAAQ,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,YAAY,CAAC;CAC9C;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IAC7C,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;CAChD"}
|
package/dist/evals/types.js
CHANGED
package/dist/evals/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/evals/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/evals/types.ts"],"names":[],"mappings":""}
|
|
@@ -1,14 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Built-in guardrails for common validation patterns.
|
|
3
|
-
*/
|
|
4
1
|
import type { Guardrail } from './types.js';
|
|
5
|
-
/**
|
|
6
|
-
* Content filter that detects and optionally redacts PII.
|
|
7
|
-
* Blocks content containing SSNs, credit cards, emails, or phone numbers.
|
|
8
|
-
*
|
|
9
|
-
* @param options.redact - If true, provides a `filtered` version with PII replaced. Default: true.
|
|
10
|
-
* @param options.patterns - Additional patterns to match (appended to built-in set).
|
|
11
|
-
*/
|
|
12
2
|
export declare function contentFilter(options?: {
|
|
13
3
|
redact?: boolean;
|
|
14
4
|
patterns?: Array<{
|
|
@@ -17,29 +7,11 @@ export declare function contentFilter(options?: {
|
|
|
17
7
|
replacement: string;
|
|
18
8
|
}>;
|
|
19
9
|
}): Guardrail;
|
|
20
|
-
/**
|
|
21
|
-
* Topic filter that blocks content matching specified forbidden topics.
|
|
22
|
-
* Uses keyword matching against a blocklist.
|
|
23
|
-
*
|
|
24
|
-
* @param blockedTopics - List of forbidden topic keywords or patterns.
|
|
25
|
-
*/
|
|
26
10
|
export declare function topicFilter(blockedTopics: Array<string | RegExp>): Guardrail;
|
|
27
|
-
/**
|
|
28
|
-
* Length limit guardrail that blocks content exceeding a character or word count.
|
|
29
|
-
*
|
|
30
|
-
* @param options.maxChars - Maximum character count. Default: no limit.
|
|
31
|
-
* @param options.maxWords - Maximum word count. Default: no limit.
|
|
32
|
-
*/
|
|
33
11
|
export declare function lengthLimit(options: {
|
|
34
12
|
maxChars?: number;
|
|
35
13
|
maxWords?: number;
|
|
36
14
|
}): Guardrail;
|
|
37
|
-
/**
|
|
38
|
-
* Create a custom guardrail from a function.
|
|
39
|
-
*
|
|
40
|
-
* @param name - Unique name for the guardrail.
|
|
41
|
-
* @param checkFn - Function that returns true/false or a full GuardrailResult.
|
|
42
|
-
*/
|
|
43
15
|
export declare function custom(name: string, checkFn: (text: string) => boolean | {
|
|
44
16
|
passed: boolean;
|
|
45
17
|
message?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"built-ins.d.ts","sourceRoot":"","sources":["../../src/guardrails/built-ins.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"built-ins.d.ts","sourceRoot":"","sources":["../../src/guardrails/built-ins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAqBzC,wBAAgB,aAAa,CAC3B,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrE,GACL,SAAS,CAiCX;AAED,wBAAgB,WAAW,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,SAAS,CAqC5E;AAMD,wBAAgB,WAAW,CAAC,OAAO,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CA6BxF;AAED,wBAAgB,MAAM,CACpB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5F,SAAS,CAeX"}
|
|
@@ -1,23 +1,21 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Built-in guardrails for common validation patterns.
|
|
3
|
-
*/
|
|
4
|
-
// ============================================================================
|
|
5
|
-
// PII / Content Filter
|
|
6
|
-
// ============================================================================
|
|
7
|
-
/** Common PII patterns. */
|
|
8
1
|
const PII_PATTERNS = [
|
|
9
2
|
{ name: 'SSN', pattern: /\b\d{3}-\d{2}-\d{4}\b/g, replacement: '[SSN REDACTED]' },
|
|
10
|
-
{
|
|
11
|
-
|
|
12
|
-
|
|
3
|
+
{
|
|
4
|
+
name: 'credit card',
|
|
5
|
+
pattern: /\b\d{4}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b/g,
|
|
6
|
+
replacement: '[CC REDACTED]',
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
name: 'email',
|
|
10
|
+
pattern: /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g,
|
|
11
|
+
replacement: '[EMAIL REDACTED]',
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
name: 'phone',
|
|
15
|
+
pattern: /\b(?:\+?1[-.\s]?)?\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}\b/g,
|
|
16
|
+
replacement: '[PHONE REDACTED]',
|
|
17
|
+
},
|
|
13
18
|
];
|
|
14
|
-
/**
|
|
15
|
-
* Content filter that detects and optionally redacts PII.
|
|
16
|
-
* Blocks content containing SSNs, credit cards, emails, or phone numbers.
|
|
17
|
-
*
|
|
18
|
-
* @param options.redact - If true, provides a `filtered` version with PII replaced. Default: true.
|
|
19
|
-
* @param options.patterns - Additional patterns to match (appended to built-in set).
|
|
20
|
-
*/
|
|
21
19
|
export function contentFilter(options = {}) {
|
|
22
20
|
const { redact = true, patterns: extra = [] } = options;
|
|
23
21
|
const allPatterns = [...PII_PATTERNS, ...extra];
|
|
@@ -27,7 +25,6 @@ export function contentFilter(options = {}) {
|
|
|
27
25
|
const found = [];
|
|
28
26
|
let filtered = text;
|
|
29
27
|
for (const { name, pattern, replacement } of allPatterns) {
|
|
30
|
-
// Reset lastIndex for global regex
|
|
31
28
|
pattern.lastIndex = 0;
|
|
32
29
|
if (pattern.test(text)) {
|
|
33
30
|
found.push(name);
|
|
@@ -49,15 +46,6 @@ export function contentFilter(options = {}) {
|
|
|
49
46
|
},
|
|
50
47
|
};
|
|
51
48
|
}
|
|
52
|
-
// ============================================================================
|
|
53
|
-
// Topic Filter
|
|
54
|
-
// ============================================================================
|
|
55
|
-
/**
|
|
56
|
-
* Topic filter that blocks content matching specified forbidden topics.
|
|
57
|
-
* Uses keyword matching against a blocklist.
|
|
58
|
-
*
|
|
59
|
-
* @param blockedTopics - List of forbidden topic keywords or patterns.
|
|
60
|
-
*/
|
|
61
49
|
export function topicFilter(blockedTopics) {
|
|
62
50
|
const matchers = blockedTopics.map((topic) => typeof topic === 'string' ? new RegExp(`\\b${escapeRegex(topic)}\\b`, 'i') : topic);
|
|
63
51
|
return {
|
|
@@ -67,8 +55,12 @@ export function topicFilter(blockedTopics) {
|
|
|
67
55
|
const matched = [];
|
|
68
56
|
for (let i = 0; i < matchers.length; i++) {
|
|
69
57
|
matchers[i].lastIndex = 0;
|
|
70
|
-
if (matchers[i].test(text) ||
|
|
71
|
-
|
|
58
|
+
if (matchers[i].test(text) ||
|
|
59
|
+
(typeof blockedTopics[i] === 'string' &&
|
|
60
|
+
textLower.includes(blockedTopics[i].toLowerCase()))) {
|
|
61
|
+
matched.push(typeof blockedTopics[i] === 'string'
|
|
62
|
+
? blockedTopics[i]
|
|
63
|
+
: String(blockedTopics[i]));
|
|
72
64
|
}
|
|
73
65
|
}
|
|
74
66
|
if (matched.length === 0) {
|
|
@@ -85,15 +77,6 @@ export function topicFilter(blockedTopics) {
|
|
|
85
77
|
function escapeRegex(str) {
|
|
86
78
|
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
87
79
|
}
|
|
88
|
-
// ============================================================================
|
|
89
|
-
// Length Limit
|
|
90
|
-
// ============================================================================
|
|
91
|
-
/**
|
|
92
|
-
* Length limit guardrail that blocks content exceeding a character or word count.
|
|
93
|
-
*
|
|
94
|
-
* @param options.maxChars - Maximum character count. Default: no limit.
|
|
95
|
-
* @param options.maxWords - Maximum word count. Default: no limit.
|
|
96
|
-
*/
|
|
97
80
|
export function lengthLimit(options) {
|
|
98
81
|
const { maxChars, maxWords } = options;
|
|
99
82
|
return {
|
|
@@ -121,15 +104,6 @@ export function lengthLimit(options) {
|
|
|
121
104
|
},
|
|
122
105
|
};
|
|
123
106
|
}
|
|
124
|
-
// ============================================================================
|
|
125
|
-
// Custom Guardrail Factory
|
|
126
|
-
// ============================================================================
|
|
127
|
-
/**
|
|
128
|
-
* Create a custom guardrail from a function.
|
|
129
|
-
*
|
|
130
|
-
* @param name - Unique name for the guardrail.
|
|
131
|
-
* @param checkFn - Function that returns true/false or a full GuardrailResult.
|
|
132
|
-
*/
|
|
133
107
|
export function custom(name, checkFn) {
|
|
134
108
|
return {
|
|
135
109
|
name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"built-ins.js","sourceRoot":"","sources":["../../src/guardrails/built-ins.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"built-ins.js","sourceRoot":"","sources":["../../src/guardrails/built-ins.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Guardrails module public API.
|
|
3
|
-
*/
|
|
4
1
|
export type { Guardrail, GuardrailResult, GuardrailContext, GuardrailsConfig, OnBlockAction, } from './types.js';
|
|
5
2
|
export { GuardrailBlockedError } from './types.js';
|
|
6
3
|
export { contentFilter, topicFilter, lengthLimit, custom } from './built-ins.js';
|
|
7
|
-
export { runGuardrails, handleGuardrailResults, buildRetryFeedback, wrapWithGuardrails } from './runner.js';
|
|
4
|
+
export { runGuardrails, handleGuardrailResults, buildRetryFeedback, wrapWithGuardrails, } from './runner.js';
|
|
8
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/guardrails/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/guardrails/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,UAAU,CAAC"}
|
package/dist/guardrails/index.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Guardrails module public API.
|
|
3
|
-
*/
|
|
4
1
|
export { GuardrailBlockedError } from './types.js';
|
|
5
2
|
export { contentFilter, topicFilter, lengthLimit, custom } from './built-ins.js';
|
|
6
|
-
export { runGuardrails, handleGuardrailResults, buildRetryFeedback, wrapWithGuardrails } from './runner.js';
|
|
3
|
+
export { runGuardrails, handleGuardrailResults, buildRetryFeedback, wrapWithGuardrails, } from './runner.js';
|
|
7
4
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/guardrails/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/guardrails/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,UAAU,CAAC"}
|
|
@@ -1,44 +1,14 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Guardrail runner with parallel execution and fast-fail.
|
|
3
|
-
*/
|
|
4
1
|
import type { Guardrail, GuardrailResult, GuardrailContext, GuardrailsConfig, OnBlockAction } from './types.js';
|
|
5
|
-
/**
|
|
6
|
-
* Run guardrails sequentially so each filter operates on the previous filter's output.
|
|
7
|
-
*
|
|
8
|
-
* This prevents a bug where parallel execution causes each guardrail to produce
|
|
9
|
-
* `.filtered` from the original text independently — if guardrail A redacts PII
|
|
10
|
-
* and guardrail B truncates, the truncated version could leak PII because B never
|
|
11
|
-
* saw A's redaction.
|
|
12
|
-
*
|
|
13
|
-
* Sequential execution ensures filter composition: A redacts → B truncates the
|
|
14
|
-
* already-redacted text.
|
|
15
|
-
*/
|
|
16
2
|
export declare function runGuardrails(guardrails: Guardrail[], text: string, context: GuardrailContext): Promise<{
|
|
17
3
|
results: GuardrailResult[];
|
|
18
4
|
filteredText: string;
|
|
19
5
|
}>;
|
|
20
|
-
/**
|
|
21
|
-
* Check guardrail results and handle the onBlock action.
|
|
22
|
-
*
|
|
23
|
-
* @param filteredText - The text after all guardrail filters have been applied sequentially.
|
|
24
|
-
* @returns The (possibly filtered) text, or throws if blocked.
|
|
25
|
-
*/
|
|
26
6
|
export declare function handleGuardrailResults(results: GuardrailResult[], text: string, filteredText: string, phase: 'input' | 'output', onBlock: OnBlockAction): {
|
|
27
7
|
blocked: boolean;
|
|
28
8
|
text: string;
|
|
29
9
|
results: GuardrailResult[];
|
|
30
10
|
};
|
|
31
|
-
/**
|
|
32
|
-
* Build a guardrail feedback message for retry attempts.
|
|
33
|
-
* This is appended to the prompt when retrying after an output guardrail failure.
|
|
34
|
-
*/
|
|
35
11
|
export declare function buildRetryFeedback(results: GuardrailResult[]): string;
|
|
36
|
-
/**
|
|
37
|
-
* Wrap an agent's generate function with guardrail checks.
|
|
38
|
-
*
|
|
39
|
-
* Input guardrails run before the agent; output guardrails run after.
|
|
40
|
-
* Both phases run their guardrails in parallel.
|
|
41
|
-
*/
|
|
42
12
|
export declare function wrapWithGuardrails<T extends {
|
|
43
13
|
text: string;
|
|
44
14
|
}>(generateFn: (input: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/guardrails/runner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/guardrails/runner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACd,MAAM,SAAS,CAAC;AAKjB,wBAAsB,aAAa,CACjC,UAAU,EAAE,SAAS,EAAE,EACvB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC;IAAE,OAAO,EAAE,eAAe,EAAE,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAyB/D;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,eAAe,EAAE,EAC1B,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,OAAO,GAAG,QAAQ,EACzB,OAAO,EAAE,aAAa,GACrB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,eAAe,EAAE,CAAA;CAAE,CA0BhE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,MAAM,CAOrE;AAED,wBAAgB,kBAAkB,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAC3D,UAAU,EAAE,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,KAAK,OAAO,CAAC,CAAC,CAAC,EACrD,MAAM,EAAE,gBAAgB,GACvB,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CA0F3C"}
|
|
@@ -1,23 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Guardrail runner with parallel execution and fast-fail.
|
|
3
|
-
*/
|
|
4
1
|
import { createLogger } from '@agntk/logger';
|
|
5
2
|
import { GuardrailBlockedError } from './types.js';
|
|
6
3
|
const log = createLogger('@agntk/core:guardrails');
|
|
7
|
-
// ============================================================================
|
|
8
|
-
// Parallel Runner
|
|
9
|
-
// ============================================================================
|
|
10
|
-
/**
|
|
11
|
-
* Run guardrails sequentially so each filter operates on the previous filter's output.
|
|
12
|
-
*
|
|
13
|
-
* This prevents a bug where parallel execution causes each guardrail to produce
|
|
14
|
-
* `.filtered` from the original text independently — if guardrail A redacts PII
|
|
15
|
-
* and guardrail B truncates, the truncated version could leak PII because B never
|
|
16
|
-
* saw A's redaction.
|
|
17
|
-
*
|
|
18
|
-
* Sequential execution ensures filter composition: A redacts → B truncates the
|
|
19
|
-
* already-redacted text.
|
|
20
|
-
*/
|
|
21
4
|
export async function runGuardrails(guardrails, text, context) {
|
|
22
5
|
if (guardrails.length === 0)
|
|
23
6
|
return { results: [], filteredText: text };
|
|
@@ -27,7 +10,6 @@ export async function runGuardrails(guardrails, text, context) {
|
|
|
27
10
|
try {
|
|
28
11
|
const result = await guard.check(currentText, context);
|
|
29
12
|
results.push(result);
|
|
30
|
-
// Chain: each filter operates on the previous filter's output
|
|
31
13
|
if (!result.passed && result.filtered) {
|
|
32
14
|
currentText = result.filtered;
|
|
33
15
|
}
|
|
@@ -43,12 +25,6 @@ export async function runGuardrails(guardrails, text, context) {
|
|
|
43
25
|
}
|
|
44
26
|
return { results, filteredText: currentText };
|
|
45
27
|
}
|
|
46
|
-
/**
|
|
47
|
-
* Check guardrail results and handle the onBlock action.
|
|
48
|
-
*
|
|
49
|
-
* @param filteredText - The text after all guardrail filters have been applied sequentially.
|
|
50
|
-
* @returns The (possibly filtered) text, or throws if blocked.
|
|
51
|
-
*/
|
|
52
28
|
export function handleGuardrailResults(results, text, filteredText, phase, onBlock) {
|
|
53
29
|
const allPassed = results.every((r) => r.passed);
|
|
54
30
|
if (allPassed) {
|
|
@@ -63,38 +39,22 @@ export function handleGuardrailResults(results, text, filteredText, phase, onBlo
|
|
|
63
39
|
case 'throw':
|
|
64
40
|
throw new GuardrailBlockedError(phase, results);
|
|
65
41
|
case 'filter':
|
|
66
|
-
// filteredText already has all guardrail filters applied in sequence
|
|
67
42
|
return { blocked: true, text: filteredText, results };
|
|
68
43
|
case 'retry':
|
|
69
|
-
// Signal that a retry is needed — caller handles the retry loop
|
|
70
44
|
return { blocked: true, text, results };
|
|
71
45
|
default:
|
|
72
46
|
throw new GuardrailBlockedError(phase, results);
|
|
73
47
|
}
|
|
74
48
|
}
|
|
75
|
-
// ============================================================================
|
|
76
|
-
// Agent Wrapper
|
|
77
|
-
// ============================================================================
|
|
78
|
-
/**
|
|
79
|
-
* Build a guardrail feedback message for retry attempts.
|
|
80
|
-
* This is appended to the prompt when retrying after an output guardrail failure.
|
|
81
|
-
*/
|
|
82
49
|
export function buildRetryFeedback(results) {
|
|
83
50
|
const failed = results.filter((r) => !r.passed);
|
|
84
51
|
const lines = failed.map((r) => `- [${r.name}]: ${r.message ?? 'blocked'}`);
|
|
85
52
|
return ('\n\n[GUARDRAIL FEEDBACK] Your previous response was blocked. Please regenerate, addressing:\n' +
|
|
86
53
|
lines.join('\n'));
|
|
87
54
|
}
|
|
88
|
-
/**
|
|
89
|
-
* Wrap an agent's generate function with guardrail checks.
|
|
90
|
-
*
|
|
91
|
-
* Input guardrails run before the agent; output guardrails run after.
|
|
92
|
-
* Both phases run their guardrails in parallel.
|
|
93
|
-
*/
|
|
94
55
|
export function wrapWithGuardrails(generateFn, config) {
|
|
95
|
-
const { input: inputGuards = [], output: outputGuards = [], onBlock = 'throw', maxRetries = 2 } = config;
|
|
56
|
+
const { input: inputGuards = [], output: outputGuards = [], onBlock = 'throw', maxRetries = 2, } = config;
|
|
96
57
|
return async (input) => {
|
|
97
|
-
// ─── Input Guardrails ───────────────────────────────────────────────
|
|
98
58
|
if (inputGuards.length > 0) {
|
|
99
59
|
const { results: inputResults, filteredText: inputFiltered } = await runGuardrails(inputGuards, input.prompt, {
|
|
100
60
|
prompt: input.prompt,
|
|
@@ -104,12 +64,10 @@ export function wrapWithGuardrails(generateFn, config) {
|
|
|
104
64
|
if (inputCheck.blocked && onBlock === 'filter') {
|
|
105
65
|
input = { prompt: inputCheck.text };
|
|
106
66
|
}
|
|
107
|
-
// If onBlock is 'retry' for input, we just throw (can't retry user input)
|
|
108
67
|
if (inputCheck.blocked && onBlock === 'retry') {
|
|
109
68
|
throw new GuardrailBlockedError('input', inputResults);
|
|
110
69
|
}
|
|
111
70
|
}
|
|
112
|
-
// ─── Agent Execution + Output Guardrails ────────────────────────────
|
|
113
71
|
let lastResult;
|
|
114
72
|
let attempts = 0;
|
|
115
73
|
let currentPrompt = input.prompt;
|
|
@@ -134,15 +92,12 @@ export function wrapWithGuardrails(generateFn, config) {
|
|
|
134
92
|
if (attempts > maxRetries) {
|
|
135
93
|
throw new GuardrailBlockedError('output', outputResults);
|
|
136
94
|
}
|
|
137
|
-
// Append guardrail feedback for the retry
|
|
138
95
|
currentPrompt = input.prompt + buildRetryFeedback(outputResults);
|
|
139
96
|
log.info('Retrying with guardrail feedback', { attempt: attempts, maxRetries });
|
|
140
97
|
continue;
|
|
141
98
|
}
|
|
142
|
-
// onBlock === 'throw' is handled inside handleGuardrailResults
|
|
143
99
|
break;
|
|
144
100
|
}
|
|
145
|
-
// E-2: Guard against undefined lastResult (reachable when maxRetries=0 and output blocked)
|
|
146
101
|
if (!lastResult) {
|
|
147
102
|
throw new GuardrailBlockedError('output', []);
|
|
148
103
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/guardrails/runner.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/guardrails/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,59 +1,24 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Type definitions for the guardrails system.
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Result of a guardrail check.
|
|
6
|
-
*/
|
|
7
1
|
export interface GuardrailResult {
|
|
8
|
-
/** Whether the content passed the guardrail. */
|
|
9
2
|
passed: boolean;
|
|
10
|
-
/** Name of the guardrail that produced this result. */
|
|
11
3
|
name: string;
|
|
12
|
-
/** Human-readable message (populated on failure). */
|
|
13
4
|
message?: string;
|
|
14
|
-
/** Filtered/cleaned output (if the guardrail supports filtering). */
|
|
15
5
|
filtered?: string;
|
|
16
6
|
}
|
|
17
|
-
/**
|
|
18
|
-
* A guardrail function that validates content.
|
|
19
|
-
* Receives the text to validate and returns a result.
|
|
20
|
-
* Can be async for guardrails that call external services.
|
|
21
|
-
*/
|
|
22
7
|
export interface Guardrail {
|
|
23
|
-
/** Unique name for this guardrail. */
|
|
24
8
|
name: string;
|
|
25
|
-
/** Check function. Returns result or throws on unexpected errors. */
|
|
26
9
|
check: (text: string, context?: GuardrailContext) => GuardrailResult | Promise<GuardrailResult>;
|
|
27
10
|
}
|
|
28
|
-
/**
|
|
29
|
-
* Context passed to guardrails for richer decision-making.
|
|
30
|
-
*/
|
|
31
11
|
export interface GuardrailContext {
|
|
32
|
-
/** The original user prompt. */
|
|
33
12
|
prompt?: string;
|
|
34
|
-
/** Whether this is an input or output guardrail. */
|
|
35
13
|
phase: 'input' | 'output';
|
|
36
14
|
}
|
|
37
|
-
/**
|
|
38
|
-
* Action to take when a guardrail blocks.
|
|
39
|
-
*/
|
|
40
15
|
export type OnBlockAction = 'throw' | 'retry' | 'filter';
|
|
41
|
-
/**
|
|
42
|
-
* Configuration for guardrails on an agent.
|
|
43
|
-
*/
|
|
44
16
|
export interface GuardrailsConfig {
|
|
45
|
-
/** Guardrails to run on user input (before the agent). */
|
|
46
17
|
input?: Guardrail[];
|
|
47
|
-
/** Guardrails to run on agent output (after the agent). */
|
|
48
18
|
output?: Guardrail[];
|
|
49
|
-
/** Action when a guardrail blocks. Default: 'throw'. */
|
|
50
19
|
onBlock?: OnBlockAction;
|
|
51
|
-
/** Maximum retries when onBlock is 'retry'. Default: 2. */
|
|
52
20
|
maxRetries?: number;
|
|
53
21
|
}
|
|
54
|
-
/**
|
|
55
|
-
* Error thrown when a guardrail blocks and onBlock is 'throw'.
|
|
56
|
-
*/
|
|
57
22
|
export declare class GuardrailBlockedError extends Error {
|
|
58
23
|
readonly guardrailName: string;
|
|
59
24
|
readonly phase: 'input' | 'output';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/guardrails/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/guardrails/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,OAAO,CAAC;IAEhB,IAAI,EAAE,MAAM,CAAC;IAEb,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IAEb,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,KAAK,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CACjG;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,KAAK,EAAE,OAAO,GAAG,QAAQ,CAAC;CAC3B;AAED,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEzD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;IAEpB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IAErB,OAAO,CAAC,EAAE,aAAa,CAAC;IAExB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,SAAgB,aAAa,EAAE,MAAM,CAAC;IACtC,SAAgB,KAAK,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC1C,SAAgB,OAAO,EAAE,eAAe,EAAE,CAAC;gBAE/B,KAAK,EAAE,OAAO,GAAG,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE;CAalE"}
|
package/dist/guardrails/types.js
CHANGED
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Type definitions for the guardrails system.
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Error thrown when a guardrail blocks and onBlock is 'throw'.
|
|
6
|
-
*/
|
|
7
1
|
export class GuardrailBlockedError extends Error {
|
|
8
2
|
guardrailName;
|
|
9
3
|
phase;
|
|
@@ -11,7 +5,10 @@ export class GuardrailBlockedError extends Error {
|
|
|
11
5
|
constructor(phase, results) {
|
|
12
6
|
const failed = results.filter((r) => !r.passed);
|
|
13
7
|
const names = failed.map((r) => r.name).join(', ');
|
|
14
|
-
const messages = failed
|
|
8
|
+
const messages = failed
|
|
9
|
+
.map((r) => r.message)
|
|
10
|
+
.filter(Boolean)
|
|
11
|
+
.join('; ');
|
|
15
12
|
super(`Guardrail blocked (${phase}): [${names}] ${messages}`);
|
|
16
13
|
this.name = 'GuardrailBlockedError';
|
|
17
14
|
this.guardrailName = names;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/guardrails/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/guardrails/types.ts"],"names":[],"mappings":"AAkCA,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9B,aAAa,CAAS;IACtB,KAAK,CAAqB;IAC1B,OAAO,CAAoB;IAE3C,YAAY,KAAyB,EAAE,OAA0B;QAC/D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,MAAM;aACpB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;aACrB,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,KAAK,CAAC,sBAAsB,KAAK,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF"}
|