@123toto/ai-app-assistant-server 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/dist/express.d.cts +1 -1
- package/dist/express.d.ts +1 -1
- package/dist/index.cjs +33 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +33 -1
- package/dist/index.js.map +1 -1
- package/dist/{managed-server-BGQ-1jkx.d.ts → managed-server-CGmvVYsF.d.ts} +6 -1
- package/dist/{managed-server-CthTKEQ6.d.cts → managed-server-CQb-RK-i.d.cts} +6 -1
- package/dist/nest.d.cts +1 -1
- package/dist/nest.d.ts +1 -1
- package/package.json +2 -2
package/dist/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { A as AiAppAssistant, a as AiAppAssistantStreamEvent, b as AiAppAssistantConfiguration, B as BuiltInProvider } from './managed-server-
|
|
2
|
-
export { c as AiAppAssistantAccessRule, d as AiAppAssistantConfigurationActor, e as AiAppAssistantConfigurationAdministration, f as AiAppAssistantConfigurationAuditChange, g as AiAppAssistantConfigurationAuditEntry, h as AiAppAssistantConfigurationAuditField, i as AiAppAssistantConfigurationChangeEvent, j as AiAppAssistantConfigurationConflictError, k as AiAppAssistantConfigurationManager, l as AiAppAssistantConfigurationManagerOptions, m as AiAppAssistantConfigurationRepository, n as AiAppAssistantConfigurationSaveResult, o as AiAppAssistantConfigurationSynchronizer, p as AiAppAssistantConfigurationView, q as AiAppAssistantGenerationEvent, r as AiAppAssistantGenerationOperation, s as AiAppAssistantKeyValueStore, t as AiAppAssistantManagedConfigurationSetup, u as AiAppAssistantManagedStorage, v as AiAppAssistantManagementError, w as AiAppAssistantManagementErrorCode, x as AiAppAssistantQuotaPolicy, y as AiAppAssistantQuotaResult, z as AiAppAssistantQuotaStore, C as AiAppAssistantRecentFailure, D as AiAppAssistantRedisClient, E as AiAppAssistantRedisQuotaClient, F as AiAppAssistantRedisTelemetryClient, G as AiAppAssistantRuntimeIdentity, H as AiAppAssistantSecretProtector, I as AiAppAssistantTelemetryStore, J as AiAppAssistantTelemetrySummary, K as AiModelDiscoveryError, L as AiModelInfo, N as AiProviderInfo, O as CreateAiAppAssistantConfigurationRepositoryOptions, P as CreateManagedAiAppAssistantRuntimeOptions, Q as CreateManagedAiAppAssistantServerOptions, R as ListAiModelsOptions, S as ManagedAiAppAssistantFetchHandlerOptions, T as ManagedAiAppAssistantFetchHandlers, U as ManagedAiAppAssistantRuntime, M as ManagedAiAppAssistantServer, V as createAes256GcmSecretProtector, W as createAiAppAssistant, X as createAiAppAssistantConfigurationRepository, Y as createAiAppAssistantFailureEvent, Z as createDisabledSecretProtector, _ as createManagedAiAppAssistantFetchHandlers, $ as createManagedAiAppAssistantRuntime, a0 as createManagedAiAppAssistantServer, a1 as createMemoryAiAppAssistantQuotaStore, a2 as createMemoryAiAppAssistantStore, a3 as createMemoryAiAppAssistantTelemetryStore, a4 as createPollingAiAppAssistantConfigurationSynchronizer, a5 as createRedisAiAppAssistantQuotaStore, a6 as createRedisAiAppAssistantStore, a7 as createRedisAiAppAssistantTelemetryStore, a8 as listAiModels, a9 as listAiProviders, aa as validateAndSaveAiAppAssistantConfiguration } from './managed-server-
|
|
1
|
+
import { A as AiAppAssistant, a as AiAppAssistantStreamEvent, b as AiAppAssistantConfiguration, B as BuiltInProvider } from './managed-server-CQb-RK-i.cjs';
|
|
2
|
+
export { c as AiAppAssistantAccessRule, d as AiAppAssistantConfigurationActor, e as AiAppAssistantConfigurationAdministration, f as AiAppAssistantConfigurationAuditChange, g as AiAppAssistantConfigurationAuditEntry, h as AiAppAssistantConfigurationAuditField, i as AiAppAssistantConfigurationChangeEvent, j as AiAppAssistantConfigurationConflictError, k as AiAppAssistantConfigurationManager, l as AiAppAssistantConfigurationManagerOptions, m as AiAppAssistantConfigurationRepository, n as AiAppAssistantConfigurationSaveResult, o as AiAppAssistantConfigurationSynchronizer, p as AiAppAssistantConfigurationView, q as AiAppAssistantGenerationEvent, r as AiAppAssistantGenerationOperation, s as AiAppAssistantKeyValueStore, t as AiAppAssistantManagedConfigurationSetup, u as AiAppAssistantManagedStorage, v as AiAppAssistantManagementError, w as AiAppAssistantManagementErrorCode, x as AiAppAssistantQuotaPolicy, y as AiAppAssistantQuotaResult, z as AiAppAssistantQuotaStore, C as AiAppAssistantRecentFailure, D as AiAppAssistantRedisClient, E as AiAppAssistantRedisQuotaClient, F as AiAppAssistantRedisTelemetryClient, G as AiAppAssistantRuntimeIdentity, H as AiAppAssistantSecretProtector, I as AiAppAssistantTelemetryStore, J as AiAppAssistantTelemetrySummary, K as AiModelDiscoveryError, L as AiModelInfo, N as AiProviderInfo, O as CreateAiAppAssistantConfigurationRepositoryOptions, P as CreateManagedAiAppAssistantRuntimeOptions, Q as CreateManagedAiAppAssistantServerOptions, R as ListAiModelsOptions, S as ManagedAiAppAssistantFetchHandlerOptions, T as ManagedAiAppAssistantFetchHandlers, U as ManagedAiAppAssistantRuntime, M as ManagedAiAppAssistantServer, V as createAes256GcmSecretProtector, W as createAiAppAssistant, X as createAiAppAssistantConfigurationRepository, Y as createAiAppAssistantFailureEvent, Z as createDisabledSecretProtector, _ as createManagedAiAppAssistantFetchHandlers, $ as createManagedAiAppAssistantRuntime, a0 as createManagedAiAppAssistantServer, a1 as createMemoryAiAppAssistantQuotaStore, a2 as createMemoryAiAppAssistantStore, a3 as createMemoryAiAppAssistantTelemetryStore, a4 as createPollingAiAppAssistantConfigurationSynchronizer, a5 as createRedisAiAppAssistantQuotaStore, a6 as createRedisAiAppAssistantStore, a7 as createRedisAiAppAssistantTelemetryStore, a8 as listAiModels, a9 as listAiProviders, aa as validateAndSaveAiAppAssistantConfiguration } from './managed-server-CQb-RK-i.cjs';
|
|
3
3
|
import { AiAppAssistantRequest, AiAppAssistantResponse } from '@123toto/ai-app-assistant-contracts';
|
|
4
4
|
export { AiAppAssistantConfigurationFieldSource, AiAppAssistantConfigurationInput, AiAppAssistantConfigurationOptions, AiAppAssistantConnectionResult, AiAppAssistantConnectionTestInput, AiAppAssistantCredentials, AiAppAssistantManagedConfigurationView, AiAppAssistantModelInfoContract, AiAppAssistantProvider, AiAppAssistantProviderInfoContract, AiAppAssistantRequest, AiAppAssistantResponse, AiAppAssistantRuntimeConnection, AiAppAssistantRuntimeConnectionStatus, AiAppAssistantTransportEvent, EvidenceSource, GeneratedAnswer, PROTOCOL_VERSION, aiAppAssistantAccessRuleSchema, aiAppAssistantConfigurationInputSchema, aiAppAssistantConfigurationOptionsSchema, aiAppAssistantConfigurationSaveResultSchema, aiAppAssistantConnectionResultSchema, aiAppAssistantConnectionTestInputSchema, aiAppAssistantCredentialsSchema, aiAppAssistantManagedConfigurationViewSchema, aiAppAssistantModelInfoSchema, aiAppAssistantProviderInfoSchema, aiAppAssistantProviderSchema, aiAppAssistantRequestSchema, aiAppAssistantResponseSchema, aiAppAssistantTransportEventSchema } from '@123toto/ai-app-assistant-contracts';
|
|
5
5
|
import { IncomingMessage, ServerResponse } from 'node:http';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { A as AiAppAssistant, a as AiAppAssistantStreamEvent, b as AiAppAssistantConfiguration, B as BuiltInProvider } from './managed-server-
|
|
2
|
-
export { c as AiAppAssistantAccessRule, d as AiAppAssistantConfigurationActor, e as AiAppAssistantConfigurationAdministration, f as AiAppAssistantConfigurationAuditChange, g as AiAppAssistantConfigurationAuditEntry, h as AiAppAssistantConfigurationAuditField, i as AiAppAssistantConfigurationChangeEvent, j as AiAppAssistantConfigurationConflictError, k as AiAppAssistantConfigurationManager, l as AiAppAssistantConfigurationManagerOptions, m as AiAppAssistantConfigurationRepository, n as AiAppAssistantConfigurationSaveResult, o as AiAppAssistantConfigurationSynchronizer, p as AiAppAssistantConfigurationView, q as AiAppAssistantGenerationEvent, r as AiAppAssistantGenerationOperation, s as AiAppAssistantKeyValueStore, t as AiAppAssistantManagedConfigurationSetup, u as AiAppAssistantManagedStorage, v as AiAppAssistantManagementError, w as AiAppAssistantManagementErrorCode, x as AiAppAssistantQuotaPolicy, y as AiAppAssistantQuotaResult, z as AiAppAssistantQuotaStore, C as AiAppAssistantRecentFailure, D as AiAppAssistantRedisClient, E as AiAppAssistantRedisQuotaClient, F as AiAppAssistantRedisTelemetryClient, G as AiAppAssistantRuntimeIdentity, H as AiAppAssistantSecretProtector, I as AiAppAssistantTelemetryStore, J as AiAppAssistantTelemetrySummary, K as AiModelDiscoveryError, L as AiModelInfo, N as AiProviderInfo, O as CreateAiAppAssistantConfigurationRepositoryOptions, P as CreateManagedAiAppAssistantRuntimeOptions, Q as CreateManagedAiAppAssistantServerOptions, R as ListAiModelsOptions, S as ManagedAiAppAssistantFetchHandlerOptions, T as ManagedAiAppAssistantFetchHandlers, U as ManagedAiAppAssistantRuntime, M as ManagedAiAppAssistantServer, V as createAes256GcmSecretProtector, W as createAiAppAssistant, X as createAiAppAssistantConfigurationRepository, Y as createAiAppAssistantFailureEvent, Z as createDisabledSecretProtector, _ as createManagedAiAppAssistantFetchHandlers, $ as createManagedAiAppAssistantRuntime, a0 as createManagedAiAppAssistantServer, a1 as createMemoryAiAppAssistantQuotaStore, a2 as createMemoryAiAppAssistantStore, a3 as createMemoryAiAppAssistantTelemetryStore, a4 as createPollingAiAppAssistantConfigurationSynchronizer, a5 as createRedisAiAppAssistantQuotaStore, a6 as createRedisAiAppAssistantStore, a7 as createRedisAiAppAssistantTelemetryStore, a8 as listAiModels, a9 as listAiProviders, aa as validateAndSaveAiAppAssistantConfiguration } from './managed-server-
|
|
1
|
+
import { A as AiAppAssistant, a as AiAppAssistantStreamEvent, b as AiAppAssistantConfiguration, B as BuiltInProvider } from './managed-server-CGmvVYsF.js';
|
|
2
|
+
export { c as AiAppAssistantAccessRule, d as AiAppAssistantConfigurationActor, e as AiAppAssistantConfigurationAdministration, f as AiAppAssistantConfigurationAuditChange, g as AiAppAssistantConfigurationAuditEntry, h as AiAppAssistantConfigurationAuditField, i as AiAppAssistantConfigurationChangeEvent, j as AiAppAssistantConfigurationConflictError, k as AiAppAssistantConfigurationManager, l as AiAppAssistantConfigurationManagerOptions, m as AiAppAssistantConfigurationRepository, n as AiAppAssistantConfigurationSaveResult, o as AiAppAssistantConfigurationSynchronizer, p as AiAppAssistantConfigurationView, q as AiAppAssistantGenerationEvent, r as AiAppAssistantGenerationOperation, s as AiAppAssistantKeyValueStore, t as AiAppAssistantManagedConfigurationSetup, u as AiAppAssistantManagedStorage, v as AiAppAssistantManagementError, w as AiAppAssistantManagementErrorCode, x as AiAppAssistantQuotaPolicy, y as AiAppAssistantQuotaResult, z as AiAppAssistantQuotaStore, C as AiAppAssistantRecentFailure, D as AiAppAssistantRedisClient, E as AiAppAssistantRedisQuotaClient, F as AiAppAssistantRedisTelemetryClient, G as AiAppAssistantRuntimeIdentity, H as AiAppAssistantSecretProtector, I as AiAppAssistantTelemetryStore, J as AiAppAssistantTelemetrySummary, K as AiModelDiscoveryError, L as AiModelInfo, N as AiProviderInfo, O as CreateAiAppAssistantConfigurationRepositoryOptions, P as CreateManagedAiAppAssistantRuntimeOptions, Q as CreateManagedAiAppAssistantServerOptions, R as ListAiModelsOptions, S as ManagedAiAppAssistantFetchHandlerOptions, T as ManagedAiAppAssistantFetchHandlers, U as ManagedAiAppAssistantRuntime, M as ManagedAiAppAssistantServer, V as createAes256GcmSecretProtector, W as createAiAppAssistant, X as createAiAppAssistantConfigurationRepository, Y as createAiAppAssistantFailureEvent, Z as createDisabledSecretProtector, _ as createManagedAiAppAssistantFetchHandlers, $ as createManagedAiAppAssistantRuntime, a0 as createManagedAiAppAssistantServer, a1 as createMemoryAiAppAssistantQuotaStore, a2 as createMemoryAiAppAssistantStore, a3 as createMemoryAiAppAssistantTelemetryStore, a4 as createPollingAiAppAssistantConfigurationSynchronizer, a5 as createRedisAiAppAssistantQuotaStore, a6 as createRedisAiAppAssistantStore, a7 as createRedisAiAppAssistantTelemetryStore, a8 as listAiModels, a9 as listAiProviders, aa as validateAndSaveAiAppAssistantConfiguration } from './managed-server-CGmvVYsF.js';
|
|
3
3
|
import { AiAppAssistantRequest, AiAppAssistantResponse } from '@123toto/ai-app-assistant-contracts';
|
|
4
4
|
export { AiAppAssistantConfigurationFieldSource, AiAppAssistantConfigurationInput, AiAppAssistantConfigurationOptions, AiAppAssistantConnectionResult, AiAppAssistantConnectionTestInput, AiAppAssistantCredentials, AiAppAssistantManagedConfigurationView, AiAppAssistantModelInfoContract, AiAppAssistantProvider, AiAppAssistantProviderInfoContract, AiAppAssistantRequest, AiAppAssistantResponse, AiAppAssistantRuntimeConnection, AiAppAssistantRuntimeConnectionStatus, AiAppAssistantTransportEvent, EvidenceSource, GeneratedAnswer, PROTOCOL_VERSION, aiAppAssistantAccessRuleSchema, aiAppAssistantConfigurationInputSchema, aiAppAssistantConfigurationOptionsSchema, aiAppAssistantConfigurationSaveResultSchema, aiAppAssistantConnectionResultSchema, aiAppAssistantConnectionTestInputSchema, aiAppAssistantCredentialsSchema, aiAppAssistantManagedConfigurationViewSchema, aiAppAssistantModelInfoSchema, aiAppAssistantProviderInfoSchema, aiAppAssistantProviderSchema, aiAppAssistantRequestSchema, aiAppAssistantResponseSchema, aiAppAssistantTransportEventSchema } from '@123toto/ai-app-assistant-contracts';
|
|
5
5
|
import { IncomingMessage, ServerResponse } from 'node:http';
|
package/dist/index.js
CHANGED
|
@@ -896,12 +896,17 @@ var AiAppAssistantConfigurationManager = class {
|
|
|
896
896
|
this.#repository = options.repository;
|
|
897
897
|
this.#quotaStore = options.quotaStore ?? createMemoryAiAppAssistantQuotaStore();
|
|
898
898
|
}
|
|
899
|
+
/** Returns the current state of the host-controlled global kill switch. */
|
|
900
|
+
isEnabled() {
|
|
901
|
+
return typeof this.#options.enabled === "function" ? this.#options.enabled() : this.#options.enabled ?? true;
|
|
902
|
+
}
|
|
899
903
|
/** Returns the built-in provider catalogue; no credentials are exposed. */
|
|
900
904
|
listProviders() {
|
|
901
905
|
return listAiProviders();
|
|
902
906
|
}
|
|
903
907
|
/** Discovers models with an explicit key or the currently configured secret. */
|
|
904
908
|
async listModels(input) {
|
|
909
|
+
this.assertEnabled();
|
|
905
910
|
const apiKey = await this.resolveApiKey(input.provider, input.apiKey);
|
|
906
911
|
if (this.#options.listModels) {
|
|
907
912
|
return this.#options.listModels({ ...input, ...apiKey ? { apiKey } : {} });
|
|
@@ -927,7 +932,10 @@ var AiAppAssistantConfigurationManager = class {
|
|
|
927
932
|
let connected = event.connectionValidated;
|
|
928
933
|
if (event.reloadRequired) {
|
|
929
934
|
this.#recentConnectionValidation = void 0;
|
|
930
|
-
if (
|
|
935
|
+
if (!this.isEnabled()) {
|
|
936
|
+
connected = false;
|
|
937
|
+
this.#runtimeConnection = { status: "disabled", checkedAt: this.now() };
|
|
938
|
+
} else if (connected) {
|
|
931
939
|
const configuration = await this.getRuntimeConfiguration();
|
|
932
940
|
this.#runtimeConnection = configuration ? {
|
|
933
941
|
status: "connected",
|
|
@@ -957,6 +965,7 @@ var AiAppAssistantConfigurationManager = class {
|
|
|
957
965
|
}
|
|
958
966
|
/** Tests credentials and briefly caches a successful result for the next save. */
|
|
959
967
|
async testConnection(input) {
|
|
968
|
+
this.assertEnabled();
|
|
960
969
|
const apiKey = await this.resolveApiKey(input.provider, input.apiKey);
|
|
961
970
|
const connection = this.#options.testConnection ? await this.#options.testConnection({ ...input, ...apiKey ? { apiKey } : {} }) : await testAiSdkConnection({
|
|
962
971
|
model: `${input.provider}:${input.model}`,
|
|
@@ -985,6 +994,10 @@ var AiAppAssistantConfigurationManager = class {
|
|
|
985
994
|
/** Checks the effective stored/deployment connection used by live questions. */
|
|
986
995
|
async validateRuntimeConnection() {
|
|
987
996
|
this.#lastReconnectAttempt = Date.now();
|
|
997
|
+
if (!this.isEnabled()) {
|
|
998
|
+
this.#runtimeConnection = { status: "disabled", checkedAt: this.now() };
|
|
999
|
+
return false;
|
|
1000
|
+
}
|
|
988
1001
|
const configuration = await this.getRuntimeConfiguration();
|
|
989
1002
|
if (!configuration || configuration.provider !== "ollama" && !configuration.apiKey) {
|
|
990
1003
|
this.#runtimeConnection = {
|
|
@@ -1027,6 +1040,7 @@ var AiAppAssistantConfigurationManager = class {
|
|
|
1027
1040
|
const initialActive = this.effectiveConfiguration(initial);
|
|
1028
1041
|
const initialApiKey = input.apiKey ?? (initialActive?.provider === input.provider ? initialActive.apiKey : void 0) ?? this.resolveDefaultApiKey(input.provider);
|
|
1029
1042
|
const initialConnectionChanged = connectionChanged(initialActive, input);
|
|
1043
|
+
if (!this.isEnabled() && initialConnectionChanged) throw disabled();
|
|
1030
1044
|
let connection = initialConnectionChanged ? await this.validateConnectionForSave(input, initialApiKey) : this.lastKnownConnection(input.provider, input.model);
|
|
1031
1045
|
if (initialConnectionChanged && !connection.success) {
|
|
1032
1046
|
return { saved: false, connection, reloadRequired: false };
|
|
@@ -1255,6 +1269,7 @@ var AiAppAssistantConfigurationManager = class {
|
|
|
1255
1269
|
}
|
|
1256
1270
|
/** Combines configuration, provider health and application access rules. */
|
|
1257
1271
|
async canUse(identity) {
|
|
1272
|
+
if (!this.isEnabled()) return false;
|
|
1258
1273
|
const configuration = await this.getRuntimeConfiguration();
|
|
1259
1274
|
if (!configuration || configuration.provider !== "ollama" && !configuration.apiKey) return false;
|
|
1260
1275
|
if (!await this.ensureRuntimeConnection()) return false;
|
|
@@ -1273,6 +1288,7 @@ var AiAppAssistantConfigurationManager = class {
|
|
|
1273
1288
|
}
|
|
1274
1289
|
/** Enforces access and quota immediately before any model call. */
|
|
1275
1290
|
async assertCanAsk(identity) {
|
|
1291
|
+
this.assertEnabled();
|
|
1276
1292
|
if (!await this.canUse(identity)) {
|
|
1277
1293
|
throw forbidden("AI assistant access is not enabled for this user");
|
|
1278
1294
|
}
|
|
@@ -1288,6 +1304,7 @@ var AiAppAssistantConfigurationManager = class {
|
|
|
1288
1304
|
}
|
|
1289
1305
|
/** Retries a failed provider lazily, with a shared backoff across requests. */
|
|
1290
1306
|
async ensureRuntimeConnection() {
|
|
1307
|
+
if (!this.isEnabled()) return false;
|
|
1291
1308
|
if (this.#runtimeConnection.status === "connected") return true;
|
|
1292
1309
|
const intervalMs = Math.max(1e3, this.#options.reconnectIntervalMs ?? 3e4);
|
|
1293
1310
|
if (Date.now() - this.#lastReconnectAttempt < intervalMs) return false;
|
|
@@ -1395,6 +1412,9 @@ var AiAppAssistantConfigurationManager = class {
|
|
|
1395
1412
|
now() {
|
|
1396
1413
|
return (this.#options.now?.() ?? /* @__PURE__ */ new Date()).toISOString();
|
|
1397
1414
|
}
|
|
1415
|
+
assertEnabled() {
|
|
1416
|
+
if (!this.isEnabled()) throw disabled();
|
|
1417
|
+
}
|
|
1398
1418
|
async publishAndEmit(event) {
|
|
1399
1419
|
await this.#options.synchronizer?.publish(event);
|
|
1400
1420
|
await this.emit(event);
|
|
@@ -1518,6 +1538,13 @@ function configurationChanges(previous, input, allowModelChangesByOthers) {
|
|
|
1518
1538
|
function forbidden(message) {
|
|
1519
1539
|
return new AiAppAssistantManagementError(403, "forbidden", message);
|
|
1520
1540
|
}
|
|
1541
|
+
function disabled() {
|
|
1542
|
+
return new AiAppAssistantManagementError(
|
|
1543
|
+
503,
|
|
1544
|
+
"assistant_disabled",
|
|
1545
|
+
"AI assistant is disabled"
|
|
1546
|
+
);
|
|
1547
|
+
}
|
|
1521
1548
|
|
|
1522
1549
|
// src/telemetry.ts
|
|
1523
1550
|
function createMemoryAiAppAssistantTelemetryStore(options) {
|
|
@@ -1687,6 +1714,11 @@ function createManagedAiAppAssistantRuntime(options) {
|
|
|
1687
1714
|
return reloadQueue;
|
|
1688
1715
|
});
|
|
1689
1716
|
const rebuild = async (event) => {
|
|
1717
|
+
if (!options.configuration.isEnabled()) {
|
|
1718
|
+
assistant = void 0;
|
|
1719
|
+
activeGenerator = void 0;
|
|
1720
|
+
return;
|
|
1721
|
+
}
|
|
1690
1722
|
const connected = event.connectionValidated || await options.configuration.validateRuntimeConnection();
|
|
1691
1723
|
const configuration = await options.configuration.getRuntimeConfiguration();
|
|
1692
1724
|
if (!connected || !configuration) {
|