@geminilight/mindos 0.7.2 → 0.7.4

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 (254) hide show
  1. package/_standalone/.mindos-build-version +1 -1
  2. package/_standalone/.next/BUILD_ID +1 -1
  3. package/_standalone/.next/app-path-routes-manifest.json +19 -19
  4. package/_standalone/.next/build-manifest.json +3 -3
  5. package/_standalone/.next/cache/.previewinfo +1 -1
  6. package/_standalone/.next/cache/.rscinfo +1 -1
  7. package/_standalone/.next/cache/config.json +3 -3
  8. package/_standalone/.next/prerender-manifest.json +3 -3
  9. package/_standalone/.next/react-loadable-manifest.json +4 -4
  10. package/_standalone/.next/server/app/.well-known/agent-card.json/route_client-reference-manifest.js +1 -1
  11. package/_standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  12. package/_standalone/.next/server/app/_global-error.html +2 -2
  13. package/_standalone/.next/server/app/_global-error.rsc +1 -1
  14. package/_standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  15. package/_standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  16. package/_standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  17. package/_standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  18. package/_standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  19. package/_standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  20. package/_standalone/.next/server/app/_not-found/page.js +1 -1
  21. package/_standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  22. package/_standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  23. package/_standalone/.next/server/app/agents/[agentKey]/page.js +1 -1
  24. package/_standalone/.next/server/app/agents/[agentKey]/page.js.nft.json +1 -1
  25. package/_standalone/.next/server/app/agents/[agentKey]/page_client-reference-manifest.js +1 -1
  26. package/_standalone/.next/server/app/agents/page.js +1 -1
  27. package/_standalone/.next/server/app/agents/page.js.nft.json +1 -1
  28. package/_standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  29. package/_standalone/.next/server/app/api/a2a/agents/route_client-reference-manifest.js +1 -1
  30. package/_standalone/.next/server/app/api/a2a/delegations/route_client-reference-manifest.js +1 -1
  31. package/_standalone/.next/server/app/api/a2a/discover/route_client-reference-manifest.js +1 -1
  32. package/_standalone/.next/server/app/api/a2a/route_client-reference-manifest.js +1 -1
  33. package/_standalone/.next/server/app/api/acp/config/route_client-reference-manifest.js +1 -1
  34. package/_standalone/.next/server/app/api/acp/detect/route_client-reference-manifest.js +1 -1
  35. package/_standalone/.next/server/app/api/acp/install/route_client-reference-manifest.js +1 -1
  36. package/_standalone/.next/server/app/api/acp/registry/route_client-reference-manifest.js +1 -1
  37. package/_standalone/.next/server/app/api/acp/session/route_client-reference-manifest.js +1 -1
  38. package/_standalone/.next/server/app/api/agent-activity/route_client-reference-manifest.js +1 -1
  39. package/_standalone/.next/server/app/api/agents/copy-skill/route_client-reference-manifest.js +1 -1
  40. package/_standalone/.next/server/app/api/agents/custom/detect/route_client-reference-manifest.js +1 -1
  41. package/_standalone/.next/server/app/api/agents/custom/route_client-reference-manifest.js +1 -1
  42. package/_standalone/.next/server/app/api/ask/route.js +4 -4
  43. package/_standalone/.next/server/app/api/ask/route_client-reference-manifest.js +1 -1
  44. package/_standalone/.next/server/app/api/ask-sessions/route_client-reference-manifest.js +1 -1
  45. package/_standalone/.next/server/app/api/auth/route_client-reference-manifest.js +1 -1
  46. package/_standalone/.next/server/app/api/backlinks/route_client-reference-manifest.js +1 -1
  47. package/_standalone/.next/server/app/api/bootstrap/route_client-reference-manifest.js +1 -1
  48. package/_standalone/.next/server/app/api/changes/route_client-reference-manifest.js +1 -1
  49. package/_standalone/.next/server/app/api/channels/verify/route_client-reference-manifest.js +1 -1
  50. package/_standalone/.next/server/app/api/connect/route_client-reference-manifest.js +1 -1
  51. package/_standalone/.next/server/app/api/embedding/route_client-reference-manifest.js +1 -1
  52. package/_standalone/.next/server/app/api/export/route_client-reference-manifest.js +1 -1
  53. package/_standalone/.next/server/app/api/extract-docx/route_client-reference-manifest.js +1 -1
  54. package/_standalone/.next/server/app/api/extract-pdf/route_client-reference-manifest.js +1 -1
  55. package/_standalone/.next/server/app/api/file/import/route_client-reference-manifest.js +1 -1
  56. package/_standalone/.next/server/app/api/file/raw/route_client-reference-manifest.js +1 -1
  57. package/_standalone/.next/server/app/api/file/route_client-reference-manifest.js +1 -1
  58. package/_standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
  59. package/_standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  60. package/_standalone/.next/server/app/api/graph/route_client-reference-manifest.js +1 -1
  61. package/_standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  62. package/_standalone/.next/server/app/api/im/activity/route_client-reference-manifest.js +1 -1
  63. package/_standalone/.next/server/app/api/im/config/route_client-reference-manifest.js +1 -1
  64. package/_standalone/.next/server/app/api/im/feishu/long-connection/event/route_client-reference-manifest.js +1 -1
  65. package/_standalone/.next/server/app/api/im/feishu/long-connection/route_client-reference-manifest.js +1 -1
  66. package/_standalone/.next/server/app/api/im/status/route_client-reference-manifest.js +1 -1
  67. package/_standalone/.next/server/app/api/im/test/route_client-reference-manifest.js +1 -1
  68. package/_standalone/.next/server/app/api/im/webhook/feishu/route_client-reference-manifest.js +1 -1
  69. package/_standalone/.next/server/app/api/im/webhook-status/route_client-reference-manifest.js +1 -1
  70. package/_standalone/.next/server/app/api/inbox/clip/route_client-reference-manifest.js +1 -1
  71. package/_standalone/.next/server/app/api/inbox/route_client-reference-manifest.js +1 -1
  72. package/_standalone/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  73. package/_standalone/.next/server/app/api/lint/route_client-reference-manifest.js +1 -1
  74. package/_standalone/.next/server/app/api/mcp/agents/route_client-reference-manifest.js +1 -1
  75. package/_standalone/.next/server/app/api/mcp/direct-tools/route_client-reference-manifest.js +1 -1
  76. package/_standalone/.next/server/app/api/mcp/install/route_client-reference-manifest.js +1 -1
  77. package/_standalone/.next/server/app/api/mcp/install-skill/route_client-reference-manifest.js +1 -1
  78. package/_standalone/.next/server/app/api/mcp/restart/route_client-reference-manifest.js +1 -1
  79. package/_standalone/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
  80. package/_standalone/.next/server/app/api/mcp/tools/route_client-reference-manifest.js +1 -1
  81. package/_standalone/.next/server/app/api/mcp/uninstall/route_client-reference-manifest.js +1 -1
  82. package/_standalone/.next/server/app/api/monitoring/route_client-reference-manifest.js +1 -1
  83. package/_standalone/.next/server/app/api/obsidian/compat-report/route_client-reference-manifest.js +1 -1
  84. package/_standalone/.next/server/app/api/obsidian/import/route_client-reference-manifest.js +1 -1
  85. package/_standalone/.next/server/app/api/recent-files/route_client-reference-manifest.js +1 -1
  86. package/_standalone/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  87. package/_standalone/.next/server/app/api/search/prewarm/route_client-reference-manifest.js +1 -1
  88. package/_standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
  89. package/_standalone/.next/server/app/api/settings/list-models/route_client-reference-manifest.js +1 -1
  90. package/_standalone/.next/server/app/api/settings/reset-token/route_client-reference-manifest.js +1 -1
  91. package/_standalone/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  92. package/_standalone/.next/server/app/api/settings/test-key/route_client-reference-manifest.js +1 -1
  93. package/_standalone/.next/server/app/api/setup/check-path/route_client-reference-manifest.js +1 -1
  94. package/_standalone/.next/server/app/api/setup/check-port/route_client-reference-manifest.js +1 -1
  95. package/_standalone/.next/server/app/api/setup/generate-token/route_client-reference-manifest.js +1 -1
  96. package/_standalone/.next/server/app/api/setup/ls/route_client-reference-manifest.js +1 -1
  97. package/_standalone/.next/server/app/api/setup/route_client-reference-manifest.js +1 -1
  98. package/_standalone/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  99. package/_standalone/.next/server/app/api/space-overview/route_client-reference-manifest.js +1 -1
  100. package/_standalone/.next/server/app/api/sync/route_client-reference-manifest.js +1 -1
  101. package/_standalone/.next/server/app/api/tree-version/route_client-reference-manifest.js +1 -1
  102. package/_standalone/.next/server/app/api/uninstall/route_client-reference-manifest.js +1 -1
  103. package/_standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  104. package/_standalone/.next/server/app/api/update-check/route_client-reference-manifest.js +1 -1
  105. package/_standalone/.next/server/app/api/update-status/route_client-reference-manifest.js +1 -1
  106. package/_standalone/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
  107. package/_standalone/.next/server/app/capture/history/page.js +1 -1
  108. package/_standalone/.next/server/app/capture/history/page.js.nft.json +1 -1
  109. package/_standalone/.next/server/app/capture/history/page_client-reference-manifest.js +1 -1
  110. package/_standalone/.next/server/app/capture/page.js +1 -1
  111. package/_standalone/.next/server/app/capture/page.js.nft.json +1 -1
  112. package/_standalone/.next/server/app/capture/page_client-reference-manifest.js +1 -1
  113. package/_standalone/.next/server/app/changelog/page.js +1 -1
  114. package/_standalone/.next/server/app/changelog/page.js.nft.json +1 -1
  115. package/_standalone/.next/server/app/changelog/page_client-reference-manifest.js +1 -1
  116. package/_standalone/.next/server/app/changes/page.js +1 -1
  117. package/_standalone/.next/server/app/changes/page.js.nft.json +1 -1
  118. package/_standalone/.next/server/app/changes/page_client-reference-manifest.js +1 -1
  119. package/_standalone/.next/server/app/echo/[segment]/page.js +1 -1
  120. package/_standalone/.next/server/app/echo/[segment]/page.js.nft.json +1 -1
  121. package/_standalone/.next/server/app/echo/[segment]/page_client-reference-manifest.js +1 -1
  122. package/_standalone/.next/server/app/echo/page.js +1 -1
  123. package/_standalone/.next/server/app/echo/page.js.nft.json +1 -1
  124. package/_standalone/.next/server/app/echo/page_client-reference-manifest.js +1 -1
  125. package/_standalone/.next/server/app/explore/page.js +1 -1
  126. package/_standalone/.next/server/app/explore/page.js.nft.json +1 -1
  127. package/_standalone/.next/server/app/explore/page_client-reference-manifest.js +1 -1
  128. package/_standalone/.next/server/app/help/page.js +1 -1
  129. package/_standalone/.next/server/app/help/page.js.nft.json +1 -1
  130. package/_standalone/.next/server/app/help/page_client-reference-manifest.js +1 -1
  131. package/_standalone/.next/server/app/inbox/history/page.js +1 -1
  132. package/_standalone/.next/server/app/inbox/history/page.js.nft.json +1 -1
  133. package/_standalone/.next/server/app/inbox/history/page_client-reference-manifest.js +1 -1
  134. package/_standalone/.next/server/app/login/page.js +1 -1
  135. package/_standalone/.next/server/app/login/page.js.nft.json +1 -1
  136. package/_standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  137. package/_standalone/.next/server/app/page.js +1 -1
  138. package/_standalone/.next/server/app/page.js.nft.json +1 -1
  139. package/_standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  140. package/_standalone/.next/server/app/setup/page.js +1 -1
  141. package/_standalone/.next/server/app/setup/page.js.nft.json +1 -1
  142. package/_standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  143. package/_standalone/.next/server/app/todo/page.js +1 -1
  144. package/_standalone/.next/server/app/todo/page.js.nft.json +1 -1
  145. package/_standalone/.next/server/app/todo/page_client-reference-manifest.js +1 -1
  146. package/_standalone/.next/server/app/trash/page.js +2 -2
  147. package/_standalone/.next/server/app/trash/page_client-reference-manifest.js +1 -1
  148. package/_standalone/.next/server/app/view/[...path]/page.js +2 -2
  149. package/_standalone/.next/server/app/view/[...path]/page.js.nft.json +1 -1
  150. package/_standalone/.next/server/app/view/[...path]/page_client-reference-manifest.js +1 -1
  151. package/_standalone/.next/server/app/wiki/page.js +2 -0
  152. package/_standalone/.next/server/app/wiki/page.js.nft.json +1 -0
  153. package/_standalone/.next/server/app/wiki/page_client-reference-manifest.js +1 -0
  154. package/_standalone/.next/server/app-paths-manifest.json +19 -19
  155. package/_standalone/.next/server/chunks/2250.js +1 -1
  156. package/_standalone/.next/server/chunks/{1057.js → 3861.js} +2 -2
  157. package/_standalone/.next/server/chunks/4802.js +30 -30
  158. package/_standalone/.next/server/chunks/8388.js +1 -1
  159. package/_standalone/.next/server/middleware-build-manifest.js +1 -1
  160. package/_standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  161. package/_standalone/.next/server/pages/500.html +2 -2
  162. package/_standalone/.next/server/server-reference-manifest.js +1 -1
  163. package/_standalone/.next/server/server-reference-manifest.json +1 -1
  164. package/_standalone/.next/static/chunks/{5581-bae715e40d227b5f.js → 5581-beecbc4ca5625aa9.js} +2 -2
  165. package/_standalone/.next/static/chunks/6762.c871d0bf3f45ba87.js +1 -0
  166. package/_standalone/.next/static/chunks/{8064-e65acd2762132099.js → 8064-acac37daf946082b.js} +1 -1
  167. package/_standalone/.next/static/chunks/{3985.695651f6b5cd768c.js → 8984.91fb8cde1983c564.js} +2 -2
  168. package/_standalone/.next/static/chunks/app/{layout-0cf6f2a65f605a0d.js → layout-20faba3bc0af7cd2.js} +19 -19
  169. package/_standalone/.next/static/chunks/app/trash/page-0c2c67929b71ef71.js +1 -0
  170. package/_standalone/.next/static/chunks/app/view/[...path]/not-found-fd06cc989103ebe7.js +1 -0
  171. package/_standalone/.next/static/chunks/app/view/[...path]/page-dba70888697ba910.js +12 -0
  172. package/_standalone/.next/static/chunks/app/wiki/page-9bc1fec84d343290.js +14 -0
  173. package/_standalone/.next/static/chunks/webpack-3c1d0331f1da64b8.js +1 -0
  174. package/_standalone/.next/trace +97 -97
  175. package/_standalone/MINDOS_ARCHITECTURE_DIAGRAM.md +488 -0
  176. package/_standalone/MINDOS_EXPLORATION_SUMMARY.md +229 -0
  177. package/_standalone/MINDOS_INFRASTRUCTURE_ANALYSIS.md +732 -0
  178. package/_standalone/__tests__/api/mcp-install.test.ts +8 -2
  179. package/_standalone/__tests__/core/embedding-provider.test.ts +78 -0
  180. package/_standalone/__tests__/skills/mindos-skill-copy-alignment.test.ts +10 -4
  181. package/_standalone/components/ask/AskHeader.tsx +25 -18
  182. package/_standalone/components/ask/SessionHistoryPanel.tsx +21 -12
  183. package/_standalone/components/settings/AiTab.tsx +3 -0
  184. package/_standalone/data/skills/mindos/SKILL.md +269 -0
  185. package/_standalone/data/skills/mindos/references/write-supplement.md +119 -0
  186. package/_standalone/data/skills/mindos-zh/SKILL.md +227 -0
  187. package/_standalone/data/skills/mindos-zh/references/write-supplement.md +119 -0
  188. package/app/__tests__/api/mcp-install.test.ts +8 -2
  189. package/app/__tests__/core/embedding-provider.test.ts +78 -0
  190. package/app/__tests__/skills/mindos-skill-copy-alignment.test.ts +10 -4
  191. package/app/app/api/ask/route.ts +14 -9
  192. package/app/app/view/[...path]/ViewPageClient.tsx +15 -12
  193. package/app/app/view/[...path]/not-found.tsx +9 -5
  194. package/app/components/ask/AskHeader.tsx +25 -18
  195. package/app/components/ask/SessionHistoryPanel.tsx +21 -12
  196. package/app/components/settings/AiTab.tsx +3 -0
  197. package/app/eslint.config.mjs +18 -0
  198. package/app/lib/core/embedding-provider.ts +12 -4
  199. package/app/lib/i18n/modules/settings.ts +2 -0
  200. package/app/package-lock.json +20214 -0
  201. package/app/tsconfig.tsbuildinfo +1 -0
  202. package/app/vitest.config.ts +14 -0
  203. package/assets/demo-flow-zh.html +622 -0
  204. package/assets/images/demo-flow-dark.png +0 -0
  205. package/assets/images/demo-flow-dark.webp +0 -0
  206. package/assets/images/demo-flow-light.png +0 -0
  207. package/assets/images/demo-flow-light.webp +0 -0
  208. package/assets/images/demo-flow-zh-dark.png +0 -0
  209. package/assets/images/demo-flow-zh-dark.webp +0 -0
  210. package/assets/images/demo-flow-zh-light.png +0 -0
  211. package/assets/images/demo-flow-zh-light.webp +0 -0
  212. package/assets/images/gui-sync-cv.png +0 -0
  213. package/assets/images/gui-sync-cv.webp +0 -0
  214. package/assets/images/mindos-chat.png +0 -0
  215. package/assets/images/mindos-chat.webp +0 -0
  216. package/assets/images/mindos-dashboard.png +0 -0
  217. package/assets/images/mindos-dashboard.webp +0 -0
  218. package/assets/images/mindos-echo.png +0 -0
  219. package/assets/images/mindos-echo.webp +0 -0
  220. package/assets/images/mindos-home.png +0 -0
  221. package/assets/images/mindos-home.webp +0 -0
  222. package/assets/images/wechat-qr.png +0 -0
  223. package/bin/lib/mcp-build.js +8 -0
  224. package/mcp/package-lock.json +2202 -0
  225. package/mcp/src/index.ts +783 -0
  226. package/package.json +13 -1
  227. package/.env.local.example +0 -38
  228. package/.playwright-cli/page-2026-04-12T12-26-53-393Z.yml +0 -6
  229. package/.playwright-cli/page-2026-04-12T12-27-20-256Z.yml +0 -120
  230. package/.syncinclude +0 -105
  231. package/MINDOS_SEARCH_DIAGRAM.txt +0 -243
  232. package/_standalone/.next/static/chunks/576.3cae31209383ddbd.js +0 -1
  233. package/_standalone/.next/static/chunks/app/trash/page-085f121c0815d542.js +0 -1
  234. package/_standalone/.next/static/chunks/app/view/[...path]/not-found-2a6eec67e91eaaf9.js +0 -1
  235. package/_standalone/.next/static/chunks/app/view/[...path]/page-faeaf8c09c1c6d7c.js +0 -12
  236. package/_standalone/.next/static/chunks/webpack-a1bb35f2d540e463.js +0 -1
  237. package/scripts/build-runtime-archive.sh +0 -151
  238. package/scripts/fix-postcss-deps.cjs +0 -75
  239. package/scripts/gen-renderer-index.js +0 -64
  240. package/scripts/hooks/block-public-merge.sh +0 -42
  241. package/scripts/hooks/pre-merge-commit +0 -4
  242. package/scripts/hooks/pre-push +0 -37
  243. package/scripts/hooks/prepare-commit-msg +0 -12
  244. package/scripts/migrate-agent-audit-log.js +0 -170
  245. package/scripts/migrate-agent-diff.js +0 -146
  246. package/scripts/parse-syncinclude.sh +0 -92
  247. package/scripts/prepare-standalone.mjs +0 -83
  248. package/scripts/release.sh +0 -145
  249. package/scripts/setup.js +0 -1427
  250. package/scripts/test-oss-upload.sh +0 -100
  251. package/scripts/verify-standalone.mjs +0 -129
  252. package/scripts/write-build-stamp.js +0 -40
  253. /package/_standalone/.next/static/{q5RP_Mx8BrCfvVDnLpRRc → 0UlbV2rA2i4B-8YYg41wQ}/_buildManifest.js +0 -0
  254. /package/_standalone/.next/static/{q5RP_Mx8BrCfvVDnLpRRc → 0UlbV2rA2i4B-8YYg41wQ}/_ssgManifest.js +0 -0
@@ -1,100 +0,0 @@
1
- #!/bin/bash
2
- # 阿里云 OSS 上传测试(纯 curl,和 CI workflow 用同样的签名方式)
3
- # 用法:
4
- # export OSS_ACCESS_KEY_ID=你的ID
5
- # export OSS_ACCESS_KEY_SECRET=你的Secret
6
- # export OSS_ENDPOINT=oss-cn-hangzhou.aliyuncs.com # 不带 https://
7
- # export OSS_BUCKET=mindos-cn-releases
8
- # bash scripts/test-oss-upload.sh
9
-
10
- set -e
11
-
12
- : "${OSS_ACCESS_KEY_ID:?请设置 OSS_ACCESS_KEY_ID}"
13
- : "${OSS_ACCESS_KEY_SECRET:?请设置 OSS_ACCESS_KEY_SECRET}"
14
- : "${OSS_ENDPOINT:?请设置 OSS_ENDPOINT (不带 https://)}"
15
- : "${OSS_BUCKET:?请设置 OSS_BUCKET}"
16
-
17
- echo "=== OSS 上传测试 ==="
18
- echo "Bucket: $OSS_BUCKET"
19
- echo "Endpoint: $OSS_ENDPOINT"
20
- echo "URL: https://${OSS_BUCKET}.${OSS_ENDPOINT}/"
21
- echo ""
22
-
23
- # 检查 endpoint 格式
24
- if [[ "$OSS_ENDPOINT" == https://* ]]; then
25
- echo "错误: OSS_ENDPOINT 不要带 https:// 前缀"
26
- echo "当前值: $OSS_ENDPOINT"
27
- echo "应该是: oss-cn-hangzhou.aliyuncs.com"
28
- exit 1
29
- fi
30
-
31
- # 创建测试文件
32
- OBJECT_KEY="test-upload-$(date +%s).txt"
33
- CONTENT_TYPE="text/plain"
34
- TMP_FILE="/tmp/oss-test-$$.txt"
35
- echo "hello from MindOS CI test at $(date)" > "$TMP_FILE"
36
-
37
- # 上传函数(和 CI workflow 完全一致)
38
- oss_upload() {
39
- local file="$1"
40
- local object_key="$2"
41
- local content_type="${3:-application/octet-stream}"
42
- local date_header=$(date -u +"%a, %d %b %Y %H:%M:%S GMT")
43
- local resource="/${OSS_BUCKET}/${object_key}"
44
- local string_to_sign="PUT\n\n${content_type}\n${date_header}\n${resource}"
45
- local signature=$(printf "$string_to_sign" | openssl dgst -sha1 -hmac "$OSS_ACCESS_KEY_SECRET" -binary | base64)
46
- local url="https://${OSS_BUCKET}.${OSS_ENDPOINT}/${object_key}"
47
-
48
- echo " URL: $url"
49
- local http_code=$(curl -s -o /tmp/oss-response.txt -w "%{http_code}" \
50
- -X PUT \
51
- -H "Date: ${date_header}" \
52
- -H "Content-Type: ${content_type}" \
53
- -H "Authorization: OSS ${OSS_ACCESS_KEY_ID}:${signature}" \
54
- -T "$file" \
55
- "$url")
56
-
57
- if [ "$http_code" = "200" ]; then
58
- echo " 上传成功 (HTTP $http_code)"
59
- return 0
60
- else
61
- echo " 上传失败 (HTTP $http_code)"
62
- cat /tmp/oss-response.txt 2>/dev/null
63
- echo ""
64
- return 1
65
- fi
66
- }
67
-
68
- # 1. 上传
69
- echo "1. 上传测试文件: $OBJECT_KEY"
70
- oss_upload "$TMP_FILE" "$OBJECT_KEY" "text/plain"
71
-
72
- # 2. 公网访问
73
- echo ""
74
- echo "2. 公网访问测试:"
75
- PUBLIC_URL="https://${OSS_BUCKET}.${OSS_ENDPOINT}/${OBJECT_KEY}"
76
- HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" "$PUBLIC_URL")
77
- if [ "$HTTP_CODE" = "200" ]; then
78
- echo " 公网访问成功 (HTTP $HTTP_CODE)"
79
- echo " 内容: $(curl -s "$PUBLIC_URL")"
80
- else
81
- echo " 公网访问失败 (HTTP $HTTP_CODE) — 请在 OSS 控制台开启公共读"
82
- fi
83
-
84
- # 3. 清理
85
- echo ""
86
- echo "3. 清理测试文件..."
87
- DATE_HEADER=$(date -u +"%a, %d %b %Y %H:%M:%S GMT")
88
- RESOURCE="/${OSS_BUCKET}/${OBJECT_KEY}"
89
- STRING_TO_SIGN="DELETE\n\n\n${DATE_HEADER}\n${RESOURCE}"
90
- SIGNATURE=$(printf "$STRING_TO_SIGN" | openssl dgst -sha1 -hmac "$OSS_ACCESS_KEY_SECRET" -binary | base64)
91
- curl -s -o /dev/null \
92
- -X DELETE \
93
- -H "Date: ${DATE_HEADER}" \
94
- -H "Authorization: OSS ${OSS_ACCESS_KEY_ID}:${SIGNATURE}" \
95
- "https://${OSS_BUCKET}.${OSS_ENDPOINT}/${OBJECT_KEY}"
96
- echo " 已清理"
97
-
98
- rm -f "$TMP_FILE" /tmp/oss-response.txt
99
- echo ""
100
- echo "=== 测试完成 ==="
@@ -1,129 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Smoke-test Next standalone server: merge static/public, spawn server.js, GET /api/health.
4
- * Catches missing serverExternalPackages / file-trace gaps (MODULE_NOT_FOUND at startup).
5
- *
6
- * Run from repo root after: cd app && ./node_modules/.bin/next build
7
- * node scripts/verify-standalone.mjs
8
- *
9
- * @see wiki/specs/spec-desktop-standalone-runtime.md
10
- */
11
- import { spawn } from 'child_process';
12
- import http from 'http';
13
- import { existsSync } from 'fs';
14
- import path from 'path';
15
- import { fileURLToPath } from 'url';
16
- import { materializeStandaloneAssets } from '../desktop/scripts/prepare-mindos-bundle.mjs';
17
-
18
- const __dirname = path.dirname(fileURLToPath(import.meta.url));
19
- const root = path.resolve(__dirname, '..');
20
- const appDir = path.join(root, 'app');
21
- const serverJs = path.join(appDir, '.next', 'standalone', 'server.js');
22
-
23
- if (!existsSync(serverJs)) {
24
- console.error(
25
- `[verify-standalone] Missing ${serverJs}\nBuild first: cd app && ./node_modules/.bin/next build`
26
- );
27
- process.exit(1);
28
- }
29
-
30
- try {
31
- materializeStandaloneAssets(appDir);
32
- } catch (e) {
33
- console.error(e instanceof Error ? e.message : String(e));
34
- process.exit(1);
35
- }
36
-
37
- const port = 31000 + Math.floor(Math.random() * 5000);
38
- const nodeBin = process.execPath;
39
-
40
- function waitHealth(timeoutMs) {
41
- const deadline = Date.now() + timeoutMs;
42
- return new Promise((resolve, reject) => {
43
- const tick = () => {
44
- if (Date.now() > deadline) {
45
- reject(new Error(`Timeout waiting for http://127.0.0.1:${port}/api/health`));
46
- return;
47
- }
48
- const req = http.get(
49
- `http://127.0.0.1:${port}/api/health`,
50
- { timeout: 2000 },
51
- (res) => {
52
- let body = '';
53
- res.on('data', (c) => {
54
- body += c;
55
- });
56
- res.on('end', () => {
57
- if (res.statusCode === 200) {
58
- try {
59
- const j = JSON.parse(body);
60
- if (j.ok === true && j.service === 'mindos') {
61
- resolve();
62
- return;
63
- }
64
- } catch {
65
- /* fall through */
66
- }
67
- }
68
- setTimeout(tick, 300);
69
- });
70
- }
71
- );
72
- req.on('error', () => {
73
- setTimeout(tick, 300);
74
- });
75
- req.on('timeout', () => {
76
- req.destroy();
77
- setTimeout(tick, 300);
78
- });
79
- };
80
- tick();
81
- });
82
- }
83
-
84
- let stderr = '';
85
- const child = spawn(nodeBin, [serverJs], {
86
- cwd: appDir,
87
- env: {
88
- ...process.env,
89
- NODE_ENV: 'production',
90
- PORT: String(port),
91
- /** Next binds to machine hostname by default; Desktop health checks use 127.0.0.1 */
92
- HOSTNAME: '127.0.0.1',
93
- },
94
- stdio: ['ignore', 'pipe', 'pipe'],
95
- });
96
-
97
- child.stderr?.on('data', (c) => {
98
- stderr += c.toString();
99
- });
100
-
101
- function killChild() {
102
- try {
103
- child.kill('SIGTERM');
104
- } catch {
105
- /* ignore */
106
- }
107
- }
108
-
109
- async function main() {
110
- try {
111
- await waitHealth(90_000);
112
- console.log(`[verify-standalone] OK (port ${port})`);
113
- return 0;
114
- } catch (e) {
115
- console.error(e instanceof Error ? e.message : String(e));
116
- if (stderr.trim()) console.error('--- server stderr (tail) ---\n', stderr.slice(-4000));
117
- return 1;
118
- } finally {
119
- killChild();
120
- await new Promise((r) => setTimeout(r, 500));
121
- }
122
- }
123
-
124
- child.on('error', (err) => {
125
- console.error('[verify-standalone] spawn failed:', err.message);
126
- process.exit(1);
127
- });
128
-
129
- main().then((code) => process.exit(code));
@@ -1,40 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Write .mindos-build-version stamp after `next build`.
4
- *
5
- * This ensures Desktop's isNextBuildCurrent() recognizes builds
6
- * done via `npm run build` (app/package.json) without going through
7
- * the CLI's `mindos build` command.
8
- *
9
- * The stamp file is read by:
10
- * - desktop/src/mindos-runtime-layout.ts (isNextBuildCurrent)
11
- * - bin/lib/build.js (needsBuild / writeBuildStamp)
12
- *
13
- * Safe to run multiple times (idempotent).
14
- */
15
- const { readFileSync, writeFileSync, existsSync } = require('fs');
16
- const { resolve } = require('path');
17
-
18
- const STAMP_NAME = '.mindos-build-version';
19
- const appDir = resolve(__dirname, '..', 'app');
20
- const nextDir = resolve(appDir, '.next');
21
- const stampPath = resolve(nextDir, STAMP_NAME);
22
- const pkgPath = resolve(__dirname, '..', 'package.json');
23
-
24
- try {
25
- if (!existsSync(nextDir)) {
26
- // next build didn't produce output — nothing to stamp
27
- process.exit(0);
28
- }
29
- const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
30
- const version = typeof pkg.version === 'string' ? pkg.version.trim() : '';
31
- if (!version) {
32
- console.warn('[write-build-stamp] No version in package.json, skipping');
33
- process.exit(0);
34
- }
35
- writeFileSync(stampPath, version, 'utf-8');
36
- console.log(`[write-build-stamp] ${version} → ${stampPath}`);
37
- } catch (err) {
38
- // Non-fatal — build succeeded, stamp is a bonus
39
- console.warn('[write-build-stamp] Failed:', err.message);
40
- }