galileo-generated 0.2.6 → 0.2.8

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 (84) hide show
  1. package/.release-please-manifest.json +1 -1
  2. package/dist/commonjs/hooks/cert-management.d.ts +73 -0
  3. package/dist/commonjs/hooks/cert-management.d.ts.map +1 -0
  4. package/dist/commonjs/hooks/cert-management.js +258 -0
  5. package/dist/commonjs/hooks/cert-management.js.map +1 -0
  6. package/dist/commonjs/hooks/error-cleaner.d.ts.map +1 -1
  7. package/dist/commonjs/hooks/error-cleaner.js +0 -4
  8. package/dist/commonjs/hooks/error-cleaner.js.map +1 -1
  9. package/dist/commonjs/hooks/registration.d.ts.map +1 -1
  10. package/dist/commonjs/hooks/registration.js +4 -0
  11. package/dist/commonjs/hooks/registration.js.map +1 -1
  12. package/dist/commonjs/index.d.ts +1 -0
  13. package/dist/commonjs/index.d.ts.map +1 -1
  14. package/dist/commonjs/index.js +1 -0
  15. package/dist/commonjs/index.js.map +1 -1
  16. package/dist/commonjs/lib/galileo-config.d.ts +105 -14
  17. package/dist/commonjs/lib/galileo-config.d.ts.map +1 -1
  18. package/dist/commonjs/lib/galileo-config.js +168 -12
  19. package/dist/commonjs/lib/galileo-config.js.map +1 -1
  20. package/dist/commonjs/lib/sdk-logger.d.ts +26 -0
  21. package/dist/commonjs/lib/sdk-logger.d.ts.map +1 -0
  22. package/dist/commonjs/lib/sdk-logger.js +85 -0
  23. package/dist/commonjs/lib/sdk-logger.js.map +1 -0
  24. package/dist/commonjs/tests/hooks/cert-management.test.d.ts +2 -0
  25. package/dist/commonjs/tests/hooks/cert-management.test.d.ts.map +1 -0
  26. package/dist/commonjs/tests/hooks/cert-management.test.js +794 -0
  27. package/dist/commonjs/tests/hooks/cert-management.test.js.map +1 -0
  28. package/dist/commonjs/tests/lib/galileo-config.test.js +101 -0
  29. package/dist/commonjs/tests/lib/galileo-config.test.js.map +1 -1
  30. package/dist/commonjs/tests/lib/sdk-logger.test.d.ts +2 -0
  31. package/dist/commonjs/tests/lib/sdk-logger.test.d.ts.map +1 -0
  32. package/dist/commonjs/tests/lib/sdk-logger.test.js +401 -0
  33. package/dist/commonjs/tests/lib/sdk-logger.test.js.map +1 -0
  34. package/dist/commonjs/types/sdk-logger.types.d.ts +35 -0
  35. package/dist/commonjs/types/sdk-logger.types.d.ts.map +1 -0
  36. package/dist/commonjs/types/sdk-logger.types.js +17 -0
  37. package/dist/commonjs/types/sdk-logger.types.js.map +1 -0
  38. package/dist/esm/hooks/cert-management.d.ts +73 -0
  39. package/dist/esm/hooks/cert-management.d.ts.map +1 -0
  40. package/dist/esm/hooks/cert-management.js +254 -0
  41. package/dist/esm/hooks/cert-management.js.map +1 -0
  42. package/dist/esm/hooks/error-cleaner.d.ts.map +1 -1
  43. package/dist/esm/hooks/error-cleaner.js +0 -4
  44. package/dist/esm/hooks/error-cleaner.js.map +1 -1
  45. package/dist/esm/hooks/registration.d.ts.map +1 -1
  46. package/dist/esm/hooks/registration.js +4 -0
  47. package/dist/esm/hooks/registration.js.map +1 -1
  48. package/dist/esm/index.d.ts +1 -0
  49. package/dist/esm/index.d.ts.map +1 -1
  50. package/dist/esm/index.js +1 -0
  51. package/dist/esm/index.js.map +1 -1
  52. package/dist/esm/lib/galileo-config.d.ts +105 -14
  53. package/dist/esm/lib/galileo-config.d.ts.map +1 -1
  54. package/dist/esm/lib/galileo-config.js +167 -12
  55. package/dist/esm/lib/galileo-config.js.map +1 -1
  56. package/dist/esm/lib/sdk-logger.d.ts +26 -0
  57. package/dist/esm/lib/sdk-logger.d.ts.map +1 -0
  58. package/dist/esm/lib/sdk-logger.js +78 -0
  59. package/dist/esm/lib/sdk-logger.js.map +1 -0
  60. package/dist/esm/tests/hooks/cert-management.test.d.ts +2 -0
  61. package/dist/esm/tests/hooks/cert-management.test.d.ts.map +1 -0
  62. package/dist/esm/tests/hooks/cert-management.test.js +792 -0
  63. package/dist/esm/tests/hooks/cert-management.test.js.map +1 -0
  64. package/dist/esm/tests/lib/galileo-config.test.js +101 -0
  65. package/dist/esm/tests/lib/galileo-config.test.js.map +1 -1
  66. package/dist/esm/tests/lib/sdk-logger.test.d.ts +2 -0
  67. package/dist/esm/tests/lib/sdk-logger.test.d.ts.map +1 -0
  68. package/dist/esm/tests/lib/sdk-logger.test.js +399 -0
  69. package/dist/esm/tests/lib/sdk-logger.test.js.map +1 -0
  70. package/dist/esm/types/sdk-logger.types.d.ts +35 -0
  71. package/dist/esm/types/sdk-logger.types.d.ts.map +1 -0
  72. package/dist/esm/types/sdk-logger.types.js +14 -0
  73. package/dist/esm/types/sdk-logger.types.js.map +1 -0
  74. package/package.json +5 -3
  75. package/src/hooks/cert-management.ts +288 -0
  76. package/src/hooks/error-cleaner.ts +0 -7
  77. package/src/hooks/registration.ts +5 -0
  78. package/src/index.ts +2 -1
  79. package/src/lib/galileo-config.ts +232 -17
  80. package/src/lib/sdk-logger.ts +91 -0
  81. package/src/tests/hooks/cert-management.test.ts +958 -0
  82. package/src/tests/lib/galileo-config.test.ts +110 -0
  83. package/src/tests/lib/sdk-logger.test.ts +518 -0
  84. package/src/types/sdk-logger.types.ts +43 -0
@@ -1,3 +1,3 @@
1
1
  {
2
- ".": "0.2.6"
2
+ ".": "0.2.8"
3
3
  }
@@ -0,0 +1,73 @@
1
+ import type { SDKInitHook } from './types.js';
2
+ import type { SDKOptions } from '../lib/config.js';
3
+ /**
4
+ * SDK initialization hook that configures TLS/SSL certificates for all SDK HTTP requests.
5
+ *
6
+ * This hook reads certificate configuration from GalileoConfig and applies it by creating
7
+ * a custom undici Agent as the fetch dispatcher. Only runs on Node.js >= 20.18.1 with undici available.
8
+ *
9
+ * Configuration sources (environment variables resolved via GalileoConfig):
10
+ * - GALILEO_CA_CERT_PATH or GALILEO_CA_CERT_CONTENT: Custom CA certificate(s) for server verification
11
+ * - GALILEO_CLIENT_CERT_PATH + GALILEO_CLIENT_KEY_PATH: Client certificate and key for mutual TLS (both required)
12
+ * - GALILEO_REJECT_UNAUTHORIZED: Control whether to accept self-signed/unauthorized certificates
13
+ * (also falls back to NODE_TLS_REJECT_UNAUTHORIZED if GALILEO_REJECT_UNAUTHORIZED not set)
14
+ * - SSL_CERT_FILE: Python httpx-style CA cert file (supported for compatibility)
15
+ *
16
+ * Implementation details:
17
+ * - Skips gracefully on browsers, Deno, or Node.js without undici support
18
+ * - Returns original opts if no certificate configuration is present
19
+ * - Validates mutual TLS: requires both clientCertPath and clientKeyPath; fails if only one is set
20
+ * - Only creates undici Agent if there's meaningful TLS customization (avoids unnecessary overhead)
21
+ * - Wraps fetch with a custom dispatcher to apply the TLS configuration to all SDK requests
22
+ *
23
+ * @implements {SDKInitHook}
24
+ */
25
+ export declare class CertManagementHook implements SDKInitHook {
26
+ /**
27
+ * Initializes SDK options with TLS certificate configuration.
28
+ *
29
+ * Reads certificate config from GalileoConfig, creates an undici Agent if needed,
30
+ * and augments the HTTPClient (if present) with a beforeRequest hook that injects
31
+ * the TLS dispatcher. This approach preserves any custom HTTPClient and its hooks
32
+ * while layering TLS configuration on top.
33
+ *
34
+ * @param opts - The original SDK options
35
+ * @returns Enhanced SDKOptions with TLS configuration applied, or original opts otherwise
36
+ */
37
+ sdkInit(opts: SDKOptions): SDKOptions;
38
+ /**
39
+ * Warns if the current Node.js version may not support Request.dispatcher.
40
+ *
41
+ * Request.dispatcher is a Node.js-specific extension for undici integration.
42
+ * It's supported on Node.js >= 20.18.1. On older versions, the dispatcher
43
+ * property will be silently ignored, and TLS certificates may not be applied.
44
+ *
45
+ * See: https://nodejs.org/docs/latest/api/fetch.html#fetchinit-options
46
+ */
47
+ private warnIfDispatcherUnsupported;
48
+ /**
49
+ * Extracts the Node.js version from process.versions.
50
+ *
51
+ * @returns Version string (e.g., "20.10.0") or null if not detectable
52
+ */
53
+ private getNodeVersion;
54
+ /**
55
+ * Checks if a Node.js version is >= 20.18.1 (minimum for Request.dispatcher support).
56
+ *
57
+ * @param versionStr - Version string (e.g., "20.10.0", "21.0.0")
58
+ * @returns true if version >= 20.18.1, false otherwise
59
+ */
60
+ private isNodeVersionSupported;
61
+ /**
62
+ * Safely reads a certificate/key file from disk with error reporting.
63
+ *
64
+ * Checks file existence before reading to provide clear warning messages.
65
+ * Returns null if file doesn't exist or read fails; logs a warning in either case.
66
+ *
67
+ * @param filePath - Absolute or relative path to the certificate/key file
68
+ * @param fileType - Human-readable description for error messages (e.g., "CA certificate", "Client cert", "Client key")
69
+ * @returns File content as UTF-8 string, or null if file doesn't exist or read fails
70
+ */
71
+ private readFileWarning;
72
+ }
73
+ //# sourceMappingURL=cert-management.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cert-management.d.ts","sourceRoot":"","sources":["../../../src/hooks/cert-management.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAuBnD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,kBAAmB,YAAW,WAAW;IACpD;;;;;;;;;;OAUG;IACH,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU;IA0GrC;;;;;;;;OAQG;IACH,OAAO,CAAC,2BAA2B;IAqBnC;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAetB;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IA4B9B;;;;;;;;;OASG;IACH,OAAO,CAAC,eAAe;CAOxB"}
@@ -0,0 +1,258 @@
1
+ "use strict";
2
+ /*
3
+ * Certificate management SDK init hook: configures TLS/SSL for fetch API using undici Agent.
4
+ *
5
+ * Reads certificate configuration from GalileoConfig singleton and applies it to all SDK HTTP requests.
6
+ * Supports custom CA certificates, client certificates (mutual TLS), and certificate validation controls.
7
+ *
8
+ * Configuration sources (via GalileoConfig):
9
+ * - GALILEO_CA_CERT_PATH / GALILEO_CA_CERT_CONTENT: Custom CA certificate(s)
10
+ * - GALILEO_CLIENT_CERT_PATH + GALILEO_CLIENT_KEY_PATH: Client certificate and key for mTLS
11
+ * - GALILEO_REJECT_UNAUTHORIZED / NODE_TLS_REJECT_UNAUTHORIZED: Control certificate validation
12
+ * - SSL_CERT_FILE: Python httpx compatibility (treated as CA certificate)
13
+ * - NODE_EXTRA_CA_CERTS: Node.js native support for appending to default CA list (works without this hook)
14
+ *
15
+ * ⚠️ REQUIRES Node.js >= 20.18.1 for undici dispatcher support in fetch API.
16
+ * ⚠️ Gracefully skips on older Node.js versions or non-Node.js runtimes (browser, Deno).
17
+ * ⚠️ Only creates undici Agent if meaningful TLS customization is detected (prevents unnecessary overhead).
18
+ */
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.CertManagementHook = void 0;
21
+ const fs_1 = require("fs");
22
+ const http_js_1 = require("../lib/http.js");
23
+ const galileo_config_js_1 = require("../lib/galileo-config.js");
24
+ const runtime_js_1 = require("../lib/runtime.js");
25
+ const sdk_logger_js_1 = require("../lib/sdk-logger.js");
26
+ const sdkLogger = (0, sdk_logger_js_1.getSdkLogger)();
27
+ let CertAgent;
28
+ try {
29
+ // Using synchronous require to support both ESM and CommonJS contexts
30
+ CertAgent = require('undici').Agent;
31
+ }
32
+ catch (error) {
33
+ sdkLogger.warn(`[TLS] Failed to import undici: ${error}`);
34
+ }
35
+ /**
36
+ * SDK initialization hook that configures TLS/SSL certificates for all SDK HTTP requests.
37
+ *
38
+ * This hook reads certificate configuration from GalileoConfig and applies it by creating
39
+ * a custom undici Agent as the fetch dispatcher. Only runs on Node.js >= 20.18.1 with undici available.
40
+ *
41
+ * Configuration sources (environment variables resolved via GalileoConfig):
42
+ * - GALILEO_CA_CERT_PATH or GALILEO_CA_CERT_CONTENT: Custom CA certificate(s) for server verification
43
+ * - GALILEO_CLIENT_CERT_PATH + GALILEO_CLIENT_KEY_PATH: Client certificate and key for mutual TLS (both required)
44
+ * - GALILEO_REJECT_UNAUTHORIZED: Control whether to accept self-signed/unauthorized certificates
45
+ * (also falls back to NODE_TLS_REJECT_UNAUTHORIZED if GALILEO_REJECT_UNAUTHORIZED not set)
46
+ * - SSL_CERT_FILE: Python httpx-style CA cert file (supported for compatibility)
47
+ *
48
+ * Implementation details:
49
+ * - Skips gracefully on browsers, Deno, or Node.js without undici support
50
+ * - Returns original opts if no certificate configuration is present
51
+ * - Validates mutual TLS: requires both clientCertPath and clientKeyPath; fails if only one is set
52
+ * - Only creates undici Agent if there's meaningful TLS customization (avoids unnecessary overhead)
53
+ * - Wraps fetch with a custom dispatcher to apply the TLS configuration to all SDK requests
54
+ *
55
+ * @implements {SDKInitHook}
56
+ */
57
+ class CertManagementHook {
58
+ /**
59
+ * Initializes SDK options with TLS certificate configuration.
60
+ *
61
+ * Reads certificate config from GalileoConfig, creates an undici Agent if needed,
62
+ * and augments the HTTPClient (if present) with a beforeRequest hook that injects
63
+ * the TLS dispatcher. This approach preserves any custom HTTPClient and its hooks
64
+ * while layering TLS configuration on top.
65
+ *
66
+ * @param opts - The original SDK options
67
+ * @returns Enhanced SDKOptions with TLS configuration applied, or original opts otherwise
68
+ */
69
+ sdkInit(opts) {
70
+ if (!(0, runtime_js_1.isNodeLike)() || !CertAgent) {
71
+ return opts;
72
+ }
73
+ // Get certificate configuration from GalileoConfig singleton
74
+ const cert = galileo_config_js_1.GalileoConfig.get().getCertConfig();
75
+ if (!cert) {
76
+ return opts;
77
+ }
78
+ try {
79
+ // Determine CA certificate source (prefer direct content over file path)
80
+ let ca;
81
+ if (cert.caCertContent) {
82
+ // CA provided directly as string (GALILEO_CA_CERT_CONTENT)
83
+ ca = cert.caCertContent;
84
+ }
85
+ else if (cert.caCertPath) {
86
+ // CA certificate path provided (GALILEO_CA_CERT_PATH); read file from disk
87
+ ca = this.readFileWarning(cert.caCertPath, 'CA certificate');
88
+ if (!ca)
89
+ return opts;
90
+ }
91
+ // Build undici Agent connect options (TLS settings passed to undici's socket connector)
92
+ const connectOptions = {};
93
+ if (ca) {
94
+ connectOptions.ca = ca;
95
+ }
96
+ // Validate mutual TLS: both cert and key must be configured together (all-or-nothing)
97
+ if ((cert.clientCertPath || cert.clientKeyPath) && !(cert.clientCertPath && cert.clientKeyPath)) {
98
+ sdkLogger.error('[TLS] Mutual TLS requires both GALILEO_CLIENT_CERT_PATH and GALILEO_CLIENT_KEY_PATH to be set');
99
+ return opts;
100
+ }
101
+ // Load client certificate (mutual TLS) if provided
102
+ const clientCert = cert.clientCertPath ? this.readFileWarning(cert.clientCertPath, 'Client cert') : null;
103
+ if (cert.clientCertPath && !clientCert)
104
+ return opts;
105
+ if (clientCert)
106
+ connectOptions.cert = clientCert;
107
+ // Load client key (mutual TLS) if provided
108
+ const clientKey = cert.clientKeyPath ? this.readFileWarning(cert.clientKeyPath, 'Client key') : null;
109
+ if (cert.clientKeyPath && !clientKey)
110
+ return opts;
111
+ if (clientKey)
112
+ connectOptions.key = clientKey;
113
+ // Apply certificate validation setting (whether to accept self-signed/unauthorized certs)
114
+ if (cert.rejectUnauthorized !== undefined)
115
+ connectOptions.rejectUnauthorized = cert.rejectUnauthorized;
116
+ // Guard: Only create undici Agent if there's meaningful TLS customization
117
+ // This avoids unnecessary overhead when only rejectUnauthorized=true (default behavior)
118
+ const hasCertCustomization = Boolean(connectOptions.ca || connectOptions.cert || connectOptions.key || connectOptions.rejectUnauthorized === false);
119
+ if (!hasCertCustomization) {
120
+ return opts;
121
+ }
122
+ // Create undici Agent with the configured TLS settings (singleton, reused for all requests)
123
+ const agent = new CertAgent({
124
+ connect: connectOptions
125
+ });
126
+ // Get or create HTTPClient to augment
127
+ const httpClient = opts.httpClient || new http_js_1.HTTPClient();
128
+ // Warn if this runtime may not support Request.dispatcher (Node.js < 20.18.1)
129
+ this.warnIfDispatcherUnsupported();
130
+ // Add a beforeRequest hook that injects the TLS dispatcher into requests.
131
+ // This hook attaches the pre-created agent to the request, applying TLS configuration
132
+ // while preserving any user-registered hooks (which execute before this one).
133
+ //
134
+ // The dispatcher option is a Node.js-specific extension for undici integration.
135
+ // Supported on Node.js >= 20.18.1 with undici available.
136
+ // On older runtimes or non-Node.js environments, the dispatcher will be silently ignored
137
+ // (Request constructor doesn't throw on unknown properties, just ignores them).
138
+ // See: https://nodejs.org/docs/latest/api/fetch.html#fetchinit-options
139
+ httpClient.addHook('beforeRequest', (req) => {
140
+ // Create a new Request with the TLS dispatcher injected.
141
+ // The hook receives a cloned request, so the body is readable and safe to transfer.
142
+ return new Request(req.url, {
143
+ method: req.method,
144
+ headers: req.headers,
145
+ body: req.body,
146
+ // @ts-expect-error - dispatcher is Node.js-specific undici extension, not in standard fetch spec
147
+ dispatcher: agent
148
+ });
149
+ });
150
+ return {
151
+ ...opts,
152
+ httpClient: httpClient
153
+ };
154
+ }
155
+ catch (error) {
156
+ sdkLogger.error(`[TLS] Failed to configure custom certificates: ${error}`);
157
+ return opts;
158
+ }
159
+ }
160
+ /**
161
+ * Warns if the current Node.js version may not support Request.dispatcher.
162
+ *
163
+ * Request.dispatcher is a Node.js-specific extension for undici integration.
164
+ * It's supported on Node.js >= 20.18.1. On older versions, the dispatcher
165
+ * property will be silently ignored, and TLS certificates may not be applied.
166
+ *
167
+ * See: https://nodejs.org/docs/latest/api/fetch.html#fetchinit-options
168
+ */
169
+ warnIfDispatcherUnsupported() {
170
+ // Only check on Node.js-like environments; skip on browser/Deno
171
+ if (!(0, runtime_js_1.isNodeLike)()) {
172
+ return; // Non-Node.js runtimes don't support dispatcher anyway (expected)
173
+ }
174
+ try {
175
+ const nodeVersion = this.getNodeVersion();
176
+ if (nodeVersion && !this.isNodeVersionSupported(nodeVersion)) {
177
+ sdkLogger.warn(`[TLS] Node.js ${nodeVersion} detected. Request.dispatcher (required for TLS support) ` +
178
+ `is available from Node.js 20.18.1+. Upgrade Node.js to ensure certificates are applied. ` +
179
+ `See: https://nodejs.org/docs/latest/api/fetch.html#fetchinit-options`);
180
+ }
181
+ }
182
+ catch (error) {
183
+ // If version detection fails, silently skip the warning
184
+ // (version detection is best-effort for user convenience)
185
+ }
186
+ }
187
+ /**
188
+ * Extracts the Node.js version from process.versions.
189
+ *
190
+ * @returns Version string (e.g., "20.10.0") or null if not detectable
191
+ */
192
+ getNodeVersion() {
193
+ try {
194
+ const proc = globalThis.process;
195
+ if (proc?.versions?.node) {
196
+ return proc.versions.node;
197
+ }
198
+ }
199
+ catch {
200
+ // Ignore errors; version detection is non-critical
201
+ }
202
+ return null;
203
+ }
204
+ /**
205
+ * Checks if a Node.js version is >= 20.18.1 (minimum for Request.dispatcher support).
206
+ *
207
+ * @param versionStr - Version string (e.g., "20.10.0", "21.0.0")
208
+ * @returns true if version >= 20.18.1, false otherwise
209
+ */
210
+ isNodeVersionSupported(versionStr) {
211
+ try {
212
+ // Handle empty or obviously invalid strings early
213
+ if (!versionStr || typeof versionStr !== 'string') {
214
+ return true; // Can't parse, assume supported (optimistic)
215
+ }
216
+ const parts = versionStr.split('.').map(v => parseInt(v, 10));
217
+ const major = parts[0];
218
+ const minor = parts[1] ?? 0;
219
+ const patch = parts[2] ?? 0;
220
+ // If major version couldn't be parsed (NaN or undefined), assume supported
221
+ if (major === undefined || Number.isNaN(major))
222
+ return true;
223
+ // Need: major > 20 OR (major === 20 AND minor > 18) OR (major === 20 AND minor === 18 AND patch >= 1)
224
+ if (major > 20)
225
+ return true;
226
+ if (major === 20) {
227
+ if (minor > 18)
228
+ return true;
229
+ if (minor === 18 && patch >= 1)
230
+ return true;
231
+ }
232
+ return false;
233
+ }
234
+ catch {
235
+ // If any parsing error occurs, assume version is supported (optimistic)
236
+ return true;
237
+ }
238
+ }
239
+ /**
240
+ * Safely reads a certificate/key file from disk with error reporting.
241
+ *
242
+ * Checks file existence before reading to provide clear warning messages.
243
+ * Returns null if file doesn't exist or read fails; logs a warning in either case.
244
+ *
245
+ * @param filePath - Absolute or relative path to the certificate/key file
246
+ * @param fileType - Human-readable description for error messages (e.g., "CA certificate", "Client cert", "Client key")
247
+ * @returns File content as UTF-8 string, or null if file doesn't exist or read fails
248
+ */
249
+ readFileWarning(filePath, fileType) {
250
+ if (!(0, fs_1.existsSync)(filePath)) {
251
+ sdkLogger.warn(`[TLS] ${fileType} file not found: ${filePath}`);
252
+ return null;
253
+ }
254
+ return (0, fs_1.readFileSync)(filePath, 'utf-8');
255
+ }
256
+ }
257
+ exports.CertManagementHook = CertManagementHook;
258
+ //# sourceMappingURL=cert-management.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cert-management.js","sourceRoot":"","sources":["../../../src/hooks/cert-management.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"error-cleaner.d.ts","sourceRoot":"","sources":["../../../src/hooks/error-cleaner.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEpE;;GAEG;AACH,qBAAa,gBAAiB,YAAW,cAAc;IAChD,UAAU,CACf,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,QAAQ,GAAG,IAAI,EACzB,KAAK,EAAE,OAAO,GACZ,OAAO,CAAC;QAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;CA8DzD"}
1
+ {"version":3,"file":"error-cleaner.d.ts","sourceRoot":"","sources":["../../../src/hooks/error-cleaner.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEpE;;GAEG;AACH,qBAAa,gBAAiB,YAAW,cAAc;IAChD,UAAU,CACf,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,QAAQ,GAAG,IAAI,EACzB,KAAK,EAAE,OAAO,GACZ,OAAO,CAAC;QAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;CAuDzD"}
@@ -8,10 +8,6 @@ const custom_errors_js_1 = require("../types/custom-errors.js");
8
8
  class ErrorCleanerHook {
9
9
  async afterError(hookCtx, response, error) {
10
10
  void hookCtx;
11
- console.log("#####################################################");
12
- console.log("eRROR CLEANER HOOK - ERROR:", error);
13
- console.log("eRROR CLEANER HOOK - RESPONSE:", response);
14
- console.log("eRROR CLEANER HOOK - HOOK CTX:", hookCtx);
15
11
  try {
16
12
  if (!response)
17
13
  return { response, error };
@@ -1 +1 @@
1
- {"version":3,"file":"error-cleaner.js","sourceRoot":"","sources":["../../../src/hooks/error-cleaner.ts"],"names":[],"mappings":";;;AAAA,gEAMmC;AAGnC;;GAEG;AACH,MAAa,gBAAgB;IAC5B,KAAK,CAAC,UAAU,CACf,OAA0B,EAC1B,QAAyB,EACzB,KAAc;QAEd,KAAK,OAAO,CAAC;QAGX,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,QAAQ,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,OAAO,CAAC,CAAC;QAGzD,IAAG,CAAC;YACH,IAAI,CAAC,QAAQ;gBAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;YAE1C,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;YAC/C,IAAI,CAAC,QAAQ;gBAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;YAE1C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAClC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAEhF,MAAM,UAAU,GAAG,IAA+B,CAAC;YACnD,IAAI,gBAAgB,IAAI,UAAU,EAAE,CAAC;gBACpC,MAAM,aAAa,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC;gBACnD,IAAI,IAAA,gDAA6B,EAAC,aAAa,CAAC,EAAE,CAAC;oBAClD,OAAO;wBACN,QAAQ;wBACR,KAAK,EAAE,IAAI,kCAAe,CAAC,aAAa,CAAC;qBACzC,CAAC;gBACH,CAAC;gBAED,OAAO;oBACN,QAAQ;oBACR,KAAK,EAAE,IAAI,KAAK,CAAC,iDAA8B,CAAC;iBAChD,CAAC;YACH,CAAC;YAED,IAAI,QAAQ,IAAI,UAAU,EAAE,CAAC;gBAC5B,MAAM,aAAa,GAClB,IAAA,wCAAqB,EAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,wCAAqB,CAAC;gBACtE,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC;gBAEnC,IAAI,UAAU,EAAE,CAAC;oBAChB,OAAO;wBACN,QAAQ;wBACR,KAAK,EAAE,IAAI,KAAK,CACf,0EAA0E,UAAU,iBAAiB,aAAa,EAAE,CACpH;qBACD,CAAC;gBACH,CAAC;gBAED,OAAO;oBACN,QAAQ;oBACR,KAAK,EAAE,IAAI,KAAK,CACf,oCAAoC,aAAa,EAAE,CACnD;iBACD,CAAC;YACH,CAAC;YAED,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QAC5B,CAAC;QAAA,OAAM,KAAK,EAAC,CAAC;YACb,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QAC5B,CAAC;IACF,CAAC;CACD;AAnED,4CAmEC"}
1
+ {"version":3,"file":"error-cleaner.js","sourceRoot":"","sources":["../../../src/hooks/error-cleaner.ts"],"names":[],"mappings":";;;AAAA,gEAMmC;AAGnC;;GAEG;AACH,MAAa,gBAAgB;IAC5B,KAAK,CAAC,UAAU,CACf,OAA0B,EAC1B,QAAyB,EACzB,KAAc;QAEd,KAAK,OAAO,CAAC;QAEb,IAAG,CAAC;YACH,IAAI,CAAC,QAAQ;gBAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;YAE1C,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;YAC/C,IAAI,CAAC,QAAQ;gBAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;YAE1C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAClC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAEhF,MAAM,UAAU,GAAG,IAA+B,CAAC;YACnD,IAAI,gBAAgB,IAAI,UAAU,EAAE,CAAC;gBACpC,MAAM,aAAa,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC;gBACnD,IAAI,IAAA,gDAA6B,EAAC,aAAa,CAAC,EAAE,CAAC;oBAClD,OAAO;wBACN,QAAQ;wBACR,KAAK,EAAE,IAAI,kCAAe,CAAC,aAAa,CAAC;qBACzC,CAAC;gBACH,CAAC;gBAED,OAAO;oBACN,QAAQ;oBACR,KAAK,EAAE,IAAI,KAAK,CAAC,iDAA8B,CAAC;iBAChD,CAAC;YACH,CAAC;YAED,IAAI,QAAQ,IAAI,UAAU,EAAE,CAAC;gBAC5B,MAAM,aAAa,GAClB,IAAA,wCAAqB,EAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,wCAAqB,CAAC;gBACtE,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC;gBAEnC,IAAI,UAAU,EAAE,CAAC;oBAChB,OAAO;wBACN,QAAQ;wBACR,KAAK,EAAE,IAAI,KAAK,CACf,0EAA0E,UAAU,iBAAiB,aAAa,EAAE,CACpH;qBACD,CAAC;gBACH,CAAC;gBAED,OAAO;oBACN,QAAQ;oBACR,KAAK,EAAE,IAAI,KAAK,CACf,oCAAoC,aAAa,EAAE,CACnD;iBACD,CAAC;YACH,CAAC;YAED,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QAC5B,CAAC;QAAA,OAAM,KAAK,EAAC,CAAC;YACb,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QAC5B,CAAC;IACF,CAAC;CACD;AA5DD,4CA4DC"}
@@ -1 +1 @@
1
- {"version":3,"file":"registration.d.ts","sourceRoot":"","sources":["../../../src/hooks/registration.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAQxC,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,QASrC"}
1
+ {"version":3,"file":"registration.d.ts","sourceRoot":"","sources":["../../../src/hooks/registration.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAQxC,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,QAarC"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.initHooks = initHooks;
4
+ const cert_management_js_1 = require("./cert-management.js");
4
5
  const error_cleaner_js_1 = require("./error-cleaner.js");
5
6
  const token_management_js_1 = require("./token-management.js");
6
7
  /*
@@ -9,6 +10,9 @@ const token_management_js_1 = require("./token-management.js");
9
10
  * in this file or in separate files in the hooks folder.
10
11
  */
11
12
  function initHooks(hooks) {
13
+ // Register cert management (TLS with undici Agent)
14
+ const certHook = new cert_management_js_1.CertManagementHook();
15
+ hooks.registerSDKInitHook(certHook);
12
16
  // Register token management hooks
13
17
  const tokenHook = new token_management_js_1.TokenManagementHook();
14
18
  hooks.registerBeforeRequestHook(tokenHook);
@@ -1 +1 @@
1
- {"version":3,"file":"registration.js","sourceRoot":"","sources":["../../../src/hooks/registration.ts"],"names":[],"mappings":";;AAUA,8BASC;AAnBD,yDAAsD;AACtD,+DAA4D;AAG5D;;;;GAIG;AAEH,SAAgB,SAAS,CAAC,KAAY;IACrC,kCAAkC;IAClC,MAAM,SAAS,GAAG,IAAI,yCAAmB,EAAE,CAAC;IAC5C,KAAK,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC;IAC3C,KAAK,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAE1C,+BAA+B;IAC/B,MAAM,gBAAgB,GAAG,IAAI,mCAAgB,EAAE,CAAC;IAChD,KAAK,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"registration.js","sourceRoot":"","sources":["../../../src/hooks/registration.ts"],"names":[],"mappings":";;AAWA,8BAaC;AAxBD,6DAA0D;AAC1D,yDAAsD;AACtD,+DAA4D;AAG5D;;;;GAIG;AAEH,SAAgB,SAAS,CAAC,KAAY;IACrC,mDAAmD;IACnD,MAAM,QAAQ,GAAG,IAAI,uCAAkB,EAAE,CAAC;IAC1C,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAEpC,kCAAkC;IAClC,MAAM,SAAS,GAAG,IAAI,yCAAmB,EAAE,CAAC;IAC5C,KAAK,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC;IAC3C,KAAK,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAE1C,+BAA+B;IAC/B,MAAM,gBAAgB,GAAG,IAAI,mCAAgB,EAAE,CAAC;IAChD,KAAK,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;AAChD,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export * from "./lib/config.js";
2
2
  export * from "./lib/galileo-config.js";
3
+ export * from "./lib/sdk-logger.js";
3
4
  export * as files from "./lib/files.js";
4
5
  export { HTTPClient } from "./lib/http.js";
5
6
  export type { Fetcher, HTTPClientOptions } from "./lib/http.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAChE,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAChE,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC"}
@@ -42,6 +42,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
42
42
  exports.HTTPClient = exports.files = void 0;
43
43
  __exportStar(require("./lib/config.js"), exports);
44
44
  __exportStar(require("./lib/galileo-config.js"), exports);
45
+ __exportStar(require("./lib/sdk-logger.js"), exports);
45
46
  exports.files = __importStar(require("./lib/files.js"));
46
47
  var http_js_1 = require("./lib/http.js");
47
48
  Object.defineProperty(exports, "HTTPClient", { enumerable: true, get: function () { return http_js_1.HTTPClient; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,kDAAgC;AAChC,0DAAwC;AACxC,wDAAwC;AACxC,yCAA2C;AAAlC,qGAAA,UAAU,OAAA;AAEnB,+CAA6B;AAC7B,oDAAkC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,kDAAgC;AAChC,0DAAwC;AACxC,sDAAoC;AACpC,wDAAwC;AACxC,yCAA2C;AAAlC,qGAAA,UAAU,OAAA;AAEnB,+CAA6B;AAC7B,oDAAkC"}
@@ -1,5 +1,11 @@
1
+ import type { LogLevel } from "../types/sdk-logger.types.js";
1
2
  /**
2
- * Configuration input for the Galileo SDK (URLs, auth, project, and log stream).
3
+ * Configuration input for the Galileo SDK.
4
+ *
5
+ * Includes URLs (console, API), authentication credentials (API key, username/password, SSO tokens),
6
+ * project/log stream identifiers, logging configuration, and TLS/certificate settings.
7
+ *
8
+ * All properties are optional; values resolve from environment variables or browser storage by default.
3
9
  */
4
10
  export type GalileoConfigInput = {
5
11
  consoleUrl?: string;
@@ -11,12 +17,25 @@ export type GalileoConfigInput = {
11
17
  ssoProvider?: string;
12
18
  jwtToken?: string;
13
19
  refreshToken?: string;
14
- logLevel?: string | number;
20
+ logLevel?: LogLevel | undefined;
15
21
  projectName?: string;
16
22
  logStreamName?: string;
23
+ /** Path to CA certificate file. */
24
+ caCertPath?: string;
25
+ /** Direct CA certificate content. */
26
+ caCertContent?: string;
27
+ /** Client certificate path. */
28
+ clientCertPath?: string;
29
+ /** Client key path. */
30
+ clientKeyPath?: string;
31
+ /** Whether to reject unauthorized (e.g. self-signed) certificates. */
32
+ rejectUnauthorized?: boolean;
17
33
  };
18
34
  /**
19
- * Authentication credentials (API key, username/password, or SSO).
35
+ * Resolved authentication credentials extracted from config.
36
+ *
37
+ * Contains one or more of: API key, username/password pair, or SSO credentials.
38
+ * Returned by getAuthCredentials() method.
20
39
  */
21
40
  export type AuthCredentials = {
22
41
  apiKey?: string;
@@ -26,7 +45,28 @@ export type AuthCredentials = {
26
45
  ssoProvider?: string;
27
46
  };
28
47
  /**
29
- * Snapshot shape for base-entity compatibility: apiUrl, apiKey, login, and sso.
48
+ * TLS/certificate configuration for API requests.
49
+ *
50
+ * Supports custom CA certificates (via file path or direct content) and mutual TLS (mTLS)
51
+ * with client certificates and keys. Controls whether unauthorized (self-signed) certificates
52
+ * are accepted via rejectUnauthorized flag.
53
+ *
54
+ * Returned by getCertConfig() method or included in config snapshot.
55
+ */
56
+ export type CertConfig = {
57
+ caCertPath?: string;
58
+ caCertContent?: string;
59
+ clientCertPath?: string;
60
+ clientKeyPath?: string;
61
+ rejectUnauthorized?: boolean;
62
+ };
63
+ /**
64
+ * Config snapshot for BaseEntity compatibility.
65
+ *
66
+ * Flattened representation of resolved configuration including API URL, API key, login credentials
67
+ * (username/password), SSO information (idToken/provider), and TLS certificate configuration.
68
+ *
69
+ * Used for entity authentication and API interactions.
30
70
  */
31
71
  export type GalileoConfigSnapshot = {
32
72
  apiUrl?: string;
@@ -39,7 +79,9 @@ export type GalileoConfigSnapshot = {
39
79
  idToken?: string;
40
80
  provider?: string;
41
81
  };
82
+ cert?: CertConfig;
42
83
  };
84
+ export declare function isValidLogLevel(value: unknown): value is LogLevel;
43
85
  /**
44
86
  * Singleton configuration for the Galileo SDK (env-aware across Node, Deno, and browser).
45
87
  */
@@ -54,38 +96,87 @@ export declare class GalileoConfig {
54
96
  readonly ssoProvider: string | undefined;
55
97
  readonly jwtToken: string | undefined;
56
98
  readonly refreshToken: string | undefined;
57
- readonly logLevel: string | number | undefined;
99
+ readonly logLevel: LogLevel | undefined;
58
100
  readonly projectName: string | undefined;
59
101
  readonly logStreamName: string | undefined;
102
+ readonly caCertPath: string | undefined;
103
+ readonly caCertContent: string | undefined;
104
+ readonly clientCertPath: string | undefined;
105
+ readonly clientKeyPath: string | undefined;
106
+ readonly rejectUnauthorized: boolean | undefined;
60
107
  private constructor();
61
108
  /**
62
- * Returns a snapshot compatible with BaseEntity: apiUrl (resolved), apiKey, login, and sso.
63
- * @returns The config snapshot for entity authentication and API URL.
109
+ * Returns a snapshot compatible with BaseEntity, including resolved apiUrl, apiKey, login, sso, and cert.
110
+ *
111
+ * - apiUrl is resolved from consoleUrl if not explicitly set
112
+ * - login contains username and/or password if present
113
+ * - sso contains idToken and/or provider if present
114
+ * - cert contains all configured TLS/certificate settings if any are present
115
+ *
116
+ * @returns The config snapshot for entity authentication and API configuration.
64
117
  */
65
118
  get snapshot(): GalileoConfigSnapshot;
66
119
  /**
67
- * Returns the singleton config instance, merging environment and optional overrides.
120
+ * Returns the singleton config instance, resolving from environment and optional overrides.
121
+ *
122
+ * On first call (or when overrides are provided), resolves configuration from:
123
+ * 1. Environment variables or browser storage (via resolveFromEnvironment)
124
+ * 2. Constructor overrides (via merge)
125
+ *
126
+ * The instance is cached and reused on subsequent calls unless overrides are provided.
127
+ * To reset the singleton, call reset().
128
+ *
68
129
  * @param overrides - (Optional) Config values to merge over environment and defaults.
69
- * @returns The GalileoConfig instance.
130
+ * @returns The GalileoConfig singleton instance.
70
131
  */
71
132
  static get(overrides?: GalileoConfigInput): GalileoConfig;
72
133
  /**
73
- * Clears the singleton instance. Next get() will rebuild from environment and overrides.
134
+ * Clears the singleton instance.
135
+ *
136
+ * Next call to get() will rebuild the instance from environment variables or browser storage.
137
+ * Useful for testing or when configuration has changed and needs to be reloaded.
74
138
  */
75
139
  static reset(): void;
76
140
  /**
77
141
  * Returns the API base URL, resolved from consoleUrl or explicit apiUrl.
78
- * @param projectType - (Optional) Project type used when neither apiUrl nor consoleUrl is set (e.g. "gen_ai").
142
+ *
143
+ * Resolution logic:
144
+ * 1. If apiUrl is set, return it as-is
145
+ * 2. If consoleUrl is set, derive apiUrl by replacing "app.galileo.ai" or "console" with "api"
146
+ * 3. For localhost consoleUrl, return "http://localhost:8088"
147
+ * 4. If neither consoleUrl nor apiUrl is set, use projectType default (e.g., "gen_ai" → "https://api.galileo.ai")
148
+ * 5. If no projectType and neither URL is set, throw an error
149
+ *
150
+ * @param projectType - (Optional) Default project type for API URL when neither apiUrl nor consoleUrl is set.
79
151
  * @returns The resolved API URL.
152
+ * @throws Error if apiUrl, consoleUrl, and projectType are all unset.
80
153
  */
81
154
  getApiUrl(projectType?: string): string;
82
155
  /**
83
- * Returns the current auth credentials (API key, username/password, or SSO).
84
- * @returns The AuthCredentials object with present values.
156
+ * Returns the current authentication credentials.
157
+ *
158
+ * Extracts and returns all present credentials: API key, username/password pair, and/or SSO tokens.
159
+ * Only populated fields are included in the returned object.
160
+ *
161
+ * @returns The AuthCredentials object with present credential values.
85
162
  */
86
163
  getAuthCredentials(): AuthCredentials;
87
164
  /**
88
- * Logs a safe summary of the config to the console (passwords and tokens omitted).
165
+ * Returns TLS/certificate configuration for API requests.
166
+ *
167
+ * Extracts and returns all present certificate settings: CA certificate (path or content),
168
+ * client certificate and key (for mTLS), and rejectUnauthorized flag.
169
+ * Only populated fields are included in the returned object.
170
+ *
171
+ * @returns The CertConfig object with present values, or null if no certificate configuration is set.
172
+ */
173
+ getCertConfig(): CertConfig | null;
174
+ /**
175
+ * Logs a safe summary of the current configuration to the console.
176
+ *
177
+ * Omits sensitive values (passwords, API keys, SSO tokens) and instead logs boolean flags
178
+ * (hasApiKey, hasPassword, hasSsoIdToken) to indicate their presence without revealing content.
179
+ * Useful for debugging configuration issues in production environments.
89
180
  */
90
181
  logConfig(): void;
91
182
  }
@@ -1 +1 @@
1
- {"version":3,"file":"galileo-config.d.ts","sourceRoot":"","sources":["../../../src/lib/galileo-config.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,GAAG,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C,CAAC;AAmOF;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA8B;IAErD,SAAgB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,SAAgB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,SAAgB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,SAAgB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,SAAgB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,SAAgB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,SAAgB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChD,SAAgB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,SAAgB,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjD,SAAgB,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACtD,SAAgB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChD,SAAgB,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAElD,OAAO;IAeP;;;OAGG;IACH,IAAI,QAAQ,IAAI,qBAAqB,CA0BpC;IAED;;;;OAIG;WACW,GAAG,CAAC,SAAS,GAAE,kBAAuB,GAAG,aAAa;IAWpE;;OAEG;WACW,KAAK,IAAI,IAAI;IAI3B;;;;OAIG;IACI,SAAS,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM;IAI9C;;;OAGG;IACI,kBAAkB,IAAI,eAAe;IAc5C;;OAEG;IACI,SAAS,IAAI,IAAI;CAezB"}
1
+ {"version":3,"file":"galileo-config.d.ts","sourceRoot":"","sources":["../../../src/lib/galileo-config.ts"],"names":[],"mappings":"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"}