@jagilber-org/index-server 1.22.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.
- package/CHANGELOG.md +1354 -0
- package/CODE_OF_CONDUCT.md +49 -0
- package/CONTRIBUTING.md +99 -0
- package/LICENSE +21 -0
- package/README.md +228 -0
- package/SECURITY.md +50 -0
- package/dist/config/configUtils.d.ts +11 -0
- package/dist/config/configUtils.js +87 -0
- package/dist/config/dashboardConfig.d.ts +46 -0
- package/dist/config/dashboardConfig.js +67 -0
- package/dist/config/defaultValues.d.ts +63 -0
- package/dist/config/defaultValues.js +72 -0
- package/dist/config/dirConstants.d.ts +18 -0
- package/dist/config/dirConstants.js +29 -0
- package/dist/config/featureConfig.d.ts +61 -0
- package/dist/config/featureConfig.js +121 -0
- package/dist/config/runtimeConfig.d.ts +151 -0
- package/dist/config/runtimeConfig.js +380 -0
- package/dist/config/serverConfig.d.ts +90 -0
- package/dist/config/serverConfig.js +167 -0
- package/dist/dashboard/analytics/AnalyticsEngine.d.ts +142 -0
- package/dist/dashboard/analytics/AnalyticsEngine.js +373 -0
- package/dist/dashboard/analytics/BusinessIntelligence.d.ts +187 -0
- package/dist/dashboard/analytics/BusinessIntelligence.js +594 -0
- package/dist/dashboard/client/admin.html +2175 -0
- package/dist/dashboard/client/chunks/mermaid-layout-elk.esm.min/chunk-SP2CHFBE.mjs +1 -0
- package/dist/dashboard/client/chunks/mermaid-layout-elk.esm.min/render-T6MDALS3.mjs +27 -0
- package/dist/dashboard/client/css/admin.css +1587 -0
- package/dist/dashboard/client/js/admin.auth.js +179 -0
- package/dist/dashboard/client/js/admin.boot.js +359 -0
- package/dist/dashboard/client/js/admin.config.js +196 -0
- package/dist/dashboard/client/js/admin.embeddings.js +426 -0
- package/dist/dashboard/client/js/admin.graph.js +615 -0
- package/dist/dashboard/client/js/admin.instances.js +120 -0
- package/dist/dashboard/client/js/admin.instructions.js +579 -0
- package/dist/dashboard/client/js/admin.logs.js +113 -0
- package/dist/dashboard/client/js/admin.maintenance.js +393 -0
- package/dist/dashboard/client/js/admin.messaging.js +636 -0
- package/dist/dashboard/client/js/admin.monitor.js +184 -0
- package/dist/dashboard/client/js/admin.overview.js +221 -0
- package/dist/dashboard/client/js/admin.performance.js +61 -0
- package/dist/dashboard/client/js/admin.sessions.js +292 -0
- package/dist/dashboard/client/js/admin.sqlite.js +373 -0
- package/dist/dashboard/client/js/admin.utils.js +49 -0
- package/dist/dashboard/client/js/chart.umd.js +14 -0
- package/dist/dashboard/client/js/elk.bundled.js +6696 -0
- package/dist/dashboard/client/js/marked.umd.js +74 -0
- package/dist/dashboard/client/js/mermaid.min.js +3022 -0
- package/dist/dashboard/client/mermaid-layout-elk.esm.min.mjs +1 -0
- package/dist/dashboard/export/DataExporter.d.ts +169 -0
- package/dist/dashboard/export/DataExporter.js +737 -0
- package/dist/dashboard/export/exporters/csvExporter.d.ts +11 -0
- package/dist/dashboard/export/exporters/csvExporter.js +47 -0
- package/dist/dashboard/export/exporters/exportTypes.d.ts +89 -0
- package/dist/dashboard/export/exporters/exportTypes.js +5 -0
- package/dist/dashboard/export/exporters/jsonExporter.d.ts +7 -0
- package/dist/dashboard/export/exporters/jsonExporter.js +23 -0
- package/dist/dashboard/export/exporters/xmlExporter.d.ts +17 -0
- package/dist/dashboard/export/exporters/xmlExporter.js +176 -0
- package/dist/dashboard/integration/APIIntegration.d.ts +41 -0
- package/dist/dashboard/integration/APIIntegration.js +95 -0
- package/dist/dashboard/security/SecurityMonitor.d.ts +167 -0
- package/dist/dashboard/security/SecurityMonitor.js +560 -0
- package/dist/dashboard/server/AdminPanel.d.ts +195 -0
- package/dist/dashboard/server/AdminPanel.js +861 -0
- package/dist/dashboard/server/AdminPanelConfig.d.ts +42 -0
- package/dist/dashboard/server/AdminPanelConfig.js +80 -0
- package/dist/dashboard/server/AdminPanelState.d.ts +47 -0
- package/dist/dashboard/server/AdminPanelState.js +215 -0
- package/dist/dashboard/server/ApiRoutes.d.ts +17 -0
- package/dist/dashboard/server/ApiRoutes.js +184 -0
- package/dist/dashboard/server/DashboardServer.d.ts +49 -0
- package/dist/dashboard/server/DashboardServer.js +160 -0
- package/dist/dashboard/server/FileMetricsStorage.d.ts +49 -0
- package/dist/dashboard/server/FileMetricsStorage.js +196 -0
- package/dist/dashboard/server/HttpTransport.d.ts +23 -0
- package/dist/dashboard/server/HttpTransport.js +116 -0
- package/dist/dashboard/server/InstanceManager.d.ts +53 -0
- package/dist/dashboard/server/InstanceManager.js +295 -0
- package/dist/dashboard/server/KnowledgeStore.d.ts +35 -0
- package/dist/dashboard/server/KnowledgeStore.js +105 -0
- package/dist/dashboard/server/LeaderElection.d.ts +81 -0
- package/dist/dashboard/server/LeaderElection.js +268 -0
- package/dist/dashboard/server/MetricsCollector.d.ts +200 -0
- package/dist/dashboard/server/MetricsCollector.js +810 -0
- package/dist/dashboard/server/SessionPersistenceManager.d.ts +88 -0
- package/dist/dashboard/server/SessionPersistenceManager.js +458 -0
- package/dist/dashboard/server/ThinClient.d.ts +64 -0
- package/dist/dashboard/server/ThinClient.js +237 -0
- package/dist/dashboard/server/WebSocketManager.d.ts +161 -0
- package/dist/dashboard/server/WebSocketManager.js +448 -0
- package/dist/dashboard/server/httpLifecycle.d.ts +17 -0
- package/dist/dashboard/server/httpLifecycle.js +35 -0
- package/dist/dashboard/server/legacyDashboardHtml.d.ts +9 -0
- package/dist/dashboard/server/legacyDashboardHtml.js +618 -0
- package/dist/dashboard/server/legacyDashboardStyles.d.ts +5 -0
- package/dist/dashboard/server/legacyDashboardStyles.js +490 -0
- package/dist/dashboard/server/metricsAggregation.d.ts +252 -0
- package/dist/dashboard/server/metricsAggregation.js +210 -0
- package/dist/dashboard/server/metricsSerializer.d.ts +25 -0
- package/dist/dashboard/server/metricsSerializer.js +195 -0
- package/dist/dashboard/server/middleware/ensureLoadedMiddleware.d.ts +25 -0
- package/dist/dashboard/server/middleware/ensureLoadedMiddleware.js +24 -0
- package/dist/dashboard/server/routes/admin.routes.d.ts +16 -0
- package/dist/dashboard/server/routes/admin.routes.js +574 -0
- package/dist/dashboard/server/routes/adminAuth.d.ts +4 -0
- package/dist/dashboard/server/routes/adminAuth.js +46 -0
- package/dist/dashboard/server/routes/alerts.routes.d.ts +7 -0
- package/dist/dashboard/server/routes/alerts.routes.js +91 -0
- package/dist/dashboard/server/routes/api.feedback.routes.d.ts +73 -0
- package/dist/dashboard/server/routes/api.feedback.routes.js +171 -0
- package/dist/dashboard/server/routes/api.instructions.routes.d.ts +101 -0
- package/dist/dashboard/server/routes/api.instructions.routes.js +213 -0
- package/dist/dashboard/server/routes/api.usage.routes.d.ts +57 -0
- package/dist/dashboard/server/routes/api.usage.routes.js +374 -0
- package/dist/dashboard/server/routes/embeddings.routes.d.ts +6 -0
- package/dist/dashboard/server/routes/embeddings.routes.js +246 -0
- package/dist/dashboard/server/routes/graph.routes.d.ts +6 -0
- package/dist/dashboard/server/routes/graph.routes.js +279 -0
- package/dist/dashboard/server/routes/index.d.ts +39 -0
- package/dist/dashboard/server/routes/index.js +229 -0
- package/dist/dashboard/server/routes/instances.routes.d.ts +6 -0
- package/dist/dashboard/server/routes/instances.routes.js +35 -0
- package/dist/dashboard/server/routes/instructions.routes.d.ts +8 -0
- package/dist/dashboard/server/routes/instructions.routes.js +268 -0
- package/dist/dashboard/server/routes/knowledge.routes.d.ts +6 -0
- package/dist/dashboard/server/routes/knowledge.routes.js +80 -0
- package/dist/dashboard/server/routes/logs.routes.d.ts +6 -0
- package/dist/dashboard/server/routes/logs.routes.js +166 -0
- package/dist/dashboard/server/routes/messaging.routes.d.ts +16 -0
- package/dist/dashboard/server/routes/messaging.routes.js +307 -0
- package/dist/dashboard/server/routes/metrics.routes.d.ts +10 -0
- package/dist/dashboard/server/routes/metrics.routes.js +335 -0
- package/dist/dashboard/server/routes/scripts.routes.d.ts +9 -0
- package/dist/dashboard/server/routes/scripts.routes.js +84 -0
- package/dist/dashboard/server/routes/sqlite.routes.d.ts +9 -0
- package/dist/dashboard/server/routes/sqlite.routes.js +570 -0
- package/dist/dashboard/server/routes/status.routes.d.ts +7 -0
- package/dist/dashboard/server/routes/status.routes.js +179 -0
- package/dist/dashboard/server/routes/synthetic.routes.d.ts +7 -0
- package/dist/dashboard/server/routes/synthetic.routes.js +197 -0
- package/dist/dashboard/server/routes/tools.routes.d.ts +6 -0
- package/dist/dashboard/server/routes/tools.routes.js +47 -0
- package/dist/dashboard/server/routes/usage.routes.d.ts +6 -0
- package/dist/dashboard/server/routes/usage.routes.js +26 -0
- package/dist/dashboard/server/wsInit.d.ts +16 -0
- package/dist/dashboard/server/wsInit.js +35 -0
- package/dist/externalClientLib.d.ts +1 -0
- package/dist/externalClientLib.js +2 -0
- package/dist/minimal/index.d.ts +1 -0
- package/dist/minimal/index.js +140 -0
- package/dist/models/SessionPersistence.d.ts +115 -0
- package/dist/models/SessionPersistence.js +66 -0
- package/dist/models/instruction.d.ts +46 -0
- package/dist/models/instruction.js +2 -0
- package/dist/perf/benchmark.d.ts +1 -0
- package/dist/perf/benchmark.js +50 -0
- package/dist/portableClientWrapper.d.ts +1 -0
- package/dist/portableClientWrapper.js +2 -0
- package/dist/schemas/index.d.ts +132 -0
- package/dist/schemas/index.js +372 -0
- package/dist/scripts/runPerformanceBaseline.d.ts +1 -0
- package/dist/scripts/runPerformanceBaseline.js +17 -0
- package/dist/server/backgroundServicesStartup.d.ts +3 -0
- package/dist/server/backgroundServicesStartup.js +51 -0
- package/dist/server/handshakeManager.d.ts +25 -0
- package/dist/server/handshakeManager.js +470 -0
- package/dist/server/index-server.d.ts +38 -0
- package/dist/server/index-server.js +620 -0
- package/dist/server/multiInstanceStartup.d.ts +6 -0
- package/dist/server/multiInstanceStartup.js +132 -0
- package/dist/server/registry.d.ts +44 -0
- package/dist/server/registry.js +236 -0
- package/dist/server/sdkServer.d.ts +8 -0
- package/dist/server/sdkServer.js +299 -0
- package/dist/server/shutdownGuard.d.ts +41 -0
- package/dist/server/shutdownGuard.js +52 -0
- package/dist/server/startupDiagnostics.d.ts +2 -0
- package/dist/server/startupDiagnostics.js +33 -0
- package/dist/server/thin-client.d.ts +22 -0
- package/dist/server/thin-client.js +111 -0
- package/dist/server/transport.d.ts +41 -0
- package/dist/server/transport.js +312 -0
- package/dist/server/transportFactory.d.ts +21 -0
- package/dist/server/transportFactory.js +429 -0
- package/dist/services/atomicFs.d.ts +22 -0
- package/dist/services/atomicFs.js +103 -0
- package/dist/services/auditLog.d.ts +38 -0
- package/dist/services/auditLog.js +142 -0
- package/dist/services/autoBackup.d.ts +14 -0
- package/dist/services/autoBackup.js +171 -0
- package/dist/services/autoSplit.d.ts +32 -0
- package/dist/services/autoSplit.js +113 -0
- package/dist/services/backupZip.d.ts +25 -0
- package/dist/services/backupZip.js +112 -0
- package/dist/services/bootstrapGating.d.ts +123 -0
- package/dist/services/bootstrapGating.js +221 -0
- package/dist/services/canonical.d.ts +23 -0
- package/dist/services/canonical.js +65 -0
- package/dist/services/categoryRules.d.ts +7 -0
- package/dist/services/categoryRules.js +37 -0
- package/dist/services/classificationService.d.ts +42 -0
- package/dist/services/classificationService.js +168 -0
- package/dist/services/embeddingService.d.ts +62 -0
- package/dist/services/embeddingService.js +264 -0
- package/dist/services/errors.d.ts +22 -0
- package/dist/services/errors.js +31 -0
- package/dist/services/featureFlags.d.ts +25 -0
- package/dist/services/featureFlags.js +89 -0
- package/dist/services/features.d.ts +13 -0
- package/dist/services/features.js +35 -0
- package/dist/services/handlers/instructions.add.d.ts +1 -0
- package/dist/services/handlers/instructions.add.js +510 -0
- package/dist/services/handlers/instructions.groom.d.ts +1 -0
- package/dist/services/handlers/instructions.groom.js +575 -0
- package/dist/services/handlers/instructions.import.d.ts +1 -0
- package/dist/services/handlers/instructions.import.js +205 -0
- package/dist/services/handlers/instructions.patch.d.ts +1 -0
- package/dist/services/handlers/instructions.patch.js +121 -0
- package/dist/services/handlers/instructions.query.d.ts +159 -0
- package/dist/services/handlers/instructions.query.js +469 -0
- package/dist/services/handlers/instructions.reload.d.ts +1 -0
- package/dist/services/handlers/instructions.reload.js +13 -0
- package/dist/services/handlers/instructions.remove.d.ts +1 -0
- package/dist/services/handlers/instructions.remove.js +122 -0
- package/dist/services/handlers/instructions.shared.d.ts +32 -0
- package/dist/services/handlers/instructions.shared.js +91 -0
- package/dist/services/handlers.activation.d.ts +1 -0
- package/dist/services/handlers.activation.js +203 -0
- package/dist/services/handlers.bootstrap.d.ts +1 -0
- package/dist/services/handlers.bootstrap.js +38 -0
- package/dist/services/handlers.dashboardConfig.d.ts +34 -0
- package/dist/services/handlers.dashboardConfig.js +110 -0
- package/dist/services/handlers.diagnostics.d.ts +1 -0
- package/dist/services/handlers.diagnostics.js +64 -0
- package/dist/services/handlers.feedback.d.ts +15 -0
- package/dist/services/handlers.feedback.js +389 -0
- package/dist/services/handlers.gates.d.ts +1 -0
- package/dist/services/handlers.gates.js +47 -0
- package/dist/services/handlers.graph.d.ts +53 -0
- package/dist/services/handlers.graph.js +231 -0
- package/dist/services/handlers.help.d.ts +1 -0
- package/dist/services/handlers.help.js +119 -0
- package/dist/services/handlers.instructionSchema.d.ts +1 -0
- package/dist/services/handlers.instructionSchema.js +227 -0
- package/dist/services/handlers.instructions.d.ts +8 -0
- package/dist/services/handlers.instructions.js +14 -0
- package/dist/services/handlers.instructionsDiagnostics.d.ts +1 -0
- package/dist/services/handlers.instructionsDiagnostics.js +14 -0
- package/dist/services/handlers.integrity.d.ts +1 -0
- package/dist/services/handlers.integrity.js +35 -0
- package/dist/services/handlers.manifest.d.ts +1 -0
- package/dist/services/handlers.manifest.js +24 -0
- package/dist/services/handlers.messaging.d.ts +12 -0
- package/dist/services/handlers.messaging.js +203 -0
- package/dist/services/handlers.metrics.d.ts +1 -0
- package/dist/services/handlers.metrics.js +43 -0
- package/dist/services/handlers.promote.d.ts +1 -0
- package/dist/services/handlers.promote.js +326 -0
- package/dist/services/handlers.prompt.d.ts +1 -0
- package/dist/services/handlers.prompt.js +7 -0
- package/dist/services/handlers.search.d.ts +69 -0
- package/dist/services/handlers.search.js +669 -0
- package/dist/services/handlers.testPrimitive.d.ts +1 -0
- package/dist/services/handlers.testPrimitive.js +5 -0
- package/dist/services/handlers.trace.d.ts +1 -0
- package/dist/services/handlers.trace.js +35 -0
- package/dist/services/handlers.usage.d.ts +1 -0
- package/dist/services/handlers.usage.js +11 -0
- package/dist/services/hotScore.d.ts +137 -0
- package/dist/services/hotScore.js +244 -0
- package/dist/services/indexContext.d.ts +117 -0
- package/dist/services/indexContext.js +989 -0
- package/dist/services/indexLoader.d.ts +44 -0
- package/dist/services/indexLoader.js +920 -0
- package/dist/services/indexRepository.d.ts +32 -0
- package/dist/services/indexRepository.js +71 -0
- package/dist/services/indexingService.d.ts +1 -0
- package/dist/services/indexingService.js +2 -0
- package/dist/services/instructions.dispatcher.d.ts +1 -0
- package/dist/services/instructions.dispatcher.js +231 -0
- package/dist/services/logPrefix.d.ts +1 -0
- package/dist/services/logPrefix.js +30 -0
- package/dist/services/logger.d.ts +52 -0
- package/dist/services/logger.js +268 -0
- package/dist/services/manifestManager.d.ts +82 -0
- package/dist/services/manifestManager.js +200 -0
- package/dist/services/messaging/agentMailbox.d.ts +60 -0
- package/dist/services/messaging/agentMailbox.js +353 -0
- package/dist/services/messaging/messagingPersistence.d.ts +20 -0
- package/dist/services/messaging/messagingPersistence.js +111 -0
- package/dist/services/messaging/messagingTypes.d.ts +150 -0
- package/dist/services/messaging/messagingTypes.js +66 -0
- package/dist/services/ownershipService.d.ts +1 -0
- package/dist/services/ownershipService.js +36 -0
- package/dist/services/performanceBaseline.d.ts +19 -0
- package/dist/services/performanceBaseline.js +210 -0
- package/dist/services/preflight.d.ts +12 -0
- package/dist/services/preflight.js +79 -0
- package/dist/services/promptReviewService.d.ts +44 -0
- package/dist/services/promptReviewService.js +101 -0
- package/dist/services/responseEnvelope.d.ts +6 -0
- package/dist/services/responseEnvelope.js +25 -0
- package/dist/services/seedBootstrap.d.ts +34 -0
- package/dist/services/seedBootstrap.js +259 -0
- package/dist/services/storage/factory.d.ts +17 -0
- package/dist/services/storage/factory.js +35 -0
- package/dist/services/storage/hashUtils.d.ts +11 -0
- package/dist/services/storage/hashUtils.js +35 -0
- package/dist/services/storage/index.d.ts +12 -0
- package/dist/services/storage/index.js +18 -0
- package/dist/services/storage/jsonFileStore.d.ts +32 -0
- package/dist/services/storage/jsonFileStore.js +241 -0
- package/dist/services/storage/migrationEngine.d.ts +35 -0
- package/dist/services/storage/migrationEngine.js +93 -0
- package/dist/services/storage/sqliteMessageStore.d.ts +53 -0
- package/dist/services/storage/sqliteMessageStore.js +146 -0
- package/dist/services/storage/sqliteSchema.d.ts +12 -0
- package/dist/services/storage/sqliteSchema.js +123 -0
- package/dist/services/storage/sqliteStore.d.ts +42 -0
- package/dist/services/storage/sqliteStore.js +361 -0
- package/dist/services/storage/sqliteUsageStore.d.ts +35 -0
- package/dist/services/storage/sqliteUsageStore.js +94 -0
- package/dist/services/storage/types.d.ts +171 -0
- package/dist/services/storage/types.js +12 -0
- package/dist/services/toolHandlers.d.ts +23 -0
- package/dist/services/toolHandlers.js +50 -0
- package/dist/services/toolRegistry.d.ts +20 -0
- package/dist/services/toolRegistry.js +490 -0
- package/dist/services/toolRegistry.zod.d.ts +10 -0
- package/dist/services/toolRegistry.zod.js +325 -0
- package/dist/services/tracing.d.ts +26 -0
- package/dist/services/tracing.js +260 -0
- package/dist/services/usageBuckets.d.ts +161 -0
- package/dist/services/usageBuckets.js +364 -0
- package/dist/services/validationService.d.ts +38 -0
- package/dist/services/validationService.js +125 -0
- package/dist/utils/BufferRing.d.ts +203 -0
- package/dist/utils/BufferRing.js +551 -0
- package/dist/utils/BufferRingExamples.d.ts +55 -0
- package/dist/utils/BufferRingExamples.js +188 -0
- package/dist/utils/envUtils.d.ts +42 -0
- package/dist/utils/envUtils.js +80 -0
- package/dist/utils/memoryMonitor.d.ts +83 -0
- package/dist/utils/memoryMonitor.js +275 -0
- package/dist/versioning/schemaVersion.d.ts +6 -0
- package/dist/versioning/schemaVersion.js +94 -0
- package/package.json +139 -0
- package/schemas/README.md +13 -0
- package/schemas/feedback-entry.schema.json +27 -0
- package/schemas/graph-export-v2.schema.json +60 -0
- package/schemas/index-server.code-schema.json +40670 -0
- package/schemas/instruction.schema.json +262 -0
- package/schemas/json-schema/SessionPersistence-persisted-admin-session.schema.json +54 -0
- package/schemas/json-schema/SessionPersistence-persisted-session-history-entry.schema.json +51 -0
- package/schemas/json-schema/SessionPersistence-persisted-web-socket-connection.schema.json +54 -0
- package/schemas/json-schema/SessionPersistence-session-persistence-config.schema.json +110 -0
- package/schemas/json-schema/SessionPersistence-session-persistence-data.schema.json +229 -0
- package/schemas/json-schema/SessionPersistence-session-persistence-manifest.schema.json +109 -0
- package/schemas/json-schema/SessionPersistence-session-persistence-metadata.schema.json +55 -0
- package/schemas/json-schema/instruction-audience-scope.schema.json +14 -0
- package/schemas/json-schema/instruction-content-type.schema.json +17 -0
- package/schemas/json-schema/instruction-instruction-entry.schema.json +210 -0
- package/schemas/json-schema/instruction-requirement-level.schema.json +16 -0
- package/schemas/manifest.json +78 -0
- package/schemas/manifest.schema.json +33 -0
- package/schemas/usage-batch.schema.json +16 -0
- package/schemas/usage-buckets.schema.json +30 -0
- package/schemas/usage-event.schema.json +17 -0
- package/scripts/copy-dashboard-assets.mjs +170 -0
- package/scripts/dist/README.md +15 -0
- package/scripts/setup-hooks.cjs +28 -0
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.startMultiInstanceMode = startMultiInstanceMode;
|
|
4
|
+
const registry_1 = require("./registry");
|
|
5
|
+
const LeaderElection_js_1 = require("../dashboard/server/LeaderElection.js");
|
|
6
|
+
const HttpTransport_js_1 = require("../dashboard/server/HttpTransport.js");
|
|
7
|
+
const ThinClient_js_1 = require("../dashboard/server/ThinClient.js");
|
|
8
|
+
/**
|
|
9
|
+
* Start multi-instance leader or follower behavior when enabled by runtime config.
|
|
10
|
+
* Preserves the existing leader election and follower proxy flow from the server entrypoint.
|
|
11
|
+
*/
|
|
12
|
+
async function startMultiInstanceMode(dashboardHost, runtime) {
|
|
13
|
+
const instanceMode = runtime.server.instanceMode;
|
|
14
|
+
if (instanceMode !== 'leader' && instanceMode !== 'auto') {
|
|
15
|
+
if (instanceMode !== 'standalone') {
|
|
16
|
+
process.stderr.write(`[startup] Instance mode=${instanceMode} (follower mode requires thin-client entry point)\n`);
|
|
17
|
+
}
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
try {
|
|
21
|
+
const stateDir = runtime.dashboard.admin.stateDir;
|
|
22
|
+
const leaderPort = runtime.server.leaderPort;
|
|
23
|
+
const leaderHost = dashboardHost || '127.0.0.1';
|
|
24
|
+
const election = new LeaderElection_js_1.LeaderElection({
|
|
25
|
+
stateDir,
|
|
26
|
+
port: leaderPort,
|
|
27
|
+
host: leaderHost,
|
|
28
|
+
heartbeatIntervalMs: runtime.server.heartbeatIntervalMs,
|
|
29
|
+
staleThresholdMs: runtime.server.staleThresholdMs,
|
|
30
|
+
});
|
|
31
|
+
const role = election.start();
|
|
32
|
+
process.stderr.write(`[startup] Instance mode=${instanceMode} elected=${role} pid=${process.pid}\n`);
|
|
33
|
+
if (role === 'leader') {
|
|
34
|
+
const express = (await import('express')).default;
|
|
35
|
+
const mcpApp = express();
|
|
36
|
+
mcpApp.use('/mcp', (0, HttpTransport_js_1.createMcpTransportRoutes)());
|
|
37
|
+
const transportLocation = `${leaderHost}:${leaderPort}/mcp`;
|
|
38
|
+
const mcpServer = mcpApp.listen(leaderPort, leaderHost, () => {
|
|
39
|
+
process.stderr.write(`[startup] MCP HTTP transport listening on ${transportLocation}\n`);
|
|
40
|
+
process.stderr.write(`[startup] Thin clients can connect via INDEX_SERVER_STATE_DIR=${stateDir}\n`);
|
|
41
|
+
});
|
|
42
|
+
mcpServer.on('error', (err) => {
|
|
43
|
+
process.stderr.write(`[startup] MCP HTTP transport failed: ${err.message}\n`);
|
|
44
|
+
if (err.code === 'EADDRINUSE') {
|
|
45
|
+
process.stderr.write(`[startup] Port ${leaderPort} is already in use. Check INDEX_SERVER_LEADER_PORT or other services on this port.\n`);
|
|
46
|
+
process.stderr.write(`[startup] Releasing leader lock and continuing as standalone.\n`);
|
|
47
|
+
election.stop();
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
election.stop();
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
process.on('exit', () => {
|
|
54
|
+
election.stop();
|
|
55
|
+
try {
|
|
56
|
+
mcpServer.close();
|
|
57
|
+
}
|
|
58
|
+
catch { /* ignore */ }
|
|
59
|
+
});
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
process.stderr.write(`[startup] Running as follower -- leader at pid=${election.leaderInfo?.pid} port=${election.leaderInfo?.port}\n`);
|
|
63
|
+
const thinClient = new ThinClient_js_1.ThinClient({ stateDir });
|
|
64
|
+
const leaderUrl = thinClient.discoverLeader();
|
|
65
|
+
process.stderr.write(`[startup] Follower proxy target: ${leaderUrl ?? 'pending discovery'}\n`);
|
|
66
|
+
(0, registry_1.installHandlerProxy)(async (tool, params) => {
|
|
67
|
+
const response = await thinClient.sendRpc(tool, params);
|
|
68
|
+
if (response.error) {
|
|
69
|
+
throw new Error(`Leader error [${response.error.code}]: ${response.error.message}`);
|
|
70
|
+
}
|
|
71
|
+
return response.result;
|
|
72
|
+
});
|
|
73
|
+
process.stderr.write(`[startup] Handler proxy installed -- all tool calls forwarded to leader\n`);
|
|
74
|
+
election.on('leader-lost', () => {
|
|
75
|
+
process.stderr.write(`[startup] Leader lost -- attempting promotion\n`);
|
|
76
|
+
});
|
|
77
|
+
election.on('promoted', () => {
|
|
78
|
+
process.stderr.write(`[startup] Promoted to leader -- starting HTTP transport before removing proxy\n`);
|
|
79
|
+
(async () => {
|
|
80
|
+
try {
|
|
81
|
+
const express = (await import('express')).default;
|
|
82
|
+
const mcpApp = express();
|
|
83
|
+
mcpApp.use('/mcp', (0, HttpTransport_js_1.createMcpTransportRoutes)());
|
|
84
|
+
const transportLocation = `${leaderHost}:${leaderPort}/mcp`;
|
|
85
|
+
const mcpServer = mcpApp.listen(leaderPort, leaderHost, () => {
|
|
86
|
+
(0, registry_1.installHandlerProxy)(null);
|
|
87
|
+
process.stderr.write(`[startup] MCP HTTP transport listening on ${transportLocation}\n`);
|
|
88
|
+
process.stderr.write(`[startup] Handler proxy removed -- serving requests locally\n`);
|
|
89
|
+
});
|
|
90
|
+
mcpServer.on('error', (err) => {
|
|
91
|
+
process.stderr.write(`[startup] Post-promotion HTTP transport failed: ${err.message}\n`);
|
|
92
|
+
if (err.code === 'EADDRINUSE') {
|
|
93
|
+
process.stderr.write(`[startup] Port ${leaderPort} in use after promotion -- retrying in 2s\n`);
|
|
94
|
+
setTimeout(() => {
|
|
95
|
+
try {
|
|
96
|
+
mcpServer.close();
|
|
97
|
+
mcpApp.listen(leaderPort, leaderHost, () => {
|
|
98
|
+
(0, registry_1.installHandlerProxy)(null);
|
|
99
|
+
process.stderr.write(`[startup] MCP HTTP transport listening on retry\n`);
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
catch (retryErr) {
|
|
103
|
+
process.stderr.write(`[startup] Port retry failed: ${retryErr}\n`);
|
|
104
|
+
election.stop();
|
|
105
|
+
}
|
|
106
|
+
}, 2000);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
election.stop();
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
process.on('exit', () => {
|
|
113
|
+
try {
|
|
114
|
+
mcpServer.close();
|
|
115
|
+
}
|
|
116
|
+
catch { /* ignore */ }
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
catch (e) {
|
|
120
|
+
process.stderr.write(`[startup] Post-promotion HTTP setup failed: ${e}\n`);
|
|
121
|
+
}
|
|
122
|
+
})();
|
|
123
|
+
});
|
|
124
|
+
process.on('exit', () => {
|
|
125
|
+
election.stop();
|
|
126
|
+
thinClient.stop();
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
catch (e) {
|
|
130
|
+
process.stderr.write(`[startup] Leader election failed: ${e}\n`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export type Handler<TParams = unknown> = (params: TParams) => Promise<unknown> | unknown;
|
|
2
|
+
interface MetricRecord {
|
|
3
|
+
count: number;
|
|
4
|
+
totalMs: number;
|
|
5
|
+
maxMs: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Register a tool handler in the in-process registry, wrapping it with metrics,
|
|
9
|
+
* audit logging, correlation IDs, and optional proxy forwarding.
|
|
10
|
+
* @param name - Tool name used to route incoming requests
|
|
11
|
+
* @param fn - Handler function; may return a plain value or a Promise
|
|
12
|
+
*/
|
|
13
|
+
export declare function registerHandler<TParams = unknown>(name: string, fn: Handler<TParams>): void;
|
|
14
|
+
/**
|
|
15
|
+
* Look up a registered (wrapped) handler by name.
|
|
16
|
+
* @param name - Tool name to look up
|
|
17
|
+
* @returns The wrapped handler, or `undefined` if not registered
|
|
18
|
+
*/
|
|
19
|
+
export declare function getHandler(name: string): Handler<unknown>;
|
|
20
|
+
/**
|
|
21
|
+
* Return the raw (unwrapped) handler that always executes locally,
|
|
22
|
+
* bypassing any installed proxy. Used by HttpTransport so the leader
|
|
23
|
+
* never accidentally routes its own handler calls through a proxy.
|
|
24
|
+
* @param name - Tool name to look up
|
|
25
|
+
* @returns The raw unwrapped handler, or `undefined` if not registered
|
|
26
|
+
*/
|
|
27
|
+
export declare function getLocalHandler(name: string): Handler<unknown>;
|
|
28
|
+
export declare function installHandlerProxy(fn: ((tool: string, params: unknown) => Promise<unknown>) | null): void;
|
|
29
|
+
/**
|
|
30
|
+
* Return the currently installed proxy function, or `null` if no proxy is active.
|
|
31
|
+
* @returns The proxy function, or `null`
|
|
32
|
+
*/
|
|
33
|
+
export declare function getHandlerProxy(): ((tool: string, params: unknown) => Promise<unknown>) | null;
|
|
34
|
+
/**
|
|
35
|
+
* Return a sorted list of all registered tool method names.
|
|
36
|
+
* @returns Array of method name strings in alphabetical order
|
|
37
|
+
*/
|
|
38
|
+
export declare function listRegisteredMethods(): string[];
|
|
39
|
+
/**
|
|
40
|
+
* Return the raw per-tool metrics record map (count, totalMs, maxMs).
|
|
41
|
+
* @returns Reference to the live metrics map keyed by tool name
|
|
42
|
+
*/
|
|
43
|
+
export declare function getMetricsRaw(): Record<string, MetricRecord>;
|
|
44
|
+
export {};
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerHandler = registerHandler;
|
|
4
|
+
exports.getHandler = getHandler;
|
|
5
|
+
exports.getLocalHandler = getLocalHandler;
|
|
6
|
+
exports.installHandlerProxy = installHandlerProxy;
|
|
7
|
+
exports.getHandlerProxy = getHandlerProxy;
|
|
8
|
+
exports.listRegisteredMethods = listRegisteredMethods;
|
|
9
|
+
exports.getMetricsRaw = getMetricsRaw;
|
|
10
|
+
// Lightweight in-process tool registry used exclusively by the SDK server path.
|
|
11
|
+
// Replaces the prior custom JSON-RPC transport layer.
|
|
12
|
+
const logger_1 = require("../services/logger");
|
|
13
|
+
const responseEnvelope_1 = require("../services/responseEnvelope");
|
|
14
|
+
const auditLog_1 = require("../services/auditLog");
|
|
15
|
+
const runtimeConfig_1 = require("../config/runtimeConfig");
|
|
16
|
+
// Dashboard metrics integration: bridge per-tool execution to global MetricsCollector
|
|
17
|
+
// so the admin panel performance & tool counters reflect live activity. Previously the
|
|
18
|
+
// dashboard showed zeros because recordToolCall was never invoked along the runtime path.
|
|
19
|
+
const MetricsCollector_js_1 = require("../dashboard/server/MetricsCollector.js");
|
|
20
|
+
const handlers = {};
|
|
21
|
+
// Raw (unwrapped) handlers that always execute locally - never go through proxy.
|
|
22
|
+
// Used by HttpTransport so the leader always runs handlers locally even when
|
|
23
|
+
// a proxy is installed in this process (e.g., same-process test scenarios).
|
|
24
|
+
const localHandlers = {};
|
|
25
|
+
const metrics = {};
|
|
26
|
+
function recordMetric(name, ms) {
|
|
27
|
+
let rec = metrics[name];
|
|
28
|
+
if (!rec) {
|
|
29
|
+
rec = { count: 0, totalMs: 0, maxMs: 0 };
|
|
30
|
+
metrics[name] = rec;
|
|
31
|
+
}
|
|
32
|
+
rec.count++;
|
|
33
|
+
rec.totalMs += ms;
|
|
34
|
+
if (ms > rec.maxMs)
|
|
35
|
+
rec.maxMs = ms;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Register a tool handler in the in-process registry, wrapping it with metrics,
|
|
39
|
+
* audit logging, correlation IDs, and optional proxy forwarding.
|
|
40
|
+
* @param name - Tool name used to route incoming requests
|
|
41
|
+
* @param fn - Handler function; may return a plain value or a Promise
|
|
42
|
+
*/
|
|
43
|
+
function registerHandler(name, fn) {
|
|
44
|
+
// Always log tool lifecycle events (previously gated by INDEX_SERVER_LOG_TOOLS)
|
|
45
|
+
// Lazily resolve singleton (avoid throwing if dashboard disabled – metrics collector module
|
|
46
|
+
// still exports a singleton even when dashboard not started).
|
|
47
|
+
const collector = (() => { try {
|
|
48
|
+
return (0, MetricsCollector_js_1.getMetricsCollector)();
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return null;
|
|
52
|
+
} })();
|
|
53
|
+
const wrapped = async (params) => {
|
|
54
|
+
const corr = (0, logger_1.newCorrelationId)();
|
|
55
|
+
// If a proxy is installed (follower mode), forward to leader instead of running locally
|
|
56
|
+
if (proxyFn) {
|
|
57
|
+
try {
|
|
58
|
+
(0, logger_1.log)('INFO', `[registry] → ${name} (proxy)`, { tool: name, correlationId: corr });
|
|
59
|
+
}
|
|
60
|
+
catch { /* ignore */ }
|
|
61
|
+
const startNs = typeof process.hrtime === 'function' ? process.hrtime.bigint() : BigInt(Date.now()) * 1000000n;
|
|
62
|
+
try {
|
|
63
|
+
const result = await proxyFn(name, params);
|
|
64
|
+
const endNs = typeof process.hrtime === 'function' ? process.hrtime.bigint() : BigInt(Date.now()) * 1000000n;
|
|
65
|
+
const ms = Number(endNs - startNs) / 1_000_000;
|
|
66
|
+
recordMetric(name, ms);
|
|
67
|
+
try {
|
|
68
|
+
collector?.recordToolCall(name, true, ms);
|
|
69
|
+
}
|
|
70
|
+
catch { /* ignore */ }
|
|
71
|
+
try {
|
|
72
|
+
(0, logger_1.log)('INFO', `[registry] ← ${name} (proxy)`, { tool: name, correlationId: corr, ms });
|
|
73
|
+
}
|
|
74
|
+
catch { /* ignore */ }
|
|
75
|
+
return result;
|
|
76
|
+
}
|
|
77
|
+
catch (e) {
|
|
78
|
+
const endNs = typeof process.hrtime === 'function' ? process.hrtime.bigint() : BigInt(Date.now()) * 1000000n;
|
|
79
|
+
const ms = Number(endNs - startNs) / 1_000_000;
|
|
80
|
+
recordMetric(name, ms);
|
|
81
|
+
try {
|
|
82
|
+
collector?.recordToolCall(name, false, ms, 'proxy_error');
|
|
83
|
+
}
|
|
84
|
+
catch { /* ignore */ }
|
|
85
|
+
try {
|
|
86
|
+
(0, logger_1.log)('ERROR', `[registry] Tool proxy error: ${name}`, { tool: name, correlationId: corr, detail: e instanceof Error ? e.stack : String(e) });
|
|
87
|
+
}
|
|
88
|
+
catch { /* ignore */ }
|
|
89
|
+
throw e;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
const startNs = typeof process.hrtime === 'function' ? process.hrtime.bigint() : BigInt(Date.now()) * 1000000n;
|
|
93
|
+
const timingEnabled = process.env.INDEX_SERVER_ADD_TIMING === '1' || (0, runtimeConfig_1.getRuntimeConfig)().mutation.dispatcherTiming;
|
|
94
|
+
let phaseMarks;
|
|
95
|
+
if (timingEnabled) {
|
|
96
|
+
phaseMarks = [{ p: 'start', t: Date.now() }];
|
|
97
|
+
}
|
|
98
|
+
try {
|
|
99
|
+
(0, logger_1.log)('INFO', `[registry] → ${name}`, { tool: name, correlationId: corr });
|
|
100
|
+
}
|
|
101
|
+
catch { /* logging should not break */ }
|
|
102
|
+
let success = false;
|
|
103
|
+
let errorType;
|
|
104
|
+
try {
|
|
105
|
+
const result = await (0, auditLog_1.runWithCorrelation)(corr, () => Promise.resolve(fn(params)));
|
|
106
|
+
if (timingEnabled && phaseMarks) {
|
|
107
|
+
phaseMarks.push({ p: 'afterFn', t: Date.now() });
|
|
108
|
+
}
|
|
109
|
+
success = true;
|
|
110
|
+
const wrappedResp = (0, responseEnvelope_1.wrapResponse)(result);
|
|
111
|
+
if (timingEnabled) {
|
|
112
|
+
try {
|
|
113
|
+
const endTs = Date.now();
|
|
114
|
+
phaseMarks.push({ p: 'endPreWrap', t: endTs });
|
|
115
|
+
const phases = phaseMarks;
|
|
116
|
+
wrappedResp.__timing = { tool: name, phases };
|
|
117
|
+
}
|
|
118
|
+
catch { /* ignore timing embed errors */ }
|
|
119
|
+
}
|
|
120
|
+
return wrappedResp;
|
|
121
|
+
}
|
|
122
|
+
catch (e) {
|
|
123
|
+
try {
|
|
124
|
+
(0, logger_1.log)('ERROR', `[registry] Tool error: ${name}`, { tool: name, correlationId: corr, detail: e instanceof Error ? e.stack : String(e) });
|
|
125
|
+
}
|
|
126
|
+
catch { /* ignore */ }
|
|
127
|
+
// Best-effort classification for dashboard error breakdown
|
|
128
|
+
try {
|
|
129
|
+
const errObj = e;
|
|
130
|
+
// Narrow progressively without casting to any to satisfy eslint no-explicit-any rule.
|
|
131
|
+
if (typeof errObj === 'object' && errObj !== null) {
|
|
132
|
+
const maybeCode = errObj.code;
|
|
133
|
+
if (Number.isSafeInteger(maybeCode)) {
|
|
134
|
+
errorType = `code_${maybeCode}`;
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
const maybeData = errObj.data;
|
|
138
|
+
if (typeof maybeData === 'object' && maybeData !== null && typeof maybeData.reason === 'string') {
|
|
139
|
+
errorType = String(maybeData.reason);
|
|
140
|
+
}
|
|
141
|
+
else if (typeof errObj.reason === 'string') {
|
|
142
|
+
errorType = String(errObj.reason);
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
errorType = 'error';
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
errorType = 'error';
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
catch { /* ignore classification errors */ }
|
|
154
|
+
throw e;
|
|
155
|
+
}
|
|
156
|
+
finally {
|
|
157
|
+
const endNs = typeof process.hrtime === 'function' ? process.hrtime.bigint() : BigInt(Date.now()) * 1000000n;
|
|
158
|
+
const ms = Number(endNs - startNs) / 1_000_000;
|
|
159
|
+
recordMetric(name, ms);
|
|
160
|
+
if (timingEnabled && phaseMarks) {
|
|
161
|
+
try {
|
|
162
|
+
phaseMarks.push({ p: 'finally', t: Date.now() });
|
|
163
|
+
}
|
|
164
|
+
catch { /* ignore */ }
|
|
165
|
+
}
|
|
166
|
+
// Feed global dashboard metrics (safe no-op if collector absent). This enables:
|
|
167
|
+
// - requestsPerMinute (rolling window)
|
|
168
|
+
// - successRate / errorRate
|
|
169
|
+
// - per-tool call counts & avg response time
|
|
170
|
+
try {
|
|
171
|
+
collector?.recordToolCall(name, success, ms, success ? undefined : errorType);
|
|
172
|
+
}
|
|
173
|
+
catch { /* never block tool path */ }
|
|
174
|
+
try {
|
|
175
|
+
(0, auditLog_1.logToolAudit)(name, success, ms, corr, success ? undefined : errorType);
|
|
176
|
+
}
|
|
177
|
+
catch { /* never block tool path */ }
|
|
178
|
+
try {
|
|
179
|
+
(0, logger_1.log)('INFO', `[registry] ← ${name}`, { tool: name, correlationId: corr, ms });
|
|
180
|
+
}
|
|
181
|
+
catch { /* ignore */ }
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
handlers[name] = wrapped;
|
|
185
|
+
localHandlers[name] = fn;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Look up a registered (wrapped) handler by name.
|
|
189
|
+
* @param name - Tool name to look up
|
|
190
|
+
* @returns The wrapped handler, or `undefined` if not registered
|
|
191
|
+
*/
|
|
192
|
+
function getHandler(name) {
|
|
193
|
+
return handlers[name];
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Return the raw (unwrapped) handler that always executes locally,
|
|
197
|
+
* bypassing any installed proxy. Used by HttpTransport so the leader
|
|
198
|
+
* never accidentally routes its own handler calls through a proxy.
|
|
199
|
+
* @param name - Tool name to look up
|
|
200
|
+
* @returns The raw unwrapped handler, or `undefined` if not registered
|
|
201
|
+
*/
|
|
202
|
+
function getLocalHandler(name) {
|
|
203
|
+
return localHandlers[name];
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Install a proxy function that intercepts all handler calls.
|
|
207
|
+
* Used by follower instances to forward tool calls to the leader.
|
|
208
|
+
* The proxy receives (toolName, params) and returns the result.
|
|
209
|
+
* Pass null to remove the proxy (e.g., on promotion to leader).
|
|
210
|
+
* @param fn - Proxy function to install, or `null` to remove the current proxy
|
|
211
|
+
*/
|
|
212
|
+
let proxyFn = null;
|
|
213
|
+
function installHandlerProxy(fn) {
|
|
214
|
+
proxyFn = fn;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Return the currently installed proxy function, or `null` if no proxy is active.
|
|
218
|
+
* @returns The proxy function, or `null`
|
|
219
|
+
*/
|
|
220
|
+
function getHandlerProxy() {
|
|
221
|
+
return proxyFn;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Return a sorted list of all registered tool method names.
|
|
225
|
+
* @returns Array of method name strings in alphabetical order
|
|
226
|
+
*/
|
|
227
|
+
function listRegisteredMethods() {
|
|
228
|
+
return Object.keys(handlers).sort();
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Return the raw per-tool metrics record map (count, totalMs, maxMs).
|
|
232
|
+
* @returns Reference to the live metrics map keyed by tool name
|
|
233
|
+
*/
|
|
234
|
+
function getMetricsRaw() {
|
|
235
|
+
return metrics;
|
|
236
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import '../services/toolHandlers';
|
|
2
|
+
/**
|
|
3
|
+
* Create and configure an MCP SDK server instance with the full tool registry.
|
|
4
|
+
* @param ServerClass - The MCP SDK Server constructor (loaded dynamically to avoid ESM/CJS conflicts)
|
|
5
|
+
* @returns Configured SDK server instance with all tool handlers registered
|
|
6
|
+
*/
|
|
7
|
+
export declare function createSdkServer(ServerClass: any): any;
|
|
8
|
+
export declare function startSdkServer(): Promise<void>;
|