@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-redaction.d.ts","sourceRoot":"","sources":["../../src/lib/support-redaction.ts"],"names":[],"mappings":"AAEA,0GAA0G;AAC1G,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,GAAE,SAAS,MAAM,EAAO,GAAG,MAAM,CAmB/F;AAED,mIAAmI;AACnI,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,eAAe,GAAE,SAAS,MAAM,EAAO,GAAG,CAAC,CAS3F"}
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
- /** Report inputs; `yes` asserts the person approved this exact bundle before submission. */
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
- /** Collect a bounded, redacted report from the saved session, current project and canonical error metadata. */
52
- export declare function collectSupportBundle(options: SupportOptions, session: StoredTokens | null): Promise<SupportBundle>;
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 collectSupportBundle.
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":"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"}
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 and canonical error metadata. */
49
- export async function collectSupportBundle(options, session) {
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
- const context = readSupportContext();
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
- return redactSupportBundle({
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 collectSupportBundle.
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 new SupportRequestError('invalid_response', 'The support website returned an invalid draft response.');
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(Buffer.concat(chunks).toString('utf8'));
189
+ const data = JSON.parse((await readBoundedBody(response)).toString('utf8'));
146
190
  if (!data || typeof data !== 'object')
147
- throw new SupportRequestError('invalid_response', 'The support website returned an invalid draft response.');
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 new SupportRequestError('invalid_response', 'The support website returned an invalid draft response.');
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 new SupportRequestError('invalid_response', 'The support website returned an invalid draft response.');
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":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,WAAW,EACX,wBAAwB,EACxB,oBAAoB,EACpB,sBAAsB,GAGvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEvG,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAC;AACrF,wEAAwE;AACxE,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AACzC,+FAA+F;AAC/F,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACzD,MAAM,kBAAkB,GAAG,KAAK,CAAC;AAkDjC,8FAA8F;AAC9F,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IACvB;IAArB,YAAqB,IAAY,EAAE,OAAe;QAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAAhD,SAAI,GAAJ,IAAI,CAAQ;IAAqC,CAAC;CACxE;AAED,mHAAmH;AACnH,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,MAAM,EAAE,UAAU;WAC1D,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC/E,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,oFAAoF,CAAC,CAAC;IAClH,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QAAC,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAAC,CAAC;IAClH,MAAM,QAAQ,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5E,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,QAAQ,CAAC,CAAC;WACrE,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG,EAAE,CAAC;QACpF,MAAM,IAAI,KAAK,CAAC,oFAAoF,CAAC,CAAC;IACxG,CAAC;IACD,OAAO,GAAG,CAAC,MAAM,CAAC;AACpB,CAAC;AAED,0GAA0G;AAC1G,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,GAAG,OAAO,oBAAoB,CAAC;AACxC,CAAC;AAED,SAAS,aAAa,CAAC,KAAyB,EAAE,KAAa,EAAE,KAAa;IAC5E,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,iCAAiC,KAAK,cAAc,CAAC,CAAC;IAChF,CAAC;AACH,CAAC;AAED,oIAAoI;AACpI,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAAuB,EAAE,OAA4B,EAAE,QAA+B,OAAO,CAAC,KAAK;IAC5I,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzH,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACxE,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/G,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAC/I,IAAI,OAAO,CAAC,oBAAoB,KAAK,SAAS,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC;QACxG,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;IAC7C,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC;IACxD,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;IAC/C,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvF,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;WAC3F,QAAQ,GAAG,CAAC,UAAU,IAAI,QAAQ,GAAG,UAAU,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IACrH,+EAA+E;IAC/E,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,wBAAwB,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC9H,MAAM,YAAY,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAC/F,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC;IAC/E,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF,MAAM,OAAO,GAAG,YAAY,IAAI,QAAQ,IAAI,qBAAqB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;IACxF,MAAM,gBAAgB,GAAG,YAAY,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,SAAkB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACpI,MAAM,QAAQ,GAAG,0BAA0B,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,EAAE,SAAS,IAAI,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC;IAClH,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACxH,MAAM,WAAW,GAAG,MAAM,eAAe,EAAE,CAAC;IAC5C,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY;YAC9E,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;iBACxD,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;aAC1E,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACvF,MAAM,IAAI,GAAG,CAAC,KAAyB,EAAE,KAAa,EAAsB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7J,MAAM,EAAE,GAAG,QAAQ,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IACjI,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;IACnC,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAuC,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9J,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI;QAC9C,wCAAwC,EAAE,gBAAgB,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,OAAO,EAAE,EAAE;QAChG,OAAO,CAAC,CAAC,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE;KACzG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAE,CAAC,IAAI,EAAE,CAAC;IAC5C,IAAI,WAAW,CAAC,MAAM,GAAG,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACjH,MAAM,OAAO,GAAG,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS;QACpD,CAAC,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,YAAY,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9K,MAAM,MAAM,GAAG,mBAAmB,CAAgB;QAChD,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,SAAS,EAAE,EAAE,CAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE;QACtJ,GAAG,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,IAAI,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE;QACtH,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,mBAAmB,EAAE,GAAG,CAAE;QAClH,WAAW,EAAE,EAAE,EAAE,WAAW;QAC5B,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,yBAAyB,IAAI,GAAG,CAAC,iBAAiB,IAAI,OAAO,EAAE,cAAc,EAAE,GAAG,CAAC;QAC3H,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,EAAE,gBAAgB,EAAE,GAAG,CAAC;QACvE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,uBAAuB,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC;QAC9G,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU;QACnE,GAAG,CAAC,sBAAsB,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvH,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChC,EAAE,eAAe,CAAC,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AACvE,CAAC;AAKD,MAAM,+BAA+B,GAAG,GAAwB,EAAE,CAAC,IAAI,mBAAmB,CAAC,kBAAkB,EAAE,yDAAyD,CAAC,CAAC;AAE1K,KAAK,UAAU,eAAe,CAAC,QAAkB;IAC/C,IAAI,CAAC,QAAQ,CAAC,IAAI;QAAE,MAAM,+BAA+B,EAAE,CAAC;IAC5D,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACzC,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,CAAC;QACH,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAI;gBAAE,MAAM;YAChB,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC;YAC1B,IAAI,KAAK,GAAG,kBAAkB,EAAE,CAAC;gBAC/B,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;gBACtB,MAAM,+BAA+B,EAAE,CAAC;YAC1C,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;YAAS,CAAC;QAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IAAC,CAAC;IACnC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,wFAAwF;AACxF,KAAK,UAAU,iBAAiB,CAAC,QAAkB;IACjD,IAAI,CAAC;QACH,MAAM,IAAI,GAAY,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACrF,MAAM,IAAI,GAAG,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,IAAgC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QACpG,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAe,EAAE,MAAqB,EAAE,MAAc,EAAE,SAAS,GAAG,kBAAkB;IAC7H,IAAI,CAAC;QACH,qFAAqF;QACrF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,qBAAqB,EAAE;YAC5D,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;YACzE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,aAAa,EAAE,UAAU,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;SACjH,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,MAAM,iBAAiB,CAAC,QAAQ,CAAC,KAAK,iBAAiB,EAAE,CAAC;gBACvF,MAAM,IAAI,mBAAmB,CAAC,iBAAiB,EAAE,oHAAoH,CAAC,CAAC;YACzK,CAAC;YACD,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;YAC9B,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;gBAAE,OAAO,IAAI,CAAC;YACzC,MAAM,QAAQ,GAA2B;gBACvC,GAAG,EAAE,iDAAiD,EAAE,GAAG,EAAE,kCAAkC;gBAC/F,GAAG,EAAE,wDAAwD;gBAC7D,GAAG,EAAE,iDAAiD;aACvD,CAAC;YACF,MAAM,IAAI,mBAAmB,CAAC,QAAQ,QAAQ,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,+CAA+C,CAAC,CAAC;QACzI,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC1F,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;YAC9B,MAAM,+BAA+B,EAAE,CAAC;QAC1C,CAAC;QACD,MAAM,IAAI,GAAY,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,MAAM,+BAA+B,EAAE,CAAC;QAC/E,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAA+B,CAAC;QAC5E,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,CAAC,iEAAiE,CAAC,IAAI,CAAC,EAAE,CAAC;eACpG,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC;eAC/D,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE;eAC/G,SAAS,KAAK,GAAG,OAAO,kBAAkB,EAAE,IAAI,KAAK,EAAE,EAAE,CAAC;YAC7D,MAAM,+BAA+B,EAAE,CAAC;QAC1C,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,mBAAmB;YAAE,MAAM,KAAK,CAAC;QACtD,IAAI,KAAK,YAAY,WAAW;YAAE,MAAM,+BAA+B,EAAE,CAAC;QAC1E,MAAM,IAAI,mBAAmB,CAAC,gBAAgB,EAAE,4FAA4F,CAAC,CAAC;IAChJ,CAAC;AACH,CAAC"}