crewly 1.20.157 → 1.20.158
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.md +1 -0
- package/config/templates/growth-marketing-team.json +5 -5
- package/config/templates/personal-assistant-team.json +5 -5
- package/dist/backend/backend/src/constants.d.ts +66 -2
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +91 -5
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +9 -0
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.js +34 -29
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/codex-runtime.service.d.ts +4 -3
- package/dist/backend/backend/src/services/agent/codex-runtime.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/codex-runtime.service.js +48 -3
- package/dist/backend/backend/src/services/agent/codex-runtime.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/in-process-log-buffer.d.ts +9 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/in-process-log-buffer.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/in-process-log-buffer.js +18 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/in-process-log-buffer.js.map +1 -1
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js +5 -1
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js +14 -4
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
- package/dist/backend/backend/src/services/agent/tmux-command.service.d.ts +14 -2
- package/dist/backend/backend/src/services/agent/tmux-command.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/tmux-command.service.js +24 -5
- package/dist/backend/backend/src/services/agent/tmux-command.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/tmux.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/tmux.service.js +14 -9
- package/dist/backend/backend/src/services/agent/tmux.service.js.map +1 -1
- package/dist/backend/backend/src/services/backup/backup-archive.service.d.ts +8 -0
- package/dist/backend/backend/src/services/backup/backup-archive.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/backup/backup-archive.service.js +16 -8
- package/dist/backend/backend/src/services/backup/backup-archive.service.js.map +1 -1
- package/dist/backend/backend/src/services/backup/backup.types.d.ts +19 -0
- package/dist/backend/backend/src/services/backup/backup.types.d.ts.map +1 -1
- package/dist/backend/backend/src/services/backup/backup.types.js +19 -0
- package/dist/backend/backend/src/services/backup/backup.types.js.map +1 -1
- package/dist/backend/backend/src/services/security/secret-scrub.service.d.ts +108 -0
- package/dist/backend/backend/src/services/security/secret-scrub.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/security/secret-scrub.service.js +200 -0
- package/dist/backend/backend/src/services/security/secret-scrub.service.js.map +1 -0
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts +13 -9
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.js +30 -14
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-session.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-session.js +6 -1
- package/dist/backend/backend/src/services/session/pty/pty-session.js.map +1 -1
- package/dist/backend/backend/src/services/session/session-command-helper.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/session-command-helper.js +3 -2
- package/dist/backend/backend/src/services/session/session-command-helper.js.map +1 -1
- package/dist/backend/backend/src/types/team-template.types.d.ts +1 -1
- package/dist/backend/backend/src/types/team-template.types.d.ts.map +1 -1
- package/dist/backend/backend/src/utils/secret-redactor.d.ts +131 -0
- package/dist/backend/backend/src/utils/secret-redactor.d.ts.map +1 -0
- package/dist/backend/backend/src/utils/secret-redactor.js +233 -0
- package/dist/backend/backend/src/utils/secret-redactor.js.map +1 -0
- package/dist/backend/backend/src/utils/shell-history.d.ts +48 -0
- package/dist/backend/backend/src/utils/shell-history.d.ts.map +1 -0
- package/dist/backend/backend/src/utils/shell-history.js +65 -0
- package/dist/backend/backend/src/utils/shell-history.js.map +1 -0
- package/dist/backend/build-info.json +2 -2
- package/dist/cli/backend/src/constants.d.ts +66 -2
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +91 -5
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +9 -0
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.js +34 -29
- package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/codex-runtime.service.d.ts +4 -3
- package/dist/cli/backend/src/services/agent/codex-runtime.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/codex-runtime.service.js +48 -3
- package/dist/cli/backend/src/services/agent/codex-runtime.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/crewly-agent/in-process-log-buffer.d.ts +9 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/in-process-log-buffer.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/crewly-agent/in-process-log-buffer.js +18 -1
- package/dist/cli/backend/src/services/agent/crewly-agent/in-process-log-buffer.js.map +1 -1
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js +5 -1
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js +14 -4
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
- package/dist/cli/backend/src/services/backup/backup-archive.service.d.ts +8 -0
- package/dist/cli/backend/src/services/backup/backup-archive.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/backup/backup-archive.service.js +16 -8
- package/dist/cli/backend/src/services/backup/backup-archive.service.js.map +1 -1
- package/dist/cli/backend/src/services/backup/backup.types.d.ts +19 -0
- package/dist/cli/backend/src/services/backup/backup.types.d.ts.map +1 -1
- package/dist/cli/backend/src/services/backup/backup.types.js +19 -0
- package/dist/cli/backend/src/services/backup/backup.types.js.map +1 -1
- package/dist/cli/backend/src/services/security/secret-scrub.service.d.ts +108 -0
- package/dist/cli/backend/src/services/security/secret-scrub.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/security/secret-scrub.service.js +200 -0
- package/dist/cli/backend/src/services/security/secret-scrub.service.js.map +1 -0
- package/dist/cli/backend/src/services/session/pty/pty-session-backend.d.ts +13 -9
- package/dist/cli/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -1
- package/dist/cli/backend/src/services/session/pty/pty-session-backend.js +30 -14
- package/dist/cli/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
- package/dist/cli/backend/src/services/session/pty/pty-session.d.ts.map +1 -1
- package/dist/cli/backend/src/services/session/pty/pty-session.js +6 -1
- package/dist/cli/backend/src/services/session/pty/pty-session.js.map +1 -1
- package/dist/cli/backend/src/services/session/session-command-helper.d.ts.map +1 -1
- package/dist/cli/backend/src/services/session/session-command-helper.js +3 -2
- package/dist/cli/backend/src/services/session/session-command-helper.js.map +1 -1
- package/dist/cli/backend/src/types/team-template.types.d.ts +1 -1
- package/dist/cli/backend/src/types/team-template.types.d.ts.map +1 -1
- package/dist/cli/backend/src/utils/secret-redactor.d.ts +131 -0
- package/dist/cli/backend/src/utils/secret-redactor.d.ts.map +1 -0
- package/dist/cli/backend/src/utils/secret-redactor.js +233 -0
- package/dist/cli/backend/src/utils/secret-redactor.js.map +1 -0
- package/dist/cli/backend/src/utils/shell-history.d.ts +48 -0
- package/dist/cli/backend/src/utils/shell-history.d.ts.map +1 -0
- package/dist/cli/backend/src/utils/shell-history.js +65 -0
- package/dist/cli/backend/src/utils/shell-history.js.map +1 -0
- package/dist/cli/cli/src/commands/security.d.ts +41 -0
- package/dist/cli/cli/src/commands/security.d.ts.map +1 -0
- package/dist/cli/cli/src/commands/security.js +81 -0
- package/dist/cli/cli/src/commands/security.js.map +1 -0
- package/dist/cli/cli/src/index.js +9 -0
- package/dist/cli/cli/src/index.js.map +1 -1
- package/frontend/dist/assets/index-edd6f262.css +42 -0
- package/frontend/dist/assets/{index-8d4b3ad2.js → index-f79676aa.js} +268 -268
- package/frontend/dist/index.html +2 -2
- package/package.json +1 -1
- package/frontend/dist/assets/index-b6aded4c.css +0 -42
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One-time scrub of secrets already written to disk.
|
|
3
|
+
*
|
|
4
|
+
* Before #806 Crewly typed `export GEMINI_API_KEY=…` (and other keys) into
|
|
5
|
+
* agent shells, so keys sit in ~/.crewly/logs/sessions/*.log, in the gzipped
|
|
6
|
+
* rotations under ~/.crewly/logs/archive/, and in the user's shell history.
|
|
7
|
+
* This service runs every such file through the same redactor the live
|
|
8
|
+
* session-log writer uses (utils/secret-redactor).
|
|
9
|
+
*
|
|
10
|
+
* - Dry run by default: reports what WOULD be masked; nothing is written.
|
|
11
|
+
* - Reports counts only — never a secret value, never a matched line.
|
|
12
|
+
* - Idempotent: a second `apply` finds 0 (masks are never re-masked) and
|
|
13
|
+
* rewrites nothing.
|
|
14
|
+
* - Files are read and written as bytes (latin1): zsh stores history
|
|
15
|
+
* "metafied" (not valid UTF-8), so a UTF-8 round trip would corrupt it.
|
|
16
|
+
* Every pattern is ASCII, so byte-wise matching is exact.
|
|
17
|
+
* - Rewrites are atomic (temp file + rename) and keep the file mode.
|
|
18
|
+
*
|
|
19
|
+
* Used by `crewly security scrub-logs [--apply]`.
|
|
20
|
+
*
|
|
21
|
+
* @module services/security/secret-scrub.service
|
|
22
|
+
*/
|
|
23
|
+
import { type SecretEnvValue } from '../../utils/secret-env.js';
|
|
24
|
+
/** Which kind of file a scrub target is. */
|
|
25
|
+
export type ScrubTargetKind = 'session-log' | 'session-log-archive' | 'shell-history';
|
|
26
|
+
/** Per-file outcome (path + counts only, never content). */
|
|
27
|
+
export interface ScrubFileResult {
|
|
28
|
+
/** Absolute path */
|
|
29
|
+
path: string;
|
|
30
|
+
/** Kind of file */
|
|
31
|
+
kind: ScrubTargetKind;
|
|
32
|
+
/** Secrets found (dry run) or masked (apply) */
|
|
33
|
+
secrets: number;
|
|
34
|
+
/** Whether the file was rewritten */
|
|
35
|
+
rewritten: boolean;
|
|
36
|
+
/** Error message when the file could not be read/written (no content) */
|
|
37
|
+
error?: string;
|
|
38
|
+
}
|
|
39
|
+
/** Totals for one scrub run. */
|
|
40
|
+
export interface ScrubSummary {
|
|
41
|
+
/** True when files were rewritten; false for a dry run */
|
|
42
|
+
applied: boolean;
|
|
43
|
+
/** Files examined */
|
|
44
|
+
filesScanned: number;
|
|
45
|
+
/** Files that contain (dry run) / contained (apply) at least one secret */
|
|
46
|
+
filesWithSecrets: number;
|
|
47
|
+
/** Files rewritten */
|
|
48
|
+
filesRewritten: number;
|
|
49
|
+
/** Total secrets found or masked */
|
|
50
|
+
secrets: number;
|
|
51
|
+
/** Files that could not be processed */
|
|
52
|
+
errors: number;
|
|
53
|
+
/** Per-file detail */
|
|
54
|
+
files: ScrubFileResult[];
|
|
55
|
+
}
|
|
56
|
+
/** Options for a scrub run. */
|
|
57
|
+
export interface ScrubOptions {
|
|
58
|
+
/** Rewrite files (default false: dry run) */
|
|
59
|
+
apply?: boolean;
|
|
60
|
+
/** CREWLY_HOME override (default getCrewlyHomePath()) */
|
|
61
|
+
crewlyHome?: string;
|
|
62
|
+
/** Home directory whose shell history is scrubbed (default os.homedir()) */
|
|
63
|
+
homeDir?: string;
|
|
64
|
+
/** Also scrub shell history files (default true) */
|
|
65
|
+
includeShellHistory?: boolean;
|
|
66
|
+
/** Env maps whose secret-named values are masked by exact value (default [process.env]) */
|
|
67
|
+
envs?: ReadonlyArray<Record<string, string | undefined>>;
|
|
68
|
+
}
|
|
69
|
+
/** A file to scrub. */
|
|
70
|
+
interface ScrubTarget {
|
|
71
|
+
path: string;
|
|
72
|
+
kind: ScrubTargetKind;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Collects exact secret values from settings.json `apiKeys` (every string
|
|
76
|
+
* leaf) so keys that were typed into shells are masked even when their
|
|
77
|
+
* shape is unknown. Read directly from the file: no settings service side
|
|
78
|
+
* effects (migrations) in a scrub.
|
|
79
|
+
*
|
|
80
|
+
* @param crewlyHome - CREWLY_HOME path
|
|
81
|
+
* @returns Secret values, labelled SETTINGS_<PATH>
|
|
82
|
+
*/
|
|
83
|
+
export declare function collectSettingsSecretValues(crewlyHome: string): Promise<SecretEnvValue[]>;
|
|
84
|
+
/**
|
|
85
|
+
* Lists the files a scrub covers: session logs, their gzipped rotations and
|
|
86
|
+
* (optionally) the user's shell history files. Missing files are skipped.
|
|
87
|
+
*
|
|
88
|
+
* @param crewlyHome - CREWLY_HOME path
|
|
89
|
+
* @param homeDir - User home directory
|
|
90
|
+
* @param includeShellHistory - Include shell history files
|
|
91
|
+
* @returns Existing regular files to scrub
|
|
92
|
+
*/
|
|
93
|
+
export declare function listScrubTargets(crewlyHome: string, homeDir: string, includeShellHistory: boolean): Promise<ScrubTarget[]>;
|
|
94
|
+
/**
|
|
95
|
+
* Runs the scrub (dry run unless `apply`).
|
|
96
|
+
*
|
|
97
|
+
* @param options - See ScrubOptions
|
|
98
|
+
* @returns Totals and per-file counts — no secret values
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```ts
|
|
102
|
+
* const dry = await scrubSecretsOnDisk(); // what would change
|
|
103
|
+
* const done = await scrubSecretsOnDisk({ apply: true });
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
export declare function scrubSecretsOnDisk(options?: ScrubOptions): Promise<ScrubSummary>;
|
|
107
|
+
export {};
|
|
108
|
+
//# sourceMappingURL=secret-scrub.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-scrub.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/security/secret-scrub.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAQH,OAAO,EAA0B,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGxF,4CAA4C;AAC5C,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,qBAAqB,GAAG,eAAe,CAAC;AAEtF,4DAA4D;AAC5D,MAAM,WAAW,eAAe;IAC/B,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,IAAI,EAAE,eAAe,CAAC;IACtB,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,SAAS,EAAE,OAAO,CAAC;IACnB,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,gCAAgC;AAChC,MAAM,WAAW,YAAY;IAC5B,0DAA0D;IAC1D,OAAO,EAAE,OAAO,CAAC;IACjB,qBAAqB;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,gBAAgB,EAAE,MAAM,CAAC;IACzB,sBAAsB;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,KAAK,EAAE,eAAe,EAAE,CAAC;CACzB;AAED,+BAA+B;AAC/B,MAAM,WAAW,YAAY;IAC5B,6CAA6C;IAC7C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,2FAA2F;IAC3F,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;CACzD;AAED,uBAAuB;AACvB,UAAU,WAAW;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,eAAe,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,wBAAsB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAyB/F;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAwBhI;AAoDD;;;;;;;;;;;GAWG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAsB1F"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One-time scrub of secrets already written to disk.
|
|
3
|
+
*
|
|
4
|
+
* Before #806 Crewly typed `export GEMINI_API_KEY=…` (and other keys) into
|
|
5
|
+
* agent shells, so keys sit in ~/.crewly/logs/sessions/*.log, in the gzipped
|
|
6
|
+
* rotations under ~/.crewly/logs/archive/, and in the user's shell history.
|
|
7
|
+
* This service runs every such file through the same redactor the live
|
|
8
|
+
* session-log writer uses (utils/secret-redactor).
|
|
9
|
+
*
|
|
10
|
+
* - Dry run by default: reports what WOULD be masked; nothing is written.
|
|
11
|
+
* - Reports counts only — never a secret value, never a matched line.
|
|
12
|
+
* - Idempotent: a second `apply` finds 0 (masks are never re-masked) and
|
|
13
|
+
* rewrites nothing.
|
|
14
|
+
* - Files are read and written as bytes (latin1): zsh stores history
|
|
15
|
+
* "metafied" (not valid UTF-8), so a UTF-8 round trip would corrupt it.
|
|
16
|
+
* Every pattern is ASCII, so byte-wise matching is exact.
|
|
17
|
+
* - Rewrites are atomic (temp file + rename) and keep the file mode.
|
|
18
|
+
*
|
|
19
|
+
* Used by `crewly security scrub-logs [--apply]`.
|
|
20
|
+
*
|
|
21
|
+
* @module services/security/secret-scrub.service
|
|
22
|
+
*/
|
|
23
|
+
import * as fs from 'fs/promises';
|
|
24
|
+
import * as os from 'os';
|
|
25
|
+
import * as path from 'path';
|
|
26
|
+
import { gunzipSync, gzipSync } from 'zlib';
|
|
27
|
+
import { LOG_ROTATION_CONSTANTS, SECRET_SCRUB_CONSTANTS } from '../../constants.js';
|
|
28
|
+
import { getCrewlyHomePath } from '../core/crewly-home.utils.js';
|
|
29
|
+
import { collectSecretEnvValues } from '../../utils/secret-env.js';
|
|
30
|
+
import { redactSecretsWithCount } from '../../utils/secret-redactor.js';
|
|
31
|
+
/**
|
|
32
|
+
* Collects exact secret values from settings.json `apiKeys` (every string
|
|
33
|
+
* leaf) so keys that were typed into shells are masked even when their
|
|
34
|
+
* shape is unknown. Read directly from the file: no settings service side
|
|
35
|
+
* effects (migrations) in a scrub.
|
|
36
|
+
*
|
|
37
|
+
* @param crewlyHome - CREWLY_HOME path
|
|
38
|
+
* @returns Secret values, labelled SETTINGS_<PATH>
|
|
39
|
+
*/
|
|
40
|
+
export async function collectSettingsSecretValues(crewlyHome) {
|
|
41
|
+
let raw;
|
|
42
|
+
try {
|
|
43
|
+
raw = await fs.readFile(path.join(crewlyHome, SECRET_SCRUB_CONSTANTS.SETTINGS_FILE), 'utf8');
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return [];
|
|
47
|
+
}
|
|
48
|
+
let parsed;
|
|
49
|
+
try {
|
|
50
|
+
parsed = JSON.parse(raw);
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
return [];
|
|
54
|
+
}
|
|
55
|
+
const apiKeys = parsed?.apiKeys;
|
|
56
|
+
const env = {};
|
|
57
|
+
const walk = (node, trail) => {
|
|
58
|
+
if (typeof node === 'string') {
|
|
59
|
+
// Name ends in _API_KEY so collectSecretEnvValues treats it as secret
|
|
60
|
+
env[`SETTINGS_${trail.join('_').replace(/[^A-Za-z0-9]+/g, '_').toUpperCase()}_API_KEY`] = node;
|
|
61
|
+
}
|
|
62
|
+
else if (node && typeof node === 'object') {
|
|
63
|
+
for (const [k, v] of Object.entries(node))
|
|
64
|
+
walk(v, [...trail, k]);
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
walk(apiKeys, []);
|
|
68
|
+
return collectSecretEnvValues(env);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Lists the files a scrub covers: session logs, their gzipped rotations and
|
|
72
|
+
* (optionally) the user's shell history files. Missing files are skipped.
|
|
73
|
+
*
|
|
74
|
+
* @param crewlyHome - CREWLY_HOME path
|
|
75
|
+
* @param homeDir - User home directory
|
|
76
|
+
* @param includeShellHistory - Include shell history files
|
|
77
|
+
* @returns Existing regular files to scrub
|
|
78
|
+
*/
|
|
79
|
+
export async function listScrubTargets(crewlyHome, homeDir, includeShellHistory) {
|
|
80
|
+
const logsDir = path.join(crewlyHome, LOG_ROTATION_CONSTANTS.LOGS_DIR);
|
|
81
|
+
const targets = [];
|
|
82
|
+
const listDir = async (dir, kind, accept) => {
|
|
83
|
+
const entries = await fs.readdir(dir, { withFileTypes: true }).catch(() => []);
|
|
84
|
+
for (const e of entries) {
|
|
85
|
+
if (e.isFile() && accept(e.name))
|
|
86
|
+
targets.push({ path: path.join(dir, e.name), kind });
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
await listDir(path.join(logsDir, LOG_ROTATION_CONSTANTS.SESSIONS_LOG_DIR), 'session-log', () => true);
|
|
90
|
+
await listDir(path.join(logsDir, LOG_ROTATION_CONSTANTS.ARCHIVE_DIR), 'session-log-archive', (n) => n.endsWith('.gz'));
|
|
91
|
+
if (includeShellHistory) {
|
|
92
|
+
const seen = new Set();
|
|
93
|
+
const candidates = SECRET_SCRUB_CONSTANTS.SHELL_HISTORY_FILES.map((f) => path.join(homeDir, f));
|
|
94
|
+
for (const p of candidates) {
|
|
95
|
+
if (seen.has(p))
|
|
96
|
+
continue;
|
|
97
|
+
seen.add(p);
|
|
98
|
+
const stat = await fs.lstat(p).catch(() => null);
|
|
99
|
+
if (stat?.isFile())
|
|
100
|
+
targets.push({ path: p, kind: 'shell-history' });
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return targets;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Writes a file atomically (temp file in the same directory + rename),
|
|
107
|
+
* keeping the original mode.
|
|
108
|
+
*
|
|
109
|
+
* @param filePath - Target path
|
|
110
|
+
* @param data - New content
|
|
111
|
+
* @param mode - File mode to keep
|
|
112
|
+
*/
|
|
113
|
+
async function writeAtomic(filePath, data, mode) {
|
|
114
|
+
const tmp = path.join(path.dirname(filePath), `.${path.basename(filePath)}.scrub-${process.pid}-${Date.now()}`);
|
|
115
|
+
try {
|
|
116
|
+
await fs.writeFile(tmp, data, { mode });
|
|
117
|
+
await fs.chmod(tmp, mode);
|
|
118
|
+
await fs.rename(tmp, filePath);
|
|
119
|
+
}
|
|
120
|
+
catch (err) {
|
|
121
|
+
await fs.rm(tmp, { force: true }).catch(() => undefined);
|
|
122
|
+
throw err;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Scrubs one file: counts secrets and, when applying, rewrites it if any
|
|
127
|
+
* were found.
|
|
128
|
+
*
|
|
129
|
+
* @param target - File to scrub
|
|
130
|
+
* @param knownSecrets - Exact values to mask
|
|
131
|
+
* @param apply - Rewrite the file
|
|
132
|
+
* @returns Per-file result (counts only)
|
|
133
|
+
*/
|
|
134
|
+
async function scrubFile(target, knownSecrets, apply) {
|
|
135
|
+
const result = { path: target.path, kind: target.kind, secrets: 0, rewritten: false };
|
|
136
|
+
try {
|
|
137
|
+
const stat = await fs.stat(target.path);
|
|
138
|
+
const raw = await fs.readFile(target.path);
|
|
139
|
+
const isGzip = target.kind === 'session-log-archive';
|
|
140
|
+
const bytes = isGzip ? gunzipSync(raw) : raw;
|
|
141
|
+
const { text, count } = redactSecretsWithCount(bytes.toString('latin1'), knownSecrets);
|
|
142
|
+
result.secrets = count;
|
|
143
|
+
if (apply && count > 0) {
|
|
144
|
+
const out = Buffer.from(text, 'latin1');
|
|
145
|
+
await writeAtomic(target.path, isGzip ? gzipSync(out) : out, stat.mode & 0o777);
|
|
146
|
+
result.rewritten = true;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
catch (err) {
|
|
150
|
+
// The message names the failure only (ENOENT, EACCES, bad gzip…), never content
|
|
151
|
+
result.error = err instanceof Error ? err.code ?? err.message : String(err);
|
|
152
|
+
}
|
|
153
|
+
return result;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Runs the scrub (dry run unless `apply`).
|
|
157
|
+
*
|
|
158
|
+
* @param options - See ScrubOptions
|
|
159
|
+
* @returns Totals and per-file counts — no secret values
|
|
160
|
+
*
|
|
161
|
+
* @example
|
|
162
|
+
* ```ts
|
|
163
|
+
* const dry = await scrubSecretsOnDisk(); // what would change
|
|
164
|
+
* const done = await scrubSecretsOnDisk({ apply: true });
|
|
165
|
+
* ```
|
|
166
|
+
*/
|
|
167
|
+
export async function scrubSecretsOnDisk(options = {}) {
|
|
168
|
+
const apply = options.apply === true;
|
|
169
|
+
const crewlyHome = options.crewlyHome ?? getCrewlyHomePath();
|
|
170
|
+
const homeDir = options.homeDir ?? os.homedir();
|
|
171
|
+
const knownSecrets = mergeSecretValues(collectSecretEnvValues(...(options.envs ?? [process.env])), await collectSettingsSecretValues(crewlyHome));
|
|
172
|
+
const targets = await listScrubTargets(crewlyHome, homeDir, options.includeShellHistory !== false);
|
|
173
|
+
const files = [];
|
|
174
|
+
for (const target of targets)
|
|
175
|
+
files.push(await scrubFile(target, knownSecrets, apply));
|
|
176
|
+
return {
|
|
177
|
+
applied: apply,
|
|
178
|
+
filesScanned: files.length,
|
|
179
|
+
filesWithSecrets: files.filter((f) => f.secrets > 0).length,
|
|
180
|
+
filesRewritten: files.filter((f) => f.rewritten).length,
|
|
181
|
+
secrets: files.reduce((n, f) => n + f.secrets, 0),
|
|
182
|
+
errors: files.filter((f) => f.error).length,
|
|
183
|
+
files,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Merges secret-value lists, de-duplicated by value, longest first.
|
|
188
|
+
*
|
|
189
|
+
* @param lists - Lists to merge
|
|
190
|
+
* @returns Merged list
|
|
191
|
+
*/
|
|
192
|
+
function mergeSecretValues(...lists) {
|
|
193
|
+
const byValue = new Map();
|
|
194
|
+
for (const list of lists)
|
|
195
|
+
for (const s of list)
|
|
196
|
+
if (!byValue.has(s.value))
|
|
197
|
+
byValue.set(s.value, s);
|
|
198
|
+
return Array.from(byValue.values()).sort((a, b) => b.value.length - a.value.length);
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=secret-scrub.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-scrub.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/security/secret-scrub.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -77,10 +77,12 @@ export declare class PtySessionBackend implements ISessionBackend {
|
|
|
77
77
|
*/
|
|
78
78
|
private sessionLogStreams;
|
|
79
79
|
/**
|
|
80
|
-
* Per session: the
|
|
81
|
-
*
|
|
80
|
+
* Per session: the streaming redactor every byte passes through before it
|
|
81
|
+
* is written to the session log. It masks secrets by name, by shape and by
|
|
82
|
+
* exact value (backend env + the session's spawn env), and holds back the
|
|
83
|
+
* tail of each chunk so a secret split across two chunks is still caught.
|
|
82
84
|
*/
|
|
83
|
-
private
|
|
85
|
+
private sessionLogRedactors;
|
|
84
86
|
/**
|
|
85
87
|
* Directory for persistent session log files
|
|
86
88
|
*/
|
|
@@ -449,12 +451,14 @@ export declare class PtySessionBackend implements ISessionBackend {
|
|
|
449
451
|
* Write ANSI-stripped, secret-redacted terminal data to a session's
|
|
450
452
|
* persistent log file.
|
|
451
453
|
*
|
|
452
|
-
*
|
|
453
|
-
*
|
|
454
|
-
*
|
|
455
|
-
*
|
|
456
|
-
*
|
|
457
|
-
*
|
|
454
|
+
* Everything goes through the session's StreamingSecretRedactor
|
|
455
|
+
* (utils/secret-redactor): `NAME=value` for secret names, raw token shapes
|
|
456
|
+
* (Google `AIza…`, OpenAI/Anthropic `sk-…`, Slack `xox…`/`xapp-…`, GitHub
|
|
457
|
+
* `ghp_…`/`github_pat_…`, …) and the exact value of every secret-named
|
|
458
|
+
* variable in the backend env or the session's spawn env. The redactor
|
|
459
|
+
* carries the unfinished last word into the next chunk, so a secret split
|
|
460
|
+
* across two output chunks is still masked; the carry is written when the
|
|
461
|
+
* log closes. This is a backstop: keys are no longer typed into sessions.
|
|
458
462
|
*
|
|
459
463
|
* @param sessionName - Name of the session
|
|
460
464
|
* @param data - Raw terminal data (with ANSI codes)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty-session-backend.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/session/pty/pty-session-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAMjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAY7D;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC9B,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAC;IACrB,4EAA4E;IAC5E,cAAc,EAAE,MAAM,CAAC;IACvB,4EAA4E;IAC5E,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,iBAAkB,YAAW,eAAe;IACxD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAsC;IAEtD;;OAEG;IACH,OAAO,CAAC,eAAe,CAA6C;IAEpE;;OAEG;IACH,OAAO,CAAC,qBAAqB,CAAkC;IAE/D;;OAEG;IACH,OAAO,CAAC,iBAAiB,CAA0C;IAEnE
|
|
1
|
+
{"version":3,"file":"pty-session-backend.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/session/pty/pty-session-backend.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,8 +17,8 @@ import { execSync } from 'child_process';
|
|
|
17
17
|
import * as fs from 'fs';
|
|
18
18
|
import * as path from 'path';
|
|
19
19
|
import * as os from 'os';
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
20
|
+
import { collectSecretEnvValues } from '../../../utils/secret-env.js';
|
|
21
|
+
import { StreamingSecretRedactor } from '../../../utils/secret-redactor.js';
|
|
22
22
|
/**
|
|
23
23
|
* PTY Session Backend implementation.
|
|
24
24
|
*
|
|
@@ -66,10 +66,12 @@ export class PtySessionBackend {
|
|
|
66
66
|
*/
|
|
67
67
|
sessionLogStreams = new Map();
|
|
68
68
|
/**
|
|
69
|
-
* Per session: the
|
|
70
|
-
*
|
|
69
|
+
* Per session: the streaming redactor every byte passes through before it
|
|
70
|
+
* is written to the session log. It masks secrets by name, by shape and by
|
|
71
|
+
* exact value (backend env + the session's spawn env), and holds back the
|
|
72
|
+
* tail of each chunk so a secret split across two chunks is still caught.
|
|
71
73
|
*/
|
|
72
|
-
|
|
74
|
+
sessionLogRedactors = new Map();
|
|
73
75
|
/**
|
|
74
76
|
* Directory for persistent session log files
|
|
75
77
|
*/
|
|
@@ -216,7 +218,7 @@ export class PtySessionBackend {
|
|
|
216
218
|
const terminalBuffer = new PtyTerminalBuffer(cols, rows);
|
|
217
219
|
// Open persistent session log file stream (append mode with restart separator)
|
|
218
220
|
this.openSessionLogStream(name);
|
|
219
|
-
this.
|
|
221
|
+
this.sessionLogRedactors.set(name, new StreamingSecretRedactor(collectSecretEnvValues(process.env, options.env)));
|
|
220
222
|
// Pipe session output to terminal buffer and record activity for idle detection.
|
|
221
223
|
// Recording here (at session creation) ensures activity is tracked even when
|
|
222
224
|
// no WebSocket client is viewing the terminal UI.
|
|
@@ -787,12 +789,14 @@ export class PtySessionBackend {
|
|
|
787
789
|
* Write ANSI-stripped, secret-redacted terminal data to a session's
|
|
788
790
|
* persistent log file.
|
|
789
791
|
*
|
|
790
|
-
*
|
|
791
|
-
*
|
|
792
|
-
*
|
|
793
|
-
*
|
|
794
|
-
*
|
|
795
|
-
*
|
|
792
|
+
* Everything goes through the session's StreamingSecretRedactor
|
|
793
|
+
* (utils/secret-redactor): `NAME=value` for secret names, raw token shapes
|
|
794
|
+
* (Google `AIza…`, OpenAI/Anthropic `sk-…`, Slack `xox…`/`xapp-…`, GitHub
|
|
795
|
+
* `ghp_…`/`github_pat_…`, …) and the exact value of every secret-named
|
|
796
|
+
* variable in the backend env or the session's spawn env. The redactor
|
|
797
|
+
* carries the unfinished last word into the next chunk, so a secret split
|
|
798
|
+
* across two output chunks is still masked; the carry is written when the
|
|
799
|
+
* log closes. This is a backstop: keys are no longer typed into sessions.
|
|
796
800
|
*
|
|
797
801
|
* @param sessionName - Name of the session
|
|
798
802
|
* @param data - Raw terminal data (with ANSI codes)
|
|
@@ -808,7 +812,14 @@ export class PtySessionBackend {
|
|
|
808
812
|
}
|
|
809
813
|
// Only write if there's content after stripping
|
|
810
814
|
if (stripped.length > 0) {
|
|
811
|
-
|
|
815
|
+
let redactor = this.sessionLogRedactors.get(sessionName);
|
|
816
|
+
if (!redactor) {
|
|
817
|
+
redactor = new StreamingSecretRedactor(collectSecretEnvValues(process.env));
|
|
818
|
+
this.sessionLogRedactors.set(sessionName, redactor);
|
|
819
|
+
}
|
|
820
|
+
const safe = redactor.push(stripped);
|
|
821
|
+
if (safe.length > 0)
|
|
822
|
+
stream.write(safe);
|
|
812
823
|
}
|
|
813
824
|
}
|
|
814
825
|
/**
|
|
@@ -818,9 +829,14 @@ export class PtySessionBackend {
|
|
|
818
829
|
*/
|
|
819
830
|
closeSessionLogStream(sessionName) {
|
|
820
831
|
const stream = this.sessionLogStreams.get(sessionName);
|
|
832
|
+
const redactor = this.sessionLogRedactors.get(sessionName);
|
|
821
833
|
if (stream) {
|
|
822
834
|
try {
|
|
823
835
|
if (!stream.destroyed) {
|
|
836
|
+
// Write the redactor's held-back tail (already masked) before closing
|
|
837
|
+
const tail = redactor?.flush() ?? '';
|
|
838
|
+
if (tail.length > 0)
|
|
839
|
+
stream.write(tail);
|
|
824
840
|
stream.end();
|
|
825
841
|
}
|
|
826
842
|
}
|
|
@@ -828,8 +844,8 @@ export class PtySessionBackend {
|
|
|
828
844
|
// Ignore close errors
|
|
829
845
|
}
|
|
830
846
|
this.sessionLogStreams.delete(sessionName);
|
|
831
|
-
this.sessionLogSecrets.delete(sessionName);
|
|
832
847
|
}
|
|
848
|
+
this.sessionLogRedactors.delete(sessionName);
|
|
833
849
|
}
|
|
834
850
|
}
|
|
835
851
|
//# sourceMappingURL=pty-session-backend.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty-session-backend.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/session/pty/pty-session-backend.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pty-session-backend.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/session/pty/pty-session-backend.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty-session.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/session/pty/pty-session.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAEhC,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"pty-session.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/session/pty/pty-session.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAEhC,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAqBhF,wBAAgB,0BAA0B,CACzC,IAAI,EAAE,OAAO,GAAG,CAAC,KAAK,GACpB,MAAM,IAAI,CAMZ;AAsED;;;;;;GAMG;AACH,cAAM,sBAAuB,SAAQ,KAAK;aAGxB,WAAW,EAAE;QAC5B,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;QAChC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KACjB;gBARD,OAAO,EAAE,MAAM,EACC,WAAW,EAAE;QAC5B,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;QAChC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KACjB;CAKF;AA4CD,uEAAuE;AACvE,wBAAgB,gCAAgC,IAAI,IAAI,CAEvD;AAgED,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAElC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,UAAW,YAAW,QAAQ;aAsDzB,IAAI,EAAE,MAAM;aACZ,GAAG,EAAE,MAAM;IAtD5B;;OAEG;IACH,OAAO,CAAC,UAAU,CAAW;IAE7B;;OAEG;IACH,OAAO,CAAC,aAAa,CAA0C;IAE/D;;OAEG;IACH,OAAO,CAAC,aAAa,CAA0C;IAE/D;;OAEG;IACH,OAAO,CAAC,MAAM,CAAS;IAEvB;;;;OAIG;IACH,OAAO,CAAC,SAAS,CAAS;IAE1B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAkB;IAEhC;;;;;;;;;;;;;;;;;;;OAmBG;gBAEc,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EAC3B,OAAO,EAAE,cAAc;IAyExB;;OAEG;IACH,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI;IAepD;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI;IAepD;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOzB;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAqBxC;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAkB3B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,QAAQ,IAAI,IAAI;IAqBhB;;;;;;;;;;;;;OAaG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IA+ChC;;;;OAIG;IACH,QAAQ,IAAI,OAAO;IAInB;;;;;;;;OAQG;IACH,mBAAmB,IAAI,OAAO;IAgB9B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA6C1B;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,WAAW;CAiBnB"}
|
|
@@ -13,6 +13,7 @@ import { PTY_CONSTANTS, API_SECURITY_CONSTANTS } from '../../../constants.js';
|
|
|
13
13
|
import { LoggerService } from '../../core/logger.service.js';
|
|
14
14
|
import { stripNestedClaudeSessionEnv } from '../../agent/runtime-session-recovery.js';
|
|
15
15
|
import { createBareModuleRequire } from '../../../utils/node-require.utils.js';
|
|
16
|
+
import { historyOffSpawnEnv } from '../../../utils/shell-history.js';
|
|
16
17
|
import { ensureSpawnHelperExecutable, findLoadedNodePtyDir, resolveNodePtyDir, } from './node-pty-install.utils.js';
|
|
17
18
|
/**
|
|
18
19
|
* Test affordance: lets `pty-session.test.ts` swap in a stub instead of
|
|
@@ -294,9 +295,13 @@ export class PtySession {
|
|
|
294
295
|
cols: options.cols ?? DEFAULT_TERMINAL_COLS,
|
|
295
296
|
rows: options.rows ?? DEFAULT_TERMINAL_ROWS,
|
|
296
297
|
});
|
|
297
|
-
// Merge process environment with session-specific environment
|
|
298
|
+
// Merge process environment with session-specific environment.
|
|
299
|
+
// History-off vars (HISTFILE=/dev/null, …) sit between the two so an
|
|
300
|
+
// agent shell never writes ~/.bash_history / ~/.zsh_history, while a
|
|
301
|
+
// caller that passes its own HISTFILE still wins.
|
|
298
302
|
const sessionEnv = {
|
|
299
303
|
...this.sanitizeEnv(process.env),
|
|
304
|
+
...historyOffSpawnEnv(),
|
|
300
305
|
...options.env,
|
|
301
306
|
// Set TERM for proper terminal emulation
|
|
302
307
|
TERM: 'xterm-256color',
|