@becrafter/prompt-manager 0.0.19 → 0.1.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.
Files changed (104) hide show
  1. package/README.md +145 -234
  2. package/app/desktop/assets/app.1.png +0 -0
  3. package/app/desktop/assets/app.png +0 -0
  4. package/app/desktop/assets/icons/icon.icns +0 -0
  5. package/app/desktop/assets/icons/icon.ico +0 -0
  6. package/app/desktop/assets/icons/icon.png +0 -0
  7. package/app/desktop/assets/icons/tray.png +0 -0
  8. package/app/desktop/assets/tray.1.png +0 -0
  9. package/app/desktop/assets/tray.png +0 -0
  10. package/app/desktop/main.js +27 -0
  11. package/app/desktop/package-lock.json +201 -4
  12. package/app/desktop/package.json +23 -29
  13. package/app/desktop/src/services/module-loader.js +43 -22
  14. package/app/desktop/src/services/runtime-manager.js +172 -23
  15. package/app/desktop/src/services/update-manager.js +6 -7
  16. package/app/desktop/src/ui/admin-window-manager.js +757 -0
  17. package/app/desktop/src/ui/splash-manager.js +253 -0
  18. package/app/desktop/src/ui/tray-manager.js +8 -24
  19. package/app/desktop/src/utils/icon-manager.js +39 -47
  20. package/app/desktop/src/utils/resource-paths.js +0 -23
  21. package/app/desktop/src/utils/resource-sync.js +260 -0
  22. package/app/desktop/src/utils/runtime-sync.js +241 -0
  23. package/examples/prompts/recommend/human_3-0_growth_diagnostic_coach_prompt.yaml +105 -0
  24. package/package.json +16 -13
  25. package/packages/admin-ui/.babelrc +3 -0
  26. package/packages/admin-ui/admin.html +237 -4784
  27. package/packages/admin-ui/css/main.css +2592 -0
  28. package/packages/admin-ui/css/recommended-prompts.css +610 -0
  29. package/packages/admin-ui/package-lock.json +6973 -0
  30. package/packages/admin-ui/package.json +36 -0
  31. package/packages/admin-ui/src/codemirror.js +53 -0
  32. package/packages/admin-ui/src/index.js +3188 -0
  33. package/packages/admin-ui/webpack.config.js +76 -0
  34. package/packages/resources/tools/chrome-devtools/README.md +310 -0
  35. package/packages/resources/tools/chrome-devtools/chrome-devtools.tool.js +1703 -0
  36. package/packages/resources/tools/file-reader/README.md +289 -0
  37. package/packages/resources/tools/file-reader/file-reader.tool.js +1545 -0
  38. package/packages/resources/tools/filesystem/README.md +359 -0
  39. package/packages/resources/tools/filesystem/filesystem.tool.js +514 -160
  40. package/packages/resources/tools/ollama-remote/README.md +192 -0
  41. package/packages/resources/tools/ollama-remote/ollama-remote.tool.js +421 -0
  42. package/packages/resources/tools/pdf-reader/README.md +236 -0
  43. package/packages/resources/tools/pdf-reader/pdf-reader.tool.js +565 -0
  44. package/packages/resources/tools/playwright/README.md +306 -0
  45. package/packages/resources/tools/playwright/playwright.tool.js +1186 -0
  46. package/packages/resources/tools/todolist/README.md +394 -0
  47. package/packages/resources/tools/todolist/todolist.tool.js +1312 -0
  48. package/packages/server/README.md +142 -0
  49. package/packages/server/api/admin.routes.js +42 -11
  50. package/packages/server/api/surge.routes.js +43 -0
  51. package/packages/server/app.js +119 -14
  52. package/packages/server/index.js +39 -0
  53. package/packages/server/mcp/mcp.server.js +324 -105
  54. package/packages/server/mcp/sequential-thinking.handler.js +318 -0
  55. package/packages/server/mcp/think-plan.handler.js +274 -0
  56. package/packages/server/middlewares/auth.middleware.js +6 -0
  57. package/packages/server/package.json +51 -0
  58. package/packages/server/server.js +37 -1
  59. package/packages/server/toolm/index.js +9 -0
  60. package/packages/server/toolm/package-installer.service.js +267 -0
  61. package/packages/server/toolm/test-tools.js +264 -0
  62. package/packages/server/toolm/tool-context.service.js +334 -0
  63. package/packages/server/toolm/tool-dependency.service.js +168 -0
  64. package/packages/server/toolm/tool-description-generator-optimized.service.js +375 -0
  65. package/packages/server/toolm/tool-description-generator.service.js +312 -0
  66. package/packages/server/toolm/tool-environment.service.js +200 -0
  67. package/packages/server/toolm/tool-execution.service.js +277 -0
  68. package/packages/server/toolm/tool-loader.service.js +219 -0
  69. package/packages/server/toolm/tool-logger.service.js +223 -0
  70. package/packages/server/toolm/tool-manager.handler.js +65 -0
  71. package/packages/server/toolm/tool-manual-generator.service.js +389 -0
  72. package/packages/server/toolm/tool-mode-handlers.service.js +224 -0
  73. package/packages/server/toolm/tool-storage.service.js +111 -0
  74. package/packages/server/toolm/tool-sync.service.js +138 -0
  75. package/packages/server/toolm/tool-utils.js +20 -0
  76. package/packages/server/toolm/tool-yaml-parser.service.js +81 -0
  77. package/packages/server/toolm/validate-system.js +421 -0
  78. package/packages/server/utils/config.js +49 -5
  79. package/packages/server/utils/util.js +65 -10
  80. package/scripts/build-icons.js +99 -69
  81. package/scripts/build.sh +57 -0
  82. package/scripts/surge/CNAME +1 -0
  83. package/scripts/surge/README.md +47 -0
  84. package/scripts/surge/package-lock.json +34 -0
  85. package/scripts/surge/package.json +20 -0
  86. package/scripts/surge/sync-to-surge.js +151 -0
  87. package/app/desktop/assets/icons/icon_1024x1024.png +0 -0
  88. package/app/desktop/assets/icons/icon_128x128.png +0 -0
  89. package/app/desktop/assets/icons/icon_16x16.png +0 -0
  90. package/app/desktop/assets/icons/icon_24x24.png +0 -0
  91. package/app/desktop/assets/icons/icon_256x256.png +0 -0
  92. package/app/desktop/assets/icons/icon_32x32.png +0 -0
  93. package/app/desktop/assets/icons/icon_48x48.png +0 -0
  94. package/app/desktop/assets/icons/icon_512x512.png +0 -0
  95. package/app/desktop/assets/icons/icon_64x64.png +0 -0
  96. package/app/desktop/assets/icons/icon_96x96.png +0 -0
  97. package/packages/admin-ui/js/closebrackets.min.js +0 -8
  98. package/packages/admin-ui/js/codemirror.min.js +0 -8
  99. package/packages/admin-ui/js/js-yaml.min.js +0 -2
  100. package/packages/admin-ui/js/markdown.min.js +0 -8
  101. package/packages/resources/tools/index.js +0 -16
  102. package/packages/server/mcp/toolx.handler.js +0 -131
  103. package/scripts/icns-builder/package.json +0 -12
  104. /package/packages/server/mcp/{mcp.handler.js → prompt.handler.js} +0 -0
@@ -1,14 +1,16 @@
1
1
  {
2
2
  "name": "@becrafter/prompt-desktop",
3
- "version": "0.0.19",
3
+ "version": "0.1.2",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@becrafter/prompt-desktop",
9
- "version": "0.0.19",
9
+ "version": "0.1.2",
10
10
  "dependencies": {
11
+ "@becrafter/prompt-manager-core": "file:../../packages/server",
11
12
  "@modelcontextprotocol/sdk": "^1.20.2",
13
+ "http-proxy-middleware": "^3.0.5",
12
14
  "tar": "^7.5.2"
13
15
  },
14
16
  "devDependencies": {
@@ -16,6 +18,31 @@
16
18
  "electron-builder": "^24.13.3"
17
19
  }
18
20
  },
21
+ "../../packages/server": {
22
+ "name": "@becrafter/prompt-manager-core",
23
+ "version": "0.0.24",
24
+ "license": "MIT",
25
+ "dependencies": {
26
+ "@electron/asar": "^4.0.1",
27
+ "@modelcontextprotocol/sdk": "^1.20.2",
28
+ "@npmcli/arborist": "^9.0.0",
29
+ "cors": "^2.8.5",
30
+ "dotenv": "^17.2.3",
31
+ "express": "^5.1.0",
32
+ "fs-extra": "^11.2.0",
33
+ "http-proxy-middleware": "^3.0.5",
34
+ "js-yaml": "^4.1.0",
35
+ "yaml": "^2.4.1",
36
+ "zod": "^3.23.8"
37
+ },
38
+ "devDependencies": {
39
+ "esbuild": "^0.27.0"
40
+ }
41
+ },
42
+ "node_modules/@becrafter/prompt-manager-core": {
43
+ "resolved": "../../packages/server",
44
+ "link": true
45
+ },
19
46
  "node_modules/@develar/schema-utils": {
20
47
  "version": "2.6.5",
21
48
  "resolved": "https://registry.npmmirror.com/@develar/schema-utils/-/schema-utils-2.6.5.tgz",
@@ -610,6 +637,15 @@
610
637
  "dev": true,
611
638
  "license": "MIT"
612
639
  },
640
+ "node_modules/@types/http-proxy": {
641
+ "version": "1.17.17",
642
+ "resolved": "https://registry.npmmirror.com/@types/http-proxy/-/http-proxy-1.17.17.tgz",
643
+ "integrity": "sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==",
644
+ "license": "MIT",
645
+ "dependencies": {
646
+ "@types/node": "*"
647
+ }
648
+ },
613
649
  "node_modules/@types/keyv": {
614
650
  "version": "3.1.4",
615
651
  "resolved": "https://registry.npmmirror.com/@types/keyv/-/keyv-3.1.4.tgz",
@@ -631,7 +667,6 @@
631
667
  "version": "22.19.0",
632
668
  "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.0.tgz",
633
669
  "integrity": "sha512-xpr/lmLPQEj+TUnHmR+Ab91/glhJvsqcjB+yY0Ix9GO70H6Lb4FHH5GeqdOE5btAx7eIMwuHkp4H2MSkLcqWbA==",
634
- "dev": true,
635
670
  "license": "MIT",
636
671
  "dependencies": {
637
672
  "undici-types": "~6.21.0"
@@ -1178,6 +1213,18 @@
1178
1213
  "balanced-match": "^1.0.0"
1179
1214
  }
1180
1215
  },
1216
+ "node_modules/braces": {
1217
+ "version": "3.0.3",
1218
+ "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.3.tgz",
1219
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
1220
+ "license": "MIT",
1221
+ "dependencies": {
1222
+ "fill-range": "^7.1.1"
1223
+ },
1224
+ "engines": {
1225
+ "node": ">=8"
1226
+ }
1227
+ },
1181
1228
  "node_modules/buffer": {
1182
1229
  "version": "5.7.1",
1183
1230
  "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz",
@@ -2338,6 +2385,12 @@
2338
2385
  "node": ">= 0.6"
2339
2386
  }
2340
2387
  },
2388
+ "node_modules/eventemitter3": {
2389
+ "version": "4.0.7",
2390
+ "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz",
2391
+ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
2392
+ "license": "MIT"
2393
+ },
2341
2394
  "node_modules/eventsource": {
2342
2395
  "version": "3.0.7",
2343
2396
  "resolved": "https://registry.npmmirror.com/eventsource/-/eventsource-3.0.7.tgz",
@@ -2480,6 +2533,18 @@
2480
2533
  "minimatch": "^5.0.1"
2481
2534
  }
2482
2535
  },
2536
+ "node_modules/fill-range": {
2537
+ "version": "7.1.1",
2538
+ "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz",
2539
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
2540
+ "license": "MIT",
2541
+ "dependencies": {
2542
+ "to-regex-range": "^5.0.1"
2543
+ },
2544
+ "engines": {
2545
+ "node": ">=8"
2546
+ }
2547
+ },
2483
2548
  "node_modules/finalhandler": {
2484
2549
  "version": "2.1.0",
2485
2550
  "resolved": "https://registry.npmmirror.com/finalhandler/-/finalhandler-2.1.0.tgz",
@@ -2497,6 +2562,26 @@
2497
2562
  "node": ">= 0.8"
2498
2563
  }
2499
2564
  },
2565
+ "node_modules/follow-redirects": {
2566
+ "version": "1.15.11",
2567
+ "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.11.tgz",
2568
+ "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==",
2569
+ "funding": [
2570
+ {
2571
+ "type": "individual",
2572
+ "url": "https://github.com/sponsors/RubenVerborgh"
2573
+ }
2574
+ ],
2575
+ "license": "MIT",
2576
+ "engines": {
2577
+ "node": ">=4.0"
2578
+ },
2579
+ "peerDependenciesMeta": {
2580
+ "debug": {
2581
+ "optional": true
2582
+ }
2583
+ }
2584
+ },
2500
2585
  "node_modules/foreground-child": {
2501
2586
  "version": "3.3.1",
2502
2587
  "resolved": "https://registry.npmmirror.com/foreground-child/-/foreground-child-3.3.1.tgz",
@@ -2951,6 +3036,20 @@
2951
3036
  "node": ">= 0.8"
2952
3037
  }
2953
3038
  },
3039
+ "node_modules/http-proxy": {
3040
+ "version": "1.18.1",
3041
+ "resolved": "https://registry.npmmirror.com/http-proxy/-/http-proxy-1.18.1.tgz",
3042
+ "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
3043
+ "license": "MIT",
3044
+ "dependencies": {
3045
+ "eventemitter3": "^4.0.0",
3046
+ "follow-redirects": "^1.0.0",
3047
+ "requires-port": "^1.0.0"
3048
+ },
3049
+ "engines": {
3050
+ "node": ">=8.0.0"
3051
+ }
3052
+ },
2954
3053
  "node_modules/http-proxy-agent": {
2955
3054
  "version": "5.0.0",
2956
3055
  "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
@@ -2966,6 +3065,23 @@
2966
3065
  "node": ">= 6"
2967
3066
  }
2968
3067
  },
3068
+ "node_modules/http-proxy-middleware": {
3069
+ "version": "3.0.5",
3070
+ "resolved": "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-3.0.5.tgz",
3071
+ "integrity": "sha512-GLZZm1X38BPY4lkXA01jhwxvDoOkkXqjgVyUzVxiEK4iuRu03PZoYHhHRwxnfhQMDuaxi3vVri0YgSro/1oWqg==",
3072
+ "license": "MIT",
3073
+ "dependencies": {
3074
+ "@types/http-proxy": "^1.17.15",
3075
+ "debug": "^4.3.6",
3076
+ "http-proxy": "^1.18.1",
3077
+ "is-glob": "^4.0.3",
3078
+ "is-plain-object": "^5.0.0",
3079
+ "micromatch": "^4.0.8"
3080
+ },
3081
+ "engines": {
3082
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
3083
+ }
3084
+ },
2969
3085
  "node_modules/http2-wrapper": {
2970
3086
  "version": "1.0.3",
2971
3087
  "resolved": "https://registry.npmmirror.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz",
@@ -3085,6 +3201,15 @@
3085
3201
  "is-ci": "bin.js"
3086
3202
  }
3087
3203
  },
3204
+ "node_modules/is-extglob": {
3205
+ "version": "2.1.1",
3206
+ "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
3207
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
3208
+ "license": "MIT",
3209
+ "engines": {
3210
+ "node": ">=0.10.0"
3211
+ }
3212
+ },
3088
3213
  "node_modules/is-fullwidth-code-point": {
3089
3214
  "version": "3.0.0",
3090
3215
  "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
@@ -3095,6 +3220,36 @@
3095
3220
  "node": ">=8"
3096
3221
  }
3097
3222
  },
3223
+ "node_modules/is-glob": {
3224
+ "version": "4.0.3",
3225
+ "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
3226
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
3227
+ "license": "MIT",
3228
+ "dependencies": {
3229
+ "is-extglob": "^2.1.1"
3230
+ },
3231
+ "engines": {
3232
+ "node": ">=0.10.0"
3233
+ }
3234
+ },
3235
+ "node_modules/is-number": {
3236
+ "version": "7.0.0",
3237
+ "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
3238
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
3239
+ "license": "MIT",
3240
+ "engines": {
3241
+ "node": ">=0.12.0"
3242
+ }
3243
+ },
3244
+ "node_modules/is-plain-object": {
3245
+ "version": "5.0.0",
3246
+ "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-5.0.0.tgz",
3247
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
3248
+ "license": "MIT",
3249
+ "engines": {
3250
+ "node": ">=0.10.0"
3251
+ }
3252
+ },
3098
3253
  "node_modules/is-promise": {
3099
3254
  "version": "4.0.0",
3100
3255
  "resolved": "https://registry.npmmirror.com/is-promise/-/is-promise-4.0.0.tgz",
@@ -3400,6 +3555,19 @@
3400
3555
  "url": "https://github.com/sponsors/sindresorhus"
3401
3556
  }
3402
3557
  },
3558
+ "node_modules/micromatch": {
3559
+ "version": "4.0.8",
3560
+ "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.8.tgz",
3561
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
3562
+ "license": "MIT",
3563
+ "dependencies": {
3564
+ "braces": "^3.0.3",
3565
+ "picomatch": "^2.3.1"
3566
+ },
3567
+ "engines": {
3568
+ "node": ">=8.6"
3569
+ }
3570
+ },
3403
3571
  "node_modules/mime": {
3404
3572
  "version": "2.6.0",
3405
3573
  "resolved": "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz",
@@ -3694,6 +3862,18 @@
3694
3862
  "dev": true,
3695
3863
  "license": "ISC"
3696
3864
  },
3865
+ "node_modules/picomatch": {
3866
+ "version": "2.3.1",
3867
+ "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
3868
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
3869
+ "license": "MIT",
3870
+ "engines": {
3871
+ "node": ">=8.6"
3872
+ },
3873
+ "funding": {
3874
+ "url": "https://github.com/sponsors/jonschlinkert"
3875
+ }
3876
+ },
3697
3877
  "node_modules/pkce-challenge": {
3698
3878
  "version": "5.0.0",
3699
3879
  "resolved": "https://registry.npmmirror.com/pkce-challenge/-/pkce-challenge-5.0.0.tgz",
@@ -3906,6 +4086,12 @@
3906
4086
  "node": ">=0.10.0"
3907
4087
  }
3908
4088
  },
4089
+ "node_modules/requires-port": {
4090
+ "version": "1.0.0",
4091
+ "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz",
4092
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
4093
+ "license": "MIT"
4094
+ },
3909
4095
  "node_modules/resolve-alpn": {
3910
4096
  "version": "1.2.1",
3911
4097
  "resolved": "https://registry.npmmirror.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz",
@@ -4507,6 +4693,18 @@
4507
4693
  "tmp": "^0.2.0"
4508
4694
  }
4509
4695
  },
4696
+ "node_modules/to-regex-range": {
4697
+ "version": "5.0.1",
4698
+ "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
4699
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
4700
+ "license": "MIT",
4701
+ "dependencies": {
4702
+ "is-number": "^7.0.0"
4703
+ },
4704
+ "engines": {
4705
+ "node": ">=8.0"
4706
+ }
4707
+ },
4510
4708
  "node_modules/toidentifier": {
4511
4709
  "version": "1.0.1",
4512
4710
  "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz",
@@ -4572,7 +4770,6 @@
4572
4770
  "version": "6.21.0",
4573
4771
  "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-6.21.0.tgz",
4574
4772
  "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
4575
- "dev": true,
4576
4773
  "license": "MIT"
4577
4774
  },
4578
4775
  "node_modules/universalify": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@becrafter/prompt-desktop",
3
- "version": "0.0.19",
3
+ "version": "0.1.2",
4
4
  "description": "Menu bar desktop wrapper for @becrafter/prompt-manager",
5
5
  "author": "BeCrafter",
6
6
  "homepage": "https://github.com/BeCrafter/prompt-manager",
@@ -9,7 +9,7 @@
9
9
  "scripts": {
10
10
  "dev": "electron .",
11
11
  "start": "npm run dev",
12
- "prebuild": "node ../../scripts/build-icons.js",
12
+ "prebuild": "cd ../.. && npm run build:icons",
13
13
  "build": "electron-builder"
14
14
  },
15
15
  "devDependencies": {
@@ -17,7 +17,9 @@
17
17
  "electron-builder": "^24.13.3"
18
18
  },
19
19
  "dependencies": {
20
+ "@becrafter/prompt-manager-core": "file:../../packages/server",
20
21
  "@modelcontextprotocol/sdk": "^1.20.2",
22
+ "http-proxy-middleware": "^3.0.5",
21
23
  "tar": "^7.5.2"
22
24
  },
23
25
  "build": {
@@ -27,9 +29,18 @@
27
29
  "files": [
28
30
  "**/*",
29
31
  "assets/**/*",
32
+ "!docs",
33
+ "!.npmignore",
34
+ "!assets/**/*.1.png",
30
35
  "!node_modules/**/test/**",
31
36
  "!node_modules/**/example/**",
32
- "!docs"
37
+ "!node_modules/**/*.md",
38
+ "!node_modules/**/LICENSE",
39
+ {
40
+ "from": "../../packages/web/",
41
+ "to": "web/",
42
+ "filter": ["**/*"]
43
+ }
33
44
  ],
34
45
  "directories": {
35
46
  "output": "../../dist",
@@ -37,34 +48,18 @@
37
48
  },
38
49
  "extraResources": [
39
50
  {
40
- "from": "../../",
41
- "to": "prompt-manager",
42
- "filter": [
43
- "package.json",
44
- "packages/**/*",
45
- "examples/**/*",
46
- "node_modules/**/*",
47
- "!node_modules/7zip-bin/mac/**/*",
48
- "!node_modules/@img/sharp-darwin-x64/**/*",
49
- "!node_modules/@img/sharp-darwin-arm64/**/*",
50
- "!node_modules/@img/sharp-libvips-darwin-x64/**/*",
51
- "!node_modules/@img/sharp-libvips-darwin-arm64/**/*",
52
- "!node_modules/app-builder-bin/mac/**/*",
53
- "!dist",
54
- "!docs",
55
- "!app/desktop",
56
- "!scripts",
57
- "!*.md",
58
- "!*.lock",
59
- "!*.log",
60
- "!*.gitignore",
61
- "!*.npmignore"
62
- ]
51
+ "from": "../../packages/resources/tools/",
52
+ "to": "runtime/toolbox/",
53
+ "filter": ["**/*"]
54
+ },
55
+ {
56
+ "from": "../../env.example",
57
+ "to": "runtime/.env"
63
58
  }
64
59
  ],
65
60
  "mac": {
66
61
  "category": "public.app-category.productivity",
67
- "icon": "assets/icon.icns",
62
+ "icon": "assets/icons/icon.icns",
68
63
  "target": [
69
64
  {
70
65
  "target": "dmg",
@@ -81,12 +76,11 @@
81
76
  "target": "nsis",
82
77
  "arch": [
83
78
  "x64",
84
- "ia32",
85
79
  "arm64"
86
80
  ]
87
81
  }
88
82
  ],
89
- "icon": "assets/icon.ico"
83
+ "icon": "assets/icons/icon.ico"
90
84
  },
91
85
  "linux": {
92
86
  "target": [
@@ -2,6 +2,7 @@ const fs = require('fs');
2
2
  const path = require('path');
3
3
  const { pathToFileURL } = require('url');
4
4
  const { spawn } = require('child_process');
5
+ const { constants } = require('fs');
5
6
 
6
7
  class ModuleLoader {
7
8
  constructor(logger, errorHandler) {
@@ -50,38 +51,51 @@ class ModuleLoader {
50
51
  async _loadModuleInternal(serverRoot) {
51
52
  this.logger.info('Loading server module', { serverRoot });
52
53
 
53
- const serverEntry = path.join(serverRoot, 'packages', 'server', 'server.js');
54
+ // 简化路径查找逻辑,优先查找 app.asar 包中的核心库
55
+ const pathsToCheck = [
56
+ // 1. 优先从 app.asar 包中的 node_modules 加载(打包应用中)
57
+ path.join(process.resourcesPath, 'app.asar', 'node_modules', '@becrafter', 'prompt-manager-core', 'index.js'),
58
+ // 2. 尝试从 serverRoot 的 packages/server 加载(开发环境)
59
+ path.join(serverRoot, 'packages', 'server', 'index.js'),
60
+ // 3. 尝试从 serverRoot 的 node_modules 加载
61
+ path.join(serverRoot, 'node_modules', '@becrafter', 'prompt-manager-core', 'index.js'),
62
+ ];
54
63
 
55
- // 验证入口文件存在
56
- await this._validateServerEntry(serverEntry);
57
-
58
- // 生成带版本号的URL
59
- const entryUrl = pathToFileURL(serverEntry);
60
- entryUrl.searchParams.set('v', Date.now().toString());
61
-
62
- this.logger.debug('Importing server module', { entryUrl: entryUrl.href });
64
+ for (const libPath of pathsToCheck) {
65
+ if (await this._pathExists(libPath)) {
66
+ const entryUrl = pathToFileURL(libPath);
67
+ // 添加版本参数以防止缓存
68
+ entryUrl.searchParams.set('v', Date.now().toString());
69
+
70
+ const module = await import(entryUrl.href);
71
+ this._validateServerModule(module);
72
+ this.logger.info('Server module loaded successfully');
73
+ return module;
74
+ }
75
+ }
63
76
 
77
+ // 如果所有路径都没有找到,抛出错误
78
+ throw new Error(`Could not find core library in any of the expected paths: ${pathsToCheck.join(', ')}`);
79
+ }
80
+
81
+ async _pathExists(targetPath) {
64
82
  try {
65
- const module = await import(entryUrl.href);
66
-
67
- // 验证模块结构
68
- this._validateServerModule(module);
69
-
70
- this.logger.info('Server module loaded successfully');
71
- return module;
83
+ await fs.promises.access(targetPath, constants.F_OK);
84
+ return true;
72
85
  } catch (error) {
73
- this.logger.error('Failed to import server module', error);
74
- throw new Error(`Failed to load server module: ${error.message}`);
86
+ return false;
75
87
  }
76
88
  }
77
89
 
78
90
  async _validateServerEntry(serverEntry) {
79
91
  try {
80
- await fs.promises.access(serverEntry, fs.constants.F_OK);
81
- this.logger.debug('Server entry file exists', { serverEntry });
92
+ // 验证库的 package.json 存在
93
+ const packageJsonPath = path.join(serverEntry, 'package.json');
94
+ await fs.promises.access(packageJsonPath, fs.constants.F_OK);
95
+ this.logger.debug('Server module package.json exists', { serverEntry });
82
96
  } catch (error) {
83
- this.logger.error('Server entry file does not exist', error);
84
- throw new Error(`Server entry file not found: ${serverEntry}`);
97
+ this.logger.error('Server module not found', error);
98
+ throw new Error(`Server module not found: ${serverEntry}`);
85
99
  }
86
100
  }
87
101
 
@@ -169,6 +183,13 @@ class ModuleLoader {
169
183
 
170
184
  pkg.dependencies = pkg.dependencies || {};
171
185
 
186
+ // 确保 @becrafter/prompt-manager-core 依赖存在
187
+ if (!pkg.dependencies['@becrafter/prompt-manager-core']) {
188
+ pkg.dependencies['@becrafter/prompt-manager-core'] = '^0.0.19';
189
+ await fs.promises.writeFile(pkgPath, JSON.stringify(pkg, null, 2), 'utf8');
190
+ this.logger.info('Added @becrafter/prompt-manager-core to dependencies');
191
+ }
192
+
172
193
  // 检查并添加 @modelcontextprotocol/sdk
173
194
  if (!pkg.dependencies['@modelcontextprotocol/sdk']) {
174
195
  pkg.dependencies['@modelcontextprotocol/sdk'] = '^1.20.2';