@jagilber-org/index-server 1.28.1 → 1.28.2

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 CHANGED
@@ -6,6 +6,12 @@ The format is based on Keep a Changelog and this project adheres to Semantic Ver
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.28.2] - 2026-05-06
10
+
11
+ ### Added
12
+
13
+ - Clean install setup coverage and release workflow safety fixes.
14
+
9
15
  ## [1.28.1] - 2026-05-05
10
16
 
11
17
  ### Fixed
package/README.md CHANGED
@@ -19,6 +19,14 @@ Index Server is a central knowledge base that AI agents connect to via the [Mode
19
19
 
20
20
  ---
21
21
 
22
+ ## Prerequisite: Node.js
23
+
24
+ Index Server requires **Node.js 22 or newer** before using the `npx` or source install options. Download Node.js from [nodejs.org](https://nodejs.org/) or install it with Windows Package Manager:
25
+
26
+ ```powershell
27
+ winget install nodejs
28
+ ```
29
+
22
30
  ## Quick Start Options
23
31
 
24
32
  ### Option A: MCP-native via `npx` (recommended)
@@ -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.1-0009101e">
4
+ <meta name="dashboard-build-version" content="1.28.2-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.1-0009101e">
9
- <script defer src="js/admin.utils.js?v=1.28.1-0009101e"></script>
10
- <script defer src="js/admin.auth.js?v=1.28.1-0009101e"></script>
11
- <script defer src="js/admin.overview.js?v=1.28.1-0009101e"></script>
12
- <script defer src="js/admin.sessions.js?v=1.28.1-0009101e"></script>
13
- <script defer src="js/admin.monitor.js?v=1.28.1-0009101e"></script>
14
- <script defer src="js/admin.events.js?v=1.28.1-0009101e"></script>
15
- <script defer src="js/admin.graph.js?v=1.28.1-0009101e"></script>
8
+ <link rel="stylesheet" href="css/admin.css?v=1.28.2-0009101e">
9
+ <script defer src="js/admin.utils.js?v=1.28.2-0009101e"></script>
10
+ <script defer src="js/admin.auth.js?v=1.28.2-0009101e"></script>
11
+ <script defer src="js/admin.overview.js?v=1.28.2-0009101e"></script>
12
+ <script defer src="js/admin.sessions.js?v=1.28.2-0009101e"></script>
13
+ <script defer src="js/admin.monitor.js?v=1.28.2-0009101e"></script>
14
+ <script defer src="js/admin.events.js?v=1.28.2-0009101e"></script>
15
+ <script defer src="js/admin.graph.js?v=1.28.2-0009101e"></script>
16
16
  <script defer src="js/marked.umd.js"></script>
17
- <script defer src="js/admin.instructions.js?v=1.28.1-0009101e"></script>
18
- <script defer src="js/admin.logs.js?v=1.28.1-0009101e"></script>
19
- <script defer src="js/admin.maintenance.js?v=1.28.1-0009101e"></script>
20
- <script defer src="js/admin.config.js?v=1.28.1-0009101e"></script>
21
- <script defer src="js/admin.performance.js?v=1.28.1-0009101e"></script>
22
- <script defer src="js/admin.instances.js?v=1.28.1-0009101e"></script>
23
- <script defer src="js/admin.embeddings.js?v=1.28.1-0009101e"></script>
24
- <script defer src="js/admin.messaging.js?v=1.28.1-0009101e"></script>
25
- <script defer src="js/admin.sqlite.js?v=1.28.1-0009101e"></script>
26
- <script defer src="js/admin.boot.js?v=1.28.1-0009101e"></script>
27
- <script defer src="js/admin.feedback.js?v=1.28.1-0009101e"></script>
17
+ <script defer src="js/admin.instructions.js?v=1.28.2-0009101e"></script>
18
+ <script defer src="js/admin.logs.js?v=1.28.2-0009101e"></script>
19
+ <script defer src="js/admin.maintenance.js?v=1.28.2-0009101e"></script>
20
+ <script defer src="js/admin.config.js?v=1.28.2-0009101e"></script>
21
+ <script defer src="js/admin.performance.js?v=1.28.2-0009101e"></script>
22
+ <script defer src="js/admin.instances.js?v=1.28.2-0009101e"></script>
23
+ <script defer src="js/admin.embeddings.js?v=1.28.2-0009101e"></script>
24
+ <script defer src="js/admin.messaging.js?v=1.28.2-0009101e"></script>
25
+ <script defer src="js/admin.sqlite.js?v=1.28.2-0009101e"></script>
26
+ <script defer src="js/admin.boot.js?v=1.28.2-0009101e"></script>
27
+ <script defer src="js/admin.feedback.js?v=1.28.2-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.1-0009101e
912
+ // Graph logic was extracted to js/admin.graph.js?v=1.28.2-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.1-0009101e -->
915
+ <!-- overview functions moved to js/admin.overview.js?v=1.28.2-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.1-0009101e
1100
+ // Extracted to js/admin.maintenance.js?v=1.28.2-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.1-0009101e (loaded via defer).
1166
+ // Primary implementation in js/admin.config.js?v=1.28.2-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.1-0009101e
1226
+ // Monitoring functions moved to js/admin.monitor.js?v=1.28.2-0009101e
1227
1227
 
1228
1228
  // ===== Log Viewer =====
1229
- // Extracted to js/admin.logs.js?v=1.28.1-0009101e
1229
+ // Extracted to js/admin.logs.js?v=1.28.2-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.1-0009101e
1726
+ // Instruction management logic extracted to js/admin.instructions.js?v=1.28.2-0009101e
1727
1727
  // Functions exposed globally: loadInstructions, renderInstructionList, editInstruction, saveInstruction, deleteInstruction, etc.
1728
1728
 
1729
1729
  function startAutoRefresh() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jagilber-org/index-server",
3
- "version": "1.28.1",
3
+ "version": "1.28.2",
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": {
@@ -6,7 +6,7 @@
6
6
  * For production, replace with certificates from a real CA.
7
7
  *
8
8
  * Usage:
9
- * node scripts/generate-certs.mjs [--hostname <name>] [--days <n>] [--output <dir>]
9
+ * node scripts/build/generate-certs.mjs [--hostname <name>] [--days <n>] [--output <dir>]
10
10
  */
11
11
  import { execFileSync } from 'child_process';
12
12
  import fs from 'fs';
@@ -14,8 +14,8 @@
14
14
  * Usage:
15
15
  * npx @jagilber-org/index-server --setup
16
16
  * npm run setup
17
- * node scripts/setup-wizard.mjs
18
- * node scripts/setup-wizard.mjs --non-interactive --profile enhanced --root C:/mcp/index-server
17
+ * node scripts/build/setup-wizard.mjs
18
+ * node scripts/build/setup-wizard.mjs --non-interactive --profile enhanced --root C:/mcp/index-server
19
19
  */
20
20
  import fs from 'fs';
21
21
  import path from 'path';
@@ -27,6 +27,18 @@ import { select, input, confirm, checkbox } from '@inquirer/prompts';
27
27
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
28
28
  const ROOT = path.resolve(__dirname, '..', '..');
29
29
  const IS_WINDOWS = process.platform === 'win32';
30
+ function parsePositiveTimeout(value, fallback) {
31
+ const parsed = Number(value);
32
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
33
+ }
34
+ const DEPLOY_PACK_TIMEOUT_MS = parsePositiveTimeout(
35
+ process.env.INDEX_SERVER_SETUP_PACK_TIMEOUT_MS,
36
+ 30_000
37
+ );
38
+ const DEPLOY_INSTALL_TIMEOUT_MS = parsePositiveTimeout(
39
+ process.env.INDEX_SERVER_SETUP_INSTALL_TIMEOUT_MS,
40
+ IS_WINDOWS ? 420_000 : 120_000
41
+ );
30
42
 
31
43
  // --------------------------------------------------------------------------
32
44
  // Launch spec resolver — determines how to invoke index-server at runtime.
@@ -781,7 +793,7 @@ async function deployRuntime(config) {
781
793
  // and produces a proper self-contained node_modules tree.
782
794
  const packOutput = runNpm(
783
795
  ['pack', '--pack-destination', targetRoot],
784
- { cwd: ROOT, stdio: ['pipe', 'pipe', 'inherit'], timeout: 30_000 }
796
+ { cwd: ROOT, stdio: ['pipe', 'pipe', 'inherit'], timeout: DEPLOY_PACK_TIMEOUT_MS }
785
797
  ).toString().trim();
786
798
  const tarballName = packOutput.split('\n').pop();
787
799
 
@@ -789,9 +801,10 @@ async function deployRuntime(config) {
789
801
 
790
802
  try {
791
803
  // Install from the local tarball
804
+ console.log(` npm install timeout: ${DEPLOY_INSTALL_TIMEOUT_MS}ms`);
792
805
  runNpm(
793
806
  ['install', tarballPath, '--omit=dev', '--no-fund', '--no-audit'],
794
- { cwd: targetRoot, stdio: 'inherit', timeout: 120_000 }
807
+ { cwd: targetRoot, stdio: 'inherit', timeout: DEPLOY_INSTALL_TIMEOUT_MS }
795
808
  );
796
809
  } finally {
797
810
  // Clean up tarball
@@ -860,10 +873,10 @@ async function main() {
860
873
  Interactive mode:
861
874
  npx @jagilber-org/index-server --setup
862
875
  npm run setup
863
- node scripts/setup-wizard.mjs
876
+ node scripts/build/setup-wizard.mjs
864
877
 
865
878
  Non-interactive mode:
866
- node scripts/setup-wizard.mjs --non-interactive [options]
879
+ node scripts/build/setup-wizard.mjs --non-interactive [options]
867
880
  --profile <name> default | enhanced | experimental
868
881
  --root <dir> Base directory for all data paths
869
882
  --port <n> Dashboard port (default: 8787)
@@ -959,12 +972,12 @@ Non-interactive mode:
959
972
  const certDir = path.join(config.root, 'certs');
960
973
  execFileSync(
961
974
  process.execPath,
962
- [path.join(ROOT, 'scripts', 'generate-certs.mjs'), '--hostname', 'localhost', '--output', certDir],
975
+ [path.join(ROOT, 'scripts', 'build', 'generate-certs.mjs'), '--hostname', 'localhost', '--output', certDir],
963
976
  { stdio: 'inherit' }
964
977
  );
965
978
  } catch {
966
979
  console.error('❌ Certificate generation failed. Run manually:');
967
- console.error(` node scripts/generate-certs.mjs --output "${path.join(config.root, 'certs')}"`);
980
+ console.error(` node scripts/build/generate-certs.mjs --output "${path.join(config.root, 'certs')}"`);
968
981
  }
969
982
  }
970
983
 
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.1",
9
+ "version": "1.28.2",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "@jagilber-org/index-server",
14
- "version": "1.28.1",
14
+ "version": "1.28.2",
15
15
  "transport": {
16
16
  "type": "stdio"
17
17
  }