@axhub/genie 0.2.1 → 0.2.3

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 (73) hide show
  1. package/dist/assets/App-Ddoy7BIl.js +484 -0
  2. package/dist/assets/{ReviewApp-DIT2yWk-.js → ReviewApp-DOAHmxVe.js} +1 -1
  3. package/dist/assets/{_basePickBy-Dz3NcIVK.js → _basePickBy-CAs6HGVw.js} +1 -1
  4. package/dist/assets/{_baseUniq-DON_Sg7x.js → _baseUniq-qvm36g_v.js} +1 -1
  5. package/dist/assets/{arc-Y4G80q-l.js → arc-60yKSsVt.js} +1 -1
  6. package/dist/assets/{architectureDiagram-2XIMDMQ5-D_qR4657.js → architectureDiagram-2XIMDMQ5-C5Ik86xM.js} +1 -1
  7. package/dist/assets/{blockDiagram-WCTKOSBZ-NsmAlV5_.js → blockDiagram-WCTKOSBZ-CGqfB5z7.js} +1 -1
  8. package/dist/assets/{c4Diagram-IC4MRINW-cbOJM4yr.js → c4Diagram-IC4MRINW-C02h4qfL.js} +1 -1
  9. package/dist/assets/channel-B3JUshOm.js +1 -0
  10. package/dist/assets/{chunk-4BX2VUAB-bLBhl74J.js → chunk-4BX2VUAB-BVVwu3tU.js} +1 -1
  11. package/dist/assets/{chunk-55IACEB6-D8kNkDUO.js → chunk-55IACEB6-Dyehrd1R.js} +1 -1
  12. package/dist/assets/{chunk-FMBD7UC4-BjR6UbXB.js → chunk-FMBD7UC4-ByEz0wOl.js} +1 -1
  13. package/dist/assets/{chunk-JSJVCQXG-luNqWn64.js → chunk-JSJVCQXG-BXHZvm_e.js} +1 -1
  14. package/dist/assets/{chunk-KX2RTZJC-CNnKm6dK.js → chunk-KX2RTZJC-DJPATr22.js} +1 -1
  15. package/dist/assets/{chunk-NQ4KR5QH-Cp9gb43u.js → chunk-NQ4KR5QH-RgZbucc4.js} +1 -1
  16. package/dist/assets/{chunk-QZHKN3VN-HlVYo2Oq.js → chunk-QZHKN3VN-DMIXCLGh.js} +1 -1
  17. package/dist/assets/{chunk-WL4C6EOR-CjSZoOGO.js → chunk-WL4C6EOR-Bg4bzqqP.js} +1 -1
  18. package/dist/assets/classDiagram-VBA2DB6C-DZEYhtwP.js +1 -0
  19. package/dist/assets/classDiagram-v2-RAHNMMFH-DZEYhtwP.js +1 -0
  20. package/dist/assets/clone-B2sPtF_O.js +1 -0
  21. package/dist/assets/{cose-bilkent-S5V4N54A-DZWRjeEd.js → cose-bilkent-S5V4N54A-BZeDiX7Y.js} +1 -1
  22. package/dist/assets/{dagre-KLK3FWXG-yAzUmqI7.js → dagre-KLK3FWXG-BrwI_1JI.js} +1 -1
  23. package/dist/assets/{diagram-E7M64L7V-CvzlIvDJ.js → diagram-E7M64L7V-CxAlKNFG.js} +1 -1
  24. package/dist/assets/{diagram-IFDJBPK2-DFMIJpuM.js → diagram-IFDJBPK2-VClYIYo3.js} +1 -1
  25. package/dist/assets/{diagram-P4PSJMXO-KL-J3gyb.js → diagram-P4PSJMXO-CYRL57cP.js} +1 -1
  26. package/dist/assets/{erDiagram-INFDFZHY-BXszHbTM.js → erDiagram-INFDFZHY-ZySJDqNG.js} +1 -1
  27. package/dist/assets/{flowDiagram-PKNHOUZH-Ba43NVp6.js → flowDiagram-PKNHOUZH-Ct9-q2zS.js} +1 -1
  28. package/dist/assets/{ganttDiagram-A5KZAMGK-uLHfhCrg.js → ganttDiagram-A5KZAMGK-Qn4VUvVR.js} +1 -1
  29. package/dist/assets/{gitGraphDiagram-K3NZZRJ6-BTEuFaiL.js → gitGraphDiagram-K3NZZRJ6-CaveIlg3.js} +1 -1
  30. package/dist/assets/{graph-h2nuWjx4.js → graph-B1tvcjpq.js} +1 -1
  31. package/dist/assets/{highlighted-body-TPN3WLV5-C6BY7XZJ.js → highlighted-body-TPN3WLV5-Cx4aCKGT.js} +1 -1
  32. package/dist/assets/index-BFX9lxRB.css +1 -0
  33. package/dist/assets/index-Q-dfaLIv.js +2 -0
  34. package/dist/assets/{infoDiagram-LFFYTUFH-BOLfvCIq.js → infoDiagram-LFFYTUFH-FNMZEktA.js} +1 -1
  35. package/dist/assets/{ishikawaDiagram-PHBUUO56-BRzQ1ee5.js → ishikawaDiagram-PHBUUO56-D9db2Pov.js} +1 -1
  36. package/dist/assets/{journeyDiagram-4ABVD52K-DXm_VcMy.js → journeyDiagram-4ABVD52K-BzYKMYOM.js} +1 -1
  37. package/dist/assets/{kanban-definition-K7BYSVSG-D_oyzopl.js → kanban-definition-K7BYSVSG-qC9Xmf0j.js} +1 -1
  38. package/dist/assets/{layout-Q8YoR_E1.js → layout-dbzqH_4Q.js} +1 -1
  39. package/dist/assets/{linear-B3qNg7di.js → linear-HOAktq-3.js} +1 -1
  40. package/dist/assets/{mermaid-O7DHMXV3-BVZ_4MKo.js → mermaid-O7DHMXV3-CazKksAH.js} +5 -5
  41. package/dist/assets/{mindmap-definition-YRQLILUH-CjulgYdi.js → mindmap-definition-YRQLILUH-DlfKip6Z.js} +1 -1
  42. package/dist/assets/{pieDiagram-SKSYHLDU-8VzrefxA.js → pieDiagram-SKSYHLDU-BYv9DU8d.js} +1 -1
  43. package/dist/assets/{quadrantDiagram-337W2JSQ-CFh-ijm2.js → quadrantDiagram-337W2JSQ-l21TFCGi.js} +1 -1
  44. package/dist/assets/{requirementDiagram-Z7DCOOCP-BNPlTs5Q.js → requirementDiagram-Z7DCOOCP-DwM1YiVc.js} +1 -1
  45. package/dist/assets/{sankeyDiagram-WA2Y5GQK-C5l_hYst.js → sankeyDiagram-WA2Y5GQK-DaSSXYkb.js} +1 -1
  46. package/dist/assets/{sequenceDiagram-2WXFIKYE-B4a_rQw8.js → sequenceDiagram-2WXFIKYE-BPBhAefs.js} +1 -1
  47. package/dist/assets/{stateDiagram-RAJIS63D-Bt4mMmKB.js → stateDiagram-RAJIS63D-Cs4xILlc.js} +1 -1
  48. package/dist/assets/stateDiagram-v2-FVOUBMTO-DeUj7MLk.js +1 -0
  49. package/dist/assets/{timeline-definition-YZTLITO2-CLYvSw_R.js → timeline-definition-YZTLITO2-BPnQPJ2R.js} +1 -1
  50. package/dist/assets/{treemap-KZPCXAKY-ksND0hZK.js → treemap-KZPCXAKY-BRWkr5mn.js} +1 -1
  51. package/dist/assets/{vennDiagram-LZ73GAT5-CaQg4oZK.js → vennDiagram-LZ73GAT5-DioBg_XD.js} +1 -1
  52. package/dist/assets/{xychartDiagram-JWTSCODW-C8dCbTeM.js → xychartDiagram-JWTSCODW-Bh2R2Uzh.js} +1 -1
  53. package/dist/index.html +2 -2
  54. package/package.json +2 -2
  55. package/server/cli.js +1 -1
  56. package/server/database/db.js +0 -45
  57. package/server/external-agent/service.js +39 -490
  58. package/server/external-agent/service.test.js +12 -0
  59. package/server/index.js +21 -43
  60. package/server/middleware/auth.js +15 -1
  61. package/server/routes/agent.js +15 -1136
  62. package/server/routes/cli-auth.js +60 -52
  63. package/server/routes/projects.js +10 -304
  64. package/server/routes/settings.js +4 -0
  65. package/server/routes/user.js +0 -102
  66. package/dist/assets/App-BfaNALgf.js +0 -504
  67. package/dist/assets/channel-C6KNnXlA.js +0 -1
  68. package/dist/assets/classDiagram-VBA2DB6C-BQlzzlH7.js +0 -1
  69. package/dist/assets/classDiagram-v2-RAHNMMFH-BQlzzlH7.js +0 -1
  70. package/dist/assets/clone-DMxS3qWP.js +0 -1
  71. package/dist/assets/index-2198VgsK.css +0 -1
  72. package/dist/assets/index-C6Bb2jGF.js +0 -2
  73. package/dist/assets/stateDiagram-v2-FVOUBMTO-6NYMazfq.js +0 -1
package/server/index.js CHANGED
@@ -155,52 +155,29 @@ function compareSemver(v1, v2) {
155
155
  }
156
156
 
157
157
  function readLatestVersionFromNpmRegistry() {
158
- return new Promise((resolve, reject) => {
159
- const npmCommand = getNpmCommand();
160
- const child = spawn(npmCommand, ['view', UPDATE_PACKAGE_NAME, 'version', 'time', '--json'], {
161
- cwd: path.join(__dirname, '..'),
162
- env: process.env
163
- });
164
-
165
- let output = '';
166
- let errorOutput = '';
167
-
168
- child.stdout.on('data', (data) => {
169
- output += data.toString();
170
- });
171
-
172
- child.stderr.on('data', (data) => {
173
- errorOutput += data.toString();
174
- });
175
-
176
- child.on('close', (code) => {
177
- if (code !== 0) {
178
- reject(new Error(errorOutput || `npm view exited with code ${code}`));
179
- return;
158
+ return (async () => {
159
+ const registryUrl = `https://registry.npmjs.org/${encodeURIComponent(UPDATE_PACKAGE_NAME)}`;
160
+ const response = await fetch(registryUrl, {
161
+ headers: {
162
+ Accept: 'application/json'
180
163
  }
164
+ });
181
165
 
182
- try {
183
- const parsed = JSON.parse(output.trim());
184
- const latestVersion = parsed?.version;
185
- if (!latestVersion) {
186
- reject(new Error('npm view returned no version'));
187
- return;
188
- }
166
+ if (!response.ok) {
167
+ throw new Error(`npm registry request failed: ${response.status}`);
168
+ }
189
169
 
190
- const publishedAt = parsed?.time?.[latestVersion] || parsed?.time?.modified || null;
191
- resolve({
192
- latestVersion,
193
- publishedAt
194
- });
195
- } catch (error) {
196
- reject(new Error(`failed to parse npm view output: ${error.message}`));
197
- }
198
- });
170
+ const parsed = await response.json();
171
+ const latestVersion = parsed?.['dist-tags']?.latest;
172
+ if (!latestVersion) {
173
+ throw new Error('npm registry returned no latest version');
174
+ }
199
175
 
200
- child.on('error', (error) => {
201
- reject(error);
202
- });
203
- });
176
+ return {
177
+ latestVersion,
178
+ publishedAt: parsed?.time?.[latestVersion] || parsed?.time?.modified || null
179
+ };
180
+ })();
204
181
  }
205
182
 
206
183
  async function getSystemVersionInfo(forceRefresh = false) {
@@ -579,7 +556,8 @@ app.post('/api/system/update', authenticateToken, async (req, res) => {
579
556
  // Run npm global update command
580
557
  const child = spawn(npmCommand, updateArgs, {
581
558
  cwd: projectRoot,
582
- env: process.env
559
+ env: process.env,
560
+ stdio: ['ignore', 'pipe', 'pipe']
583
561
  });
584
562
 
585
563
  let output = '';
@@ -5,6 +5,11 @@ import { IS_PLATFORM } from '../constants/config.js';
5
5
  // Get JWT secret from environment or use default (for development)
6
6
  const JWT_SECRET = process.env.JWT_SECRET || 'claude-ui-dev-secret-change-in-production';
7
7
 
8
+ const PUBLIC_GET_ROUTE_PATTERNS = [
9
+ /^\/api\/system\/version\/?$/i,
10
+ /^\/api\/session-core\/providers(?:\/[^/]+)?\/?$/i,
11
+ ];
12
+
8
13
  // Optional API key middleware
9
14
  const validateApiKey = (req, res, next) => {
10
15
  // Skip API key validation if not configured
@@ -21,6 +26,15 @@ const validateApiKey = (req, res, next) => {
21
26
 
22
27
  // JWT authentication middleware
23
28
  const authenticateToken = async (req, res, next) => {
29
+ const requestPath = String(req.originalUrl || req.url || req.path || '').split('?')[0];
30
+
31
+ if (
32
+ req.method === 'GET'
33
+ && PUBLIC_GET_ROUTE_PATTERNS.some((pattern) => pattern.test(requestPath))
34
+ ) {
35
+ return next();
36
+ }
37
+
24
38
  // Platform mode: use single database user
25
39
  if (IS_PLATFORM) {
26
40
  try {
@@ -114,4 +128,4 @@ export {
114
128
  generateToken,
115
129
  authenticateWebSocket,
116
130
  JWT_SECRET
117
- };
131
+ };