@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.
- package/_standalone/.mindos-build-version +1 -1
- package/_standalone/.next/BUILD_ID +1 -1
- package/_standalone/.next/app-path-routes-manifest.json +19 -19
- package/_standalone/.next/build-manifest.json +3 -3
- package/_standalone/.next/cache/.previewinfo +1 -1
- package/_standalone/.next/cache/.rscinfo +1 -1
- package/_standalone/.next/cache/config.json +3 -3
- package/_standalone/.next/prerender-manifest.json +3 -3
- package/_standalone/.next/react-loadable-manifest.json +4 -4
- package/_standalone/.next/server/app/.well-known/agent-card.json/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/_global-error.html +2 -2
- package/_standalone/.next/server/app/_global-error.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/_standalone/.next/server/app/_not-found/page.js +1 -1
- package/_standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/agents/[agentKey]/page.js +1 -1
- package/_standalone/.next/server/app/agents/[agentKey]/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/agents/[agentKey]/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/agents/page.js +1 -1
- package/_standalone/.next/server/app/agents/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/agents/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/delegations/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/discover/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/config/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/detect/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/install/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/registry/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/session/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agent-activity/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agents/copy-skill/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agents/custom/detect/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agents/custom/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/ask/route.js +4 -4
- package/_standalone/.next/server/app/api/ask/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/ask-sessions/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/auth/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/backlinks/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/bootstrap/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/changes/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/channels/verify/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/connect/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/embedding/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/export/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/extract-docx/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/extract-pdf/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/file/import/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/file/raw/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/file/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/graph/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/activity/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/config/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/feishu/long-connection/event/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/feishu/long-connection/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/test/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/webhook/feishu/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/webhook-status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/inbox/clip/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/inbox/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/lint/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/agents/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/direct-tools/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/install/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/install-skill/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/restart/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/tools/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/uninstall/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/monitoring/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/obsidian/compat-report/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/obsidian/import/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/recent-files/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/search/prewarm/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/list-models/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/reset-token/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/test-key/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/check-path/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/check-port/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/generate-token/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/ls/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/space-overview/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/sync/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/tree-version/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/uninstall/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/update-check/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/update-status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/capture/history/page.js +1 -1
- package/_standalone/.next/server/app/capture/history/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/capture/history/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/capture/page.js +1 -1
- package/_standalone/.next/server/app/capture/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/capture/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/changelog/page.js +1 -1
- package/_standalone/.next/server/app/changelog/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/changelog/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/changes/page.js +1 -1
- package/_standalone/.next/server/app/changes/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/changes/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/echo/[segment]/page.js +1 -1
- package/_standalone/.next/server/app/echo/[segment]/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/echo/[segment]/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/echo/page.js +1 -1
- package/_standalone/.next/server/app/echo/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/echo/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/explore/page.js +1 -1
- package/_standalone/.next/server/app/explore/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/explore/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/help/page.js +1 -1
- package/_standalone/.next/server/app/help/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/help/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/inbox/history/page.js +1 -1
- package/_standalone/.next/server/app/inbox/history/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/inbox/history/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/login/page.js +1 -1
- package/_standalone/.next/server/app/login/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/page.js +1 -1
- package/_standalone/.next/server/app/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/setup/page.js +1 -1
- package/_standalone/.next/server/app/setup/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/todo/page.js +1 -1
- package/_standalone/.next/server/app/todo/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/todo/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/trash/page.js +2 -2
- package/_standalone/.next/server/app/trash/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/view/[...path]/page.js +2 -2
- package/_standalone/.next/server/app/view/[...path]/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/view/[...path]/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/wiki/page.js +2 -0
- package/_standalone/.next/server/app/wiki/page.js.nft.json +1 -0
- package/_standalone/.next/server/app/wiki/page_client-reference-manifest.js +1 -0
- package/_standalone/.next/server/app-paths-manifest.json +19 -19
- package/_standalone/.next/server/chunks/2250.js +1 -1
- package/_standalone/.next/server/chunks/{1057.js → 3861.js} +2 -2
- package/_standalone/.next/server/chunks/4802.js +30 -30
- package/_standalone/.next/server/chunks/8388.js +1 -1
- package/_standalone/.next/server/middleware-build-manifest.js +1 -1
- package/_standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/_standalone/.next/server/pages/500.html +2 -2
- package/_standalone/.next/server/server-reference-manifest.js +1 -1
- package/_standalone/.next/server/server-reference-manifest.json +1 -1
- package/_standalone/.next/static/chunks/{5581-bae715e40d227b5f.js → 5581-beecbc4ca5625aa9.js} +2 -2
- package/_standalone/.next/static/chunks/6762.c871d0bf3f45ba87.js +1 -0
- package/_standalone/.next/static/chunks/{8064-e65acd2762132099.js → 8064-acac37daf946082b.js} +1 -1
- package/_standalone/.next/static/chunks/{3985.695651f6b5cd768c.js → 8984.91fb8cde1983c564.js} +2 -2
- package/_standalone/.next/static/chunks/app/{layout-0cf6f2a65f605a0d.js → layout-20faba3bc0af7cd2.js} +19 -19
- package/_standalone/.next/static/chunks/app/trash/page-0c2c67929b71ef71.js +1 -0
- package/_standalone/.next/static/chunks/app/view/[...path]/not-found-fd06cc989103ebe7.js +1 -0
- package/_standalone/.next/static/chunks/app/view/[...path]/page-dba70888697ba910.js +12 -0
- package/_standalone/.next/static/chunks/app/wiki/page-9bc1fec84d343290.js +14 -0
- package/_standalone/.next/static/chunks/webpack-3c1d0331f1da64b8.js +1 -0
- package/_standalone/.next/trace +97 -97
- package/_standalone/MINDOS_ARCHITECTURE_DIAGRAM.md +488 -0
- package/_standalone/MINDOS_EXPLORATION_SUMMARY.md +229 -0
- package/_standalone/MINDOS_INFRASTRUCTURE_ANALYSIS.md +732 -0
- package/_standalone/__tests__/api/mcp-install.test.ts +8 -2
- package/_standalone/__tests__/core/embedding-provider.test.ts +78 -0
- package/_standalone/__tests__/skills/mindos-skill-copy-alignment.test.ts +10 -4
- package/_standalone/components/ask/AskHeader.tsx +25 -18
- package/_standalone/components/ask/SessionHistoryPanel.tsx +21 -12
- package/_standalone/components/settings/AiTab.tsx +3 -0
- package/_standalone/data/skills/mindos/SKILL.md +269 -0
- package/_standalone/data/skills/mindos/references/write-supplement.md +119 -0
- package/_standalone/data/skills/mindos-zh/SKILL.md +227 -0
- package/_standalone/data/skills/mindos-zh/references/write-supplement.md +119 -0
- package/app/__tests__/api/mcp-install.test.ts +8 -2
- package/app/__tests__/core/embedding-provider.test.ts +78 -0
- package/app/__tests__/skills/mindos-skill-copy-alignment.test.ts +10 -4
- package/app/app/api/ask/route.ts +14 -9
- package/app/app/view/[...path]/ViewPageClient.tsx +15 -12
- package/app/app/view/[...path]/not-found.tsx +9 -5
- package/app/components/ask/AskHeader.tsx +25 -18
- package/app/components/ask/SessionHistoryPanel.tsx +21 -12
- package/app/components/settings/AiTab.tsx +3 -0
- package/app/eslint.config.mjs +18 -0
- package/app/lib/core/embedding-provider.ts +12 -4
- package/app/lib/i18n/modules/settings.ts +2 -0
- package/app/package-lock.json +20214 -0
- package/app/tsconfig.tsbuildinfo +1 -0
- package/app/vitest.config.ts +14 -0
- package/assets/demo-flow-zh.html +622 -0
- package/assets/images/demo-flow-dark.png +0 -0
- package/assets/images/demo-flow-dark.webp +0 -0
- package/assets/images/demo-flow-light.png +0 -0
- package/assets/images/demo-flow-light.webp +0 -0
- package/assets/images/demo-flow-zh-dark.png +0 -0
- package/assets/images/demo-flow-zh-dark.webp +0 -0
- package/assets/images/demo-flow-zh-light.png +0 -0
- package/assets/images/demo-flow-zh-light.webp +0 -0
- package/assets/images/gui-sync-cv.png +0 -0
- package/assets/images/gui-sync-cv.webp +0 -0
- package/assets/images/mindos-chat.png +0 -0
- package/assets/images/mindos-chat.webp +0 -0
- package/assets/images/mindos-dashboard.png +0 -0
- package/assets/images/mindos-dashboard.webp +0 -0
- package/assets/images/mindos-echo.png +0 -0
- package/assets/images/mindos-echo.webp +0 -0
- package/assets/images/mindos-home.png +0 -0
- package/assets/images/mindos-home.webp +0 -0
- package/assets/images/wechat-qr.png +0 -0
- package/bin/lib/mcp-build.js +8 -0
- package/mcp/package-lock.json +2202 -0
- package/mcp/src/index.ts +783 -0
- package/package.json +13 -1
- package/.env.local.example +0 -38
- package/.playwright-cli/page-2026-04-12T12-26-53-393Z.yml +0 -6
- package/.playwright-cli/page-2026-04-12T12-27-20-256Z.yml +0 -120
- package/.syncinclude +0 -105
- package/MINDOS_SEARCH_DIAGRAM.txt +0 -243
- package/_standalone/.next/static/chunks/576.3cae31209383ddbd.js +0 -1
- package/_standalone/.next/static/chunks/app/trash/page-085f121c0815d542.js +0 -1
- package/_standalone/.next/static/chunks/app/view/[...path]/not-found-2a6eec67e91eaaf9.js +0 -1
- package/_standalone/.next/static/chunks/app/view/[...path]/page-faeaf8c09c1c6d7c.js +0 -12
- package/_standalone/.next/static/chunks/webpack-a1bb35f2d540e463.js +0 -1
- package/scripts/build-runtime-archive.sh +0 -151
- package/scripts/fix-postcss-deps.cjs +0 -75
- package/scripts/gen-renderer-index.js +0 -64
- package/scripts/hooks/block-public-merge.sh +0 -42
- package/scripts/hooks/pre-merge-commit +0 -4
- package/scripts/hooks/pre-push +0 -37
- package/scripts/hooks/prepare-commit-msg +0 -12
- package/scripts/migrate-agent-audit-log.js +0 -170
- package/scripts/migrate-agent-diff.js +0 -146
- package/scripts/parse-syncinclude.sh +0 -92
- package/scripts/prepare-standalone.mjs +0 -83
- package/scripts/release.sh +0 -145
- package/scripts/setup.js +0 -1427
- package/scripts/test-oss-upload.sh +0 -100
- package/scripts/verify-standalone.mjs +0 -129
- package/scripts/write-build-stamp.js +0 -40
- /package/_standalone/.next/static/{q5RP_Mx8BrCfvVDnLpRRc → 0UlbV2rA2i4B-8YYg41wQ}/_buildManifest.js +0 -0
- /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
|
-
}
|
/package/_standalone/.next/static/{q5RP_Mx8BrCfvVDnLpRRc → 0UlbV2rA2i4B-8YYg41wQ}/_buildManifest.js
RENAMED
|
File without changes
|
/package/_standalone/.next/static/{q5RP_Mx8BrCfvVDnLpRRc → 0UlbV2rA2i4B-8YYg41wQ}/_ssgManifest.js
RENAMED
|
File without changes
|