feat: harden generic preset, add LLM retry, and finish tooling/docs
- PatternDef.validate + Luhn-gated credit-card detection; de-overlap the generic phone/date/IP patterns; presets.swiss unchanged (production behavior) - strip g/y flags from nameHint so .test() is stateless (latent footgun) - openAICompatibleProvider: bounded retry on transient failures (network / timeout / 429 / 5xx), configurable via retries + retryDelayMs - eslint + prettier + vitest coverage (97%); CI runs lint/format/coverage - docs: README badges + new-option docs, SECURITY.md, issue/PR templates 26 tests passing; build emits ESM+CJS+types. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -15,3 +15,8 @@ All notable changes to this project are documented here. The format is based on
|
||||
- `openAICompatibleProvider` — pluggable LLM detection over any OpenAI-compatible Chat Completions API.
|
||||
- `presets.swiss` and `presets.generic` regex pattern sets; fully configurable custom patterns.
|
||||
- Regex-only mode (no LLM provider required).
|
||||
- `PatternDef.validate` — optional second-stage predicate to cut false positives; `presets.generic` uses
|
||||
it for a Luhn check on credit-card candidates, and de-overlaps its phone/date/IP patterns.
|
||||
- `openAICompatibleProvider` retries transient failures (network/timeout/429/5xx) via `retries` and
|
||||
`retryDelayMs` options; non-transient 4xx and malformed responses are not retried.
|
||||
- Hardened the `nameHint` heuristic: `g`/`y` flags are stripped internally so `.test()` is stateless.
|
||||
|
||||
Reference in New Issue
Block a user