@jagilber-org/index-server 1.22.0 → 1.26.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.
Files changed (189) hide show
  1. package/CHANGELOG.md +87 -2
  2. package/CODE_OF_CONDUCT.md +2 -0
  3. package/CONTRIBUTING.md +32 -2
  4. package/README.md +83 -20
  5. package/SECURITY.md +17 -5
  6. package/dist/config/dashboardConfig.d.ts +3 -0
  7. package/dist/config/dashboardConfig.js +3 -0
  8. package/dist/config/defaultValues.d.ts +1 -1
  9. package/dist/config/defaultValues.js +1 -1
  10. package/dist/config/featureConfig.d.ts +2 -0
  11. package/dist/config/featureConfig.js +6 -1
  12. package/dist/config/runtimeConfig.d.ts +1 -1
  13. package/dist/config/runtimeConfig.js +8 -9
  14. package/dist/dashboard/client/admin.html +173 -54
  15. package/dist/dashboard/client/css/admin.css +151 -0
  16. package/dist/dashboard/client/js/admin.auth.js +25 -11
  17. package/dist/dashboard/client/js/admin.config.js +1 -1
  18. package/dist/dashboard/client/js/admin.feedback.js +328 -0
  19. package/dist/dashboard/client/js/admin.graph.js +120 -18
  20. package/dist/dashboard/client/js/admin.instructions.js +27 -13
  21. package/dist/dashboard/client/js/admin.logs.js +1 -5
  22. package/dist/dashboard/client/js/admin.maintenance.js +53 -8
  23. package/dist/dashboard/client/js/admin.messaging.js +1 -4
  24. package/dist/dashboard/client/js/admin.overview.js +5 -1
  25. package/dist/dashboard/client/js/admin.sessions.js +1 -1
  26. package/dist/dashboard/client/js/admin.utils.js +43 -1
  27. package/dist/dashboard/client/js/mermaid.min.js +813 -537
  28. package/dist/dashboard/export/DataExporter.js +2 -1
  29. package/dist/dashboard/server/AdminPanel.d.ts +3 -0
  30. package/dist/dashboard/server/AdminPanel.js +132 -35
  31. package/dist/dashboard/server/ApiRoutes.js +40 -9
  32. package/dist/dashboard/server/DashboardServer.js +1 -1
  33. package/dist/dashboard/server/FileMetricsStorage.d.ts +19 -0
  34. package/dist/dashboard/server/FileMetricsStorage.js +52 -5
  35. package/dist/dashboard/server/HttpTransport.js +6 -0
  36. package/dist/dashboard/server/InstanceManager.js +7 -2
  37. package/dist/dashboard/server/KnowledgeStore.js +7 -2
  38. package/dist/dashboard/server/MetricsCollector.d.ts +16 -0
  39. package/dist/dashboard/server/MetricsCollector.js +113 -17
  40. package/dist/dashboard/server/legacyDashboardHtml.js +7 -2
  41. package/dist/dashboard/server/middleware/ensureLoadedMiddleware.d.ts +1 -1
  42. package/dist/dashboard/server/middleware/ensureLoadedMiddleware.js +8 -3
  43. package/dist/dashboard/server/routes/admin.feedback.routes.d.ts +15 -0
  44. package/dist/dashboard/server/routes/admin.feedback.routes.js +188 -0
  45. package/dist/dashboard/server/routes/admin.routes.js +35 -27
  46. package/dist/dashboard/server/routes/alerts.routes.js +4 -3
  47. package/dist/dashboard/server/routes/api.feedback.routes.js +2 -1
  48. package/dist/dashboard/server/routes/api.usage.routes.js +8 -7
  49. package/dist/dashboard/server/routes/embeddings.routes.d.ts +2 -1
  50. package/dist/dashboard/server/routes/embeddings.routes.js +18 -9
  51. package/dist/dashboard/server/routes/graph.routes.js +10 -13
  52. package/dist/dashboard/server/routes/index.d.ts +1 -0
  53. package/dist/dashboard/server/routes/index.js +74 -39
  54. package/dist/dashboard/server/routes/instances.routes.js +2 -1
  55. package/dist/dashboard/server/routes/instructions.routes.js +46 -27
  56. package/dist/dashboard/server/routes/knowledge.routes.js +4 -3
  57. package/dist/dashboard/server/routes/logs.routes.js +5 -4
  58. package/dist/dashboard/server/routes/messaging.routes.js +15 -14
  59. package/dist/dashboard/server/routes/metrics.routes.js +14 -13
  60. package/dist/dashboard/server/routes/scripts.routes.js +6 -3
  61. package/dist/dashboard/server/routes/status.routes.js +25 -6
  62. package/dist/dashboard/server/routes/synthetic.routes.js +3 -2
  63. package/dist/dashboard/server/routes/usage.routes.js +2 -1
  64. package/dist/dashboard/server/utils/escapeHtml.d.ts +1 -0
  65. package/dist/dashboard/server/utils/escapeHtml.js +11 -0
  66. package/dist/dashboard/server/utils/pathContainment.d.ts +1 -0
  67. package/dist/dashboard/server/utils/pathContainment.js +15 -0
  68. package/dist/dashboard/server/wsInit.js +2 -2
  69. package/dist/lib/mcpStdioLogging.d.ts +165 -0
  70. package/dist/lib/mcpStdioLogging.js +287 -0
  71. package/dist/schemas/index.d.ts +37 -2
  72. package/dist/schemas/index.js +27 -3
  73. package/dist/server/backgroundServicesStartup.d.ts +7 -1
  74. package/dist/server/backgroundServicesStartup.js +25 -8
  75. package/dist/server/certInit.d.ts +97 -0
  76. package/dist/server/certInit.js +359 -0
  77. package/dist/server/certInit.types.d.ts +92 -0
  78. package/dist/server/certInit.types.js +34 -0
  79. package/dist/server/handshake/fallbackFrames.d.ts +31 -0
  80. package/dist/server/handshake/fallbackFrames.js +38 -0
  81. package/dist/server/handshake/initializeDetector.d.ts +31 -0
  82. package/dist/server/handshake/initializeDetector.js +88 -0
  83. package/dist/server/handshake/protocol.d.ts +15 -0
  84. package/dist/server/handshake/protocol.js +37 -0
  85. package/dist/server/handshake/readyEmitter.d.ts +6 -0
  86. package/dist/server/handshake/readyEmitter.js +88 -0
  87. package/dist/server/handshake/safetyFallbacks.d.ts +1 -0
  88. package/dist/server/handshake/safetyFallbacks.js +134 -0
  89. package/dist/server/handshake/stdinSniffer.d.ts +1 -0
  90. package/dist/server/handshake/stdinSniffer.js +260 -0
  91. package/dist/server/handshake/tracing.d.ts +16 -0
  92. package/dist/server/handshake/tracing.js +95 -0
  93. package/dist/server/handshakeManager.d.ts +23 -23
  94. package/dist/server/handshakeManager.js +36 -466
  95. package/dist/server/index-server.d.ts +23 -0
  96. package/dist/server/index-server.js +194 -9
  97. package/dist/server/mcpReadOnlySurfaces.d.ts +44 -0
  98. package/dist/server/mcpReadOnlySurfaces.js +297 -0
  99. package/dist/server/sdkServer.js +69 -7
  100. package/dist/server/transport.d.ts +5 -6
  101. package/dist/server/transport.js +46 -64
  102. package/dist/server/transportFactory.d.ts +3 -9
  103. package/dist/server/transportFactory.js +18 -380
  104. package/dist/services/atomicFs.d.ts +3 -0
  105. package/dist/services/atomicFs.js +171 -13
  106. package/dist/services/auditLog.d.ts +17 -2
  107. package/dist/services/auditLog.js +75 -14
  108. package/dist/services/bootstrapGating.js +1 -1
  109. package/dist/services/categoryRules.d.ts +10 -0
  110. package/dist/services/categoryRules.js +17 -0
  111. package/dist/services/classificationService.js +7 -5
  112. package/dist/services/embeddingService.d.ts +27 -11
  113. package/dist/services/embeddingService.js +51 -14
  114. package/dist/services/feedbackStorage.d.ts +39 -0
  115. package/dist/services/feedbackStorage.js +88 -0
  116. package/dist/services/handlers/instructions.add.js +429 -317
  117. package/dist/services/handlers/instructions.groom.js +128 -31
  118. package/dist/services/handlers/instructions.import.js +56 -23
  119. package/dist/services/handlers/instructions.patch.js +43 -32
  120. package/dist/services/handlers/instructions.query.js +20 -29
  121. package/dist/services/handlers/instructions.shared.d.ts +54 -0
  122. package/dist/services/handlers/instructions.shared.js +126 -1
  123. package/dist/services/handlers.activation.js +83 -81
  124. package/dist/services/handlers.dashboardConfig.d.ts +2 -2
  125. package/dist/services/handlers.dashboardConfig.js +1 -2
  126. package/dist/services/handlers.diagnostics.js +75 -54
  127. package/dist/services/handlers.feedback.d.ts +4 -11
  128. package/dist/services/handlers.feedback.js +11 -333
  129. package/dist/services/handlers.gates.js +69 -37
  130. package/dist/services/handlers.graph.js +2 -2
  131. package/dist/services/handlers.help.js +2 -2
  132. package/dist/services/handlers.instructionSchema.js +4 -2
  133. package/dist/services/handlers.integrity.js +42 -22
  134. package/dist/services/handlers.messaging.js +1 -1
  135. package/dist/services/handlers.metrics.js +51 -6
  136. package/dist/services/handlers.prompt.js +10 -2
  137. package/dist/services/handlers.search.js +94 -44
  138. package/dist/services/handlers.trace.js +1 -1
  139. package/dist/services/handlers.usage.js +38 -7
  140. package/dist/services/indexContext.d.ts +21 -1
  141. package/dist/services/indexContext.js +267 -82
  142. package/dist/services/indexLoader.d.ts +1 -0
  143. package/dist/services/indexLoader.js +28 -8
  144. package/dist/services/instructionRecordValidation.d.ts +39 -0
  145. package/dist/services/instructionRecordValidation.js +388 -0
  146. package/dist/services/instructions.dispatcher.js +4 -4
  147. package/dist/services/loaderSchemaValidator.d.ts +15 -0
  148. package/dist/services/loaderSchemaValidator.js +69 -0
  149. package/dist/services/logger.js +11 -2
  150. package/dist/services/mcpLogBridge.d.ts +49 -0
  151. package/dist/services/mcpLogBridge.js +83 -0
  152. package/dist/services/ownershipService.js +18 -8
  153. package/dist/services/performanceBaseline.js +23 -22
  154. package/dist/services/promptReviewService.d.ts +3 -1
  155. package/dist/services/promptReviewService.js +41 -13
  156. package/dist/services/regexSafety.d.ts +6 -0
  157. package/dist/services/regexSafety.js +46 -0
  158. package/dist/services/seedBootstrap.js +4 -4
  159. package/dist/services/storage/factory.d.ts +14 -1
  160. package/dist/services/storage/factory.js +61 -1
  161. package/dist/services/storage/jsonEmbeddingStore.d.ts +15 -0
  162. package/dist/services/storage/jsonEmbeddingStore.js +83 -0
  163. package/dist/services/storage/jsonFileStore.d.ts +3 -1
  164. package/dist/services/storage/jsonFileStore.js +8 -6
  165. package/dist/services/storage/migrationEngine.d.ts +13 -0
  166. package/dist/services/storage/migrationEngine.js +31 -0
  167. package/dist/services/storage/sqliteEmbeddingStore.d.ts +30 -0
  168. package/dist/services/storage/sqliteEmbeddingStore.js +222 -0
  169. package/dist/services/storage/sqliteStore.d.ts +3 -1
  170. package/dist/services/storage/sqliteStore.js +2 -2
  171. package/dist/services/storage/types.d.ts +48 -1
  172. package/dist/services/toolRegistry.js +77 -67
  173. package/dist/services/toolRegistry.zod.js +89 -86
  174. package/dist/services/tracing.js +5 -4
  175. package/dist/utils/envUtils.d.ts +4 -0
  176. package/dist/utils/envUtils.js +7 -0
  177. package/dist/utils/memoryMonitor.js +11 -10
  178. package/package.json +11 -4
  179. package/schemas/instruction.schema.json +38 -1
  180. package/scripts/copy-dashboard-assets.mjs +1 -1
  181. package/scripts/dist/README.md +1 -1
  182. package/scripts/setup-wizard.mjs +781 -0
  183. package/server.json +1 -0
  184. package/dist/externalClientLib.d.ts +0 -1
  185. package/dist/externalClientLib.js +0 -2
  186. package/dist/portableClientWrapper.d.ts +0 -1
  187. package/dist/portableClientWrapper.js +0 -2
  188. package/dist/services/indexingService.d.ts +0 -1
  189. package/dist/services/indexingService.js +0 -2
@@ -15,6 +15,7 @@ exports.checkListeners = checkListeners;
15
15
  * Use while attached to debugger for real-time memory analysis.
16
16
  */
17
17
  const envUtils_1 = require("./envUtils");
18
+ const logger_js_1 = require("../services/logger.js");
18
19
  class MemoryMonitor {
19
20
  snapshots = [];
20
21
  maxSnapshots = 1000;
@@ -25,10 +26,10 @@ class MemoryMonitor {
25
26
  */
26
27
  startMonitoring(intervalMs = 5000) {
27
28
  if (this.isMonitoring) {
28
- console.error('[MemoryMonitor] Already monitoring');
29
+ (0, logger_js_1.logError)('[MemoryMonitor] Already monitoring');
29
30
  return;
30
31
  }
31
- console.error(`[MemoryMonitor] Starting memory monitoring (interval: ${intervalMs}ms)`);
32
+ (0, logger_js_1.logError)(`[MemoryMonitor] Starting memory monitoring (interval: ${intervalMs}ms)`);
32
33
  this.isMonitoring = true;
33
34
  this.intervalId = setInterval(() => {
34
35
  this.takeSnapshot();
@@ -45,7 +46,7 @@ class MemoryMonitor {
45
46
  this.intervalId = undefined;
46
47
  }
47
48
  this.isMonitoring = false;
48
- console.error('[MemoryMonitor] Stopped monitoring');
49
+ (0, logger_js_1.logError)('[MemoryMonitor] Stopped monitoring');
49
50
  }
50
51
  /**
51
52
  * Take a memory snapshot
@@ -87,11 +88,11 @@ class MemoryMonitor {
87
88
  const wantStructured = (0, envUtils_1.isDebugOrVerbose)();
88
89
  try {
89
90
  if (wantStructured) {
90
- console.error(JSON.stringify(payload));
91
+ (0, logger_js_1.logError)(JSON.stringify(payload));
91
92
  }
92
93
  else {
93
94
  // Fallback concise plain text (single line) to preserve readability and avoid multi-line noise.
94
- console.error(`[MemoryMonitor] heapDelta=${this.formatBytes(heapGrowth)} heapUsed=${this.formatBytes(snapshot.heapUsed)} rssDelta=${this.formatBytes(rssGrowth)} rss=${this.formatBytes(snapshot.rss)}`);
95
+ (0, logger_js_1.logError)(`[MemoryMonitor] heapDelta=${this.formatBytes(heapGrowth)} heapUsed=${this.formatBytes(snapshot.heapUsed)} rssDelta=${this.formatBytes(rssGrowth)} rss=${this.formatBytes(snapshot.rss)}`);
95
96
  }
96
97
  }
97
98
  catch { /* swallow */ }
@@ -182,7 +183,7 @@ Leak Detected: ${trend.leakDetected ? 'YES' : 'NO'}
182
183
  try {
183
184
  if (typeof global.gc === 'function') {
184
185
  global.gc();
185
- console.error('[MemoryMonitor] Forced garbage collection');
186
+ (0, logger_js_1.logError)('[MemoryMonitor] Forced garbage collection');
186
187
  }
187
188
  // Note: This would require v8 module for actual heap snapshots
188
189
  // For now, just return memory usage after GC
@@ -230,7 +231,7 @@ function getMemoryMonitor() {
230
231
  * Quick memory status check
231
232
  */
232
233
  function memStatus() {
233
- console.error(getMemoryMonitor().getCurrentStatus());
234
+ (0, logger_js_1.logError)(getMemoryMonitor().getCurrentStatus());
234
235
  }
235
236
  /**
236
237
  * Start memory monitoring
@@ -248,20 +249,20 @@ function stopMemWatch() {
248
249
  * Get memory report
249
250
  */
250
251
  function memReport() {
251
- console.error(getMemoryMonitor().getDetailedReport());
252
+ (0, logger_js_1.logError)(getMemoryMonitor().getDetailedReport());
252
253
  }
253
254
  /**
254
255
  * Force garbage collection and show memory
255
256
  */
256
257
  function forceGC() {
257
258
  const result = getMemoryMonitor().takeHeapSnapshot();
258
- console.error(result);
259
+ (0, logger_js_1.logError)(result ?? '');
259
260
  }
260
261
  /**
261
262
  * Check event listeners
262
263
  */
263
264
  function checkListeners() {
264
- console.error(getMemoryMonitor().checkEventListeners());
265
+ (0, logger_js_1.logError)(getMemoryMonitor().checkEventListeners());
265
266
  }
266
267
  // Global exports for debugger console
267
268
  if (typeof global !== 'undefined') {
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@jagilber-org/index-server",
3
- "version": "1.22.0",
3
+ "version": "1.26.1",
4
+ "mcpName": "io.github.jagilber-org/index-server",
4
5
  "description": "MCP instruction indexing server for AI assistant governance — search, CRUD, schema validation, usage tracking, and cross-repo knowledge promotion.",
5
6
  "publishConfig": {
6
7
  "registry": "https://registry.npmjs.org/",
@@ -17,6 +18,8 @@
17
18
  "templates/",
18
19
  "scripts/copy-dashboard-assets.mjs",
19
20
  "scripts/setup-hooks.cjs",
21
+ "scripts/setup-wizard.mjs",
22
+ "server.json",
20
23
  "README.md",
21
24
  "LICENSE",
22
25
  "CHANGELOG.md",
@@ -29,6 +32,7 @@
29
32
  "index-server": "dist/server/index-server.js"
30
33
  },
31
34
  "scripts": {
35
+ "setup": "node scripts/setup-wizard.mjs",
32
36
  "instructions:normalize": "node scripts/normalize-instructions.js",
33
37
  "build": "tsc -p tsconfig.json && node scripts/copy-dashboard-assets.mjs",
34
38
  "start": "node dist/server/index-server.js",
@@ -45,7 +49,8 @@
45
49
  "manifest:generate": "node scripts/generate-manifest.mjs",
46
50
  "contract:tools": "node scripts/generate-tools-snapshot.mjs",
47
51
  "verify:manifest": "node scripts/verify-manifest.mjs",
48
- "test": "vitest run",
52
+ "test": "npm run test:fast",
53
+ "test:all": "vitest run",
49
54
  "test:watch": "vitest",
50
55
  "test:contracts": "vitest run src/tests/contractSchemas.spec.ts",
51
56
  "test:diag": "cross-env INDEX_SERVER_HEALTH_MIXED_DIAG=1 vitest run src/tests/handshakeFlakeRepro.spec.ts src/tests/healthMixedReproLoop.spec.ts src/tests/healthHangExploration.spec.ts",
@@ -58,8 +63,7 @@
58
63
  "format": "prettier --write .",
59
64
  "prepare": "node scripts/setup-hooks.cjs",
60
65
  "audit": "npm audit --omit=dev --audit-level=high",
61
- "prepack": "npm run audit",
62
- "prepublishOnly": "npm run build && npm run typecheck",
66
+ "prepublishOnly": "npm run build && npm run typecheck && npm run audit",
63
67
  "scan:security": "node scripts/security-scan.mjs",
64
68
  "release:patch": "node scripts/bump-version.mjs patch",
65
69
  "release:minor": "node scripts/bump-version.mjs minor",
@@ -115,6 +119,7 @@
115
119
  },
116
120
  "dependencies": {
117
121
  "@huggingface/transformers": "^3.8.1",
122
+ "@inquirer/prompts": "^8.4.2",
118
123
  "@mermaid-js/layout-elk": "^0.2.1",
119
124
  "@modelcontextprotocol/sdk": "^1.28.0",
120
125
  "adm-zip": "^0.5.17",
@@ -122,6 +127,8 @@
122
127
  "ajv-formats": "^2.1.1",
123
128
  "express": "^5.2.1",
124
129
  "express-rate-limit": "^8.3.2",
130
+ "safe-regex2": "^5.1.1",
131
+ "sqlite-vec": "0.1.9",
125
132
  "ws": "^8.19.0",
126
133
  "zod": "^3.23.8"
127
134
  },
@@ -30,6 +30,31 @@
30
30
  "description": "Human readable summary of change"
31
31
  }
32
32
  }
33
+ },
34
+ "extensionValue": {
35
+ "anyOf": [
36
+ {
37
+ "type": "string"
38
+ },
39
+ {
40
+ "type": "number"
41
+ },
42
+ {
43
+ "type": "boolean"
44
+ },
45
+ {
46
+ "type": "array",
47
+ "items": {
48
+ "$ref": "#/definitions/extensionValue"
49
+ }
50
+ },
51
+ {
52
+ "type": "object",
53
+ "additionalProperties": {
54
+ "$ref": "#/definitions/extensionValue"
55
+ }
56
+ }
57
+ ]
33
58
  }
34
59
  },
35
60
  "required": [
@@ -148,6 +173,11 @@
148
173
  "minimum": 0,
149
174
  "description": "Number of tracked usage events"
150
175
  },
176
+ "firstSeenTs": {
177
+ "type": "string",
178
+ "format": "date-time",
179
+ "description": "Timestamp when usage was first observed (ISO 8601)"
180
+ },
151
181
  "lastUsedAt": {
152
182
  "type": "string",
153
183
  "format": "date-time",
@@ -237,6 +267,11 @@
237
267
  "type": "string",
238
268
  "description": "ID of instruction this one replaces"
239
269
  },
270
+ "archivedAt": {
271
+ "type": "string",
272
+ "format": "date-time",
273
+ "description": "Timestamp when archived (ISO 8601)"
274
+ },
240
275
  "semanticSummary": {
241
276
  "type": "string",
242
277
  "maxLength": 600,
@@ -255,7 +290,9 @@
255
290
  "extensions": {
256
291
  "type": "object",
257
292
  "description": "Future-proof vendor / experimental fields",
258
- "additionalProperties": true
293
+ "additionalProperties": {
294
+ "$ref": "#/definitions/extensionValue"
295
+ }
259
296
  }
260
297
  },
261
298
  "additionalProperties": false
@@ -54,7 +54,7 @@ function copyAssets() {
54
54
  try {
55
55
  const srcStat = statSync(srcPath);
56
56
  let needsCopy = true;
57
- let reason = 'new';
57
+ let reason;
58
58
  try {
59
59
  const destStat = statSync(destPath);
60
60
  if (destStat.size === srcStat.size) {
@@ -1,6 +1,6 @@
1
1
  # scripts/dist/
2
2
 
3
- User-facing utility scripts bundled into the VSIX extension package.
3
+ User-facing utility scripts bundled into distributable runtime packages.
4
4
 
5
5
  These are copied from `scripts/` during the build. Edit the originals in `scripts/`, not here.
6
6