@geminilight/mindos-windows-arm64 1.0.4 → 1.0.6
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 +25 -25
- package/_standalone/__next/build-manifest.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.js +1 -1
- package/_standalone/__next/server/app/api/a2a/agents/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/a2a/delegations/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/a2a/discover/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/a2a/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/acp/config/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/acp/detect/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/acp/install/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/acp/registry/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/acp/session/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/agent-activity/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/agents/copy-skill/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/agents/custom/detect/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/agents/custom/route.js.nft.json +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 +1 -1
- package/_standalone/__next/server/app/api/ask/route.js.nft.json +1 -1
- package/_standalone/__next/server/app/api/ask/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/ask-sessions/route.js +1 -1
- package/_standalone/__next/server/app/api/ask-sessions/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/backlinks/route.js.nft.json +1 -1
- package/_standalone/__next/server/app/api/backlinks/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/bootstrap/route.js +1 -1
- package/_standalone/__next/server/app/api/bootstrap/route.js.nft.json +1 -1
- package/_standalone/__next/server/app/api/bootstrap/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/changes/route.js +1 -1
- package/_standalone/__next/server/app/api/changes/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/channels/verify/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/connect/route.js.nft.json +1 -1
- package/_standalone/__next/server/app/api/connect/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/embedding/route.js +1 -1
- package/_standalone/__next/server/app/api/embedding/route.js.nft.json +1 -1
- package/_standalone/__next/server/app/api/embedding/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/export/route.js +1 -1
- package/_standalone/__next/server/app/api/export/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/file/import/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/file/raw/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/file/route.js.nft.json +1 -1
- package/_standalone/__next/server/app/api/file/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/files/route.js +1 -1
- package/_standalone/__next/server/app/api/files/route.js.nft.json +1 -1
- package/_standalone/__next/server/app/api/files/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/git/route.js +1 -1
- package/_standalone/__next/server/app/api/git/route.js.nft.json +1 -1
- package/_standalone/__next/server/app/api/git/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/graph/route.js +1 -1
- package/_standalone/__next/server/app/api/graph/route.js.nft.json +1 -1
- package/_standalone/__next/server/app/api/graph/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/health/route.js +1 -1
- package/_standalone/__next/server/app/api/health/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/im/activity/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/im/config/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/im/feishu/long-connection/event/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/im/feishu/long-connection/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/im/status/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/im/test/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/im/webhook/feishu/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/im/webhook-status/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/inbox/clip/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/inbox/route.js.nft.json +1 -1
- package/_standalone/__next/server/app/api/inbox/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/init/route.js +1 -1
- package/_standalone/__next/server/app/api/init/route.js.nft.json +1 -1
- package/_standalone/__next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/lint/route.js +1 -1
- package/_standalone/__next/server/app/api/lint/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/mcp/agents/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/mcp/direct-tools/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/mcp/install/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/mcp/install-skill/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/mcp/restart/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/mcp/status/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/mcp/tools/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/mcp/uninstall/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/monitoring/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/obsidian/compat-report/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/obsidian/import/route.js.nft.json +1 -1
- package/_standalone/__next/server/app/api/obsidian/import/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/obsidian-plugins/settings/route.js +1 -1
- package/_standalone/__next/server/app/api/obsidian-plugins/settings/route.js.nft.json +1 -1
- package/_standalone/__next/server/app/api/obsidian-plugins/settings/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/recent-files/route.js +1 -1
- package/_standalone/__next/server/app/api/recent-files/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/restart/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/search/prewarm/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/search/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/settings/list-models/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/settings/reset-token/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/settings/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/settings/test-key/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/setup/check-path/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/setup/check-port/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/setup/generate-token/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/setup/ls/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/setup/route.js.nft.json +1 -1
- package/_standalone/__next/server/app/api/setup/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/skills/route.js +1 -1
- package/_standalone/__next/server/app/api/skills/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/space-overview/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/sync/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/tree-version/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/uninstall/route.js.nft.json +1 -1
- package/_standalone/__next/server/app/api/uninstall/route_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/api/update/route.js +1 -1
- package/_standalone/__next/server/app/api/update/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/update-check/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/update-status/route.js.nft.json +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.js +1 -1
- package/_standalone/__next/server/app/api/workflows/route.js.nft.json +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/settings/page.js +2 -2
- package/_standalone/__next/server/app/settings/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/settings/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.js.nft.json +1 -1
- package/_standalone/__next/server/app/trash/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app/view/[...path]/page.js +3 -3
- 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 +1 -1
- package/_standalone/__next/server/app/wiki/page.js.nft.json +1 -1
- package/_standalone/__next/server/app/wiki/page_client-reference-manifest.js +1 -1
- package/_standalone/__next/server/app-paths-manifest.json +25 -25
- package/_standalone/__next/server/chunks/1976.js +3 -3
- package/_standalone/__next/server/chunks/{49.js → 3219.js} +5 -5
- package/_standalone/__next/server/chunks/3566.js +1 -1
- package/_standalone/__next/server/chunks/6602.js +37 -37
- package/_standalone/__next/server/chunks/6754.js +1 -1
- package/_standalone/__next/server/chunks/6965.js +3 -3
- package/_standalone/__next/server/chunks/7765.js +1 -1
- package/_standalone/__next/server/chunks/8028.js +1 -1
- package/_standalone/__next/server/chunks/{7295.js → 8461.js} +19 -19
- 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/{1430-a3447cf370715cad.js → 1430-c4ffa328888515c1.js} +1 -1
- package/{static-web/_next/static/chunks/2992-509ffe91c9d819fe.js → _standalone/__next/static/chunks/2461-a1073a0bd04c228a.js} +12 -12
- package/_standalone/__next/static/chunks/{862-ad4c9d6035101858.js → 47-41e1a06e6d389b69.js} +1 -1
- package/_standalone/__next/static/chunks/{5200-2447cea5eb41a922.js → 5200-6c82e5ce54a95b4b.js} +2 -2
- package/_standalone/__next/static/chunks/{6947.5f1325c9403c27b2.js → 6947.7e50e18da7dc4aef.js} +1 -1
- package/_standalone/__next/static/chunks/9216.d3339c27169b21bf.js +1 -0
- package/{static-web/_next/static/chunks/app/layout-14395cc1f39f1847.js → _standalone/__next/static/chunks/app/layout-5966cd317bbed698.js} +6 -6
- package/_standalone/__next/static/chunks/app/settings/{page-2786e9eb5103d6f3.js → page-c9f44b3447a41431.js} +1 -1
- package/_standalone/__next/static/chunks/app/trash/page-d87207a63591ee16.js +1 -0
- package/_standalone/__next/static/chunks/app/view/[...path]/page-1898f4ae4ab28db0.js +12 -0
- package/_standalone/__next/static/chunks/{webpack-44b6c35a50fd7205.js → webpack-75abef9cbb1ea912.js} +1 -1
- package/dist/server/handlers/mcp-agents.d.ts +1 -0
- package/dist/server/handlers/mcp-agents.d.ts.map +1 -1
- package/dist/server/handlers/mcp-agents.js +230 -7
- package/dist/server/handlers/mcp-agents.js.map +1 -1
- package/dist/server/http.d.ts +7 -4
- package/dist/server/http.d.ts.map +1 -1
- package/dist/server/http.js +2 -0
- package/dist/server/http.js.map +1 -1
- package/dist/server/mcp-agent-registry.d.ts +4 -0
- package/dist/server/mcp-agent-registry.d.ts.map +1 -0
- package/dist/server/mcp-agent-registry.js +266 -0
- package/dist/server/mcp-agent-registry.js.map +1 -0
- package/package.json +1 -1
- package/runtime-manifest.json +1 -1
- package/scripts/smoke-desktop-app.mjs +82 -8
- package/scripts/verify-desktop-runtime.mjs +2 -1
- package/static-web/.mindos-build-version +1 -1
- package/static-web/_next/static/chunks/{1430-a3447cf370715cad.js → 1430-c4ffa328888515c1.js} +1 -1
- package/{_standalone/__next/static/chunks/2992-509ffe91c9d819fe.js → static-web/_next/static/chunks/2461-a1073a0bd04c228a.js} +12 -12
- package/static-web/_next/static/chunks/{862-ad4c9d6035101858.js → 47-41e1a06e6d389b69.js} +1 -1
- package/static-web/_next/static/chunks/{5200-2447cea5eb41a922.js → 5200-6c82e5ce54a95b4b.js} +2 -2
- package/static-web/_next/static/chunks/{6947.5f1325c9403c27b2.js → 6947.7e50e18da7dc4aef.js} +1 -1
- package/static-web/_next/static/chunks/9216.d3339c27169b21bf.js +1 -0
- package/{_standalone/__next/static/chunks/app/layout-14395cc1f39f1847.js → static-web/_next/static/chunks/app/layout-5966cd317bbed698.js} +6 -6
- package/static-web/_next/static/chunks/app/settings/{page-2786e9eb5103d6f3.js → page-c9f44b3447a41431.js} +1 -1
- package/static-web/_next/static/chunks/app/trash/page-d87207a63591ee16.js +1 -0
- package/static-web/_next/static/chunks/app/view/[...path]/page-1898f4ae4ab28db0.js +12 -0
- package/static-web/_next/static/chunks/{webpack-44b6c35a50fd7205.js → webpack-75abef9cbb1ea912.js} +1 -1
- package/static-web/help/index.html +3 -3
- package/static-web/index.html +3 -3
- package/static-web/setup/index.html +3 -3
- package/static-web/static-web-manifest.json +1 -1
- package/static-web/wiki/index.html +3 -3
- package/_standalone/__next/static/chunks/32.c0cfe8b9737e00f0.js +0 -1
- package/_standalone/__next/static/chunks/app/trash/page-98300a315c5d021a.js +0 -1
- package/_standalone/__next/static/chunks/app/view/[...path]/page-44010b2aff77acd6.js +0 -12
- package/static-web/_next/static/chunks/32.c0cfe8b9737e00f0.js +0 -1
- package/static-web/_next/static/chunks/app/trash/page-98300a315c5d021a.js +0 -1
- package/static-web/_next/static/chunks/app/view/[...path]/page-44010b2aff77acd6.js +0 -12
- /package/_standalone/__next/static/{Zq7WEkb-0jkSRDtJcWLrD → J9M4pgRyRHH7Ofbxuuklh}/_buildManifest.js +0 -0
- /package/_standalone/__next/static/{Zq7WEkb-0jkSRDtJcWLrD → J9M4pgRyRHH7Ofbxuuklh}/_ssgManifest.js +0 -0
- /package/static-web/_next/static/{Zq7WEkb-0jkSRDtJcWLrD → J9M4pgRyRHH7Ofbxuuklh}/_buildManifest.js +0 -0
- /package/static-web/_next/static/{Zq7WEkb-0jkSRDtJcWLrD → J9M4pgRyRHH7Ofbxuuklh}/_ssgManifest.js +0 -0
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2992],{3824:(e,t,n)=>{n.d(t,{A:()=>c});var s=n(66839),r=n(44223),a=n(53454),i=n(76723),o=n(72615);function l(e){return"options"in e}function c({value:e,onChange:t,options:n,className:c="",size:d="md",placeholder:u}){let[m,p]=(0,r.useState)(!1),[f,h]=(0,r.useState)(-1),[x,g]=(0,r.useState)(null),v=(0,r.useRef)(null),b=(0,r.useRef)(null),y=(0,r.useMemo)(()=>(function(e){let t=[];for(let n of e)l(n)?t.push(...n.options):t.push(n);return t})(n),[n]),j=(0,r.useMemo)(()=>y.find(t=>t.value===e)??null,[y,e]),w=(0,r.useCallback)(()=>{p(!1),h(-1)},[]),N=(0,r.useCallback)(e=>{t(e),w()},[t,w]);(0,r.useEffect)(()=>{if(!m)return;let e=e=>{v.current&&!v.current.contains(e.target)&&b.current&&!b.current.contains(e.target)&&w()};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[m,w]),(0,r.useEffect)(()=>{if(!m)return;let e=e=>{switch(e.key){case"Escape":e.preventDefault(),w(),v.current?.focus();break;case"ArrowDown":e.preventDefault(),h(e=>Math.min(e+1,y.length-1));break;case"ArrowUp":e.preventDefault(),h(e=>Math.max(e-1,0));break;case"Enter":e.preventDefault(),f>=0&&f<y.length&&(N(y[f].value),v.current?.focus())}};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[m,w,f,y,N]),(0,r.useEffect)(()=>{if(!m||!b.current||f<0)return;let e=b.current.querySelector(`[data-idx="${f}"]`);e&&e.scrollIntoView({block:"nearest"})},[m,f]);let k=(0,r.useCallback)(()=>{if(!v.current)return;let e=v.current.getBoundingClientRect(),t="sm"===d?200:260,n=window.innerHeight-e.bottom,s=e.top;g({top:n<t+8&&s>n?e.top:e.bottom,left:e.left,width:e.width,flipUp:n<t+8&&s>n})},[d]);(0,r.useEffect)(()=>{if(!m)return void g(null);let t=y.findIndex(t=>t.value===e);return h(t>=0?t:0),k(),window.addEventListener("scroll",k,!0),window.addEventListener("resize",k),()=>{window.removeEventListener("scroll",k,!0),window.removeEventListener("resize",k)}},[m,y,e,k]);let S="sm"===d,T=S?`inline-flex items-center gap-1 appearance-none rounded-md border border-border bg-background text-foreground outline-none focus-visible:ring-1 focus-visible:ring-ring transition-colors text-2xs px-1.5 py-0.5 pr-5 ${c}`:`w-full flex items-center gap-2 appearance-none rounded-lg border border-border bg-background text-foreground outline-none focus-visible:ring-1 focus-visible:ring-ring transition-colors text-sm px-3 py-2 pr-8 ${c}`,C=S?"w-full flex items-center gap-1.5 px-2 py-1 text-2xs text-left transition-colors cursor-pointer":"w-full flex items-center gap-2 px-3 py-1.5 text-sm text-left transition-colors cursor-pointer",A=-1;function E(t){let n=++A,r=t.value===e,a=n===f;return(0,s.jsxs)("button",{type:"button",role:"option","aria-selected":r,"data-idx":n,onClick:()=>N(t.value),onMouseEnter:()=>h(n),className:`${C} ${a?"bg-muted text-foreground":"text-foreground"}`,children:[t.icon,(0,s.jsx)("span",{className:"flex-1 truncate",children:t.label}),t.suffix,r&&(0,s.jsx)(i.A,{size:S?10:12,className:"shrink-0 text-[var(--amber)]"})]},t.value)}let R=m&&x&&(0,a.createPortal)((0,s.jsx)("div",{ref:b,className:S?"fixed z-50 overflow-y-auto rounded-md border border-border bg-card shadow-lg py-0.5":"fixed z-50 overflow-y-auto rounded-lg border border-border bg-card shadow-lg py-1",role:"listbox",style:{left:x.left,minWidth:x.width,maxHeight:S?200:260,...x.flipUp?{bottom:window.innerHeight-x.top+4}:{top:x.top+4}},children:n.map((e,t)=>l(e)?(0,s.jsxs)("div",{children:[t>0&&(0,s.jsx)("div",{className:"my-0.5 border-t border-border/50"}),(0,s.jsx)("div",{className:`py-1 text-2xs font-medium text-muted-foreground uppercase tracking-wider ${S?"px-2":"px-3"}`,children:e.label}),e.options.map(E)]},e.label):E(e))}),document.body);return(0,s.jsxs)("div",{className:"relative",children:[(0,s.jsxs)("button",{ref:v,type:"button",onClick:()=>p(e=>!e),"aria-haspopup":"listbox","aria-expanded":m,className:T,children:[j?.icon,(0,s.jsx)("span",{className:"flex-1 truncate text-left",children:j?.label??u??"—"}),j?.suffix,(0,s.jsx)(o.A,{size:S?12:14,className:`${S?"absolute right-1 top-1/2 -translate-y-1/2 text-muted-foreground pointer-events-none":"absolute right-2.5 top-1/2 -translate-y-1/2 text-muted-foreground pointer-events-none"} transition-transform duration-150 ${m?"rotate-180":""}`})]}),R]})}},20477:(e,t,n)=>{n.d(t,{f:()=>r});var s=n(65799);let r=(0,s.createServerReference)("60d5a08f775e86a6ff9efb5fb3ad2d3e24a9faeb34",s.callServer,void 0,s.findSourceMapURL,"renameFileAction")},27069:(e,t,n)=>{n.d(t,{Z:()=>h});var s=n(44223);let r="mindos-pinned-files",a="mindos:pins-changed";function i(){try{let e=localStorage.getItem(r);return e?JSON.parse(e):[]}catch{return[]}}function o(){return d}let l=[];function c(){return l}let d=[],u=!1;function m(){u||(d=i(),u=!0)}function p(e){m();let t=t=>{t.key===r&&(d=i(),e())},n=()=>{d=i(),e()};return window.addEventListener("storage",t),window.addEventListener(a,n),()=>{window.removeEventListener("storage",t),window.removeEventListener(a,n)}}function f(e){d=e;try{localStorage.setItem(r,JSON.stringify(e))}catch{}window.dispatchEvent(new Event(a))}function h(){m();let e=(0,s.useSyncExternalStore)(p,o,c),t=(0,s.useCallback)(t=>e.includes(t),[e]),n=(0,s.useCallback)(e=>{let t=i(),n=t.indexOf(e);n>=0?t.splice(n,1):t.unshift(e),f(t)},[]);return{pinnedFiles:e,isPinned:t,togglePin:n,reorderPins:(0,s.useCallback)(e=>{f(e)},[]),removePin:(0,s.useCallback)(e=>{f(i().filter(t=>t!==e))},[])}}},46354:(e,t,n)=>{n.d(t,{$7:()=>i,MZ:()=>d,TS:()=>l,UG:()=>a,YB:()=>c,pl:()=>o});let s=[],r=new Set;function a(){try{let e=localStorage.getItem("mindos-disabled-renderers");r=function(e){if(!e)return new Set;let t=JSON.parse(e);return Array.isArray(t)?new Set(t.filter(e=>"string"==typeof e&&e.length>0)):new Set}(e)}catch{r=new Set}}function i(e,t){let n=s.find(t=>t.id===e);if(!n?.core){t?r.delete(e):r.add(e);try{localStorage.setItem("mindos-disabled-renderers",JSON.stringify([...r]))}catch{}}}function o(e){let t=s.find(t=>t.id===e);return!!t?.core||!r.has(e)}function l(e){s.find(t=>t.id===e.id)||s.push(e)}function c(e,t,n){if(n){let e=s.find(e=>e.id===n);return e&&o(e.id)?e:void 0}return s.find(n=>o(n.id)&&n.match({filePath:e,extension:t}))}function d(){return s.filter(e=>!e.appBuiltinFeature)}},62329:(e,t,n)=>{n.d(t,{A:()=>r,C:()=>s});let s=new Set(["INSTRUCTION.md","README.md","CONFIG.json","CHANGELOG.md"]),r=new Set(["TODO.md"])},62800:(e,t,n)=>{n.d(t,{Vz:()=>o,wD:()=>r});var s=n(65264);async function r(){try{let e=await (0,s.n)("/api/settings"),t=e.ai?.provider??"",n=(e.ai?.providers??{})[t];return!!n?.apiKey}catch{return!1}}function a(e){for(let t of e.split("\n")){let e=t.trim();if(!e.startsWith("data:"))continue;let n=e.slice(5).trim();if(n)try{let e=JSON.parse(n);if("error"===e.type)return String(e.message||"AI initialization failed")}catch{}}return null}async function i(e){let t=e.getReader(),n=new TextDecoder,s="";try{for(;;){let{done:e,value:r}=await t.read();if(e)break;let i=(s+=n.decode(r,{stream:!0})).split("\n");s=i.pop()??"";let o=a(i.join("\n"));if(o)throw Error(o)}if(s){let e=a(s);if(e)throw Error(e)}}finally{t.releaseLock()}}function o(e,t,n=""){let s="u">typeof document&&"zh"===document.documentElement.lang?`初始化新建的心智空间「${e}」,路径为「${t}/」。${n?`描述:「${n}」。`:""}两个文件均已存在模板,用 write_file 覆盖:
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2461],{3824:(e,t,n)=>{n.d(t,{A:()=>c});var s=n(66839),r=n(44223),a=n(53454),i=n(76723),o=n(72615);function l(e){return"options"in e}function c({value:e,onChange:t,options:n,className:c="",size:d="md",placeholder:u}){let[m,p]=(0,r.useState)(!1),[f,h]=(0,r.useState)(-1),[x,g]=(0,r.useState)(null),v=(0,r.useRef)(null),b=(0,r.useRef)(null),y=(0,r.useMemo)(()=>(function(e){let t=[];for(let n of e)l(n)?t.push(...n.options):t.push(n);return t})(n),[n]),j=(0,r.useMemo)(()=>y.find(t=>t.value===e)??null,[y,e]),w=(0,r.useCallback)(()=>{p(!1),h(-1)},[]),N=(0,r.useCallback)(e=>{t(e),w()},[t,w]);(0,r.useEffect)(()=>{if(!m)return;let e=e=>{v.current&&!v.current.contains(e.target)&&b.current&&!b.current.contains(e.target)&&w()};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[m,w]),(0,r.useEffect)(()=>{if(!m)return;let e=e=>{switch(e.key){case"Escape":e.preventDefault(),w(),v.current?.focus();break;case"ArrowDown":e.preventDefault(),h(e=>Math.min(e+1,y.length-1));break;case"ArrowUp":e.preventDefault(),h(e=>Math.max(e-1,0));break;case"Enter":e.preventDefault(),f>=0&&f<y.length&&(N(y[f].value),v.current?.focus())}};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[m,w,f,y,N]),(0,r.useEffect)(()=>{if(!m||!b.current||f<0)return;let e=b.current.querySelector(`[data-idx="${f}"]`);e&&e.scrollIntoView({block:"nearest"})},[m,f]);let k=(0,r.useCallback)(()=>{if(!v.current)return;let e=v.current.getBoundingClientRect(),t="sm"===d?200:260,n=window.innerHeight-e.bottom,s=e.top;g({top:n<t+8&&s>n?e.top:e.bottom,left:e.left,width:e.width,flipUp:n<t+8&&s>n})},[d]);(0,r.useEffect)(()=>{if(!m)return void g(null);let t=y.findIndex(t=>t.value===e);return h(t>=0?t:0),k(),window.addEventListener("scroll",k,!0),window.addEventListener("resize",k),()=>{window.removeEventListener("scroll",k,!0),window.removeEventListener("resize",k)}},[m,y,e,k]);let S="sm"===d,T=S?`inline-flex items-center gap-1 appearance-none rounded-md border border-border bg-background text-foreground outline-none focus-visible:ring-1 focus-visible:ring-ring transition-colors text-2xs px-1.5 py-0.5 pr-5 ${c}`:`w-full flex items-center gap-2 appearance-none rounded-lg border border-border bg-background text-foreground outline-none focus-visible:ring-1 focus-visible:ring-ring transition-colors text-sm px-3 py-2 pr-8 ${c}`,C=S?"w-full flex items-center gap-1.5 px-2 py-1 text-2xs text-left transition-colors cursor-pointer":"w-full flex items-center gap-2 px-3 py-1.5 text-sm text-left transition-colors cursor-pointer",A=-1;function E(t){let n=++A,r=t.value===e,a=n===f;return(0,s.jsxs)("button",{type:"button",role:"option","aria-selected":r,"data-idx":n,onClick:()=>N(t.value),onMouseEnter:()=>h(n),className:`${C} ${a?"bg-muted text-foreground":"text-foreground"}`,children:[t.icon,(0,s.jsx)("span",{className:"flex-1 truncate",children:t.label}),t.suffix,r&&(0,s.jsx)(i.A,{size:S?10:12,className:"shrink-0 text-[var(--amber)]"})]},t.value)}let R=m&&x&&(0,a.createPortal)((0,s.jsx)("div",{ref:b,className:S?"fixed z-50 overflow-y-auto rounded-md border border-border bg-card shadow-lg py-0.5":"fixed z-50 overflow-y-auto rounded-lg border border-border bg-card shadow-lg py-1",role:"listbox",style:{left:x.left,minWidth:x.width,maxHeight:S?200:260,...x.flipUp?{bottom:window.innerHeight-x.top+4}:{top:x.top+4}},children:n.map((e,t)=>l(e)?(0,s.jsxs)("div",{children:[t>0&&(0,s.jsx)("div",{className:"my-0.5 border-t border-border/50"}),(0,s.jsx)("div",{className:`py-1 text-2xs font-medium text-muted-foreground uppercase tracking-wider ${S?"px-2":"px-3"}`,children:e.label}),e.options.map(E)]},e.label):E(e))}),document.body);return(0,s.jsxs)("div",{className:"relative",children:[(0,s.jsxs)("button",{ref:v,type:"button",onClick:()=>p(e=>!e),"aria-haspopup":"listbox","aria-expanded":m,className:T,children:[j?.icon,(0,s.jsx)("span",{className:"flex-1 truncate text-left",children:j?.label??u??"—"}),j?.suffix,(0,s.jsx)(o.A,{size:S?12:14,className:`${S?"absolute right-1 top-1/2 -translate-y-1/2 text-muted-foreground pointer-events-none":"absolute right-2.5 top-1/2 -translate-y-1/2 text-muted-foreground pointer-events-none"} transition-transform duration-150 ${m?"rotate-180":""}`})]}),R]})}},6379:(e,t,n)=>{n.d(t,{Ay:()=>en,Fo:()=>O,gL:()=>P});var s=n(66839),r=n(44223),a=n(56261),i=n(62329),o=n(58221),l=n(18659),c=n(30401),d=n(44361),u=n(72615),m=n(95991),p=n(14987),f=n(27636),h=n(61017),x=n(52954),g=n(82417),v=n(24336),b=n(2408),y=n(31606),j=n(65799);let w=(0,j.createServerReference)("60370ba03dc83c1e902aff5b9a25205c5b6b843ea5",j.callServer,void 0,j.findSourceMapURL,"createFileAction"),N=(0,j.createServerReference)("60a7147e8a589aa8fcd0602636bbfc11893a44886d",j.callServer,void 0,j.findSourceMapURL,"renameSpaceAction");var k=n(12655);let S=(0,j.createServerReference)("40dde1921e0bb2f8e4a43d2e77a41225230de413db",j.callServer,void 0,j.findSourceMapURL,"deleteSpaceAction"),T=(0,j.createServerReference)("40d3b59414a5e0520ddec1039741e96386c7445f78",j.callServer,void 0,j.findSourceMapURL,"deleteFolderAction");var C=n(36636),A=n(51326),E=n(79455),R=n(2073),z=n(84734),L=n(27069);let $="show-hidden-files";function D(e){let t=t=>{t.key===$&&e()},n=()=>e();return window.addEventListener("storage",t),window.addEventListener("mindos:hidden-files-changed",n),()=>{window.removeEventListener("storage",t),window.removeEventListener("mindos:hidden-files-changed",n)}}function F(){return"true"===localStorage.getItem($)}function O(e){localStorage.setItem($,String(e)),window.dispatchEvent(new Event("mindos:hidden-files-changed"))}function P(){return(0,r.useSyncExternalStore)(D,F,()=>!1)}var I=n(73601),M=n(85764),U=n(10952);let W=(0,j.createServerReference)("40d306efe4cd5d739ab6ba5ae5d669fee638371e69",j.callServer,void 0,j.findSourceMapURL,"convertToSpaceAction");var H=n(62800);async function J(e){try{await navigator.clipboard.writeText(e)}catch{}}let B="w-full flex items-center gap-2 px-3 py-2 text-sm text-foreground hover:bg-muted transition-colors text-left",_="w-full flex items-center gap-2 px-3 py-2 text-sm text-error hover:bg-error/10 transition-colors text-left",Y="my-1 border-t border-border/50";function G({x:e,y:t,onClose:n,menuHeight:a,children:i}){let o=(0,r.useRef)(null);(0,r.useEffect)(()=>{let e=e=>{o.current&&!o.current.contains(e.target)&&n()},t=e=>{"Escape"===e.key&&n()};return document.addEventListener("mousedown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",t)}},[n]);let l=Math.min(t,window.innerHeight-(a??160)),c=Math.min(e,window.innerWidth-200);return(0,s.jsx)("div",{ref:o,className:"fixed z-50 min-w-[180px] bg-card border border-border rounded-lg shadow-lg py-1",style:{top:l,left:c},children:i})}function K({x:e,y:t,node:n,onClose:r,onRename:i,onNewFile:l,onImport:c,onDelete:d}){let u=(0,a.useRouter)(),{t:m}=(0,R.Y)(),{isPinned:p,togglePin:f}=(0,L.Z)(),h=p(n.path);return(0,s.jsxs)(G,{x:e,y:t,onClose:r,children:[(0,s.jsxs)("button",{className:B,onClick:()=>{l(),r()},children:[(0,s.jsx)(I.A,{size:14,className:"shrink-0"})," ",m.fileTree.newFile]}),(0,s.jsxs)("button",{className:B,onClick:()=>{u.push(`/view/${(0,o.O0)(`${n.path}/INSTRUCTION.md`)}`),r()},children:[(0,s.jsx)(M.A,{size:14,className:"shrink-0"})," ",m.fileTree.viewRules]}),c&&(0,s.jsxs)("button",{className:B,onClick:()=>{c(n.path),r()},children:[(0,s.jsx)(U.A,{size:14,className:"shrink-0"})," ",m.fileTree.importFile]}),(0,s.jsx)("div",{className:Y}),(0,s.jsxs)("button",{className:B,onClick:()=>{f(n.path),r()},children:[(0,s.jsx)(g.A,{size:14,className:`shrink-0 ${h?"fill-[var(--amber)] text-[var(--amber)]":""}`}),h?m.fileTree.removeFromFavorites:m.fileTree.pinToFavorites]}),(0,s.jsxs)("button",{className:B,onClick:()=>{J(n.path),r()},children:[(0,s.jsx)(v.A,{size:14,className:"shrink-0"})," ",m.fileTree.copyPath]}),(0,s.jsxs)("button",{className:B,onClick:()=>{i(),r()},children:[(0,s.jsx)(b.A,{size:14,className:"shrink-0"})," ",m.fileTree.renameSpace]}),(0,s.jsx)("div",{className:Y}),(0,s.jsxs)("button",{className:_,onClick:()=>{r(),d()},children:[(0,s.jsx)(y.A,{size:14,className:"shrink-0"}),m.fileTree.deleteSpace]})]})}function V({x:e,y:t,node:n,onClose:i,onRename:o,onNewFile:l,onDelete:c}){let d=(0,a.useRouter)(),{t:u}=(0,R.Y)(),[m,f]=(0,r.useTransition)(),{isPinned:h,togglePin:x}=(0,L.Z)(),j=h(n.path);return(0,s.jsxs)(G,{x:e,y:t,onClose:i,menuHeight:220,children:[(0,s.jsxs)("button",{className:B,onClick:()=>{l(),i()},children:[(0,s.jsx)(I.A,{size:14,className:"shrink-0"})," ",u.fileTree.newFile]}),(0,s.jsx)("div",{className:Y}),(0,s.jsxs)("button",{className:B,onClick:()=>{x(n.path),i()},children:[(0,s.jsx)(g.A,{size:14,className:`shrink-0 ${j?"fill-[var(--amber)] text-[var(--amber)]":""}`}),j?u.fileTree.removeFromFavorites:u.fileTree.pinToFavorites]}),(0,s.jsxs)("button",{className:B,disabled:m,onClick:()=>{f(async()=>{if((await W(n.path)).success){d.refresh(),window.dispatchEvent(new Event("mindos:files-changed"));let e=n.name.replace(/^[\p{Emoji_Presentation}\p{Extended_Pictographic}\s]+/u,"")||n.name;(0,H.wD)().then(t=>{t&&(0,H.Vz)(e,n.path)})}i()})},children:[(0,s.jsx)(p.A,{size:14,className:"shrink-0 text-[var(--amber)]"})," ",u.fileTree.convertToSpace]}),(0,s.jsxs)("button",{className:B,onClick:()=>{J(n.path),i()},children:[(0,s.jsx)(v.A,{size:14,className:"shrink-0"})," ",u.fileTree.copyPath]}),(0,s.jsxs)("button",{className:B,onClick:()=>{o(),i()},children:[(0,s.jsx)(b.A,{size:14,className:"shrink-0"})," ",u.fileTree.rename]}),(0,s.jsx)("div",{className:Y}),(0,s.jsxs)("button",{className:_,onClick:()=>{i(),c()},children:[(0,s.jsx)(y.A,{size:14,className:"shrink-0"}),u.fileTree.deleteFolder]})]})}var Z=n(72466);function q(){window.dispatchEvent(new Event("mindos:files-changed"))}async function Q(e){try{await navigator.clipboard.writeText(e)}catch{}}function X({dirPath:e,depth:t,onDone:n}){let[i,l]=(0,r.useState)(""),[c,u]=(0,r.useTransition)(),[m,p]=(0,r.useState)(""),f=(0,a.useRouter)(),{t:h}=(0,R.Y)(),x=(0,r.useRef)(null),g=(0,r.useCallback)(()=>{let t=i.trim();t?u(async()=>{let s=await w(e,t);s.success&&s.filePath?(n(),f.push(`/view/${(0,o.O0)(s.filePath)}`),f.refresh(),q()):p(s.error||h.fileTree.failed)}):p(h.fileTree.enterFileName)},[i,e,n,f,h]);return(0,r.useEffect)(()=>{let e=e=>{x.current&&!x.current.contains(e.target)&&n()},t=setTimeout(()=>document.addEventListener("mousedown",e),0);return()=>{clearTimeout(t),document.removeEventListener("mousedown",e)}},[n]),(0,s.jsxs)("div",{ref:x,className:"px-2 pb-1",style:{paddingLeft:`${12*t+20}px`},children:[(0,s.jsxs)("div",{className:"flex items-center gap-1",children:[(0,s.jsx)("input",{autoFocus:!0,type:"text",value:i,onChange:e=>{l(e.target.value),p("")},onKeyDown:e=>{"Enter"===e.key&&g(),"Escape"===e.key&&n()},placeholder:"filename.md",className:" flex-1 bg-muted border border-border rounded px-2 py-1 text-xs text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring "}),c?(0,s.jsx)(d.A,{size:13,className:"text-muted-foreground animate-spin shrink-0"}):(0,s.jsx)("button",{onClick:g,className:"text-xs text-[var(--amber)] hover:text-foreground shrink-0 px-1",children:h.fileTree.create})]}),m&&(0,s.jsx)("p",{className:"text-xs text-error mt-0.5 px-1",children:m})]})}let ee=(0,r.memo)(function({node:e,depth:t,currentPath:n,onNavigate:l,maxOpenDepth:c,onImport:g}){let v=(0,a.useRouter)(),b=n.startsWith(e.path+"/")||n===e.path,y=!!e.isSpace,[j,w]=(0,r.useState)(0===t||b),[A,L]=(0,r.useState)(0===t||b),[$,D]=(0,r.useState)(!1),[F,O]=(0,r.useState)(!1),[P,I]=(0,r.useState)(e.name),[M,U]=(0,r.useTransition)(),W=(0,r.useRef)(null),H=(0,r.useRef)(null),[J,B]=(0,r.useState)(null),{t:_}=(0,R.Y)(),[Y,G]=(0,r.useState)(null),[Q,ee]=(0,r.useTransition)(),{isDragTarget:et,handleRowDragOver:es,handleRowDragEnter:er,handleRowDragLeave:ea,handleRowDrop:ei}=function(e,t,n,s){let[a,i]=(0,r.useState)(!1),o=(0,r.useRef)(null),l=(0,r.useRef)(null),c=(0,r.useCallback)(()=>{o.current&&(clearTimeout(o.current),o.current=null)},[]),d=(0,r.useCallback)(e=>{e.dataTransfer.types.includes("Files")&&(e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="copy",l.current&&(clearTimeout(l.current),l.current=null),a||i(!0))},[a]),u=(0,r.useCallback)(e=>{e.dataTransfer.types.includes("Files")&&(e.preventDefault(),e.stopPropagation(),i(!0),c(),t||(o.current=setTimeout(()=>{n(!0),o.current=null},500)))},[t,c,n]),m=(0,r.useCallback)(e=>{e.dataTransfer.types.includes("Files")&&(e.stopPropagation(),l.current=setTimeout(()=>{i(!1),c(),l.current=null},50))},[c]),p=(0,r.useCallback)(t=>{t.preventDefault(),t.stopPropagation(),i(!1),c(),l.current&&(clearTimeout(l.current),l.current=null);let n=t.dataTransfer.files;n.length>0&&(0,Z.Nh)(Array.from(n),e.path,s)},[e.path,s,c]);return(0,r.useEffect)(()=>()=>{o.current&&clearTimeout(o.current),l.current&&clearTimeout(l.current)},[]),{isDragTarget:a,handleRowDragOver:d,handleRowDragEnter:u,handleRowDragLeave:m,handleRowDrop:p}}(e,j,(0,r.useCallback)(e=>{w(e),e&&L(!0)},[]),_),eo=(0,r.useCallback)(()=>{w(e=>(e||L(!0),!e))},[]),el=(0,r.useRef)(void 0);(0,r.useEffect)(()=>{if(null==c){el.current=c;return}if(el.current!==c){if(null===el.current||void 0===el.current)t>c?w(!1):L(!0);else{let e=t<=c;w(e),e&&L(!0)}el.current=c}},[c,t]),(0,r.useEffect)(()=>()=>{H.current&&clearTimeout(H.current)},[]);let ec=(0,r.useCallback)(t=>{t?.preventDefault(),t?.stopPropagation(),H.current&&(clearTimeout(H.current),H.current=null),I(e.name),O(!0),setTimeout(()=>W.current?.select(),0)},[e.name]),ed=(0,r.useCallback)(()=>{let t=P.trim();t&&t!==e.name?U(async()=>{let n=y?N:k.f,s=await n(e.path,t);s.success&&s.newPath?(O(!1),v.push(`/view/${(0,o.O0)(s.newPath)}`),v.refresh(),q()):O(!1)}):O(!1)},[P,e.name,e.path,v,y]),eu=(0,r.useCallback)(()=>{F||(H.current&&clearTimeout(H.current),H.current=setTimeout(()=>{v.push(`/view/${(0,o.O0)(e.path)}`),l?.(),H.current=null},180))},[F,v,e.path,l]);(0,r.useCallback)(e=>{e.stopPropagation(),eo()},[eo]);let em=(0,r.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),B({x:e.clientX,y:e.clientY})},[]),ep=y?function e(t){return"file"===t.type?+!i.C.has(t.name):(t.children??[]).reduce((t,n)=>t+e(n),0)}(e):0;if(F)return(0,s.jsxs)("div",{className:"relative px-2 py-0.5",style:{paddingLeft:`${12*t+8}px`},children:[(0,s.jsx)("input",{ref:W,autoFocus:!0,value:P,onChange:e=>I(e.target.value),onKeyDown:e=>{"Enter"===e.key&&ed(),"Escape"===e.key&&O(!1)},onBlur:ed,className:"w-full bg-muted border border-border rounded px-2 py-0.5 text-xs text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"}),M&&(0,s.jsx)(d.A,{size:12,className:"absolute right-3 top-1/2 -translate-y-1/2 animate-spin text-muted-foreground"})]});let ef=y&&0===t;return(0,s.jsxs)("div",{children:[(0,s.jsxs)("div",{className:`relative group/dir flex items-center transition-colors duration-100 ${et?"bg-[var(--amber)]/10 rounded-md":""}`,onContextMenu:em,onDragEnter:er,onDragOver:es,onDragLeave:ea,onDrop:ei,children:[(0,s.jsx)("button",{onClick:eo,className:"shrink-0 p-1 rounded hover:bg-muted text-muted-foreground transition-colors",style:{marginLeft:`${12*t+4}px`},"aria-label":j?`Collapse ${e.name}`:`Expand ${e.name}`,"aria-expanded":j,children:(0,s.jsx)("span",{className:"block transition-transform duration-150",style:{transform:j?"rotate(0deg)":"rotate(-90deg)"},children:(0,s.jsx)(u.A,{size:10})})}),(0,s.jsxs)("button",{type:"button",onClick:eu,draggable:!0,onDragStart:t=>{t.dataTransfer.setData("text/mindos-path",e.path),t.dataTransfer.setData("text/mindos-type","directory"),t.dataTransfer.effectAllowed="copy"},className:`
|
|
2
|
+
flex-1 flex items-center gap-1.5 px-1 py-1 rounded text-left min-w-0 pr-16
|
|
3
|
+
text-sm transition-colors duration-100
|
|
4
|
+
hover:bg-muted cursor-default
|
|
5
|
+
${b?"text-foreground":"text-muted-foreground hover:text-foreground"}
|
|
6
|
+
`,children:[y?"Inbox"===e.name?(0,s.jsx)(m.A,{size:14,className:"shrink-0 text-[var(--amber)]"}):(0,s.jsx)(p.A,{size:14,className:"shrink-0 text-[var(--amber)]"}):j?(0,s.jsx)(f.A,{size:14,className:"text-yellow-400 shrink-0"}):(0,s.jsx)(h.A,{size:14,className:"text-yellow-400 shrink-0"}),(0,s.jsx)("span",{className:"truncate leading-5",suppressHydrationWarning:!0,children:e.name}),y&&!j&&(0,s.jsx)("span",{className:"ml-auto text-xs text-muted-foreground shrink-0 tabular-nums pr-1",children:ep})]}),(0,s.jsx)("div",{className:"absolute right-1 top-1/2 -translate-y-1/2 hidden group-hover/dir:flex items-center gap-0.5 z-10",children:(0,s.jsx)("button",{type:"button",onClick:e=>{e.preventDefault(),e.stopPropagation();let t=e.currentTarget.getBoundingClientRect();B({x:t.left,y:t.bottom+4})},className:"p-0.5 rounded text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",title:"More",children:(0,s.jsx)(x.A,{size:14})})})]}),(0,s.jsx)("div",{className:`grid transition-[grid-template-rows] duration-200 ease-out ${j?"grid-rows-[1fr]":"grid-rows-[0fr]"}`,children:(0,s.jsxs)("div",{className:`overflow-hidden ${ef?"border-l-2 ml-[18px]":""}`,style:ef?{borderColor:"color-mix(in srgb, var(--amber) 30%, transparent)"}:void 0,...!j&&{inert:!0},children:[A&&e.children&&(0,s.jsx)(en,{nodes:e.children,depth:ef?1:t+1,onNavigate:l,maxOpenDepth:c,parentIsSpace:y,onImport:g}),$&&(0,s.jsx)(X,{dirPath:e.path,depth:ef?0:t,onDone:()=>D(!1)})]})}),J&&(y?(0,s.jsx)(K,{x:J.x,y:J.y,node:e,onClose:()=>B(null),onRename:()=>ec(),onNewFile:()=>{w(!0),L(!0),D(!0)},onImport:g,onDelete:()=>G("space")}):(0,s.jsx)(V,{x:J.x,y:J.y,node:e,onClose:()=>B(null),onRename:()=>ec(),onNewFile:()=>{w(!0),L(!0),D(!0)},onDelete:()=>G("folder")})),(0,s.jsx)(z.TM,{open:null!==Y,title:"space"===Y?_.fileTree.deleteSpace:_.fileTree.deleteFolder,message:"space"===Y?_.fileTree.confirmDeleteSpace(e.name):_.fileTree.confirmDeleteFolder(e.name),confirmLabel:"space"===Y?_.fileTree.deleteSpace:_.fileTree.deleteFolder,cancelLabel:_.view?.cancel??"Cancel",variant:"destructive",onCancel:()=>G(null),onConfirm:()=>{G(null),ee(async()=>{let t="space"===Y?await S(e.path):await T(e.path);if(t.success&&t.trashId){let n=t.trashId,s=e.path.split("/").pop()??e.path;E.oR.undo(`${_.trash?.movedToTrash??"Deleted"} ${s}`,async()=>{let e=await (0,C.Y)(n);e.success?(v.refresh(),q()):E.oR.error(e.error??"Undo failed")},{label:_.trash?.undo??"Undo"}),v.push("/"),v.refresh(),q()}})}})]})}),et=(0,r.memo)(function({node:e,depth:t,currentPath:n,onNavigate:u}){let m=(0,a.useRouter)(),p=n===e.path,[f,h]=(0,r.useState)(!1),[j,w]=(0,r.useState)(e.name),[N,S]=(0,r.useTransition)(),[,T]=(0,r.useTransition)(),$=(0,r.useRef)(null),{t:D}=(0,R.Y)(),{isPinned:F,togglePin:O}=(0,L.Z)(),P=F(e.path),I=!e.path.includes("/")&&i.A.has(e.name),[M,U]=(0,r.useState)(!1),[W,H]=(0,r.useState)(null),J=(0,r.useCallback)(()=>{f||(m.push(`/view/${(0,o.O0)(e.path)}`),u?.())},[m,e.path,u,f]),K=(0,r.useCallback)(t=>{t.stopPropagation(),w(e.name),h(!0),setTimeout(()=>$.current?.select(),0)},[e.name]),V=(0,r.useCallback)(()=>{let t=j.trim();t&&t!==e.name?S(async()=>{let n=await (0,k.f)(e.path,t);n.success&&n.newPath?(h(!1),m.push(`/view/${(0,o.O0)(n.newPath)}`),m.refresh(),q()):h(!1)}):h(!1)},[j,e.name,e.path,m]),Z=(0,r.useCallback)(e=>{e.stopPropagation(),U(!0)},[]),X=(0,r.useCallback)(t=>{t.dataTransfer.setData("text/mindos-path",e.path),t.dataTransfer.effectAllowed="copy"},[e.path]),ee=(0,r.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),H({x:e.clientX,y:e.clientY})},[]);return f?(0,s.jsxs)("div",{className:"relative px-2 py-0.5",style:{paddingLeft:`${12*t+8}px`},children:[(0,s.jsx)("input",{ref:$,autoFocus:!0,value:j,onChange:e=>w(e.target.value),onKeyDown:e=>{"Enter"===e.key&&V(),"Escape"===e.key&&h(!1)},onBlur:V,className:"w-full bg-muted border border-border rounded px-2 py-0.5 text-xs text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"}),N&&(0,s.jsx)(d.A,{size:12,className:"absolute right-3 top-1/2 -translate-y-1/2 animate-spin text-muted-foreground"})]}):(0,s.jsxs)("div",{className:"relative group/file",children:[(0,s.jsxs)("button",{onClick:J,onContextMenu:ee,draggable:!0,onDragStart:X,"data-filepath":e.path,className:`
|
|
7
|
+
w-full flex items-center gap-1.5 px-2 py-1 rounded text-left
|
|
8
|
+
text-sm transition-colors duration-100 cursor-default pr-16
|
|
9
|
+
${p?"bg-accent text-foreground":"hover:bg-muted text-muted-foreground hover:text-foreground"}
|
|
10
|
+
`,style:{paddingLeft:`${12*t+8}px`},children:["directory"===e.type?null:".csv"===e.extension?(0,s.jsx)(l.A,{size:14,className:"text-success shrink-0"}):(0,s.jsx)(c.A,{size:14,className:"text-muted-foreground shrink-0"}),(0,s.jsx)("span",{className:"truncate leading-5",suppressHydrationWarning:!0,children:e.name}),P&&(0,s.jsx)(g.A,{size:10,className:"shrink-0 fill-[var(--amber)] text-[var(--amber)] opacity-60"})]}),(0,s.jsx)("div",{className:"absolute right-1 top-1/2 -translate-y-1/2 hidden group-hover/file:flex items-center gap-0.5",children:(0,s.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation();let t=e.currentTarget.getBoundingClientRect();H({x:t.left,y:t.bottom+4})},className:"p-0.5 rounded text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",title:"More",children:(0,s.jsx)(x.A,{size:14})})}),W&&(0,s.jsxs)(G,{x:W.x,y:W.y,onClose:()=>H(null),menuHeight:140,children:[(0,s.jsxs)("button",{className:B,onClick:()=>{Q(e.path),H(null)},children:[(0,s.jsx)(v.A,{size:14,className:"shrink-0"})," ",D.fileTree.copyPath]}),(0,s.jsxs)("button",{className:B,onClick:()=>{O(e.path),H(null)},children:[(0,s.jsx)(g.A,{size:14,className:`shrink-0 ${P?"fill-[var(--amber)] text-[var(--amber)]":""}`}),P?D.fileTree.removeFromFavorites:D.fileTree.pinToFavorites]}),!I&&(0,s.jsxs)("button",{className:B,onClick:e=>{H(null),K(e)},children:[(0,s.jsx)(b.A,{size:14,className:"shrink-0"})," ",D.fileTree.rename]}),!I&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("div",{className:Y}),(0,s.jsxs)("button",{className:_,onClick:e=>{H(null),Z(e)},children:[(0,s.jsx)(y.A,{size:14,className:"shrink-0"})," ",D.fileTree.delete]})]})]}),(0,s.jsx)(z.TM,{open:M,title:D.fileTree.delete,message:D.fileTree.confirmDelete(e.name),confirmLabel:D.fileTree.delete,cancelLabel:D.view?.cancel??"Cancel",variant:"destructive",onCancel:()=>U(!1),onConfirm:()=>{U(!1),T(async()=>{let t=await (0,A.i)(e.path);if(t.success){if(t.trashId){let n=t.trashId,s=e.path.split("/").pop()??e.path;E.oR.undo(`${D.trash?.movedToTrash??"Deleted"} ${s}`,async()=>{let e=await (0,C.Y)(n);e.success?(m.refresh(),q()):E.oR.error(e.error??"Undo failed")},{label:D.trash?.undo??"Undo"})}m.refresh(),q()}})}})]})});function en({nodes:e,depth:t=0,onNavigate:n,maxOpenDepth:o,parentIsSpace:l,onImport:c}){var d;let u,m=(u="/view/",(d=(0,a.usePathname)()).startsWith(u)?d.slice(u.length).split("/").map(decodeURIComponent).join("/"):""),p=P(),f=0===t,h=(0,r.useMemo)(()=>{let t=p?e:e.filter(e=>!(f&&e.name.startsWith(".")||"file"===e.type&&i.C.has(e.name)||"directory"===e.type&&e.name.startsWith(".")));return f?t.filter(e=>"directory"!==e.type||"Inbox"!==e.name):t},[e,p,f]);return(0,r.useEffect)(()=>{if(!m||0!==t)return;let e=setTimeout(()=>{let e=document.querySelector(`[data-filepath="${CSS.escape(m)}"]`);e?.scrollIntoView({block:"nearest",behavior:"smooth"})},120);return()=>clearTimeout(e)},[m,t]),(0,s.jsx)("div",{className:"flex flex-col gap-0.5",children:h.map(e=>"directory"===e.type?(0,s.jsx)(ee,{node:e,depth:t,currentPath:m,onNavigate:n,maxOpenDepth:o,onImport:c},e.path):(0,s.jsx)(et,{node:e,depth:t,currentPath:m,onNavigate:n},e.path))})}},12655:(e,t,n)=>{n.d(t,{f:()=>r});var s=n(65799);let r=(0,s.createServerReference)("60239502cf2efb160c3deb517f047df9dee5c98d60",s.callServer,void 0,s.findSourceMapURL,"renameFileAction")},27069:(e,t,n)=>{n.d(t,{Z:()=>h});var s=n(44223);let r="mindos-pinned-files",a="mindos:pins-changed";function i(){try{let e=localStorage.getItem(r);return e?JSON.parse(e):[]}catch{return[]}}function o(){return d}let l=[];function c(){return l}let d=[],u=!1;function m(){u||(d=i(),u=!0)}function p(e){m();let t=t=>{t.key===r&&(d=i(),e())},n=()=>{d=i(),e()};return window.addEventListener("storage",t),window.addEventListener(a,n),()=>{window.removeEventListener("storage",t),window.removeEventListener(a,n)}}function f(e){d=e;try{localStorage.setItem(r,JSON.stringify(e))}catch{}window.dispatchEvent(new Event(a))}function h(){m();let e=(0,s.useSyncExternalStore)(p,o,c),t=(0,s.useCallback)(t=>e.includes(t),[e]),n=(0,s.useCallback)(e=>{let t=i(),n=t.indexOf(e);n>=0?t.splice(n,1):t.unshift(e),f(t)},[]);return{pinnedFiles:e,isPinned:t,togglePin:n,reorderPins:(0,s.useCallback)(e=>{f(e)},[]),removePin:(0,s.useCallback)(e=>{f(i().filter(t=>t!==e))},[])}}},36636:(e,t,n)=>{n.d(t,{Y:()=>r});var s=n(65799);let r=(0,s.createServerReference)("405c268338104564b3515ba0c568ffa466d3b52f50",s.callServer,void 0,s.findSourceMapURL,"undoDeleteAction")},46354:(e,t,n)=>{n.d(t,{$7:()=>i,MZ:()=>d,TS:()=>l,UG:()=>a,YB:()=>c,pl:()=>o});let s=[],r=new Set;function a(){try{let e=localStorage.getItem("mindos-disabled-renderers");r=function(e){if(!e)return new Set;let t=JSON.parse(e);return Array.isArray(t)?new Set(t.filter(e=>"string"==typeof e&&e.length>0)):new Set}(e)}catch{r=new Set}}function i(e,t){let n=s.find(t=>t.id===e);if(!n?.core){t?r.delete(e):r.add(e);try{localStorage.setItem("mindos-disabled-renderers",JSON.stringify([...r]))}catch{}}}function o(e){let t=s.find(t=>t.id===e);return!!t?.core||!r.has(e)}function l(e){s.find(t=>t.id===e.id)||s.push(e)}function c(e,t,n){if(n){let e=s.find(e=>e.id===n);return e&&o(e.id)?e:void 0}return s.find(n=>o(n.id)&&n.match({filePath:e,extension:t}))}function d(){return s.filter(e=>!e.appBuiltinFeature)}},51326:(e,t,n)=>{n.d(t,{i:()=>r});var s=n(65799);let r=(0,s.createServerReference)("40e93274068af9427baf93a6b8b937a4c4e85e76f7",s.callServer,void 0,s.findSourceMapURL,"deleteFileAction")},62329:(e,t,n)=>{n.d(t,{A:()=>r,C:()=>s});let s=new Set(["INSTRUCTION.md","README.md","CONFIG.json","CHANGELOG.md"]),r=new Set(["TODO.md"])},62800:(e,t,n)=>{n.d(t,{Vz:()=>o,wD:()=>r});var s=n(65264);async function r(){try{let e=await (0,s.n)("/api/settings"),t=e.ai?.provider??"",n=(e.ai?.providers??{})[t];return!!n?.apiKey}catch{return!1}}function a(e){for(let t of e.split("\n")){let e=t.trim();if(!e.startsWith("data:"))continue;let n=e.slice(5).trim();if(n)try{let e=JSON.parse(n);if("error"===e.type)return String(e.message||"AI initialization failed")}catch{}}return null}async function i(e){let t=e.getReader(),n=new TextDecoder,s="";try{for(;;){let{done:e,value:r}=await t.read();if(e)break;let i=(s+=n.decode(r,{stream:!0})).split("\n");s=i.pop()??"";let o=a(i.join("\n"));if(o)throw Error(o)}if(s){let e=a(s);if(e)throw Error(e)}}finally{t.releaseLock()}}function o(e,t,n=""){let s="u">typeof document&&"zh"===document.documentElement.lang?`初始化新建的心智空间「${e}」,路径为「${t}/」。${n?`描述:「${n}」。`:""}两个文件均已存在模板,用 write_file 覆盖:
|
|
2
11
|
1. 「${t}/README.md」— 写入空间用途、结构概览、使用指南
|
|
3
12
|
2. 「${t}/INSTRUCTION.md」— 写入 AI Agent 在此空间中的行为规则和操作约定
|
|
4
13
|
|
|
@@ -6,7 +15,7 @@
|
|
|
6
15
|
1. "${t}/README.md" — write purpose, structure overview, usage guidelines
|
|
7
16
|
2. "${t}/INSTRUCTION.md" — write rules for AI agents operating in this space
|
|
8
17
|
|
|
9
|
-
Keep content concise and actionable. Write files directly using tools.`;window.dispatchEvent(new CustomEvent("mindos:ai-init",{detail:{spaceName:e,spacePath:t,description:n,state:"working"}})),fetch("/api/ask",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({messages:[{role:"user",content:s}],currentFile:t+"/INSTRUCTION.md"})}).then(async e=>{if(!e.ok||!e.body)throw Error(`HTTP ${e.status}`);await i(e.body),window.dispatchEvent(new CustomEvent("mindos:ai-init",{detail:{spacePath:t,state:"done"}})),window.dispatchEvent(new Event("mindos:files-changed"))}).catch(()=>{window.dispatchEvent(new CustomEvent("mindos:ai-init",{detail:{spacePath:t,state:"error"}}))})}},
|
|
18
|
+
Keep content concise and actionable. Write files directly using tools.`;window.dispatchEvent(new CustomEvent("mindos:ai-init",{detail:{spaceName:e,spacePath:t,description:n,state:"working"}})),fetch("/api/ask",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({messages:[{role:"user",content:s}],currentFile:t+"/INSTRUCTION.md"})}).then(async e=>{if(!e.ok||!e.body)throw Error(`HTTP ${e.status}`);await i(e.body),window.dispatchEvent(new CustomEvent("mindos:ai-init",{detail:{spacePath:t,state:"done"}})),window.dispatchEvent(new Event("mindos:files-changed"))}).catch(()=>{window.dispatchEvent(new CustomEvent("mindos:ai-init",{detail:{spacePath:t,state:"error"}}))})}},72466:(e,t,n)=>{n.d(t,{Aw:()=>c,Nh:()=>u,QL:()=>i,TM:()=>o,h0:()=>l,lL:()=>d});var s=n(79455);function r(e){let t=new Uint8Array(e),n=[];for(let e=0;e<t.length;e+=8192)n.push(String.fromCharCode(...t.subarray(e,e+8192)));return btoa(n.join(""))}async function a(e){if(e.byteLength<524288||"u"<typeof Worker)return r(e);let t=e.slice(0);return new Promise(n=>{let s=new Blob([`
|
|
10
19
|
self.onmessage = function(e) {
|
|
11
20
|
try {
|
|
12
21
|
var bytes = new Uint8Array(e.data);
|
|
@@ -21,13 +30,4 @@ Keep content concise and actionable. Write files directly using tools.`;window.d
|
|
|
21
30
|
};
|
|
22
31
|
`],{type:"application/javascript"}),a=URL.createObjectURL(s),i=new Worker(a),o=()=>{i.terminate(),URL.revokeObjectURL(a)},l=setTimeout(()=>{o(),n(r(t))},1e4);i.onmessage=e=>{clearTimeout(l),o(),"string"==typeof e.data?n(e.data):n(r(t))},i.onerror=()=>{clearTimeout(l),o(),n(r(t))},i.postMessage(e,[e])})}async function i(e,t){let n=[],r=0;for(let t of e){if(t.size>0xa00000){r++;continue}try{let e=t.name.toLowerCase(),s=e.endsWith(".doc")||e.endsWith(".docx")||e.endsWith(".docm");if(e.endsWith(".pdf")||s){let e=await t.arrayBuffer();n.push({name:t.name,content:await a(e),encoding:"base64"})}else{let e=await t.text();n.push({name:t.name,content:e})}}catch{}}if(0===n.length)return void(r>0?s.oR.error(t.inbox.tooLarge(r),4e3):e.length>0&&s.oR.error(t.inbox.saveFailed,4e3));try{var i;let e=await fetch("/api/inbox",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({files:n})});if(!e.ok){let n=await e.json().catch(()=>({}));console.error("[QuickDrop] Save failed:",n.error),s.oR.error(t.inbox.saveFailed,4e3);return}let a=await e.json(),o=a.saved?.length??0,l=a.skipped?.length??0;i=r,o>0&&i>0&&0===l?s.oR.success(t.inbox.savedWithOversized(o,i),4e3):o>0&&l+i>0?s.oR.success(t.inbox.savedWithSkipped(o,l+i),4e3):o>0?s.oR.success(t.inbox.savedToast(o),3e3):(i>0&&s.oR.error(t.inbox.tooLarge(i),4e3),l>0&&s.oR.error(t.inbox.savedWithSkipped(0,l),4e3),0===i&&0===l&&s.oR.error(t.inbox.saveFailed,4e3)),window.dispatchEvent(new Event("mindos:files-changed")),window.dispatchEvent(new Event("mindos:inbox-updated"))}catch(e){console.error("[QuickDrop] Network error:",e),s.oR.error(t.inbox.saveFailed,4e3)}}async function o(e,t){try{let n=await fetch("/api/inbox/clip",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:e})}),r=await n.json();if(!n.ok){let e=r.error||t.inbox.clipFailed;return s.oR.error(e,4e3),{ok:!1}}return s.oR.success(t.inbox.clipSuccess(r.title||e),3e3),window.dispatchEvent(new Event("mindos:files-changed")),window.dispatchEvent(new Event("mindos:inbox-updated")),{ok:!0,title:r.title}}catch(e){return console.error("[ClipURL] Network error:",e),s.oR.error(t.inbox.clipFailed,4e3),{ok:!1}}}function l(e){let t=e.trim();if(!t.startsWith("http://")&&!t.startsWith("https://"))return!1;try{return new URL(t),!0}catch{return!1}}function c(e){if(e.dataTransfer?.files&&e.dataTransfer.files.length>0)return null;let t=e.dataTransfer?.getData("text/uri-list");if(t){let e=t.split(/[\r\n]+/).find(e=>!e.startsWith("#")&&e.trim().length>0);if(e&&l(e))return e.trim()}let n=e.dataTransfer?.getData("text/plain");return n&&l(n)?n.trim():null}function d(e){let t=e.dataTransfer?.types??[];return!t.includes("Files")&&(t.includes("text/uri-list")||t.includes("text/plain"))}async function u(e,t,n){let r=[],i=0,o=new Set(["pdf","png","jpg","jpeg","gif","webp","bmp","ico","mp3","wav","m4a","ogg","flac","aac","mp4","webm","mov","mkv","doc","docx","docm"]);for(let t of e){if(t.size>0xa00000){i++;continue}try{let e=(t.name.split(".").pop()??"").toLowerCase();if(o.has(e)){let e=await t.arrayBuffer();r.push({name:t.name,content:await a(e),encoding:"base64"})}else{let e=await t.text();r.push({name:t.name,content:e})}}catch{}}if(0===r.length)return void(i>0?s.oR.error(n.inbox.tooLarge(i),4e3):e.length>0&&s.oR.error(n.inbox.saveFailed,4e3));let l=t.split("/").pop()||t;try{let e=await fetch("/api/file/import",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({files:r,targetSpace:t,organize:!1,conflict:"rename"})});if(!e.ok){let t=await e.json().catch(()=>({}));console.error("[TreeDrop] Save failed:",t.error),s.oR.error(n.inbox.saveFailed,4e3);return}let a=await e.json(),o=a.created?.length??0,c=a.skipped?.length??0;o>0&&c+i>0?s.oR.success(n.inbox.savedWithSkipped(o,c+i),4e3):o>0?s.oR.success(n.inbox.savedToDir(o,l),3e3):(i>0&&s.oR.error(n.inbox.tooLarge(i),4e3),c>0&&s.oR.error(n.inbox.savedWithSkipped(0,c),4e3)),window.dispatchEvent(new Event("mindos:files-changed"))}catch(e){console.error("[TreeDrop] Network error:",e),s.oR.error(n.inbox.saveFailed,4e3)}}},75579:(e,t,n)=>{n.d(t,{vP:()=>w,$_:()=>b,fF:()=>v});var s=n(66839),r=n(44223),a=n(21082),i=n(98327),o=n(44361),l=n(3972),c=n(76723),d=n(44910),u=n(67885),m=n(38688),p=n(69527),f=n(65264),h=n(9986),x=n(55798);function g({t:e,onInitComplete:t}){var n;let i=e.settings?.sync,[l,u]=(0,r.useState)(""),[g,v]=(0,r.useState)(""),[y,j]=(0,r.useState)("main"),[w,N]=(0,r.useState)(!1),[k,S]=(0,r.useState)(-1),[T,C]=(0,r.useState)(""),A=(0,r.useRef)(null),E=k>=0&&k<4,R=l.trim()?(n=l.trim(),/^https:\/\/.+/.test(n)?"https":!!/^git@[\w.-]+:.+/.test(n)&&"ssh"):null,z="https"===R||"ssh"===R,L=async()=>{S(0),C("");let e=(e,t)=>setTimeout(()=>S(t=>t>=0&&t<4?e:t),t);A.current=e(1,2e3);let n=e(2,5e3);try{await (0,f.n)("/api/sync",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"init",remote:l.trim(),token:g.trim()||void 0,branch:y.trim()||"main"}),timeout:12e4}),S(4),setTimeout(()=>t(),600)}catch(n){let e=n instanceof Error?n.message:"Connection failed";e.includes("timed out")&&(e=i?.timeoutError??"Connection timed out. The remote repository may be large or the network is slow. Please try again.");let t=b(e,l,i);C(t?`${e}
|
|
23
32
|
${t}`:e),S(-1)}finally{A.current&&clearTimeout(A.current),clearTimeout(n)}},$=[i?.stepConnecting??"Connecting to remote...",i?.stepAuthenticating??"Authenticating...",i?.stepSyncing??"Syncing data...",i?.stepAlmostDone??"Almost done..."];return(0,s.jsxs)("div",{className:"space-y-4",children:[(0,s.jsxs)(p.L7,{icon:(0,s.jsx)(d.A,{size:15}),title:i?.emptyTitle??"Cross-device Sync",description:i?.emptyDesc??"Automatically sync your knowledge base across devices via Git.",children:[(0,s.jsxs)(p.D0,{label:i?.remoteUrl??"Git Remote URL",hint:"ssh"===R?i?.sshHint??"Requires SSH key on this machine. Verify with: ssh -T git@github.com":void 0,children:[(0,s.jsx)(p.pd,{type:"text",value:l,onChange:e=>{u(e.target.value),C("")},placeholder:"git@github.com:user/repo.git",className:`font-mono ${l.trim()&&!z?"border-destructive":""}`}),!l.trim()&&(0,s.jsxs)("div",{className:"flex flex-wrap gap-x-4 gap-y-1 text-xs text-muted-foreground mt-1.5",children:[(0,s.jsxs)("span",{children:[(0,s.jsx)("code",{className:"text-foreground/60 bg-muted/60 px-1 py-0.5 rounded text-2xs",children:"SSH"})," ",i?.sshBrief??"one-time key setup, no token needed"]}),(0,s.jsxs)("span",{children:[(0,s.jsx)("code",{className:"text-foreground/60 bg-muted/60 px-1 py-0.5 rounded text-2xs",children:"HTTPS"})," ",i?.httpsBrief??"works anywhere, token recommended"]})]}),l.trim()&&!z&&(0,s.jsx)("p",{className:"text-xs text-destructive mt-1",children:i?.invalidUrl??"Invalid Git URL — use HTTPS (https://...) or SSH (git@...)"})]}),"https"===R&&(0,s.jsxs)(p.D0,{label:(0,s.jsxs)(s.Fragment,{children:[i?.accessToken??"Access Token"," ",(0,s.jsx)("span",{className:"text-muted-foreground font-normal",children:i?.optional??"(optional, for private repos)"})]}),hint:void 0,children:[(0,s.jsxs)("div",{className:"relative",children:[(0,s.jsx)(p.pd,{type:w?"text":"password",value:g,onChange:e=>v(e.target.value),placeholder:"ghp_xxxxxxxxxxxx",className:"pr-9 font-mono"}),(0,s.jsx)("button",{type:"button",onClick:()=>N(!w),className:"absolute right-2 top-1/2 -translate-y-1/2 p-0.5 rounded hover:bg-muted text-muted-foreground transition-colors",children:w?(0,s.jsx)(h.A,{size:14}):(0,s.jsx)(x.A,{size:14})})]}),(0,s.jsxs)("p",{className:"text-xs text-muted-foreground mt-1",children:[i?.tokenHint??"GitHub:"," ",(0,s.jsx)("a",{href:"https://github.com/settings/tokens/new?scopes=repo&description=MindOS+Sync",target:"_blank",rel:"noopener noreferrer",className:"underline hover:text-foreground transition-colors",children:i?.tokenLink??"Create a token (repo scope)"})]})]}),(0,s.jsx)(p.D0,{label:i?.branchLabel??"Branch",children:(0,s.jsx)(p.pd,{type:"text",value:y,onChange:e=>j(e.target.value),placeholder:"main",className:"max-w-[200px] font-mono"})}),!E&&4!==k&&(0,s.jsx)(p.jn,{onClick:L,disabled:!z,className:"flex items-center gap-2",children:i?.connectButton??"Connect & Start Sync"}),(E||4===k)&&(0,s.jsxs)("div",{className:"space-y-2 py-1",children:[$.map((e,t)=>{let n=k>t||4===k,r=k===t&&k<4;return k<t&&k<4?null:(0,s.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[n?(0,s.jsx)(c.A,{size:13,className:"text-success shrink-0"}):(0,s.jsx)(o.A,{size:13,className:"animate-spin text-muted-foreground shrink-0"}),(0,s.jsx)("span",{className:n?"text-success":r?"text-foreground":"text-muted-foreground",children:e})]},t)}),4===k&&(0,s.jsxs)("div",{className:"flex items-center gap-2 text-xs",children:[(0,s.jsx)(m.A,{size:13,className:"text-success shrink-0"}),(0,s.jsx)("span",{className:"text-success font-medium",children:i?.stepDone??"Sync configured successfully!"})]})]}),T&&(0,s.jsxs)("div",{className:"flex items-start gap-2 text-xs p-3 rounded-lg bg-destructive/10 text-destructive",role:"alert","aria-live":"polite",children:[(0,s.jsx)(a.A,{size:13,className:"shrink-0 mt-0.5"}),(0,s.jsx)("div",{className:"space-y-1",children:T.split("\n").map((e,t)=>(0,s.jsx)("span",{className:`block ${t>0?"text-destructive/70":""}`,children:e},t))})]})]}),(0,s.jsx)("div",{className:"grid grid-cols-2 gap-2 text-xs text-muted-foreground px-5",children:[i?.featureAutoCommit??"Auto-commit on save",i?.featureAutoPull??"Auto-pull from remote",i?.featureConflict??"Conflict detection",i?.featureMultiDevice??"Works across devices"].map((e,t)=>(0,s.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,s.jsx)(m.A,{size:11,className:"text-success/60 shrink-0"}),(0,s.jsx)("span",{children:e})]},t))})]})}function v(e,t){if(!e)return t?.timeNever??"never";let n=Date.now()-new Date(e).getTime();if(n<6e4)return t?.timeJustNow??"just now";let s=Math.floor(n/6e4);if(n<36e5)return t?.timeMinAgo?.(s)??`${s}m ago`;let r=Math.floor(n/36e5);if(n<864e5)return t?.timeHourAgo?.(r)??`${r}h ago`;let a=Math.floor(n/864e5);return t?.timeDayAgo?.(a)??`${a}d ago`}function b(e,t,n){let s=e.toLowerCase();return s.includes("permission denied")||s.includes("publickey")?n?.hintSshAuth??"SSH key may not be configured. Run: ssh-keygen -t ed25519 && ssh -T git@github.com":s.includes("host key")||s.includes("known_hosts")||s.includes("fingerprint")?n?.hintSshHost??"Run: ssh-keyscan github.com >> ~/.ssh/known_hosts":s.includes("authentication failed")||s.includes("invalid credentials")||s.includes("401")||s.includes("403")?n?.hintHttpsAuth??"Access token may be expired or missing. Check Settings → Developer settings → Personal access tokens.":s.includes("timed out")||s.includes("timeout")||s.includes("could not resolve")?n?.hintNetwork??"Check your network connection and try again.":s.includes("not found")||s.includes("does not exist")||s.includes("repository not found")?n?.hintNotFound??"Repository not found. Check the URL and ensure the repo exists.":s.includes("non-fast-forward")||s.includes("rejected")||s.includes("fetch first")?n?.hintPushRejected??'Remote has changes. Click "Sync Now" to pull and retry.':s.includes("conflict")||s.includes("merge")?n?.hintConflict??"Merge conflict detected. Check the Conflicts section below.":""}function y({file:e,time:t,syncT:n,onResolved:l}){let[c,d]=(0,r.useState)(null),[u,m]=(0,r.useState)(!1),[p,h]=(0,r.useState)(null),[x,g]=(0,r.useState)(!1),b=async()=>{if(u)return void m(!1);if(!p){g(!0);try{let t=await (0,f.n)("/api/sync",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"conflict-preview",remote:e})});h(t)}catch{}g(!1)}m(!0)},y=async t=>{d("keep-local"===t?"local":"remote");try{await (0,f.n)("/api/sync",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"resolve-conflict",remote:e,branch:t})}),l()}catch{d(null)}};return(0,s.jsxs)("div",{className:"rounded-lg border border-border/50 overflow-hidden",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 p-2 text-xs bg-muted/20",children:[(0,s.jsx)(a.A,{size:12,className:"text-error shrink-0"}),(0,s.jsxs)("button",{type:"button",onClick:b,className:"font-mono truncate hover:text-foreground hover:underline transition-colors flex-1 min-w-0 text-left",title:n?.viewDiff??"View differences",children:[(0,s.jsx)(i.A,{size:11,className:`inline mr-1 transition-transform ${u?"rotate-90":""}`}),e]}),(0,s.jsx)("span",{className:"text-muted-foreground shrink-0",children:v(t,n)}),(0,s.jsxs)("div",{className:"flex items-center gap-1 shrink-0",children:[(0,s.jsx)("button",{type:"button",onClick:()=>y("keep-local"),disabled:!!c,className:"px-2 py-0.5 rounded border border-border text-2xs hover:bg-muted transition-colors disabled:opacity-40",title:n?.keepLocalHint??"Keep this device's version",children:"local"===c?(0,s.jsx)(o.A,{size:10,className:"animate-spin"}):n?.keepLocal??"Keep local"}),(0,s.jsx)("button",{type:"button",onClick:()=>y("keep-remote"),disabled:!!c,className:"px-2 py-0.5 rounded border border-border text-2xs hover:bg-muted transition-colors disabled:opacity-40",title:n?.keepRemoteHint??"Replace with remote version",children:"remote"===c?(0,s.jsx)(o.A,{size:10,className:"animate-spin"}):n?.keepRemote??"Keep remote"})]})]}),u&&(0,s.jsx)("div",{className:"border-t border-border/50",children:x?(0,s.jsx)("div",{className:"flex justify-center py-3",children:(0,s.jsx)(o.A,{size:13,className:"animate-spin text-muted-foreground"})}):p?(0,s.jsxs)("div",{className:"grid grid-cols-2 divide-x divide-border/50 text-2xs font-mono max-h-60 overflow-auto",children:[(0,s.jsxs)("div",{className:"p-2",children:[(0,s.jsx)("div",{className:"text-muted-foreground mb-1 font-sans text-xs font-medium",children:n?.localVersion??"Local (this device)"}),(0,s.jsx)("pre",{className:"whitespace-pre-wrap text-foreground/80 leading-relaxed",children:p.local||(n?.emptyFile??"(empty)")})]}),(0,s.jsxs)("div",{className:"p-2",children:[(0,s.jsx)("div",{className:"text-muted-foreground mb-1 font-sans text-xs font-medium",children:n?.remoteVersion??"Remote"}),(0,s.jsx)("pre",{className:"whitespace-pre-wrap text-foreground/80 leading-relaxed",children:p.remote||(n?.emptyFile??"(empty)")})]})]}):null})]})}function j({syncT:e}){let[t,n]=(0,r.useState)(!1),[a,d]=(0,r.useState)(""),[u,m]=(0,r.useState)(""),[p,h]=(0,r.useState)(!1),[x,g]=(0,r.useState)(!1),v=(0,r.useRef)(!1),b=a!==u;(0,r.useEffect)(()=>{t&&!v.current&&(v.current=!0,h(!0),(0,f.n)("/api/sync",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"gitignore-get"})}).then(e=>{d(e.content),m(e.content)}).catch(()=>{}).finally(()=>h(!1)))},[t]);let y=async()=>{try{await (0,f.n)("/api/sync",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"gitignore-save",content:a})}),m(a),g(!0),setTimeout(()=>g(!1),2e3)}catch{}};return(0,s.jsxs)("div",{className:"pt-2 border-t border-border/50",children:[(0,s.jsxs)("button",{type:"button",onClick:()=>n(!t),className:"flex items-center gap-2 w-full text-left text-sm text-muted-foreground hover:text-foreground transition-colors py-1",children:[(0,s.jsx)(i.A,{size:14,className:`shrink-0 transition-transform ${t?"rotate-90":""}`}),(0,s.jsx)(l.A,{size:13,className:"shrink-0"}),(0,s.jsx)("span",{children:e?.gitignoreTitle??"Excluded files"}),(0,s.jsx)("span",{className:"text-2xs opacity-50",children:".gitignore"})]}),t&&(0,s.jsx)("div",{className:"mt-2 space-y-2",children:p?(0,s.jsx)("div",{className:"flex justify-center py-4",children:(0,s.jsx)(o.A,{size:14,className:"animate-spin text-muted-foreground"})}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("textarea",{value:a,onChange:e=>d(e.target.value),rows:8,className:"w-full rounded-lg border border-border bg-background px-3 py-2 text-xs font-mono leading-relaxed text-foreground placeholder:text-muted-foreground focus:outline-none focus-visible:ring-1 focus-visible:ring-ring resize-y",placeholder:e?.gitignorePlaceholder??"# Files to exclude from sync\n*.tmp\nsecret/",spellCheck:!1}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[b&&(0,s.jsx)("button",{type:"button",onClick:y,className:"flex items-center gap-1.5 px-3 py-1 text-xs rounded-lg bg-[var(--amber)] text-[var(--amber-foreground)] hover:opacity-90 transition-opacity",children:e?.gitignoreSave??"Save"}),x&&(0,s.jsxs)("span",{className:"flex items-center gap-1 text-xs text-success",children:[(0,s.jsx)(c.A,{size:12})," ",e?.gitignoreSaved??"Saved"]})]})]})})]})}function w({t:e,visible:t}){let n=e.settings?.sync,[i,l]=(0,r.useState)(null),[c,h]=(0,r.useState)(!0),[x,w]=(0,r.useState)(!1),[N,k]=(0,r.useState)(!1),[S,T]=(0,r.useState)(null),C=(0,r.useCallback)(async()=>{try{let e=await (0,f.n)("/api/sync",{timeout:1e4});l(e)}catch{l(e=>e??null)}finally{h(!1)}},[]);(0,r.useEffect)(()=>{C()},[C]);let A=(0,r.useRef)(t);(0,r.useEffect)(()=>{t&&!A.current&&null!==i&&C(),A.current=t},[t,i,C]);let E=async()=>{w(!0),T(null);try{await (0,f.n)("/api/sync",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"now"}),timeout:12e4}),T({type:"success",text:n?.syncComplete??"Sync complete"}),await C()}catch(s){var e;let t;T({type:"error",text:(t=b(e=s instanceof Error?s.message:"Sync failed",void 0,n))?`${e}
|
|
24
|
-
${t}`:e})}finally{w(!1),setTimeout(()=>T(null),3e3)}},R=async()=>{if(!i)return;k(!0),T(null);let e=i.enabled?"off":"on";try{await (0,f.n)("/api/sync",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:e})}),await C(),T({type:"success",text:i.enabled?n?.autoSyncDisabled??"Auto-sync disabled":n?.autoSyncEnabled??"Auto-sync enabled"})}catch{T({type:"error",text:n?.toggleFailed??"Failed to toggle sync"})}finally{k(!1),setTimeout(()=>T(null),3e3)}},z=async()=>{k(!0);try{await (0,f.n)("/api/sync",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"reset"})}),await C()}catch{T({type:"error",text:n?.resetFailed??"Failed to reset sync configuration"})}finally{k(!1),setTimeout(()=>T(null),3e3)}};if(c)return(0,s.jsx)("div",{className:"flex justify-center py-8",children:(0,s.jsx)(o.A,{size:18,className:"animate-spin text-muted-foreground"})});if(!i||!i.enabled)return(0,s.jsx)(g,{t:e,onInitComplete:C});if(i.needsSetup)return(0,s.jsx)("div",{className:"space-y-6",children:(0,s.jsxs)("div",{className:"flex items-start gap-3 p-4 rounded-lg bg-destructive/10",children:[(0,s.jsx)(a.A,{size:18,className:"text-destructive shrink-0 mt-0.5"}),(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)("h3",{className:"text-sm font-medium text-destructive",children:n?.brokenTitle??"Sync configuration is broken"}),(0,s.jsx)("p",{className:"text-xs text-destructive/80",children:i.lastError||(n?.brokenDesc??"The git repository or remote is missing. Reset to re-configure.")}),(0,s.jsxs)(p.jn,{onClick:z,disabled:N,className:"flex items-center gap-2 mt-2",children:[N&&(0,s.jsx)(o.A,{size:14,className:"animate-spin"}),n?.resetButton??"Reset & Re-configure"]})]})]})});let L=i.conflicts||[];return(0,s.jsx)("div",{className:"space-y-4",children:(0,s.jsxs)(p.L7,{icon:(0,s.jsx)(d.A,{size:15}),title:n?.sectionTitle??"Sync",description:i.remote,badge:(0,s.jsx)("span",{className:"text-2xs px-1.5 py-0.5 rounded bg-success/15 text-success font-medium",children:n?.labelEnabled??"Active"}),children:[(0,s.jsxs)("div",{className:"space-y-2 text-sm",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-muted-foreground",children:n?.labelBranch??"Branch"}),(0,s.jsx)("span",{className:"font-mono text-xs",children:i.branch})]}),(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-muted-foreground",children:n?.labelLastSync??"Last sync"}),(0,s.jsx)("span",{className:"text-xs",children:v(i.lastSync,n)})]}),(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-muted-foreground",children:n?.labelUnpushed??"Unpushed"}),(0,s.jsx)("span",{className:"text-xs",children:"string"==typeof i.unpushed&&/^\d+$/.test(i.unpushed)?n?.unpushedCommits?.(parseInt(i.unpushed,10))??`${i.unpushed} commits`:`${i.unpushed??"?"} commits`})]}),(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-muted-foreground",children:n?.labelAutoSync??"Auto-sync"}),(0,s.jsxs)("span",{className:"flex items-center gap-1 text-xs",children:["commit"," ",(0,s.jsxs)(p.l6,{size:"sm",value:String(i.autoCommitInterval),onChange:async e=>{let t=parseInt(e.target.value,10);try{(await fetch("/api/sync",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"update-intervals",autoCommitInterval:t})})).ok&&C()}catch{}},children:[(0,s.jsx)("option",{value:"10",children:"10s"}),(0,s.jsx)("option",{value:"15",children:"15s"}),(0,s.jsx)("option",{value:"30",children:"30s"}),(0,s.jsx)("option",{value:"60",children:"60s"}),(0,s.jsx)("option",{value:"120",children:"120s"})]})," \xb7 pull ",(0,s.jsxs)(p.l6,{size:"sm",value:String(i.autoPullInterval),onChange:async e=>{let t=parseInt(e.target.value,10);try{(await fetch("/api/sync",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"update-intervals",autoPullInterval:t})})).ok&&C()}catch{}},children:[(0,s.jsx)("option",{value:"60",children:"1min"}),(0,s.jsx)("option",{value:"120",children:"2min"}),(0,s.jsx)("option",{value:"300",children:"5min"}),(0,s.jsx)("option",{value:"600",children:"10min"}),(0,s.jsx)("option",{value:"1800",children:"30min"}),(0,s.jsx)("option",{value:"3600",children:"60min"})]})]})]})]}),(0,s.jsxs)("div",{className:"flex items-center gap-2 pt-1",children:[(0,s.jsxs)("button",{type:"button",onClick:E,disabled:x,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-lg border border-border text-muted-foreground hover:text-foreground hover:bg-muted disabled:opacity-40 disabled:cursor-not-allowed transition-colors",children:[(0,s.jsx)(u.A,{size:12,className:x?"animate-spin":""}),n?.syncNow??"Sync Now"]}),(0,s.jsx)("button",{type:"button",onClick:R,disabled:N,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-lg border border-border text-muted-foreground hover:text-destructive hover:border-destructive/50 disabled:opacity-40 disabled:cursor-not-allowed transition-colors",children:n?.disableAutoSync??"Disable Auto-sync"})]}),S&&(0,s.jsx)("div",{className:"flex items-start gap-1.5 text-xs",role:"status","aria-live":"polite",children:"success"===S.type?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(m.A,{size:13,className:"text-success shrink-0 mt-0.5"}),(0,s.jsx)("span",{className:"text-success",children:S.text})]}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(a.A,{size:13,className:"text-destructive shrink-0 mt-0.5"}),(0,s.jsx)("div",{className:"space-y-0.5",children:S.text.split("\n").map((e,t)=>(0,s.jsx)("span",{className:`block ${t>0?"text-destructive/70":"text-destructive"}`,children:e},t))})]})}),L.length>0&&(0,s.jsxs)("div",{className:"pt-2 border-t border-border/50 space-y-3",children:[(0,s.jsx)("p",{className:"text-xs font-medium text-foreground",children:n?.conflictsTitle?.(L.length)??`Conflicts (${L.length})`}),(0,s.jsx)("p",{className:"text-2xs text-muted-foreground",children:n?.conflictExplain??"These files were changed on both this device and the remote. Choose which version to keep for each file."}),(0,s.jsx)("div",{className:"space-y-2",children:L.map((e,t)=>(0,s.jsx)(y,{file:e.file,time:e.time,syncT:n,onResolved:C},t))})]}),i.lastError&&0===L.length&&(0,s.jsxs)("div",{className:"flex items-start gap-2 text-xs p-2.5 rounded-lg bg-destructive/10 text-destructive",children:[(0,s.jsx)(a.A,{size:12,className:"shrink-0 mt-0.5"}),(0,s.jsxs)("div",{className:"space-y-1",children:[(0,s.jsx)("span",{className:"block",children:i.lastError}),b(i.lastError,i.remote,n)&&(0,s.jsx)("span",{className:"block text-destructive/70",children:b(i.lastError,i.remote,n)})]})]}),(0,s.jsx)(j,{syncT:n})]})})}},84364:(e,t,n)=>{n.d(t,{Ay:()=>en,Fo:()=>O,gL:()=>P});var s=n(66839),r=n(44223),a=n(56261),i=n(62329),o=n(58221),l=n(18659),c=n(30401),d=n(44361),u=n(72615),m=n(95991),p=n(14987),f=n(27636),h=n(61017),x=n(52954),g=n(82417),v=n(24336),b=n(2408),y=n(31606),j=n(65799);let w=(0,j.createServerReference)("609444cc6bbf47a5b7c6b928461403b8e6e4abf5c4",j.callServer,void 0,j.findSourceMapURL,"createFileAction"),N=(0,j.createServerReference)("6098a057357252360a4d7656e31f0f7f3a560cebd9",j.callServer,void 0,j.findSourceMapURL,"renameSpaceAction");var k=n(20477);let S=(0,j.createServerReference)("406e81bfc57cfec55d08a5b8e31855f654fd7ff5e9",j.callServer,void 0,j.findSourceMapURL,"deleteSpaceAction"),T=(0,j.createServerReference)("401b8173854cd55615199ff5f1d57641739a2f0fd3",j.callServer,void 0,j.findSourceMapURL,"deleteFolderAction");var C=n(71746),A=n(69212),E=n(79455),R=n(2073),z=n(84734),L=n(27069);let $="show-hidden-files";function D(e){let t=t=>{t.key===$&&e()},n=()=>e();return window.addEventListener("storage",t),window.addEventListener("mindos:hidden-files-changed",n),()=>{window.removeEventListener("storage",t),window.removeEventListener("mindos:hidden-files-changed",n)}}function F(){return"true"===localStorage.getItem($)}function O(e){localStorage.setItem($,String(e)),window.dispatchEvent(new Event("mindos:hidden-files-changed"))}function P(){return(0,r.useSyncExternalStore)(D,F,()=>!1)}var I=n(73601),M=n(85764),U=n(10952);let W=(0,j.createServerReference)("4032b5558036dc9b69cb9d014cbd06c075a25eef26",j.callServer,void 0,j.findSourceMapURL,"convertToSpaceAction");var H=n(62800);async function J(e){try{await navigator.clipboard.writeText(e)}catch{}}let B="w-full flex items-center gap-2 px-3 py-2 text-sm text-foreground hover:bg-muted transition-colors text-left",_="w-full flex items-center gap-2 px-3 py-2 text-sm text-error hover:bg-error/10 transition-colors text-left",Y="my-1 border-t border-border/50";function G({x:e,y:t,onClose:n,menuHeight:a,children:i}){let o=(0,r.useRef)(null);(0,r.useEffect)(()=>{let e=e=>{o.current&&!o.current.contains(e.target)&&n()},t=e=>{"Escape"===e.key&&n()};return document.addEventListener("mousedown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",t)}},[n]);let l=Math.min(t,window.innerHeight-(a??160)),c=Math.min(e,window.innerWidth-200);return(0,s.jsx)("div",{ref:o,className:"fixed z-50 min-w-[180px] bg-card border border-border rounded-lg shadow-lg py-1",style:{top:l,left:c},children:i})}function K({x:e,y:t,node:n,onClose:r,onRename:i,onNewFile:l,onImport:c,onDelete:d}){let u=(0,a.useRouter)(),{t:m}=(0,R.Y)(),{isPinned:p,togglePin:f}=(0,L.Z)(),h=p(n.path);return(0,s.jsxs)(G,{x:e,y:t,onClose:r,children:[(0,s.jsxs)("button",{className:B,onClick:()=>{l(),r()},children:[(0,s.jsx)(I.A,{size:14,className:"shrink-0"})," ",m.fileTree.newFile]}),(0,s.jsxs)("button",{className:B,onClick:()=>{u.push(`/view/${(0,o.O0)(`${n.path}/INSTRUCTION.md`)}`),r()},children:[(0,s.jsx)(M.A,{size:14,className:"shrink-0"})," ",m.fileTree.viewRules]}),c&&(0,s.jsxs)("button",{className:B,onClick:()=>{c(n.path),r()},children:[(0,s.jsx)(U.A,{size:14,className:"shrink-0"})," ",m.fileTree.importFile]}),(0,s.jsx)("div",{className:Y}),(0,s.jsxs)("button",{className:B,onClick:()=>{f(n.path),r()},children:[(0,s.jsx)(g.A,{size:14,className:`shrink-0 ${h?"fill-[var(--amber)] text-[var(--amber)]":""}`}),h?m.fileTree.removeFromFavorites:m.fileTree.pinToFavorites]}),(0,s.jsxs)("button",{className:B,onClick:()=>{J(n.path),r()},children:[(0,s.jsx)(v.A,{size:14,className:"shrink-0"})," ",m.fileTree.copyPath]}),(0,s.jsxs)("button",{className:B,onClick:()=>{i(),r()},children:[(0,s.jsx)(b.A,{size:14,className:"shrink-0"})," ",m.fileTree.renameSpace]}),(0,s.jsx)("div",{className:Y}),(0,s.jsxs)("button",{className:_,onClick:()=>{r(),d()},children:[(0,s.jsx)(y.A,{size:14,className:"shrink-0"}),m.fileTree.deleteSpace]})]})}function V({x:e,y:t,node:n,onClose:i,onRename:o,onNewFile:l,onDelete:c}){let d=(0,a.useRouter)(),{t:u}=(0,R.Y)(),[m,f]=(0,r.useTransition)(),{isPinned:h,togglePin:x}=(0,L.Z)(),j=h(n.path);return(0,s.jsxs)(G,{x:e,y:t,onClose:i,menuHeight:220,children:[(0,s.jsxs)("button",{className:B,onClick:()=>{l(),i()},children:[(0,s.jsx)(I.A,{size:14,className:"shrink-0"})," ",u.fileTree.newFile]}),(0,s.jsx)("div",{className:Y}),(0,s.jsxs)("button",{className:B,onClick:()=>{x(n.path),i()},children:[(0,s.jsx)(g.A,{size:14,className:`shrink-0 ${j?"fill-[var(--amber)] text-[var(--amber)]":""}`}),j?u.fileTree.removeFromFavorites:u.fileTree.pinToFavorites]}),(0,s.jsxs)("button",{className:B,disabled:m,onClick:()=>{f(async()=>{if((await W(n.path)).success){d.refresh(),window.dispatchEvent(new Event("mindos:files-changed"));let e=n.name.replace(/^[\p{Emoji_Presentation}\p{Extended_Pictographic}\s]+/u,"")||n.name;(0,H.wD)().then(t=>{t&&(0,H.Vz)(e,n.path)})}i()})},children:[(0,s.jsx)(p.A,{size:14,className:"shrink-0 text-[var(--amber)]"})," ",u.fileTree.convertToSpace]}),(0,s.jsxs)("button",{className:B,onClick:()=>{J(n.path),i()},children:[(0,s.jsx)(v.A,{size:14,className:"shrink-0"})," ",u.fileTree.copyPath]}),(0,s.jsxs)("button",{className:B,onClick:()=>{o(),i()},children:[(0,s.jsx)(b.A,{size:14,className:"shrink-0"})," ",u.fileTree.rename]}),(0,s.jsx)("div",{className:Y}),(0,s.jsxs)("button",{className:_,onClick:()=>{i(),c()},children:[(0,s.jsx)(y.A,{size:14,className:"shrink-0"}),u.fileTree.deleteFolder]})]})}var Z=n(72466);function q(){window.dispatchEvent(new Event("mindos:files-changed"))}async function Q(e){try{await navigator.clipboard.writeText(e)}catch{}}function X({dirPath:e,depth:t,onDone:n}){let[i,l]=(0,r.useState)(""),[c,u]=(0,r.useTransition)(),[m,p]=(0,r.useState)(""),f=(0,a.useRouter)(),{t:h}=(0,R.Y)(),x=(0,r.useRef)(null),g=(0,r.useCallback)(()=>{let t=i.trim();t?u(async()=>{let s=await w(e,t);s.success&&s.filePath?(n(),f.push(`/view/${(0,o.O0)(s.filePath)}`),f.refresh(),q()):p(s.error||h.fileTree.failed)}):p(h.fileTree.enterFileName)},[i,e,n,f,h]);return(0,r.useEffect)(()=>{let e=e=>{x.current&&!x.current.contains(e.target)&&n()},t=setTimeout(()=>document.addEventListener("mousedown",e),0);return()=>{clearTimeout(t),document.removeEventListener("mousedown",e)}},[n]),(0,s.jsxs)("div",{ref:x,className:"px-2 pb-1",style:{paddingLeft:`${12*t+20}px`},children:[(0,s.jsxs)("div",{className:"flex items-center gap-1",children:[(0,s.jsx)("input",{autoFocus:!0,type:"text",value:i,onChange:e=>{l(e.target.value),p("")},onKeyDown:e=>{"Enter"===e.key&&g(),"Escape"===e.key&&n()},placeholder:"filename.md",className:" flex-1 bg-muted border border-border rounded px-2 py-1 text-xs text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring "}),c?(0,s.jsx)(d.A,{size:13,className:"text-muted-foreground animate-spin shrink-0"}):(0,s.jsx)("button",{onClick:g,className:"text-xs text-[var(--amber)] hover:text-foreground shrink-0 px-1",children:h.fileTree.create})]}),m&&(0,s.jsx)("p",{className:"text-xs text-error mt-0.5 px-1",children:m})]})}let ee=(0,r.memo)(function({node:e,depth:t,currentPath:n,onNavigate:l,maxOpenDepth:c,onImport:g}){let v=(0,a.useRouter)(),b=n.startsWith(e.path+"/")||n===e.path,y=!!e.isSpace,[j,w]=(0,r.useState)(0===t||b),[A,L]=(0,r.useState)(0===t||b),[$,D]=(0,r.useState)(!1),[F,O]=(0,r.useState)(!1),[P,I]=(0,r.useState)(e.name),[M,U]=(0,r.useTransition)(),W=(0,r.useRef)(null),H=(0,r.useRef)(null),[J,B]=(0,r.useState)(null),{t:_}=(0,R.Y)(),[Y,G]=(0,r.useState)(null),[Q,ee]=(0,r.useTransition)(),{isDragTarget:et,handleRowDragOver:es,handleRowDragEnter:er,handleRowDragLeave:ea,handleRowDrop:ei}=function(e,t,n,s){let[a,i]=(0,r.useState)(!1),o=(0,r.useRef)(null),l=(0,r.useRef)(null),c=(0,r.useCallback)(()=>{o.current&&(clearTimeout(o.current),o.current=null)},[]),d=(0,r.useCallback)(e=>{e.dataTransfer.types.includes("Files")&&(e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="copy",l.current&&(clearTimeout(l.current),l.current=null),a||i(!0))},[a]),u=(0,r.useCallback)(e=>{e.dataTransfer.types.includes("Files")&&(e.preventDefault(),e.stopPropagation(),i(!0),c(),t||(o.current=setTimeout(()=>{n(!0),o.current=null},500)))},[t,c,n]),m=(0,r.useCallback)(e=>{e.dataTransfer.types.includes("Files")&&(e.stopPropagation(),l.current=setTimeout(()=>{i(!1),c(),l.current=null},50))},[c]),p=(0,r.useCallback)(t=>{t.preventDefault(),t.stopPropagation(),i(!1),c(),l.current&&(clearTimeout(l.current),l.current=null);let n=t.dataTransfer.files;n.length>0&&(0,Z.Nh)(Array.from(n),e.path,s)},[e.path,s,c]);return(0,r.useEffect)(()=>()=>{o.current&&clearTimeout(o.current),l.current&&clearTimeout(l.current)},[]),{isDragTarget:a,handleRowDragOver:d,handleRowDragEnter:u,handleRowDragLeave:m,handleRowDrop:p}}(e,j,(0,r.useCallback)(e=>{w(e),e&&L(!0)},[]),_),eo=(0,r.useCallback)(()=>{w(e=>(e||L(!0),!e))},[]),el=(0,r.useRef)(void 0);(0,r.useEffect)(()=>{if(null==c){el.current=c;return}if(el.current!==c){if(null===el.current||void 0===el.current)t>c?w(!1):L(!0);else{let e=t<=c;w(e),e&&L(!0)}el.current=c}},[c,t]),(0,r.useEffect)(()=>()=>{H.current&&clearTimeout(H.current)},[]);let ec=(0,r.useCallback)(t=>{t?.preventDefault(),t?.stopPropagation(),H.current&&(clearTimeout(H.current),H.current=null),I(e.name),O(!0),setTimeout(()=>W.current?.select(),0)},[e.name]),ed=(0,r.useCallback)(()=>{let t=P.trim();t&&t!==e.name?U(async()=>{let n=y?N:k.f,s=await n(e.path,t);s.success&&s.newPath?(O(!1),v.push(`/view/${(0,o.O0)(s.newPath)}`),v.refresh(),q()):O(!1)}):O(!1)},[P,e.name,e.path,v,y]),eu=(0,r.useCallback)(()=>{F||(H.current&&clearTimeout(H.current),H.current=setTimeout(()=>{v.push(`/view/${(0,o.O0)(e.path)}`),l?.(),H.current=null},180))},[F,v,e.path,l]);(0,r.useCallback)(e=>{e.stopPropagation(),eo()},[eo]);let em=(0,r.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),B({x:e.clientX,y:e.clientY})},[]),ep=y?function e(t){return"file"===t.type?+!i.C.has(t.name):(t.children??[]).reduce((t,n)=>t+e(n),0)}(e):0;if(F)return(0,s.jsxs)("div",{className:"relative px-2 py-0.5",style:{paddingLeft:`${12*t+8}px`},children:[(0,s.jsx)("input",{ref:W,autoFocus:!0,value:P,onChange:e=>I(e.target.value),onKeyDown:e=>{"Enter"===e.key&&ed(),"Escape"===e.key&&O(!1)},onBlur:ed,className:"w-full bg-muted border border-border rounded px-2 py-0.5 text-xs text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"}),M&&(0,s.jsx)(d.A,{size:12,className:"absolute right-3 top-1/2 -translate-y-1/2 animate-spin text-muted-foreground"})]});let ef=y&&0===t;return(0,s.jsxs)("div",{children:[(0,s.jsxs)("div",{className:`relative group/dir flex items-center transition-colors duration-100 ${et?"bg-[var(--amber)]/10 rounded-md":""}`,onContextMenu:em,onDragEnter:er,onDragOver:es,onDragLeave:ea,onDrop:ei,children:[(0,s.jsx)("button",{onClick:eo,className:"shrink-0 p-1 rounded hover:bg-muted text-muted-foreground transition-colors",style:{marginLeft:`${12*t+4}px`},"aria-label":j?`Collapse ${e.name}`:`Expand ${e.name}`,"aria-expanded":j,children:(0,s.jsx)("span",{className:"block transition-transform duration-150",style:{transform:j?"rotate(0deg)":"rotate(-90deg)"},children:(0,s.jsx)(u.A,{size:10})})}),(0,s.jsxs)("button",{type:"button",onClick:eu,draggable:!0,onDragStart:t=>{t.dataTransfer.setData("text/mindos-path",e.path),t.dataTransfer.setData("text/mindos-type","directory"),t.dataTransfer.effectAllowed="copy"},className:`
|
|
25
|
-
flex-1 flex items-center gap-1.5 px-1 py-1 rounded text-left min-w-0 pr-16
|
|
26
|
-
text-sm transition-colors duration-100
|
|
27
|
-
hover:bg-muted cursor-default
|
|
28
|
-
${b?"text-foreground":"text-muted-foreground hover:text-foreground"}
|
|
29
|
-
`,children:[y?"Inbox"===e.name?(0,s.jsx)(m.A,{size:14,className:"shrink-0 text-[var(--amber)]"}):(0,s.jsx)(p.A,{size:14,className:"shrink-0 text-[var(--amber)]"}):j?(0,s.jsx)(f.A,{size:14,className:"text-yellow-400 shrink-0"}):(0,s.jsx)(h.A,{size:14,className:"text-yellow-400 shrink-0"}),(0,s.jsx)("span",{className:"truncate leading-5",suppressHydrationWarning:!0,children:e.name}),y&&!j&&(0,s.jsx)("span",{className:"ml-auto text-xs text-muted-foreground shrink-0 tabular-nums pr-1",children:ep})]}),(0,s.jsx)("div",{className:"absolute right-1 top-1/2 -translate-y-1/2 hidden group-hover/dir:flex items-center gap-0.5 z-10",children:(0,s.jsx)("button",{type:"button",onClick:e=>{e.preventDefault(),e.stopPropagation();let t=e.currentTarget.getBoundingClientRect();B({x:t.left,y:t.bottom+4})},className:"p-0.5 rounded text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",title:"More",children:(0,s.jsx)(x.A,{size:14})})})]}),(0,s.jsx)("div",{className:`grid transition-[grid-template-rows] duration-200 ease-out ${j?"grid-rows-[1fr]":"grid-rows-[0fr]"}`,children:(0,s.jsxs)("div",{className:`overflow-hidden ${ef?"border-l-2 ml-[18px]":""}`,style:ef?{borderColor:"color-mix(in srgb, var(--amber) 30%, transparent)"}:void 0,...!j&&{inert:!0},children:[A&&e.children&&(0,s.jsx)(en,{nodes:e.children,depth:ef?1:t+1,onNavigate:l,maxOpenDepth:c,parentIsSpace:y,onImport:g}),$&&(0,s.jsx)(X,{dirPath:e.path,depth:ef?0:t,onDone:()=>D(!1)})]})}),J&&(y?(0,s.jsx)(K,{x:J.x,y:J.y,node:e,onClose:()=>B(null),onRename:()=>ec(),onNewFile:()=>{w(!0),L(!0),D(!0)},onImport:g,onDelete:()=>G("space")}):(0,s.jsx)(V,{x:J.x,y:J.y,node:e,onClose:()=>B(null),onRename:()=>ec(),onNewFile:()=>{w(!0),L(!0),D(!0)},onDelete:()=>G("folder")})),(0,s.jsx)(z.TM,{open:null!==Y,title:"space"===Y?_.fileTree.deleteSpace:_.fileTree.deleteFolder,message:"space"===Y?_.fileTree.confirmDeleteSpace(e.name):_.fileTree.confirmDeleteFolder(e.name),confirmLabel:"space"===Y?_.fileTree.deleteSpace:_.fileTree.deleteFolder,cancelLabel:_.view?.cancel??"Cancel",variant:"destructive",onCancel:()=>G(null),onConfirm:()=>{G(null),ee(async()=>{let t="space"===Y?await S(e.path):await T(e.path);if(t.success&&t.trashId){let n=t.trashId,s=e.path.split("/").pop()??e.path;E.oR.undo(`${_.trash?.movedToTrash??"Deleted"} ${s}`,async()=>{let e=await (0,C.Y)(n);e.success?(v.refresh(),q()):E.oR.error(e.error??"Undo failed")},{label:_.trash?.undo??"Undo"}),v.push("/"),v.refresh(),q()}})}})]})}),et=(0,r.memo)(function({node:e,depth:t,currentPath:n,onNavigate:u}){let m=(0,a.useRouter)(),p=n===e.path,[f,h]=(0,r.useState)(!1),[j,w]=(0,r.useState)(e.name),[N,S]=(0,r.useTransition)(),[,T]=(0,r.useTransition)(),$=(0,r.useRef)(null),{t:D}=(0,R.Y)(),{isPinned:F,togglePin:O}=(0,L.Z)(),P=F(e.path),I=!e.path.includes("/")&&i.A.has(e.name),[M,U]=(0,r.useState)(!1),[W,H]=(0,r.useState)(null),J=(0,r.useCallback)(()=>{f||(m.push(`/view/${(0,o.O0)(e.path)}`),u?.())},[m,e.path,u,f]),K=(0,r.useCallback)(t=>{t.stopPropagation(),w(e.name),h(!0),setTimeout(()=>$.current?.select(),0)},[e.name]),V=(0,r.useCallback)(()=>{let t=j.trim();t&&t!==e.name?S(async()=>{let n=await (0,k.f)(e.path,t);n.success&&n.newPath?(h(!1),m.push(`/view/${(0,o.O0)(n.newPath)}`),m.refresh(),q()):h(!1)}):h(!1)},[j,e.name,e.path,m]),Z=(0,r.useCallback)(e=>{e.stopPropagation(),U(!0)},[]),X=(0,r.useCallback)(t=>{t.dataTransfer.setData("text/mindos-path",e.path),t.dataTransfer.effectAllowed="copy"},[e.path]),ee=(0,r.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),H({x:e.clientX,y:e.clientY})},[]);return f?(0,s.jsxs)("div",{className:"relative px-2 py-0.5",style:{paddingLeft:`${12*t+8}px`},children:[(0,s.jsx)("input",{ref:$,autoFocus:!0,value:j,onChange:e=>w(e.target.value),onKeyDown:e=>{"Enter"===e.key&&V(),"Escape"===e.key&&h(!1)},onBlur:V,className:"w-full bg-muted border border-border rounded px-2 py-0.5 text-xs text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"}),N&&(0,s.jsx)(d.A,{size:12,className:"absolute right-3 top-1/2 -translate-y-1/2 animate-spin text-muted-foreground"})]}):(0,s.jsxs)("div",{className:"relative group/file",children:[(0,s.jsxs)("button",{onClick:J,onContextMenu:ee,draggable:!0,onDragStart:X,"data-filepath":e.path,className:`
|
|
30
|
-
w-full flex items-center gap-1.5 px-2 py-1 rounded text-left
|
|
31
|
-
text-sm transition-colors duration-100 cursor-default pr-16
|
|
32
|
-
${p?"bg-accent text-foreground":"hover:bg-muted text-muted-foreground hover:text-foreground"}
|
|
33
|
-
`,style:{paddingLeft:`${12*t+8}px`},children:["directory"===e.type?null:".csv"===e.extension?(0,s.jsx)(l.A,{size:14,className:"text-success shrink-0"}):(0,s.jsx)(c.A,{size:14,className:"text-muted-foreground shrink-0"}),(0,s.jsx)("span",{className:"truncate leading-5",suppressHydrationWarning:!0,children:e.name}),P&&(0,s.jsx)(g.A,{size:10,className:"shrink-0 fill-[var(--amber)] text-[var(--amber)] opacity-60"})]}),(0,s.jsx)("div",{className:"absolute right-1 top-1/2 -translate-y-1/2 hidden group-hover/file:flex items-center gap-0.5",children:(0,s.jsx)("button",{type:"button",onClick:e=>{e.stopPropagation();let t=e.currentTarget.getBoundingClientRect();H({x:t.left,y:t.bottom+4})},className:"p-0.5 rounded text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",title:"More",children:(0,s.jsx)(x.A,{size:14})})}),W&&(0,s.jsxs)(G,{x:W.x,y:W.y,onClose:()=>H(null),menuHeight:140,children:[(0,s.jsxs)("button",{className:B,onClick:()=>{Q(e.path),H(null)},children:[(0,s.jsx)(v.A,{size:14,className:"shrink-0"})," ",D.fileTree.copyPath]}),(0,s.jsxs)("button",{className:B,onClick:()=>{O(e.path),H(null)},children:[(0,s.jsx)(g.A,{size:14,className:`shrink-0 ${P?"fill-[var(--amber)] text-[var(--amber)]":""}`}),P?D.fileTree.removeFromFavorites:D.fileTree.pinToFavorites]}),!I&&(0,s.jsxs)("button",{className:B,onClick:e=>{H(null),K(e)},children:[(0,s.jsx)(b.A,{size:14,className:"shrink-0"})," ",D.fileTree.rename]}),!I&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("div",{className:Y}),(0,s.jsxs)("button",{className:_,onClick:e=>{H(null),Z(e)},children:[(0,s.jsx)(y.A,{size:14,className:"shrink-0"})," ",D.fileTree.delete]})]})]}),(0,s.jsx)(z.TM,{open:M,title:D.fileTree.delete,message:D.fileTree.confirmDelete(e.name),confirmLabel:D.fileTree.delete,cancelLabel:D.view?.cancel??"Cancel",variant:"destructive",onCancel:()=>U(!1),onConfirm:()=>{U(!1),T(async()=>{let t=await (0,A.i)(e.path);if(t.success){if(t.trashId){let n=t.trashId,s=e.path.split("/").pop()??e.path;E.oR.undo(`${D.trash?.movedToTrash??"Deleted"} ${s}`,async()=>{let e=await (0,C.Y)(n);e.success?(m.refresh(),q()):E.oR.error(e.error??"Undo failed")},{label:D.trash?.undo??"Undo"})}m.refresh(),q()}})}})]})});function en({nodes:e,depth:t=0,onNavigate:n,maxOpenDepth:o,parentIsSpace:l,onImport:c}){var d;let u,m=(u="/view/",(d=(0,a.usePathname)()).startsWith(u)?d.slice(u.length).split("/").map(decodeURIComponent).join("/"):""),p=P(),f=0===t,h=(0,r.useMemo)(()=>{let t=p?e:e.filter(e=>!(f&&e.name.startsWith(".")||"file"===e.type&&i.C.has(e.name)||"directory"===e.type&&e.name.startsWith(".")));return f?t.filter(e=>"directory"!==e.type||"Inbox"!==e.name):t},[e,p,f]);return(0,r.useEffect)(()=>{if(!m||0!==t)return;let e=setTimeout(()=>{let e=document.querySelector(`[data-filepath="${CSS.escape(m)}"]`);e?.scrollIntoView({block:"nearest",behavior:"smooth"})},120);return()=>clearTimeout(e)},[m,t]),(0,s.jsx)("div",{className:"flex flex-col gap-0.5",children:h.map(e=>"directory"===e.type?(0,s.jsx)(ee,{node:e,depth:t,currentPath:m,onNavigate:n,maxOpenDepth:o,onImport:c},e.path):(0,s.jsx)(et,{node:e,depth:t,currentPath:m,onNavigate:n},e.path))})}}}]);
|
|
33
|
+
${t}`:e})}finally{w(!1),setTimeout(()=>T(null),3e3)}},R=async()=>{if(!i)return;k(!0),T(null);let e=i.enabled?"off":"on";try{await (0,f.n)("/api/sync",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:e})}),await C(),T({type:"success",text:i.enabled?n?.autoSyncDisabled??"Auto-sync disabled":n?.autoSyncEnabled??"Auto-sync enabled"})}catch{T({type:"error",text:n?.toggleFailed??"Failed to toggle sync"})}finally{k(!1),setTimeout(()=>T(null),3e3)}},z=async()=>{k(!0);try{await (0,f.n)("/api/sync",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"reset"})}),await C()}catch{T({type:"error",text:n?.resetFailed??"Failed to reset sync configuration"})}finally{k(!1),setTimeout(()=>T(null),3e3)}};if(c)return(0,s.jsx)("div",{className:"flex justify-center py-8",children:(0,s.jsx)(o.A,{size:18,className:"animate-spin text-muted-foreground"})});if(!i||!i.enabled)return(0,s.jsx)(g,{t:e,onInitComplete:C});if(i.needsSetup)return(0,s.jsx)("div",{className:"space-y-6",children:(0,s.jsxs)("div",{className:"flex items-start gap-3 p-4 rounded-lg bg-destructive/10",children:[(0,s.jsx)(a.A,{size:18,className:"text-destructive shrink-0 mt-0.5"}),(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsx)("h3",{className:"text-sm font-medium text-destructive",children:n?.brokenTitle??"Sync configuration is broken"}),(0,s.jsx)("p",{className:"text-xs text-destructive/80",children:i.lastError||(n?.brokenDesc??"The git repository or remote is missing. Reset to re-configure.")}),(0,s.jsxs)(p.jn,{onClick:z,disabled:N,className:"flex items-center gap-2 mt-2",children:[N&&(0,s.jsx)(o.A,{size:14,className:"animate-spin"}),n?.resetButton??"Reset & Re-configure"]})]})]})});let L=i.conflicts||[];return(0,s.jsx)("div",{className:"space-y-4",children:(0,s.jsxs)(p.L7,{icon:(0,s.jsx)(d.A,{size:15}),title:n?.sectionTitle??"Sync",description:i.remote,badge:(0,s.jsx)("span",{className:"text-2xs px-1.5 py-0.5 rounded bg-success/15 text-success font-medium",children:n?.labelEnabled??"Active"}),children:[(0,s.jsxs)("div",{className:"space-y-2 text-sm",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-muted-foreground",children:n?.labelBranch??"Branch"}),(0,s.jsx)("span",{className:"font-mono text-xs",children:i.branch})]}),(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-muted-foreground",children:n?.labelLastSync??"Last sync"}),(0,s.jsx)("span",{className:"text-xs",children:v(i.lastSync,n)})]}),(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-muted-foreground",children:n?.labelUnpushed??"Unpushed"}),(0,s.jsx)("span",{className:"text-xs",children:"string"==typeof i.unpushed&&/^\d+$/.test(i.unpushed)?n?.unpushedCommits?.(parseInt(i.unpushed,10))??`${i.unpushed} commits`:`${i.unpushed??"?"} commits`})]}),(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-muted-foreground",children:n?.labelAutoSync??"Auto-sync"}),(0,s.jsxs)("span",{className:"flex items-center gap-1 text-xs",children:["commit"," ",(0,s.jsxs)(p.l6,{size:"sm",value:String(i.autoCommitInterval),onChange:async e=>{let t=parseInt(e.target.value,10);try{(await fetch("/api/sync",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"update-intervals",autoCommitInterval:t})})).ok&&C()}catch{}},children:[(0,s.jsx)("option",{value:"10",children:"10s"}),(0,s.jsx)("option",{value:"15",children:"15s"}),(0,s.jsx)("option",{value:"30",children:"30s"}),(0,s.jsx)("option",{value:"60",children:"60s"}),(0,s.jsx)("option",{value:"120",children:"120s"})]})," \xb7 pull ",(0,s.jsxs)(p.l6,{size:"sm",value:String(i.autoPullInterval),onChange:async e=>{let t=parseInt(e.target.value,10);try{(await fetch("/api/sync",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"update-intervals",autoPullInterval:t})})).ok&&C()}catch{}},children:[(0,s.jsx)("option",{value:"60",children:"1min"}),(0,s.jsx)("option",{value:"120",children:"2min"}),(0,s.jsx)("option",{value:"300",children:"5min"}),(0,s.jsx)("option",{value:"600",children:"10min"}),(0,s.jsx)("option",{value:"1800",children:"30min"}),(0,s.jsx)("option",{value:"3600",children:"60min"})]})]})]})]}),(0,s.jsxs)("div",{className:"flex items-center gap-2 pt-1",children:[(0,s.jsxs)("button",{type:"button",onClick:E,disabled:x,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-lg border border-border text-muted-foreground hover:text-foreground hover:bg-muted disabled:opacity-40 disabled:cursor-not-allowed transition-colors",children:[(0,s.jsx)(u.A,{size:12,className:x?"animate-spin":""}),n?.syncNow??"Sync Now"]}),(0,s.jsx)("button",{type:"button",onClick:R,disabled:N,className:"flex items-center gap-1.5 px-3 py-1.5 text-sm rounded-lg border border-border text-muted-foreground hover:text-destructive hover:border-destructive/50 disabled:opacity-40 disabled:cursor-not-allowed transition-colors",children:n?.disableAutoSync??"Disable Auto-sync"})]}),S&&(0,s.jsx)("div",{className:"flex items-start gap-1.5 text-xs",role:"status","aria-live":"polite",children:"success"===S.type?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(m.A,{size:13,className:"text-success shrink-0 mt-0.5"}),(0,s.jsx)("span",{className:"text-success",children:S.text})]}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(a.A,{size:13,className:"text-destructive shrink-0 mt-0.5"}),(0,s.jsx)("div",{className:"space-y-0.5",children:S.text.split("\n").map((e,t)=>(0,s.jsx)("span",{className:`block ${t>0?"text-destructive/70":"text-destructive"}`,children:e},t))})]})}),L.length>0&&(0,s.jsxs)("div",{className:"pt-2 border-t border-border/50 space-y-3",children:[(0,s.jsx)("p",{className:"text-xs font-medium text-foreground",children:n?.conflictsTitle?.(L.length)??`Conflicts (${L.length})`}),(0,s.jsx)("p",{className:"text-2xs text-muted-foreground",children:n?.conflictExplain??"These files were changed on both this device and the remote. Choose which version to keep for each file."}),(0,s.jsx)("div",{className:"space-y-2",children:L.map((e,t)=>(0,s.jsx)(y,{file:e.file,time:e.time,syncT:n,onResolved:C},t))})]}),i.lastError&&0===L.length&&(0,s.jsxs)("div",{className:"flex items-start gap-2 text-xs p-2.5 rounded-lg bg-destructive/10 text-destructive",children:[(0,s.jsx)(a.A,{size:12,className:"shrink-0 mt-0.5"}),(0,s.jsxs)("div",{className:"space-y-1",children:[(0,s.jsx)("span",{className:"block",children:i.lastError}),b(i.lastError,i.remote,n)&&(0,s.jsx)("span",{className:"block text-destructive/70",children:b(i.lastError,i.remote,n)})]})]}),(0,s.jsx)(j,{syncT:n})]})})}}}]);
|