@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.
- package/README.md +47 -16
- package/dist/commands/agent.js +3 -1
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +116 -35
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/eai-managed-source-move.js +2 -2
- package/dist/commands/eai-managed-source-move.js.map +1 -1
- package/dist/commands/env.js +15 -2
- package/dist/commands/env.js.map +1 -1
- package/dist/commands/gofer.js +8 -1
- package/dist/commands/gofer.js.map +1 -1
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +172 -25
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +6 -2
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/provision.d.ts.map +1 -1
- package/dist/commands/provision.js +25 -8
- package/dist/commands/provision.js.map +1 -1
- package/dist/commands/publicapi.d.ts.map +1 -1
- package/dist/commands/publicapi.js +14 -2
- package/dist/commands/publicapi.js.map +1 -1
- package/dist/commands/resources.d.ts.map +1 -1
- package/dist/commands/resources.js +41 -20
- package/dist/commands/resources.js.map +1 -1
- package/dist/commands/support.d.ts +6 -3
- package/dist/commands/support.d.ts.map +1 -1
- package/dist/commands/support.js +117 -25
- package/dist/commands/support.js.map +1 -1
- package/dist/commands/tenant.d.ts.map +1 -1
- package/dist/commands/tenant.js +45 -37
- package/dist/commands/tenant.js.map +1 -1
- package/dist/commands/types.d.ts +7 -0
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/commands/types.js +118 -24
- package/dist/commands/types.js.map +1 -1
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +89 -44
- package/dist/commands/verify.js.map +1 -1
- package/dist/commands/vertical.d.ts.map +1 -1
- package/dist/commands/vertical.js +163 -15
- package/dist/commands/vertical.js.map +1 -1
- package/dist/index.js +22 -8
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-guide.d.ts.map +1 -1
- package/dist/lib/agent-guide.js +18 -15
- package/dist/lib/agent-guide.js.map +1 -1
- package/dist/lib/api.d.ts +22 -2
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +149 -38
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/cloud-env.d.ts +1 -0
- package/dist/lib/cloud-env.d.ts.map +1 -1
- package/dist/lib/cloud-env.js +28 -15
- package/dist/lib/cloud-env.js.map +1 -1
- package/dist/lib/config.d.ts +4 -2
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +5 -1
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/eai-managed-source-client-types.d.ts +10 -0
- package/dist/lib/eai-managed-source-client-types.d.ts.map +1 -1
- package/dist/lib/eai-managed-source-operation-client.d.ts.map +1 -1
- package/dist/lib/eai-managed-source-operation-client.js +13 -1
- package/dist/lib/eai-managed-source-operation-client.js.map +1 -1
- package/dist/lib/error-codes.d.ts.map +1 -1
- package/dist/lib/error-codes.js +3 -2
- package/dist/lib/error-codes.js.map +1 -1
- package/dist/lib/gofer-installer.d.ts.map +1 -1
- package/dist/lib/gofer-installer.js +3 -1
- package/dist/lib/gofer-installer.js.map +1 -1
- package/dist/lib/object-type-export-filesystem.d.ts +13 -0
- package/dist/lib/object-type-export-filesystem.d.ts.map +1 -0
- package/dist/lib/object-type-export-filesystem.js +112 -0
- package/dist/lib/object-type-export-filesystem.js.map +1 -0
- package/dist/lib/object-type-export.d.ts +13 -0
- package/dist/lib/object-type-export.d.ts.map +1 -0
- package/dist/lib/object-type-export.js +173 -0
- package/dist/lib/object-type-export.js.map +1 -0
- package/dist/lib/output.d.ts.map +1 -1
- package/dist/lib/output.js +21 -1
- package/dist/lib/output.js.map +1 -1
- package/dist/lib/platform-diagnostics.d.ts +21 -0
- package/dist/lib/platform-diagnostics.d.ts.map +1 -0
- package/dist/lib/platform-diagnostics.js +50 -0
- package/dist/lib/platform-diagnostics.js.map +1 -0
- package/dist/lib/profile.d.ts +7 -2
- package/dist/lib/profile.d.ts.map +1 -1
- package/dist/lib/profile.js +139 -4
- package/dist/lib/profile.js.map +1 -1
- package/dist/lib/schema-builder.d.ts +2 -0
- package/dist/lib/schema-builder.d.ts.map +1 -1
- package/dist/lib/schema-builder.js +5 -0
- package/dist/lib/schema-builder.js.map +1 -1
- package/dist/lib/support-context.d.ts +4 -3
- package/dist/lib/support-context.d.ts.map +1 -1
- package/dist/lib/support-context.js +11 -13
- package/dist/lib/support-context.js.map +1 -1
- package/dist/lib/support-harness.d.ts +86 -0
- package/dist/lib/support-harness.d.ts.map +1 -0
- package/dist/lib/support-harness.js +471 -0
- package/dist/lib/support-harness.js.map +1 -0
- package/dist/lib/support-redaction.d.ts.map +1 -1
- package/dist/lib/support-redaction.js +221 -3
- package/dist/lib/support-redaction.js.map +1 -1
- package/dist/lib/support-report.d.ts +27 -5
- package/dist/lib/support-report.d.ts.map +1 -1
- package/dist/lib/support-report.js +75 -31
- package/dist/lib/support-report.js.map +1 -1
- package/package.json +8 -3
- package/resources/deploy/eai-app-template/producer-pin.json +4 -4
- package/resources/gofer/agents-skills/eai/SKILL.md +22 -21
- package/resources/gofer/claude-commands/eai.md +22 -21
- package/resources/gofer/claude-skills/eai/SKILL.md +22 -21
- package/resources/gofer/commands/0_gofer_start.md +26 -24
- package/resources/gofer/commands/5_gofer_implement.md +8 -4
- package/resources/gofer/commands/gofer_eai_first_run.md +27 -22
- package/resources/gofer/copilot-prompts/eai.prompt.md +22 -21
- package/resources/gofer/gemini/commands/gofer/eai.md +22 -21
- package/resources/gofer/gemini/commands/gofer/manifest.json +1 -1
- package/resources/gofer/github-skills/eai/SKILL.md +22 -21
- package/resources/gofer/grok-skills/eai/SKILL.md +22 -21
- package/resources/gofer/instruction-templates/base/agents-base.md +18 -17
- package/resources/gofer/instruction-templates/base/claude-base.md +0 -18
- package/resources/gofer/instruction-templates/base/copilot-base.md +18 -17
- package/resources/gofer/instruction-templates/gofer/gofer-claude.md +1 -7
- package/resources/gofer/node-scripts/generate-commands.mjs +37 -24
- package/resources/gofer/node-scripts/package-agent-plugin.mjs +55 -6
- package/resources/gofer/node-scripts/workspace-bootstrap-lib.mjs +8 -4
- package/resources/gofer/references/platform/README.md +8 -3
- package/resources/gofer/references/platform/eai-support.md +16 -16
- package/resources/gofer/specify-commands/0_gofer_start.md +26 -24
- package/resources/gofer/specify-commands/5_gofer_implement.md +8 -4
- package/resources/gofer/specify-commands/gofer_eai_first_run.md +27 -22
- package/resources/gofer/system-skills/eai/SKILL.md +22 -21
- package/resources/linked-sources.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"support-redaction.d.ts","sourceRoot":"","sources":["../../src/lib/support-redaction.ts"],"names":[],"mappings":"AAEA,0GAA0G;AAC1G,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE1D;
|
|
1
|
+
{"version":3,"file":"support-redaction.d.ts","sourceRoot":"","sources":["../../src/lib/support-redaction.ts"],"names":[],"mappings":"AAEA,0GAA0G;AAC1G,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE1D;AAwLD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,GAAE,SAAS,MAAM,EAAO,GAAG,MAAM,CAkB/F;AAED,mIAAmI;AACnI,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,eAAe,GAAE,SAAS,MAAM,EAAO,GAAG,CAAC,CAS3F"}
|
|
@@ -1,8 +1,227 @@
|
|
|
1
|
-
const sensitiveKey = /token|secret|password|passwd|pwd|api[_-]?key|account[_-]?key|authorization|cookie|credential|connection[_-]?string|private[_-]?key/i;
|
|
1
|
+
const sensitiveKey = /token|secret|password|passwd|pwd|api[_-]?key|access[_-]?key(?:[_-]?id)?|account[_-]?key|authorization|cookie|credential|connection[_-]?string|private[_-]?key/i;
|
|
2
2
|
/** A key-name heuristic; opaque credentials under unrelated keys still need explicit sensitive values. */
|
|
3
3
|
export function isSupportSensitiveKey(key) {
|
|
4
4
|
return sensitiveKey.test(key);
|
|
5
5
|
}
|
|
6
|
+
// SECURITY: decode only candidate key spelling for recognition; reviewed text and value boundaries remain literal.
|
|
7
|
+
function decodeCredentialKey(key) {
|
|
8
|
+
const parts = [];
|
|
9
|
+
let copiedUntil = 0;
|
|
10
|
+
let index = 0;
|
|
11
|
+
while (index < key.length) {
|
|
12
|
+
if (key[index] !== '\\') {
|
|
13
|
+
index++;
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
const runStart = index;
|
|
17
|
+
while (key[index] === '\\')
|
|
18
|
+
index++;
|
|
19
|
+
const code = key.slice(index + 1, index + 5);
|
|
20
|
+
if (key[index] === 'u' && /^[0-9a-f]{4}$/i.test(code)) {
|
|
21
|
+
parts.push(key.slice(copiedUntil, runStart), String.fromCharCode(Number.parseInt(code, 16)));
|
|
22
|
+
index += 5;
|
|
23
|
+
copiedUntil = index;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
parts.push(key.slice(copiedUntil));
|
|
27
|
+
return parts.join('');
|
|
28
|
+
}
|
|
29
|
+
function redactCredentialValues(text) {
|
|
30
|
+
const escaped = new Uint8Array(text.length);
|
|
31
|
+
const quoteEnds = new Uint32Array(text.length);
|
|
32
|
+
const closingEnds = new Uint32Array(text.length);
|
|
33
|
+
const quotes = [];
|
|
34
|
+
let slashRun = 0;
|
|
35
|
+
for (let index = 0; index < text.length; index++) {
|
|
36
|
+
escaped[index] = slashRun % 2;
|
|
37
|
+
if (text[index] === '"' || text[index] === "'") {
|
|
38
|
+
const depth = slashRun % 2 ? slashRun : 0;
|
|
39
|
+
quotes.push({ start: index - slashRun, end: index + 1, key: `${text[index]}:${depth}` });
|
|
40
|
+
}
|
|
41
|
+
slashRun = text[index] === '\\' ? slashRun + 1 : 0;
|
|
42
|
+
}
|
|
43
|
+
// SECURITY: serialized wrappers close at their own escape depth; inner quotes cannot expose a value tail.
|
|
44
|
+
const nearestQuoteEnd = new Map();
|
|
45
|
+
for (let index = quotes.length - 1; index >= 0; index--) {
|
|
46
|
+
const quote = quotes[index];
|
|
47
|
+
quoteEnds[quote.start] = quote.end;
|
|
48
|
+
closingEnds[quote.start] = nearestQuoteEnd.get(quote.key) ?? text.length;
|
|
49
|
+
nearestQuoteEnd.set(quote.key, quote.end);
|
|
50
|
+
}
|
|
51
|
+
// SECURITY: a boundary quote must close an enclosing wrapper, not open an attached credential suffix.
|
|
52
|
+
const wrapperStarts = new Uint32Array(text.length);
|
|
53
|
+
const openWrappers = new Map();
|
|
54
|
+
for (const quote of quotes) {
|
|
55
|
+
const opening = openWrappers.get(quote.key);
|
|
56
|
+
if (opening === undefined)
|
|
57
|
+
openWrappers.set(quote.key, quote.start + 1);
|
|
58
|
+
else {
|
|
59
|
+
wrapperStarts[quote.start] = opening;
|
|
60
|
+
openWrappers.delete(quote.key);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
const closingWrapper = new Uint32Array(text.length + 1);
|
|
64
|
+
const wrapperEnds = new Uint32Array(text.length + 1);
|
|
65
|
+
for (let index = text.length - 1; index >= 0; index--) {
|
|
66
|
+
const afterQuote = quoteEnds[index];
|
|
67
|
+
if (!wrapperStarts[index])
|
|
68
|
+
continue;
|
|
69
|
+
if (quoteEnds[afterQuote]) {
|
|
70
|
+
if (closingWrapper[afterQuote])
|
|
71
|
+
closingWrapper[index] = Math.max(wrapperStarts[index], closingWrapper[afterQuote]);
|
|
72
|
+
}
|
|
73
|
+
else if (/^[\s&,;}\]]?$/.test(text[afterQuote] ?? ''))
|
|
74
|
+
closingWrapper[index] = wrapperStarts[index];
|
|
75
|
+
if (closingWrapper[index])
|
|
76
|
+
wrapperEnds[index] = quoteEnds[afterQuote] ? wrapperEnds[afterQuote] : afterQuote;
|
|
77
|
+
}
|
|
78
|
+
// SECURITY: every position is cached, including containers inside serialized outer quotes.
|
|
79
|
+
const containerEnds = new Uint32Array(text.length);
|
|
80
|
+
const nextDelimiter = new Uint32Array(text.length + 1);
|
|
81
|
+
nextDelimiter[text.length] = text.length;
|
|
82
|
+
for (let index = text.length - 1; index >= 0; index--) {
|
|
83
|
+
if (quoteEnds[index])
|
|
84
|
+
nextDelimiter[index] = nextDelimiter[closingEnds[index]];
|
|
85
|
+
else if (text[index] === ']' || text[index] === '}')
|
|
86
|
+
nextDelimiter[index] = index;
|
|
87
|
+
else if (text[index] === '[' || text[index] === '{') {
|
|
88
|
+
const close = nextDelimiter[index + 1];
|
|
89
|
+
const expected = text[index] === '[' ? ']' : '}';
|
|
90
|
+
containerEnds[index] = text[close] === expected ? close + 1 : text.length;
|
|
91
|
+
nextDelimiter[index] = nextDelimiter[containerEnds[index]];
|
|
92
|
+
}
|
|
93
|
+
else
|
|
94
|
+
nextDelimiter[index] = nextDelimiter[index + 1];
|
|
95
|
+
}
|
|
96
|
+
const quoteStartsByEnd = new Map(quotes.map(quote => [quote.end, quote.start]));
|
|
97
|
+
const invalidKeyQuotes = new Uint8Array(text.length);
|
|
98
|
+
const invalidFieldStarts = new Set();
|
|
99
|
+
const fields = [];
|
|
100
|
+
for (const match of text.matchAll(/[\w.\\-]+/g)) {
|
|
101
|
+
const rawKey = match[0];
|
|
102
|
+
const fullEnd = match.index + rawKey.length;
|
|
103
|
+
let keyEnd = fullEnd;
|
|
104
|
+
if (text[fullEnd] === '"' || text[fullEnd] === "'") {
|
|
105
|
+
while (keyEnd > match.index && text[keyEnd - 1] === '\\')
|
|
106
|
+
keyEnd--;
|
|
107
|
+
}
|
|
108
|
+
const key = decodeCredentialKey(text.slice(match.index, keyEnd));
|
|
109
|
+
let start = keyEnd;
|
|
110
|
+
const quotedKeyEnd = quoteEnds[keyEnd] || (keyEnd < fullEnd ? quoteEnds[fullEnd] : 0);
|
|
111
|
+
if (quotedKeyEnd)
|
|
112
|
+
start = quotedKeyEnd;
|
|
113
|
+
const separator = start;
|
|
114
|
+
while (start < text.length && /\s/.test(text[start]))
|
|
115
|
+
start++;
|
|
116
|
+
if (text[start] === '=' || text[start] === ':')
|
|
117
|
+
start++;
|
|
118
|
+
else if (!key.startsWith('--') || start === separator)
|
|
119
|
+
continue;
|
|
120
|
+
// SECURITY: an unpaired key closer cannot make a private value tail look like another field.
|
|
121
|
+
if (quotedKeyEnd) {
|
|
122
|
+
const opening = quoteStartsByEnd.get(match.index);
|
|
123
|
+
if (opening === undefined || closingEnds[opening] !== quotedKeyEnd) {
|
|
124
|
+
invalidKeyQuotes[keyEnd] = 1;
|
|
125
|
+
invalidFieldStarts.add(match.index);
|
|
126
|
+
if (opening !== undefined) {
|
|
127
|
+
invalidKeyQuotes[opening] = 1;
|
|
128
|
+
invalidFieldStarts.add(opening);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
while (start < text.length && /\s/.test(text[start]))
|
|
133
|
+
start++;
|
|
134
|
+
fields.push({ key, start, tokenStart: match.index, quotedKeyEnd });
|
|
135
|
+
}
|
|
136
|
+
// SECURITY: malformed sensitive assignments still need redaction, but cannot bound any other value.
|
|
137
|
+
const fieldStarts = new Set(fields.filter(field => !invalidFieldStarts.has(field.tokenStart)).map(field => field.tokenStart));
|
|
138
|
+
const firstValueCharacter = new Uint32Array(text.length + 1);
|
|
139
|
+
firstValueCharacter[text.length] = text.length;
|
|
140
|
+
const stops = new Uint32Array(text.length + 1);
|
|
141
|
+
stops[text.length] = text.length;
|
|
142
|
+
for (let index = text.length - 1; index >= 0; index--) {
|
|
143
|
+
firstValueCharacter[index] = !escaped[index] && /[&,;}]/.test(text[index]) ? firstValueCharacter[index + 1] : index;
|
|
144
|
+
if (quoteEnds[index] && !invalidKeyQuotes[index])
|
|
145
|
+
stops[index] = stops[closingEnds[index]];
|
|
146
|
+
else if (containerEnds[index])
|
|
147
|
+
stops[index] = stops[containerEnds[index]];
|
|
148
|
+
else if (!escaped[index] && /[\s&,;}]/.test(text[index]))
|
|
149
|
+
stops[index] = index;
|
|
150
|
+
else
|
|
151
|
+
stops[index] = stops[index + 1];
|
|
152
|
+
}
|
|
153
|
+
// SECURITY: a placeholder is not proof that the rest of a credential value was already removed.
|
|
154
|
+
const quotedFieldStarts = new Set(fieldStarts);
|
|
155
|
+
for (const field of fields) {
|
|
156
|
+
const quoteStart = quoteStartsByEnd.get(field.tokenStart);
|
|
157
|
+
if (quoteStart !== undefined && field.quotedKeyEnd && closingEnds[quoteStart] === field.quotedKeyEnd)
|
|
158
|
+
quotedFieldStarts.add(quoteStart);
|
|
159
|
+
}
|
|
160
|
+
const markerContent = new Uint32Array(text.length + 1);
|
|
161
|
+
markerContent[text.length] = text.length;
|
|
162
|
+
for (let index = text.length - 1; index >= 0; index--) {
|
|
163
|
+
markerContent[index] = /[ \t&,;}\]]/.test(text[index]) ? markerContent[index + 1] : index;
|
|
164
|
+
}
|
|
165
|
+
const markerTailEnds = new Uint32Array(text.length + 1);
|
|
166
|
+
markerTailEnds[text.length] = text.length;
|
|
167
|
+
for (let index = text.length - 1; index >= 0; index--) {
|
|
168
|
+
const content = markerContent[index];
|
|
169
|
+
if (content === text.length || quotedFieldStarts.has(content) || (closingWrapper[content] && !invalidKeyQuotes[content]) || /[\r\n]/.test(text[content]))
|
|
170
|
+
markerTailEnds[index] = index;
|
|
171
|
+
else if (quoteEnds[index] && !invalidKeyQuotes[index])
|
|
172
|
+
markerTailEnds[index] = markerTailEnds[closingEnds[index]];
|
|
173
|
+
else if (containerEnds[index])
|
|
174
|
+
markerTailEnds[index] = markerTailEnds[containerEnds[index]];
|
|
175
|
+
else
|
|
176
|
+
markerTailEnds[index] = markerTailEnds[index + 1];
|
|
177
|
+
}
|
|
178
|
+
// SECURITY: independently discovered value and continuation spans may overlap in any order.
|
|
179
|
+
const coverage = new Int32Array(text.length + 1);
|
|
180
|
+
function cover(start, end) {
|
|
181
|
+
if (end > start) {
|
|
182
|
+
coverage[start]++;
|
|
183
|
+
coverage[end]--;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
for (const { key, start, tokenStart } of fields) {
|
|
187
|
+
if (!isSupportSensitiveKey(key))
|
|
188
|
+
continue;
|
|
189
|
+
const markerLength = text.startsWith('[redacted]', start) ? '[redacted]'.length : text.startsWith('[removed]', start) ? '[removed]'.length : 0;
|
|
190
|
+
const marker = markerLength > 0;
|
|
191
|
+
const markerEnd = start + markerLength;
|
|
192
|
+
const markerSuffix = marker ? markerContent[markerEnd] : start;
|
|
193
|
+
const stableMarker = marker && (markerSuffix === text.length || quotedFieldStarts.has(markerSuffix) || (closingWrapper[markerSuffix] && !invalidKeyQuotes[markerSuffix] && closingWrapper[markerSuffix] <= tokenStart) || /[\r\n]/.test(text[markerSuffix]));
|
|
194
|
+
const containerEnd = containerEnds[start];
|
|
195
|
+
const completeContainer = containerEnd && ((closingWrapper[containerEnd] && !invalidKeyQuotes[containerEnd] && closingWrapper[containerEnd] <= tokenStart) || /^[\s&,;}\]]?$/.test(text[containerEnd] ?? ''));
|
|
196
|
+
const end = stableMarker ? start : marker ? markerTailEnds[markerSuffix] : quoteEnds[start] ? closingEnds[start] : completeContainer ? containerEnd : stops[firstValueCharacter[start]];
|
|
197
|
+
cover(start, end);
|
|
198
|
+
const malformedContinuation = markerContent[end];
|
|
199
|
+
if (invalidFieldStarts.has(malformedContinuation))
|
|
200
|
+
cover(start, markerTailEnds[malformedContinuation]);
|
|
201
|
+
const boundary = stableMarker ? markerEnd : end;
|
|
202
|
+
const enclosingWrapper = closingWrapper[boundary] && !invalidKeyQuotes[boundary] && closingWrapper[boundary] <= tokenStart;
|
|
203
|
+
if (!enclosingWrapper && !completeContainer)
|
|
204
|
+
continue;
|
|
205
|
+
const continuation = markerContent[enclosingWrapper ? wrapperEnds[boundary] : boundary];
|
|
206
|
+
// SECURITY: adjacent quoted text can be a private value continuation outside the enclosing wrapper.
|
|
207
|
+
if (quoteEnds[continuation] && !quotedFieldStarts.has(continuation) && !(closingWrapper[continuation] && closingWrapper[continuation] <= tokenStart)) {
|
|
208
|
+
cover(enclosingWrapper ? continuation : start, markerTailEnds[continuation]);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
const parts = [];
|
|
212
|
+
let cursor = 0;
|
|
213
|
+
let active = 0;
|
|
214
|
+
for (let index = 0; index <= text.length; index++) {
|
|
215
|
+
const previous = active;
|
|
216
|
+
active += coverage[index];
|
|
217
|
+
if (!previous && active)
|
|
218
|
+
parts.push(text.slice(cursor, index), '[redacted]');
|
|
219
|
+
if (previous && !active)
|
|
220
|
+
cursor = index;
|
|
221
|
+
}
|
|
222
|
+
parts.push(text.slice(cursor));
|
|
223
|
+
return parts.join('');
|
|
224
|
+
}
|
|
6
225
|
/**
|
|
7
226
|
* Removes known credential values, credential-shaped text and unsafe terminal controls before review.
|
|
8
227
|
* Supply values from every credential source: pattern matching alone cannot identify opaque secrets.
|
|
@@ -13,14 +232,13 @@ export function redactSupportText(text, sensitiveValues = []) {
|
|
|
13
232
|
if (value)
|
|
14
233
|
safe = safe.split(value).join('[redacted]');
|
|
15
234
|
}
|
|
235
|
+
safe = redactCredentialValues(safe);
|
|
16
236
|
return safe
|
|
17
237
|
.replace(/-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]*?-----END [A-Z ]*PRIVATE KEY-----/g, '[redacted-private-key]')
|
|
18
238
|
.replace(/\b(Bearer|Basic)\s+[A-Za-z0-9._~+/=-]+/gi, '$1 [redacted]')
|
|
19
239
|
.replace(/\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g, '[redacted-jwt]')
|
|
20
240
|
.replace(/\b(?:gh[pousr]_[A-Za-z0-9_]+|github_pat_[A-Za-z0-9_]+|sk-[A-Za-z0-9_-]{16,})\b/g, '[redacted-key]')
|
|
21
241
|
.replace(/\b([a-z][a-z0-9+.-]*:\/\/)[^\s/@]+@/gi, '$1[redacted]@')
|
|
22
|
-
.replace(/((?:["']?[\w.-]*(?:token|secret|password|passwd|pwd|api[_-]?key|account[_-]?key|cookie|credential|authorization|connection[_-]?string|private[_-]?key)[\w.-]*["']?\s*[:=]\s*))(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|[^\s,;}]+)/gi, '$1[redacted]')
|
|
23
|
-
.replace(/((?:--[\w-]*(?:token|secret|password|passwd|pwd|api[_-]?key|account[_-]?key|authorization|cookie|credential|connection[_-]?string|private[_-]?key)[\w-]*)\s+)(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|[^\s]+)/gi, '$1[redacted]')
|
|
24
242
|
.replace(/([?&](?:sig|signature|access_token|token|key|code)=)[^&#\s]*/gi, '$1[redacted]')
|
|
25
243
|
.replace(/#draft=[^\s"']+/gi, '#draft=[redacted]')
|
|
26
244
|
// eslint-disable-next-line no-control-regex -- Upstream terminal escapes must not execute during report review.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"support-redaction.js","sourceRoot":"","sources":["../../src/lib/support-redaction.ts"],"names":[],"mappings":"AAAA,MAAM,YAAY,GAAG,qIAAqI,CAAC;AAE3J,0GAA0G;AAC1G,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC/C,OAAO,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,kBAAqC,EAAE;IACrF,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;QACpC,IAAI,KAAK;YAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,IAAI;SACR,OAAO,CAAC,6EAA6E,EAAE,wBAAwB,CAAC;SAChH,OAAO,CAAC,0CAA0C,EAAE,eAAe,CAAC;SACpE,OAAO,CAAC,wDAAwD,EAAE,gBAAgB,CAAC;SACnF,OAAO,CAAC,iFAAiF,EAAE,gBAAgB,CAAC;SAC5G,OAAO,CAAC,uCAAuC,EAAE,eAAe,CAAC;SACjE,OAAO,CAAC,mOAAmO,EAAE,cAAc,CAAC;SAC5P,OAAO,CAAC,+MAA+M,EAAE,cAAc,CAAC;SACxO,OAAO,CAAC,gEAAgE,EAAE,cAAc,CAAC;SACzF,OAAO,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;QAClD,gHAAgH;SAC/G,OAAO,CAAC,4BAA4B,EAAE,EAAE,CAAC;QAC1C,yHAAyH;SACxH,OAAO,CAAC,qCAAqC,EAAE,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,mIAAmI;AACnI,MAAM,UAAU,mBAAmB,CAAI,KAAQ,EAAE,kBAAqC,EAAE;IACtF,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,iBAAiB,CAAC,KAAK,EAAE,eAAe,CAAM,CAAC;IACrF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAM,CAAC;IACpG,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;YACnE,GAAG,EAAE,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,EAAE,eAAe,CAAC;SAC5F,CAAC,CAAM,CAAC;IACX,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"support-redaction.js","sourceRoot":"","sources":["../../src/lib/support-redaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import type { StoredTokens } from './auth.js';
|
|
2
|
+
import { type HarnessContext, type OrganisationLocation } from './support-harness.js';
|
|
2
3
|
/** Deadline for one draft POST, including its bounded response body. */
|
|
3
4
|
export declare const SUPPORT_TIMEOUT_MS = 10000;
|
|
4
|
-
/**
|
|
5
|
+
/** Saved failure context older than this is shown with its time but left out of the report. */
|
|
6
|
+
export declare const LAST_ERROR_MAX_AGE_MS: number;
|
|
7
|
+
/** Report inputs; `yes` asserts the person approved the bundle whose digest is `approvedDigest`. */
|
|
5
8
|
export interface SupportOptions {
|
|
9
|
+
readonly createContextFile?: boolean;
|
|
10
|
+
readonly decline?: boolean;
|
|
6
11
|
readonly format?: string;
|
|
7
12
|
readonly source?: string;
|
|
8
13
|
readonly tool?: string;
|
|
@@ -11,6 +16,10 @@ export interface SupportOptions {
|
|
|
11
16
|
readonly exitCode?: string;
|
|
12
17
|
readonly errorCode?: string;
|
|
13
18
|
readonly description?: string;
|
|
19
|
+
readonly contextFile?: string;
|
|
20
|
+
readonly approvedDigest?: string;
|
|
21
|
+
readonly organisationLocation?: string;
|
|
22
|
+
readonly lastError?: boolean;
|
|
14
23
|
readonly yes?: boolean;
|
|
15
24
|
readonly open?: boolean;
|
|
16
25
|
}
|
|
@@ -40,6 +49,16 @@ export interface SupportBundle {
|
|
|
40
49
|
readonly appName?: string;
|
|
41
50
|
readonly error?: string;
|
|
42
51
|
readonly occurredAt?: string;
|
|
52
|
+
readonly organisationLocation?: OrganisationLocation;
|
|
53
|
+
readonly harness?: HarnessContext;
|
|
54
|
+
}
|
|
55
|
+
/** The prepared report plus anything the person should know about what was left out. */
|
|
56
|
+
export interface SupportReport {
|
|
57
|
+
readonly bundle: SupportBundle;
|
|
58
|
+
readonly ignoredLastError?: {
|
|
59
|
+
readonly recordedAt: string;
|
|
60
|
+
readonly reason: 'expired';
|
|
61
|
+
};
|
|
43
62
|
}
|
|
44
63
|
/** Safe draft failure code and message, excluding server response content and credentials. */
|
|
45
64
|
export declare class SupportRequestError extends Error {
|
|
@@ -48,8 +67,10 @@ export declare class SupportRequestError extends Error {
|
|
|
48
67
|
}
|
|
49
68
|
/** Resolve a trusted origin from user profile/runtime settings; project files cannot redirect the saved bearer. */
|
|
50
69
|
export declare function resolveSupportWebsite(): Promise<string>;
|
|
51
|
-
/**
|
|
52
|
-
export declare function
|
|
70
|
+
/** The chatbot entry used whenever no draft can be created; it opens the Support chat without prefill. */
|
|
71
|
+
export declare function supportChatUrl(website: string): string;
|
|
72
|
+
/** Collect a bounded, redacted report from the saved session, current project, canonical error metadata and any harness summary. */
|
|
73
|
+
export declare function prepareSupportReport(options: SupportOptions, session: StoredTokens | null, stdin?: NodeJS.ReadableStream): Promise<SupportReport>;
|
|
53
74
|
/** Validated one-time capability link and expiry returned by the website. */
|
|
54
75
|
export interface SupportDraft {
|
|
55
76
|
readonly url: string;
|
|
@@ -58,11 +79,12 @@ export interface SupportDraft {
|
|
|
58
79
|
/**
|
|
59
80
|
* Create one non-idempotent draft after consent; ambiguous failures never trigger a retry.
|
|
60
81
|
* @param website Trusted origin from resolveSupportWebsite.
|
|
61
|
-
* @param bundle Locally redacted payload returned by
|
|
82
|
+
* @param bundle Locally redacted payload returned by prepareSupportReport.
|
|
62
83
|
* @param bearer Access token from the saved eai login session.
|
|
63
84
|
* @param timeoutMs Deadline for the request and bounded response read.
|
|
64
85
|
* @returns A validated fragment link, or null when the website rejects the session with 401.
|
|
65
|
-
* @throws SupportRequestError for safe HTTP, response-validation or ambiguous request failures
|
|
86
|
+
* @throws SupportRequestError for safe HTTP, response-validation or ambiguous request failures;
|
|
87
|
+
* `region_required` when the website needs the organisation location before storing anything.
|
|
66
88
|
*/
|
|
67
89
|
export declare function createSupportDraft(website: string, bundle: SupportBundle, bearer: string, timeoutMs?: number): Promise<SupportDraft | null>;
|
|
68
90
|
//# sourceMappingURL=support-report.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"support-report.d.ts","sourceRoot":"","sources":["../../src/lib/support-report.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"support-report.d.ts","sourceRoot":"","sources":["../../src/lib/support-report.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';
|
|
2
|
-
import { platform, release } from 'node:os';
|
|
2
|
+
import { homedir, platform, release } from 'node:os';
|
|
3
3
|
import { findProjectRoot, loadEnvFile } from './config.js';
|
|
4
4
|
import { getActiveProfile, loadProfileConfig } from './profile.js';
|
|
5
5
|
import { findGuidanceByCodeOrReason } from './error-guidance/catalog.js';
|
|
6
6
|
import { readSupportContext } from './support-context.js';
|
|
7
|
+
import { fitHarnessContext, isOrganisationLocation, pathAliases, readHarnessContextSource, redactHarnessContext, validateHarnessContext, } from './support-harness.js';
|
|
7
8
|
import { isSupportSensitiveKey, redactSupportBundle, redactSupportText } from './support-redaction.js';
|
|
8
9
|
const require = createRequire(import.meta.url);
|
|
9
10
|
const { version: cliVersion } = require('../../package.json');
|
|
10
11
|
/** Deadline for one draft POST, including its bounded response body. */
|
|
11
12
|
export const SUPPORT_TIMEOUT_MS = 10_000;
|
|
13
|
+
/** Saved failure context older than this is shown with its time but left out of the report. */
|
|
14
|
+
export const LAST_ERROR_MAX_AGE_MS = 24 * 60 * 60 * 1000;
|
|
12
15
|
const MAX_RESPONSE_BYTES = 8_192;
|
|
13
16
|
/** Safe draft failure code and message, excluding server response content and credentials. */
|
|
14
17
|
export class SupportRequestError extends Error {
|
|
@@ -40,18 +43,27 @@ export async function resolveSupportWebsite() {
|
|
|
40
43
|
}
|
|
41
44
|
return url.origin;
|
|
42
45
|
}
|
|
46
|
+
/** The chatbot entry used whenever no draft can be created; it opens the Support chat without prefill. */
|
|
47
|
+
export function supportChatUrl(website) {
|
|
48
|
+
return `${website}/support?chat=open`;
|
|
49
|
+
}
|
|
43
50
|
function boundedOption(value, limit, label) {
|
|
44
51
|
if (value !== undefined && (!value.trim() || value.length > limit)) {
|
|
45
52
|
throw new Error(`${label} must be nonempty and at most ${limit} characters.`);
|
|
46
53
|
}
|
|
47
54
|
}
|
|
48
|
-
/** Collect a bounded, redacted report from the saved session, current project
|
|
49
|
-
export async function
|
|
55
|
+
/** Collect a bounded, redacted report from the saved session, current project, canonical error metadata and any harness summary. */
|
|
56
|
+
export async function prepareSupportReport(options, session, stdin = process.stdin) {
|
|
50
57
|
if (options.format && !['text', 'json'].includes(options.format))
|
|
51
58
|
throw new Error('Use --format text or --format json.');
|
|
52
59
|
const source = options.source ?? (options.tool ? 'harness' : 'eai-cli');
|
|
53
60
|
if (source !== 'harness' && source !== 'eai-cli')
|
|
54
61
|
throw new Error('Use --source eai-cli or --source harness.');
|
|
62
|
+
if (options.contextFile !== undefined && source !== 'harness')
|
|
63
|
+
throw new Error('Use --source harness or --tool together with --context-file.');
|
|
64
|
+
if (options.organisationLocation !== undefined && !isOrganisationLocation(options.organisationLocation)) {
|
|
65
|
+
throw new Error('Use --organisation-location apac, emea or americas.');
|
|
66
|
+
}
|
|
55
67
|
boundedOption(options.tool, 80, 'Tool name');
|
|
56
68
|
boundedOption(options.toolVersion, 100, 'Tool version');
|
|
57
69
|
boundedOption(options.command, 500, 'Command');
|
|
@@ -60,7 +72,13 @@ export async function collectSupportBundle(options, session) {
|
|
|
60
72
|
if (exitCode !== undefined && (!/^-?\d+$/.test(options.exitCode) || !Number.isInteger(exitCode)
|
|
61
73
|
|| exitCode < -2147483648 || exitCode > 2147483647))
|
|
62
74
|
throw new Error('Exit code must be a signed 32-bit integer.');
|
|
63
|
-
|
|
75
|
+
// Read before report construction so invalid context cannot enter the preview.
|
|
76
|
+
const rawHarness = options.contextFile === undefined ? undefined : await readHarnessContextSource(options.contextFile, stdin);
|
|
77
|
+
const harnessInput = rawHarness === undefined ? undefined : validateHarnessContext(rawHarness);
|
|
78
|
+
const savedContext = options.lastError === false ? null : readSupportContext();
|
|
79
|
+
const savedAge = savedContext ? Date.now() - Date.parse(savedContext.recordedAt) : 0;
|
|
80
|
+
const context = savedContext && savedAge <= LAST_ERROR_MAX_AGE_MS ? savedContext : null;
|
|
81
|
+
const ignoredLastError = savedContext && !context ? { recordedAt: savedContext.recordedAt, reason: 'expired' } : undefined;
|
|
64
82
|
const guidance = findGuidanceByCodeOrReason(options.errorCode ?? context?.errorCode ?? context?.reasonCode ?? '');
|
|
65
83
|
if (options.errorCode && !guidance)
|
|
66
84
|
throw new Error('Unknown error code or reason. Run eai errors list --format json.');
|
|
@@ -81,7 +99,9 @@ export async function collectSupportBundle(options, session) {
|
|
|
81
99
|
].filter(Boolean).join('\n'), 6000).trim();
|
|
82
100
|
if (description.length < 10)
|
|
83
101
|
throw new Error('Description must contain at least 10 characters after redaction.');
|
|
84
|
-
|
|
102
|
+
const harness = harnessInput === undefined ? undefined
|
|
103
|
+
: fitHarnessContext(redactHarnessContext(harnessInput, { sensitiveValues, homes: pathAliases(homedir()), projectRoots: pathAliases(projectRoot, pathAliases(homedir())) }));
|
|
104
|
+
const bundle = redactSupportBundle({
|
|
85
105
|
source, tool: { name: safe(options.tool ?? 'eai-cli', 80), version: safe(options.toolVersion ?? (options.tool ? undefined : cliVersion), 100) ?? '' },
|
|
86
106
|
cli: { command, exitCode: exitCode ?? context?.exitCode, errorCode: guidance?.code, reasonCode: guidance?.reasonCode },
|
|
87
107
|
cliVersion, service: 'eai-cli', category: 'technical', summary: safe(guidance?.title ?? 'Help with EAI CLI', 180),
|
|
@@ -90,16 +110,56 @@ export async function collectSupportBundle(options, session) {
|
|
|
90
110
|
tenantName: safe(env.EAI_TENANT_NAME ?? session?.activeTenantName, 160),
|
|
91
111
|
appId: safe(env.EAI_APP_KEY ?? env.NEXT_PUBLIC_EAI_APP_KEY, 160), appName: safe(env.NEXT_PUBLIC_APP_NAME, 160),
|
|
92
112
|
error: safe(guidance?.title, 4000), occurredAt: context?.recordedAt,
|
|
113
|
+
...(isOrganisationLocation(options.organisationLocation) ? { organisationLocation: options.organisationLocation } : {}),
|
|
114
|
+
...(harness ? { harness } : {}),
|
|
93
115
|
}, sensitiveValues);
|
|
116
|
+
return { bundle, ...(ignoredLastError ? { ignoredLastError } : {}) };
|
|
117
|
+
}
|
|
118
|
+
const createInvalidDraftResponseError = () => new SupportRequestError('invalid_response', 'The support website returned an invalid draft response.');
|
|
119
|
+
async function readBoundedBody(response) {
|
|
120
|
+
if (!response.body)
|
|
121
|
+
throw createInvalidDraftResponseError();
|
|
122
|
+
const reader = response.body.getReader();
|
|
123
|
+
const chunks = [];
|
|
124
|
+
let bytes = 0;
|
|
125
|
+
try {
|
|
126
|
+
while (true) {
|
|
127
|
+
const { done, value } = await reader.read();
|
|
128
|
+
if (done)
|
|
129
|
+
break;
|
|
130
|
+
bytes += value.byteLength;
|
|
131
|
+
if (bytes > MAX_RESPONSE_BYTES) {
|
|
132
|
+
await reader.cancel();
|
|
133
|
+
throw createInvalidDraftResponseError();
|
|
134
|
+
}
|
|
135
|
+
chunks.push(value);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
finally {
|
|
139
|
+
reader.releaseLock();
|
|
140
|
+
}
|
|
141
|
+
return Buffer.concat(chunks);
|
|
142
|
+
}
|
|
143
|
+
/** Only the website's error code is interpreted from a 400; its text is never shown. */
|
|
144
|
+
async function readRejectionCode(response) {
|
|
145
|
+
try {
|
|
146
|
+
const data = JSON.parse((await readBoundedBody(response)).toString('utf8'));
|
|
147
|
+
const code = data && typeof data === 'object' ? data.error : undefined;
|
|
148
|
+
return typeof code === 'string' ? code : undefined;
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
return undefined;
|
|
152
|
+
}
|
|
94
153
|
}
|
|
95
154
|
/**
|
|
96
155
|
* Create one non-idempotent draft after consent; ambiguous failures never trigger a retry.
|
|
97
156
|
* @param website Trusted origin from resolveSupportWebsite.
|
|
98
|
-
* @param bundle Locally redacted payload returned by
|
|
157
|
+
* @param bundle Locally redacted payload returned by prepareSupportReport.
|
|
99
158
|
* @param bearer Access token from the saved eai login session.
|
|
100
159
|
* @param timeoutMs Deadline for the request and bounded response read.
|
|
101
160
|
* @returns A validated fragment link, or null when the website rejects the session with 401.
|
|
102
|
-
* @throws SupportRequestError for safe HTTP, response-validation or ambiguous request failures
|
|
161
|
+
* @throws SupportRequestError for safe HTTP, response-validation or ambiguous request failures;
|
|
162
|
+
* `region_required` when the website needs the organisation location before storing anything.
|
|
103
163
|
*/
|
|
104
164
|
export async function createSupportDraft(website, bundle, bearer, timeoutMs = SUPPORT_TIMEOUT_MS) {
|
|
105
165
|
try {
|
|
@@ -109,6 +169,9 @@ export async function createSupportDraft(website, bundle, bearer, timeoutMs = SU
|
|
|
109
169
|
headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${bearer}` }, body: JSON.stringify(bundle),
|
|
110
170
|
});
|
|
111
171
|
if (response.status !== 201) {
|
|
172
|
+
if (response.status === 400 && await readRejectionCode(response) === 'region_required') {
|
|
173
|
+
throw new SupportRequestError('region_required', 'The support website needs to know where the organisation is based before it stores a report. No draft was created.');
|
|
174
|
+
}
|
|
112
175
|
await response.body?.cancel();
|
|
113
176
|
if (response.status === 401)
|
|
114
177
|
return null;
|
|
@@ -121,36 +184,17 @@ export async function createSupportDraft(website, bundle, bearer, timeoutMs = SU
|
|
|
121
184
|
}
|
|
122
185
|
if (!response.headers.get('content-type')?.includes('application/json') || !response.body) {
|
|
123
186
|
await response.body?.cancel();
|
|
124
|
-
throw
|
|
125
|
-
}
|
|
126
|
-
const reader = response.body.getReader();
|
|
127
|
-
const chunks = [];
|
|
128
|
-
let bytes = 0;
|
|
129
|
-
try {
|
|
130
|
-
while (true) {
|
|
131
|
-
const { done, value } = await reader.read();
|
|
132
|
-
if (done)
|
|
133
|
-
break;
|
|
134
|
-
bytes += value.byteLength;
|
|
135
|
-
if (bytes > MAX_RESPONSE_BYTES) {
|
|
136
|
-
await reader.cancel();
|
|
137
|
-
throw new SupportRequestError('invalid_response', 'The support website returned an invalid draft response.');
|
|
138
|
-
}
|
|
139
|
-
chunks.push(value);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
finally {
|
|
143
|
-
reader.releaseLock();
|
|
187
|
+
throw createInvalidDraftResponseError();
|
|
144
188
|
}
|
|
145
|
-
const data = JSON.parse(
|
|
189
|
+
const data = JSON.parse((await readBoundedBody(response)).toString('utf8'));
|
|
146
190
|
if (!data || typeof data !== 'object')
|
|
147
|
-
throw
|
|
191
|
+
throw createInvalidDraftResponseError();
|
|
148
192
|
const { id, token, expiresAt, redeemUrl } = data;
|
|
149
193
|
if (typeof id !== 'string' || !/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(id)
|
|
150
194
|
|| typeof token !== 'string' || !/^[A-Za-z0-9_-]{43}$/.test(token)
|
|
151
195
|
|| typeof expiresAt !== 'string' || !Number.isFinite(Date.parse(expiresAt)) || Date.parse(expiresAt) <= Date.now()
|
|
152
196
|
|| redeemUrl !== `${website}/support#draft=${id}.${token}`) {
|
|
153
|
-
throw
|
|
197
|
+
throw createInvalidDraftResponseError();
|
|
154
198
|
}
|
|
155
199
|
return { url: redeemUrl, expiresAt };
|
|
156
200
|
}
|
|
@@ -158,7 +202,7 @@ export async function createSupportDraft(website, bundle, bearer, timeoutMs = SU
|
|
|
158
202
|
if (error instanceof SupportRequestError)
|
|
159
203
|
throw error;
|
|
160
204
|
if (error instanceof SyntaxError)
|
|
161
|
-
throw
|
|
205
|
+
throw createInvalidDraftResponseError();
|
|
162
206
|
throw new SupportRequestError('request_failed', 'The support request failed or timed out. No retry was sent; a draft may have been created.');
|
|
163
207
|
}
|
|
164
208
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"support-report.js","sourceRoot":"","sources":["../../src/lib/support-report.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"support-report.js","sourceRoot":"","sources":["../../src/lib/support-report.ts"],"names":[],"mappings":"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"}
|