@enterpriseai/cli 3.19.3 → 3.19.5

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.
Files changed (138) hide show
  1. package/README.md +47 -16
  2. package/dist/commands/agent.js +3 -1
  3. package/dist/commands/agent.js.map +1 -1
  4. package/dist/commands/chat.d.ts.map +1 -1
  5. package/dist/commands/chat.js +116 -35
  6. package/dist/commands/chat.js.map +1 -1
  7. package/dist/commands/eai-managed-source-move.js +2 -2
  8. package/dist/commands/eai-managed-source-move.js.map +1 -1
  9. package/dist/commands/env.js +15 -2
  10. package/dist/commands/env.js.map +1 -1
  11. package/dist/commands/gofer.js +8 -1
  12. package/dist/commands/gofer.js.map +1 -1
  13. package/dist/commands/init.d.ts +2 -0
  14. package/dist/commands/init.d.ts.map +1 -1
  15. package/dist/commands/init.js +172 -25
  16. package/dist/commands/init.js.map +1 -1
  17. package/dist/commands/login.d.ts.map +1 -1
  18. package/dist/commands/login.js +6 -2
  19. package/dist/commands/login.js.map +1 -1
  20. package/dist/commands/provision.d.ts.map +1 -1
  21. package/dist/commands/provision.js +25 -8
  22. package/dist/commands/provision.js.map +1 -1
  23. package/dist/commands/publicapi.d.ts.map +1 -1
  24. package/dist/commands/publicapi.js +14 -2
  25. package/dist/commands/publicapi.js.map +1 -1
  26. package/dist/commands/resources.d.ts.map +1 -1
  27. package/dist/commands/resources.js +41 -20
  28. package/dist/commands/resources.js.map +1 -1
  29. package/dist/commands/support.d.ts +6 -3
  30. package/dist/commands/support.d.ts.map +1 -1
  31. package/dist/commands/support.js +117 -25
  32. package/dist/commands/support.js.map +1 -1
  33. package/dist/commands/tenant.d.ts.map +1 -1
  34. package/dist/commands/tenant.js +45 -37
  35. package/dist/commands/tenant.js.map +1 -1
  36. package/dist/commands/types.d.ts +7 -0
  37. package/dist/commands/types.d.ts.map +1 -1
  38. package/dist/commands/types.js +118 -24
  39. package/dist/commands/types.js.map +1 -1
  40. package/dist/commands/verify.d.ts.map +1 -1
  41. package/dist/commands/verify.js +89 -44
  42. package/dist/commands/verify.js.map +1 -1
  43. package/dist/commands/vertical.d.ts.map +1 -1
  44. package/dist/commands/vertical.js +163 -15
  45. package/dist/commands/vertical.js.map +1 -1
  46. package/dist/index.js +22 -8
  47. package/dist/index.js.map +1 -1
  48. package/dist/lib/agent-guide.d.ts.map +1 -1
  49. package/dist/lib/agent-guide.js +18 -15
  50. package/dist/lib/agent-guide.js.map +1 -1
  51. package/dist/lib/api.d.ts +22 -2
  52. package/dist/lib/api.d.ts.map +1 -1
  53. package/dist/lib/api.js +149 -38
  54. package/dist/lib/api.js.map +1 -1
  55. package/dist/lib/cloud-env.d.ts +1 -0
  56. package/dist/lib/cloud-env.d.ts.map +1 -1
  57. package/dist/lib/cloud-env.js +28 -15
  58. package/dist/lib/cloud-env.js.map +1 -1
  59. package/dist/lib/config.d.ts +4 -2
  60. package/dist/lib/config.d.ts.map +1 -1
  61. package/dist/lib/config.js +5 -1
  62. package/dist/lib/config.js.map +1 -1
  63. package/dist/lib/eai-managed-source-client-types.d.ts +10 -0
  64. package/dist/lib/eai-managed-source-client-types.d.ts.map +1 -1
  65. package/dist/lib/eai-managed-source-operation-client.d.ts.map +1 -1
  66. package/dist/lib/eai-managed-source-operation-client.js +13 -1
  67. package/dist/lib/eai-managed-source-operation-client.js.map +1 -1
  68. package/dist/lib/error-codes.d.ts.map +1 -1
  69. package/dist/lib/error-codes.js +3 -2
  70. package/dist/lib/error-codes.js.map +1 -1
  71. package/dist/lib/gofer-installer.d.ts.map +1 -1
  72. package/dist/lib/gofer-installer.js +3 -1
  73. package/dist/lib/gofer-installer.js.map +1 -1
  74. package/dist/lib/object-type-export-filesystem.d.ts +13 -0
  75. package/dist/lib/object-type-export-filesystem.d.ts.map +1 -0
  76. package/dist/lib/object-type-export-filesystem.js +112 -0
  77. package/dist/lib/object-type-export-filesystem.js.map +1 -0
  78. package/dist/lib/object-type-export.d.ts +13 -0
  79. package/dist/lib/object-type-export.d.ts.map +1 -0
  80. package/dist/lib/object-type-export.js +173 -0
  81. package/dist/lib/object-type-export.js.map +1 -0
  82. package/dist/lib/output.d.ts.map +1 -1
  83. package/dist/lib/output.js +21 -1
  84. package/dist/lib/output.js.map +1 -1
  85. package/dist/lib/platform-diagnostics.d.ts +21 -0
  86. package/dist/lib/platform-diagnostics.d.ts.map +1 -0
  87. package/dist/lib/platform-diagnostics.js +50 -0
  88. package/dist/lib/platform-diagnostics.js.map +1 -0
  89. package/dist/lib/profile.d.ts +7 -2
  90. package/dist/lib/profile.d.ts.map +1 -1
  91. package/dist/lib/profile.js +139 -4
  92. package/dist/lib/profile.js.map +1 -1
  93. package/dist/lib/schema-builder.d.ts +2 -0
  94. package/dist/lib/schema-builder.d.ts.map +1 -1
  95. package/dist/lib/schema-builder.js +5 -0
  96. package/dist/lib/schema-builder.js.map +1 -1
  97. package/dist/lib/support-context.d.ts +4 -3
  98. package/dist/lib/support-context.d.ts.map +1 -1
  99. package/dist/lib/support-context.js +11 -13
  100. package/dist/lib/support-context.js.map +1 -1
  101. package/dist/lib/support-harness.d.ts +86 -0
  102. package/dist/lib/support-harness.d.ts.map +1 -0
  103. package/dist/lib/support-harness.js +471 -0
  104. package/dist/lib/support-harness.js.map +1 -0
  105. package/dist/lib/support-redaction.d.ts.map +1 -1
  106. package/dist/lib/support-redaction.js +221 -3
  107. package/dist/lib/support-redaction.js.map +1 -1
  108. package/dist/lib/support-report.d.ts +27 -5
  109. package/dist/lib/support-report.d.ts.map +1 -1
  110. package/dist/lib/support-report.js +75 -31
  111. package/dist/lib/support-report.js.map +1 -1
  112. package/package.json +8 -3
  113. package/resources/deploy/eai-app-template/producer-pin.json +4 -4
  114. package/resources/gofer/agents-skills/eai/SKILL.md +22 -21
  115. package/resources/gofer/claude-commands/eai.md +22 -21
  116. package/resources/gofer/claude-skills/eai/SKILL.md +22 -21
  117. package/resources/gofer/commands/0_gofer_start.md +26 -24
  118. package/resources/gofer/commands/5_gofer_implement.md +8 -4
  119. package/resources/gofer/commands/gofer_eai_first_run.md +27 -22
  120. package/resources/gofer/copilot-prompts/eai.prompt.md +22 -21
  121. package/resources/gofer/gemini/commands/gofer/eai.md +22 -21
  122. package/resources/gofer/gemini/commands/gofer/manifest.json +1 -1
  123. package/resources/gofer/github-skills/eai/SKILL.md +22 -21
  124. package/resources/gofer/grok-skills/eai/SKILL.md +22 -21
  125. package/resources/gofer/instruction-templates/base/agents-base.md +18 -17
  126. package/resources/gofer/instruction-templates/base/claude-base.md +0 -18
  127. package/resources/gofer/instruction-templates/base/copilot-base.md +18 -17
  128. package/resources/gofer/instruction-templates/gofer/gofer-claude.md +1 -7
  129. package/resources/gofer/node-scripts/generate-commands.mjs +37 -24
  130. package/resources/gofer/node-scripts/package-agent-plugin.mjs +55 -6
  131. package/resources/gofer/node-scripts/workspace-bootstrap-lib.mjs +8 -4
  132. package/resources/gofer/references/platform/README.md +8 -3
  133. package/resources/gofer/references/platform/eai-support.md +16 -16
  134. package/resources/gofer/specify-commands/0_gofer_start.md +26 -24
  135. package/resources/gofer/specify-commands/5_gofer_implement.md +8 -4
  136. package/resources/gofer/specify-commands/gofer_eai_first_run.md +27 -22
  137. package/resources/gofer/system-skills/eai/SKILL.md +22 -21
  138. package/resources/linked-sources.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"support-context.js","sourceRoot":"","sources":["../../src/lib/support-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"support-context.js","sourceRoot":"","sources":["../../src/lib/support-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ /** Raw `--context-file` bytes accepted before parsing. */
2
+ export declare const HARNESS_CONTEXT_MAX_RAW_BYTES: number;
3
+ /** UTF-8 size of the redacted `harness` block the website accepts. */
4
+ export declare const HARNESS_BLOCK_MAX_BYTES: number;
5
+ export declare const ORGANISATION_LOCATIONS: readonly ["apac", "emea", "americas"];
6
+ export type OrganisationLocation = typeof ORGANISATION_LOCATIONS[number];
7
+ export interface HarnessCommand {
8
+ readonly command: string;
9
+ readonly exitCode: number;
10
+ readonly errorCode?: string;
11
+ readonly reasonCode?: string;
12
+ readonly at?: string;
13
+ }
14
+ export interface HarnessError {
15
+ readonly code?: string;
16
+ readonly message: string;
17
+ readonly at?: string;
18
+ }
19
+ /** Bounded session summary written by the AI harness; the person reviews it before anything is sent. */
20
+ export interface HarnessContext {
21
+ readonly requestedByPerson: true;
22
+ readonly request: string;
23
+ readonly goal: string;
24
+ readonly summary: string;
25
+ readonly steps: readonly string[];
26
+ readonly commands: readonly HarnessCommand[];
27
+ readonly errors: readonly HarnessError[];
28
+ readonly attemptedFixes: readonly string[];
29
+ readonly filesTouched: readonly string[];
30
+ readonly truncated: boolean;
31
+ }
32
+ /** Safe failure for context-file problems; messages name fields, never values. */
33
+ export declare class SupportContextError extends Error {
34
+ readonly code: 'context_unreadable' | 'context_invalid' | 'context_too_large';
35
+ constructor(code: 'context_unreadable' | 'context_invalid' | 'context_too_large', message: string);
36
+ }
37
+ /** Only this private directory is eligible for automatic context deletion. */
38
+ export declare function ensureSupportContextDirectory(): string;
39
+ /** Allocates the only file transport eligible for automatic cleanup. */
40
+ export declare function createHarnessContextFile(): string;
41
+ /** SECURITY: Only the CLI-created marker and matching file identity authorize deletion. */
42
+ export declare function discardOwnedHarnessContext(source: string | undefined): void;
43
+ export declare function purgeStaleHarnessContexts(now?: number): void;
44
+ /**
45
+ * Reads the harness summary from stdin (`-`) or a path, bounded before parsing.
46
+ * Preview keeps the file so an approved rerun can read the same report.
47
+ * @returns The parsed JSON value, still unvalidated.
48
+ */
49
+ export declare function readHarnessContextSource(source: string, stdin?: NodeJS.ReadableStream): Promise<unknown>;
50
+ /**
51
+ * Validates the harness summary against the website contract and reports offending field names only.
52
+ * Missing lists default to empty and a missing `truncated` to false; everything else is strict.
53
+ */
54
+ export declare function validateHarnessContext(value: unknown): HarnessContext;
55
+ export interface HarnessRedactionScope {
56
+ readonly sensitiveValues: readonly string[];
57
+ /** Spellings of the home directory to hide (as configured and as resolved). */
58
+ readonly homes: readonly string[];
59
+ /** Spellings of the project root to hide; empty outside a project. */
60
+ readonly projectRoots: readonly string[];
61
+ }
62
+ /**
63
+ * The spellings of a path to hide: as given, resolved, and re-rooted under each spelling of a parent
64
+ * (a project under a symlinked home such as `/var/...` versus `/private/var/...` on macOS).
65
+ */
66
+ export declare function pathAliases(path: string | null | undefined, parents?: readonly string[]): string[];
67
+ /**
68
+ * Applies the shared credential redaction plus local path hiding (project root → `.`, home → `~`) to every text field,
69
+ * then trims each field back to its contract length.
70
+ */
71
+ export declare function redactHarnessContext(context: HarnessContext, scope: HarnessRedactionScope): HarnessContext;
72
+ /** Byte size the website measures: UTF-8 of the serialized block. */
73
+ export declare function harnessBlockBytes(context: HarnessContext): number;
74
+ /**
75
+ * Drops the oldest steps, then commands, then errors until the redacted block fits the website cap.
76
+ * Anything dropped marks the block truncated; a block that cannot fit fails closed.
77
+ */
78
+ export declare function fitHarnessContext(context: HarnessContext): HarnessContext;
79
+ /** Deterministic serialization (sorted keys, no whitespace) so the same report always yields the same digest. */
80
+ export declare function canonicalJson(value: unknown): string;
81
+ /** The consent binding: sha256 of the canonical redacted bundle, as the person approves it. */
82
+ export declare function bundleDigest(bundle: unknown): string;
83
+ /** Plain-text rendering of the whole redacted bundle, ending with the digest the person approves. */
84
+ export declare function renderSupportPreview(bundle: Record<string, unknown>, digest: string): string;
85
+ export declare function isOrganisationLocation(value: unknown): value is OrganisationLocation;
86
+ //# sourceMappingURL=support-harness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"support-harness.d.ts","sourceRoot":"","sources":["../../src/lib/support-harness.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,471 @@
1
+ import { createHash, randomUUID } from 'node:crypto';
2
+ import { chmodSync, closeSync, existsSync, lstatSync, mkdirSync, openSync, readdirSync, readFileSync, readSync, realpathSync, rmSync, statSync, writeFileSync } from 'node:fs';
3
+ import { homedir } from 'node:os';
4
+ import { isAbsolute, join, resolve, sep } from 'node:path';
5
+ import { redactSupportText } from './support-redaction.js';
6
+ /** Raw `--context-file` bytes accepted before parsing. */
7
+ export const HARNESS_CONTEXT_MAX_RAW_BYTES = 64 * 1024;
8
+ /** UTF-8 size of the redacted `harness` block the website accepts. */
9
+ export const HARNESS_BLOCK_MAX_BYTES = 32 * 1024;
10
+ export const ORGANISATION_LOCATIONS = ['apac', 'emea', 'americas'];
11
+ /** Safe failure for context-file problems; messages name fields, never values. */
12
+ export class SupportContextError extends Error {
13
+ code;
14
+ constructor(code, message) {
15
+ super(message);
16
+ this.code = code;
17
+ }
18
+ }
19
+ const LIMITS = {
20
+ request: 500, goal: 1000, summary: 4000, step: 500, steps: 50, command: 500, commands: 50,
21
+ errorCode: 40, reasonCode: 80, at: 40, code: 80, message: 1000, errors: 50,
22
+ attemptedFix: 500, attemptedFixes: 20, fileTouched: 260, filesTouched: 100,
23
+ };
24
+ const INT32_MIN = -2147483648;
25
+ const INT32_MAX = 2147483647;
26
+ function isRecord(value) {
27
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
28
+ }
29
+ async function readStdin(stdin) {
30
+ const chunks = [];
31
+ let bytes = 0;
32
+ for await (const chunk of stdin) {
33
+ const buffer = typeof chunk === 'string' ? Buffer.from(chunk, 'utf8') : Buffer.from(chunk);
34
+ bytes += buffer.byteLength;
35
+ if (bytes > HARNESS_CONTEXT_MAX_RAW_BYTES) {
36
+ throw new SupportContextError('context_too_large', `The context on stdin exceeds ${HARNESS_CONTEXT_MAX_RAW_BYTES} bytes.`);
37
+ }
38
+ chunks.push(buffer);
39
+ }
40
+ return Buffer.concat(chunks);
41
+ }
42
+ /** Only this private directory is eligible for automatic context deletion. */
43
+ export function ensureSupportContextDirectory() {
44
+ let directory = realpathSync(homedir());
45
+ for (const part of ['.eai', 'support', 'context']) {
46
+ directory = join(directory, part);
47
+ if (existsSync(directory) && lstatSync(directory).isSymbolicLink()) {
48
+ throw new SupportContextError('context_unreadable', 'The support context directory must not be a symlink.');
49
+ }
50
+ mkdirSync(directory, { recursive: true, mode: 0o700 });
51
+ }
52
+ if (realpathSync(directory) !== directory || lstatSync(directory).isSymbolicLink()) {
53
+ throw new SupportContextError('context_unreadable', 'The support context directory must not be a symlink.');
54
+ }
55
+ chmodSync(directory, 0o700);
56
+ return directory;
57
+ }
58
+ /** Allocates the only file transport eligible for automatic cleanup. */
59
+ export function createHarnessContextFile() {
60
+ const directory = ensureSupportContextDirectory();
61
+ const file = join(directory, `context-${randomUUID()}.json`);
62
+ const descriptor = openSync(file, 'wx', 0o600);
63
+ closeSync(descriptor);
64
+ try {
65
+ const metadata = lstatSync(file);
66
+ writeFileSync(`${file}.owner`, JSON.stringify({ schema: 'eai-support-context.v1', dev: metadata.dev, ino: metadata.ino }), { flag: 'wx', mode: 0o600 });
67
+ }
68
+ catch (error) {
69
+ rmSync(file, { force: true });
70
+ throw error;
71
+ }
72
+ return file;
73
+ }
74
+ function ownedContextFile(source) {
75
+ try {
76
+ const directory = ensureSupportContextDirectory();
77
+ const candidate = resolve(source);
78
+ const lexicalDirectory = resolve(homedir(), '.eai', 'support', 'context');
79
+ if (!candidate.startsWith(`${directory}${sep}`) && !candidate.startsWith(`${lexicalDirectory}${sep}`))
80
+ return undefined;
81
+ if (!/^context-[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}\.json$/.test(candidate.slice(candidate.lastIndexOf(sep) + 1)))
82
+ return undefined;
83
+ const marker = `${candidate}.owner`;
84
+ const markerMetadata = lstatSync(marker);
85
+ if (!markerMetadata.isFile() || markerMetadata.isSymbolicLink() || markerMetadata.size > 512)
86
+ return undefined;
87
+ if (typeof process.getuid === 'function' && markerMetadata.uid !== process.getuid())
88
+ return undefined;
89
+ const ownership = JSON.parse(readFileSync(marker, 'utf8'));
90
+ if (!isRecord(ownership) || ownership.schema !== 'eai-support-context.v1')
91
+ return undefined;
92
+ const metadata = lstatSync(candidate);
93
+ if (ownership.dev !== metadata.dev || ownership.ino !== metadata.ino)
94
+ return undefined;
95
+ if (!metadata.isFile() || metadata.isSymbolicLink())
96
+ return undefined;
97
+ if (typeof process.getuid === 'function' && metadata.uid !== process.getuid())
98
+ return undefined;
99
+ const actual = realpathSync(candidate);
100
+ return actual.startsWith(`${directory}${sep}`) ? candidate : undefined;
101
+ }
102
+ catch {
103
+ return undefined;
104
+ }
105
+ }
106
+ /** SECURITY: Only the CLI-created marker and matching file identity authorize deletion. */
107
+ export function discardOwnedHarnessContext(source) {
108
+ if (!source || source === '-')
109
+ return;
110
+ const file = ownedContextFile(source);
111
+ if (!file)
112
+ return;
113
+ try {
114
+ rmSync(file, { force: true });
115
+ rmSync(`${file}.owner`, { force: true });
116
+ }
117
+ catch {
118
+ process.stderr.write('The owned support context file could not be deleted; remove it yourself.\n');
119
+ }
120
+ }
121
+ export function purgeStaleHarnessContexts(now = Date.now()) {
122
+ const directory = ensureSupportContextDirectory();
123
+ for (const entry of readdirSync(directory)) {
124
+ const file = ownedContextFile(join(directory, entry));
125
+ if (file && now - statSync(file).mtimeMs > 24 * 60 * 60 * 1000)
126
+ discardOwnedHarnessContext(file);
127
+ }
128
+ }
129
+ /**
130
+ * Reads the harness summary from stdin (`-`) or a path, bounded before parsing.
131
+ * Preview keeps the file so an approved rerun can read the same report.
132
+ * @returns The parsed JSON value, still unvalidated.
133
+ */
134
+ export async function readHarnessContextSource(source, stdin = process.stdin) {
135
+ let raw;
136
+ if (source === '-') {
137
+ try {
138
+ raw = await readStdin(stdin);
139
+ }
140
+ catch (error) {
141
+ if (error instanceof SupportContextError)
142
+ throw error;
143
+ throw new SupportContextError('context_unreadable', 'The context on stdin could not be read.');
144
+ }
145
+ }
146
+ else {
147
+ let metadata;
148
+ try {
149
+ metadata = statSync(source);
150
+ }
151
+ catch {
152
+ throw new SupportContextError('context_unreadable', 'The context file could not be read. Check the --context-file path.');
153
+ }
154
+ if (!metadata.isFile())
155
+ throw new SupportContextError('context_unreadable', 'The context file must be a regular file.');
156
+ try {
157
+ if (metadata.size > HARNESS_CONTEXT_MAX_RAW_BYTES) {
158
+ throw new SupportContextError('context_too_large', `The context file exceeds ${HARNESS_CONTEXT_MAX_RAW_BYTES} bytes.`);
159
+ }
160
+ const descriptor = openSync(source, 'r');
161
+ try {
162
+ const buffer = Buffer.alloc(HARNESS_CONTEXT_MAX_RAW_BYTES + 1);
163
+ let bytes = 0;
164
+ while (bytes < buffer.length) {
165
+ const received = readSync(descriptor, buffer, bytes, buffer.length - bytes, null);
166
+ if (received === 0)
167
+ break;
168
+ bytes += received;
169
+ }
170
+ if (bytes > HARNESS_CONTEXT_MAX_RAW_BYTES)
171
+ throw new SupportContextError('context_too_large', 'The context file exceeds the raw byte limit.');
172
+ raw = buffer.subarray(0, bytes);
173
+ }
174
+ finally {
175
+ closeSync(descriptor);
176
+ }
177
+ }
178
+ catch (error) {
179
+ if (error instanceof SupportContextError)
180
+ throw error;
181
+ throw new SupportContextError('context_unreadable', 'The context file could not be read. Check the --context-file path.');
182
+ }
183
+ }
184
+ try {
185
+ return JSON.parse(raw.toString('utf8'));
186
+ }
187
+ catch {
188
+ throw new SupportContextError('context_invalid', 'The context must be a JSON object.');
189
+ }
190
+ }
191
+ class FieldIssues {
192
+ names = [];
193
+ add(name) { this.names.push(name); }
194
+ text(limit, name, value, required) {
195
+ if (value === undefined) {
196
+ if (required)
197
+ this.add(name);
198
+ return undefined;
199
+ }
200
+ if (typeof value !== 'string' || !value.trim() || value.length > limit) {
201
+ this.add(name);
202
+ return undefined;
203
+ }
204
+ return value;
205
+ }
206
+ datetime(name, value) {
207
+ if (value === undefined)
208
+ return undefined;
209
+ if (typeof value !== 'string' || value.length > LIMITS.at || !Number.isFinite(Date.parse(value))) {
210
+ this.add(name);
211
+ return undefined;
212
+ }
213
+ return new Date(value).toISOString();
214
+ }
215
+ list(name, value, limit, item) {
216
+ if (value === undefined)
217
+ return [];
218
+ if (!Array.isArray(value) || value.length > limit) {
219
+ this.add(name);
220
+ return [];
221
+ }
222
+ return value.map((entry, index) => item(entry, `${name}[${index}]`)).filter((entry) => entry !== undefined);
223
+ }
224
+ unknownKeys(path, record, allowed) {
225
+ for (const key of Object.keys(record)) {
226
+ if (!allowed.includes(key))
227
+ this.add(`${path || 'context'} (unexpected field)`);
228
+ }
229
+ }
230
+ }
231
+ function isAbsoluteOrHomePath(value) {
232
+ return isAbsolute(value) || /^(?:[A-Za-z]:[\\/]|\\\\|\/|~)/.test(value);
233
+ }
234
+ /**
235
+ * Validates the harness summary against the website contract and reports offending field names only.
236
+ * Missing lists default to empty and a missing `truncated` to false; everything else is strict.
237
+ */
238
+ export function validateHarnessContext(value) {
239
+ const issues = new FieldIssues();
240
+ if (!isRecord(value))
241
+ throw new SupportContextError('context_invalid', 'The context must be a JSON object.');
242
+ issues.unknownKeys('', value, ['requestedByPerson', 'request', 'goal', 'summary', 'steps', 'commands', 'errors', 'attemptedFixes', 'filesTouched', 'truncated']);
243
+ if (value.requestedByPerson !== true)
244
+ issues.add('requestedByPerson');
245
+ const request = issues.text(LIMITS.request, 'request', value.request, true);
246
+ const goal = issues.text(LIMITS.goal, 'goal', value.goal, true);
247
+ const summary = issues.text(LIMITS.summary, 'summary', value.summary, true);
248
+ const steps = issues.list('steps', value.steps, LIMITS.steps, (entry, path) => issues.text(LIMITS.step, path, entry, true));
249
+ const commands = issues.list('commands', value.commands, LIMITS.commands, (entry, path) => {
250
+ if (!isRecord(entry)) {
251
+ issues.add(path);
252
+ return undefined;
253
+ }
254
+ issues.unknownKeys(path, entry, ['command', 'exitCode', 'errorCode', 'reasonCode', 'at']);
255
+ const command = issues.text(LIMITS.command, `${path}.command`, entry.command, true);
256
+ const exitCode = entry.exitCode;
257
+ if (typeof exitCode !== 'number' || !Number.isInteger(exitCode) || exitCode < INT32_MIN || exitCode > INT32_MAX) {
258
+ issues.add(`${path}.exitCode`);
259
+ }
260
+ const errorCode = issues.text(LIMITS.errorCode, `${path}.errorCode`, entry.errorCode, false);
261
+ const reasonCode = issues.text(LIMITS.reasonCode, `${path}.reasonCode`, entry.reasonCode, false);
262
+ const at = issues.datetime(`${path}.at`, entry.at);
263
+ return command === undefined || typeof exitCode !== 'number' ? undefined : {
264
+ command, exitCode,
265
+ ...(errorCode === undefined ? {} : { errorCode }),
266
+ ...(reasonCode === undefined ? {} : { reasonCode }),
267
+ ...(at === undefined ? {} : { at }),
268
+ };
269
+ });
270
+ const errors = issues.list('errors', value.errors, LIMITS.errors, (entry, path) => {
271
+ if (!isRecord(entry)) {
272
+ issues.add(path);
273
+ return undefined;
274
+ }
275
+ issues.unknownKeys(path, entry, ['code', 'message', 'at']);
276
+ const code = issues.text(LIMITS.code, `${path}.code`, entry.code, false);
277
+ const message = issues.text(LIMITS.message, `${path}.message`, entry.message, true);
278
+ const at = issues.datetime(`${path}.at`, entry.at);
279
+ return message === undefined ? undefined : {
280
+ ...(code === undefined ? {} : { code }), message, ...(at === undefined ? {} : { at }),
281
+ };
282
+ });
283
+ const attemptedFixes = issues.list('attemptedFixes', value.attemptedFixes, LIMITS.attemptedFixes, (entry, path) => issues.text(LIMITS.attemptedFix, path, entry, true));
284
+ const filesTouched = issues.list('filesTouched', value.filesTouched, LIMITS.filesTouched, (entry, path) => {
285
+ const file = issues.text(LIMITS.fileTouched, path, entry, true);
286
+ if (file !== undefined && (isAbsoluteOrHomePath(file) || /^[a-z][a-z0-9+.-]*:/i.test(file) || file.split(/[\\/]/).includes('..'))) {
287
+ issues.add(`${path} (absolute path)`);
288
+ return undefined;
289
+ }
290
+ return file;
291
+ });
292
+ if (value.truncated !== undefined && typeof value.truncated !== 'boolean')
293
+ issues.add('truncated');
294
+ if (issues.names.length > 0 || request === undefined || goal === undefined || summary === undefined) {
295
+ throw new SupportContextError('context_invalid', `Invalid harness context fields: ${issues.names.join(', ')}.`);
296
+ }
297
+ return {
298
+ requestedByPerson: true, request, goal, summary,
299
+ steps, commands, errors, attemptedFixes, filesTouched, truncated: value.truncated === true,
300
+ };
301
+ }
302
+ function realpathOrSelf(path) {
303
+ try {
304
+ return realpathSync(path);
305
+ }
306
+ catch {
307
+ return path;
308
+ }
309
+ }
310
+ /**
311
+ * The spellings of a path to hide: as given, resolved, and re-rooted under each spelling of a parent
312
+ * (a project under a symlinked home such as `/var/...` versus `/private/var/...` on macOS).
313
+ */
314
+ export function pathAliases(path, parents = []) {
315
+ if (!path)
316
+ return [];
317
+ const resolved = realpathOrSelf(path);
318
+ const aliases = new Set([path, resolved]);
319
+ if (process.env.PWD && realpathOrSelf(process.env.PWD) === resolved)
320
+ aliases.add(process.env.PWD);
321
+ for (const parent of parents) {
322
+ const resolvedParent = realpathOrSelf(parent);
323
+ if (resolved === resolvedParent)
324
+ aliases.add(parent);
325
+ else if (resolved.startsWith(resolvedParent.endsWith(sep) ? resolvedParent : `${resolvedParent}${sep}`)) {
326
+ aliases.add(`${parent.endsWith(sep) ? parent.slice(0, -1) : parent}${resolved.slice(resolvedParent.length)}`);
327
+ }
328
+ }
329
+ return [...aliases];
330
+ }
331
+ function replacePathPrefix(text, prefix, replacement) {
332
+ const trimmed = prefix.replace(/[\\/]+$/, '');
333
+ if (!trimmed)
334
+ return text;
335
+ const escaped = trimmed.split(/[\\/]/).map(part => part.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')).join('[\\\\/]');
336
+ return text.replace(new RegExp(`${escaped}(?=$|[\\\\/\\s"'\x60:),;\\]}>?])`, /^[a-z]:/i.test(trimmed) ? 'gi' : 'g'), replacement);
337
+ }
338
+ /**
339
+ * Applies the shared credential redaction plus local path hiding (project root → `.`, home → `~`) to every text field,
340
+ * then trims each field back to its contract length.
341
+ */
342
+ export function redactHarnessContext(context, scope) {
343
+ const safe = (value, limit) => {
344
+ let text = value;
345
+ for (const root of scope.projectRoots)
346
+ text = replacePathPrefix(text, root, '.');
347
+ for (const home of scope.homes)
348
+ text = replacePathPrefix(text, home, '~');
349
+ return redactSupportText(text, scope.sensitiveValues).slice(0, limit);
350
+ };
351
+ return {
352
+ requestedByPerson: true,
353
+ request: safe(context.request, LIMITS.request),
354
+ goal: safe(context.goal, LIMITS.goal),
355
+ summary: safe(context.summary, LIMITS.summary),
356
+ steps: context.steps.map(step => safe(step, LIMITS.step)),
357
+ commands: context.commands.map(command => ({
358
+ ...command,
359
+ command: safe(command.command, LIMITS.command),
360
+ ...(command.errorCode === undefined ? {} : { errorCode: safe(command.errorCode, LIMITS.errorCode) }),
361
+ ...(command.reasonCode === undefined ? {} : { reasonCode: safe(command.reasonCode, LIMITS.reasonCode) }),
362
+ })),
363
+ errors: context.errors.map(error => ({
364
+ ...error,
365
+ ...(error.code === undefined ? {} : { code: safe(error.code, LIMITS.code) }),
366
+ message: safe(error.message, LIMITS.message),
367
+ })),
368
+ attemptedFixes: context.attemptedFixes.map(fix => safe(fix, LIMITS.attemptedFix)),
369
+ filesTouched: context.filesTouched.map(file => safe(file, LIMITS.fileTouched)),
370
+ truncated: context.truncated,
371
+ };
372
+ }
373
+ /** Byte size the website measures: UTF-8 of the serialized block. */
374
+ export function harnessBlockBytes(context) {
375
+ return Buffer.byteLength(JSON.stringify(context), 'utf8');
376
+ }
377
+ /**
378
+ * Drops the oldest steps, then commands, then errors until the redacted block fits the website cap.
379
+ * Anything dropped marks the block truncated; a block that cannot fit fails closed.
380
+ */
381
+ export function fitHarnessContext(context) {
382
+ const steps = [...context.steps];
383
+ const commands = [...context.commands];
384
+ const errors = [...context.errors];
385
+ let truncated = context.truncated;
386
+ let current = { ...context, steps, commands, errors, truncated };
387
+ while (harnessBlockBytes(current) > HARNESS_BLOCK_MAX_BYTES) {
388
+ if (steps.length > 0)
389
+ steps.shift();
390
+ else if (commands.length > 0)
391
+ commands.shift();
392
+ else if (errors.length > 0)
393
+ errors.shift();
394
+ else
395
+ throw new SupportContextError('context_too_large', `The session summary exceeds ${HARNESS_BLOCK_MAX_BYTES} bytes after redaction. Shorten the summary, goal, request, attempted fixes or files touched.`);
396
+ truncated = true;
397
+ current = { ...context, steps, commands, errors, truncated };
398
+ }
399
+ return current;
400
+ }
401
+ function sortKeys(value) {
402
+ if (Array.isArray(value))
403
+ return value.map(sortKeys);
404
+ if (isRecord(value)) {
405
+ return Object.fromEntries(Object.keys(value).sort().filter(key => value[key] !== undefined).map(key => [key, sortKeys(value[key])]));
406
+ }
407
+ return value;
408
+ }
409
+ /** Deterministic serialization (sorted keys, no whitespace) so the same report always yields the same digest. */
410
+ export function canonicalJson(value) {
411
+ return JSON.stringify(sortKeys(value));
412
+ }
413
+ /** The consent binding: sha256 of the canonical redacted bundle, as the person approves it. */
414
+ export function bundleDigest(bundle) {
415
+ return createHash('sha256').update(canonicalJson(bundle), 'utf8').digest('hex');
416
+ }
417
+ const LABELS = {
418
+ source: 'Source', tool: 'Reporting tool', name: 'Name', version: 'Version', cli: 'Failing CLI command',
419
+ command: 'Command', exitCode: 'Exit code', errorCode: 'Error code', reasonCode: 'Reason', cliVersion: 'CLI version',
420
+ service: 'Service', category: 'Category', summary: 'Summary', description: 'Description', os: 'Operating system',
421
+ environment: 'Environment', tenantId: 'Workspace id', tenantName: 'Workspace', appId: 'App id', appName: 'App',
422
+ error: 'Error', occurredAt: 'Occurred at', organisationLocation: 'Organisation location',
423
+ harness: 'Session summary from the AI assistant', requestedByPerson: 'Requested by the person', request: 'Request',
424
+ goal: 'Goal', steps: 'Steps', commands: 'Commands run', errors: 'Errors seen', attemptedFixes: 'Attempted fixes',
425
+ filesTouched: 'Files touched', truncated: 'Truncated to fit', at: 'At', code: 'Code', message: 'Message',
426
+ };
427
+ function renderValue(key, value, indent, lines) {
428
+ const label = LABELS[key] ?? key;
429
+ if (value === undefined)
430
+ return;
431
+ if (Array.isArray(value)) {
432
+ lines.push(`${indent}${label}:${value.length === 0 ? ' none' : ''}`);
433
+ value.forEach((item, index) => {
434
+ if (isRecord(item)) {
435
+ lines.push(`${indent} ${index + 1}.`);
436
+ for (const [childKey, child] of Object.entries(item))
437
+ renderValue(childKey, child, `${indent} `, lines);
438
+ }
439
+ else {
440
+ lines.push(`${indent} ${index + 1}. ${String(item)}`);
441
+ }
442
+ });
443
+ return;
444
+ }
445
+ if (isRecord(value)) {
446
+ lines.push(`${indent}${label}:`);
447
+ for (const [childKey, child] of Object.entries(value))
448
+ renderValue(childKey, child, `${indent} `, lines);
449
+ return;
450
+ }
451
+ const text = typeof value === 'boolean' ? (value ? 'yes' : 'no') : String(value);
452
+ if (text.includes('\n')) {
453
+ lines.push(`${indent}${label}:`);
454
+ for (const line of text.split('\n'))
455
+ lines.push(`${indent} ${line}`);
456
+ return;
457
+ }
458
+ lines.push(`${indent}${label}: ${text}`);
459
+ }
460
+ /** Plain-text rendering of the whole redacted bundle, ending with the digest the person approves. */
461
+ export function renderSupportPreview(bundle, digest) {
462
+ const lines = ['EAI support report (redacted). Review every line before approving.'];
463
+ for (const [key, value] of Object.entries(bundle))
464
+ renderValue(key, value, '', lines);
465
+ lines.push('', `Report digest: ${digest}`);
466
+ return lines.join('\n');
467
+ }
468
+ export function isOrganisationLocation(value) {
469
+ return typeof value === 'string' && ORGANISATION_LOCATIONS.includes(value);
470
+ }
471
+ //# sourceMappingURL=support-harness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"support-harness.js","sourceRoot":"","sources":["../../src/lib/support-harness.ts"],"names":[],"mappings":"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"}