@absmartly/cli 1.1.0 → 1.3.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 (133) hide show
  1. package/README.md +24 -0
  2. package/dist/api-client/api-client.d.ts +132 -14
  3. package/dist/api-client/api-client.d.ts.map +1 -1
  4. package/dist/api-client/api-client.js +255 -66
  5. package/dist/api-client/api-client.js.map +1 -1
  6. package/dist/commands/apikeys/index.js +9 -1
  7. package/dist/commands/apikeys/index.js.map +1 -1
  8. package/dist/commands/apps/index.js +9 -1
  9. package/dist/commands/apps/index.js.map +1 -1
  10. package/dist/commands/auth/index.js +30 -0
  11. package/dist/commands/auth/index.js.map +1 -1
  12. package/dist/commands/customfields/index.js +9 -1
  13. package/dist/commands/customfields/index.js.map +1 -1
  14. package/dist/commands/envs/index.js +9 -1
  15. package/dist/commands/envs/index.js.map +1 -1
  16. package/dist/commands/experiments/activity.js +1 -1
  17. package/dist/commands/experiments/activity.js.map +1 -1
  18. package/dist/commands/experiments/export.d.ts.map +1 -1
  19. package/dist/commands/experiments/export.js +11 -4
  20. package/dist/commands/experiments/export.js.map +1 -1
  21. package/dist/commands/experiments/list.js +1 -1
  22. package/dist/commands/experiments/list.js.map +1 -1
  23. package/dist/commands/goals/index.js +9 -1
  24. package/dist/commands/goals/index.js.map +1 -1
  25. package/dist/commands/goaltags/index.js +9 -1
  26. package/dist/commands/goaltags/index.js.map +1 -1
  27. package/dist/commands/metriccategories/index.js +9 -1
  28. package/dist/commands/metriccategories/index.js.map +1 -1
  29. package/dist/commands/metrics/index.d.ts.map +1 -1
  30. package/dist/commands/metrics/index.js +179 -29
  31. package/dist/commands/metrics/index.js.map +1 -1
  32. package/dist/commands/metrictags/index.js +9 -1
  33. package/dist/commands/metrictags/index.js.map +1 -1
  34. package/dist/commands/roles/index.js +9 -1
  35. package/dist/commands/roles/index.js.map +1 -1
  36. package/dist/commands/segments/index.js +9 -1
  37. package/dist/commands/segments/index.js.map +1 -1
  38. package/dist/commands/tags/index.js +9 -1
  39. package/dist/commands/tags/index.js.map +1 -1
  40. package/dist/commands/teams/index.js +10 -1
  41. package/dist/commands/teams/index.js.map +1 -1
  42. package/dist/commands/units/index.js +9 -1
  43. package/dist/commands/units/index.js.map +1 -1
  44. package/dist/commands/webhooks/index.js +9 -1
  45. package/dist/commands/webhooks/index.js.map +1 -1
  46. package/dist/core/activity/activity.js +1 -1
  47. package/dist/core/activity/activity.js.map +1 -1
  48. package/dist/core/apikeys/apikeys.js +1 -1
  49. package/dist/core/apikeys/apikeys.js.map +1 -1
  50. package/dist/core/apps/apps.js +1 -1
  51. package/dist/core/apps/apps.js.map +1 -1
  52. package/dist/core/customfields/list.js +1 -1
  53. package/dist/core/customfields/list.js.map +1 -1
  54. package/dist/core/envs/envs.js +1 -1
  55. package/dist/core/envs/envs.js.map +1 -1
  56. package/dist/core/experiments/custom-fields.js +1 -1
  57. package/dist/core/experiments/custom-fields.js.map +1 -1
  58. package/dist/core/experiments/metrics.js +1 -1
  59. package/dist/core/experiments/metrics.js.map +1 -1
  60. package/dist/core/goals/list.js +1 -1
  61. package/dist/core/goals/list.js.map +1 -1
  62. package/dist/core/goaltags/goaltags.js +1 -1
  63. package/dist/core/goaltags/goaltags.js.map +1 -1
  64. package/dist/core/metriccategories/metriccategories.js +1 -1
  65. package/dist/core/metriccategories/metriccategories.js.map +1 -1
  66. package/dist/core/metrics/create.d.ts +2 -12
  67. package/dist/core/metrics/create.d.ts.map +1 -1
  68. package/dist/core/metrics/create.js +3 -19
  69. package/dist/core/metrics/create.js.map +1 -1
  70. package/dist/core/metrics/new-version.d.ts +13 -0
  71. package/dist/core/metrics/new-version.d.ts.map +1 -0
  72. package/dist/core/metrics/new-version.js +9 -0
  73. package/dist/core/metrics/new-version.js.map +1 -0
  74. package/dist/core/metrics/payload.d.ts +56 -0
  75. package/dist/core/metrics/payload.d.ts.map +1 -0
  76. package/dist/core/metrics/payload.js +173 -0
  77. package/dist/core/metrics/payload.js.map +1 -0
  78. package/dist/core/metrics/update.d.ts +2 -0
  79. package/dist/core/metrics/update.d.ts.map +1 -1
  80. package/dist/core/metrics/update.js +4 -0
  81. package/dist/core/metrics/update.js.map +1 -1
  82. package/dist/core/metrictags/metrictags.js +1 -1
  83. package/dist/core/metrictags/metrictags.js.map +1 -1
  84. package/dist/core/resolve.d.ts +1 -0
  85. package/dist/core/resolve.d.ts.map +1 -1
  86. package/dist/core/resolve.js +8 -0
  87. package/dist/core/resolve.js.map +1 -1
  88. package/dist/core/roles/roles.js +1 -1
  89. package/dist/core/roles/roles.js.map +1 -1
  90. package/dist/core/segments/segments.js +1 -1
  91. package/dist/core/segments/segments.js.map +1 -1
  92. package/dist/core/tags/tags.js +1 -1
  93. package/dist/core/tags/tags.js.map +1 -1
  94. package/dist/core/teams/list.d.ts.map +1 -1
  95. package/dist/core/teams/list.js +5 -1
  96. package/dist/core/teams/list.js.map +1 -1
  97. package/dist/core/units/units.js +1 -1
  98. package/dist/core/units/units.js.map +1 -1
  99. package/dist/core/webhooks/list.js +1 -1
  100. package/dist/core/webhooks/list.js.map +1 -1
  101. package/dist/index.js +8 -2
  102. package/dist/index.js.map +1 -1
  103. package/dist/lib/api/axios-adapter.d.ts +44 -11
  104. package/dist/lib/api/axios-adapter.d.ts.map +1 -1
  105. package/dist/lib/api/axios-adapter.js +211 -2
  106. package/dist/lib/api/axios-adapter.js.map +1 -1
  107. package/dist/lib/api/client.d.ts +2 -6
  108. package/dist/lib/api/client.d.ts.map +1 -1
  109. package/dist/lib/api/client.js +1 -1
  110. package/dist/lib/api/client.js.map +1 -1
  111. package/dist/lib/api/request-logger.d.ts +18 -0
  112. package/dist/lib/api/request-logger.d.ts.map +1 -0
  113. package/dist/lib/api/request-logger.js +353 -0
  114. package/dist/lib/api/request-logger.js.map +1 -0
  115. package/dist/lib/auth/token-exchange.d.ts.map +1 -1
  116. package/dist/lib/auth/token-exchange.js +30 -4
  117. package/dist/lib/auth/token-exchange.js.map +1 -1
  118. package/dist/lib/output/formatter.d.ts +1 -1
  119. package/dist/lib/output/formatter.d.ts.map +1 -1
  120. package/dist/lib/output/formatter.js +5 -0
  121. package/dist/lib/output/formatter.js.map +1 -1
  122. package/dist/lib/utils/api-helper.d.ts +7 -0
  123. package/dist/lib/utils/api-helper.d.ts.map +1 -1
  124. package/dist/lib/utils/api-helper.js +23 -1
  125. package/dist/lib/utils/api-helper.js.map +1 -1
  126. package/dist/lib/utils/download.d.ts +10 -1
  127. package/dist/lib/utils/download.d.ts.map +1 -1
  128. package/dist/lib/utils/download.js +69 -8
  129. package/dist/lib/utils/download.js.map +1 -1
  130. package/dist/lib/utils/list-command.d.ts.map +1 -1
  131. package/dist/lib/utils/list-command.js +7 -1
  132. package/dist/lib/utils/list-command.js.map +1 -1
  133. package/package.json +1 -1
@@ -1,4 +1,38 @@
1
1
  import type { HttpClient, HttpRequestConfig, HttpResponse } from '../../api-client/http-client.js';
2
+ declare module 'axios' {
3
+ interface InternalAxiosRequestConfig {
4
+ metadata?: {
5
+ startTime: number;
6
+ suppressed?: boolean;
7
+ };
8
+ }
9
+ }
10
+ export interface AxiosHttpClientOptions {
11
+ verbose?: boolean;
12
+ timeout?: number;
13
+ insecure?: boolean;
14
+ showRequest?: boolean;
15
+ showResponse?: boolean;
16
+ curl?: boolean;
17
+ showSecrets?: boolean;
18
+ headersOnly?: boolean;
19
+ statusOnly?: boolean;
20
+ noColor?: boolean;
21
+ }
22
+ /**
23
+ * Turn a Prisma-wrapped Postgres error into a readable summary.
24
+ * Input looks like (whitespace collapsed for this comment):
25
+ * Invalid `prisma.metric.create()` invocation: ... ConnectorError { ...
26
+ * PostgresError { code: "23514", message: "new row for relation \"metrics\"
27
+ * violates check constraint \"chk_goal_ratio\"", severity: "ERROR",
28
+ * detail: Some("Failing row contains (...)"), column: None, hint: None }
29
+ * ... }
30
+ *
31
+ * Returns the Postgres `message` on its own line, followed by the `detail`
32
+ * on a second line when present. Returns `undefined` when the input doesn't
33
+ * look like a Prisma error, so the caller can fall back to the raw body.
34
+ */
35
+ export declare function formatPrismaError(text: string): string | undefined;
2
36
  export type AuthConfig = {
3
37
  method: 'api-key';
4
38
  apiKey: string;
@@ -9,21 +43,20 @@ export type AuthConfig = {
9
43
  };
10
44
  export declare class AxiosHttpClient implements HttpClient {
11
45
  private client;
12
- private verbose;
46
+ private readonly verbose;
47
+ private readonly showRequest;
48
+ private readonly showResponse;
49
+ private readonly curl;
50
+ private readonly formatOpts;
51
+ private seenFingerprints;
52
+ private suppressedCount;
13
53
  protected authConfig: AuthConfig;
14
- constructor(endpoint: string, auth: string | AuthConfig, options?: {
15
- verbose?: boolean;
16
- timeout?: number;
17
- insecure?: boolean;
18
- });
54
+ constructor(endpoint: string, auth: string | AuthConfig, options?: AxiosHttpClientOptions);
55
+ private fingerprint;
19
56
  request<T>(config: HttpRequestConfig): Promise<HttpResponse<T>>;
20
57
  getBaseUrl(): string;
21
58
  getAuthHeader(): string;
22
59
  private handleError;
23
60
  }
24
- export declare function createAxiosHttpClient(endpoint: string, auth: string | AuthConfig, options?: {
25
- verbose?: boolean;
26
- timeout?: number;
27
- insecure?: boolean;
28
- }): AxiosHttpClient;
61
+ export declare function createAxiosHttpClient(endpoint: string, auth: string | AuthConfig, options?: AxiosHttpClientOptions): AxiosHttpClient;
29
62
  //# sourceMappingURL=axios-adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"axios-adapter.d.ts","sourceRoot":"","sources":["../../../src/lib/api/axios-adapter.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AASnG,MAAM,MAAM,UAAU,GAClB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAA;CAAE,CAAC;AAElF,qBAAa,eAAgB,YAAW,UAAU;IAChD,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,OAAO,CAAU;IACzB,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC;gBAG/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GAAG,UAAU,EACzB,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAO;IAwGrE,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAmCrE,UAAU,IAAI,MAAM;IAIpB,aAAa,IAAI,MAAM;IAOvB,OAAO,CAAC,WAAW;CAiDpB;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GAAG,UAAU,EACzB,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GACpE,eAAe,CAEjB"}
1
+ {"version":3,"file":"axios-adapter.d.ts","sourceRoot":"","sources":["../../../src/lib/api/axios-adapter.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAYnG,OAAO,QAAQ,OAAO,CAAC;IACrB,UAAU,0BAA0B;QAClC,QAAQ,CAAC,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;KACxD;CACF;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AASD;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQlE;AAqCD,MAAM,MAAM,UAAU,GAClB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAA;CAAE,CAAC;AAclF,qBAAa,eAAgB,YAAW,UAAU;IAChD,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAU;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IACvC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,gBAAgB,CAA0B;IAClD,OAAO,CAAC,eAAe,CAAK;IAC5B,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC;gBAErB,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,OAAO,GAAE,sBAA2B;IA6L7F,OAAO,CAAC,WAAW;IAoBb,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAmCrE,UAAU,IAAI,MAAM;IAIpB,aAAa,IAAI,MAAM;IAOvB,OAAO,CAAC,WAAW;CA2FpB;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GAAG,UAAU,EACzB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,eAAe,CAEjB"}
@@ -3,16 +3,102 @@ import https from 'https';
3
3
  import axiosRetry from 'axios-retry';
4
4
  import { version } from '../utils/version.js';
5
5
  import { APIError } from '../../api-client/http-client.js';
6
+ import { formatRequestHTTP, formatRequestCurl, formatResponseHTTP, formatNetworkError, formatGenericError, formatSuppressionNotice, safeStringify, } from './request-logger.js';
6
7
  const DEFAULT_TIMEOUT = 30000;
7
8
  const RETRY_COUNT = 3;
8
9
  const NON_IDEMPOTENT_PUT_PATHS = ['/start', '/stop', '/restart', '/development', '/full_on'];
9
10
  const IDEMPOTENT_METHODS = ['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE'];
11
+ /**
12
+ * Turn a Prisma-wrapped Postgres error into a readable summary.
13
+ * Input looks like (whitespace collapsed for this comment):
14
+ * Invalid `prisma.metric.create()` invocation: ... ConnectorError { ...
15
+ * PostgresError { code: "23514", message: "new row for relation \"metrics\"
16
+ * violates check constraint \"chk_goal_ratio\"", severity: "ERROR",
17
+ * detail: Some("Failing row contains (...)"), column: None, hint: None }
18
+ * ... }
19
+ *
20
+ * Returns the Postgres `message` on its own line, followed by the `detail`
21
+ * on a second line when present. Returns `undefined` when the input doesn't
22
+ * look like a Prisma error, so the caller can fall back to the raw body.
23
+ */
24
+ export function formatPrismaError(text) {
25
+ if (!text.includes('PostgresError') && !text.includes('prisma.'))
26
+ return undefined;
27
+ const message = extractRustString(text, /\bmessage:\s*"/);
28
+ if (message === undefined)
29
+ return undefined;
30
+ const detail = extractRustString(text, /\bdetail:\s*Some\("/);
31
+ return detail !== undefined ? `${message}\n${detail}` : message;
32
+ }
33
+ /**
34
+ * Scan forward from the first match of `startRe` and return the contents of
35
+ * the following Rust-debug-formatted double-quoted string, unescaping `\"`
36
+ * and `\\` (the only escapes Rust's default Debug impl for &str emits).
37
+ */
38
+ function extractRustString(text, startRe) {
39
+ const match = startRe.exec(text);
40
+ if (!match)
41
+ return undefined;
42
+ let i = match.index + match[0].length;
43
+ let out = '';
44
+ while (i < text.length) {
45
+ const ch = text[i];
46
+ if (ch === '\\' && i + 1 < text.length) {
47
+ const next = text[i + 1];
48
+ if (next === '"' || next === '\\') {
49
+ out += next;
50
+ i += 2;
51
+ continue;
52
+ }
53
+ if (next === 'n') {
54
+ out += '\n';
55
+ i += 2;
56
+ continue;
57
+ }
58
+ out += next;
59
+ i += 2;
60
+ continue;
61
+ }
62
+ if (ch === '"')
63
+ return out;
64
+ out += ch;
65
+ i += 1;
66
+ }
67
+ return undefined;
68
+ }
69
+ function extractAuthValue(headers) {
70
+ if (!headers || typeof headers !== 'object')
71
+ return '';
72
+ const obj = typeof headers.toJSON === 'function'
73
+ ? headers.toJSON()
74
+ : headers;
75
+ for (const [k, v] of Object.entries(obj)) {
76
+ if (k.toLowerCase() === 'authorization' && typeof v === 'string')
77
+ return v;
78
+ }
79
+ return '';
80
+ }
10
81
  export class AxiosHttpClient {
11
82
  client;
12
83
  verbose;
84
+ showRequest;
85
+ showResponse;
86
+ curl;
87
+ formatOpts;
88
+ seenFingerprints = new Set();
89
+ suppressedCount = 0;
13
90
  authConfig;
14
91
  constructor(endpoint, auth, options = {}) {
15
92
  this.verbose = options.verbose ?? false;
93
+ this.showRequest = options.showRequest ?? false;
94
+ this.showResponse = options.showResponse ?? false;
95
+ this.curl = options.curl ?? false;
96
+ this.formatOpts = {
97
+ showSecrets: options.showSecrets ?? false,
98
+ omitBody: options.headersOnly ?? false,
99
+ statusOnly: options.statusOnly ?? false,
100
+ color: !!process.stderr.isTTY && !(options.noColor ?? false),
101
+ };
16
102
  this.authConfig = typeof auth === 'string' ? { method: 'api-key', apiKey: auth } : auth;
17
103
  const authHeader = this.authConfig.method === 'api-key'
18
104
  ? `Api-Key ${this.authConfig.apiKey}`
@@ -53,6 +139,76 @@ export class AxiosHttpClient {
53
139
  return config;
54
140
  });
55
141
  }
142
+ // Request interceptor stamps startTime even when only --show-response is
143
+ // set, so the response handler below can compute elapsed time.
144
+ if (this.showRequest || this.curl || this.showResponse) {
145
+ this.client.interceptors.request.use((config) => {
146
+ config.metadata = { startTime: Date.now() };
147
+ // Polling loops produce streams of repeating requests, often
148
+ // alternating between several URLs. Track every fingerprint we've
149
+ // already printed in this client and suppress any later request
150
+ // (and its matching response) that matches one we've seen. The
151
+ // first time a brand-new request comes through, flush a
152
+ // "(N suppressed)" summary before printing it.
153
+ //
154
+ // This trades response visibility for noise reduction: state
155
+ // changes that *only* show up in response bodies of otherwise-
156
+ // identical requests will be hidden. Acceptable for typical CLI
157
+ // debugging — the user can disable suppression by varying their
158
+ // requests, or split into separate invocations.
159
+ if (this.showRequest || this.curl || this.showResponse) {
160
+ const fp = this.fingerprint(config);
161
+ if (this.seenFingerprints.has(fp)) {
162
+ this.suppressedCount++;
163
+ config.metadata.suppressed = true;
164
+ return config;
165
+ }
166
+ if (this.suppressedCount > 0) {
167
+ process.stderr.write(formatSuppressionNotice(this.suppressedCount, this.formatOpts.color) + '\n');
168
+ this.suppressedCount = 0;
169
+ }
170
+ this.seenFingerprints.add(fp);
171
+ if (this.showRequest) {
172
+ process.stderr.write(formatRequestHTTP(config, this.formatOpts) + '\n');
173
+ }
174
+ if (this.curl) {
175
+ process.stderr.write(formatRequestCurl(config, this.formatOpts) + '\n');
176
+ }
177
+ }
178
+ return config;
179
+ });
180
+ }
181
+ if (this.showResponse) {
182
+ this.client.interceptors.response.use((response) => {
183
+ if (response.config.metadata?.suppressed)
184
+ return response;
185
+ const start = response.config.metadata?.startTime ?? Date.now();
186
+ const elapsed = Date.now() - start;
187
+ process.stderr.write(formatResponseHTTP(response, elapsed, this.formatOpts) + '\n');
188
+ return response;
189
+ }, (error) => {
190
+ if (axios.isAxiosError(error)) {
191
+ if (error.config?.metadata?.suppressed)
192
+ return Promise.reject(error);
193
+ const start = error.config?.metadata?.startTime ?? Date.now();
194
+ const elapsed = Date.now() - start;
195
+ if (error.response) {
196
+ process.stderr.write(formatResponseHTTP(error.response, elapsed, this.formatOpts) + '\n');
197
+ }
198
+ else {
199
+ process.stderr.write(formatNetworkError(error, elapsed, this.formatOpts) + '\n');
200
+ }
201
+ }
202
+ else {
203
+ // Non-axios errors reach this handler when an upstream interceptor
204
+ // (e.g. the OAuth refresh path below) wraps and rejects with a
205
+ // custom error type. Without this branch --show-response would go
206
+ // silent in those cases.
207
+ process.stderr.write(formatGenericError(error, 0, this.formatOpts) + '\n');
208
+ }
209
+ return Promise.reject(error);
210
+ });
211
+ }
56
212
  if (this.authConfig.method === 'oauth-jwt' && this.authConfig.onExpired) {
57
213
  const onExpired = this.authConfig.onExpired;
58
214
  let isRefreshing = false;
@@ -91,6 +247,18 @@ export class AxiosHttpClient {
91
247
  throw error;
92
248
  });
93
249
  }
250
+ fingerprint(config) {
251
+ const method = (config.method ?? 'GET').toUpperCase();
252
+ const url = config.url ?? '';
253
+ const params = config.params ? safeStringify(config.params) : '';
254
+ const body = config.data ? safeStringify(config.data) : '';
255
+ // Include the Authorization header so OAuth refresh retries (which change
256
+ // the token) and the axios-retry retryCount so failed-then-retried
257
+ // requests are not collapsed into the original.
258
+ const auth = extractAuthValue(config.headers);
259
+ const retry = config['axios-retry']?.retryCount ?? 0;
260
+ return `${method}|${url}|${params}|${body}|${auth}|${retry}`;
261
+ }
94
262
  async request(config) {
95
263
  const axiosConfig = {
96
264
  method: config.method,
@@ -132,6 +300,40 @@ export class AxiosHttpClient {
132
300
  const endpoint = error.config?.url || 'unknown endpoint';
133
301
  const method = error.config?.method?.toUpperCase() || 'unknown method';
134
302
  const status = error.response?.status;
303
+ const responseData = error.response?.data;
304
+ // Surface a human-readable body message from common error shapes.
305
+ // The backend returns {errors: [...]} for validation failures (handled by
306
+ // handleCommandError when the APIError reaches the command layer) and may
307
+ // return {message: "..."} or a raw string for other errors.
308
+ const rawBodyMessage = (() => {
309
+ if (!responseData)
310
+ return undefined;
311
+ if (typeof responseData === 'string')
312
+ return responseData;
313
+ const msg = responseData.message ?? responseData.error ?? responseData.detail;
314
+ return typeof msg === 'string' ? msg : undefined;
315
+ })();
316
+ // DB errors from Prisma come back with a long wrapper that buries the two
317
+ // parts an operator actually needs: the Postgres `message` and `detail`.
318
+ // When we recognise the shape, render just those so the user sees
319
+ // message: new row for relation "metrics" violates check constraint "chk_goal_ratio"
320
+ // detail: Failing row contains (...)
321
+ // instead of the full ConnectorError/PostgresError debug dump.
322
+ const bodyMessage = rawBodyMessage
323
+ ? (formatPrismaError(rawBodyMessage) ?? rawBodyMessage)
324
+ : undefined;
325
+ // DB check-constraint failures (5xx) often bubble up cryptic Prisma text.
326
+ // Detect the goal_ratio constraint and add a concrete hint.
327
+ const constraintHint = (() => {
328
+ const haystack = `${error.message ?? ''} ${rawBodyMessage ?? ''}`;
329
+ if (haystack.includes('chk_goal_ratio')) {
330
+ return (`Hint: goal_ratio needs consistent numerator/denominator fields. Verify\n` +
331
+ `that goal_id/value_source_property match the numerator_type and that\n` +
332
+ `denominator_goal_id/denominator_value_source_property match the\n` +
333
+ `denominator_type. Empty strings are not equivalent to null.`);
334
+ }
335
+ return undefined;
336
+ })();
135
337
  let message;
136
338
  switch (status) {
137
339
  case 401:
@@ -171,8 +373,15 @@ export class AxiosHttpClient {
171
373
  `The server took too long to respond. Please try again.`;
172
374
  }
173
375
  else {
174
- message =
175
- `API error: ${error.message || 'unknown error'}\n` + `Endpoint: ${method} ${endpoint}`;
376
+ const lines = [
377
+ `API error: ${error.message || 'unknown error'}`,
378
+ `Endpoint: ${method} ${endpoint}`,
379
+ ];
380
+ if (bodyMessage)
381
+ lines.push('', bodyMessage);
382
+ if (constraintHint)
383
+ lines.push('', constraintHint);
384
+ message = lines.join('\n');
176
385
  }
177
386
  }
178
387
  return new APIError(message, status, error.response?.data);
@@ -1 +1 @@
1
- {"version":3,"file":"axios-adapter.js","sourceRoot":"","sources":["../../../src/lib/api/axios-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAG3D,MAAM,eAAe,GAAG,KAAK,CAAC;AAC9B,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB,MAAM,wBAAwB,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;AAE7F,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAMvE,MAAM,OAAO,eAAe;IAClB,MAAM,CAAgB;IACtB,OAAO,CAAU;IACf,UAAU,CAAa;IAEjC,YACE,QAAgB,EAChB,IAAyB,EACzB,UAAuE,EAAE;QAEzE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC;QAExC,IAAI,CAAC,UAAU,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAExF,MAAM,UAAU,GACd,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,SAAS;YAClC,CAAC,CAAC,WAAW,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YACrC,CAAC,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAExC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YACzB,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,eAAe;YAC3C,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,UAAU,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YACvF,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU;gBACzB,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,kBAAkB;gBAC1B,YAAY,EAAE,iBAAiB,OAAO,EAAE;aACzC;SACF,CAAC,CAAC;QAEH,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE;YACtB,OAAO,EAAE,WAAW;YACpB,UAAU,EAAE,UAAU,CAAC,gBAAgB;YACvC,cAAc,EAAE,CAAC,KAAiB,EAAE,EAAE;gBACpC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;gBACnD,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;gBAEpC,IAAI,MAAM,KAAK,KAAK,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC9E,OAAO,KAAK,CAAC;gBACf,CAAC;gBAED,MAAM,YAAY,GAAG,kBAAkB,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;gBAC/D,IAAI,CAAC,YAAY;oBAAE,OAAO,KAAK,CAAC;gBAEhC,IAAI,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC;oBAAE,OAAO,IAAI,CAAC;gBAElD,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG;oBAAE,OAAO,IAAI,CAAC;gBAEhD,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC;YAC9C,CAAC;SACF,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC9C,OAAO,CAAC,KAAK,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;gBACvE,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;YACxE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YAC5C,IAAI,YAAY,GAAG,KAAK,CAAC;YAEzB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,KAAc,EAAE,EAAE;gBACxE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;oBACjF,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC/B,CAAC;gBAED,YAAY,GAAG,IAAI,CAAC;gBACpB,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,MAAM,SAAS,EAAE,CAAC;oBAClC,MAAM,SAAS,GACb,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,UAAU,OAAO,CAAC,KAAK,EAAE,CAAC;oBAEzF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC;oBACjE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;oBAE1B,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;wBACjB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC;wBAClD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAC3C,CAAC;gBACH,CAAC;gBAAC,OAAO,YAAY,EAAE,CAAC;oBACtB,MAAM,UAAU,GACd,YAAY,YAAY,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;oBAC9E,OAAO,CAAC,KAAK,CAAC,kCAAkC,UAAU,EAAE,CAAC,CAAC;oBAC9D,MAAM,YAAY,GAAG,IAAI,QAAQ,CAC/B,sDAAsD,UAAU,MAAM;wBACpE,qBAAqB,EACvB,GAAG,EACH,KAAK,CAAC,QAAQ,EAAE,IAAI,CACrB,CAAC;oBACF,OAAO,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBACtC,CAAC;wBAAS,CAAC;oBACT,YAAY,GAAG,KAAK,CAAC;gBACvB,CAAC;gBAED,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CACnC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EACtB,CAAC,KAAc,EAAE,EAAE;YACjB,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAI,MAAyB;QACxC,MAAM,WAAW,GAA4B;YAC3C,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,GAAG,EAAE,MAAM,CAAC,GAAG;SAChB,CAAC;QAEF,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACjC,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QACvC,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QACrC,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,WAAW,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACjC,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACjC,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QACvC,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAExD,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACvB,CAAC;QACH,CAAC;QAED,OAAO;YACL,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,IAAI,EAAE,QAAQ,CAAC,IAAS;YACxB,OAAO;SACR,CAAC;IACJ,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;IAC5C,CAAC;IAED,aAAa;QACX,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC7C,OAAO,CACJ,OAAO,CAAC,MAAM,EAAE,CAAC,eAAe,CAAY,IAAK,OAAO,CAAC,eAAe,CAAY,IAAI,EAAE,CAC5F,CAAC;IACJ,CAAC;IAEO,WAAW,CAAC,KAAiB;QACnC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,kBAAkB,CAAC;QACzD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,gBAAgB,CAAC;QACvE,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC;QAEtC,IAAI,OAAe,CAAC;QACpB,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,GAAG;gBACN,OAAO;oBACL,6CAA6C;wBAC7C,aAAa,MAAM,IAAI,QAAQ,IAAI;wBACnC,wCAAwC,CAAC;gBAC3C,MAAM;YACR,KAAK,GAAG;gBACN,OAAO;oBACL,2DAA2D;wBAC3D,aAAa,MAAM,IAAI,QAAQ,IAAI;wBACnC,yDAAyD,CAAC;gBAC5D,MAAM;YACR,KAAK,GAAG;gBACN,OAAO,GAAG,uCAAuC,GAAG,aAAa,MAAM,IAAI,QAAQ,EAAE,CAAC;gBACtF,MAAM;YACR,KAAK,GAAG,CAAC,CAAC,CAAC;gBACT,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;gBAC1D,OAAO;oBACL,wBAAwB;wBACxB,aAAa,MAAM,IAAI,QAAQ,IAAI;wBACnC,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,UAAU,UAAU,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC;gBAClF,MAAM;YACR,CAAC;YACD;gBACE,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;oBAChE,OAAO;wBACL,iCAAiC;4BACjC,aAAa,QAAQ,IAAI;4BACzB,sEAAsE,CAAC;gBAC3E,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;oBACtC,OAAO;wBACL,oBAAoB;4BACpB,aAAa,MAAM,IAAI,QAAQ,IAAI;4BACnC,wDAAwD,CAAC;gBAC7D,CAAC;qBAAM,CAAC;oBACN,OAAO;wBACL,cAAc,KAAK,CAAC,OAAO,IAAI,eAAe,IAAI,GAAG,aAAa,MAAM,IAAI,QAAQ,EAAE,CAAC;gBAC3F,CAAC;QACL,CAAC;QAED,OAAO,IAAI,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;CACF;AAED,MAAM,UAAU,qBAAqB,CACnC,QAAgB,EAChB,IAAyB,EACzB,OAAqE;IAErE,OAAO,IAAI,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACtD,CAAC"}
1
+ {"version":3,"file":"axios-adapter.js","sourceRoot":"","sources":["../../../src/lib/api/axios-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAE3D,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,aAAa,GAEd,MAAM,qBAAqB,CAAC;AAqB7B,MAAM,eAAe,GAAG,KAAK,CAAC;AAC9B,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB,MAAM,wBAAwB,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;AAE7F,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAEvE;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAEnF,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAC1D,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAE5C,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;IAC9D,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,IAAY,EAAE,OAAe;IACtD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACpB,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;YAC1B,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClC,GAAG,IAAI,IAAI,CAAC;gBACZ,CAAC,IAAI,CAAC,CAAC;gBACP,SAAS;YACX,CAAC;YACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjB,GAAG,IAAI,IAAI,CAAC;gBACZ,CAAC,IAAI,CAAC,CAAC;gBACP,SAAS;YACX,CAAC;YACD,GAAG,IAAI,IAAI,CAAC;YACZ,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,EAAE,KAAK,GAAG;YAAE,OAAO,GAAG,CAAC;QAC3B,GAAG,IAAI,EAAE,CAAC;QACV,CAAC,IAAI,CAAC,CAAC;IACT,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAMD,SAAS,gBAAgB,CAAC,OAAgB;IACxC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACvD,MAAM,GAAG,GACP,OAAQ,OAAsC,CAAC,MAAM,KAAK,UAAU;QAClE,CAAC,CAAG,OAAqD,CAAC,MAAM,EAA8B;QAC9F,CAAC,CAAE,OAAmC,CAAC;IAC3C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,eAAe,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,OAAO,eAAe;IAClB,MAAM,CAAgB;IACb,OAAO,CAAU;IACjB,WAAW,CAAU;IACrB,YAAY,CAAU;IACtB,IAAI,CAAU;IACd,UAAU,CAAgB;IACnC,gBAAgB,GAAgB,IAAI,GAAG,EAAE,CAAC;IAC1C,eAAe,GAAG,CAAC,CAAC;IAClB,UAAU,CAAa;IAEjC,YAAY,QAAgB,EAAE,IAAyB,EAAE,UAAkC,EAAE;QAC3F,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,KAAK,CAAC;QAChD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,KAAK,CAAC;QAClD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG;YAChB,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,KAAK;YACzC,QAAQ,EAAE,OAAO,CAAC,WAAW,IAAI,KAAK;YACtC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,KAAK;YACvC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC;SAC7D,CAAC;QAEF,IAAI,CAAC,UAAU,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAExF,MAAM,UAAU,GACd,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,SAAS;YAClC,CAAC,CAAC,WAAW,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YACrC,CAAC,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAExC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YACzB,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,eAAe;YAC3C,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,UAAU,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YACvF,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU;gBACzB,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,kBAAkB;gBAC1B,YAAY,EAAE,iBAAiB,OAAO,EAAE;aACzC;SACF,CAAC,CAAC;QAEH,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE;YACtB,OAAO,EAAE,WAAW;YACpB,UAAU,EAAE,UAAU,CAAC,gBAAgB;YACvC,cAAc,EAAE,CAAC,KAAiB,EAAE,EAAE;gBACpC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;gBACnD,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;gBAEpC,IAAI,MAAM,KAAK,KAAK,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC9E,OAAO,KAAK,CAAC;gBACf,CAAC;gBAED,MAAM,YAAY,GAAG,kBAAkB,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;gBAC/D,IAAI,CAAC,YAAY;oBAAE,OAAO,KAAK,CAAC;gBAEhC,IAAI,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC;oBAAE,OAAO,IAAI,CAAC;gBAElD,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG;oBAAE,OAAO,IAAI,CAAC;gBAEhD,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC;YAC9C,CAAC;SACF,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC9C,OAAO,CAAC,KAAK,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;gBACvE,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC;QAED,yEAAyE;QACzE,+DAA+D;QAC/D,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACvD,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC9C,MAAM,CAAC,QAAQ,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;gBAE5C,6DAA6D;gBAC7D,kEAAkE;gBAClE,gEAAgE;gBAChE,+DAA+D;gBAC/D,wDAAwD;gBACxD,+CAA+C;gBAC/C,EAAE;gBACF,6DAA6D;gBAC7D,+DAA+D;gBAC/D,gEAAgE;gBAChE,gEAAgE;gBAChE,gDAAgD;gBAChD,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBACvD,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;oBACpC,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;wBAClC,IAAI,CAAC,eAAe,EAAE,CAAC;wBACvB,MAAM,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;wBAClC,OAAO,MAAM,CAAC;oBAChB,CAAC;oBACD,IAAI,IAAI,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;wBAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,uBAAuB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAC5E,CAAC;wBACF,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;oBAC3B,CAAC;oBACD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAE9B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;wBACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;oBAC1E,CAAC;oBACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;wBACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;oBAC1E,CAAC;gBACH,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CACnC,CAAC,QAAQ,EAAE,EAAE;gBACX,IAAI,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU;oBAAE,OAAO,QAAQ,CAAC;gBAC1D,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBAChE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;gBACnC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;gBACpF,OAAO,QAAQ,CAAC;YAClB,CAAC,EACD,CAAC,KAAc,EAAE,EAAE;gBACjB,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC9B,IAAI,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU;wBAAE,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACrE,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;oBACnC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;wBACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,kBAAkB,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CACpE,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;oBACnF,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,mEAAmE;oBACnE,+DAA+D;oBAC/D,kEAAkE;oBAClE,yBAAyB;oBACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC7E,CAAC;gBACD,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC,CACF,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;YACxE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YAC5C,IAAI,YAAY,GAAG,KAAK,CAAC;YAEzB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,KAAc,EAAE,EAAE;gBACxE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;oBACjF,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC/B,CAAC;gBAED,YAAY,GAAG,IAAI,CAAC;gBACpB,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,MAAM,SAAS,EAAE,CAAC;oBAClC,MAAM,SAAS,GACb,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,UAAU,OAAO,CAAC,KAAK,EAAE,CAAC;oBAEzF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC;oBACjE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;oBAE1B,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;wBACjB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC;wBAClD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAC3C,CAAC;gBACH,CAAC;gBAAC,OAAO,YAAY,EAAE,CAAC;oBACtB,MAAM,UAAU,GACd,YAAY,YAAY,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;oBAC9E,OAAO,CAAC,KAAK,CAAC,kCAAkC,UAAU,EAAE,CAAC,CAAC;oBAC9D,MAAM,YAAY,GAAG,IAAI,QAAQ,CAC/B,sDAAsD,UAAU,MAAM;wBACpE,qBAAqB,EACvB,GAAG,EACH,KAAK,CAAC,QAAQ,EAAE,IAAI,CACrB,CAAC;oBACF,OAAO,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBACtC,CAAC;wBAAS,CAAC;oBACT,YAAY,GAAG,KAAK,CAAC;gBACvB,CAAC;gBAED,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CACnC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EACtB,CAAC,KAAc,EAAE,EAAE;YACjB,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC,CACF,CAAC;IACJ,CAAC;IAEO,WAAW,CAAC,MAOnB;QACC,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,0EAA0E;QAC1E,mEAAmE;QACnE,gDAAgD;QAChD,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,EAAE,UAAU,IAAI,CAAC,CAAC;QACrD,OAAO,GAAG,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,OAAO,CAAI,MAAyB;QACxC,MAAM,WAAW,GAA4B;YAC3C,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,GAAG,EAAE,MAAM,CAAC,GAAG;SAChB,CAAC;QAEF,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACjC,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QACvC,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QACrC,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,WAAW,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACjC,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACjC,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QACvC,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAExD,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACvB,CAAC;QACH,CAAC;QAED,OAAO;YACL,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,IAAI,EAAE,QAAQ,CAAC,IAAS;YACxB,OAAO;SACR,CAAC;IACJ,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;IAC5C,CAAC;IAED,aAAa;QACX,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC7C,OAAO,CACJ,OAAO,CAAC,MAAM,EAAE,CAAC,eAAe,CAAY,IAAK,OAAO,CAAC,eAAe,CAAY,IAAI,EAAE,CAC5F,CAAC;IACJ,CAAC;IAEO,WAAW,CAAC,KAAiB;QACnC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,kBAAkB,CAAC;QACzD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,gBAAgB,CAAC;QACvE,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC;QACtC,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAE,IAA2C,CAAC;QAEjF,kEAAkE;QAClE,0EAA0E;QAC1E,0EAA0E;QAC1E,4DAA4D;QAC5D,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE;YAC3B,IAAI,CAAC,YAAY;gBAAE,OAAO,SAAS,CAAC;YACpC,IAAI,OAAO,YAAY,KAAK,QAAQ;gBAAE,OAAO,YAAY,CAAC;YAC1D,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,KAAK,IAAI,YAAY,CAAC,MAAM,CAAC;YAC9E,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QACnD,CAAC,CAAC,EAAE,CAAC;QAEL,0EAA0E;QAC1E,yEAAyE;QACzE,kEAAkE;QAClE,uFAAuF;QACvF,uCAAuC;QACvC,+DAA+D;QAC/D,MAAM,WAAW,GAAG,cAAc;YAChC,CAAC,CAAC,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,cAAc,CAAC;YACvD,CAAC,CAAC,SAAS,CAAC;QAEd,0EAA0E;QAC1E,4DAA4D;QAC5D,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE;YAC3B,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,IAAI,cAAc,IAAI,EAAE,EAAE,CAAC;YAClE,IAAI,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACxC,OAAO,CACL,0EAA0E;oBAC1E,wEAAwE;oBACxE,mEAAmE;oBACnE,6DAA6D,CAC9D,CAAC;YACJ,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC,EAAE,CAAC;QAEL,IAAI,OAAe,CAAC;QACpB,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,GAAG;gBACN,OAAO;oBACL,6CAA6C;wBAC7C,aAAa,MAAM,IAAI,QAAQ,IAAI;wBACnC,wCAAwC,CAAC;gBAC3C,MAAM;YACR,KAAK,GAAG;gBACN,OAAO;oBACL,2DAA2D;wBAC3D,aAAa,MAAM,IAAI,QAAQ,IAAI;wBACnC,yDAAyD,CAAC;gBAC5D,MAAM;YACR,KAAK,GAAG;gBACN,OAAO,GAAG,uCAAuC,GAAG,aAAa,MAAM,IAAI,QAAQ,EAAE,CAAC;gBACtF,MAAM;YACR,KAAK,GAAG,CAAC,CAAC,CAAC;gBACT,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;gBAC1D,OAAO;oBACL,wBAAwB;wBACxB,aAAa,MAAM,IAAI,QAAQ,IAAI;wBACnC,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,UAAU,UAAU,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC;gBAClF,MAAM;YACR,CAAC;YACD;gBACE,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;oBAChE,OAAO;wBACL,iCAAiC;4BACjC,aAAa,QAAQ,IAAI;4BACzB,sEAAsE,CAAC;gBAC3E,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;oBACtC,OAAO;wBACL,oBAAoB;4BACpB,aAAa,MAAM,IAAI,QAAQ,IAAI;4BACnC,wDAAwD,CAAC;gBAC7D,CAAC;qBAAM,CAAC;oBACN,MAAM,KAAK,GAAG;wBACZ,cAAc,KAAK,CAAC,OAAO,IAAI,eAAe,EAAE;wBAChD,aAAa,MAAM,IAAI,QAAQ,EAAE;qBAClC,CAAC;oBACF,IAAI,WAAW;wBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;oBAC7C,IAAI,cAAc;wBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;oBACnD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC7B,CAAC;QACL,CAAC;QAED,OAAO,IAAI,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;CACF;AAED,MAAM,UAAU,qBAAqB,CACnC,QAAgB,EAChB,IAAyB,EACzB,OAAgC;IAEhC,OAAO,IAAI,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACtD,CAAC"}
@@ -1,10 +1,6 @@
1
1
  import { APIClient as EngineAPIClient } from '../../api-client/api-client.js';
2
- import { type AuthConfig } from './axios-adapter.js';
3
- export interface ClientOptions {
4
- verbose?: boolean;
5
- timeout?: number;
6
- insecure?: boolean;
7
- }
2
+ import { type AuthConfig, type AxiosHttpClientOptions } from './axios-adapter.js';
3
+ export type ClientOptions = AxiosHttpClientOptions;
8
4
  export declare class APIClient extends EngineAPIClient {
9
5
  constructor(endpoint: string, auth: string | AuthConfig, options?: ClientOptions);
10
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/lib/api/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAyB,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE5E,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,SAAU,SAAQ,eAAe;gBAChC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,OAAO,GAAE,aAAkB;CAIrF;AAED,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GAAG,UAAU,EACzB,OAAO,CAAC,EAAE,aAAa,GACtB,SAAS,CAEX"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/lib/api/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,sBAAsB,EAC5B,MAAM,oBAAoB,CAAC;AAE5B,MAAM,MAAM,aAAa,GAAG,sBAAsB,CAAC;AAEnD,qBAAa,SAAU,SAAQ,eAAe;gBAChC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,OAAO,GAAE,aAAkB;CAIrF;AAED,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GAAG,UAAU,EACzB,OAAO,CAAC,EAAE,aAAa,GACtB,SAAS,CAEX"}
@@ -1,5 +1,5 @@
1
1
  import { APIClient as EngineAPIClient } from '../../api-client/api-client.js';
2
- import { createAxiosHttpClient } from './axios-adapter.js';
2
+ import { createAxiosHttpClient, } from './axios-adapter.js';
3
3
  export class APIClient extends EngineAPIClient {
4
4
  constructor(endpoint, auth, options = {}) {
5
5
  const httpClient = createAxiosHttpClient(endpoint, auth, options);
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/lib/api/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAmB,MAAM,oBAAoB,CAAC;AAQ5E,MAAM,OAAO,SAAU,SAAQ,eAAe;IAC5C,YAAY,QAAgB,EAAE,IAAyB,EAAE,UAAyB,EAAE;QAClF,MAAM,UAAU,GAAG,qBAAqB,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAClE,KAAK,CAAC,UAAU,CAAC,CAAC;IACpB,CAAC;CACF;AAED,MAAM,UAAU,eAAe,CAC7B,QAAgB,EAChB,IAAyB,EACzB,OAAuB;IAEvB,OAAO,IAAI,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/lib/api/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EACL,qBAAqB,GAGtB,MAAM,oBAAoB,CAAC;AAI5B,MAAM,OAAO,SAAU,SAAQ,eAAe;IAC5C,YAAY,QAAgB,EAAE,IAAyB,EAAE,UAAyB,EAAE;QAClF,MAAM,UAAU,GAAG,qBAAqB,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAClE,KAAK,CAAC,UAAU,CAAC,CAAC;IACpB,CAAC;CACF;AAED,MAAM,UAAU,eAAe,CAC7B,QAAgB,EAChB,IAAyB,EACzB,OAAuB;IAEvB,OAAO,IAAI,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { InternalAxiosRequestConfig, AxiosResponse, AxiosError } from 'axios';
2
+ export interface FormatOptions {
3
+ showSecrets: boolean;
4
+ color: boolean;
5
+ omitBody?: boolean;
6
+ statusOnly?: boolean;
7
+ }
8
+ export declare function redactUrl(url: string, showSecrets: boolean): string;
9
+ export declare function redactHeaders(headers: Record<string, string>, showSecrets: boolean): Record<string, string>;
10
+ export declare function redactBody(data: unknown, showSecrets: boolean): unknown;
11
+ export declare function safeStringify(value: unknown, indentSpaces?: number): string;
12
+ export declare function formatRequestHTTP(config: InternalAxiosRequestConfig, opts: FormatOptions): string;
13
+ export declare function formatRequestCurl(config: InternalAxiosRequestConfig, opts: FormatOptions): string;
14
+ export declare function formatResponseHTTP(response: AxiosResponse, elapsedMs: number, opts: FormatOptions): string;
15
+ export declare function formatNetworkError(error: AxiosError, elapsedMs: number, opts: FormatOptions): string;
16
+ export declare function formatGenericError(error: unknown, elapsedMs: number, opts: FormatOptions): string;
17
+ export declare function formatSuppressionNotice(count: number, color: boolean): string;
18
+ //# sourceMappingURL=request-logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-logger.d.ts","sourceRoot":"","sources":["../../../src/lib/api/request-logger.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,0BAA0B,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAYnF,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;IAIf,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAyDD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,MAAM,CAgBnE;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,WAAW,EAAE,OAAO,GACnB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAyBxB;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,CAGvE;AA4ID,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAM3E;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,0BAA0B,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,CAkBjG;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,0BAA0B,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,CA8BjG;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,aAAa,GAClB,MAAM,CAsBR;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,UAAU,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,aAAa,GAClB,MAAM,CAKR;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,CAMjG;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAI7E"}