pi-rehydra 1.0.0 → 1.0.3
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/README.en.md +31 -4
- package/README.md +31 -4
- package/dist/core/anonymizer.d.ts +9 -1
- package/dist/core/anonymizer.d.ts.map +1 -1
- package/dist/core/anonymizer.js +169 -15
- package/dist/core/anonymizer.js.map +1 -1
- package/dist/core/observer.d.ts +33 -0
- package/dist/core/observer.d.ts.map +1 -0
- package/dist/core/observer.js +2 -0
- package/dist/core/observer.js.map +1 -0
- package/dist/host-agnostic/normalize-options.d.ts +30 -2
- package/dist/host-agnostic/normalize-options.d.ts.map +1 -1
- package/dist/host-agnostic/normalize-options.js +61 -4
- package/dist/host-agnostic/normalize-options.js.map +1 -1
- package/dist/host-agnostic/policy-input.d.ts +41 -0
- package/dist/host-agnostic/policy-input.d.ts.map +1 -0
- package/dist/host-agnostic/policy-input.js +172 -0
- package/dist/host-agnostic/policy-input.js.map +1 -0
- package/dist/host-agnostic/scrub.d.ts +42 -2
- package/dist/host-agnostic/scrub.d.ts.map +1 -1
- package/dist/host-agnostic/scrub.js +135 -17
- package/dist/host-agnostic/scrub.js.map +1 -1
- package/dist/ner/inference-server-client.d.ts.map +1 -1
- package/dist/ner/inference-server-client.js +18 -2
- package/dist/ner/inference-server-client.js.map +1 -1
- package/dist/ner/inference-server-ner-model.d.ts +8 -0
- package/dist/ner/inference-server-ner-model.d.ts.map +1 -1
- package/dist/ner/inference-server-ner-model.js +36 -3
- package/dist/ner/inference-server-ner-model.js.map +1 -1
- package/dist/ner/ner-model.d.ts.map +1 -1
- package/dist/ner/ner-model.js +5 -1
- package/dist/ner/ner-model.js.map +1 -1
- package/dist/pi-extension/extension.d.ts +2 -2
- package/dist/pi-extension/extension.d.ts.map +1 -1
- package/dist/pi-extension/extension.js +319 -26
- package/dist/pi-extension/extension.js.map +1 -1
- package/dist/pi-extension/host-types.d.ts +11 -2
- package/dist/pi-extension/host-types.d.ts.map +1 -1
- package/dist/pi-extension/options.d.ts +16 -0
- package/dist/pi-extension/options.d.ts.map +1 -1
- package/dist/pipeline/prenormalize.d.ts.map +1 -1
- package/dist/pipeline/prenormalize.js +4 -5
- package/dist/pipeline/prenormalize.js.map +1 -1
- package/dist/pipeline/tagger.d.ts.map +1 -1
- package/dist/pipeline/tagger.js +1 -0
- package/dist/pipeline/tagger.js.map +1 -1
- package/dist/pipeline/title-extractor.d.ts.map +1 -1
- package/dist/pipeline/title-extractor.js +3 -0
- package/dist/pipeline/title-extractor.js.map +1 -1
- package/dist/proxy/rehydra-fetch.d.ts.map +1 -1
- package/dist/proxy/rehydra-fetch.js +16 -5
- package/dist/proxy/rehydra-fetch.js.map +1 -1
- package/dist/recognizers/address.d.ts.map +1 -1
- package/dist/recognizers/address.js +1 -0
- package/dist/recognizers/address.js.map +1 -1
- package/dist/recognizers/base.d.ts +6 -0
- package/dist/recognizers/base.d.ts.map +1 -1
- package/dist/recognizers/base.js +1 -0
- package/dist/recognizers/base.js.map +1 -1
- package/dist/recognizers/bic-swift.d.ts.map +1 -1
- package/dist/recognizers/bic-swift.js +29 -0
- package/dist/recognizers/bic-swift.js.map +1 -1
- package/dist/recognizers/credit-card.d.ts.map +1 -1
- package/dist/recognizers/credit-card.js +1 -0
- package/dist/recognizers/credit-card.js.map +1 -1
- package/dist/recognizers/custom-id.d.ts.map +1 -1
- package/dist/recognizers/custom-id.js +12 -4
- package/dist/recognizers/custom-id.js.map +1 -1
- package/dist/recognizers/date.d.ts.map +1 -1
- package/dist/recognizers/date.js +1 -0
- package/dist/recognizers/date.js.map +1 -1
- package/dist/recognizers/email.d.ts.map +1 -1
- package/dist/recognizers/email.js +4 -0
- package/dist/recognizers/email.js.map +1 -1
- package/dist/recognizers/iban.d.ts.map +1 -1
- package/dist/recognizers/iban.js +1 -0
- package/dist/recognizers/iban.js.map +1 -1
- package/dist/recognizers/ip-address.d.ts.map +1 -1
- package/dist/recognizers/ip-address.js +1 -0
- package/dist/recognizers/ip-address.js.map +1 -1
- package/dist/recognizers/phone.d.ts.map +1 -1
- package/dist/recognizers/phone.js +1 -0
- package/dist/recognizers/phone.js.map +1 -1
- package/dist/recognizers/postal-code.d.ts.map +1 -1
- package/dist/recognizers/postal-code.js +1 -0
- package/dist/recognizers/postal-code.js.map +1 -1
- package/dist/recognizers/registry.d.ts.map +1 -1
- package/dist/recognizers/registry.js +3 -1
- package/dist/recognizers/registry.js.map +1 -1
- package/dist/recognizers/secrets/api-key.d.ts.map +1 -1
- package/dist/recognizers/secrets/api-key.js +1 -0
- package/dist/recognizers/secrets/api-key.js.map +1 -1
- package/dist/recognizers/secrets/aws-credentials.d.ts.map +1 -1
- package/dist/recognizers/secrets/aws-credentials.js +1 -0
- package/dist/recognizers/secrets/aws-credentials.js.map +1 -1
- package/dist/recognizers/secrets/config-secret.d.ts.map +1 -1
- package/dist/recognizers/secrets/config-secret.js +12 -5
- package/dist/recognizers/secrets/config-secret.js.map +1 -1
- package/dist/recognizers/secrets/connection-string.d.ts.map +1 -1
- package/dist/recognizers/secrets/connection-string.js +1 -0
- package/dist/recognizers/secrets/connection-string.js.map +1 -1
- package/dist/recognizers/secrets/env-var.d.ts.map +1 -1
- package/dist/recognizers/secrets/env-var.js +17 -3
- package/dist/recognizers/secrets/env-var.js.map +1 -1
- package/dist/recognizers/secrets/index.d.ts +1 -1
- package/dist/recognizers/secrets/index.d.ts.map +1 -1
- package/dist/recognizers/secrets/index.js +1 -1
- package/dist/recognizers/secrets/index.js.map +1 -1
- package/dist/recognizers/secrets/jwt.d.ts.map +1 -1
- package/dist/recognizers/secrets/jwt.js +1 -0
- package/dist/recognizers/secrets/jwt.js.map +1 -1
- package/dist/recognizers/secrets/key-patterns.d.ts +17 -0
- package/dist/recognizers/secrets/key-patterns.d.ts.map +1 -1
- package/dist/recognizers/secrets/key-patterns.js +151 -0
- package/dist/recognizers/secrets/key-patterns.js.map +1 -1
- package/dist/recognizers/secrets/literal-value.d.ts.map +1 -1
- package/dist/recognizers/secrets/literal-value.js +1 -0
- package/dist/recognizers/secrets/literal-value.js.map +1 -1
- package/dist/recognizers/secrets/private-key.d.ts.map +1 -1
- package/dist/recognizers/secrets/private-key.js +1 -0
- package/dist/recognizers/secrets/private-key.js.map +1 -1
- package/dist/recognizers/url.d.ts.map +1 -1
- package/dist/recognizers/url.js +1 -0
- package/dist/recognizers/url.js.map +1 -1
- package/dist/records/recorder.d.ts +87 -0
- package/dist/records/recorder.d.ts.map +1 -0
- package/dist/records/recorder.js +317 -0
- package/dist/records/recorder.js.map +1 -0
- package/dist/records/types.d.ts +80 -0
- package/dist/records/types.d.ts.map +1 -0
- package/dist/records/types.js +33 -0
- package/dist/records/types.js.map +1 -0
- package/dist/storage/session-base.d.ts +3 -2
- package/dist/storage/session-base.d.ts.map +1 -1
- package/dist/storage/session-base.js +2 -2
- package/dist/storage/session-base.js.map +1 -1
- package/dist/storage/types.d.ts +2 -1
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/types/index.d.ts +21 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/json-walk.d.ts +0 -11
- package/dist/utils/json-walk.d.ts.map +1 -1
- package/dist/utils/json-walk.js +0 -34
- package/dist/utils/json-walk.js.map +1 -1
- package/dist/utils/tool-arguments.d.ts +43 -0
- package/dist/utils/tool-arguments.d.ts.map +1 -0
- package/dist/utils/tool-arguments.js +153 -0
- package/dist/utils/tool-arguments.js.map +1 -0
- package/package.json +2 -2
- package/dist/opencode-plugin/git-identity.d.ts +0 -3
- package/dist/opencode-plugin/git-identity.d.ts.map +0 -1
- package/dist/opencode-plugin/git-identity.js +0 -37
- package/dist/opencode-plugin/git-identity.js.map +0 -1
- package/dist/opencode-plugin/github-username.d.ts +0 -3
- package/dist/opencode-plugin/github-username.d.ts.map +0 -1
- package/dist/opencode-plugin/github-username.js +0 -41
- package/dist/opencode-plugin/github-username.js.map +0 -1
- package/dist/opencode-plugin/identity-recognizer.d.ts +0 -5
- package/dist/opencode-plugin/identity-recognizer.d.ts.map +0 -1
- package/dist/opencode-plugin/identity-recognizer.js +0 -21
- package/dist/opencode-plugin/identity-recognizer.js.map +0 -1
- package/dist/opencode-plugin/index.d.ts +0 -7
- package/dist/opencode-plugin/index.d.ts.map +0 -1
- package/dist/opencode-plugin/index.js +0 -6
- package/dist/opencode-plugin/index.js.map +0 -1
- package/dist/opencode-plugin/plugin.d.ts +0 -39
- package/dist/opencode-plugin/plugin.d.ts.map +0 -1
- package/dist/opencode-plugin/plugin.js +0 -294
- package/dist/opencode-plugin/plugin.js.map +0 -1
- package/dist/opencode-plugin/types.d.ts +0 -33
- package/dist/opencode-plugin/types.d.ts.map +0 -1
- package/dist/opencode-plugin/types.js +0 -5
- package/dist/opencode-plugin/types.js.map +0 -1
- package/dist/opencode-plugin/v2/anon-state.d.ts +0 -12
- package/dist/opencode-plugin/v2/anon-state.d.ts.map +0 -1
- package/dist/opencode-plugin/v2/anon-state.js +0 -14
- package/dist/opencode-plugin/v2/anon-state.js.map +0 -1
- package/dist/opencode-plugin/v2/deep-rehydrate.d.ts +0 -13
- package/dist/opencode-plugin/v2/deep-rehydrate.d.ts.map +0 -1
- package/dist/opencode-plugin/v2/deep-rehydrate.js +0 -33
- package/dist/opencode-plugin/v2/deep-rehydrate.js.map +0 -1
- package/dist/opencode-plugin/v2/index.d.ts +0 -17
- package/dist/opencode-plugin/v2/index.d.ts.map +0 -1
- package/dist/opencode-plugin/v2/index.js +0 -17
- package/dist/opencode-plugin/v2/index.js.map +0 -1
- package/dist/opencode-plugin/v2/logger.d.ts +0 -24
- package/dist/opencode-plugin/v2/logger.d.ts.map +0 -1
- package/dist/opencode-plugin/v2/logger.js +0 -73
- package/dist/opencode-plugin/v2/logger.js.map +0 -1
- package/dist/opencode-plugin/v2/options.d.ts +0 -33
- package/dist/opencode-plugin/v2/options.d.ts.map +0 -1
- package/dist/opencode-plugin/v2/options.js +0 -63
- package/dist/opencode-plugin/v2/options.js.map +0 -1
- package/dist/opencode-plugin/v2/register-hooks.d.ts +0 -43
- package/dist/opencode-plugin/v2/register-hooks.d.ts.map +0 -1
- package/dist/opencode-plugin/v2/register-hooks.js +0 -160
- package/dist/opencode-plugin/v2/register-hooks.js.map +0 -1
- package/dist/opencode-plugin/v2/rehydrate-tail.d.ts +0 -101
- package/dist/opencode-plugin/v2/rehydrate-tail.d.ts.map +0 -1
- package/dist/opencode-plugin/v2/rehydrate-tail.js +0 -147
- package/dist/opencode-plugin/v2/rehydrate-tail.js.map +0 -1
- package/dist/opencode-plugin/v2/response-rehydrate.d.ts +0 -78
- package/dist/opencode-plugin/v2/response-rehydrate.d.ts.map +0 -1
- package/dist/opencode-plugin/v2/response-rehydrate.js +0 -210
- package/dist/opencode-plugin/v2/response-rehydrate.js.map +0 -1
- package/dist/opencode-plugin/v2/scrub-messages.d.ts +0 -51
- package/dist/opencode-plugin/v2/scrub-messages.d.ts.map +0 -1
- package/dist/opencode-plugin/v2/scrub-messages.js +0 -105
- package/dist/opencode-plugin/v2/scrub-messages.js.map +0 -1
- package/dist/opencode-plugin/v2/sessions.d.ts +0 -17
- package/dist/opencode-plugin/v2/sessions.d.ts.map +0 -1
- package/dist/opencode-plugin/v2/sessions.js +0 -23
- package/dist/opencode-plugin/v2/sessions.js.map +0 -1
- package/dist/opencode-plugin/v2/sse.d.ts +0 -101
- package/dist/opencode-plugin/v2/sse.d.ts.map +0 -1
- package/dist/opencode-plugin/v2/sse.js +0 -235
- package/dist/opencode-plugin/v2/sse.js.map +0 -1
- package/dist/opencode-plugin/v2/types.d.ts +0 -188
- package/dist/opencode-plugin/v2/types.d.ts.map +0 -1
- package/dist/opencode-plugin/v2/types.js +0 -10
- package/dist/opencode-plugin/v2/types.js.map +0 -1
- package/dist/opencode-plugin/vcs-command.d.ts +0 -3
- package/dist/opencode-plugin/vcs-command.d.ts.map +0 -1
- package/dist/opencode-plugin/vcs-command.js +0 -34
- package/dist/opencode-plugin/vcs-command.js.map +0 -1
package/README.en.md
CHANGED
|
@@ -4,7 +4,7 @@ Scrub detected secrets from Pi conversations before the main LLM request.
|
|
|
4
4
|
|
|
5
5
|
[中文](./README.md)
|
|
6
6
|
|
|
7
|
-
This extension intercepts the conversation between [Pi](https://pi.dev) and the LLM. Secrets from your `.env` files are replaced with placeholders before they leave your machine, and transparently restored before any tool (shell commands, file writes, etc.) executes locally.
|
|
7
|
+
This extension intercepts the conversation between [Pi](https://pi.dev) and the LLM. Secrets from your `.env` files are replaced with placeholders before they leave your machine, and transparently restored before any tool (shell commands, file writes, etc.) executes locally; a placeholder that cannot be restored blocks that tool call.
|
|
8
8
|
|
|
9
9
|
It uses Pi's `ExtensionAPI` events: `context_with_system`, `tool_call`, `tool_result`, `message_end`, and `session_start` / `session_shutdown`.
|
|
10
10
|
|
|
@@ -27,28 +27,55 @@ Pi writes the package entry to `~/.pi/agent/settings.json`. Edit that file to ad
|
|
|
27
27
|
],
|
|
28
28
|
"rehydra": {
|
|
29
29
|
"envFiles": [".env", ".env.local"],
|
|
30
|
-
"redactValues": ["sk-live-abc123..."]
|
|
30
|
+
"redactValues": ["sk-live-abc123..."],
|
|
31
|
+
"allowLiteralTagsIn": ["write", "edit"]
|
|
31
32
|
}
|
|
32
33
|
}
|
|
33
34
|
```
|
|
34
35
|
|
|
35
36
|
Every key under `rehydra` is an extension option: `envFiles`, `redactValues`, `minValueLength`, `disableTypes`, `locale`, `vcsIdentities`, `policy`, `anonymizer`, `tagFormat`. `envFiles` defaults to `["**/.env*"]`, skipping `node_modules`, `.git`, and symlinks.
|
|
36
37
|
|
|
38
|
+
`allowLiteralTagsIn` defaults to an empty array (always block). Tools listed here — typically `write` and `edit` — keep an **unresolvable** literal tag in their arguments instead of aborting, so you can write documentation or tests that intentionally show tag examples. Every allowed occurrence is logged (`allowed literal tag in tool args`, tool name and argument path only). Resolvable tags are still restored in every tool.
|
|
39
|
+
|
|
37
40
|
## How it works
|
|
38
41
|
|
|
39
42
|
| Event | Effect |
|
|
40
43
|
|---|---|
|
|
41
44
|
| `session_start` | Instantiate the anonymizer, build the session map, parse the `rehydra` config |
|
|
42
45
|
| `context_with_system` | Anonymize all request messages and inject the rehydra instruction when needed |
|
|
43
|
-
| `tool_call` |
|
|
46
|
+
| `tool_call` | Strictly restore PII tags in tool arguments before local execution; an unresolvable tag blocks the call |
|
|
44
47
|
| `tool_result` | Anonymize the completed tool result before it re-enters model context |
|
|
45
48
|
| `message_end` | Rewrite the final assistant message so PII tags are replaced with real values |
|
|
46
49
|
| `session_shutdown` | Dispose of the anonymizer and session registry |
|
|
47
50
|
|
|
51
|
+
## Masking records and comparison
|
|
52
|
+
|
|
53
|
+
Once enabled, you can check request by request what was intercepted and what the model actually received:
|
|
54
|
+
|
|
55
|
+
```json
|
|
56
|
+
{
|
|
57
|
+
"rehydra": {
|
|
58
|
+
"record": {
|
|
59
|
+
"enabled": true,
|
|
60
|
+
"includeOriginal": true
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
`/rehydra log` lists the last 20 records for the current session, `/rehydra log <id>` shows one record (hit lines plus field-level before/after), `/rehydra log --type EMAIL` filters by type; `/rehydra clear` clears the current session and `/rehydra clear --all` clears everything (both ask for confirmation).
|
|
67
|
+
|
|
68
|
+
Recording is off by default. When enabled it writes to `~/.pi/agent/rehydra/records/` (directory 0700, files 0600), trimmed by both a 7-day and a 32 MiB cap, with 256 KiB per record for comparisons. **With `includeOriginal` set to true, real values are written to local disk**; set it to false to keep only the type, detector, placeholder, length and offsets. Terminal control characters are escaped when displayed, and record text is never fed back into model context.
|
|
69
|
+
|
|
70
|
+
Any recording failure (unwritable directory, symlink, half-written line) only produces a warning and never affects masking or the request.
|
|
71
|
+
|
|
48
72
|
## Limitations
|
|
73
|
+
- Tool-argument rehydration is strict: when a tag is absent from this session's map (or the map is missing, or decryption fails), the tool call is blocked rather than run with `<PII .../>` as a real value. A placeholder can only be restored from the same session's map; the default map is in memory, so tags from before a process restart cannot be restored.
|
|
49
74
|
|
|
50
75
|
- Model calls that bypass these hooks (rare, e.g. user-initiated notes) are not intercepted.
|
|
51
|
-
- `URL` and `
|
|
76
|
+
- `URL`, `IP_ADDRESS`, `BIC_SWIFT`, `POSTAL_CODE` and `DATE` are disabled by default: recognizers that fire on shape alone misfire badly in code and documents. Restore them with `disableTypes: ["URL", "IP_ADDRESS"]`; a bank identifier still needs a full banking context word nearby.
|
|
77
|
+
- Only the values of sensitive fields in an `.env` file enter the global known-value set; project names and ports are not replaced later in the text. Explicitly configured `redactValues` are not affected by that filter.
|
|
78
|
+
- Collection fields in `policy` may be arrays and thresholds plain objects; an invalid field type fails startup with the field name instead of silently dropping the protection rule.
|
|
52
79
|
- This extension cannot guarantee that title or compaction summaries stay sanitized — disable title agents if you need titles to be human-readable.
|
|
53
80
|
|
|
54
81
|
## License
|
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
[English](./README.en.md)
|
|
6
6
|
|
|
7
|
-
这个扩展拦截 [Pi](https://pi.dev) 与 LLM 之间的对话。你的 `.env` 文件中的密钥在离开本机前被替换为占位符,并在工具(shell
|
|
7
|
+
这个扩展拦截 [Pi](https://pi.dev) 与 LLM 之间的对话。你的 `.env` 文件中的密钥在离开本机前被替换为占位符,并在工具(shell 命令、文件写入等)在本地执行前透明还原;无法还原的占位符会阻止该次工具调用。
|
|
8
8
|
|
|
9
9
|
它依赖 Pi 的 `ExtensionAPI`:`context_with_system`、`tool_call`、`tool_result`、`message_end`、`session_start` / `session_shutdown`。
|
|
10
10
|
|
|
@@ -27,28 +27,55 @@ Pi 会在 `~/.pi/agent/settings.json` 写入包声明。然后编辑该文件添
|
|
|
27
27
|
],
|
|
28
28
|
"rehydra": {
|
|
29
29
|
"envFiles": [".env", ".env.local"],
|
|
30
|
-
"redactValues": ["sk-live-abc123..."]
|
|
30
|
+
"redactValues": ["sk-live-abc123..."],
|
|
31
|
+
"allowLiteralTagsIn": ["write", "edit"]
|
|
31
32
|
}
|
|
32
33
|
}
|
|
33
34
|
```
|
|
34
35
|
|
|
35
36
|
`rehydra` 键的所有字段都是扩展配置项:`envFiles`、`redactValues`、`minValueLength`、`disableTypes`、`locale`、`vcsIdentities`、`policy`、`anonymizer`、`tagFormat`。`envFiles` 默认是 `["**/.env*"]`,会跳过 `node_modules`、`.git` 和符号链接。
|
|
36
37
|
|
|
38
|
+
`allowLiteralTagsIn` 默认是空数组(一律阻断)。列进这个数组的工具(通常是 `write`、`edit`)在参数里出现**无法还原**的字面标签时不再阻断,而是原样保留——用于写文档或测试时故意写标签示例。放行会在日志里留痕(`allowed literal tag in tool args`,只带工具名与参数路径);能还原的标签在任何工具里都照常还原。
|
|
39
|
+
|
|
37
40
|
## 工作原理
|
|
38
41
|
|
|
39
42
|
| 钩子 | 作用 |
|
|
40
43
|
|---|---|
|
|
41
44
|
| `session_start` | 实例化匿名器、装配会话映射、解析 `rehydra` 配置 |
|
|
42
45
|
| `context_with_system` | 匿名化模型请求前的所有消息,并按需追加 rehydra 指令 |
|
|
43
|
-
| `tool_call` |
|
|
46
|
+
| `tool_call` | 在工具执行前严格还原工具入参中的 PII 标签;任一标签无法还原即阻断该次调用 |
|
|
44
47
|
| `tool_result` | 在结果返回给模型前脱敏真实 PII |
|
|
45
48
|
| `message_end` | 改写最终回答的文本块,把 PII 标签还原为真实值 |
|
|
46
49
|
| `session_shutdown` | 释放匿名器与会话注册表 |
|
|
47
50
|
|
|
51
|
+
## 脱敏记录与对照
|
|
52
|
+
|
|
53
|
+
开启后可以逐请求核对"哪些内容被拦截、模型实际收到了什么":
|
|
54
|
+
|
|
55
|
+
```json
|
|
56
|
+
{
|
|
57
|
+
"rehydra": {
|
|
58
|
+
"record": {
|
|
59
|
+
"enabled": true,
|
|
60
|
+
"includeOriginal": true
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
`/rehydra log` 列出当前会话最近 20 条记录,`/rehydra log <id>` 看单条详情(命中行 + 字段级 before/after),`/rehydra log --type EMAIL` 按类型筛选;`/rehydra clear` 清当前会话,`/rehydra clear --all` 清全部(都要确认)。
|
|
67
|
+
|
|
68
|
+
记录默认关闭。开启后写入 `~/.pi/agent/rehydra/records/`(目录 0700、文件 0600),按 7 天与 32 MiB 双上限裁剪,单条记录对照上限 256 KiB。**`includeOriginal` 为 true 时真实值会写到本地磁盘**;不需要时设成 `false`,记录只保留类型、检测器、占位符、长度与偏移。记录里出现的终端控制字符在展示时会转义,原文不会回填到模型上下文。
|
|
69
|
+
|
|
70
|
+
记录层任何失败(目录不可写、符号链接、半行文件)都只告警,不影响脱敏与请求。
|
|
71
|
+
|
|
48
72
|
## 限制
|
|
73
|
+
- 工具入参还原是严格的:标签不在本次会话映射中(或映射缺失、解密失败)时,该次工具调用会被阻止,不会把 `<PII .../>` 当作真实值执行。占位符只能由同一条会话的映射还原;默认使用内存映射,进程重启后旧标签无法还原。
|
|
49
74
|
|
|
50
75
|
- 不会拦截用户在 UI 里粘贴的、且未走这些 hook 的模型调用。
|
|
51
|
-
- 默认禁用 `URL
|
|
76
|
+
- 默认禁用 `URL`、`IP_ADDRESS`、`BIC_SWIFT`、`POSTAL_CODE`、`DATE`;只靠形状就能命中的识别器在代码与文档里误报率高。需要它们时把 `disableTypes` 写成 `["URL", "IP_ADDRESS"]` 即可恢复。即便恢复,银行标识码仍要求附近出现完整的银行语境词。
|
|
77
|
+
- `.env` 里只有敏感字段的值会进入全局已知值集合:项目名、端口这类普通配置值不会被替换。显式配置的 `redactValues` 不受这条筛选影响。
|
|
78
|
+
- `policy` 的集合类字段可写成数组、阈值可写成对象;字段类型不合法时扩展启动报错并指出字段名,不会静默丢掉保护规则。
|
|
52
79
|
- Pi 扩展无法保证消息标题(title)与元数据走相同的 hook,因此这些字段仍可能包含占位符。建议在脱敏时启用完整的 PII 脱敏策略。
|
|
53
80
|
|
|
54
81
|
## License
|
|
@@ -6,6 +6,8 @@ import { AnonymizationResult, AnonymizationPolicy, AnonymizationMode, SemanticCo
|
|
|
6
6
|
import { RecognizerRegistry } from "../recognizers/index.js";
|
|
7
7
|
import { type INERModel, type OrtSessionOptions } from "../ner/index.js";
|
|
8
8
|
import { type NERModelMode, type DownloadProgressCallback } from "../ner/model-manager.js";
|
|
9
|
+
import type { AnonymizeRun, PiiObserver } from "./observer.js";
|
|
10
|
+
export type { AnonymizeRun, ObservedEntity, PiiObserver } from "./observer.js";
|
|
9
11
|
import { type RawPIIMap } from "../pipeline/tagger.js";
|
|
10
12
|
import { type KeyProvider } from "../crypto/index.js";
|
|
11
13
|
export type { RawPIIMap } from "../pipeline/tagger.js";
|
|
@@ -144,6 +146,11 @@ export interface AnonymizerConfig {
|
|
|
144
146
|
* @default { enabled: false }
|
|
145
147
|
*/
|
|
146
148
|
secrets?: SecretsConfig;
|
|
149
|
+
/**
|
|
150
|
+
* 模型检测失败时的处理。`rules` 降级为规则并标记检测不完整;
|
|
151
|
+
* `block` 直接把错误抛给调用方(fail-closed)。未配置时保持原有抛错行为。
|
|
152
|
+
*/
|
|
153
|
+
nerFailure?: "rules" | "block";
|
|
147
154
|
/** Key provider for encryption (generates random key if not provided) */
|
|
148
155
|
keyProvider?: KeyProvider;
|
|
149
156
|
/**
|
|
@@ -187,6 +194,7 @@ export declare class Anonymizer {
|
|
|
187
194
|
private registry;
|
|
188
195
|
private nerModel;
|
|
189
196
|
private nerConfig;
|
|
197
|
+
private nerFailure;
|
|
190
198
|
private semanticConfig;
|
|
191
199
|
private secretsConfig;
|
|
192
200
|
private mode;
|
|
@@ -218,7 +226,7 @@ export declare class Anonymizer {
|
|
|
218
226
|
* @param existingPiiMap - Optional existing PII map for session-level ID reuse
|
|
219
227
|
* @returns Anonymization result with anonymized text and encrypted PII map
|
|
220
228
|
*/
|
|
221
|
-
anonymize(text: string, locale?: string, policy?: Partial<AnonymizationPolicy>, existingPiiMap?: RawPIIMap): Promise<AnonymizationResult>;
|
|
229
|
+
anonymize(text: string, locale?: string, policy?: Partial<AnonymizationPolicy>, existingPiiMap?: RawPIIMap, observer?: PiiObserver, run?: AnonymizeRun): Promise<AnonymizationResult>;
|
|
222
230
|
/**
|
|
223
231
|
* Disposes of resources
|
|
224
232
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anonymizer.d.ts","sourceRoot":"","sources":["../../src/core/anonymizer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EAEnB,iBAAiB,EAEjB,cAAc,EACd,aAAa,EAEb,OAAO,EACP,SAAS,EAIV,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAEL,kBAAkB,EAEnB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"anonymizer.d.ts","sourceRoot":"","sources":["../../src/core/anonymizer.ts"],"names":[],"mappings":"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"}
|
package/dist/core/anonymizer.js
CHANGED
|
@@ -5,11 +5,12 @@
|
|
|
5
5
|
import { PIIType, DEFAULT_TAG_FORMAT, createDefaultPolicy, SECRET_PII_TYPES, } from "../types/index.js";
|
|
6
6
|
import { createDefaultRegistry, createSecretRecognizers, } from "../recognizers/index.js";
|
|
7
7
|
import { createLiteralValueRecognizer } from "../recognizers/secrets/literal-value.js";
|
|
8
|
+
import { isCredentialField } from "../recognizers/secrets/key-patterns.js";
|
|
8
9
|
import { NERModelStub, createNERModel, createInferenceServerNERModel, } from "../ner/index.js";
|
|
9
10
|
import { ensureModel, loadLabelMap, } from "../ner/model-manager.js";
|
|
10
|
-
import { prenormalize } from "../pipeline/prenormalize.js";
|
|
11
|
+
import { createLineEndingMapping, prenormalize } from "../pipeline/prenormalize.js";
|
|
11
12
|
import { resolveEntities } from "../pipeline/resolver.js";
|
|
12
|
-
import { tagEntities, countEntitiesByType, } from "../pipeline/tagger.js";
|
|
13
|
+
import { generateTag, tagEntities, countEntitiesByType, } from "../pipeline/tagger.js";
|
|
13
14
|
import { validateOutput } from "../pipeline/validator.js";
|
|
14
15
|
import { enrichSemantics } from "../pipeline/semantic-enricher.js";
|
|
15
16
|
import { ensureSemanticData, isSemanticDataAvailable, loadSemanticData, } from "../pipeline/semantic-data-loader.js";
|
|
@@ -44,6 +45,93 @@ function mergePolicyWithBase(base, partial) {
|
|
|
44
45
|
excludeLocationScopes: partial.excludeLocationScopes ?? base.excludeLocationScopes,
|
|
45
46
|
};
|
|
46
47
|
}
|
|
48
|
+
/** 判断信号是否已取消(单独成函数,避免被 TS 的收窄影响)。 */
|
|
49
|
+
function isAborted(signal) {
|
|
50
|
+
return signal !== undefined && signal.aborted;
|
|
51
|
+
}
|
|
52
|
+
/** 把取消信号转成标准 AbortError。 */
|
|
53
|
+
function toAbortError(signal) {
|
|
54
|
+
const reason = signal.reason;
|
|
55
|
+
if (reason instanceof Error)
|
|
56
|
+
return reason;
|
|
57
|
+
const error = new Error("Anonymization aborted");
|
|
58
|
+
error.name = "AbortError";
|
|
59
|
+
return error;
|
|
60
|
+
}
|
|
61
|
+
/** 等待期间保持对取消信号的响应:取消时立即以 AbortError 结束。 */
|
|
62
|
+
function raceWithSignal(promise, signal) {
|
|
63
|
+
if (signal === undefined)
|
|
64
|
+
return promise;
|
|
65
|
+
if (signal.aborted)
|
|
66
|
+
return Promise.reject(toAbortError(signal));
|
|
67
|
+
return new Promise((resolve, reject) => {
|
|
68
|
+
const onAbort = () => {
|
|
69
|
+
reject(toAbortError(signal));
|
|
70
|
+
};
|
|
71
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
72
|
+
promise.then((value) => {
|
|
73
|
+
signal.removeEventListener("abort", onAbort);
|
|
74
|
+
resolve(value);
|
|
75
|
+
}, (error) => {
|
|
76
|
+
signal.removeEventListener("abort", onAbort);
|
|
77
|
+
reject(error);
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
/** 给等待加一个上限;超时抛出可归类为 model-deadline 的错误。 */
|
|
82
|
+
function withTimeout(promise, ms) {
|
|
83
|
+
return new Promise((resolve, reject) => {
|
|
84
|
+
const timer = setTimeout(() => {
|
|
85
|
+
reject(new Error("inference deadline exceeded while waiting"));
|
|
86
|
+
}, ms);
|
|
87
|
+
promise.then((value) => {
|
|
88
|
+
clearTimeout(timer);
|
|
89
|
+
resolve(value);
|
|
90
|
+
}, (error) => {
|
|
91
|
+
clearTimeout(timer);
|
|
92
|
+
reject(error);
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
/** 把模型失败归类成不含正文的错误码。 */
|
|
97
|
+
function classifyNerError(error) {
|
|
98
|
+
const message = error instanceof Error ? error.message.toLowerCase() : "";
|
|
99
|
+
if (message.includes("deadline exceeded"))
|
|
100
|
+
return "model-deadline";
|
|
101
|
+
if (message.includes("timed out") || message.includes("timeout"))
|
|
102
|
+
return "model-timeout";
|
|
103
|
+
if (message.includes("failed to connect") || message.includes("econnrefused")) {
|
|
104
|
+
return "model-unreachable";
|
|
105
|
+
}
|
|
106
|
+
if (message.includes("protocol error"))
|
|
107
|
+
return "protocol-error";
|
|
108
|
+
if (message.includes("not loaded"))
|
|
109
|
+
return "model-unavailable";
|
|
110
|
+
return "model-failed";
|
|
111
|
+
}
|
|
112
|
+
/** 把命中回调给观察者;偏移从规范化文本折回原文空间。 */
|
|
113
|
+
function notifyObserver(observer, input) {
|
|
114
|
+
const mapping = createLineEndingMapping(input.text);
|
|
115
|
+
for (const entity of input.entities) {
|
|
116
|
+
const hit = {
|
|
117
|
+
type: entity.type,
|
|
118
|
+
recognizer: entity.recognizer,
|
|
119
|
+
start: mapping.toOriginal(entity.start),
|
|
120
|
+
end: mapping.toOriginal(entity.end),
|
|
121
|
+
replaced: generateTag(entity.type, entity.id, entity.semantic, input.tagFormat),
|
|
122
|
+
};
|
|
123
|
+
if (observer.includeOriginal === true) {
|
|
124
|
+
// 从原文切片,保留内部 CRLF 与规范化的差异
|
|
125
|
+
hit.original = input.text.slice(hit.start, hit.end);
|
|
126
|
+
}
|
|
127
|
+
try {
|
|
128
|
+
observer.onEntity(hit);
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
// 观察者属于诊断通道,异常不能影响脱敏本身
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
47
135
|
/**
|
|
48
136
|
* Anonymizer instance
|
|
49
137
|
* Main class for performing PII anonymization
|
|
@@ -52,6 +140,7 @@ export class Anonymizer {
|
|
|
52
140
|
registry;
|
|
53
141
|
nerModel = null;
|
|
54
142
|
nerConfig;
|
|
143
|
+
nerFailure;
|
|
55
144
|
semanticConfig;
|
|
56
145
|
secretsConfig;
|
|
57
146
|
mode;
|
|
@@ -83,6 +172,7 @@ export class Anonymizer {
|
|
|
83
172
|
}
|
|
84
173
|
// Handle NER configuration
|
|
85
174
|
this.nerConfig = config.ner ?? { mode: "disabled" };
|
|
175
|
+
this.nerFailure = config.nerFailure ?? "propagate";
|
|
86
176
|
this.modelVersion = config.modelVersion ?? "1.0.0";
|
|
87
177
|
// Merge NER thresholds into default policy if provided
|
|
88
178
|
if (this.nerConfig.thresholds !== undefined) {
|
|
@@ -246,11 +336,16 @@ export class Anonymizer {
|
|
|
246
336
|
}
|
|
247
337
|
// Handle secrets .env file loading and literal value matching
|
|
248
338
|
if (this.secretsConfig.enabled) {
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
]
|
|
339
|
+
// 显式指定的值按用户意图保留,不做自动筛选
|
|
340
|
+
const explicitValues = [];
|
|
341
|
+
for (const value of this.secretsConfig.redactValues ?? []) {
|
|
342
|
+
if (value.trim().length === 0)
|
|
343
|
+
continue;
|
|
344
|
+
explicitValues.push(value);
|
|
345
|
+
}
|
|
252
346
|
const minLength = this.secretsConfig.minValueLength ?? 4;
|
|
253
347
|
// Parse .env files if provided
|
|
348
|
+
const envValues = [];
|
|
254
349
|
if (this.secretsConfig.envFiles !== undefined && this.secretsConfig.envFiles.length > 0) {
|
|
255
350
|
const storage = await getStorageProvider();
|
|
256
351
|
const envFiles = storage.resolveFiles !== undefined
|
|
@@ -260,13 +355,19 @@ export class Anonymizer {
|
|
|
260
355
|
try {
|
|
261
356
|
const content = await storage.readTextFile(envFile);
|
|
262
357
|
const parsed = parseEnvFile(content);
|
|
263
|
-
|
|
358
|
+
// 只把敏感字段的值收进已知值集合:项目名、端口这类普通配置
|
|
359
|
+
// 值一旦进入集合,后续文本里出现就会被替换。
|
|
360
|
+
for (const entry of parsed) {
|
|
361
|
+
if (isCredentialField(entry.key))
|
|
362
|
+
envValues.push(entry.value);
|
|
363
|
+
}
|
|
264
364
|
}
|
|
265
365
|
catch {
|
|
266
366
|
// Skip files that can't be read
|
|
267
367
|
}
|
|
268
368
|
}
|
|
269
369
|
}
|
|
370
|
+
const literalValues = [...explicitValues, ...envValues];
|
|
270
371
|
// Register literal value recognizer if we have values
|
|
271
372
|
if (literalValues.length > 0) {
|
|
272
373
|
this.registry.register(createLiteralValueRecognizer(literalValues, minLength));
|
|
@@ -283,10 +384,14 @@ export class Anonymizer {
|
|
|
283
384
|
* @param existingPiiMap - Optional existing PII map for session-level ID reuse
|
|
284
385
|
* @returns Anonymization result with anonymized text and encrypted PII map
|
|
285
386
|
*/
|
|
286
|
-
async anonymize(text, locale, policy, existingPiiMap) {
|
|
387
|
+
async anonymize(text, locale, policy, existingPiiMap, observer, run) {
|
|
287
388
|
if (!this.initialized) {
|
|
288
389
|
await this.initialize();
|
|
289
390
|
}
|
|
391
|
+
// 宿主取消:直接结束,不进入降级路径
|
|
392
|
+
if (run?.signal?.aborted === true) {
|
|
393
|
+
throw toAbortError(run.signal);
|
|
394
|
+
}
|
|
290
395
|
const startTime = performance.now();
|
|
291
396
|
// Merge policy with instance defaults (not global defaults)
|
|
292
397
|
// This ensures semantic config from constructor is preserved
|
|
@@ -298,8 +403,42 @@ export class Anonymizer {
|
|
|
298
403
|
const normalizedText = prenormalize(text);
|
|
299
404
|
// Step 2: Run regex recognizers
|
|
300
405
|
const regexMatches = this.registry.findAll(normalizedText, effectivePolicy);
|
|
301
|
-
// Step 3: Run NER model
|
|
302
|
-
const
|
|
406
|
+
// Step 3: Run NER model;失败按 nerFailure 策略处理
|
|
407
|
+
const detectionErrors = [];
|
|
408
|
+
let nerResult;
|
|
409
|
+
const remaining = run?.deadline === undefined ? undefined : run.deadline - Date.now();
|
|
410
|
+
try {
|
|
411
|
+
if (remaining !== undefined && remaining <= 0) {
|
|
412
|
+
// 预算已耗尽:不再发请求,直接走规则
|
|
413
|
+
throw new Error("inference deadline exceeded before request");
|
|
414
|
+
}
|
|
415
|
+
const prediction = this.nerModel.predict(normalizedText, effectivePolicy);
|
|
416
|
+
// shortcut: 预算只截断等待,底层请求仍会在自身超时后结束
|
|
417
|
+
nerResult =
|
|
418
|
+
remaining === undefined
|
|
419
|
+
? await raceWithSignal(prediction, run?.signal)
|
|
420
|
+
: await raceWithSignal(withTimeout(prediction, remaining), run?.signal);
|
|
421
|
+
}
|
|
422
|
+
catch (error) {
|
|
423
|
+
// 取消不属于检测失败,始终向上传递
|
|
424
|
+
const signal = run?.signal;
|
|
425
|
+
if (signal !== undefined && isAborted(signal))
|
|
426
|
+
throw toAbortError(signal);
|
|
427
|
+
if (error instanceof Error && error.name === "AbortError")
|
|
428
|
+
throw error;
|
|
429
|
+
if (this.nerFailure === "block" || this.nerFailure === "propagate") {
|
|
430
|
+
throw error;
|
|
431
|
+
}
|
|
432
|
+
// 降级:本次只用规则结果,并标记检测不完整
|
|
433
|
+
detectionErrors.push({ finder: "model", code: classifyNerError(error) });
|
|
434
|
+
nerResult = {
|
|
435
|
+
spans: [],
|
|
436
|
+
processingTimeMs: 0,
|
|
437
|
+
modelVersion: this.modelVersion,
|
|
438
|
+
truncated: false,
|
|
439
|
+
coverageChars: 0,
|
|
440
|
+
};
|
|
441
|
+
}
|
|
303
442
|
const nerMatches = nerResult.spans;
|
|
304
443
|
// Step 4: Resolve and merge entities
|
|
305
444
|
const resolvedMatches = resolveEntities(regexMatches, nerMatches, effectivePolicy, normalizedText);
|
|
@@ -337,6 +476,16 @@ export class Anonymizer {
|
|
|
337
476
|
}));
|
|
338
477
|
this.onValidationWarning(safeErrors);
|
|
339
478
|
}
|
|
479
|
+
// Step 6.5: 把每条替换回调给可选的观察者(诊断/记录用)。
|
|
480
|
+
// 只在调用方显式注册时执行;命中偏移折回原始文本空间。
|
|
481
|
+
if (observer !== undefined && entities.length > 0) {
|
|
482
|
+
notifyObserver(observer, {
|
|
483
|
+
text,
|
|
484
|
+
normalizedText,
|
|
485
|
+
entities,
|
|
486
|
+
tagFormat: this.tagFormat,
|
|
487
|
+
});
|
|
488
|
+
}
|
|
340
489
|
// Step 7: Build stats
|
|
341
490
|
const endTime = performance.now();
|
|
342
491
|
const stats = {
|
|
@@ -349,6 +498,7 @@ export class Anonymizer {
|
|
|
349
498
|
nerTruncated: nerResult.truncated,
|
|
350
499
|
nerCoverageChars: nerResult.coverageChars,
|
|
351
500
|
};
|
|
501
|
+
const integrity = detectionErrors.length === 0 ? "complete" : "rules-only";
|
|
352
502
|
// Step 8: Build result (without original text in entities)
|
|
353
503
|
const safeEntities = entities.map(({ original: _original, ...rest }) => rest);
|
|
354
504
|
// Step 9: Encrypt PII map (only in pseudonymize mode)
|
|
@@ -358,6 +508,9 @@ export class Anonymizer {
|
|
|
358
508
|
anonymizedText,
|
|
359
509
|
entities: safeEntities,
|
|
360
510
|
stats,
|
|
511
|
+
...(detectionErrors.length === 0
|
|
512
|
+
? {}
|
|
513
|
+
: { detectionErrors, integrity }),
|
|
361
514
|
};
|
|
362
515
|
}
|
|
363
516
|
// Pseudonymize mode - encrypt and return PII map
|
|
@@ -370,6 +523,7 @@ export class Anonymizer {
|
|
|
370
523
|
entities: safeEntities,
|
|
371
524
|
piiMap: encryptedPiiMap,
|
|
372
525
|
stats,
|
|
526
|
+
...(detectionErrors.length === 0 ? {} : { detectionErrors, integrity }),
|
|
373
527
|
};
|
|
374
528
|
}
|
|
375
529
|
/**
|
|
@@ -534,10 +688,10 @@ export async function anonymizeWithNER(text, nerConfig, policy) {
|
|
|
534
688
|
}
|
|
535
689
|
}
|
|
536
690
|
/**
|
|
537
|
-
* Parses a .env file content and returns
|
|
691
|
+
* Parses a .env file content and returns key/value pairs.
|
|
538
692
|
*/
|
|
539
693
|
function parseEnvFile(content) {
|
|
540
|
-
const
|
|
694
|
+
const entries = [];
|
|
541
695
|
const lines = content.split("\n");
|
|
542
696
|
for (const line of lines) {
|
|
543
697
|
const trimmed = line.trim();
|
|
@@ -545,11 +699,11 @@ function parseEnvFile(content) {
|
|
|
545
699
|
if (trimmed === "" || trimmed.startsWith("#"))
|
|
546
700
|
continue;
|
|
547
701
|
// Match KEY=VALUE (with optional export prefix and quotes)
|
|
548
|
-
const match = trimmed.match(/^(?:export\s+)?[A-Za-z_][A-Za-z0-9_]
|
|
549
|
-
if (match !== null && match[1] !== undefined && match[
|
|
550
|
-
|
|
702
|
+
const match = trimmed.match(/^(?:export\s+)?([A-Za-z_][A-Za-z0-9_]*)\s*=\s*["']?(.*?)["']?$/);
|
|
703
|
+
if (match !== null && match[1] !== undefined && match[2] !== undefined && match[2] !== "") {
|
|
704
|
+
entries.push({ key: match[1], value: match[2] });
|
|
551
705
|
}
|
|
552
706
|
}
|
|
553
|
-
return
|
|
707
|
+
return entries;
|
|
554
708
|
}
|
|
555
709
|
//# sourceMappingURL=anonymizer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anonymizer.js","sourceRoot":"","sources":["../../src/core/anonymizer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"anonymizer.js","sourceRoot":"","sources":["../../src/core/anonymizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 脱敏诊断观察者。
|
|
3
|
+
*
|
|
4
|
+
* 记录能力通过这个可选回调取得"哪条命中被哪段文本替换",默认不注册时零开销;
|
|
5
|
+
* 原值只在观察者显式声明需要时填充,避免明文扩散到普通调用方。
|
|
6
|
+
*/
|
|
7
|
+
import type { PIIType } from "../types/index.js";
|
|
8
|
+
/** 一条被替换的命中。 */
|
|
9
|
+
export interface ObservedEntity {
|
|
10
|
+
type: PIIType;
|
|
11
|
+
/** 稳定检测器标识;缺失表示来源未知。 */
|
|
12
|
+
recognizer?: string;
|
|
13
|
+
/** 原文中的起止偏移(已从规范化文本折回)。 */
|
|
14
|
+
start: number;
|
|
15
|
+
end: number;
|
|
16
|
+
/** 实际写入的占位符。 */
|
|
17
|
+
replaced: string;
|
|
18
|
+
/** 原值:只有观察者声明需要时才填充。 */
|
|
19
|
+
original?: string;
|
|
20
|
+
}
|
|
21
|
+
/** 单次调用的预算与取消。 */
|
|
22
|
+
export interface AnonymizeRun {
|
|
23
|
+
/** 绝对时间戳:超过后不再调用模型,按 nerFailure 处理。 */
|
|
24
|
+
deadline?: number;
|
|
25
|
+
/** 宿主取消信号:取消直接结束,不降级。 */
|
|
26
|
+
signal?: AbortSignal;
|
|
27
|
+
}
|
|
28
|
+
/** 诊断观察者。 */
|
|
29
|
+
export interface PiiObserver {
|
|
30
|
+
readonly includeOriginal?: boolean;
|
|
31
|
+
onEntity(entity: ObservedEntity): void;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=observer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observer.d.ts","sourceRoot":"","sources":["../../src/core/observer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,gBAAgB;AAChB,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,wBAAwB;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,kBAAkB;AAClB,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,aAAa;AACb,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;CACxC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observer.js","sourceRoot":"","sources":["../../src/core/observer.ts"],"names":[],"mappings":""}
|