@cat-factory/orchestration 0.123.2 → 0.123.4

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.
@@ -16,6 +16,14 @@ export declare const MAX_AGENT_CONTEXT_CHARS: number;
16
16
  * prompts first), so the most useful context survives when the budget is reached.
17
17
  */
18
18
  export declare const MAX_AGENT_CONTEXT_TOTAL_CHARS: number;
19
+ /**
20
+ * Stored in place of a secret-bearing file's body. A file whose NAME marks it as a raw
21
+ * credential store (`.env`, `*.pem`, an SSH key, `.npmrc`, …) has no field-name/URL
22
+ * scaffolding for {@link redactSecrets}'s pattern rules to latch onto — a bare PEM block or
23
+ * a `KEY=value` dump would pass through the shape scrub verbatim — so its whole body is
24
+ * dropped rather than persisted.
25
+ */
26
+ export declare const SECRET_FILE_PLACEHOLDER = "[REDACTED: secret-shaped file omitted from snapshot]";
19
27
  export interface AgentContextObservabilityServiceDependencies {
20
28
  agentContextSnapshotRepository: AgentContextSnapshotRepository;
21
29
  workspaceSettingsRepository: WorkspaceSettingsRepository;
@@ -53,8 +61,22 @@ export declare class AgentContextObservabilityService implements AgentContextRec
53
61
  /**
54
62
  * Persist one dispatch's context, assigning its id + timestamp. Returns without
55
63
  * storing when prompt recording is disabled deployment-wide or the workspace has
56
- * turned `storeAgentContext` off. Bodies are clamped so an oversized prompt/file
57
- * never drops the whole snapshot.
64
+ * turned `storeAgentContext` off.
65
+ *
66
+ * Every stored body is a defence-in-depth SECRET SCRUB before it lands in the telemetry
67
+ * store: prompts, fragment bodies and injected file contents run through
68
+ * {@link redactSecrets} (a value the dispatch site's allow-list can't fully guarantee is
69
+ * clean — a task description, a linked doc, or an injected file may embed a token), and a
70
+ * file whose NAME marks it as a raw credential store ({@link isSecretShapedFilename}) has
71
+ * its whole body dropped ({@link SECRET_FILE_PLACEHOLDER}), since a bare PEM/`.env` body
72
+ * has no scaffolding for the shape rules to catch. Scrub happens BEFORE the size budget so
73
+ * truncation can never split a secret across the cap and defeat the pattern match. Bodies
74
+ * are then clamped so an oversized prompt/file never drops the whole snapshot.
75
+ *
76
+ * The `extras` bag is deep-scrubbed too ({@link redactSecretsDeep}): several of its values
77
+ * are human-authored free text (the run's decisions, revision feedback) — the SAME token-
78
+ * in-prose risk as a task description — so every string it carries at any depth is scrubbed
79
+ * rather than trusting the dispatch-site allow-list to have kept it clean.
58
80
  */
59
81
  record(input: RecordAgentContextInput): Promise<void>;
60
82
  /** Snapshots recorded for a run, newest first (for the observability drill-down). */
@@ -1 +1 @@
1
- {"version":3,"file":"AgentContextObservabilityService.d.ts","sourceRoot":"","sources":["../../../src/modules/observability/AgentContextObservabilityService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,oBAAoB,EACpB,8BAA8B,EAC9B,KAAK,EACL,WAAW,EACX,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,qBAAqB,CAAA;AAG5B;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,QAAa,CAAA;AAEjD;;;;;;;;GAQG;AACH,eAAO,MAAM,6BAA6B,QAAkB,CAAA;AA4B5D,MAAM,WAAW,4CAA4C;IAC3D,8BAA8B,EAAE,8BAA8B,CAAA;IAC9D,2BAA2B,EAAE,2BAA2B,CAAA;IACxD,WAAW,EAAE,WAAW,CAAA;IACxB,KAAK,EAAE,KAAK,CAAA;IACZ;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,gCAAiC,YAAW,oBAAoB;IAC3E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgC;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAO;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAEvC,YAAY,EACV,8BAA8B,EAC9B,2BAA2B,EAC3B,WAAW,EACX,KAAK,EACL,aAAoB,GACrB,EAAE,4CAA4C,EAM9C;IAED;;;;;OAKG;IACG,MAAM,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB1D;IAED,qFAAqF;IACrF,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAEzF;YAEa,YAAY;CAI3B"}
1
+ {"version":3,"file":"AgentContextObservabilityService.d.ts","sourceRoot":"","sources":["../../../src/modules/observability/AgentContextObservabilityService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,oBAAoB,EACpB,8BAA8B,EAC9B,KAAK,EACL,WAAW,EACX,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,qBAAqB,CAAA;AAQ5B;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,QAAa,CAAA;AAEjD;;;;;;;;GAQG;AACH,eAAO,MAAM,6BAA6B,QAAkB,CAAA;AAO5D;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,yDAAyD,CAAA;AAuB7F,MAAM,WAAW,4CAA4C;IAC3D,8BAA8B,EAAE,8BAA8B,CAAA;IAC9D,2BAA2B,EAAE,2BAA2B,CAAA;IACxD,WAAW,EAAE,WAAW,CAAA;IACxB,KAAK,EAAE,KAAK,CAAA;IACZ;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,gCAAiC,YAAW,oBAAoB;IAC3E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgC;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAO;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAEvC,YAAY,EACV,8BAA8B,EAC9B,2BAA2B,EAC3B,WAAW,EACX,KAAK,EACL,aAAoB,GACrB,EAAE,4CAA4C,EAM9C;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACG,MAAM,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0B1D;IAED,qFAAqF;IACrF,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAEzF;YAEa,YAAY;CAI3B"}
@@ -1,4 +1,4 @@
1
- import { DEFAULT_WORKSPACE_SETTINGS } from '@cat-factory/kernel';
1
+ import { DEFAULT_WORKSPACE_SETTINGS, isSecretShapedFilename, redactSecrets, redactSecretsDeep, } from '@cat-factory/kernel';
2
2
  /**
3
3
  * Defensive upper bound (characters) on any single stored body — a prompt or one
4
4
  * injected file. Real agent context sits far below this; the cap exists only so a
@@ -21,6 +21,14 @@ function clamp(text) {
21
21
  return text;
22
22
  return `${text.slice(0, MAX_AGENT_CONTEXT_CHARS)}\n…[truncated ${text.length - MAX_AGENT_CONTEXT_CHARS} chars]`;
23
23
  }
24
+ /**
25
+ * Stored in place of a secret-bearing file's body. A file whose NAME marks it as a raw
26
+ * credential store (`.env`, `*.pem`, an SSH key, `.npmrc`, …) has no field-name/URL
27
+ * scaffolding for {@link redactSecrets}'s pattern rules to latch onto — a bare PEM block or
28
+ * a `KEY=value` dump would pass through the shape scrub verbatim — so its whole body is
29
+ * dropped rather than persisted.
30
+ */
31
+ export const SECRET_FILE_PLACEHOLDER = '[REDACTED: secret-shaped file omitted from snapshot]';
24
32
  /**
25
33
  * A shared character budget for one snapshot. Each call first applies the per-body cap,
26
34
  * then trims against the remaining aggregate budget — so the bodies passed earlier (the
@@ -71,8 +79,22 @@ export class AgentContextObservabilityService {
71
79
  /**
72
80
  * Persist one dispatch's context, assigning its id + timestamp. Returns without
73
81
  * storing when prompt recording is disabled deployment-wide or the workspace has
74
- * turned `storeAgentContext` off. Bodies are clamped so an oversized prompt/file
75
- * never drops the whole snapshot.
82
+ * turned `storeAgentContext` off.
83
+ *
84
+ * Every stored body is a defence-in-depth SECRET SCRUB before it lands in the telemetry
85
+ * store: prompts, fragment bodies and injected file contents run through
86
+ * {@link redactSecrets} (a value the dispatch site's allow-list can't fully guarantee is
87
+ * clean — a task description, a linked doc, or an injected file may embed a token), and a
88
+ * file whose NAME marks it as a raw credential store ({@link isSecretShapedFilename}) has
89
+ * its whole body dropped ({@link SECRET_FILE_PLACEHOLDER}), since a bare PEM/`.env` body
90
+ * has no scaffolding for the shape rules to catch. Scrub happens BEFORE the size budget so
91
+ * truncation can never split a secret across the cap and defeat the pattern match. Bodies
92
+ * are then clamped so an oversized prompt/file never drops the whole snapshot.
93
+ *
94
+ * The `extras` bag is deep-scrubbed too ({@link redactSecretsDeep}): several of its values
95
+ * are human-authored free text (the run's decisions, revision feedback) — the SAME token-
96
+ * in-prose risk as a task description — so every string it carries at any depth is scrubbed
97
+ * rather than trusting the dispatch-site allow-list to have kept it clean.
76
98
  */
77
99
  async record(input) {
78
100
  if (!this.recordPrompts)
@@ -82,14 +104,24 @@ export class AgentContextObservabilityService {
82
104
  // One shared budget per snapshot, consumed prompts-first so the most useful context
83
105
  // survives if a dispatch injects an unusual amount of file content.
84
106
  const budget = makeBudget();
107
+ // Scrub credentials, THEN clamp — a truncated body must never hide a half-cut secret.
108
+ const scrub = (text) => budget(redactSecrets(text) ?? '');
85
109
  const snapshot = {
86
110
  ...input,
87
111
  id: this.idGenerator.next('ctx'),
88
112
  createdAt: this.clock.now(),
89
- systemPrompt: budget(input.systemPrompt),
90
- userPrompt: budget(input.userPrompt),
91
- fragments: input.fragments.map((f) => ({ id: f.id, body: budget(f.body) })),
92
- contextFiles: input.contextFiles.map((f) => ({ ...f, content: budget(f.content) })),
113
+ systemPrompt: scrub(input.systemPrompt),
114
+ userPrompt: scrub(input.userPrompt),
115
+ fragments: input.fragments.map((f) => ({ id: f.id, body: scrub(f.body) })),
116
+ contextFiles: input.contextFiles.map((f) => ({
117
+ ...f,
118
+ content: isSecretShapedFilename(f.path)
119
+ ? budget(SECRET_FILE_PLACEHOLDER)
120
+ : scrub(f.content),
121
+ })),
122
+ // Structural bits, but some values (decisions, revision feedback) are free-text prose
123
+ // that can embed a token — scrub every string in the bag, not just the known bodies.
124
+ extras: redactSecretsDeep(input.extras),
93
125
  };
94
126
  await this.repository.record(snapshot);
95
127
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AgentContextObservabilityService.js","sourceRoot":"","sources":["../../../src/modules/observability/AgentContextObservabilityService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AgentContextObservabilityService.js","sourceRoot":"","sources":["../../../src/modules/observability/AgentContextObservabilityService.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/orchestration",
3
- "version": "0.123.2",
3
+ "version": "0.123.4",
4
4
  "description": "Delivery-workflow engine for the Agent Architecture Board (execution, bootstrap, pipelines, board, boardScan, requirements, and composition root).",
5
5
  "repository": {
6
6
  "type": "git",
@@ -24,21 +24,21 @@
24
24
  "access": "public"
25
25
  },
26
26
  "dependencies": {
27
- "ai": "^6.0.224",
28
- "@cat-factory/agents": "0.62.10",
29
- "@cat-factory/caching": "0.10.7",
30
- "@cat-factory/contracts": "0.148.0",
31
- "@cat-factory/integrations": "0.86.2",
32
- "@cat-factory/kernel": "0.139.2",
33
- "@cat-factory/prompt-fragments": "0.13.38",
34
- "@cat-factory/sandbox": "0.9.101",
35
- "@cat-factory/spend": "0.12.51",
36
- "@cat-factory/workspaces": "0.16.4"
27
+ "ai": "^6.0.230",
28
+ "@cat-factory/agents": "0.62.12",
29
+ "@cat-factory/caching": "0.10.9",
30
+ "@cat-factory/contracts": "0.148.1",
31
+ "@cat-factory/integrations": "0.86.4",
32
+ "@cat-factory/kernel": "0.140.0",
33
+ "@cat-factory/prompt-fragments": "0.13.39",
34
+ "@cat-factory/sandbox": "0.9.103",
35
+ "@cat-factory/spend": "0.12.53",
36
+ "@cat-factory/workspaces": "0.16.6"
37
37
  },
38
38
  "devDependencies": {
39
39
  "typescript": "7.0.2",
40
40
  "vitest": "^4.1.10",
41
- "@cat-factory/sandbox-fixtures": "0.7.173"
41
+ "@cat-factory/sandbox-fixtures": "0.7.174"
42
42
  },
43
43
  "scripts": {
44
44
  "build": "tsc -b tsconfig.build.json",