@agentstrack/collector 0.3.0 → 0.4.1
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/CHANGELOG.md +58 -3
- package/README.md +37 -11
- package/dist/adapters/codex.js +6 -1
- package/dist/adapters/codex.js.map +1 -1
- package/dist/privacy/pipeline.d.ts +3 -0
- package/dist/privacy/pipeline.js +37 -5
- package/dist/privacy/pipeline.js.map +1 -1
- package/dist/privacy/redact.d.ts +5 -1
- package/dist/privacy/redact.js +17 -4
- package/dist/privacy/redact.js.map +1 -1
- package/dist/sessions/title.d.ts +14 -2
- package/dist/sessions/title.js +18 -6
- package/dist/sessions/title.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,54 @@ released as a major version, with a migration note in this file.
|
|
|
10
10
|
|
|
11
11
|
## [Unreleased]
|
|
12
12
|
|
|
13
|
+
## [0.4.1] — 2026-09-05
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
|
|
17
|
+
- **A session title could ship a piece of a secret (security).** `derived_title` is the first
|
|
18
|
+
meaningful line of your prompt, cut to 120 characters. Until now that cut was made on the **raw**
|
|
19
|
+
prompt and the secret scan ran afterwards, on the already-shortened title. If a key happened to
|
|
20
|
+
straddle the 120-character boundary, the cut split it in two, the leftover head no longer looked
|
|
21
|
+
like a key to any pattern, and it was uploaded as ordinary title text. A prompt of a hundred
|
|
22
|
+
characters followed by an `sk-ant-…` key produced a title ending in `sk-ant-api03-AAAAA…` while
|
|
23
|
+
the event dutifully reported `secrets_redacted: [{ anthropic_key, 1 }]` — the tally was right and
|
|
24
|
+
the title still carried a fragment.
|
|
25
|
+
|
|
26
|
+
The prompt is now redacted **before** the title is taken from it, in all three adapters (Claude
|
|
27
|
+
Code, Codex, OpenCode), so a truncation can only ever cut through a `[REDACTED:…]` marker. The
|
|
28
|
+
privacy pipeline still redacts `derived_title` afterwards; that pass is now a no-op and stays in
|
|
29
|
+
place as defence in depth.
|
|
30
|
+
|
|
31
|
+
The same cut-then-scan mistake applied to a Codex `error` event's `message`, truncated to 1000
|
|
32
|
+
characters; it is redacted before truncation now too.
|
|
33
|
+
|
|
34
|
+
**What to do:** only a partial value could escape, never a whole one, and only when a secret sat
|
|
35
|
+
across the cut. But a fragment is enough to identify which key was pasted, and the rest of it may
|
|
36
|
+
be guessable from context. If you have used `analytics` or `full` mode, look through your existing
|
|
37
|
+
session titles for key-shaped fragments, and rotate anything you find. Titles produced from 0.4.1
|
|
38
|
+
on are safe.
|
|
39
|
+
|
|
40
|
+
Fragments already uploaded stay in the product until you delete those sessions — upgrading the
|
|
41
|
+
collector does not rewrite history.
|
|
42
|
+
|
|
43
|
+
### Changed
|
|
44
|
+
|
|
45
|
+
- Documented the ordering (redact, then truncate) in the README and `docs/EVENT_SCHEMA.md`, and
|
|
46
|
+
corrected two stale lines there that still said `privacy.prompts: never` leaves `derived_title`
|
|
47
|
+
in place under `mode: full`. It has not since 0.4.0 — `never` drops it in every mode.
|
|
48
|
+
|
|
49
|
+
## [0.4.0] — 2026-09-05
|
|
50
|
+
|
|
51
|
+
### Added
|
|
52
|
+
- **Secret exposure is reported as metadata.** When local redaction fires, the event now carries
|
|
53
|
+
`secrets_redacted: [{ kind, count }]` — which pattern matched and how many times, sorted by kind
|
|
54
|
+
and omitted entirely when nothing fired. The matched value never travels: not the text, not a
|
|
55
|
+
prefix of it, not a hash, not the surrounding context. The tally is computed **before** the mode
|
|
56
|
+
strip, so it survives `metadata` mode — the mode where a team most wants to know a credential was
|
|
57
|
+
typed into an agent and least wants the credential itself. An org-supplied rule reports as the
|
|
58
|
+
single generic kind `org_rule`, because a rule name can itself describe the shape of that
|
|
59
|
+
organization's secrets.
|
|
60
|
+
|
|
13
61
|
## [0.3.0] — 2026-09-05
|
|
14
62
|
|
|
15
63
|
### Added
|
|
@@ -353,8 +401,15 @@ As released. Several of these have since been fixed — see `## Unreleased` abov
|
|
|
353
401
|
- The service installer supports launchd and systemd only. `agentstrack start --foreground` works
|
|
354
402
|
anywhere Node 20+ does.
|
|
355
403
|
|
|
356
|
-
|
|
404
|
+
<!-- 0.2.0 and 0.4.0 have no tag: this repository's history was squashed before
|
|
405
|
+
it was made public, and no commit in it carries either version. The releases
|
|
406
|
+
were real (0.2.0 is on npm) and their notes stay above; the compare links
|
|
407
|
+
simply skip to the neighbouring tag that does exist. -->
|
|
408
|
+
|
|
409
|
+
[Unreleased]: https://github.com/agentstrack/collector/compare/v0.4.1...HEAD
|
|
410
|
+
[0.4.1]: https://github.com/agentstrack/collector/compare/v0.3.0...v0.4.1
|
|
411
|
+
[0.4.0]: https://github.com/agentstrack/collector/compare/v0.3.0...v0.4.1
|
|
357
412
|
[0.3.0]: https://github.com/agentstrack/collector/compare/v0.2.1...v0.3.0
|
|
358
|
-
[0.2.1]: https://github.com/agentstrack/collector/compare/v0.
|
|
359
|
-
[0.2.0]: https://github.com/agentstrack/collector/compare/v0.1.0...v0.2.
|
|
413
|
+
[0.2.1]: https://github.com/agentstrack/collector/compare/v0.1.0...v0.2.1
|
|
414
|
+
[0.2.0]: https://github.com/agentstrack/collector/compare/v0.1.0...v0.2.1
|
|
360
415
|
[0.1.0]: https://github.com/agentstrack/collector/releases/tag/v0.1.0
|
package/README.md
CHANGED
|
@@ -86,8 +86,9 @@ Nothing showing up? Run `agentstrack doctor`.
|
|
|
86
86
|
| File paths, **relative to the project root by default** | Send absolute paths — which leak your username and your clients' names — unless you opt in |
|
|
87
87
|
| Lines added/removed per edit, computed locally from the tool input | Send the lines themselves |
|
|
88
88
|
| Git branch, commit SHA, additions/deletions/files changed | Send your git remote URL (only a SHA-256 of it) or commit messages and diffs |
|
|
89
|
-
| A session title — the first line of the prompt, capped at 120 chars
|
|
89
|
+
| A session title — the first line of the prompt, secret-redacted and then capped at 120 chars (`analytics` mode and above) | Send the rest of the prompt those titles were taken from |
|
|
90
90
|
| Your hostname, OS and release, arch, Node version, a coarse machine kind (`workstation` / `server` / `container` / `ci`) and each detected agent's version — at registration and with each health report | Show your hostname or IP address in the product — see [Machine info](#machine-info) |
|
|
91
|
+
| That local redaction fired: which pattern matched and how many times (`secrets_redacted`), in every privacy mode | Send the secret it matched — not the text, not a prefix of it, not a hash of it, not the characters around it |
|
|
91
92
|
| Which skill, sub-agent type or workflow a Claude Code session invoked, and which events came from a sub-agent | Copy the `Agent` call's prompt or a workflow script's body out of the call (a sub-agent transcript's own opening prompt follows `privacy.prompts` like any other prompt) |
|
|
92
93
|
| | Install hooks or modify `~/.claude/settings.json` / `~/.codex/hooks.json` |
|
|
93
94
|
| | Send `organization_id` or `user_id` — they are not in the wire format at all |
|
|
@@ -178,7 +179,7 @@ agentstrack doctor --json # structured diagnostics, safe to paste
|
|
|
178
179
|
▼
|
|
179
180
|
┌────────────────────────┐
|
|
180
181
|
│ privacy pipeline │ mode-based content strip
|
|
181
|
-
│ │ →
|
|
182
|
+
│ │ → 16 built-in secret rules + org rules
|
|
182
183
|
│ │ → path normalization
|
|
183
184
|
│ │ → raw content DISCARDED HERE
|
|
184
185
|
└───────────┬────────────┘
|
|
@@ -265,6 +266,9 @@ Two properties of that deletion are worth stating explicitly, because both are e
|
|
|
265
266
|
|
|
266
267
|
`analytics` is the honest middle: the title is computed **on your machine** from the prompt, and then
|
|
267
268
|
the prompt is deleted. The server receives `"fix flaky auth test"`, never the 900 words you typed.
|
|
269
|
+
The prompt is redacted **before** the title is cut out of it, so the cut can only ever land inside a
|
|
270
|
+
`[REDACTED:…]` marker and never through the middle of a key. Before 0.4.1 it was cut first, which
|
|
271
|
+
could ship half of a secret — see the CHANGELOG.
|
|
268
272
|
|
|
269
273
|
If even the title is too much, `privacy.prompts: never` drops that too: in `analytics` it strips
|
|
270
274
|
`derived_title`, so nothing derived from a prompt leaves the machine, without giving up token, tool
|
|
@@ -288,8 +292,8 @@ daemon cannot drift.
|
|
|
288
292
|
|
|
289
293
|
### Built-in secret redaction
|
|
290
294
|
|
|
291
|
-
Every free-text field
|
|
292
|
-
|
|
295
|
+
Every free-text field (`prompt_text`, `derived_title`, `message`, `command`, `description`) passes
|
|
296
|
+
through these 16 rules, most-specific first, on your machine:
|
|
293
297
|
|
|
294
298
|
| Rule | Catches |
|
|
295
299
|
|---|---|
|
|
@@ -306,13 +310,15 @@ Every free-text field that survives the mode strip (`prompt_text`, `derived_titl
|
|
|
306
310
|
| `jwt` | three-segment `eyJ…` tokens |
|
|
307
311
|
| `bearer_header` | `Bearer <token>` → `Bearer [REDACTED]` |
|
|
308
312
|
| `basic_auth_url` | `https://user:pw@host` → `https://[REDACTED]@host` |
|
|
313
|
+
| `inline_password_flag` | `-pSECRET`, `--password=SECRET`, `--password "SECRET"` |
|
|
309
314
|
| `env_assignment` | `*SECRET*=`, `*TOKEN*=`, `*PASSWORD*=`, `*PASSWD*=`, `*APIKEY*=`, `*API_KEY*=`, `*ACCESS_KEY*=`, `*PRIVATE_KEY*=` |
|
|
310
315
|
| `generic_hex_secret` | bare hex strings of 40+ characters |
|
|
311
316
|
|
|
312
|
-
A match is replaced in place, and most rules substitute `[REDACTED:rule_name]`.
|
|
317
|
+
A match is replaced in place, and most rules substitute `[REDACTED:rule_name]`. Five do not:
|
|
313
318
|
`bearer_header` → `Bearer [REDACTED]` and `basic_auth_url` → `scheme://[REDACTED]@host` keep the
|
|
314
|
-
surrounding syntax so the shape of the command survives, `env_assignment` → `NAME=[REDACTED]`
|
|
315
|
-
|
|
319
|
+
surrounding syntax so the shape of the command survives, `env_assignment` → `NAME=[REDACTED]` and
|
|
320
|
+
`inline_password_flag` → `--password=[REDACTED]` keep the variable or flag name, and
|
|
321
|
+
`generic_hex_secret` substitutes the shorter `[REDACTED:hex]`. Your
|
|
316
322
|
organization can add patterns server-side; an org pattern that is malformed, longer than 256
|
|
317
323
|
characters, or using a backreference is skipped, the common catastrophic nested-quantifier shapes
|
|
318
324
|
(`(a+)+`, `(a|aa)+`, `((a+)b)+`) are rejected — a heuristic, not a proof — and org patterns are
|
|
@@ -321,6 +327,26 @@ matched against at most the first 64 KB of any value.
|
|
|
321
327
|
Redaction is defence in depth, not the primary control. The primary control is that in `metadata`
|
|
322
328
|
and `analytics` modes the content is **deleted locally** and never enters the pipeline at all.
|
|
323
329
|
|
|
330
|
+
### What a redaction reports
|
|
331
|
+
|
|
332
|
+
When a rule fires, the event carries `secrets_redacted` — a list of `{ kind, count }`, sorted by
|
|
333
|
+
kind, absent when nothing fired:
|
|
334
|
+
|
|
335
|
+
```json
|
|
336
|
+
"secrets_redacted": [{ "kind": "aws_access_key", "count": 1 }]
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
Plainly: **we report that a secret-shaped string was found and which pattern matched it. We never
|
|
340
|
+
send the value.** Not the matched text, not a prefix of it, not a hash of it, not the surrounding
|
|
341
|
+
context — there is nothing in the payload to reverse. A rule your organization added reports as the
|
|
342
|
+
single generic kind `org_rule`, because a rule name (`acme_prod_db_password`) can itself describe
|
|
343
|
+
the shape of your secrets.
|
|
344
|
+
|
|
345
|
+
This travels in **every** mode, `metadata` included: the tally is computed before the mode strip
|
|
346
|
+
deletes the text it was computed from. A count is metadata; the prompt it came from is not. And
|
|
347
|
+
`metadata` is exactly the mode where a team most wants to know that a live credential was pasted
|
|
348
|
+
into an agent — the point being to go rotate it, which needs no copy of it.
|
|
349
|
+
|
|
324
350
|
### How file paths are handled
|
|
325
351
|
|
|
326
352
|
With `file_paths: relative` (the default):
|
|
@@ -554,10 +580,10 @@ privacy:
|
|
|
554
580
|
|
|
555
581
|
# never | local_summary_only (default) | full
|
|
556
582
|
# `full` is what keeps `mode: full` from uploading prompt text unless you also
|
|
557
|
-
# ask for it here. `never` suppresses prompt text in every mode, and
|
|
558
|
-
#
|
|
559
|
-
# nothing derived from a prompt leaves the
|
|
560
|
-
#
|
|
583
|
+
# ask for it here. `never` suppresses prompt text in every mode, and it
|
|
584
|
+
# additionally drops the locally derived `derived_title` in every mode too —
|
|
585
|
+
# `analytics` and `full` alike — so nothing derived from a prompt leaves the
|
|
586
|
+
# machine at all. See the privacy section.
|
|
561
587
|
prompts: local_summary_only
|
|
562
588
|
|
|
563
589
|
# never (default) | full
|
package/dist/adapters/codex.js
CHANGED
|
@@ -4,6 +4,7 @@ import { join } from 'node:path';
|
|
|
4
4
|
import { newestJsonl, num, readHeadLines, safeJsonParse, str } from './types.js';
|
|
5
5
|
import { emptyUsage } from '../schema.js';
|
|
6
6
|
import { deriveTitle } from '../sessions/title.js';
|
|
7
|
+
import { redact } from '../privacy/redact.js';
|
|
7
8
|
/**
|
|
8
9
|
* OpenAI Codex CLI adapter.
|
|
9
10
|
*
|
|
@@ -171,10 +172,14 @@ export class CodexAdapter {
|
|
|
171
172
|
return [this.wrap(state, occurredAt, 'agent.turn.ended', { turn_id: str(payload['turn_id']) })];
|
|
172
173
|
}
|
|
173
174
|
if (kind === 'error' || kind === 'stream_error') {
|
|
175
|
+
const message = str(payload['message']);
|
|
174
176
|
return [
|
|
175
177
|
this.wrap(state, occurredAt, 'error', {
|
|
176
178
|
error_kind: kind,
|
|
177
|
-
|
|
179
|
+
// Redacted before the truncation, for the same reason deriveTitle is:
|
|
180
|
+
// a cut through a secret leaves two halves that match no pattern, so
|
|
181
|
+
// the privacy pipeline's later pass over `message` ships the fragment.
|
|
182
|
+
message: message === undefined ? undefined : redact(message).text.slice(0, 1000),
|
|
178
183
|
}),
|
|
179
184
|
];
|
|
180
185
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/adapters/codex.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/adapters/codex.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,4 +26,7 @@ export interface PipelineResult {
|
|
|
26
26
|
event: EventEnvelope;
|
|
27
27
|
redactions: string[];
|
|
28
28
|
}
|
|
29
|
+
/** Payload keys that carry free text and must always be scanned for secrets. */
|
|
30
|
+
/** Cut applied to `derived_title` only after every rule, org rules included, has run. */
|
|
31
|
+
export declare const TITLE_MAX_LENGTH = 120;
|
|
29
32
|
export declare function applyPrivacy(event: EventEnvelope, ctx: PipelineContext): PipelineResult;
|
package/dist/privacy/pipeline.js
CHANGED
|
@@ -1,13 +1,30 @@
|
|
|
1
1
|
import { commandName, compileRules, redact } from './redact.js';
|
|
2
2
|
import { normalizePath } from './paths.js';
|
|
3
3
|
/** Payload keys that carry free text and must always be scanned for secrets. */
|
|
4
|
+
/** Cut applied to `derived_title` only after every rule, org rules included, has run. */
|
|
5
|
+
export const TITLE_MAX_LENGTH = 120;
|
|
4
6
|
const TEXT_KEYS = ['prompt_text', 'derived_title', 'message', 'command', 'description'];
|
|
5
7
|
export function applyPrivacy(event, ctx) {
|
|
6
8
|
const mode = ctx.config.privacy.mode;
|
|
7
9
|
const policy = ctx.config.privacy;
|
|
8
10
|
const extraRules = ctx.compiledRules ?? compileRules(ctx.orgRules ?? []);
|
|
9
|
-
const redactions = [];
|
|
10
11
|
const payload = { ...event.payload };
|
|
12
|
+
// --- secret tally, computed BEFORE the mode strip ------------------------
|
|
13
|
+
// Which pattern fired and how many times is metadata, not content: no matched
|
|
14
|
+
// text, no prefix of it, no hash, no context. It is computed on the original
|
|
15
|
+
// fields so it survives `metadata` mode, which deletes them below — and
|
|
16
|
+
// `metadata` is exactly where a team most wants to know a secret was typed.
|
|
17
|
+
// ponytail: text fields are scanned twice (tally here, redaction of the
|
|
18
|
+
// survivors below). Prompts are small; revisit if profiling ever says so.
|
|
19
|
+
const counts = {};
|
|
20
|
+
for (const key of TEXT_KEYS) {
|
|
21
|
+
const value = event.payload[key];
|
|
22
|
+
if (typeof value !== 'string')
|
|
23
|
+
continue;
|
|
24
|
+
for (const [kind, n] of Object.entries(redact(value, extraRules).counts)) {
|
|
25
|
+
counts[kind] = (counts[kind] ?? 0) + n;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
11
28
|
// --- content: strip anything the mode does not permit -------------------
|
|
12
29
|
if (mode === 'metadata') {
|
|
13
30
|
// Counts and timings only. Titles are derived from prompts, so they go too.
|
|
@@ -55,9 +72,15 @@ export function applyPrivacy(event, ctx) {
|
|
|
55
72
|
const value = payload[key];
|
|
56
73
|
if (typeof value !== 'string')
|
|
57
74
|
continue;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
75
|
+
payload[key] = redact(value, extraRules).text;
|
|
76
|
+
}
|
|
77
|
+
// The title is cut to length HERE, after redaction with the org's rules and
|
|
78
|
+
// not before it. deriveTitle deliberately hands over the whole line: cutting
|
|
79
|
+
// earlier bisects a straddling secret into two halves that match no pattern,
|
|
80
|
+
// which is how a fragment used to reach the server inside the title.
|
|
81
|
+
const title = payload['derived_title'];
|
|
82
|
+
if (typeof title === 'string' && title.length > TITLE_MAX_LENGTH) {
|
|
83
|
+
payload['derived_title'] = `${title.slice(0, TITLE_MAX_LENGTH - 1)}…`;
|
|
61
84
|
}
|
|
62
85
|
// --- paths --------------------------------------------------------------
|
|
63
86
|
if (typeof payload['path'] === 'string') {
|
|
@@ -109,6 +132,15 @@ export function applyPrivacy(event, ctx) {
|
|
|
109
132
|
if (typeof payload['command'] === 'string' && policy.shell_arguments === 'never') {
|
|
110
133
|
payload['command'] = payload['command'].split(/\s+/)[0] ?? '';
|
|
111
134
|
}
|
|
112
|
-
|
|
135
|
+
// --- secret tally ------------------------------------------------------
|
|
136
|
+
// Attached last, in every mode, so no strip above can remove it. Sorted by
|
|
137
|
+
// kind so two identical events serialize identically; omitted when nothing
|
|
138
|
+
// fired, so the key's presence alone means "a secret was caught here".
|
|
139
|
+
const secretsRedacted = Object.entries(counts)
|
|
140
|
+
.map(([kind, count]) => ({ kind, count }))
|
|
141
|
+
.sort((a, b) => a.kind.localeCompare(b.kind));
|
|
142
|
+
if (secretsRedacted.length > 0)
|
|
143
|
+
payload['secrets_redacted'] = secretsRedacted;
|
|
144
|
+
return { event: { ...event, payload }, redactions: secretsRedacted.map((s) => s.kind) };
|
|
113
145
|
}
|
|
114
146
|
//# sourceMappingURL=pipeline.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/privacy/pipeline.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAsB,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA2B3C,gFAAgF;AAChF,MAAM,SAAS,GAAG,CAAC,aAAa,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,CAAU,CAAC;AAEjG,MAAM,UAAU,YAAY,CAAC,KAAoB,EAAE,GAAoB;IACrE,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;IACrC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;IAClC,MAAM,UAAU,GAAoB,GAAG,CAAC,aAAa,IAAI,YAAY,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAC1F,MAAM,
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/privacy/pipeline.ts"],"names":[],"mappings":"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"}
|
package/dist/privacy/redact.d.ts
CHANGED
|
@@ -25,9 +25,13 @@ export declare const ORG_SUBJECT_CAP: number;
|
|
|
25
25
|
export declare const BUILTIN_RULES: RedactionRule[];
|
|
26
26
|
export interface RedactionResult {
|
|
27
27
|
text: string;
|
|
28
|
-
/**
|
|
28
|
+
/** Reported kinds of the rules that fired, for the trust metrics in BLUEPRINT §14. */
|
|
29
29
|
redactions: string[];
|
|
30
|
+
/** How many matches each reported kind replaced. Never the matched text. */
|
|
31
|
+
counts: Record<string, number>;
|
|
30
32
|
}
|
|
33
|
+
/** The one kind reported for any rule that is not built in. */
|
|
34
|
+
export declare const ORG_RULE_KIND = "org_rule";
|
|
31
35
|
export declare function redact(input: string, extraRules?: RedactionRule[]): RedactionResult;
|
|
32
36
|
/** Compiles org-supplied patterns, skipping any unsafe or malformed rule. */
|
|
33
37
|
export declare function compileRules(rules: {
|
package/dist/privacy/redact.js
CHANGED
|
@@ -20,9 +20,18 @@ export const BUILTIN_RULES = [
|
|
|
20
20
|
{ name: 'inline_password_flag', pattern: /(--password[= ]|(?<![\w-])-p)(?!\s)("[^"]*"|'[^']*'|\S+)/g, replacement: '$1[REDACTED]' },
|
|
21
21
|
{ name: 'generic_hex_secret', pattern: /\b[a-f0-9]{40,}\b/g, replacement: '[REDACTED:hex]' },
|
|
22
22
|
];
|
|
23
|
+
/** The one kind reported for any rule that is not built in. */
|
|
24
|
+
export const ORG_RULE_KIND = 'org_rule';
|
|
25
|
+
const BUILTIN_NAMES = new Set(BUILTIN_RULES.map((rule) => rule.name));
|
|
26
|
+
/**
|
|
27
|
+
* An org's own rule name can itself describe the shape of that org's secrets
|
|
28
|
+
* ("acme_prod_db_password"), which is their business and not ours to ship back
|
|
29
|
+
* to the server. Anything not built in therefore reports as one generic kind.
|
|
30
|
+
*/
|
|
31
|
+
const reportedKind = (name) => (BUILTIN_NAMES.has(name) ? name : ORG_RULE_KIND);
|
|
23
32
|
export function redact(input, extraRules = []) {
|
|
24
33
|
let text = input;
|
|
25
|
-
const
|
|
34
|
+
const counts = {};
|
|
26
35
|
for (const rule of [...BUILTIN_RULES, ...extraRules]) {
|
|
27
36
|
// Org rules see only a bounded prefix; the untouched tail is re-appended.
|
|
28
37
|
const capped = rule.capSubject === true && text.length > ORG_SUBJECT_CAP;
|
|
@@ -30,14 +39,18 @@ export function redact(input, extraRules = []) {
|
|
|
30
39
|
// Fresh lastIndex per call: these regexes are global and module-level, so
|
|
31
40
|
// reusing them statefully across calls would skip matches.
|
|
32
41
|
rule.pattern.lastIndex = 0;
|
|
33
|
-
|
|
42
|
+
// `match` on a global regex returns every match, so the tally is a count of
|
|
43
|
+
// matches rather than of rules. Only the length is ever read.
|
|
44
|
+
const hits = subject.match(rule.pattern)?.length ?? 0;
|
|
45
|
+
if (hits === 0)
|
|
34
46
|
continue;
|
|
35
47
|
rule.pattern.lastIndex = 0;
|
|
36
48
|
const replaced = subject.replace(rule.pattern, rule.replacement);
|
|
37
49
|
text = capped ? replaced + text.slice(ORG_SUBJECT_CAP) : replaced;
|
|
38
|
-
|
|
50
|
+
const kind = reportedKind(rule.name);
|
|
51
|
+
counts[kind] = (counts[kind] ?? 0) + hits;
|
|
39
52
|
}
|
|
40
|
-
return { text, redactions };
|
|
53
|
+
return { text, redactions: Object.keys(counts), counts };
|
|
41
54
|
}
|
|
42
55
|
/**
|
|
43
56
|
* An org rule is rejected before compilation when its source is longer than
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redact.js","sourceRoot":"","sources":["../../src/privacy/redact.ts"],"names":[],"mappings":"AAuBA,oFAAoF;AACpF,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,GAAG,IAAI,CAAC;AAEzC,MAAM,CAAC,MAAM,aAAa,GAAoB;IAC5C,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,4BAA4B,EAAE,WAAW,EAAE,0BAA0B,EAAE;IACzG,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,kCAAkC,EAAE,WAAW,EAAE,uBAAuB,EAAE;IACzG,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,6BAA6B,EAAE,WAAW,EAAE,yBAAyB,EAAE;IACxG,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,+BAA+B,EAAE,WAAW,EAAE,uBAAuB,EAAE;IACtG,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,+BAA+B,EAAE,WAAW,EAAE,wBAAwB,EAAE;IACxG,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,uCAAuC,EAAE,WAAW,EAAE,uBAAuB,EAAE;IAC9G,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,gCAAgC,EAAE,WAAW,EAAE,2BAA2B,EAAE;IAC/G,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,4BAA4B,EAAE,WAAW,EAAE,2BAA2B,EAAE;IAC3G,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,qDAAqD,EAAE,WAAW,EAAE,4BAA4B,EAAE;IACtI,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,2EAA2E,EAAE,WAAW,EAAE,wBAAwB,EAAE;IACpJ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,oEAAoE,EAAE,WAAW,EAAE,gBAAgB,EAAE;IAC7H,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,yCAAyC,EAAE,WAAW,EAAE,mBAAmB,EAAE;IAC/G,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,gDAAgD,EAAE,WAAW,EAAE,eAAe,EAAE;IACnH,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,uHAAuH,EAAE,WAAW,EAAE,eAAe,EAAE;IAC1L,8EAA8E;IAC9E,yEAAyE;IACzE,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,2DAA2D,EAAE,WAAW,EAAE,cAAc,EAAE;IACnI,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,gBAAgB,EAAE;CAC7F,CAAC;
|
|
1
|
+
{"version":3,"file":"redact.js","sourceRoot":"","sources":["../../src/privacy/redact.ts"],"names":[],"mappings":"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"}
|
package/dist/sessions/title.d.ts
CHANGED
|
@@ -1,2 +1,14 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* First meaningful line of a prompt, secret-redacted and NOT truncated.
|
|
3
|
+
*
|
|
4
|
+
* Truncation deliberately does not happen here. Cutting the line first slices a
|
|
5
|
+
* straddling secret in half, neither half matches its pattern any more, and the
|
|
6
|
+
* fragment ships inside the title. Only the built-in rules are reachable from an
|
|
7
|
+
* adapter, so doing the cut here could only ever be safe for those — an
|
|
8
|
+
* org-supplied pattern would still be bisected.
|
|
9
|
+
*
|
|
10
|
+
* The privacy pipeline redacts this field again with the org's own rules and
|
|
11
|
+
* only then truncates it (see TITLE_MAX_LENGTH in privacy/pipeline.ts), so the
|
|
12
|
+
* cut always lands on already-redacted text whatever the rule's source.
|
|
13
|
+
*/
|
|
14
|
+
export declare function deriveTitle(text: string): string;
|
package/dist/sessions/title.js
CHANGED
|
@@ -1,11 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { redact } from '../privacy/redact.js';
|
|
2
|
+
/**
|
|
3
|
+
* First meaningful line of a prompt, secret-redacted and NOT truncated.
|
|
4
|
+
*
|
|
5
|
+
* Truncation deliberately does not happen here. Cutting the line first slices a
|
|
6
|
+
* straddling secret in half, neither half matches its pattern any more, and the
|
|
7
|
+
* fragment ships inside the title. Only the built-in rules are reachable from an
|
|
8
|
+
* adapter, so doing the cut here could only ever be safe for those — an
|
|
9
|
+
* org-supplied pattern would still be bisected.
|
|
10
|
+
*
|
|
11
|
+
* The privacy pipeline redacts this field again with the org's own rules and
|
|
12
|
+
* only then truncates it (see TITLE_MAX_LENGTH in privacy/pipeline.ts), so the
|
|
13
|
+
* cut always lands on already-redacted text whatever the rule's source.
|
|
14
|
+
*/
|
|
15
|
+
export function deriveTitle(text) {
|
|
16
|
+
const line = redact(text)
|
|
17
|
+
.text.split('\n')
|
|
5
18
|
.map((l) => l.trim())
|
|
6
19
|
// Skip markdown fences, quotes and system-reminder noise.
|
|
7
20
|
.find((l) => l.length > 0 && !l.startsWith('```') && !l.startsWith('<') && !l.startsWith('>')) ?? '';
|
|
8
|
-
|
|
9
|
-
return cleaned.length <= maxLength ? cleaned : `${cleaned.slice(0, maxLength - 1)}…`;
|
|
21
|
+
return line.replace(/\s+/g, ' ').trim();
|
|
10
22
|
}
|
|
11
23
|
//# sourceMappingURL=title.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"title.js","sourceRoot":"","sources":["../../src/sessions/title.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"title.js","sourceRoot":"","sources":["../../src/sessions/title.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,MAAM,IAAI,GACR,MAAM,CAAC,IAAI,CAAC;SACT,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;SAChB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACrB,0DAA0D;SACzD,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACzG,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAC1C,CAAC"}
|
package/package.json
CHANGED