arc-1 1.0.2 → 1.1.0

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 (166) hide show
  1. package/bin/arc1-cli.js +3 -7
  2. package/bin/arc1.js +4 -9
  3. package/dist/adt/abapgit.d.ts +10 -5
  4. package/dist/adt/abapgit.d.ts.map +1 -1
  5. package/dist/adt/abapgit.js +357 -76
  6. package/dist/adt/abapgit.js.map +1 -1
  7. package/dist/adt/atc.d.ts +49 -0
  8. package/dist/adt/atc.d.ts.map +1 -0
  9. package/dist/adt/atc.js +294 -0
  10. package/dist/adt/atc.js.map +1 -0
  11. package/dist/adt/aunit-package.d.ts +22 -0
  12. package/dist/adt/aunit-package.d.ts.map +1 -0
  13. package/dist/adt/aunit-package.js +78 -0
  14. package/dist/adt/aunit-package.js.map +1 -0
  15. package/dist/adt/aunit.d.ts +143 -0
  16. package/dist/adt/aunit.d.ts.map +1 -0
  17. package/dist/adt/aunit.js +987 -0
  18. package/dist/adt/aunit.js.map +1 -0
  19. package/dist/adt/client.d.ts +9 -7
  20. package/dist/adt/client.d.ts.map +1 -1
  21. package/dist/adt/client.js +55 -64
  22. package/dist/adt/client.js.map +1 -1
  23. package/dist/adt/config.d.ts +2 -0
  24. package/dist/adt/config.d.ts.map +1 -1
  25. package/dist/adt/config.js +1 -0
  26. package/dist/adt/config.js.map +1 -1
  27. package/dist/adt/devtools.d.ts +8 -30
  28. package/dist/adt/devtools.d.ts.map +1 -1
  29. package/dist/adt/devtools.js +41 -218
  30. package/dist/adt/devtools.js.map +1 -1
  31. package/dist/adt/diagnostics.d.ts +1 -1
  32. package/dist/adt/diagnostics.d.ts.map +1 -1
  33. package/dist/adt/diagnostics.js +12 -12
  34. package/dist/adt/diagnostics.js.map +1 -1
  35. package/dist/adt/errors.d.ts +7 -0
  36. package/dist/adt/errors.d.ts.map +1 -1
  37. package/dist/adt/errors.js +7 -0
  38. package/dist/adt/errors.js.map +1 -1
  39. package/dist/adt/features.d.ts +9 -3
  40. package/dist/adt/features.d.ts.map +1 -1
  41. package/dist/adt/features.js +40 -8
  42. package/dist/adt/features.js.map +1 -1
  43. package/dist/adt/gcts.d.ts +12 -45
  44. package/dist/adt/gcts.d.ts.map +1 -1
  45. package/dist/adt/gcts.js +299 -171
  46. package/dist/adt/gcts.js.map +1 -1
  47. package/dist/adt/http-deadline.d.ts +23 -0
  48. package/dist/adt/http-deadline.d.ts.map +1 -0
  49. package/dist/adt/http-deadline.js +106 -0
  50. package/dist/adt/http-deadline.js.map +1 -0
  51. package/dist/adt/http-wire-body.d.ts +2 -0
  52. package/dist/adt/http-wire-body.d.ts.map +1 -0
  53. package/dist/adt/http-wire-body.js +14 -0
  54. package/dist/adt/http-wire-body.js.map +1 -0
  55. package/dist/adt/http.d.ts +10 -24
  56. package/dist/adt/http.d.ts.map +1 -1
  57. package/dist/adt/http.js +89 -53
  58. package/dist/adt/http.js.map +1 -1
  59. package/dist/adt/path-safety.d.ts +16 -0
  60. package/dist/adt/path-safety.d.ts.map +1 -0
  61. package/dist/adt/path-safety.js +101 -0
  62. package/dist/adt/path-safety.js.map +1 -0
  63. package/dist/adt/semaphore.d.ts +2 -2
  64. package/dist/adt/semaphore.d.ts.map +1 -1
  65. package/dist/adt/semaphore.js +26 -9
  66. package/dist/adt/semaphore.js.map +1 -1
  67. package/dist/adt/source-diff.d.ts +10 -1
  68. package/dist/adt/source-diff.d.ts.map +1 -1
  69. package/dist/adt/source-diff.js +33 -7
  70. package/dist/adt/source-diff.js.map +1 -1
  71. package/dist/adt/text-search.d.ts +25 -0
  72. package/dist/adt/text-search.d.ts.map +1 -0
  73. package/dist/adt/text-search.js +152 -0
  74. package/dist/adt/text-search.js.map +1 -0
  75. package/dist/adt/transport-diff.d.ts +128 -0
  76. package/dist/adt/transport-diff.d.ts.map +1 -0
  77. package/dist/adt/transport-diff.js +524 -0
  78. package/dist/adt/transport-diff.js.map +1 -0
  79. package/dist/adt/transport.d.ts +78 -13
  80. package/dist/adt/transport.d.ts.map +1 -1
  81. package/dist/adt/transport.js +443 -41
  82. package/dist/adt/transport.js.map +1 -1
  83. package/dist/adt/types.d.ts +23 -12
  84. package/dist/adt/types.d.ts.map +1 -1
  85. package/dist/adt/xml-parser.d.ts +1 -8
  86. package/dist/adt/xml-parser.d.ts.map +1 -1
  87. package/dist/adt/xml-parser.js +54 -60
  88. package/dist/adt/xml-parser.js.map +1 -1
  89. package/dist/authz/policy.d.ts.map +1 -1
  90. package/dist/authz/policy.js +5 -2
  91. package/dist/authz/policy.js.map +1 -1
  92. package/dist/cli-args.d.ts +2 -2
  93. package/dist/cli-args.js +2 -2
  94. package/dist/cli-checks.d.ts +56 -0
  95. package/dist/cli-checks.d.ts.map +1 -0
  96. package/dist/cli-checks.js +368 -0
  97. package/dist/cli-checks.js.map +1 -0
  98. package/dist/cli.d.ts +68 -15
  99. package/dist/cli.d.ts.map +1 -1
  100. package/dist/cli.js +677 -297
  101. package/dist/cli.js.map +1 -1
  102. package/dist/handlers/cds-hints.d.ts.map +1 -1
  103. package/dist/handlers/cds-hints.js +1 -10
  104. package/dist/handlers/cds-hints.js.map +1 -1
  105. package/dist/handlers/diagnose.d.ts +4 -0
  106. package/dist/handlers/diagnose.d.ts.map +1 -1
  107. package/dist/handlers/diagnose.js +616 -9
  108. package/dist/handlers/diagnose.js.map +1 -1
  109. package/dist/handlers/dispatch.d.ts.map +1 -1
  110. package/dist/handlers/dispatch.js +40 -1
  111. package/dist/handlers/dispatch.js.map +1 -1
  112. package/dist/handlers/git.d.ts.map +1 -1
  113. package/dist/handlers/git.js +165 -84
  114. package/dist/handlers/git.js.map +1 -1
  115. package/dist/handlers/read.d.ts.map +1 -1
  116. package/dist/handlers/read.js +15 -0
  117. package/dist/handlers/read.js.map +1 -1
  118. package/dist/handlers/schemas.d.ts +15 -2
  119. package/dist/handlers/schemas.d.ts.map +1 -1
  120. package/dist/handlers/schemas.js +75 -6
  121. package/dist/handlers/schemas.js.map +1 -1
  122. package/dist/handlers/search.js +1 -1
  123. package/dist/handlers/search.js.map +1 -1
  124. package/dist/handlers/tools.d.ts.map +1 -1
  125. package/dist/handlers/tools.js +51 -42
  126. package/dist/handlers/tools.js.map +1 -1
  127. package/dist/handlers/transport.d.ts +2 -1
  128. package/dist/handlers/transport.d.ts.map +1 -1
  129. package/dist/handlers/transport.js +128 -27
  130. package/dist/handlers/transport.js.map +1 -1
  131. package/dist/handlers/write/create.d.ts.map +1 -1
  132. package/dist/handlers/write/create.js +11 -0
  133. package/dist/handlers/write/create.js.map +1 -1
  134. package/dist/handlers/write/update-delete.d.ts.map +1 -1
  135. package/dist/handlers/write/update-delete.js +33 -10
  136. package/dist/handlers/write/update-delete.js.map +1 -1
  137. package/dist/handlers/write-helpers.d.ts.map +1 -1
  138. package/dist/handlers/write-helpers.js +3 -2
  139. package/dist/handlers/write-helpers.js.map +1 -1
  140. package/dist/server/audit.d.ts +1 -1
  141. package/dist/server/audit.d.ts.map +1 -1
  142. package/dist/server/audit.js +228 -21
  143. package/dist/server/audit.js.map +1 -1
  144. package/dist/server/config.d.ts +16 -0
  145. package/dist/server/config.d.ts.map +1 -1
  146. package/dist/server/config.js +145 -17
  147. package/dist/server/config.js.map +1 -1
  148. package/dist/server/effective-policy-log.d.ts +2 -1
  149. package/dist/server/effective-policy-log.d.ts.map +1 -1
  150. package/dist/server/effective-policy-log.js +8 -2
  151. package/dist/server/effective-policy-log.js.map +1 -1
  152. package/dist/server/multi-target-runtime.d.ts.map +1 -1
  153. package/dist/server/multi-target-runtime.js +3 -0
  154. package/dist/server/multi-target-runtime.js.map +1 -1
  155. package/dist/server/multi-target-tools.d.ts.map +1 -1
  156. package/dist/server/multi-target-tools.js +5 -0
  157. package/dist/server/multi-target-tools.js.map +1 -1
  158. package/dist/server/server.d.ts +15 -13
  159. package/dist/server/server.d.ts.map +1 -1
  160. package/dist/server/server.js +36 -26
  161. package/dist/server/server.js.map +1 -1
  162. package/dist/server/types.d.ts +2 -0
  163. package/dist/server/types.d.ts.map +1 -1
  164. package/dist/server/types.js +1 -0
  165. package/dist/server/types.js.map +1 -1
  166. package/package.json +13 -13
package/dist/adt/gcts.js CHANGED
@@ -4,14 +4,260 @@
4
4
  * gCTS uses JSON payloads under /sap/bc/cts_abapvcs/*.
5
5
  */
6
6
  import { AdtApiError, AdtSafetyError, classifyGctsError } from './errors.js';
7
- import { checkGit, checkOperation, checkPackage, OperationType } from './safety.js';
7
+ import { checkGit, checkOperation, OperationType } from './safety.js';
8
8
  const GCTS_BASE = '/sap/bc/cts_abapvcs';
9
9
  const JSON_HEADERS = { Accept: 'application/json' };
10
- const JSON_CONTENT_TYPE = 'application/json';
10
+ const GCTS_MUTATION_QUARANTINE = 'gCTS mutations are unavailable until ARC-1 implements staged VCS_NO_IMPORT fetch, affected-object inventory, authorization preflight, explicit deploy, terminal confirmation, and rollback. No gCTS mutation was sent.';
11
+ const GCTS_REDACTION_LIMIT_MARKER = '[TRUNCATED: redaction budget exceeded]';
12
+ const GCTS_REDACTION_MAX_DEPTH = 16;
13
+ // gCTS list/config payloads are legitimately wide. Keep the defensive traversal cap well above
14
+ // ordinary API responses so redaction never turns a successful list into partial data.
15
+ const GCTS_REDACTION_MAX_ENTRIES = 10_000;
16
+ const GCTS_REDACTION_MAX_STRING_LENGTH = 4_096;
17
+ const GCTS_REDACTION_STRING_PREFIX_LENGTH = 2_000;
18
+ const GIT_SECRET_FRAGMENTS = [
19
+ 'password',
20
+ 'passwd',
21
+ 'passphrase',
22
+ 'pwd',
23
+ 'token',
24
+ 'secret',
25
+ 'auth_pwd',
26
+ 'auth_user',
27
+ 'auth_token',
28
+ 'authpwd',
29
+ 'authuser',
30
+ 'authtoken',
31
+ 'authorization',
32
+ 'apikey',
33
+ 'api_key',
34
+ 'credential',
35
+ 'accesskey',
36
+ 'access_key',
37
+ 'privatekey',
38
+ 'private_key',
39
+ 'sshkey',
40
+ 'ssh_key',
41
+ 'signature',
42
+ 'cookie',
43
+ 'session',
44
+ 'sessionid',
45
+ 'jsessionid',
46
+ 'sapsessionid',
47
+ ];
11
48
  function parseJson(body) {
12
- if (!body)
13
- return {};
14
- return JSON.parse(body);
49
+ if (!body.trim())
50
+ throw new Error('gCTS returned an empty response where JSON was required.');
51
+ try {
52
+ return JSON.parse(body);
53
+ }
54
+ catch {
55
+ // JSON.parse includes a prefix of the response in its SyntaxError on current Node releases.
56
+ // Never let response-derived credentials escape through MCP/CLI error formatting.
57
+ throw new Error('gCTS returned invalid JSON. Check the endpoint and installed gCTS version.');
58
+ }
59
+ }
60
+ function isRecord(value) {
61
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
62
+ }
63
+ function normalizeSafeUnicodeEscapes(value) {
64
+ return value.replace(/\\{1,8}u([0-9a-f]{4})/gi, (encoded, hex) => {
65
+ const decoded = String.fromCharCode(Number.parseInt(hex, 16));
66
+ return /^[a-z0-9_.-]$/i.test(decoded) ? decoded : encoded;
67
+ });
68
+ }
69
+ function isGitSecretKey(key) {
70
+ const normalized = normalizeSafeUnicodeEscapes(key)
71
+ .toLowerCase()
72
+ .replace(/[^a-z0-9]/g, '');
73
+ return GIT_SECRET_FRAGMENTS.some((fragment) => normalized.includes(fragment));
74
+ }
75
+ function isCredentialQueryKey(key) {
76
+ const normalized = normalizeSafeUnicodeEscapes(key).toLowerCase();
77
+ return normalized === 'auth' || normalized.includes('authorization') || isGitSecretKey(normalized);
78
+ }
79
+ function redactCredentialAssignments(value) {
80
+ return value
81
+ .replace(/\bauthorization\s*([:=])\s*(?:bearer|basic)\s+(?:\\{1,64}"[^"]*\\{1,64}"|\\{1,64}'[^']*\\{1,64}'|"[^"]*"|'[^']*'|[^\s,;&<>"']+)/gi, 'authorization$1[REDACTED]')
82
+ .replace(/\b(bearer|basic)\s+(?:\\{1,64}"[^"]*\\{1,64}"|\\{1,64}'[^']*\\{1,64}'|"[^"]*"|'[^']*'|[^\s,;&<>"']+)/gi, '$1 [REDACTED]')
83
+ .replace(/\b(password|passwd|passphrase|pwd|token|secret|api[_-]?key|authorization|credential|access[_-]?key|private[_-]?key|ssh[_-]?key|signature|cookie|jsessionid|sap[_-]?sessionid|sessionid|session|(?:client[_-]?vcs[_-]?)?auth[_-]?(?:pwd|user|token)|remote[_-]?(?:password|user|token))(?:(?:\\{1,64})?["'])?\s*([:=])\s*(?:(?:bearer|basic)\s+)?(?:\\{1,64}"[^"]*\\{1,64}"|\\{1,64}'[^']*\\{1,64}'|"[^"]*"|'[^']*'|[^\s,;&<>"']+)/gi, '$1$2[REDACTED]');
84
+ }
85
+ function normalizeEscapedUrlSlashes(value) {
86
+ return normalizeSafeUnicodeEscapes(value.replace(/\\{1,8}\//g, '/'));
87
+ }
88
+ function boundGctsString(value, originalLength = value.length) {
89
+ if (value.length <= GCTS_REDACTION_MAX_STRING_LENGTH && originalLength <= GCTS_REDACTION_MAX_STRING_LENGTH) {
90
+ return value;
91
+ }
92
+ return `${value.slice(0, GCTS_REDACTION_STRING_PREFIX_LENGTH)}... [truncated ${originalLength} chars]`;
93
+ }
94
+ function gctsStringInput(value) {
95
+ return value.length <= GCTS_REDACTION_MAX_STRING_LENGTH ? value : value.slice(0, GCTS_REDACTION_MAX_STRING_LENGTH);
96
+ }
97
+ function redactUrlAssignments(value) {
98
+ return redactCredentialAssignments(value).replace(/(^|[&;])([^=&;]+)(?:=([^&;]*))?/g, (part, separator, rawKey) => {
99
+ let decodedKey = rawKey;
100
+ try {
101
+ decodedKey = decodeURIComponent(rawKey.replace(/\+/g, ' '));
102
+ }
103
+ catch {
104
+ // Keep the raw key for the sensitivity check.
105
+ }
106
+ return isCredentialQueryKey(decodedKey) ? `${separator}[REDACTED]=[REDACTED]` : part;
107
+ });
108
+ }
109
+ function redactUrl(value) {
110
+ const normalizedValue = normalizeEscapedUrlSlashes(gctsStringInput(value));
111
+ try {
112
+ const parsed = new URL(normalizedValue);
113
+ parsed.username = '';
114
+ parsed.password = '';
115
+ parsed.pathname = redactCredentialAssignments(parsed.pathname);
116
+ if (parsed.search)
117
+ parsed.search = `?${redactUrlAssignments(parsed.search.slice(1))}`;
118
+ if (parsed.hash)
119
+ parsed.hash = `#${redactUrlAssignments(parsed.hash.slice(1))}`;
120
+ return parsed.toString();
121
+ }
122
+ catch {
123
+ const withoutUserinfo = normalizedValue.replace(/^([a-z][a-z\d+.-]*:\/\/)[^/@\s]+@/i, '$1[REDACTED]@');
124
+ const fragmentStart = withoutUserinfo.indexOf('#');
125
+ const beforeFragment = fragmentStart >= 0 ? withoutUserinfo.slice(0, fragmentStart) : withoutUserinfo;
126
+ const fragment = fragmentStart >= 0 ? withoutUserinfo.slice(fragmentStart + 1) : undefined;
127
+ const queryStart = beforeFragment.indexOf('?');
128
+ const path = queryStart >= 0 ? beforeFragment.slice(0, queryStart) : beforeFragment;
129
+ const query = queryStart >= 0 ? beforeFragment.slice(queryStart + 1) : undefined;
130
+ return `${redactCredentialAssignments(path)}${query === undefined ? '' : `?${redactUrlAssignments(query)}`}${fragment === undefined ? '' : `#${redactUrlAssignments(fragment)}`}`;
131
+ }
132
+ }
133
+ function redactUrlsInText(value) {
134
+ const redacted = redactCredentialAssignments(normalizeEscapedUrlSlashes(gctsStringInput(value))).replace(/https?:\/\/[^\s<>"']+/gi, (candidate) => {
135
+ const trailing = candidate.match(/[),.;]+$/)?.[0] ?? '';
136
+ const core = trailing ? candidate.slice(0, -trailing.length) : candidate;
137
+ return `${redactUrl(core)}${trailing}`;
138
+ });
139
+ return boundGctsString(redacted, value.length);
140
+ }
141
+ function redactedOutputKey(entryKey, target) {
142
+ const boundedInput = gctsStringInput(entryKey);
143
+ const sanitized = isCredentialQueryKey(boundedInput)
144
+ ? '[REDACTED sensitive key]'
145
+ : boundGctsString(redactUrlsInText(boundedInput), entryKey.length);
146
+ if (!Object.hasOwn(target, sanitized))
147
+ return sanitized;
148
+ // Different attacker-controlled names can collapse to the same redacted key. Preserve every
149
+ // value without reintroducing either original key or an unbounded suffix.
150
+ let collision = 2;
151
+ while (Object.hasOwn(target, `[REDACTED duplicate key ${collision}]`))
152
+ collision += 1;
153
+ return `[REDACTED duplicate key ${collision}]`;
154
+ }
155
+ function setRedactedEntry(target, entryKey, value) {
156
+ Object.defineProperty(target, redactedOutputKey(entryKey, target), {
157
+ value,
158
+ enumerable: true,
159
+ configurable: true,
160
+ writable: true,
161
+ });
162
+ }
163
+ /** Remove credential-bearing gCTS config and URL values before they can reach tool output. */
164
+ function redactGctsValueWithinBudget(value, key, state, depth) {
165
+ if (depth > GCTS_REDACTION_MAX_DEPTH || state.remainingEntries <= 0)
166
+ return GCTS_REDACTION_LIMIT_MARKER;
167
+ state.remainingEntries -= 1;
168
+ if (isGitSecretKey(key))
169
+ return '[REDACTED]';
170
+ if (typeof value === 'string') {
171
+ const redacted = key.toLowerCase().includes('url') || key.toLowerCase().includes('uri')
172
+ ? redactUrl(value)
173
+ : redactUrlsInText(value);
174
+ return boundGctsString(redacted, value.length);
175
+ }
176
+ if (Array.isArray(value)) {
177
+ if (state.seen.has(value))
178
+ return GCTS_REDACTION_LIMIT_MARKER;
179
+ state.seen.add(value);
180
+ const result = [];
181
+ for (const entry of value) {
182
+ if (state.remainingEntries <= 0) {
183
+ result.push(GCTS_REDACTION_LIMIT_MARKER);
184
+ break;
185
+ }
186
+ result.push(redactGctsValueWithinBudget(entry, key, state, depth + 1));
187
+ }
188
+ return result;
189
+ }
190
+ if (!isRecord(value))
191
+ return value;
192
+ if (state.seen.has(value))
193
+ return GCTS_REDACTION_LIMIT_MARKER;
194
+ state.seen.add(value);
195
+ const configKey = String(value.ckey ?? value.key ?? '').trim();
196
+ const sensitiveConfigEntry = isGitSecretKey(configKey);
197
+ const redacted = {};
198
+ for (const [entryKey, entryValue] of Object.entries(value)) {
199
+ if (state.remainingEntries <= 0) {
200
+ setRedactedEntry(redacted, '__truncated__', GCTS_REDACTION_LIMIT_MARKER);
201
+ break;
202
+ }
203
+ let redactedValue;
204
+ if (sensitiveConfigEntry && ['value', 'defaultvalue', 'currentvalue', 'example'].includes(entryKey.toLowerCase())) {
205
+ redactedValue = '[REDACTED]';
206
+ }
207
+ else {
208
+ redactedValue = redactGctsValueWithinBudget(entryValue, entryKey, state, depth + 1);
209
+ }
210
+ setRedactedEntry(redacted, entryKey, redactedValue);
211
+ }
212
+ return redacted;
213
+ }
214
+ export function redactGctsValue(value, key = '') {
215
+ return redactGctsValueWithinBudget(value, key, { remainingEntries: GCTS_REDACTION_MAX_ENTRIES, seen: new WeakSet() }, 0);
216
+ }
217
+ function redactGctsText(value) {
218
+ try {
219
+ return JSON.stringify(redactGctsValue(JSON.parse(value)));
220
+ }
221
+ catch {
222
+ return redactUrlsInText(value);
223
+ }
224
+ }
225
+ function redactGctsResponseBody(value) {
226
+ if (!value)
227
+ return '';
228
+ try {
229
+ return JSON.stringify(redactGctsValue(JSON.parse(value)));
230
+ }
231
+ catch {
232
+ return `[REDACTED invalid/non-JSON gCTS response ${value.length} chars]`;
233
+ }
234
+ }
235
+ function requireArrayWrapper(payload, wrapper, operation) {
236
+ if (isRecord(payload) && Array.isArray(payload[wrapper]))
237
+ return payload[wrapper];
238
+ throw new Error(`gCTS ${operation} returned an unexpected response shape; expected {${wrapper}:[...]}.`);
239
+ }
240
+ function requireObjectWrapper(payload, wrapper, operation) {
241
+ if (isRecord(payload) && isRecord(payload[wrapper]))
242
+ return payload;
243
+ throw new Error(`gCTS ${operation} returned an unexpected response shape; expected {${wrapper}:{...}}.`);
244
+ }
245
+ export const GCTS_QUARANTINED_MUTATIONS = {
246
+ clone: [OperationType.Create, 'GctsCloneRepo'],
247
+ pull: [OperationType.Update, 'GctsPullRepo'],
248
+ create_branch: [OperationType.Create, 'GctsCreateBranch'],
249
+ switch_branch: [OperationType.Update, 'GctsSwitchBranch'],
250
+ unlink: [OperationType.Delete, 'GctsDeleteRepo'],
251
+ };
252
+ /** Fail closed before dispatch while gCTS mutations lack transactional postconditions. */
253
+ export function enforceGctsMutationQuarantine(safety, action) {
254
+ const mutation = GCTS_QUARANTINED_MUTATIONS[action];
255
+ if (!mutation)
256
+ return;
257
+ const [opType, operation] = mutation;
258
+ checkOperation(safety, opType, operation);
259
+ checkGit(safety, action);
260
+ throw new AdtSafetyError(`${operation}: ${GCTS_MUTATION_QUARANTINE}`);
15
261
  }
16
262
  function errorMessageFromPayload(payload) {
17
263
  if (typeof payload !== 'object' || payload === null)
@@ -20,66 +266,56 @@ function errorMessageFromPayload(payload) {
20
266
  const log = Array.isArray(record.log) ? record.log : [];
21
267
  const errorLog = log.find((entry) => typeof entry === 'object' &&
22
268
  entry !== null &&
23
- String(entry.severity ?? '').toUpperCase() === 'ERROR');
269
+ String(entry.severity ?? '')
270
+ .trim()
271
+ .toUpperCase() === 'ERROR');
24
272
  return typeof errorLog?.message === 'string' ? errorLog.message : undefined;
25
273
  }
26
274
  async function requestGcts(path, run) {
27
275
  try {
28
- return await run();
276
+ const response = await run();
277
+ if (response.body) {
278
+ try {
279
+ const payload = JSON.parse(response.body);
280
+ const logMessage = errorMessageFromPayload(payload);
281
+ if (logMessage) {
282
+ throw new AdtApiError(redactGctsText(logMessage), 500, path, JSON.stringify(redactGctsValue(payload)));
283
+ }
284
+ }
285
+ catch (err) {
286
+ if (err instanceof AdtApiError)
287
+ throw err;
288
+ // The endpoint-specific parser below owns non-JSON/invalid-JSON diagnostics.
289
+ }
290
+ }
291
+ return response;
29
292
  }
30
293
  catch (err) {
31
294
  if (err instanceof AdtApiError) {
32
- const classified = classifyGctsError(err.responseBody ?? '');
33
- const detail = classified.exception ?? classified.logMessage;
34
- if (detail) {
35
- throw new AdtApiError(detail, err.statusCode, err.path || path, err.responseBody);
36
- }
295
+ const rawBody = err.responseBody ?? '';
296
+ const classified = classifyGctsError(rawBody);
297
+ const safeBody = redactGctsResponseBody(rawBody);
298
+ const detail = classified.exception ??
299
+ classified.logMessage ??
300
+ (rawBody ? 'gCTS request failed with an invalid or unclassified response.' : err.message);
301
+ throw new AdtApiError(redactGctsText(detail), err.statusCode, redactUrlsInText(err.path || path), safeBody);
37
302
  }
38
303
  throw err;
39
304
  }
40
305
  }
41
- function withRepoCredentials(payload, user, password, token) {
42
- const config = Array.isArray(payload.config) ? [...payload.config] : [];
43
- if (user)
44
- config.push({ key: 'CLIENT_VCS_AUTH_USER', value: user });
45
- if (password)
46
- config.push({ key: 'CLIENT_VCS_AUTH_PWD', value: password });
47
- if (token)
48
- config.push({ key: 'CLIENT_VCS_AUTH_TOKEN', value: token });
49
- return {
50
- ...payload,
51
- ...(config.length > 0 ? { config } : {}),
52
- };
53
- }
54
- function repoPackage(repo) {
55
- return typeof repo.package === 'string' && repo.package.trim() ? repo.package.trim() : undefined;
56
- }
57
- function findRepoById(repos, repoId) {
58
- return repos.find((repo) => repo.rid === repoId || repo.name === repoId);
59
- }
60
- async function enforceExistingRepoPackage(http, safety, repoId, operation, resolver) {
61
- if (safety.allowedPackages.length === 0)
62
- return;
63
- const repo = findRepoById(await listRepos(http, safety), repoId);
64
- const pkg = repo ? repoPackage(repo) : undefined;
65
- if (!pkg) {
66
- throw new AdtSafetyError(`${operation} could not resolve package for gCTS repository '${repoId}'; refusing to mutate because allowedPackages is configured.`);
67
- }
68
- await checkPackage(safety, pkg, resolver);
69
- }
70
306
  /** gCTS system status (/system). */
71
307
  export async function getSystemInfo(http, safety) {
72
308
  checkOperation(safety, OperationType.Read, 'GctsGetSystemInfo');
73
309
  const path = `${GCTS_BASE}/system`;
74
310
  const resp = await requestGcts(path, () => http.get(path, JSON_HEADERS));
75
- return parseJson(resp.body);
311
+ return redactGctsValue(requireObjectWrapper(parseJson(resp.body), 'result', 'system info'));
76
312
  }
77
313
  /** gCTS user scopes (/user). */
78
314
  export async function getUserInfo(http, safety) {
79
315
  checkOperation(safety, OperationType.Read, 'GctsGetUserInfo');
80
316
  const path = `${GCTS_BASE}/user`;
81
317
  const resp = await requestGcts(path, () => http.get(path, JSON_HEADERS));
82
- return parseJson(resp.body);
318
+ return redactGctsValue(requireObjectWrapper(parseJson(resp.body), 'user', 'user info'));
83
319
  }
84
320
  /** gCTS configuration schema (/config or /repository/{rid}/config). */
85
321
  export async function getConfig(http, safety, repoId) {
@@ -87,12 +323,7 @@ export async function getConfig(http, safety, repoId) {
87
323
  const path = repoId ? `${GCTS_BASE}/repository/${encodeURIComponent(repoId)}/config` : `${GCTS_BASE}/config`;
88
324
  const resp = await requestGcts(path, () => http.get(path, JSON_HEADERS));
89
325
  const parsed = parseJson(resp.body);
90
- if (Array.isArray(parsed))
91
- return parsed;
92
- if (typeof parsed === 'object' && parsed !== null && Array.isArray(parsed.result)) {
93
- return parsed.result;
94
- }
95
- return [];
326
+ return redactGctsValue(requireArrayWrapper(parsed, 'config', 'config'));
96
327
  }
97
328
  /** List gCTS repositories. Returns [] for empty-object response shape. */
98
329
  export async function listRepos(http, safety) {
@@ -105,76 +336,13 @@ export async function listRepos(http, safety) {
105
336
  return [];
106
337
  }
107
338
  if (Array.isArray(parsed))
108
- return parsed;
109
- if (typeof parsed === 'object' && parsed !== null && Array.isArray(parsed.result)) {
110
- return parsed.result;
339
+ return redactGctsValue(parsed);
340
+ if (isRecord(parsed) && Array.isArray(parsed.result))
341
+ return redactGctsValue(parsed.result);
342
+ if (isRecord(parsed) && Array.isArray(parsed.repositories)) {
343
+ return redactGctsValue(parsed.repositories);
111
344
  }
112
- return [];
113
- }
114
- /** Clone/link a repository in gCTS. */
115
- export async function cloneRepo(http, safety, params, resolver) {
116
- checkOperation(safety, OperationType.Create, 'GctsCloneRepo');
117
- checkGit(safety, 'clone');
118
- // When an allowlist is configured, the package is not optional: gCTS would
119
- // otherwise bind the repo to a server-derived default (possibly outside the
120
- // allowlist). Force the caller to declare the target package up-front.
121
- if (safety.allowedPackages.length > 0 && !params.package) {
122
- throw new AdtSafetyError(`GctsCloneRepo requires an explicit 'package' when allowedPackages is configured (allowed: ${JSON.stringify(safety.allowedPackages)})`);
123
- }
124
- if (params.package)
125
- await checkPackage(safety, params.package, resolver);
126
- const path = `${GCTS_BASE}/repository`;
127
- const payload = withRepoCredentials({
128
- rid: params.rid,
129
- name: params.name,
130
- role: params.role,
131
- type: params.type,
132
- vSID: params.vSID,
133
- url: params.url,
134
- package: params.package,
135
- privateFlag: params.privateFlag,
136
- config: params.config,
137
- }, params.user, params.password, params.token);
138
- const resp = await requestGcts(path, () => http.post(path, JSON.stringify(payload), JSON_CONTENT_TYPE, JSON_HEADERS));
139
- const parsed = parseJson(resp.body);
140
- const logMessage = errorMessageFromPayload(parsed);
141
- if (logMessage) {
142
- throw new AdtApiError(logMessage, 500, path, resp.body);
143
- }
144
- return parsed;
145
- }
146
- /** Pull latest changes or a specific commit. */
147
- export async function pullRepo(http, safety, repoId, commit, resolver) {
148
- checkOperation(safety, OperationType.Update, 'GctsPullRepo');
149
- checkGit(safety, 'pull');
150
- await enforceExistingRepoPackage(http, safety, repoId, 'GctsPullRepo', resolver);
151
- const path = `${GCTS_BASE}/repository/${encodeURIComponent(repoId)}/pullByCommit`;
152
- const resp = await requestGcts(path, () => http.post(path, JSON.stringify(commit ? { commit } : {}), JSON_CONTENT_TYPE, JSON_HEADERS));
153
- const parsed = parseJson(resp.body);
154
- const logMessage = errorMessageFromPayload(parsed);
155
- if (logMessage) {
156
- throw new AdtApiError(logMessage, 500, path, resp.body);
157
- }
158
- return parsed;
159
- }
160
- /** Commit staged gCTS changes. */
161
- export async function commitRepo(http, safety, repoId, params, resolver) {
162
- checkOperation(safety, OperationType.Update, 'GctsCommitRepo');
163
- checkGit(safety, 'commit');
164
- await enforceExistingRepoPackage(http, safety, repoId, 'GctsCommitRepo', resolver);
165
- const path = `${GCTS_BASE}/repository/${encodeURIComponent(repoId)}/commit`;
166
- const body = JSON.stringify({
167
- ...(params.message ? { message: params.message } : {}),
168
- ...(params.description ? { description: params.description } : {}),
169
- ...(params.objects ? { objects: params.objects } : {}),
170
- });
171
- const resp = await requestGcts(path, () => http.post(path, body, JSON_CONTENT_TYPE, JSON_HEADERS));
172
- const parsed = parseJson(resp.body);
173
- const logMessage = errorMessageFromPayload(parsed);
174
- if (logMessage) {
175
- throw new AdtApiError(logMessage, 500, path, resp.body);
176
- }
177
- return parsed;
345
+ throw new Error('gCTS repository list returned an unexpected response shape.');
178
346
  }
179
347
  /** List branches for a repository. */
180
348
  export async function listBranches(http, safety, repoId) {
@@ -182,39 +350,7 @@ export async function listBranches(http, safety, repoId) {
182
350
  const path = `${GCTS_BASE}/repository/${encodeURIComponent(repoId)}/branches`;
183
351
  const resp = await requestGcts(path, () => http.get(path, JSON_HEADERS));
184
352
  const parsed = parseJson(resp.body);
185
- if (Array.isArray(parsed))
186
- return parsed;
187
- if (typeof parsed === 'object' && parsed !== null && Array.isArray(parsed.result)) {
188
- return parsed.result;
189
- }
190
- return [];
191
- }
192
- /** Create a branch in gCTS. */
193
- export async function createBranch(http, safety, repoId, params, resolver) {
194
- checkOperation(safety, OperationType.Update, 'GctsCreateBranch');
195
- checkGit(safety, 'create_branch');
196
- if (params.package)
197
- await checkPackage(safety, params.package, resolver);
198
- const path = `${GCTS_BASE}/repository/${encodeURIComponent(repoId)}/branches`;
199
- const body = JSON.stringify({
200
- branch: params.branch,
201
- isSymbolic: params.isSymbolic ?? false,
202
- isPeeled: params.isPeeled ?? false,
203
- type: params.type ?? 'head',
204
- });
205
- const resp = await requestGcts(path, () => http.post(path, body, JSON_CONTENT_TYPE, JSON_HEADERS));
206
- return parseJson(resp.body);
207
- }
208
- /** Switch branch in gCTS. */
209
- export async function switchBranch(http, safety, repoId, branch, resolver) {
210
- checkOperation(safety, OperationType.Update, 'GctsSwitchBranch');
211
- checkGit(safety, 'switch_branch');
212
- // A checkout deserializes the branch's objects into the repo's server-bound package, just like a
213
- // pull — gate it against the same allowlist so it cannot mutate a package outside the ceiling.
214
- await enforceExistingRepoPackage(http, safety, repoId, 'GctsSwitchBranch', resolver);
215
- const path = `${GCTS_BASE}/repository/${encodeURIComponent(repoId)}/checkout/${encodeURIComponent(branch)}`;
216
- const resp = await requestGcts(path, () => http.post(path, JSON.stringify({}), JSON_CONTENT_TYPE, JSON_HEADERS));
217
- return parseJson(resp.body);
353
+ return redactGctsValue(requireArrayWrapper(parsed, 'branches', 'branches'));
218
354
  }
219
355
  /** Commit history for a repository. */
220
356
  export async function getCommitHistory(http, safety, repoId, limit = 20) {
@@ -223,12 +359,12 @@ export async function getCommitHistory(http, safety, repoId, limit = 20) {
223
359
  const path = `${GCTS_BASE}/repository/${encodeURIComponent(repoId)}/getCommit?limit=${encodeURIComponent(String(safeLimit))}`;
224
360
  const resp = await requestGcts(path, () => http.get(path, JSON_HEADERS));
225
361
  const parsed = parseJson(resp.body);
226
- if (Array.isArray(parsed))
227
- return parsed;
228
- if (typeof parsed === 'object' && parsed !== null && Array.isArray(parsed.result)) {
229
- return parsed.result;
230
- }
231
- return [];
362
+ const commits = requireArrayWrapper(parsed, 'commits', 'commit history');
363
+ return redactGctsValue(commits.map((commit) => ({
364
+ ...commit,
365
+ ...(commit.id && !commit.commit ? { commit: commit.id } : {}),
366
+ ...(commit.authorMail && !commit.email ? { email: commit.authorMail } : {}),
367
+ })));
232
368
  }
233
369
  /** List repository objects tracked by gCTS. */
234
370
  export async function listRepoObjects(http, safety, repoId) {
@@ -236,25 +372,17 @@ export async function listRepoObjects(http, safety, repoId) {
236
372
  const path = `${GCTS_BASE}/repository/${encodeURIComponent(repoId)}/objects`;
237
373
  const resp = await requestGcts(path, () => http.get(path, JSON_HEADERS));
238
374
  const parsed = parseJson(resp.body);
239
- if (Array.isArray(parsed))
240
- return parsed;
241
- if (typeof parsed === 'object' && parsed !== null && Array.isArray(parsed.result)) {
242
- return parsed.result;
243
- }
244
- return [];
375
+ if (isRecord(parsed) && Array.isArray(parsed.objects))
376
+ return redactGctsValue(parsed.objects);
377
+ if (isRecord(parsed) && Array.isArray(parsed.result))
378
+ return redactGctsValue(parsed.result);
379
+ throw new Error('gCTS repository objects returned an unexpected response shape.');
245
380
  }
246
381
  /** Read transport history for repository linkage diagnostics. */
247
382
  export async function getTransportHistory(http, safety, repoId) {
248
383
  checkOperation(safety, OperationType.Read, 'GctsGetTransportHistory');
249
384
  const path = `${GCTS_BASE}/repository/history/${encodeURIComponent(repoId)}`;
250
385
  const resp = await requestGcts(path, () => http.get(path, JSON_HEADERS));
251
- return parseJson(resp.body);
252
- }
253
- /** Unlink/delete a gCTS repository. */
254
- export async function deleteRepo(http, safety, repoId) {
255
- checkOperation(safety, OperationType.Delete, 'GctsDeleteRepo');
256
- checkGit(safety, 'unlink');
257
- const path = `${GCTS_BASE}/repository/${encodeURIComponent(repoId)}`;
258
- await requestGcts(path, () => http.delete(path, JSON_HEADERS));
386
+ return redactGctsValue(parseJson(resp.body));
259
387
  }
260
388
  //# sourceMappingURL=gcts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gcts.js","sourceRoot":"","sources":["../../src/adt/gcts.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAG7E,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAqB,MAAM,aAAa,CAAC;AAYvG,MAAM,SAAS,GAAG,qBAAqB,CAAC;AACxC,MAAM,YAAY,GAAG,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;AACpD,MAAM,iBAAiB,GAAG,kBAAkB,CAAC;AAoC7C,SAAS,SAAS,CAAI,IAAY;IAChC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAO,CAAC;IAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;AAC/B,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAgB;IAC/C,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACtE,MAAM,MAAM,GAAG,OAAkC,CAAC;IAClD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CACvB,CAAC,KAAK,EAAE,EAAE,CACR,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,CAAE,KAAiC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO,CAC/C,CAAC;IACzC,OAAO,OAAO,QAAQ,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9E,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,IAAY,EACZ,GAAyF;IAEzF,IAAI,CAAC;QACH,OAAO,MAAM,GAAG,EAAE,CAAC;IACrB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;YAC7D,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,UAAU,CAAC;YAC7D,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAgC,EAAE,IAAa,EAAE,QAAiB,EAAE,KAAc;IAC7G,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAI,OAAO,CAAC,MAA4B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/F,IAAI,IAAI;QAAE,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,sBAAsB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,IAAI,QAAQ;QAAE,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,qBAAqB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC3E,IAAI,KAAK;QAAE,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAEvE,OAAO;QACL,GAAG,OAAO;QACV,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzC,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,IAAc;IACjC,OAAO,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACnG,CAAC;AAED,SAAS,YAAY,CAAC,KAAiB,EAAE,MAAc;IACrD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;AAC3E,CAAC;AAED,KAAK,UAAU,0BAA0B,CACvC,IAAmB,EACnB,MAAoB,EACpB,MAAc,EACd,SAAiB,EACjB,QAA0C;IAE1C,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEhD,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IACjE,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACjD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,cAAc,CACtB,GAAG,SAAS,mDAAmD,MAAM,8DAA8D,CACpI,CAAC;IACJ,CAAC;IACD,MAAM,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC5C,CAAC;AAED,oCAAoC;AACpC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAmB,EAAE,MAAoB;IAC3E,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,GAAG,SAAS,SAAS,CAAC;IACnC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IACzE,OAAO,SAAS,CAAiB,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED,gCAAgC;AAChC,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAmB,EAAE,MAAoB;IACzE,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,GAAG,SAAS,OAAO,CAAC;IACjC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IACzE,OAAO,SAAS,CAAe,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,uEAAuE;AACvE,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAmB,EAAE,MAAoB,EAAE,MAAe;IACxF,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,eAAe,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,SAAS,CAAC;IAC7G,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IACzE,MAAM,MAAM,GAAG,SAAS,CAAU,IAAI,CAAC,IAAI,CAAC,CAAC;IAE7C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,MAAsB,CAAC;IACzD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAE,MAAkC,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/G,OAAQ,MAAmC,CAAC,MAAM,CAAC;IACrD,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAmB,EAAE,MAAoB;IACvE,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,GAAG,SAAS,aAAa,CAAC;IACvC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IACzE,MAAM,MAAM,GAAG,SAAS,CAAU,IAAI,CAAC,IAAI,CAAC,CAAC;IAE7C,2EAA2E;IAC3E,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAiC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjH,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,MAAoB,CAAC;IACvD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAE,MAAkC,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/G,OAAQ,MAAiC,CAAC,MAAM,CAAC;IACnD,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,uCAAuC;AACvC,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAmB,EACnB,MAAoB,EACpB,MAAuB,EACvB,QAA0C;IAE1C,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC9D,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1B,2EAA2E;IAC3E,4EAA4E;IAC5E,uEAAuE;IACvE,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACzD,MAAM,IAAI,cAAc,CACtB,6FAA6F,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,CACvI,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,OAAO;QAAE,MAAM,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAEzE,MAAM,IAAI,GAAG,GAAG,SAAS,aAAa,CAAC;IACvC,MAAM,OAAO,GAAG,mBAAmB,CACjC;QACE,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,EACD,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,KAAK,CACb,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC,CAAC;IAEtH,MAAM,MAAM,GAAG,SAAS,CAAU,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACnD,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,IAAI,WAAW,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,MAAyB,CAAC;AACnC,CAAC;AAED,gDAAgD;AAChD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,IAAmB,EACnB,MAAoB,EACpB,MAAc,EACd,MAAe,EACf,QAA0C;IAE1C,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC7D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzB,MAAM,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;IAEjF,MAAM,IAAI,GAAG,GAAG,SAAS,eAAe,kBAAkB,CAAC,MAAM,CAAC,eAAe,CAAC;IAClF,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,CACxC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAC3F,CAAC;IACF,MAAM,MAAM,GAAG,SAAS,CAA0B,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACnD,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,IAAI,WAAW,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,kCAAkC;AAClC,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAAmB,EACnB,MAAoB,EACpB,MAAc,EACd,MAAwB,EACxB,QAA0C;IAE1C,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC/D,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC3B,MAAM,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IAEnF,MAAM,IAAI,GAAG,GAAG,SAAS,eAAe,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC;IAC5E,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1B,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvD,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC,CAAC;IACnG,MAAM,MAAM,GAAG,SAAS,CAA0B,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACnD,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,IAAI,WAAW,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,sCAAsC;AACtC,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAmB,EAAE,MAAoB,EAAE,MAAc;IAC1F,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,GAAG,SAAS,eAAe,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC;IAC9E,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IACzE,MAAM,MAAM,GAAG,SAAS,CAAU,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,MAAsB,CAAC;IACzD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAE,MAAkC,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/G,OAAQ,MAAmC,CAAC,MAAM,CAAC;IACrD,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,+BAA+B;AAC/B,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAmB,EACnB,MAAoB,EACpB,MAAc,EACd,MAA8B,EAC9B,QAA0C;IAE1C,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACjE,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAClC,IAAI,MAAM,CAAC,OAAO;QAAE,MAAM,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAEzE,MAAM,IAAI,GAAG,GAAG,SAAS,eAAe,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC;IAC9E,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,KAAK;QACtC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,KAAK;QAClC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM;KAC5B,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC,CAAC;IACnG,OAAO,SAAS,CAA0B,IAAI,CAAC,IAAI,CAAC,CAAC;AACvD,CAAC;AAED,6BAA6B;AAC7B,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAmB,EACnB,MAAoB,EACpB,MAAc,EACd,MAAc,EACd,QAA0C;IAE1C,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACjE,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAClC,iGAAiG;IACjG,+FAA+F;IAC/F,MAAM,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IAErF,MAAM,IAAI,GAAG,GAAG,SAAS,eAAe,kBAAkB,CAAC,MAAM,CAAC,aAAa,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;IAC5G,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC,CAAC;IACjH,OAAO,SAAS,CAA0B,IAAI,CAAC,IAAI,CAAC,CAAC;AACvD,CAAC;AAED,uCAAuC;AACvC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAmB,EACnB,MAAoB,EACpB,MAAc,EACd,KAAK,GAAG,EAAE;IAEV,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/E,MAAM,IAAI,GAAG,GAAG,SAAS,eAAe,kBAAkB,CAAC,MAAM,CAAC,oBAAoB,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;IAC9H,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IACzE,MAAM,MAAM,GAAG,SAAS,CAAU,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,MAAsB,CAAC;IACzD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAE,MAAkC,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/G,OAAQ,MAAmC,CAAC,MAAM,CAAC;IACrD,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,+CAA+C;AAC/C,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAmB,EACnB,MAAoB,EACpB,MAAc;IAEd,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,GAAG,SAAS,eAAe,kBAAkB,CAAC,MAAM,CAAC,UAAU,CAAC;IAC7E,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IACzE,MAAM,MAAM,GAAG,SAAS,CAAU,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,MAAsB,CAAC;IACzD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAE,MAAkC,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/G,OAAQ,MAAmC,CAAC,MAAM,CAAC;IACrD,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,iEAAiE;AACjE,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAAmB,EACnB,MAAoB,EACpB,MAAc;IAEd,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;IACtE,MAAM,IAAI,GAAG,GAAG,SAAS,uBAAuB,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;IAC7E,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IACzE,OAAO,SAAS,CAA0B,IAAI,CAAC,IAAI,CAAC,CAAC;AACvD,CAAC;AAED,uCAAuC;AACvC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAmB,EAAE,MAAoB,EAAE,MAAc;IACxF,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC/D,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAE3B,MAAM,IAAI,GAAG,GAAG,SAAS,eAAe,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;IACrE,MAAM,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;AACjE,CAAC"}
1
+ {"version":3,"file":"gcts.js","sourceRoot":"","sources":["../../src/adt/gcts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export interface RequestDeadlineOptions {
2
+ signal?: AbortSignal;
3
+ deadline?: number;
4
+ }
5
+ export interface AdtRequestOptions extends RequestDeadlineOptions {
6
+ /** Override the 120-second per-fetch cap for a known long-running ADT operation. */
7
+ fetchTimeoutMs?: number;
8
+ /** Optional ADT subresource: handled 404s may be logged at debug level. */
9
+ suppressNotFoundLog?: boolean;
10
+ /** Capability probe: all non-2xx responses are expected evidence, not warning noise. */
11
+ probe?: boolean;
12
+ }
13
+ export declare function throwIfRequestCancelled(options?: RequestDeadlineOptions): void;
14
+ /** Caller-owned cancellation only (no built-in fetch timeout). */
15
+ export declare function requestBudgetSignal(options?: RequestDeadlineOptions): AbortSignal | undefined;
16
+ /** Await a non-fetch dependency without leaving an unhandled rejection after cancellation. */
17
+ export declare function awaitWithRequestSignal<T>(operation: Promise<T>, signal?: AbortSignal): Promise<T>;
18
+ export declare function awaitWithinRequestBudget<T>(operation: Promise<T>, options?: RequestDeadlineOptions): Promise<T>;
19
+ /** Compose the built-in per-fetch timeout with the caller's signal/deadline. */
20
+ export declare function requestSignal(options?: RequestDeadlineOptions): AbortSignal;
21
+ /** Retry delays consume the same caller budget as their surrounding HTTP request. */
22
+ export declare function sleepWithinRequestBudget(delayMs: number, options?: RequestDeadlineOptions): Promise<void>;
23
+ //# sourceMappingURL=http-deadline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-deadline.d.ts","sourceRoot":"","sources":["../../src/adt/http-deadline.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAkB,SAAQ,sBAAsB;IAC/D,oFAAoF;IACpF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,wFAAwF;IACxF,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AA+BD,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAS9E;AAED,kEAAkE;AAClE,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,WAAW,GAAG,SAAS,CAQ7F;AAED,8FAA8F;AAC9F,wBAAsB,sBAAsB,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAoBvG;AAED,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,CAAC,CAAC,CAS/G;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,WAAW,CAK3E;AAED,qFAAqF;AACrF,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAY/G"}