projax 3.3.51 → 3.3.52

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 (162) hide show
  1. package/README.md +0 -73
  2. package/coverage/core-bridge.ts.html +24 -3
  3. package/coverage/index.html +34 -19
  4. package/coverage/lcov-report/core-bridge.ts.html +24 -3
  5. package/coverage/lcov-report/index.html +34 -19
  6. package/coverage/lcov-report/port-extractor.ts.html +1 -1
  7. package/coverage/lcov-report/port-scanner.ts.html +3 -3
  8. package/coverage/lcov-report/port-utils.ts.html +1 -1
  9. package/coverage/lcov-report/script-runner.ts.html +302 -11
  10. package/coverage/lcov-report/test-parser.ts.html +799 -0
  11. package/coverage/lcov.info +270 -49
  12. package/coverage/port-extractor.ts.html +1 -1
  13. package/coverage/port-scanner.ts.html +3 -3
  14. package/coverage/port-utils.ts.html +1 -1
  15. package/coverage/script-runner.ts.html +302 -11
  16. package/coverage/test-parser.ts.html +799 -0
  17. package/dist/__tests__/port-scanner.test.js +17 -7
  18. package/dist/__tests__/script-runner.test.js +17 -7
  19. package/dist/api/__tests__/database.test.js +17 -7
  20. package/dist/api/__tests__/database.test.js.map +1 -1
  21. package/dist/api/__tests__/routes.test.js +18 -7
  22. package/dist/api/__tests__/routes.test.js.map +1 -1
  23. package/dist/api/__tests__/scanner.test.js +18 -7
  24. package/dist/api/__tests__/scanner.test.js.map +1 -1
  25. package/dist/api/database.d.ts +0 -8
  26. package/dist/api/database.d.ts.map +1 -1
  27. package/dist/api/database.js +24 -57
  28. package/dist/api/database.js.map +1 -1
  29. package/dist/api/index.js +19 -9
  30. package/dist/api/index.js.map +1 -1
  31. package/dist/api/migrate.js +1 -2
  32. package/dist/api/migrate.js.map +1 -1
  33. package/dist/api/package.json +6 -3
  34. package/dist/api/routes/backup.d.ts +2 -1
  35. package/dist/api/routes/backup.d.ts.map +1 -1
  36. package/dist/api/routes/backup.js.map +1 -1
  37. package/dist/api/routes/index.d.ts +2 -1
  38. package/dist/api/routes/index.d.ts.map +1 -1
  39. package/dist/api/routes/index.js +0 -2
  40. package/dist/api/routes/index.js.map +1 -1
  41. package/dist/api/routes/projects.d.ts +2 -1
  42. package/dist/api/routes/projects.d.ts.map +1 -1
  43. package/dist/api/routes/projects.js +17 -7
  44. package/dist/api/routes/projects.js.map +1 -1
  45. package/dist/api/routes/settings.d.ts +2 -1
  46. package/dist/api/routes/settings.d.ts.map +1 -1
  47. package/dist/api/routes/settings.js +22 -57
  48. package/dist/api/routes/settings.js.map +1 -1
  49. package/dist/api/routes/workspaces.d.ts +2 -1
  50. package/dist/api/routes/workspaces.d.ts.map +1 -1
  51. package/dist/api/routes/workspaces.js +21 -96
  52. package/dist/api/routes/workspaces.js.map +1 -1
  53. package/dist/api/services/scanner.js +19 -10
  54. package/dist/api/services/scanner.js.map +1 -1
  55. package/dist/api/services/test-parser.js +2 -3
  56. package/dist/api/services/test-parser.js.map +1 -1
  57. package/dist/api/types.d.ts +0 -5
  58. package/dist/api/types.d.ts.map +1 -1
  59. package/dist/core/__tests__/database.test.js +17 -7
  60. package/dist/core/__tests__/detector.test.js +17 -7
  61. package/dist/core/__tests__/index.test.js +18 -7
  62. package/dist/core/__tests__/scanner.test.js +18 -7
  63. package/dist/core/__tests__/settings.test.js +18 -7
  64. package/dist/core/backup-utils.js +20 -11
  65. package/dist/core/database.js +18 -9
  66. package/dist/core/detector.js +21 -11
  67. package/dist/core/git-utils.js +19 -10
  68. package/dist/core/index.js +5 -5
  69. package/dist/core/scanner.js +2 -3
  70. package/dist/core/settings.d.ts +0 -85
  71. package/dist/core/settings.js +9 -306
  72. package/dist/core/workspace-utils.js +20 -11
  73. package/dist/core-bridge.js +22 -8
  74. package/dist/electron/core/__tests__/database.test.js +17 -7
  75. package/dist/electron/core/__tests__/detector.test.js +17 -7
  76. package/dist/electron/core/__tests__/index.test.js +18 -7
  77. package/dist/electron/core/__tests__/scanner.test.js +18 -7
  78. package/dist/electron/core/__tests__/settings.test.js +18 -7
  79. package/dist/electron/core/backup-utils.js +20 -11
  80. package/dist/electron/core/database.js +18 -9
  81. package/dist/electron/core/detector.js +21 -11
  82. package/dist/electron/core/git-utils.js +19 -10
  83. package/dist/electron/core/index.js +5 -5
  84. package/dist/electron/core/scanner.js +2 -3
  85. package/dist/electron/core/settings.d.ts +0 -85
  86. package/dist/electron/core/settings.js +9 -306
  87. package/dist/electron/core/workspace-utils.js +20 -11
  88. package/dist/electron/core.js +22 -8
  89. package/dist/electron/main.js +143 -444
  90. package/dist/electron/port-extractor.js +18 -9
  91. package/dist/electron/port-scanner.js +21 -12
  92. package/dist/electron/port-utils.js +4 -5
  93. package/dist/electron/preload.d.ts +2 -13
  94. package/dist/electron/preload.js +2 -9
  95. package/dist/electron/renderer/assets/index-BjZn_mEF.js +66 -0
  96. package/dist/electron/renderer/assets/index-CZmDxbJO.js +66 -0
  97. package/dist/electron/renderer/assets/{index-DWe2TQFv.css → index-DfocdjIj.css} +1 -1
  98. package/dist/electron/renderer/index.html +2 -2
  99. package/dist/electron/script-runner.js +29 -20
  100. package/dist/index.js +37 -134
  101. package/dist/port-extractor.js +18 -9
  102. package/dist/port-scanner.js +21 -12
  103. package/dist/port-utils.js +4 -5
  104. package/dist/prxi.d.ts +1 -0
  105. package/dist/prxi.js +1106 -0
  106. package/dist/prxi.tsx +6 -6
  107. package/dist/script-runner.js +29 -20
  108. package/dist/test-parser.js +2 -3
  109. package/jest.config.js +8 -0
  110. package/package.json +9 -6
  111. package/dist/api/routes/mcp.d.ts +0 -3
  112. package/dist/api/routes/mcp.d.ts.map +0 -1
  113. package/dist/api/routes/mcp.js +0 -147
  114. package/dist/api/routes/mcp.js.map +0 -1
  115. package/dist/electron/renderer/assets/index-59AhiV_K.css +0 -1
  116. package/dist/electron/renderer/assets/index-A04svynq.js +0 -62
  117. package/dist/electron/renderer/assets/index-B-etDnj2.js +0 -64
  118. package/dist/electron/renderer/assets/index-BGodNljq.js +0 -62
  119. package/dist/electron/renderer/assets/index-Bx18Cyic.js +0 -64
  120. package/dist/electron/renderer/assets/index-ByBOaxqv.js +0 -62
  121. package/dist/electron/renderer/assets/index-ByHY-x-j.js +0 -62
  122. package/dist/electron/renderer/assets/index-C1SRt6Jx.js +0 -62
  123. package/dist/electron/renderer/assets/index-C8f5yNYe.js +0 -64
  124. package/dist/electron/renderer/assets/index-C9Fo49a8.js +0 -61
  125. package/dist/electron/renderer/assets/index-CGx7K7jh.js +0 -62
  126. package/dist/electron/renderer/assets/index-CIZ3Wl6c.css +0 -1
  127. package/dist/electron/renderer/assets/index-CJbsU9y8.css +0 -1
  128. package/dist/electron/renderer/assets/index-CJrLunKK.js +0 -62
  129. package/dist/electron/renderer/assets/index-CQTleudf.css +0 -1
  130. package/dist/electron/renderer/assets/index-CQcilqlv.js +0 -62
  131. package/dist/electron/renderer/assets/index-CS-85xbL.css +0 -1
  132. package/dist/electron/renderer/assets/index-CYph0WPA.js +0 -62
  133. package/dist/electron/renderer/assets/index-C_WSLD6y.css +0 -1
  134. package/dist/electron/renderer/assets/index-CgB-tTpV.js +0 -62
  135. package/dist/electron/renderer/assets/index-ChoTzPLo.css +0 -1
  136. package/dist/electron/renderer/assets/index-CopVNRnR.js +0 -64
  137. package/dist/electron/renderer/assets/index-D1jmaGv5.css +0 -1
  138. package/dist/electron/renderer/assets/index-D2AOB6Er.js +0 -62
  139. package/dist/electron/renderer/assets/index-DAfjuYKX.js +0 -61
  140. package/dist/electron/renderer/assets/index-DEOOHPEi.css +0 -1
  141. package/dist/electron/renderer/assets/index-DTtg6XrF.css +0 -1
  142. package/dist/electron/renderer/assets/index-DUvcepWm.js +0 -64
  143. package/dist/electron/renderer/assets/index-DVWDlM1D.js +0 -62
  144. package/dist/electron/renderer/assets/index-DZzB20Xf.css +0 -1
  145. package/dist/electron/renderer/assets/index-Dk0EQt0u.css +0 -1
  146. package/dist/electron/renderer/assets/index-DknLdADV.js +0 -63
  147. package/dist/electron/renderer/assets/index-DocuD8Lk.js +0 -64
  148. package/dist/electron/renderer/assets/index-DwRy5FqP.js +0 -62
  149. package/dist/electron/renderer/assets/index-DyU-xfd8.css +0 -1
  150. package/dist/electron/renderer/assets/index-GwC-JVUy.css +0 -1
  151. package/dist/electron/renderer/assets/index-JXrtTB1F.js +0 -63
  152. package/dist/electron/renderer/assets/index-Ocrdv8Lb.css +0 -1
  153. package/dist/electron/renderer/assets/index-R-HsWJ0K.js +0 -62
  154. package/dist/electron/renderer/assets/index-Ytah0wbZ.js +0 -62
  155. package/dist/electron/renderer/assets/index-ZVyXUshO.css +0 -1
  156. package/dist/electron/renderer/assets/index-Z_8dJn3i.js +0 -62
  157. package/dist/electron/renderer/assets/index-fehviker.js +0 -63
  158. package/dist/electron/renderer/assets/index-nts9ST-M.js +0 -62
  159. package/dist/electron/renderer/assets/index-q8NVIH3g.css +0 -1
  160. package/dist/electron/renderer/assets/index-thUWIXon.js +0 -62
  161. package/dist/electron/renderer/assets/index-tuQmrwcm.css +0 -1
  162. package/dist/prxi/src/index.tsx +0 -1370
package/dist/index.js CHANGED
@@ -16,13 +16,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
16
16
  }) : function(o, v) {
17
17
  o["default"] = v;
18
18
  });
19
- var __importStar = (this && this.__importStar) || function (mod) {
20
- if (mod && mod.__esModule) return mod;
21
- var result = {};
22
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
23
- __setModuleDefault(result, mod);
24
- return result;
25
- };
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
26
36
  Object.defineProperty(exports, "__esModule", { value: true });
27
37
  const commander_1 = require("commander");
28
38
  const path = __importStar(require("path"));
@@ -608,7 +618,7 @@ program
608
618
  console.log(`✓ Found ${result.testsFound} test file(s)`);
609
619
  if (result.tests.length > 0) {
610
620
  console.log(' Test files:');
611
- result.tests.forEach(test => {
621
+ result.tests.forEach((test) => {
612
622
  console.log(` - ${test.file_path}${test.framework ? ` (${test.framework})` : ''}`);
613
623
  });
614
624
  }
@@ -620,7 +630,7 @@ program
620
630
  const ports = db.getProjectPorts(project.id);
621
631
  if (ports.length > 0) {
622
632
  console.log(`✓ Found ${ports.length} port(s)`);
623
- const portList = ports.map(p => p.port).sort((a, b) => a - b).join(', ');
633
+ const portList = ports.map((p) => p.port).sort((a, b) => a - b).join(', ');
624
634
  console.log(` Ports: ${portList}`);
625
635
  }
626
636
  else {
@@ -699,7 +709,7 @@ program
699
709
  // Table format
700
710
  console.log(`\nTracked Projects (${projects.length}):\n`);
701
711
  // Fetch git branches for all projects
702
- const { getCurrentBranch } = await Promise.resolve().then(() => __importStar(require('../../core/src/git-utils')));
712
+ const { getCurrentBranch } = await Promise.resolve().then(() => __importStar(require('projax-core')));
703
713
  const branchMap = new Map();
704
714
  for (const project of projects) {
705
715
  try {
@@ -712,8 +722,8 @@ program
712
722
  }
713
723
  // Calculate column widths
714
724
  const idWidth = Math.max(3, projects.length.toString().length);
715
- const nameWidth = Math.max(4, ...projects.map(p => p.name.length));
716
- const pathWidth = Math.max(4, Math.min(35, ...projects.map(p => p.path.length)));
725
+ const nameWidth = Math.max(4, ...projects.map((p) => p.name.length));
726
+ const pathWidth = Math.max(4, Math.min(35, ...projects.map((p) => p.path.length)));
717
727
  const branchWidth = 15;
718
728
  const portsWidth = 12;
719
729
  const testsWidth = 6;
@@ -738,7 +748,7 @@ program
738
748
  ? new Date(project.last_scanned * 1000).toLocaleString()
739
749
  : 'Never';
740
750
  const portStr = ports.length > 0
741
- ? ports.map(p => p.port).sort((a, b) => a - b).join(', ')
751
+ ? ports.map((p) => p.port).sort((a, b) => a - b).join(', ')
742
752
  : 'N/A';
743
753
  const pathDisplay = project.path.length > 35
744
754
  ? '...' + project.path.slice(-32)
@@ -786,7 +796,7 @@ program
786
796
  console.log(`✓ Found ${result.testsFound} test file(s)`);
787
797
  if (result.tests.length > 0) {
788
798
  console.log('\nTest files:');
789
- result.tests.forEach(test => {
799
+ result.tests.forEach((test) => {
790
800
  console.log(` - ${test.file_path}${test.framework ? ` (${test.framework})` : ''}`);
791
801
  });
792
802
  }
@@ -797,7 +807,7 @@ program
797
807
  const ports = db.getProjectPorts(project.id);
798
808
  if (ports.length > 0) {
799
809
  console.log(`✓ Found ${ports.length} port(s)`);
800
- const portList = ports.map(p => p.port).sort((a, b) => a - b).join(', ');
810
+ const portList = ports.map((p) => p.port).sort((a, b) => a - b).join(', ');
801
811
  console.log(` Ports: ${portList}`);
802
812
  }
803
813
  else {
@@ -845,7 +855,7 @@ program
845
855
  try {
846
856
  const db = (0, core_bridge_1.getDatabaseManager)();
847
857
  const projects = (0, core_bridge_1.getAllProjects)();
848
- const project = projects.find(p => p.id.toString() === projectIdentifier || p.name === projectIdentifier);
858
+ const project = projects.find((p) => p.id.toString() === projectIdentifier || p.name === projectIdentifier);
849
859
  if (!project) {
850
860
  console.error(`Error: Project not found: ${projectIdentifier}`);
851
861
  process.exit(1);
@@ -875,7 +885,7 @@ program
875
885
  await ensureAPIServerRunning(true);
876
886
  const db = (0, core_bridge_1.getDatabaseManager)();
877
887
  const projects = (0, core_bridge_1.getAllProjects)();
878
- const project = projects.find(p => p.id.toString() === projectIdentifier || p.name === projectIdentifier);
888
+ const project = projects.find((p) => p.id.toString() === projectIdentifier || p.name === projectIdentifier);
879
889
  if (!project) {
880
890
  console.error(`Error: Project not found: ${projectIdentifier}`);
881
891
  process.exit(1);
@@ -918,7 +928,7 @@ program
918
928
  await ensureAPIServerRunning(true);
919
929
  const db = (0, core_bridge_1.getDatabaseManager)();
920
930
  const projects = (0, core_bridge_1.getAllProjects)();
921
- const project = projects.find(p => p.id.toString() === projectIdentifier || p.name === projectIdentifier);
931
+ const project = projects.find((p) => p.id.toString() === projectIdentifier || p.name === projectIdentifier);
922
932
  if (!project) {
923
933
  console.error(`Error: Project not found: ${projectIdentifier}`);
924
934
  process.exit(1);
@@ -931,7 +941,7 @@ program
931
941
  }
932
942
  else {
933
943
  console.log(`Tags for "${project.name}":`);
934
- currentTags.forEach(t => console.log(` - ${t}`));
944
+ currentTags.forEach((t) => console.log(` - ${t}`));
935
945
  }
936
946
  }
937
947
  else if (action === 'add') {
@@ -958,7 +968,7 @@ program
958
968
  console.log(`Tag "${tagToRemove}" does not exist for "${project.name}"`);
959
969
  }
960
970
  else {
961
- db.updateProject(project.id, { tags: currentTags.filter(t => t !== tagToRemove) });
971
+ db.updateProject(project.id, { tags: currentTags.filter((t) => t !== tagToRemove) });
962
972
  console.log(`✓ Removed tag "${tagToRemove}" from "${project.name}"`);
963
973
  }
964
974
  }
@@ -981,7 +991,7 @@ program
981
991
  try {
982
992
  await ensureAPIServerRunning(true);
983
993
  const projects = (0, core_bridge_1.getAllProjects)();
984
- const project = projects.find(p => p.id.toString() === projectIdentifier || p.name === projectIdentifier);
994
+ const project = projects.find((p) => p.id.toString() === projectIdentifier || p.name === projectIdentifier);
985
995
  if (!project) {
986
996
  console.error(`Error: Project not found: ${projectIdentifier}`);
987
997
  process.exit(1);
@@ -1046,7 +1056,7 @@ program
1046
1056
  .action((projectIdentifier) => {
1047
1057
  try {
1048
1058
  const projects = (0, core_bridge_1.getAllProjects)();
1049
- const project = projects.find(p => p.id.toString() === projectIdentifier || p.name === projectIdentifier);
1059
+ const project = projects.find((p) => p.id.toString() === projectIdentifier || p.name === projectIdentifier);
1050
1060
  if (!project) {
1051
1061
  console.error(`Error: Project not found: ${projectIdentifier}`);
1052
1062
  process.exit(1);
@@ -1083,7 +1093,7 @@ program
1083
1093
  try {
1084
1094
  await ensureAPIServerRunning(true);
1085
1095
  const projects = (0, core_bridge_1.getAllProjects)();
1086
- const project = projects.find(p => p.id.toString() === projectIdentifier || p.name === projectIdentifier);
1096
+ const project = projects.find((p) => p.id.toString() === projectIdentifier || p.name === projectIdentifier);
1087
1097
  if (!project) {
1088
1098
  console.error(`Error: Project not found: ${projectIdentifier}`);
1089
1099
  process.exit(1);
@@ -1134,7 +1144,7 @@ program
1134
1144
  await ensureAPIServerRunning(true);
1135
1145
  const db = (0, core_bridge_1.getDatabaseManager)();
1136
1146
  const projects = (0, core_bridge_1.getAllProjects)();
1137
- const project = projects.find(p => p.id.toString() === projectIdentifier || p.name === projectIdentifier);
1147
+ const project = projects.find((p) => p.id.toString() === projectIdentifier || p.name === projectIdentifier);
1138
1148
  if (!project) {
1139
1149
  console.error(`Error: Project not found: ${projectIdentifier}`);
1140
1150
  process.exit(1);
@@ -1839,7 +1849,7 @@ program
1839
1849
  const ports = db.getProjectPorts(project.id);
1840
1850
  if (ports.length > 0) {
1841
1851
  console.log(`✓ Found ${ports.length} port(s)`);
1842
- ports.forEach(port => {
1852
+ ports.forEach((port) => {
1843
1853
  const scriptLabel = port.script_name ? ` (${port.script_name})` : '';
1844
1854
  console.log(` Port ${port.port}${scriptLabel} - ${port.config_source}`);
1845
1855
  });
@@ -1855,7 +1865,7 @@ program
1855
1865
  for (const project of projects) {
1856
1866
  const ports = db.getProjectPorts(project.id);
1857
1867
  if (ports.length > 0) {
1858
- const portList = ports.map(p => p.port).sort((a, b) => a - b).join(', ');
1868
+ const portList = ports.map((p) => p.port).sort((a, b) => a - b).join(', ');
1859
1869
  console.log(`${project.name}: ${portList}`);
1860
1870
  }
1861
1871
  }
@@ -2127,118 +2137,11 @@ program
2127
2137
  process.exit(1);
2128
2138
  }
2129
2139
  });
2130
- // MCP Server command
2131
- program
2132
- .command('mcp')
2133
- .description('Start Projax MCP (Model Context Protocol) server for AI tools')
2134
- .action(async () => {
2135
- try {
2136
- // Check if MCP server package is available
2137
- const mcpServerPath = path.join(__dirname, '..', '..', 'mcp-server', 'dist', 'index.js');
2138
- const isLocalDev = fs.existsSync(mcpServerPath);
2139
- if (!isLocalDev) {
2140
- // Try to find in node_modules (for global install)
2141
- try {
2142
- require.resolve('@projax/mcp-server');
2143
- const { spawn } = require('child_process');
2144
- const mcpServer = spawn('projax-mcp', [], {
2145
- stdio: 'inherit',
2146
- env: process.env,
2147
- });
2148
- mcpServer.on('exit', (code) => {
2149
- process.exit(code || 0);
2150
- });
2151
- return;
2152
- }
2153
- catch (error) {
2154
- console.error('Error: MCP server not found.');
2155
- console.error('\nThe MCP server is not built or installed.');
2156
- console.error('Please run: npm run build:mcp-server');
2157
- process.exit(1);
2158
- }
2159
- }
2160
- // Local development mode
2161
- const { spawn } = require('child_process');
2162
- const mcpServer = spawn('node', [mcpServerPath], {
2163
- stdio: 'inherit',
2164
- env: process.env,
2165
- });
2166
- mcpServer.on('exit', (code) => {
2167
- process.exit(code || 0);
2168
- });
2169
- }
2170
- catch (error) {
2171
- console.error('Error starting MCP server:', error instanceof Error ? error.message : error);
2172
- process.exit(1);
2173
- }
2174
- });
2175
- // MCP Config command
2176
- program
2177
- .command('mcp-config')
2178
- .description('Display MCP server configuration for Cursor or VS Code')
2179
- .option('--cursor', 'Show Cursor-specific configuration')
2180
- .option('--vscode', 'Show VS Code-specific configuration')
2181
- .action(async (options) => {
2182
- try {
2183
- // Find prx command path
2184
- let prxPath = 'prx';
2185
- try {
2186
- prxPath = (0, child_process_1.execSync)('which prx', { encoding: 'utf-8' }).trim();
2187
- }
2188
- catch {
2189
- // If which fails, use 'prx' as default
2190
- }
2191
- const cursorConfig = {
2192
- mcpServers: {
2193
- projax: {
2194
- command: prxPath,
2195
- args: ['mcp'],
2196
- },
2197
- },
2198
- };
2199
- const vscodeConfig = {
2200
- "mcp.servers": {
2201
- projax: {
2202
- command: prxPath,
2203
- args: ['mcp'],
2204
- },
2205
- },
2206
- };
2207
- console.log('\n╔═══════════════════════════════════════════════════════╗');
2208
- console.log('║ Projax MCP Server Configuration ║');
2209
- console.log('╚═══════════════════════════════════════════════════════╝\n');
2210
- if (options.vscode) {
2211
- console.log('VS Code Configuration (settings.json):');
2212
- console.log(JSON.stringify(vscodeConfig, null, 2));
2213
- }
2214
- else if (options.cursor) {
2215
- console.log('Cursor Configuration (~/.cursor/mcp.json):');
2216
- console.log(JSON.stringify(cursorConfig, null, 2));
2217
- }
2218
- else {
2219
- // Show both
2220
- console.log('Cursor Configuration (~/.cursor/mcp.json):');
2221
- console.log(JSON.stringify(cursorConfig, null, 2));
2222
- console.log('\nVS Code Configuration (settings.json):');
2223
- console.log(JSON.stringify(vscodeConfig, null, 2));
2224
- }
2225
- console.log('\n📝 Instructions:');
2226
- console.log('1. Copy the configuration above');
2227
- console.log('2. For Cursor: Paste into ~/.cursor/mcp.json (or use Cursor Settings > MCP)');
2228
- console.log('3. For VS Code: Paste into settings.json (or use MCP extension)');
2229
- console.log('4. Restart your editor');
2230
- console.log('\n💡 Test with: Ask your AI assistant about your current project context');
2231
- }
2232
- catch (error) {
2233
- console.error('Error displaying configuration:', error instanceof Error ? error.message : error);
2234
- process.exit(1);
2235
- }
2236
- });
2237
2140
  // Handle script execution before parsing
2238
2141
  // Check if first argument is not a known command
2239
2142
  (async () => {
2240
2143
  const args = process.argv.slice(2);
2241
- const knownCommands = ['prxi', 'i', 'add', 'list', 'scan', 'remove', 'rn', 'rename', 'cd', 'pwd', 'run', 'ps', 'stop', 'web', 'desktop', 'ui', 'scripts', 'scan-ports', 'api', 'docs', 'vscode-extension', 'extension', 'ext', 'desc', 'description', 'tags', 'open', 'files', 'urls', 'workspace', 'ws', 'backup', 'restore', 'mcp', 'mcp-config', '--help', '-h', '--version', '-V'];
2144
+ const knownCommands = ['prxi', 'i', 'add', 'list', 'scan', 'remove', 'rn', 'rename', 'cd', 'pwd', 'run', 'ps', 'stop', 'web', 'desktop', 'ui', 'scripts', 'scan-ports', 'api', 'docs', 'vscode-extension', 'extension', 'ext', 'desc', 'description', 'tags', 'open', 'files', 'urls', 'workspace', 'ws', 'backup', 'restore', '--help', '-h', '--version', '-V'];
2242
2145
  // If we have at least 1 argument and first is not a known command, treat as project identifier
2243
2146
  if (args.length >= 1 && !knownCommands.includes(args[0])) {
2244
2147
  const projectIdentifier = args[0];
@@ -15,15 +15,25 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.extractPortsFromProject = void 0;
36
+ exports.extractPortsFromProject = extractPortsFromProject;
27
37
  const fs = __importStar(require("fs"));
28
38
  const path = __importStar(require("path"));
29
39
  /**
@@ -56,7 +66,6 @@ async function extractPortsFromProject(projectPath) {
56
66
  const uniquePorts = Array.from(new Map(ports.map(p => [`${p.port}-${p.script || ''}`, p])).values());
57
67
  return uniquePorts;
58
68
  }
59
- exports.extractPortsFromProject = extractPortsFromProject;
60
69
  /**
61
70
  * Extract ports from package.json scripts
62
71
  */
@@ -15,15 +15,27 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.shouldRescanPorts = exports.scanAllProjectPorts = exports.scanProjectPorts = void 0;
36
+ exports.scanProjectPorts = scanProjectPorts;
37
+ exports.scanAllProjectPorts = scanAllProjectPorts;
38
+ exports.shouldRescanPorts = shouldRescanPorts;
27
39
  const core_bridge_1 = require("./core-bridge");
28
40
  const port_extractor_1 = require("./port-extractor");
29
41
  const fs = __importStar(require("fs"));
@@ -48,7 +60,6 @@ async function scanProjectPorts(projectId) {
48
60
  db.addProjectPort(projectId, portInfo.port, portInfo.source, portInfo.script);
49
61
  }
50
62
  }
51
- exports.scanProjectPorts = scanProjectPorts;
52
63
  /**
53
64
  * Scan ports for all projects
54
65
  */
@@ -65,7 +76,6 @@ async function scanAllProjectPorts() {
65
76
  }
66
77
  }
67
78
  }
68
- exports.scanAllProjectPorts = scanAllProjectPorts;
69
79
  /**
70
80
  * Check if ports need to be rescanned (stale check)
71
81
  * Returns true if ports haven't been scanned in the last 24 hours
@@ -78,7 +88,6 @@ function shouldRescanPorts(projectId) {
78
88
  }
79
89
  // Check if any port was detected 24 hours ago or older
80
90
  const twentyFourHoursAgo = Math.floor(Date.now() / 1000) - (24 * 60 * 60);
81
- const needsRescan = ports.some(port => (port.last_detected || 0) <= twentyFourHoursAgo);
91
+ const needsRescan = ports.some((port) => (port.last_detected || 0) <= twentyFourHoursAgo);
82
92
  return needsRescan;
83
93
  }
84
- exports.shouldRescanPorts = shouldRescanPorts;
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.extractPortFromError = exports.killProcessOnPort = exports.getProcessOnPort = exports.detectPortInUse = void 0;
3
+ exports.detectPortInUse = detectPortInUse;
4
+ exports.getProcessOnPort = getProcessOnPort;
5
+ exports.killProcessOnPort = killProcessOnPort;
6
+ exports.extractPortFromError = extractPortFromError;
4
7
  const child_process_1 = require("child_process");
5
8
  const util_1 = require("util");
6
9
  const execAsync = (0, util_1.promisify)(child_process_1.exec);
@@ -40,7 +43,6 @@ async function detectPortInUse(port) {
40
43
  return false;
41
44
  }
42
45
  }
43
- exports.detectPortInUse = detectPortInUse;
44
46
  /**
45
47
  * Get process information for a port (cross-platform)
46
48
  */
@@ -102,7 +104,6 @@ async function getProcessOnPort(port) {
102
104
  return null;
103
105
  }
104
106
  }
105
- exports.getProcessOnPort = getProcessOnPort;
106
107
  /**
107
108
  * Kill process(es) using a port (cross-platform)
108
109
  */
@@ -168,7 +169,6 @@ async function killProcessOnPort(port) {
168
169
  return false;
169
170
  }
170
171
  }
171
- exports.killProcessOnPort = killProcessOnPort;
172
172
  /**
173
173
  * Extract port number from error messages
174
174
  * Handles common port conflict error patterns
@@ -198,4 +198,3 @@ function extractPortFromError(error) {
198
198
  }
199
199
  return null;
200
200
  }
201
- exports.extractPortFromError = extractPortFromError;
package/dist/prxi.d.ts ADDED
@@ -0,0 +1 @@
1
+ export {};