@jagilber-org/index-server 1.28.4 → 1.28.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CONTRIBUTING.md CHANGED
@@ -16,8 +16,9 @@ Maintainers may use additional private development and publishing workflows inte
16
16
 
17
17
  1. Node 22+
18
18
  2. `npm install`
19
- 3. `npm test`
20
- 4. `npm run build`
19
+ 3. `npm run build`
20
+ 4. `npm run setup` — interactive configuration wizard (generates `.env` and MCP client config). Equivalent to `node dist/server/index-server.js --setup`.
21
+ 5. `npm test`
21
22
 
22
23
  ## Branching
23
24
 
package/README.md CHANGED
@@ -29,29 +29,37 @@ winget install nodejs
29
29
 
30
30
  ## Quick Start Options
31
31
 
32
- ### Option A: MCP-native via `npx` (recommended)
32
+ ### Option A: Global install via `npm` (recommended)
33
33
 
34
- Run the latest published package without cloning the repo. Choose this when you want the fastest local start and already have Node.js installed.
34
+ Install once and run from anywhere. Choose this when you want a stable `index-server` command on your `PATH` with no per-invocation download.
35
35
 
36
- Start with the setup wizard so it can generate the right MCP client config for VS Code, Copilot CLI, or Claude Desktop:
36
+ ```bash
37
+ npm install -g @jagilber-org/index-server
38
+ ```
39
+
40
+ Then launch the setup wizard to generate the right MCP client config for VS Code, Copilot CLI, or Claude Desktop:
37
41
 
38
42
  ```bash
39
- npx -y @jagilber-org/index-server@latest --setup
43
+ index-server --setup
40
44
  ```
41
45
 
42
46
  To launch the server directly without the wizard:
43
47
 
44
48
  ```bash
45
- npx -y @jagilber-org/index-server@latest --dashboard
49
+ index-server --dashboard
46
50
  ```
47
51
 
52
+ > **No-install alternative:** `npx -y @jagilber-org/index-server@latest --setup` works too (resolves from npmjs.org). Use it for a one-shot try; prefer `-g` for routine use. The GitHub Packages mirror requires authentication, so `npx` against `npm.pkg.github.com` needs a per-scope `.npmrc` plus a `GITHUB_TOKEN` with `read:packages`.
53
+
54
+ > **Upgrading or hitting "unsupported INDEX_SERVER key" / "Cannot find module" errors after install?** See [Upgrading and Uninstalling](docs/quickstart.md#upgrading-and-uninstalling) for the clean-uninstall steps that clear stale non-global installs.
55
+
48
56
  #### Bootstrap HTTPS for the dashboard
49
57
 
50
58
  Generate a self-signed TLS cert+key in one command:
51
59
 
52
60
  ```bash
53
61
  # Generate at ~/.index-server/certs/, then start with HTTPS automatically
54
- npx -y @jagilber-org/index-server@latest --init-cert --start --dashboard
62
+ index-server --init-cert --start --dashboard
55
63
  ```
56
64
 
57
65
  `--init-cert` alone exits after generation. `--init-cert --start` continues
@@ -65,7 +73,7 @@ reference, security notes, and troubleshooting.
65
73
 
66
74
  ### Option B: VS Code MCP configuration
67
75
 
68
- Use VS Code's built-in MCP support with `.vscode/mcp.json` or your global `mcp.json`. You can add the server entry manually or run `npx -y @jagilber-org/index-server@latest --setup` to generate the config for you.
76
+ Use VS Code's built-in MCP support with `.vscode/mcp.json` or your global `mcp.json`. You can add the server entry manually or run `index-server --setup` (after `npm install -g @jagilber-org/index-server`) to generate the config for you.
69
77
 
70
78
  ### Option C: Docker
71
79
 
@@ -89,6 +97,14 @@ npm install
89
97
  npm run build
90
98
  ```
91
99
 
100
+ After the build completes, run the interactive setup wizard to generate `.env` and your MCP client config:
101
+
102
+ ```bash
103
+ node dist/server/index-server.js --setup
104
+ # or
105
+ npm run setup
106
+ ```
107
+
92
108
  ## Configure Your MCP Client
93
109
 
94
110
  > **Best practice:** set `INDEX_SERVER_DIR` to a well-known data folder such as `C:/mcp/index-data/instructions` or `~/.index-server/instructions`. Keep it outside VS Code and MCP client config paths so backups and reinstalls do not move or overwrite your catalog.
@@ -283,6 +299,7 @@ See [SECURITY.md](SECURITY.md) for vulnerability reporting, [PRIVACY.md](PRIVACY
283
299
  ```bash
284
300
  npm install # Install dependencies
285
301
  npm run build # Build TypeScript
302
+ npm run setup # Interactive configuration wizard (generates .env + mcp.json)
286
303
  npm test # Run the fast default suite
287
304
  npm run test:slow # Run heavy integration/perf tests
288
305
  npm run test:all # Run the full Vitest suite
@@ -1,30 +1,30 @@
1
1
  <!DOCTYPE html>
2
2
  <html lang="en">
3
3
  <head>
4
- <meta name="dashboard-build-version" content="1.28.4-0009101e">
4
+ <meta name="dashboard-build-version" content="1.28.8-0009101e">
5
5
  <meta charset="UTF-8">
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
7
  <title>Index Server Admin</title>
8
- <link rel="stylesheet" href="css/admin.css?v=1.28.4-0009101e">
9
- <script defer src="js/admin.utils.js?v=1.28.4-0009101e"></script>
10
- <script defer src="js/admin.auth.js?v=1.28.4-0009101e"></script>
11
- <script defer src="js/admin.overview.js?v=1.28.4-0009101e"></script>
12
- <script defer src="js/admin.sessions.js?v=1.28.4-0009101e"></script>
13
- <script defer src="js/admin.monitor.js?v=1.28.4-0009101e"></script>
14
- <script defer src="js/admin.events.js?v=1.28.4-0009101e"></script>
15
- <script defer src="js/admin.graph.js?v=1.28.4-0009101e"></script>
8
+ <link rel="stylesheet" href="css/admin.css?v=1.28.8-0009101e">
9
+ <script defer src="js/admin.utils.js?v=1.28.8-0009101e"></script>
10
+ <script defer src="js/admin.auth.js?v=1.28.8-0009101e"></script>
11
+ <script defer src="js/admin.overview.js?v=1.28.8-0009101e"></script>
12
+ <script defer src="js/admin.sessions.js?v=1.28.8-0009101e"></script>
13
+ <script defer src="js/admin.monitor.js?v=1.28.8-0009101e"></script>
14
+ <script defer src="js/admin.events.js?v=1.28.8-0009101e"></script>
15
+ <script defer src="js/admin.graph.js?v=1.28.8-0009101e"></script>
16
16
  <script defer src="js/marked.umd.js"></script>
17
- <script defer src="js/admin.instructions.js?v=1.28.4-0009101e"></script>
18
- <script defer src="js/admin.logs.js?v=1.28.4-0009101e"></script>
19
- <script defer src="js/admin.maintenance.js?v=1.28.4-0009101e"></script>
20
- <script defer src="js/admin.config.js?v=1.28.4-0009101e"></script>
21
- <script defer src="js/admin.performance.js?v=1.28.4-0009101e"></script>
22
- <script defer src="js/admin.instances.js?v=1.28.4-0009101e"></script>
23
- <script defer src="js/admin.embeddings.js?v=1.28.4-0009101e"></script>
24
- <script defer src="js/admin.messaging.js?v=1.28.4-0009101e"></script>
25
- <script defer src="js/admin.sqlite.js?v=1.28.4-0009101e"></script>
26
- <script defer src="js/admin.boot.js?v=1.28.4-0009101e"></script>
27
- <script defer src="js/admin.feedback.js?v=1.28.4-0009101e"></script>
17
+ <script defer src="js/admin.instructions.js?v=1.28.8-0009101e"></script>
18
+ <script defer src="js/admin.logs.js?v=1.28.8-0009101e"></script>
19
+ <script defer src="js/admin.maintenance.js?v=1.28.8-0009101e"></script>
20
+ <script defer src="js/admin.config.js?v=1.28.8-0009101e"></script>
21
+ <script defer src="js/admin.performance.js?v=1.28.8-0009101e"></script>
22
+ <script defer src="js/admin.instances.js?v=1.28.8-0009101e"></script>
23
+ <script defer src="js/admin.embeddings.js?v=1.28.8-0009101e"></script>
24
+ <script defer src="js/admin.messaging.js?v=1.28.8-0009101e"></script>
25
+ <script defer src="js/admin.sqlite.js?v=1.28.8-0009101e"></script>
26
+ <script defer src="js/admin.boot.js?v=1.28.8-0009101e"></script>
27
+ <script defer src="js/admin.feedback.js?v=1.28.8-0009101e"></script>
28
28
  </head>
29
29
  <body>
30
30
  <div class="admin-container admin-root">
@@ -909,10 +909,10 @@
909
909
  }
910
910
  }
911
911
 
912
- // Graph logic was extracted to js/admin.graph.js?v=1.28.4-0009101e
912
+ // Graph logic was extracted to js/admin.graph.js?v=1.28.8-0009101e
913
913
  // Functions available globally: reloadGraphMermaid, initGraphScopeDefaults, copyMermaidSource, toggleGraphEdit, applyGraphEdit, cancelGraphEdit, refreshDrillCategories, loadDrillInstructions, clearSelections
914
914
 
915
- <!-- overview functions moved to js/admin.overview.js?v=1.28.4-0009101e -->
915
+ <!-- overview functions moved to js/admin.overview.js?v=1.28.8-0009101e -->
916
916
 
917
917
  // Lightweight overview-level maintenance display (optional)
918
918
  // Intentionally minimal to avoid blocking overview rendering.
@@ -1097,7 +1097,7 @@
1097
1097
  }
1098
1098
 
1099
1099
  // --- Backup / Restore ---
1100
- // Extracted to js/admin.maintenance.js?v=1.28.4-0009101e
1100
+ // Extracted to js/admin.maintenance.js?v=1.28.8-0009101e
1101
1101
 
1102
1102
  async function performBackup() {
1103
1103
  try {
@@ -1163,7 +1163,7 @@
1163
1163
  }
1164
1164
 
1165
1165
  async function loadConfiguration() {
1166
- // Primary implementation in js/admin.config.js?v=1.28.4-0009101e (loaded via defer).
1166
+ // Primary implementation in js/admin.config.js?v=1.28.8-0009101e (loaded via defer).
1167
1167
  // This inline fallback only fires if the external script failed to load.
1168
1168
  if (window.__configExternalLoaded) return;
1169
1169
  try {
@@ -1223,10 +1223,10 @@
1223
1223
  return false;
1224
1224
  }
1225
1225
 
1226
- // Monitoring functions moved to js/admin.monitor.js?v=1.28.4-0009101e
1226
+ // Monitoring functions moved to js/admin.monitor.js?v=1.28.8-0009101e
1227
1227
 
1228
1228
  // ===== Log Viewer =====
1229
- // Extracted to js/admin.logs.js?v=1.28.4-0009101e
1229
+ // Extracted to js/admin.logs.js?v=1.28.8-0009101e
1230
1230
 
1231
1231
  // ===== Instruction Management =====
1232
1232
  let instructionEditing = null;
@@ -1723,7 +1723,7 @@
1723
1723
  setInterval(fetchResourceTrends, 10000);
1724
1724
  })();
1725
1725
 
1726
- // Instruction management logic extracted to js/admin.instructions.js?v=1.28.4-0009101e
1726
+ // Instruction management logic extracted to js/admin.instructions.js?v=1.28.8-0009101e
1727
1727
  // Functions exposed globally: loadInstructions, renderInstructionList, editInstruction, saveInstruction, deleteInstruction, etc.
1728
1728
 
1729
1729
  function startAutoRefresh() {
@@ -37,7 +37,7 @@ export interface McpProfileConfig {
37
37
  mutation: boolean;
38
38
  logLevel: string;
39
39
  }
40
- export declare const DOCUMENTED_INDEX_SERVER_FLAGS: readonly ["INDEX_SERVER_ADD_TIMING", "INDEX_SERVER_ADMIN_API_KEY", "INDEX_SERVER_ADMIN_MAX_SESSION_HISTORY", "INDEX_SERVER_AGENT_ID", "INDEX_SERVER_ALWAYS_RELOAD", "INDEX_SERVER_ATOMIC_WRITE_BACKOFF_MS", "INDEX_SERVER_ATOMIC_WRITE_RETRIES", "INDEX_SERVER_AUTH_KEY", "INDEX_SERVER_AUTO_BACKUP", "INDEX_SERVER_AUTO_BACKUP_INTERVAL_MS", "INDEX_SERVER_AUTO_BACKUP_MAX_COUNT", "INDEX_SERVER_AUTO_SEED", "INDEX_SERVER_AUTO_SPLIT_OVERSIZED", "INDEX_SERVER_AUTO_USAGE_TRACK", "INDEX_SERVER_BACKUP_BEFORE_BULK_DELETE", "INDEX_SERVER_BACKUPS_DIR", "INDEX_SERVER_BODY_WARN_LENGTH", "INDEX_SERVER_BOOTSTRAP_AUTOCONFIRM", "INDEX_SERVER_BOOTSTRAP_TOKEN_TTL_SEC", "INDEX_SERVER_BUFFER_RING_APPEND", "INDEX_SERVER_BUFFER_RING_PRELOAD", "INDEX_SERVER_CACHE_MODE", "INDEX_SERVER_CANONICAL_DISABLE", "INDEX_SERVER_DASHBOARD", "INDEX_SERVER_DASHBOARD_GRAPH", "INDEX_SERVER_DASHBOARD_HOST", "INDEX_SERVER_DASHBOARD_PORT", "INDEX_SERVER_DASHBOARD_TLS", "INDEX_SERVER_DASHBOARD_TLS_CA", "INDEX_SERVER_DASHBOARD_TLS_CERT", "INDEX_SERVER_DASHBOARD_TLS_KEY", "INDEX_SERVER_DASHBOARD_TRIES", "INDEX_SERVER_DEBUG", "INDEX_SERVER_DIR", "INDEX_SERVER_DISABLE_EARLY_STDIN_BUFFER", "INDEX_SERVER_DISABLE_USAGE_CLAMP", "INDEX_SERVER_EMBEDDING_PATH", "INDEX_SERVER_ENABLE_INDEX_SERVER_POLLER", "INDEX_SERVER_EVENT_SILENT", "INDEX_SERVER_FATAL_EXIT_DELAY_MS", "INDEX_SERVER_FEATURES", "INDEX_SERVER_FEEDBACK_DIR", "INDEX_SERVER_FEEDBACK_MAX_ENTRIES", "INDEX_SERVER_FILE_TRACE", "INDEX_SERVER_FLAG_TOOLS_ADMIN", "INDEX_SERVER_FLAG_TOOLS_EXTENDED", "INDEX_SERVER_FLAGS_FILE", "INDEX_SERVER_FORCE_REBUILD", "INDEX_SERVER_GOV_HASH_CANON_VARIANTS", "INDEX_SERVER_GOV_HASH_HARDENING", "INDEX_SERVER_GOV_HASH_IMPORT_SET_SIZE", "INDEX_SERVER_GRAPH_INCLUDE_PRIMARY_EDGES", "INDEX_SERVER_GRAPH_LARGE_CATEGORY_CAP", "INDEX_SERVER_HEALTH_ERROR_THRESHOLD", "INDEX_SERVER_HEALTH_MEMORY_THRESHOLD", "INDEX_SERVER_HEALTH_MIN_UPTIME", "INDEX_SERVER_HEARTBEAT_MS", "INDEX_SERVER_HTTP_METRICS", "INDEX_SERVER_IDLE_KEEPALIVE_MS", "INDEX_SERVER_IDLE_READY_SENTINEL", "INDEX_SERVER_INIT_FEATURES", "INDEX_SERVER_ISSUE_317_COUNTER", "INDEX_SERVER_LEADER_PORT", "INDEX_SERVER_LEADER_URL", "INDEX_SERVER_LOAD_WARN_MS", "INDEX_SERVER_LOG_DIAG", "INDEX_SERVER_LOG_FILE", "INDEX_SERVER_LOG_JSON", "INDEX_SERVER_LOG_LEVEL", "INDEX_SERVER_LOG_MUTATION", "INDEX_SERVER_LOG_PROTOCOL", "INDEX_SERVER_LOG_SEARCH", "INDEX_SERVER_LOG_SYNC", "INDEX_SERVER_LOG_TOOLS", "INDEX_SERVER_MANIFEST_FASTLOAD", "INDEX_SERVER_MANIFEST_WRITE", "INDEX_SERVER_MAX_BULK_DELETE", "INDEX_SERVER_MAX_CONNECTIONS", "INDEX_SERVER_MAX_FILES", "INDEX_SERVER_MEMOIZE", "INDEX_SERVER_MEMOIZE_HASH", "INDEX_SERVER_MEMORY_MONITOR", "INDEX_SERVER_METRICS_DIR", "INDEX_SERVER_METRICS_FILE_STORAGE", "INDEX_SERVER_METRICS_MAX_FILES", "INDEX_SERVER_MINIMAL_DEBUG", "INDEX_SERVER_MODE", "INDEX_SERVER_MUTATION", "INDEX_SERVER_NORMALIZATION_LOG", "INDEX_SERVER_POLL_MS", "INDEX_SERVER_POLL_PROACTIVE", "INDEX_SERVER_PREFLIGHT_MODULES", "INDEX_SERVER_PREFLIGHT_STRICT", "INDEX_SERVER_PROFILE", "INDEX_SERVER_PWS_EXIT_MS", "INDEX_SERVER_RATE_LIMIT", "INDEX_SERVER_READ_BACKOFF_MS", "INDEX_SERVER_READ_RETRIES", "INDEX_SERVER_REFERENCE_MODE", "INDEX_SERVER_REQUEST_TIMEOUT", "INDEX_SERVER_REQUIRE_AUTH_ALL", "INDEX_SERVER_REQUIRE_CATEGORY", "INDEX_SERVER_RESOURCE_CAPACITY", "INDEX_SERVER_RESOURCE_SAMPLE_INTERVAL_MS", "INDEX_SERVER_SEED_VERBOSE", "INDEX_SERVER_SEMANTIC_CACHE_DIR", "INDEX_SERVER_SEMANTIC_DEVICE", "INDEX_SERVER_SEMANTIC_ENABLED", "INDEX_SERVER_SEMANTIC_LOCAL_ONLY", "INDEX_SERVER_SEMANTIC_MODEL", "INDEX_SERVER_SEARCH_OMIT_ZERO_QUERY", "INDEX_SERVER_SESSION_BACKUP_INTEGRATION", "INDEX_SERVER_SESSION_DEDUPLICATION_ENABLED", "INDEX_SERVER_SESSION_MAX_CONNECTION_HISTORY_DAYS", "INDEX_SERVER_SESSION_MAX_HISTORY_DAYS", "INDEX_SERVER_SESSION_MAX_HISTORY_ENTRIES", "INDEX_SERVER_SESSION_PERSISTENCE_DIR", "INDEX_SERVER_SESSION_PERSISTENCE_ENABLED", "INDEX_SERVER_SESSION_PERSISTENCE_INTERVAL_MS", "INDEX_SERVER_SHARED_SERVER_SENTINEL", "INDEX_SERVER_SQLITE_MIGRATE_ON_START", "INDEX_SERVER_SQLITE_PATH", "INDEX_SERVER_SQLITE_VEC_ENABLED", "INDEX_SERVER_SQLITE_VEC_PATH", "INDEX_SERVER_SQLITE_WAL", "INDEX_SERVER_STALE_THRESHOLD_MS", "INDEX_SERVER_STATE_DIR", "INDEX_SERVER_STORAGE_BACKEND", "INDEX_SERVER_STRESS_DIAG", "INDEX_SERVER_STRESS_MODE", "INDEX_SERVER_STRICT_", "INDEX_SERVER_STRICT_CREATE", "INDEX_SERVER_STRICT_REMOVE", "INDEX_SERVER_TEST_MODE", "INDEX_SERVER_TEST_STRICT_VISIBILITY", "INDEX_SERVER_TIMING_JSON", "INDEX_SERVER_TOOLCALL_APPEND_LOG", "INDEX_SERVER_TOOLCALL_CHUNK_SIZE", "INDEX_SERVER_TOOLCALL_COMPACT_MS", "INDEX_SERVER_TOOLCALL_FLUSH_MS", "INDEX_SERVER_TRACE", "INDEX_SERVER_TRACE_", "INDEX_SERVER_TRACE_ALL", "INDEX_SERVER_TRACE_BUFFER_", "INDEX_SERVER_TRACE_BUFFER_DUMP_ON_EXIT", "INDEX_SERVER_TRACE_BUFFER_FILE", "INDEX_SERVER_TRACE_BUFFER_SIZE", "INDEX_SERVER_TRACE_CALLSITE", "INDEX_SERVER_TRACE_CATEGORIES", "INDEX_SERVER_TRACE_DIR", "INDEX_SERVER_TRACE_DISPATCH_DIAG", "INDEX_SERVER_TRACE_FILE", "INDEX_SERVER_TRACE_FSYNC", "INDEX_SERVER_TRACE_LEVEL", "INDEX_SERVER_TRACE_MAX_FILE_SIZE", "INDEX_SERVER_TRACE_PERSIST", "INDEX_SERVER_TRACE_QUERY_DIAG", "INDEX_SERVER_TRACE_SESSION", "INDEX_SERVER_USAGE_FLUSH_MS", "INDEX_SERVER_USAGE_SNAPSHOT_PATH", "INDEX_SERVER_VALIDATION_MODE", "INDEX_SERVER_VERBOSE_LOGGING", "INDEX_SERVER_VISIBILITY_DIAG", "INDEX_SERVER_WORKSPACE"];
40
+ export declare const DOCUMENTED_INDEX_SERVER_FLAGS: readonly ["INDEX_SERVER_ADD_TIMING", "INDEX_SERVER_ADMIN_API_KEY", "INDEX_SERVER_ADMIN_MAX_SESSION_HISTORY", "INDEX_SERVER_AGENT_ID", "INDEX_SERVER_ALWAYS_RELOAD", "INDEX_SERVER_ATOMIC_WRITE_BACKOFF_MS", "INDEX_SERVER_ATOMIC_WRITE_RETRIES", "INDEX_SERVER_AUDIT_LOG", "INDEX_SERVER_AUTH_KEY", "INDEX_SERVER_AUTO_BACKUP", "INDEX_SERVER_AUTO_BACKUP_INTERVAL_MS", "INDEX_SERVER_AUTO_BACKUP_MAX_COUNT", "INDEX_SERVER_AUTO_EMBED_ON_IMPORT", "INDEX_SERVER_AUTO_SEED", "INDEX_SERVER_AUTO_SPLIT_OVERSIZED", "INDEX_SERVER_AUTO_USAGE_TRACK", "INDEX_SERVER_BACKUP_BEFORE_BULK_DELETE", "INDEX_SERVER_BACKUPS_DIR", "INDEX_SERVER_BODY_MAX_LENGTH", "INDEX_SERVER_BODY_WARN_LENGTH", "INDEX_SERVER_BOOTSTRAP_AUTOCONFIRM", "INDEX_SERVER_BOOTSTRAP_TOKEN_TTL_SEC", "INDEX_SERVER_BUFFER_RING_APPEND", "INDEX_SERVER_BUFFER_RING_PRELOAD", "INDEX_SERVER_CACHE_MODE", "INDEX_SERVER_CANONICAL_DISABLE", "INDEX_SERVER_DASHBOARD", "INDEX_SERVER_DASHBOARD_GRAPH", "INDEX_SERVER_DASHBOARD_HOST", "INDEX_SERVER_DASHBOARD_PORT", "INDEX_SERVER_DASHBOARD_TLS", "INDEX_SERVER_DASHBOARD_TLS_CA", "INDEX_SERVER_DASHBOARD_TLS_CERT", "INDEX_SERVER_DASHBOARD_TLS_KEY", "INDEX_SERVER_DASHBOARD_TRIES", "INDEX_SERVER_DEBUG", "INDEX_SERVER_DIR", "INDEX_SERVER_DISABLE_EARLY_STDIN_BUFFER", "INDEX_SERVER_DISABLE_STDERR_BRIDGE", "INDEX_SERVER_DISABLE_USAGE_CLAMP", "INDEX_SERVER_EMBEDDING_PATH", "INDEX_SERVER_ENABLE_INDEX_SERVER_POLLER", "INDEX_SERVER_ENABLE_STDERR_BRIDGE", "INDEX_SERVER_EVENT_BUFFER_SIZE", "INDEX_SERVER_EVENT_SILENT", "INDEX_SERVER_FATAL_EXIT_DELAY_MS", "INDEX_SERVER_FEATURES", "INDEX_SERVER_FEEDBACK_DIR", "INDEX_SERVER_FEEDBACK_MAX_ENTRIES", "INDEX_SERVER_FILE_TRACE", "INDEX_SERVER_FLAG_TOOLS_ADMIN", "INDEX_SERVER_FLAG_TOOLS_EXTENDED", "INDEX_SERVER_FLAGS", "INDEX_SERVER_FLAGS_FILE", "INDEX_SERVER_FORCE_REBUILD", "INDEX_SERVER_GOV_HASH_CANON_VARIANTS", "INDEX_SERVER_GOV_HASH_HARDENING", "INDEX_SERVER_GOV_HASH_IMPORT_SET_SIZE", "INDEX_SERVER_GRAPH_INCLUDE_PRIMARY_EDGES", "INDEX_SERVER_GRAPH_LARGE_CATEGORY_CAP", "INDEX_SERVER_HEALTH_ERROR_THRESHOLD", "INDEX_SERVER_HEALTH_MEMORY_THRESHOLD", "INDEX_SERVER_HEALTH_MIN_UPTIME", "INDEX_SERVER_HEARTBEAT_MS", "INDEX_SERVER_HTTP_METRICS", "INDEX_SERVER_IDLE_KEEPALIVE_MS", "INDEX_SERVER_IDLE_READY_SENTINEL", "INDEX_SERVER_INIT_FEATURES", "INDEX_SERVER_ISSUE_317_COUNTER", "INDEX_SERVER_LEADER_PORT", "INDEX_SERVER_LEADER_URL", "INDEX_SERVER_LOAD_WARN_MS", "INDEX_SERVER_LOG_DIAG", "INDEX_SERVER_LOG_FILE", "INDEX_SERVER_LOG_JSON", "INDEX_SERVER_LOG_LEVEL", "INDEX_SERVER_LOG_MUTATION", "INDEX_SERVER_LOG_PROTOCOL", "INDEX_SERVER_LOG_SEARCH", "INDEX_SERVER_LOG_SYNC", "INDEX_SERVER_LOG_TOOLS", "INDEX_SERVER_MANIFEST_FASTLOAD", "INDEX_SERVER_MANIFEST_PATH", "INDEX_SERVER_MANIFEST_WRITE", "INDEX_SERVER_MAX_BULK_DELETE", "INDEX_SERVER_MAX_CONNECTIONS", "INDEX_SERVER_MAX_FILES", "INDEX_SERVER_MCP_BACKUP_RETAIN", "INDEX_SERVER_MCP_CONFIG_ROOT", "INDEX_SERVER_MEMOIZE", "INDEX_SERVER_MEMOIZE_HASH", "INDEX_SERVER_MEMORY_MONITOR", "INDEX_SERVER_MESSAGING_DIR", "INDEX_SERVER_MESSAGING_MAX", "INDEX_SERVER_MESSAGING_SWEEP_MS", "INDEX_SERVER_METRICS_DIR", "INDEX_SERVER_METRICS_FILE_STORAGE", "INDEX_SERVER_METRICS_MAX_FILES", "INDEX_SERVER_MINIMAL_DEBUG", "INDEX_SERVER_MODE", "INDEX_SERVER_MUTATION", "INDEX_SERVER_NORMALIZATION_LOG", "INDEX_SERVER_POLL_MS", "INDEX_SERVER_POLL_PROACTIVE", "INDEX_SERVER_PREFLIGHT_MODULES", "INDEX_SERVER_PREFLIGHT_STRICT", "INDEX_SERVER_PROFILE", "INDEX_SERVER_PWS_EXIT_MS", "INDEX_SERVER_RATE_LIMIT", "INDEX_SERVER_READ_BACKOFF_MS", "INDEX_SERVER_READ_RETRIES", "INDEX_SERVER_REFERENCE_MODE", "INDEX_SERVER_REQUEST_TIMEOUT", "INDEX_SERVER_REQUIRE_AUTH_ALL", "INDEX_SERVER_REQUIRE_CATEGORY", "INDEX_SERVER_RESOURCE_CAPACITY", "INDEX_SERVER_RESOURCE_SAMPLE_INTERVAL_MS", "INDEX_SERVER_SEED_VERBOSE", "INDEX_SERVER_SEMANTIC_CACHE_DIR", "INDEX_SERVER_SEMANTIC_DEVICE", "INDEX_SERVER_SEMANTIC_ENABLED", "INDEX_SERVER_SEMANTIC_LOCAL_ONLY", "INDEX_SERVER_SEMANTIC_MODEL", "INDEX_SERVER_SEARCH_OMIT_ZERO_QUERY", "INDEX_SERVER_SESSION_BACKUP_INTEGRATION", "INDEX_SERVER_SESSION_DEDUPLICATION_ENABLED", "INDEX_SERVER_SESSION_MAX_CONNECTION_HISTORY_DAYS", "INDEX_SERVER_SESSION_MAX_HISTORY_DAYS", "INDEX_SERVER_SESSION_MAX_HISTORY_ENTRIES", "INDEX_SERVER_SESSION_PERSISTENCE_DIR", "INDEX_SERVER_SESSION_PERSISTENCE_ENABLED", "INDEX_SERVER_SESSION_PERSISTENCE_INTERVAL_MS", "INDEX_SERVER_SHARED_SERVER_SENTINEL", "INDEX_SERVER_SQLITE_MIGRATE_ON_START", "INDEX_SERVER_SQLITE_PATH", "INDEX_SERVER_SQLITE_VEC_ENABLED", "INDEX_SERVER_SQLITE_VEC_PATH", "INDEX_SERVER_SQLITE_WAL", "INDEX_SERVER_STALE_THRESHOLD_MS", "INDEX_SERVER_STATE_DIR", "INDEX_SERVER_STORAGE_BACKEND", "INDEX_SERVER_STRESS_DIAG", "INDEX_SERVER_STRESS_MODE", "INDEX_SERVER_STRICT_", "INDEX_SERVER_STRICT_CREATE", "INDEX_SERVER_STRICT_REMOVE", "INDEX_SERVER_TEST_MODE", "INDEX_SERVER_TEST_STRICT_VISIBILITY", "INDEX_SERVER_TIMING_JSON", "INDEX_SERVER_TOOLCALL_APPEND_LOG", "INDEX_SERVER_TOOLCALL_CHUNK_SIZE", "INDEX_SERVER_TOOLCALL_COMPACT_MS", "INDEX_SERVER_TOOLCALL_FLUSH_MS", "INDEX_SERVER_TRACE", "INDEX_SERVER_TRACE_", "INDEX_SERVER_TRACE_ALL", "INDEX_SERVER_TRACE_BUFFER_", "INDEX_SERVER_TRACE_BUFFER_DUMP_ON_EXIT", "INDEX_SERVER_TRACE_BUFFER_FILE", "INDEX_SERVER_TRACE_BUFFER_SIZE", "INDEX_SERVER_TRACE_CALLSITE", "INDEX_SERVER_TRACE_CATEGORIES", "INDEX_SERVER_TRACE_DIR", "INDEX_SERVER_TRACE_DISPATCH_DIAG", "INDEX_SERVER_TRACE_FILE", "INDEX_SERVER_TRACE_FSYNC", "INDEX_SERVER_TRACE_LEVEL", "INDEX_SERVER_TRACE_MAX_FILE_SIZE", "INDEX_SERVER_TRACE_PERSIST", "INDEX_SERVER_TRACE_QUERY_DIAG", "INDEX_SERVER_TRACE_SESSION", "INDEX_SERVER_USAGE_FLUSH_MS", "INDEX_SERVER_USAGE_SNAPSHOT_PATH", "INDEX_SERVER_VALIDATION_MODE", "INDEX_SERVER_VERBOSE_LOGGING", "INDEX_SERVER_VISIBILITY_DIAG", "INDEX_SERVER_WARN_BUDGET", "INDEX_SERVER_WORKSPACE"];
41
41
  export declare function toForwardSlashes(value: string): string;
42
42
  export declare function resolveDataPaths(root: string): McpDataPaths;
43
43
  export declare function buildEnvCatalog(config: McpProfileConfig, paths: McpDataPaths): McpEnvCatalogEntry[];
@@ -17,15 +17,18 @@ exports.DOCUMENTED_INDEX_SERVER_FLAGS = [
17
17
  'INDEX_SERVER_ALWAYS_RELOAD',
18
18
  'INDEX_SERVER_ATOMIC_WRITE_BACKOFF_MS',
19
19
  'INDEX_SERVER_ATOMIC_WRITE_RETRIES',
20
+ 'INDEX_SERVER_AUDIT_LOG',
20
21
  'INDEX_SERVER_AUTH_KEY',
21
22
  'INDEX_SERVER_AUTO_BACKUP',
22
23
  'INDEX_SERVER_AUTO_BACKUP_INTERVAL_MS',
23
24
  'INDEX_SERVER_AUTO_BACKUP_MAX_COUNT',
25
+ 'INDEX_SERVER_AUTO_EMBED_ON_IMPORT',
24
26
  'INDEX_SERVER_AUTO_SEED',
25
27
  'INDEX_SERVER_AUTO_SPLIT_OVERSIZED',
26
28
  'INDEX_SERVER_AUTO_USAGE_TRACK',
27
29
  'INDEX_SERVER_BACKUP_BEFORE_BULK_DELETE',
28
30
  'INDEX_SERVER_BACKUPS_DIR',
31
+ 'INDEX_SERVER_BODY_MAX_LENGTH',
29
32
  'INDEX_SERVER_BODY_WARN_LENGTH',
30
33
  'INDEX_SERVER_BOOTSTRAP_AUTOCONFIRM',
31
34
  'INDEX_SERVER_BOOTSTRAP_TOKEN_TTL_SEC',
@@ -45,9 +48,12 @@ exports.DOCUMENTED_INDEX_SERVER_FLAGS = [
45
48
  'INDEX_SERVER_DEBUG',
46
49
  'INDEX_SERVER_DIR',
47
50
  'INDEX_SERVER_DISABLE_EARLY_STDIN_BUFFER',
51
+ 'INDEX_SERVER_DISABLE_STDERR_BRIDGE',
48
52
  'INDEX_SERVER_DISABLE_USAGE_CLAMP',
49
53
  'INDEX_SERVER_EMBEDDING_PATH',
50
54
  'INDEX_SERVER_ENABLE_INDEX_SERVER_POLLER',
55
+ 'INDEX_SERVER_ENABLE_STDERR_BRIDGE',
56
+ 'INDEX_SERVER_EVENT_BUFFER_SIZE',
51
57
  'INDEX_SERVER_EVENT_SILENT',
52
58
  'INDEX_SERVER_FATAL_EXIT_DELAY_MS',
53
59
  'INDEX_SERVER_FEATURES',
@@ -56,6 +62,7 @@ exports.DOCUMENTED_INDEX_SERVER_FLAGS = [
56
62
  'INDEX_SERVER_FILE_TRACE',
57
63
  'INDEX_SERVER_FLAG_TOOLS_ADMIN',
58
64
  'INDEX_SERVER_FLAG_TOOLS_EXTENDED',
65
+ 'INDEX_SERVER_FLAGS',
59
66
  'INDEX_SERVER_FLAGS_FILE',
60
67
  'INDEX_SERVER_FORCE_REBUILD',
61
68
  'INDEX_SERVER_GOV_HASH_CANON_VARIANTS',
@@ -85,13 +92,19 @@ exports.DOCUMENTED_INDEX_SERVER_FLAGS = [
85
92
  'INDEX_SERVER_LOG_SYNC',
86
93
  'INDEX_SERVER_LOG_TOOLS',
87
94
  'INDEX_SERVER_MANIFEST_FASTLOAD',
95
+ 'INDEX_SERVER_MANIFEST_PATH',
88
96
  'INDEX_SERVER_MANIFEST_WRITE',
89
97
  'INDEX_SERVER_MAX_BULK_DELETE',
90
98
  'INDEX_SERVER_MAX_CONNECTIONS',
91
99
  'INDEX_SERVER_MAX_FILES',
100
+ 'INDEX_SERVER_MCP_BACKUP_RETAIN',
101
+ 'INDEX_SERVER_MCP_CONFIG_ROOT',
92
102
  'INDEX_SERVER_MEMOIZE',
93
103
  'INDEX_SERVER_MEMOIZE_HASH',
94
104
  'INDEX_SERVER_MEMORY_MONITOR',
105
+ 'INDEX_SERVER_MESSAGING_DIR',
106
+ 'INDEX_SERVER_MESSAGING_MAX',
107
+ 'INDEX_SERVER_MESSAGING_SWEEP_MS',
95
108
  'INDEX_SERVER_METRICS_DIR',
96
109
  'INDEX_SERVER_METRICS_FILE_STORAGE',
97
110
  'INDEX_SERVER_METRICS_MAX_FILES',
@@ -173,6 +186,7 @@ exports.DOCUMENTED_INDEX_SERVER_FLAGS = [
173
186
  'INDEX_SERVER_VALIDATION_MODE',
174
187
  'INDEX_SERVER_VERBOSE_LOGGING',
175
188
  'INDEX_SERVER_VISIBILITY_DIAG',
189
+ 'INDEX_SERVER_WARN_BUDGET',
176
190
  'INDEX_SERVER_WORKSPACE',
177
191
  ];
178
192
  function toForwardSlashes(value) {
@@ -217,8 +231,8 @@ function buildEnvCatalog(config, paths) {
217
231
  { key: 'INDEX_SERVER_MUTATION', desc: 'Enable write operations', active: true, value: config.mutation ? '1' : '0' },
218
232
  { key: 'INDEX_SERVER_ADMIN_API_KEY', desc: 'Dashboard admin API key', active: false, value: '' },
219
233
  { key: 'INDEX_SERVER_DASHBOARD_TLS', desc: 'Enable HTTPS dashboard', active: config.tls, value: config.tls ? '1' : '0' },
220
- { key: 'INDEX_SERVER_DASHBOARD_TLS_CERT', desc: 'Path to TLS certificate file', active: false, value: `${paths.certs}/server.crt` },
221
- { key: 'INDEX_SERVER_DASHBOARD_TLS_KEY', desc: 'Path to TLS private key file', active: false, value: `${paths.certs}/server.key` },
234
+ { key: 'INDEX_SERVER_DASHBOARD_TLS_CERT', desc: 'Path to TLS certificate file', active: config.tls, value: `${paths.certs}/server.crt` },
235
+ { key: 'INDEX_SERVER_DASHBOARD_TLS_KEY', desc: 'Path to TLS private key file', active: config.tls, value: `${paths.certs}/server.key` },
222
236
  { key: 'INDEX_SERVER_DASHBOARD_TLS_CA', desc: 'Path to CA certificate', active: false, value: '' },
223
237
  { section: 'Semantic Search - embeddings' },
224
238
  { key: 'INDEX_SERVER_SEMANTIC_ENABLED', desc: 'Enable semantic search', active: isEnhanced, value: isEnhanced ? '1' : '0' },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jagilber-org/index-server",
3
- "version": "1.28.4",
3
+ "version": "1.28.8",
4
4
  "mcpName": "io.github.jagilber-org/index-server",
5
5
  "description": "MCP instruction indexing server with search, CRUD, validation, and cross-repo knowledge promotion.",
6
6
  "publishConfig": {
@@ -32,6 +32,18 @@ function writeTextFile(filePath, content) {
32
32
  fs['write' + 'FileSync'](filePath, content, 'utf8');
33
33
  }
34
34
  const IS_WINDOWS = process.platform === 'win32';
35
+
36
+ // Default install root for non-repo installs. Lives under the user profile so
37
+ // neither admin/elevated rights nor a cluttered C:\ root are required, and the
38
+ // runtime self-deploys cleanly there (args + cwd resolve under this root).
39
+ function defaultUserRoot() {
40
+ if (IS_WINDOWS) {
41
+ const base = process.env.LOCALAPPDATA || process.env.APPDATA || process.env.USERPROFILE || process.cwd();
42
+ return path.join(base, 'index-server');
43
+ }
44
+ const home = process.env.HOME || process.cwd();
45
+ return path.join(home, '.local', 'share', 'index-server');
46
+ }
35
47
  function parsePositiveTimeout(value, fallback) {
36
48
  const parsed = Number(value);
37
49
  return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
@@ -147,6 +159,10 @@ function parseNonInteractiveArgs() {
147
159
 
148
160
  const config = {
149
161
  profile: 'default',
162
+ // Non-interactive default stays at ROOT (package install dir) so scripted
163
+ // / CI flows that pass no --root don't trigger deployRuntime. Callers who
164
+ // want a user-profile install pass --root explicitly. Interactive flow
165
+ // defaults to defaultUserRoot() instead.
150
166
  root: ROOT,
151
167
  port: 8787,
152
168
  host: '127.0.0.1',
@@ -188,6 +204,8 @@ function parseNonInteractiveArgs() {
188
204
  if (config.profile === 'experimental') {
189
205
  config.logLevel = 'debug';
190
206
  }
207
+ // When certs are generated, TLS must be active so mcp.json env wires cert paths.
208
+ if (config.generateCerts) config.tls = true;
191
209
 
192
210
  return config;
193
211
  }
@@ -214,7 +232,7 @@ async function runInteractiveWizard() {
214
232
  });
215
233
 
216
234
  // Step 2: Root directory
217
- const defaultRoot = IS_WINDOWS ? 'C:\\mcp\\index-server' : '/opt/index-server';
235
+ const defaultRoot = defaultUserRoot();
218
236
  const root = path.resolve(await input({
219
237
  message: 'Base directory (all data paths resolve under this root)',
220
238
  default: defaultRoot,
@@ -294,7 +312,9 @@ async function runInteractiveWizard() {
294
312
  default: 'repo',
295
313
  });
296
314
 
297
- return { profile, root, serverName, port, host, mutation, logLevel, generateCerts, targets, scope, write: true, preview: true, deploy: true };
315
+ // When certs are generated TLS must be enabled so mcp.json env wires up cert paths.
316
+ const tls = generateCerts || profile === 'enhanced' || profile === 'experimental';
317
+ return { profile, root, serverName, port, host, tls, mutation, logLevel, generateCerts, targets, scope, write: true, preview: true, deploy: true };
298
318
  }
299
319
 
300
320
  // --------------------------------------------------------------------------
@@ -636,6 +656,23 @@ Non-interactive mode:
636
656
  previewConfigs(configTargets, config);
637
657
  }
638
658
 
659
+ // ── Generate TLS certs BEFORE writing configs so cert paths exist
660
+ // and the user sees a consistent flow (certs → config wired to them).
661
+ if (config.generateCerts) {
662
+ console.log('\n🔐 Generating TLS certificates...');
663
+ try {
664
+ const certDir = path.join(config.root, 'certs');
665
+ execFileSync(
666
+ process.execPath,
667
+ [path.join(ROOT, 'scripts', 'build', 'generate-certs.mjs'), '--hostname', 'localhost', '--output', certDir],
668
+ { stdio: 'inherit' }
669
+ );
670
+ } catch {
671
+ console.error('❌ Certificate generation failed. Run manually:');
672
+ console.error(` node scripts/build/generate-certs.mjs --output "${path.join(config.root, 'certs')}"`);
673
+ }
674
+ }
675
+
639
676
  // Write to real files or sidecar
640
677
  if (config.write) {
641
678
  console.log('📁 Writing configuration files...\n');
@@ -671,22 +708,6 @@ Non-interactive mode:
671
708
  // ── Deploy runtime if target root differs from package root ─────────
672
709
  await deployRuntime(config);
673
710
 
674
- // ── Generate TLS certs ──────────────────────────────────────────────
675
- if (config.generateCerts) {
676
- console.log('\n🔐 Generating TLS certificates...');
677
- try {
678
- const certDir = path.join(config.root, 'certs');
679
- execFileSync(
680
- process.execPath,
681
- [path.join(ROOT, 'scripts', 'build', 'generate-certs.mjs'), '--hostname', 'localhost', '--output', certDir],
682
- { stdio: 'inherit' }
683
- );
684
- } catch {
685
- console.error('❌ Certificate generation failed. Run manually:');
686
- console.error(` node scripts/build/generate-certs.mjs --output "${path.join(config.root, 'certs')}"`);
687
- }
688
- }
689
-
690
711
  // ── Next steps ──────────────────────────────────────────────────────
691
712
  const proto = (config.profile === 'enhanced' || config.profile === 'experimental') ? 'https' : 'http';
692
713
  const launch = resolveServerLaunch(config);
@@ -724,6 +745,13 @@ Non-interactive mode:
724
745
  console.log(` ${proto}://localhost:${config.port}\n`);
725
746
  step++;
726
747
 
748
+ if (config.tls && config.generateCerts) {
749
+ console.log(` ${step}. TLS certificates wired into your MCP config:`);
750
+ console.log(` INDEX_SERVER_DASHBOARD_TLS_CERT = ${fwd(path.join(config.root, 'certs', 'server.crt'))}`);
751
+ console.log(` INDEX_SERVER_DASHBOARD_TLS_KEY = ${fwd(path.join(config.root, 'certs', 'server.key'))}\n`);
752
+ step++;
753
+ }
754
+
727
755
  if (config.profile === 'enhanced' || config.profile === 'experimental') {
728
756
  console.log(` ${step}. First-time semantic search:`);
729
757
  console.log(' The MiniLM model (~90MB) will download on first query.');
package/server.json CHANGED
@@ -6,12 +6,12 @@
6
6
  "url": "https://github.com/jagilber-org/index-server",
7
7
  "source": "github"
8
8
  },
9
- "version": "1.28.4",
9
+ "version": "1.28.8",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "@jagilber-org/index-server",
14
- "version": "1.28.4",
14
+ "version": "1.28.8",
15
15
  "transport": {
16
16
  "type": "stdio"
17
17
  }