@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 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
- [Unreleased]: https://github.com/agentstrack/collector/compare/v0.3.0...HEAD
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.2.0...v0.2.1
359
- [0.2.0]: https://github.com/agentstrack/collector/compare/v0.1.0...v0.2.0
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 and secret-redacted (`analytics` mode and above) | Send the rest of the prompt those titles were taken from |
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
- │ │ → 15 built-in secret rules + org rules
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 that survives the mode strip (`prompt_text`, `derived_title`, `message`,
292
- `command`) passes through these 15 rules, most-specific first, on your machine:
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]`. Four do not:
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]` keeps
315
- the variable name, and `generic_hex_secret` substitutes the shorter `[REDACTED:hex]`. Your
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 in
558
- # `analytics` it additionally drops the locally derived `derived_title`, so
559
- # nothing derived from a prompt leaves the machine at all. Under `mode: full`
560
- # it does NOT drop `derived_title` — see the privacy section.
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
@@ -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
- message: str(payload['message'])?.slice(0, 1000),
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;
@@ -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
- const result = redact(value, extraRules);
59
- payload[key] = result.text;
60
- redactions.push(...result.redactions);
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
- return { event: { ...event, payload }, redactions };
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":"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"}
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/privacy/pipeline.ts"],"names":[],"mappings":"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"}
@@ -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
- /** Names of rules that fired, for the trust metrics in BLUEPRINT §14. */
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: {
@@ -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 redactions = [];
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
- if (!rule.pattern.test(subject))
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
- redactions.push(rule.name);
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":"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"}
1
+ {"version":3,"file":"redact.js","sourceRoot":"","sources":["../../src/privacy/redact.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,14 @@
1
- /** First meaningful line of a prompt, trimmed to a usable title length. */
2
- export declare function deriveTitle(text: string, maxLength?: number): string;
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;
@@ -1,11 +1,23 @@
1
- /** First meaningful line of a prompt, trimmed to a usable title length. */
2
- export function deriveTitle(text, maxLength = 120) {
3
- const line = text
4
- .split('\n')
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
- const cleaned = line.replace(/\s+/g, ' ').trim();
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,2EAA2E;AAC3E,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,SAAS,GAAG,GAAG;IACvD,MAAM,IAAI,GACR,IAAI;SACD,KAAK,CAAC,IAAI,CAAC;SACX,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,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,OAAO,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC;AACvF,CAAC"}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentstrack/collector",
3
- "version": "0.3.0",
3
+ "version": "0.4.1",
4
4
  "description": "Privacy-first telemetry collector for AI coding agents \u2014 Claude Code, Codex, and more. Local-first, open source.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",