@jagilber-org/index-server 1.19.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/CHANGELOG.md +1218 -0
- package/CODE_OF_CONDUCT.md +49 -0
- package/CONTRIBUTING.md +75 -0
- package/LICENSE +21 -0
- package/README.md +523 -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 +45 -0
- package/dist/config/dashboardConfig.js +63 -0
- package/dist/config/defaultValues.d.ts +61 -0
- package/dist/config/defaultValues.js +70 -0
- package/dist/config/dirConstants.d.ts +17 -0
- package/dist/config/dirConstants.js +28 -0
- package/dist/config/featureConfig.d.ts +61 -0
- package/dist/config/featureConfig.js +121 -0
- package/dist/config/runtimeConfig.d.ts +145 -0
- package/dist/config/runtimeConfig.js +334 -0
- package/dist/config/serverConfig.d.ts +90 -0
- package/dist/config/serverConfig.js +164 -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 +2150 -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 +1466 -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 +425 -0
- package/dist/dashboard/client/js/admin.graph.js +583 -0
- package/dist/dashboard/client/js/admin.instances.js +120 -0
- package/dist/dashboard/client/js/admin.instructions.js +552 -0
- package/dist/dashboard/client/js/admin.logs.js +113 -0
- package/dist/dashboard/client/js/admin.maintenance.js +354 -0
- package/dist/dashboard/client/js/admin.messaging.js +635 -0
- package/dist/dashboard/client/js/admin.monitor.js +181 -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 +293 -0
- package/dist/dashboard/client/js/admin.sqlite.js +366 -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 +46 -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 +22 -0
- package/dist/dashboard/export/exporters/xmlExporter.d.ts +17 -0
- package/dist/dashboard/export/exporters/xmlExporter.js +175 -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 +559 -0
- package/dist/dashboard/server/AdminPanel.d.ts +183 -0
- package/dist/dashboard/server/AdminPanel.js +792 -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 +214 -0
- package/dist/dashboard/server/ApiRoutes.d.ts +17 -0
- package/dist/dashboard/server/ApiRoutes.js +149 -0
- package/dist/dashboard/server/DashboardServer.d.ts +49 -0
- package/dist/dashboard/server/DashboardServer.js +159 -0
- package/dist/dashboard/server/FileMetricsStorage.d.ts +49 -0
- package/dist/dashboard/server/FileMetricsStorage.js +195 -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 +284 -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 +803 -0
- package/dist/dashboard/server/SessionPersistenceManager.d.ts +88 -0
- package/dist/dashboard/server/SessionPersistenceManager.js +457 -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 +463 -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 +206 -0
- package/dist/dashboard/server/metricsSerializer.d.ts +25 -0
- package/dist/dashboard/server/metricsSerializer.js +195 -0
- package/dist/dashboard/server/routes/admin.routes.d.ts +16 -0
- package/dist/dashboard/server/routes/admin.routes.js +596 -0
- package/dist/dashboard/server/routes/alerts.routes.d.ts +7 -0
- package/dist/dashboard/server/routes/alerts.routes.js +93 -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 +280 -0
- package/dist/dashboard/server/routes/index.d.ts +38 -0
- package/dist/dashboard/server/routes/index.js +194 -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 +336 -0
- package/dist/dashboard/server/routes/knowledge.routes.d.ts +6 -0
- package/dist/dashboard/server/routes/knowledge.routes.js +82 -0
- package/dist/dashboard/server/routes/logs.routes.d.ts +6 -0
- package/dist/dashboard/server/routes/logs.routes.js +164 -0
- package/dist/dashboard/server/routes/messaging.routes.d.ts +16 -0
- package/dist/dashboard/server/routes/messaging.routes.js +293 -0
- package/dist/dashboard/server/routes/metrics.routes.d.ts +10 -0
- package/dist/dashboard/server/routes/metrics.routes.js +346 -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 +569 -0
- package/dist/dashboard/server/routes/status.routes.d.ts +7 -0
- package/dist/dashboard/server/routes/status.routes.js +183 -0
- package/dist/dashboard/server/routes/synthetic.routes.d.ts +7 -0
- package/dist/dashboard/server/routes/synthetic.routes.js +195 -0
- package/dist/dashboard/server/routes/tools.routes.d.ts +6 -0
- package/dist/dashboard/server/routes/tools.routes.js +46 -0
- package/dist/dashboard/server/routes/usage.routes.d.ts +6 -0
- package/dist/dashboard/server/routes/usage.routes.js +25 -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 +45 -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 +128 -0
- package/dist/schemas/index.js +371 -0
- package/dist/scripts/runPerformanceBaseline.d.ts +1 -0
- package/dist/scripts/runPerformanceBaseline.js +17 -0
- package/dist/server/handshakeManager.d.ts +25 -0
- package/dist/server/handshakeManager.js +472 -0
- package/dist/server/index-server.d.ts +56 -0
- package/dist/server/index-server.js +822 -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/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 +110 -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 +259 -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 +496 -0
- package/dist/services/handlers/instructions.groom.d.ts +1 -0
- package/dist/services/handlers/instructions.groom.js +523 -0
- package/dist/services/handlers/instructions.import.d.ts +1 -0
- package/dist/services/handlers/instructions.import.js +173 -0
- package/dist/services/handlers/instructions.patch.d.ts +1 -0
- package/dist/services/handlers/instructions.patch.js +167 -0
- package/dist/services/handlers/instructions.query.d.ts +163 -0
- package/dist/services/handlers/instructions.query.js +522 -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 +118 -0
- package/dist/services/handlers/instructions.shared.d.ts +31 -0
- package/dist/services/handlers/instructions.shared.js +124 -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 +108 -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 +378 -0
- package/dist/services/handlers.gates.d.ts +1 -0
- package/dist/services/handlers.gates.js +46 -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 +306 -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 +645 -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 +31 -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 +968 -0
- package/dist/services/indexLoader.d.ts +44 -0
- package/dist/services/indexLoader.js +921 -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 +38 -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 +427 -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 +122 -0
- package/dist/services/storage/sqliteStore.d.ts +41 -0
- package/dist/services/storage/sqliteStore.js +339 -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 +323 -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 +93 -0
- package/package.json +134 -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 +38477 -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 +206 -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/setup-hooks.cjs +28 -0
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
// Minimal standalone MCP server (handshake + health + ping) with strict ordering
|
|
7
|
+
// Inspired by simplified PowerShell reference: respond to initialize, then emit server/ready, then tools/list_changed.
|
|
8
|
+
// No SDK, no fallbacks, no extra watchdogs. Deterministic ordering and tiny surface.
|
|
9
|
+
const readline_1 = require("readline");
|
|
10
|
+
const fs_1 = __importDefault(require("fs"));
|
|
11
|
+
const path_1 = __importDefault(require("path"));
|
|
12
|
+
const runtimeConfig_1 = require("../config/runtimeConfig");
|
|
13
|
+
// High resolution timestamp helper for ordering diagnostics
|
|
14
|
+
function ts() {
|
|
15
|
+
try {
|
|
16
|
+
return Number(process.hrtime.bigint() % BigInt(1e12)).toString().padStart(12, '0');
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return Date.now().toString();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
const VERSION = (() => { try {
|
|
23
|
+
const p = path_1.default.join(process.cwd(), 'package.json');
|
|
24
|
+
return JSON.parse(fs_1.default.readFileSync(p, 'utf8')).version || '0.0.0';
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return '0.0.0';
|
|
28
|
+
} })();
|
|
29
|
+
const rl = (0, readline_1.createInterface)({ input: process.stdin });
|
|
30
|
+
const DEBUG_ORDER = (0, runtimeConfig_1.getRuntimeConfig)().minimal.debugOrdering;
|
|
31
|
+
function write(obj) { try {
|
|
32
|
+
process.stdout.write(JSON.stringify(obj) + '\n');
|
|
33
|
+
}
|
|
34
|
+
catch { /* ignore */ } }
|
|
35
|
+
function debug(msg) { if (DEBUG_ORDER) {
|
|
36
|
+
try {
|
|
37
|
+
process.stderr.write('[minimal-debug] ' + msg + '\n');
|
|
38
|
+
}
|
|
39
|
+
catch { /* ignore */ }
|
|
40
|
+
} }
|
|
41
|
+
function sendInitResult(id, protocolVersion) {
|
|
42
|
+
const payload = { jsonrpc: '2.0', id: id ?? 1, result: { protocolVersion, serverInfo: { name: 'mcp-minimal-server', version: VERSION }, capabilities: { tools: { listChanged: true } }, instructions: 'minimal mode' } };
|
|
43
|
+
const line = JSON.stringify(payload) + '\n';
|
|
44
|
+
try {
|
|
45
|
+
debug(`init-write-start hr=${ts()}`);
|
|
46
|
+
// Synchronous write to eliminate any chance the initialize line isn't flushed before ready scheduling.
|
|
47
|
+
// fs.writeSync bypasses stream buffering semantics of process.stdout.write callback timing.
|
|
48
|
+
fs_1.default.writeSync(1, line);
|
|
49
|
+
// Extra hard flush (rarely needed, but guards against odd buffering on some platforms / CI setups)
|
|
50
|
+
try {
|
|
51
|
+
fs_1.default.fsyncSync(1);
|
|
52
|
+
}
|
|
53
|
+
catch { /* ignore */ }
|
|
54
|
+
// Emit a deterministic sentinel (debuggable) to stdout directly after initialize result for test harness correlation.
|
|
55
|
+
// If tests ever report missing initialize but this sentinel appears, the loss happened in parsing logic not emission.
|
|
56
|
+
fs_1.default.writeSync(1, JSON.stringify({ jsonrpc: '2.0', method: 'minimal/handshake_sentinel', params: { hr: ts() } }) + '\n');
|
|
57
|
+
debug(`init-write-done hr=${ts()} bytes=${line.length}`);
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
debug('init-write-error ' + e.message);
|
|
61
|
+
}
|
|
62
|
+
// Originally this used setImmediate; move to nextTick for tighter ordering while still deferring until after synchronous writes.
|
|
63
|
+
// Empirically reduces rare duplicate ready observations caused by unexpected re-entrancy in exotic environments.
|
|
64
|
+
process.nextTick(() => scheduleReady('post-init-nextTick'));
|
|
65
|
+
}
|
|
66
|
+
function scheduleReady(reason) {
|
|
67
|
+
if (recentReadyEmitted) {
|
|
68
|
+
debug(`ready-skip-duplicate hr=${ts()} reason=${reason}`);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
// Single scheduling point; we assume initialize already flushed.
|
|
72
|
+
recentReadyEmitted = true;
|
|
73
|
+
debug(`ready-start hr=${ts()} reason=${reason}`);
|
|
74
|
+
write({ jsonrpc: '2.0', method: 'server/ready', params: { version: VERSION, reason, hr: ts() } });
|
|
75
|
+
write({ jsonrpc: '2.0', method: 'notifications/tools/list_changed', params: { hr: ts() } });
|
|
76
|
+
debug(`ready-done hr=${ts()}`);
|
|
77
|
+
}
|
|
78
|
+
let recentReadyEmitted = false;
|
|
79
|
+
rl.on('line', line => {
|
|
80
|
+
const raw = line.trim();
|
|
81
|
+
if (!raw)
|
|
82
|
+
return;
|
|
83
|
+
let parsed;
|
|
84
|
+
try {
|
|
85
|
+
parsed = JSON.parse(raw);
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
if (!isRequest(parsed))
|
|
91
|
+
return;
|
|
92
|
+
const m = parsed;
|
|
93
|
+
switch (m.method) {
|
|
94
|
+
case 'initialize': {
|
|
95
|
+
const proto = m.params?.protocolVersion || '2025-06-18';
|
|
96
|
+
sendInitResult(m.id, proto);
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
case 'ping': {
|
|
100
|
+
write({ jsonrpc: '2.0', id: m.id ?? null, result: { timestamp: new Date().toISOString() } });
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
case 'tools/list': {
|
|
104
|
+
write({ jsonrpc: '2.0', id: m.id ?? null, result: { tools: [] } });
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
case 'tools/call': {
|
|
108
|
+
const name = typeof m.params?.name === 'string' ? m.params.name : undefined;
|
|
109
|
+
if (name === 'health_check') {
|
|
110
|
+
write({ jsonrpc: '2.0', id: m.id ?? null, result: { content: [{ type: 'text', text: JSON.stringify({ status: 'ok', version: VERSION }) }] } });
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
write({ jsonrpc: '2.0', id: m.id ?? null, error: { code: -32601, message: 'Unknown tool', data: { method: name } } });
|
|
114
|
+
}
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
case 'shutdown': {
|
|
118
|
+
write({ jsonrpc: '2.0', id: m.id ?? null, result: { shuttingDown: true } });
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
case 'exit': {
|
|
122
|
+
write({ jsonrpc: '2.0', id: m.id ?? null, result: { exiting: true } });
|
|
123
|
+
setTimeout(() => process.exit(0), 0);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
default: {
|
|
127
|
+
if (Object.prototype.hasOwnProperty.call(m, 'id')) {
|
|
128
|
+
write({ jsonrpc: '2.0', id: m.id ?? null, error: { code: -32601, message: 'Method not found', data: { method: m.method } } });
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
function isRequest(v) {
|
|
134
|
+
if (!v || typeof v !== 'object')
|
|
135
|
+
return false;
|
|
136
|
+
const obj = v;
|
|
137
|
+
return obj.jsonrpc === '2.0' && typeof obj.method === 'string';
|
|
138
|
+
}
|
|
139
|
+
// Keep alive in case no stdin activity yet
|
|
140
|
+
process.stdin.resume();
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Persistence Schema Design
|
|
3
|
+
*
|
|
4
|
+
* Persistent storage design for admin sessions, websocket connections, and session history
|
|
5
|
+
* with deduplication, atomic writes, and backup integration.
|
|
6
|
+
*/
|
|
7
|
+
export interface PersistedAdminSession {
|
|
8
|
+
id: string;
|
|
9
|
+
userId: string;
|
|
10
|
+
startTime: string;
|
|
11
|
+
lastActivity: string;
|
|
12
|
+
ipAddress: string;
|
|
13
|
+
userAgent: string;
|
|
14
|
+
permissions: string[];
|
|
15
|
+
persistedAt: string;
|
|
16
|
+
version: number;
|
|
17
|
+
}
|
|
18
|
+
export interface PersistedWebSocketConnection {
|
|
19
|
+
id: string;
|
|
20
|
+
clientId: string;
|
|
21
|
+
connectedAt: string;
|
|
22
|
+
lastActivity: string;
|
|
23
|
+
ipAddress?: string;
|
|
24
|
+
userAgent?: string;
|
|
25
|
+
isActive: boolean;
|
|
26
|
+
disconnectedAt?: string;
|
|
27
|
+
disconnectReason?: string;
|
|
28
|
+
persistedAt: string;
|
|
29
|
+
version: number;
|
|
30
|
+
}
|
|
31
|
+
export interface PersistedSessionHistoryEntry {
|
|
32
|
+
id: string;
|
|
33
|
+
userId: string;
|
|
34
|
+
startTime: string;
|
|
35
|
+
endTime?: string;
|
|
36
|
+
ipAddress: string;
|
|
37
|
+
userAgent: string;
|
|
38
|
+
terminated?: boolean;
|
|
39
|
+
terminationReason?: string;
|
|
40
|
+
persistedAt: string;
|
|
41
|
+
version: number;
|
|
42
|
+
}
|
|
43
|
+
export interface SessionPersistenceMetadata {
|
|
44
|
+
lastPersisted: string;
|
|
45
|
+
version: number;
|
|
46
|
+
totalSessions: number;
|
|
47
|
+
totalConnections: number;
|
|
48
|
+
totalHistoryEntries: number;
|
|
49
|
+
checksums: {
|
|
50
|
+
sessions: string;
|
|
51
|
+
connections: string;
|
|
52
|
+
history: string;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export interface SessionPersistenceManifest {
|
|
56
|
+
metadata: SessionPersistenceMetadata;
|
|
57
|
+
files: {
|
|
58
|
+
adminSessions: string;
|
|
59
|
+
webSocketConnections: string;
|
|
60
|
+
sessionHistory: string;
|
|
61
|
+
};
|
|
62
|
+
retention: {
|
|
63
|
+
maxHistoryEntries: number;
|
|
64
|
+
maxHistoryDays: number;
|
|
65
|
+
maxConnectionHistoryDays: number;
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
export interface SessionPersistenceData {
|
|
69
|
+
adminSessions: PersistedAdminSession[];
|
|
70
|
+
webSocketConnections: PersistedWebSocketConnection[];
|
|
71
|
+
sessionHistory: PersistedSessionHistoryEntry[];
|
|
72
|
+
metadata: SessionPersistenceMetadata;
|
|
73
|
+
}
|
|
74
|
+
export interface SessionPersistenceConfig {
|
|
75
|
+
enabled: boolean;
|
|
76
|
+
persistenceDir: string;
|
|
77
|
+
backupIntegration: boolean;
|
|
78
|
+
retention: {
|
|
79
|
+
maxHistoryEntries: number;
|
|
80
|
+
maxHistoryDays: number;
|
|
81
|
+
maxConnectionHistoryDays: number;
|
|
82
|
+
};
|
|
83
|
+
deduplication: {
|
|
84
|
+
enabled: boolean;
|
|
85
|
+
checksumAlgorithm: 'sha256' | 'sha512';
|
|
86
|
+
};
|
|
87
|
+
atomicWrites: {
|
|
88
|
+
enabled: boolean;
|
|
89
|
+
tempSuffix: string;
|
|
90
|
+
backupSuffix: string;
|
|
91
|
+
};
|
|
92
|
+
persistence: {
|
|
93
|
+
intervalMs: number;
|
|
94
|
+
onShutdown: boolean;
|
|
95
|
+
onSessionChange: boolean;
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
export declare const SESSION_PERSISTENCE_FILES: {
|
|
99
|
+
readonly MANIFEST: "session-manifest.json";
|
|
100
|
+
readonly ADMIN_SESSIONS: "admin-sessions.json";
|
|
101
|
+
readonly WEBSOCKET_CONNECTIONS: "websocket-connections.json";
|
|
102
|
+
readonly SESSION_HISTORY: "session-history.json";
|
|
103
|
+
readonly METADATA: "session-metadata.json";
|
|
104
|
+
};
|
|
105
|
+
export declare const DEFAULT_SESSION_PERSISTENCE_CONFIG: SessionPersistenceConfig;
|
|
106
|
+
export declare const SESSION_PERSISTENCE_ENV_VARS: {
|
|
107
|
+
readonly ENABLED: "INDEX_SERVER_SESSION_PERSISTENCE_ENABLED";
|
|
108
|
+
readonly PERSISTENCE_DIR: "INDEX_SERVER_SESSION_PERSISTENCE_DIR";
|
|
109
|
+
readonly BACKUP_INTEGRATION: "INDEX_SERVER_SESSION_BACKUP_INTEGRATION";
|
|
110
|
+
readonly MAX_HISTORY_ENTRIES: "INDEX_SERVER_SESSION_MAX_HISTORY_ENTRIES";
|
|
111
|
+
readonly MAX_HISTORY_DAYS: "INDEX_SERVER_SESSION_MAX_HISTORY_DAYS";
|
|
112
|
+
readonly MAX_CONNECTION_HISTORY_DAYS: "INDEX_SERVER_SESSION_MAX_CONNECTION_HISTORY_DAYS";
|
|
113
|
+
readonly PERSISTENCE_INTERVAL_MS: "INDEX_SERVER_SESSION_PERSISTENCE_INTERVAL_MS";
|
|
114
|
+
readonly DEDUPLICATION_ENABLED: "INDEX_SERVER_SESSION_DEDUPLICATION_ENABLED";
|
|
115
|
+
};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Session Persistence Schema Design
|
|
4
|
+
*
|
|
5
|
+
* Persistent storage design for admin sessions, websocket connections, and session history
|
|
6
|
+
* with deduplication, atomic writes, and backup integration.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.SESSION_PERSISTENCE_ENV_VARS = exports.DEFAULT_SESSION_PERSISTENCE_CONFIG = exports.SESSION_PERSISTENCE_FILES = void 0;
|
|
10
|
+
// File naming constants
|
|
11
|
+
exports.SESSION_PERSISTENCE_FILES = {
|
|
12
|
+
MANIFEST: 'session-manifest.json',
|
|
13
|
+
ADMIN_SESSIONS: 'admin-sessions.json',
|
|
14
|
+
WEBSOCKET_CONNECTIONS: 'websocket-connections.json',
|
|
15
|
+
SESSION_HISTORY: 'session-history.json',
|
|
16
|
+
METADATA: 'session-metadata.json'
|
|
17
|
+
};
|
|
18
|
+
// Directory structure:
|
|
19
|
+
// {persistenceDir}/
|
|
20
|
+
// sessions/
|
|
21
|
+
// session-manifest.json
|
|
22
|
+
// admin-sessions.json
|
|
23
|
+
// websocket-connections.json
|
|
24
|
+
// session-history.json
|
|
25
|
+
// session-metadata.json
|
|
26
|
+
// backups/
|
|
27
|
+
// {timestamp}/
|
|
28
|
+
// session-manifest.json
|
|
29
|
+
// admin-sessions.json
|
|
30
|
+
// websocket-connections.json
|
|
31
|
+
// session-history.json
|
|
32
|
+
exports.DEFAULT_SESSION_PERSISTENCE_CONFIG = {
|
|
33
|
+
enabled: true,
|
|
34
|
+
persistenceDir: './data/sessions',
|
|
35
|
+
backupIntegration: true,
|
|
36
|
+
retention: {
|
|
37
|
+
maxHistoryEntries: 1000,
|
|
38
|
+
maxHistoryDays: 30,
|
|
39
|
+
maxConnectionHistoryDays: 7
|
|
40
|
+
},
|
|
41
|
+
deduplication: {
|
|
42
|
+
enabled: true,
|
|
43
|
+
checksumAlgorithm: 'sha256'
|
|
44
|
+
},
|
|
45
|
+
atomicWrites: {
|
|
46
|
+
enabled: true,
|
|
47
|
+
tempSuffix: '.tmp',
|
|
48
|
+
backupSuffix: '.bak'
|
|
49
|
+
},
|
|
50
|
+
persistence: {
|
|
51
|
+
intervalMs: 30000, // 30 seconds
|
|
52
|
+
onShutdown: true,
|
|
53
|
+
onSessionChange: true
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
// Environment variable mappings
|
|
57
|
+
exports.SESSION_PERSISTENCE_ENV_VARS = {
|
|
58
|
+
ENABLED: 'INDEX_SERVER_SESSION_PERSISTENCE_ENABLED',
|
|
59
|
+
PERSISTENCE_DIR: 'INDEX_SERVER_SESSION_PERSISTENCE_DIR',
|
|
60
|
+
BACKUP_INTEGRATION: 'INDEX_SERVER_SESSION_BACKUP_INTEGRATION',
|
|
61
|
+
MAX_HISTORY_ENTRIES: 'INDEX_SERVER_SESSION_MAX_HISTORY_ENTRIES',
|
|
62
|
+
MAX_HISTORY_DAYS: 'INDEX_SERVER_SESSION_MAX_HISTORY_DAYS',
|
|
63
|
+
MAX_CONNECTION_HISTORY_DAYS: 'INDEX_SERVER_SESSION_MAX_CONNECTION_HISTORY_DAYS',
|
|
64
|
+
PERSISTENCE_INTERVAL_MS: 'INDEX_SERVER_SESSION_PERSISTENCE_INTERVAL_MS',
|
|
65
|
+
DEDUPLICATION_ENABLED: 'INDEX_SERVER_SESSION_DEDUPLICATION_ENABLED'
|
|
66
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export type AudienceScope = 'individual' | 'group' | 'all';
|
|
2
|
+
export type RequirementLevel = 'mandatory' | 'critical' | 'recommended' | 'optional' | 'deprecated';
|
|
3
|
+
export type ContentType = 'instruction' | 'template' | 'chat-session' | 'reference' | 'example' | 'agent';
|
|
4
|
+
export interface InstructionEntry {
|
|
5
|
+
id: string;
|
|
6
|
+
title: string;
|
|
7
|
+
body: string;
|
|
8
|
+
rationale?: string;
|
|
9
|
+
priority: number;
|
|
10
|
+
audience: AudienceScope;
|
|
11
|
+
requirement: RequirementLevel;
|
|
12
|
+
categories: string[];
|
|
13
|
+
contentType: ContentType;
|
|
14
|
+
primaryCategory?: string;
|
|
15
|
+
sourceHash: string;
|
|
16
|
+
schemaVersion: string;
|
|
17
|
+
deprecatedBy?: string;
|
|
18
|
+
createdAt: string;
|
|
19
|
+
updatedAt: string;
|
|
20
|
+
usageCount?: number;
|
|
21
|
+
firstSeenTs?: string;
|
|
22
|
+
lastUsedAt?: string;
|
|
23
|
+
riskScore?: number;
|
|
24
|
+
workspaceId?: string;
|
|
25
|
+
userId?: string;
|
|
26
|
+
teamIds?: string[];
|
|
27
|
+
version?: string;
|
|
28
|
+
status?: 'draft' | 'review' | 'approved' | 'deprecated';
|
|
29
|
+
owner?: string;
|
|
30
|
+
priorityTier?: 'P1' | 'P2' | 'P3' | 'P4';
|
|
31
|
+
classification?: 'public' | 'internal' | 'restricted';
|
|
32
|
+
lastReviewedAt?: string;
|
|
33
|
+
nextReviewDue?: string;
|
|
34
|
+
reviewIntervalDays?: number;
|
|
35
|
+
changeLog?: {
|
|
36
|
+
version: string;
|
|
37
|
+
changedAt: string;
|
|
38
|
+
summary: string;
|
|
39
|
+
}[];
|
|
40
|
+
supersedes?: string;
|
|
41
|
+
archivedAt?: string;
|
|
42
|
+
semanticSummary?: string;
|
|
43
|
+
createdByAgent?: string;
|
|
44
|
+
sourceWorkspace?: string;
|
|
45
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const perf_hooks_1 = require("perf_hooks");
|
|
7
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
8
|
+
function measure(fn, iterations) {
|
|
9
|
+
const samples = [];
|
|
10
|
+
for (let i = 0; i < iterations; i++) {
|
|
11
|
+
const s = perf_hooks_1.performance.now();
|
|
12
|
+
fn();
|
|
13
|
+
const e = perf_hooks_1.performance.now();
|
|
14
|
+
samples.push(e - s);
|
|
15
|
+
}
|
|
16
|
+
samples.sort((a, b) => a - b);
|
|
17
|
+
const p95Index = Math.floor(samples.length * 0.95) - 1;
|
|
18
|
+
return {
|
|
19
|
+
name: fn.name || 'anon',
|
|
20
|
+
iterations,
|
|
21
|
+
totalMs: samples.reduce((a, b) => a + b, 0),
|
|
22
|
+
p95Ms: samples[Math.max(0, p95Index)],
|
|
23
|
+
maxMs: samples[samples.length - 1]
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function syntheticEntries(n) {
|
|
27
|
+
const entries = [];
|
|
28
|
+
for (let i = 0; i < n; i++) {
|
|
29
|
+
const body = `Instruction body ${i} ` + 'x'.repeat(50);
|
|
30
|
+
const hash = crypto_1.default.createHash('sha256').update(body).digest('hex');
|
|
31
|
+
entries.push({ id: `id-${i}`, title: `Title ${i}`, body, priority: (i % 100) + 1, audience: 'all', requirement: 'mandatory', categories: ['bench'], sourceHash: hash, schemaVersion: '1', createdAt: new Date().toISOString(), updatedAt: new Date().toISOString() });
|
|
32
|
+
}
|
|
33
|
+
return entries;
|
|
34
|
+
}
|
|
35
|
+
function run() {
|
|
36
|
+
const sizes = [100, 1000, 5000];
|
|
37
|
+
const results = [];
|
|
38
|
+
for (const size of sizes) {
|
|
39
|
+
const index = syntheticEntries(size);
|
|
40
|
+
// measure search
|
|
41
|
+
const term = 'Instruction body';
|
|
42
|
+
const stat = measure(() => {
|
|
43
|
+
const lower = term.toLowerCase();
|
|
44
|
+
index.filter(e => e.title.toLowerCase().includes(lower) || e.body.toLowerCase().includes(lower));
|
|
45
|
+
}, 50);
|
|
46
|
+
results.push({ size, searchP95: stat.p95Ms.toFixed(4), searchMax: stat.maxMs.toFixed(4) });
|
|
47
|
+
}
|
|
48
|
+
console.log(JSON.stringify({ benchmark: 'search', results }, null, 2));
|
|
49
|
+
}
|
|
50
|
+
run();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
export declare const instructionEntry: {
|
|
2
|
+
readonly type: "object";
|
|
3
|
+
readonly additionalProperties: false;
|
|
4
|
+
readonly required: readonly ["id", "title", "body", "priority", "audience", "requirement", "categories", "sourceHash", "schemaVersion", "createdAt", "updatedAt", "version", "status", "owner", "priorityTier", "classification", "lastReviewedAt", "nextReviewDue", "changeLog", "semanticSummary"];
|
|
5
|
+
readonly properties: {
|
|
6
|
+
readonly id: {
|
|
7
|
+
readonly type: "string";
|
|
8
|
+
readonly minLength: 1;
|
|
9
|
+
};
|
|
10
|
+
readonly title: {
|
|
11
|
+
readonly type: "string";
|
|
12
|
+
};
|
|
13
|
+
readonly body: {
|
|
14
|
+
readonly type: "string";
|
|
15
|
+
};
|
|
16
|
+
readonly rationale: {
|
|
17
|
+
readonly type: "string";
|
|
18
|
+
};
|
|
19
|
+
readonly priority: {
|
|
20
|
+
readonly type: "number";
|
|
21
|
+
};
|
|
22
|
+
readonly audience: {
|
|
23
|
+
readonly enum: readonly ["individual", "group", "all"];
|
|
24
|
+
};
|
|
25
|
+
readonly requirement: {
|
|
26
|
+
readonly enum: readonly ["mandatory", "critical", "recommended", "optional", "deprecated"];
|
|
27
|
+
};
|
|
28
|
+
readonly categories: {
|
|
29
|
+
readonly type: "array";
|
|
30
|
+
readonly items: {
|
|
31
|
+
readonly type: "string";
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
readonly sourceHash: {
|
|
35
|
+
readonly type: "string";
|
|
36
|
+
};
|
|
37
|
+
readonly schemaVersion: {
|
|
38
|
+
readonly type: "string";
|
|
39
|
+
};
|
|
40
|
+
readonly deprecatedBy: {
|
|
41
|
+
readonly type: "string";
|
|
42
|
+
};
|
|
43
|
+
readonly createdAt: {
|
|
44
|
+
readonly type: "string";
|
|
45
|
+
};
|
|
46
|
+
readonly updatedAt: {
|
|
47
|
+
readonly type: "string";
|
|
48
|
+
};
|
|
49
|
+
readonly usageCount: {
|
|
50
|
+
readonly type: "number";
|
|
51
|
+
};
|
|
52
|
+
readonly firstSeenTs: {
|
|
53
|
+
readonly type: "string";
|
|
54
|
+
};
|
|
55
|
+
readonly lastUsedAt: {
|
|
56
|
+
readonly type: "string";
|
|
57
|
+
};
|
|
58
|
+
readonly riskScore: {
|
|
59
|
+
readonly type: "number";
|
|
60
|
+
};
|
|
61
|
+
readonly workspaceId: {
|
|
62
|
+
readonly type: "string";
|
|
63
|
+
};
|
|
64
|
+
readonly userId: {
|
|
65
|
+
readonly type: "string";
|
|
66
|
+
};
|
|
67
|
+
readonly teamIds: {
|
|
68
|
+
readonly type: "array";
|
|
69
|
+
readonly items: {
|
|
70
|
+
readonly type: "string";
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
readonly version: {
|
|
74
|
+
readonly type: "string";
|
|
75
|
+
};
|
|
76
|
+
readonly status: {
|
|
77
|
+
readonly enum: readonly ["draft", "review", "approved", "deprecated"];
|
|
78
|
+
};
|
|
79
|
+
readonly owner: {
|
|
80
|
+
readonly type: "string";
|
|
81
|
+
};
|
|
82
|
+
readonly priorityTier: {
|
|
83
|
+
readonly enum: readonly ["P1", "P2", "P3", "P4"];
|
|
84
|
+
};
|
|
85
|
+
readonly classification: {
|
|
86
|
+
readonly enum: readonly ["public", "internal", "restricted"];
|
|
87
|
+
};
|
|
88
|
+
readonly lastReviewedAt: {
|
|
89
|
+
readonly type: "string";
|
|
90
|
+
};
|
|
91
|
+
readonly nextReviewDue: {
|
|
92
|
+
readonly type: "string";
|
|
93
|
+
};
|
|
94
|
+
readonly changeLog: {
|
|
95
|
+
readonly type: "array";
|
|
96
|
+
readonly items: {
|
|
97
|
+
readonly type: "object";
|
|
98
|
+
readonly required: readonly ["version", "changedAt", "summary"];
|
|
99
|
+
readonly additionalProperties: false;
|
|
100
|
+
readonly properties: {
|
|
101
|
+
readonly version: {
|
|
102
|
+
readonly type: "string";
|
|
103
|
+
};
|
|
104
|
+
readonly changedAt: {
|
|
105
|
+
readonly type: "string";
|
|
106
|
+
};
|
|
107
|
+
readonly summary: {
|
|
108
|
+
readonly type: "string";
|
|
109
|
+
};
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
};
|
|
113
|
+
readonly supersedes: {
|
|
114
|
+
readonly type: "string";
|
|
115
|
+
};
|
|
116
|
+
readonly semanticSummary: {
|
|
117
|
+
readonly type: "string";
|
|
118
|
+
};
|
|
119
|
+
readonly createdByAgent: {
|
|
120
|
+
readonly type: "string";
|
|
121
|
+
};
|
|
122
|
+
readonly sourceWorkspace: {
|
|
123
|
+
readonly type: "string";
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
};
|
|
127
|
+
export declare const schemas: Record<string, unknown>;
|
|
128
|
+
export type SchemaMap = typeof schemas;
|