@geminilight/mindos 0.6.71 → 0.6.73
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 +27 -27
- package/_standalone/.next/build-manifest.json +3 -3
- package/_standalone/.next/cache/.previewinfo +1 -1
- package/_standalone/.next/cache/.rscinfo +1 -1
- package/_standalone/.next/cache/config.json +3 -3
- package/_standalone/.next/prerender-manifest.json +3 -3
- package/_standalone/.next/react-loadable-manifest.json +4 -4
- package/_standalone/.next/server/app/.well-known/agent-card.json/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/_global-error.html +2 -2
- package/_standalone/.next/server/app/_global-error.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/_standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/_standalone/.next/server/app/_not-found/page.js +1 -1
- package/_standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/agents/[agentKey]/page.js +1 -1
- package/_standalone/.next/server/app/agents/[agentKey]/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/agents/[agentKey]/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/agents/page.js +1 -1
- package/_standalone/.next/server/app/agents/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/agents/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/delegations/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/discover/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/a2a/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/config/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/detect/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/install/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/registry/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/acp/session/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agent-activity/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agents/copy-skill/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agents/custom/detect/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/agents/custom/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/ask/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/ask-sessions/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/auth/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/backlinks/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/bootstrap/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/changes/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/channels/verify/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/connect/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/embedding/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/export/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/extract-pdf/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/file/import/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/file/raw/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/file/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/graph/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/activity/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/config/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/test/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/webhook/feishu/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/im/webhook-status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/inbox/clip/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/inbox/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/lint/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/agents/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/direct-tools/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/install/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/install-skill/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/restart/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/tools/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/mcp/uninstall/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/monitoring/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/recent-files/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/list-models/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/reset-token/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/settings/test-key/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/check-path/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/check-port/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/generate-token/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/ls/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/setup/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/space-overview/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/sync/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/tree-version/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/uninstall/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/update-check/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/update-status/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/changelog/page.js +1 -1
- package/_standalone/.next/server/app/changelog/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/changelog/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/changes/page.js +1 -1
- package/_standalone/.next/server/app/changes/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/changes/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/echo/[segment]/page.js +1 -1
- package/_standalone/.next/server/app/echo/[segment]/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/echo/[segment]/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/echo/page.js +1 -1
- package/_standalone/.next/server/app/echo/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/echo/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/explore/page.js +1 -1
- package/_standalone/.next/server/app/explore/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/explore/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/help/page.js +1 -1
- package/_standalone/.next/server/app/help/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/help/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/inbox/history/page.js +1 -1
- package/_standalone/.next/server/app/inbox/history/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/inbox/history/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/login/page.js +1 -1
- package/_standalone/.next/server/app/login/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/page.js +1 -1
- package/_standalone/.next/server/app/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/setup/page.js +1 -1
- package/_standalone/.next/server/app/setup/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/trash/page.js +2 -2
- package/_standalone/.next/server/app/trash/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app/view/[...path]/page.js +2 -2
- package/_standalone/.next/server/app/view/[...path]/page.js.nft.json +1 -1
- package/_standalone/.next/server/app/view/[...path]/page_client-reference-manifest.js +1 -1
- package/_standalone/.next/server/app-paths-manifest.json +27 -27
- package/_standalone/.next/server/chunks/{3311.js → 2449.js} +2 -2
- package/_standalone/.next/server/chunks/5299.js +1 -1
- package/_standalone/.next/server/chunks/6022.js +34 -34
- 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/{7143.879daa87569c5b02.js → 4094.09364c01df411380.js} +1 -1
- package/_standalone/.next/static/chunks/{5795.d9099a1afecd6047.js → 5331.c89084fd7f67887d.js} +2 -2
- package/_standalone/.next/static/chunks/app/{layout-a344709b8447be75.js → layout-fcbde5bee626d21a.js} +63 -63
- package/_standalone/.next/static/chunks/app/trash/page-e623ff0ab35de002.js +1 -0
- package/_standalone/.next/static/chunks/app/view/[...path]/page-49c4eff6ffdb5168.js +12 -0
- package/_standalone/.next/static/chunks/{webpack-2f2787d3469d3df1.js → webpack-dc486b68118d1328.js} +1 -1
- package/_standalone/.next/trace +72 -72
- package/_standalone/package-lock.json +2 -2
- package/_standalone/package.json +1 -1
- package/app/package.json +1 -1
- package/package.json +1 -1
- package/_standalone/.next/static/chunks/app/trash/page-0907fdd06a4467de.js +0 -1
- package/_standalone/.next/static/chunks/app/view/[...path]/page-f53ce199b4a4bbb5.js +0 -12
- package/browser-extension/README.md +0 -160
- package/browser-extension/build.mjs +0 -63
- package/browser-extension/extension/background/service-worker.js +0 -1
- package/browser-extension/extension/content/extractor.js +0 -2
- package/browser-extension/extension/icons/icon-128.png +0 -0
- package/browser-extension/extension/icons/icon-128.svg +0 -4
- package/browser-extension/extension/icons/icon-16.png +0 -0
- package/browser-extension/extension/icons/icon-16.svg +0 -4
- package/browser-extension/extension/icons/icon-32.png +0 -0
- package/browser-extension/extension/icons/icon-32.svg +0 -4
- package/browser-extension/extension/icons/icon-48.png +0 -0
- package/browser-extension/extension/icons/icon-48.svg +0 -4
- package/browser-extension/extension/manifest.json +0 -47
- package/browser-extension/extension/popup/popup.css +0 -510
- package/browser-extension/extension/popup/popup.html +0 -128
- package/browser-extension/extension/popup/popup.js +0 -73
- package/browser-extension/package-lock.json +0 -617
- package/browser-extension/package.json +0 -21
- package/browser-extension/scripts/gen-icons.sh +0 -38
- package/browser-extension/src/background/service-worker.ts +0 -27
- package/browser-extension/src/content/extractor.ts +0 -44
- package/browser-extension/src/icons/icon-128.png +0 -0
- package/browser-extension/src/icons/icon-128.svg +0 -4
- package/browser-extension/src/icons/icon-16.png +0 -0
- package/browser-extension/src/icons/icon-16.svg +0 -4
- package/browser-extension/src/icons/icon-32.png +0 -0
- package/browser-extension/src/icons/icon-32.svg +0 -4
- package/browser-extension/src/icons/icon-48.png +0 -0
- package/browser-extension/src/icons/icon-48.svg +0 -4
- package/browser-extension/src/lib/api.ts +0 -146
- package/browser-extension/src/lib/markdown.ts +0 -68
- package/browser-extension/src/lib/storage.ts +0 -37
- package/browser-extension/src/lib/types.ts +0 -42
- package/browser-extension/src/manifest.json +0 -47
- package/browser-extension/src/popup/popup.css +0 -510
- package/browser-extension/src/popup/popup.html +0 -128
- package/browser-extension/src/popup/popup.ts +0 -416
- package/browser-extension/tsconfig.json +0 -16
- package/tests/e2e/README.md +0 -25
- package/tests/e2e/navigation.spec.ts +0 -14
- package/tests/e2e/playwright.config.ts +0 -14
- package/tests/integration/README.md +0 -25
- package/tests/integration/mcp-contract.test.ts +0 -57
- package/tests/integration/mcp-transport.test.ts +0 -361
- package/tests/integration/package-lock.json +0 -1463
- package/tests/integration/package.json +0 -8
- package/tests/integration/vitest.config.ts +0 -11
- package/tests/security-hardening.test.ts +0 -456
- package/tests/unit/build-integrity.test.ts +0 -137
- package/tests/unit/cli-build.test.ts +0 -180
- package/tests/unit/cli-config.test.ts +0 -257
- package/tests/unit/cli-mcp-install-toml.test.ts +0 -586
- package/tests/unit/cli-mcp-install.test.ts +0 -123
- package/tests/unit/cli-mcp-stdio-default.test.ts +0 -180
- package/tests/unit/cli-modules-load.test.ts +0 -64
- package/tests/unit/cli-port.test.ts +0 -87
- package/tests/unit/cli-skill-auto-copy.test.ts +0 -260
- package/tests/unit/cli-smoke.test.ts +0 -88
- package/tests/unit/cli-uninstall.test.ts +0 -218
- package/tests/unit/cli-update-root.test.ts +0 -89
- package/tests/unit/cli-user-flow-sim.test.ts +0 -506
- package/tests/unit/cli-wait-hint.test.ts +0 -86
- package/tests/unit/custom-agents.test.ts +0 -478
- package/tests/unit/dep-safety.test.ts +0 -126
- package/tests/unit/detect-system-lang.test.ts +0 -122
- package/tests/unit/mcp-build.test.ts +0 -162
- package/tests/unit/setup-needs-restart.test.ts +0 -139
- package/tests/unit/stop-restart.test.ts +0 -393
- package/tests/unit/vitest.config.ts +0 -8
- /package/_standalone/.next/static/{w5bqzZbd2_vdoPRB0JQ_I → Dn8EHqUedSzanCfrM8WWS}/_buildManifest.js +0 -0
- /package/_standalone/.next/static/{w5bqzZbd2_vdoPRB0JQ_I → Dn8EHqUedSzanCfrM8WWS}/_ssgManifest.js +0 -0
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<meta name="viewport" content="width=380, initial-scale=1.0">
|
|
6
|
-
<title>MindOS Web Clipper</title>
|
|
7
|
-
<link rel="stylesheet" href="popup.css">
|
|
8
|
-
</head>
|
|
9
|
-
<body>
|
|
10
|
-
<div id="app">
|
|
11
|
-
<!-- Setup View (first time) -->
|
|
12
|
-
<div id="view-setup" class="view" hidden>
|
|
13
|
-
<div class="header">
|
|
14
|
-
<div class="logo">
|
|
15
|
-
<img src="../icons/icon-32.png" alt="" width="24" height="24">
|
|
16
|
-
<span class="logo-text">MindOS</span>
|
|
17
|
-
</div>
|
|
18
|
-
<p class="subtitle">Connect to your knowledge base</p>
|
|
19
|
-
</div>
|
|
20
|
-
|
|
21
|
-
<div class="form-group">
|
|
22
|
-
<label for="setup-url">MindOS URL</label>
|
|
23
|
-
<input id="setup-url" type="url" value="http://localhost:3456" placeholder="http://localhost:3456" spellcheck="false" autocomplete="off">
|
|
24
|
-
</div>
|
|
25
|
-
|
|
26
|
-
<div class="form-group">
|
|
27
|
-
<label for="setup-token">Auth Token</label>
|
|
28
|
-
<input id="setup-token" type="password" placeholder="Paste your token here" spellcheck="false" autocomplete="off">
|
|
29
|
-
<p class="hint">Find it in MindOS Settings → MCP</p>
|
|
30
|
-
</div>
|
|
31
|
-
|
|
32
|
-
<div id="setup-error" class="error-bar" hidden></div>
|
|
33
|
-
|
|
34
|
-
<button id="btn-connect" class="btn-primary">
|
|
35
|
-
<span class="btn-text">Connect</span>
|
|
36
|
-
<span class="btn-loading" hidden>
|
|
37
|
-
<svg class="spinner" viewBox="0 0 24 24"><circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="3" fill="none" stroke-dasharray="31 31" stroke-linecap="round"/></svg>
|
|
38
|
-
Connecting...
|
|
39
|
-
</span>
|
|
40
|
-
</button>
|
|
41
|
-
</div>
|
|
42
|
-
|
|
43
|
-
<!-- Clip View (main) -->
|
|
44
|
-
<div id="view-clip" class="view" hidden>
|
|
45
|
-
<div class="header compact">
|
|
46
|
-
<div class="logo">
|
|
47
|
-
<img src="../icons/icon-32.png" alt="" width="20" height="20">
|
|
48
|
-
<span class="logo-text">MindOS</span>
|
|
49
|
-
</div>
|
|
50
|
-
<button id="btn-settings" class="btn-icon" title="Settings" aria-label="Settings">
|
|
51
|
-
<svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"/><circle cx="12" cy="12" r="3"/></svg>
|
|
52
|
-
</button>
|
|
53
|
-
</div>
|
|
54
|
-
|
|
55
|
-
<div class="clip-preview">
|
|
56
|
-
<input id="clip-title" type="text" class="title-input" placeholder="Page title" aria-label="Edit page title">
|
|
57
|
-
<div class="meta-row">
|
|
58
|
-
<span id="clip-site" class="meta-badge">
|
|
59
|
-
<svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg>
|
|
60
|
-
<span id="clip-site-text"></span>
|
|
61
|
-
</span>
|
|
62
|
-
<span id="clip-words" class="meta-badge">
|
|
63
|
-
<svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/></svg>
|
|
64
|
-
<span id="clip-words-text"></span>
|
|
65
|
-
</span>
|
|
66
|
-
</div>
|
|
67
|
-
</div>
|
|
68
|
-
|
|
69
|
-
<div class="form-group">
|
|
70
|
-
<label>Save to</label>
|
|
71
|
-
<button id="dir-trigger" type="button" class="dir-trigger" aria-expanded="false" aria-controls="dir-panel">
|
|
72
|
-
<svg class="dir-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"/></svg>
|
|
73
|
-
<span id="dir-label" class="dir-label">Inbox</span>
|
|
74
|
-
<svg class="dir-chevron" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"/></svg>
|
|
75
|
-
</button>
|
|
76
|
-
<div id="dir-panel" class="dir-panel" hidden>
|
|
77
|
-
<div id="dir-breadcrumb" class="dir-breadcrumb"></div>
|
|
78
|
-
<div id="dir-list" class="dir-list" role="listbox" aria-label="Directory list"></div>
|
|
79
|
-
<button id="dir-confirm" type="button" class="dir-confirm" aria-label="Confirm directory selection">
|
|
80
|
-
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>
|
|
81
|
-
</button>
|
|
82
|
-
</div>
|
|
83
|
-
</div>
|
|
84
|
-
|
|
85
|
-
<div id="clip-error" class="error-bar" hidden></div>
|
|
86
|
-
|
|
87
|
-
<button id="btn-save" class="btn-primary">
|
|
88
|
-
<span class="btn-text">
|
|
89
|
-
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 5v14"/><path d="m5 12 7-7 7 7"/></svg>
|
|
90
|
-
Save to MindOS
|
|
91
|
-
</span>
|
|
92
|
-
<span class="btn-loading" hidden>
|
|
93
|
-
<svg class="spinner" viewBox="0 0 24 24"><circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="3" fill="none" stroke-dasharray="31 31" stroke-linecap="round"/></svg>
|
|
94
|
-
Saving...
|
|
95
|
-
</span>
|
|
96
|
-
</button>
|
|
97
|
-
</div>
|
|
98
|
-
|
|
99
|
-
<!-- Success View -->
|
|
100
|
-
<div id="view-success" class="view" hidden>
|
|
101
|
-
<div class="success-card">
|
|
102
|
-
<div class="success-icon" aria-hidden="true">
|
|
103
|
-
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>
|
|
104
|
-
</div>
|
|
105
|
-
<p class="success-title">Saved!</p>
|
|
106
|
-
<p id="success-detail" class="success-detail"></p>
|
|
107
|
-
</div>
|
|
108
|
-
<div class="success-actions">
|
|
109
|
-
<button id="btn-clip-another" class="btn-secondary">Clip Again</button>
|
|
110
|
-
<button id="btn-done" class="btn-secondary">Done</button>
|
|
111
|
-
</div>
|
|
112
|
-
</div>
|
|
113
|
-
|
|
114
|
-
<!-- Loading View (extracting) -->
|
|
115
|
-
<div id="view-loading" class="view" hidden>
|
|
116
|
-
<div class="loading-state">
|
|
117
|
-
<div class="loading-brand">
|
|
118
|
-
<img src="../icons/icon-32.png" alt="" width="24" height="24">
|
|
119
|
-
</div>
|
|
120
|
-
<svg class="spinner large" viewBox="0 0 24 24"><circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="3" fill="none" stroke-dasharray="31 31" stroke-linecap="round"/></svg>
|
|
121
|
-
<p class="loading-text">Reading page content...</p>
|
|
122
|
-
</div>
|
|
123
|
-
</div>
|
|
124
|
-
</div>
|
|
125
|
-
|
|
126
|
-
<script type="module" src="popup.js"></script>
|
|
127
|
-
</body>
|
|
128
|
-
</html>
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
function Me(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}function $(e,t){return Array(t+1).join(e)}function re(e){return e.replace(/^\n*/,"")}function ie(e){for(var t=e.length;t>0&&e[t-1]===`
|
|
2
|
-
`;)t--;return e.substring(0,t)}function ae(e){return ie(re(e))}var Ae=["ADDRESS","ARTICLE","ASIDE","AUDIO","BLOCKQUOTE","BODY","CANVAS","CENTER","DD","DIR","DIV","DL","DT","FIELDSET","FIGCAPTION","FIGURE","FOOTER","FORM","FRAMESET","H1","H2","H3","H4","H5","H6","HEADER","HGROUP","HR","HTML","ISINDEX","LI","MAIN","MENU","NAV","NOFRAMES","NOSCRIPT","OL","OUTPUT","P","PRE","SECTION","TABLE","TBODY","TD","TFOOT","TH","THEAD","TR","UL"];function F(e){return U(e,Ae)}var oe=["AREA","BASE","BR","COL","COMMAND","EMBED","HR","IMG","INPUT","KEYGEN","LINK","META","PARAM","SOURCE","TRACK","WBR"];function se(e){return U(e,oe)}function Re(e){return ce(e,oe)}var le=["A","TABLE","THEAD","TBODY","TFOOT","TH","TD","IFRAME","SCRIPT","AUDIO","VIDEO"];function De(e){return U(e,le)}function Oe(e){return ce(e,le)}function U(e,t){return t.indexOf(e.nodeName)>=0}function ce(e,t){return e.getElementsByTagName&&t.some(function(n){return e.getElementsByTagName(n).length})}var Pe=[[/\\/g,"\\\\"],[/\*/g,"\\*"],[/^-/g,"\\-"],[/^\+ /g,"\\+ "],[/^(=+)/g,"\\$1"],[/^(#{1,6}) /g,"\\$1 "],[/`/g,"\\`"],[/^~~~/g,"\\~~~"],[/\[/g,"\\["],[/\]/g,"\\]"],[/^>/g,"\\>"],[/_/g,"\\_"],[/^(\d+)\. /g,"$1\\. "]];function ue(e){return Pe.reduce(function(t,n){return t.replace(n[0],n[1])},e)}var u={};u.paragraph={filter:"p",replacement:function(e){return`
|
|
3
|
-
|
|
4
|
-
`+e+`
|
|
5
|
-
|
|
6
|
-
`}};u.lineBreak={filter:"br",replacement:function(e,t,n){return n.br+`
|
|
7
|
-
`}};u.heading={filter:["h1","h2","h3","h4","h5","h6"],replacement:function(e,t,n){var r=Number(t.nodeName.charAt(1));if(n.headingStyle==="setext"&&r<3){var i=$(r===1?"=":"-",e.length);return`
|
|
8
|
-
|
|
9
|
-
`+e+`
|
|
10
|
-
`+i+`
|
|
11
|
-
|
|
12
|
-
`}else return`
|
|
13
|
-
|
|
14
|
-
`+$("#",r)+" "+e+`
|
|
15
|
-
|
|
16
|
-
`}};u.blockquote={filter:"blockquote",replacement:function(e){return e=ae(e).replace(/^/gm,"> "),`
|
|
17
|
-
|
|
18
|
-
`+e+`
|
|
19
|
-
|
|
20
|
-
`}};u.list={filter:["ul","ol"],replacement:function(e,t){var n=t.parentNode;return n.nodeName==="LI"&&n.lastElementChild===t?`
|
|
21
|
-
`+e:`
|
|
22
|
-
|
|
23
|
-
`+e+`
|
|
24
|
-
|
|
25
|
-
`}};u.listItem={filter:"li",replacement:function(e,t,n){var r=n.bulletListMarker+" ",i=t.parentNode;if(i.nodeName==="OL"){var a=i.getAttribute("start"),o=Array.prototype.indexOf.call(i.children,t);r=(a?Number(a)+o:o+1)+". "}var l=/\n$/.test(e);return e=ae(e)+(l?`
|
|
26
|
-
`:""),e=e.replace(/\n/gm,`
|
|
27
|
-
`+" ".repeat(r.length)),r+e+(t.nextSibling?`
|
|
28
|
-
`:"")}};u.indentedCodeBlock={filter:function(e,t){return t.codeBlockStyle==="indented"&&e.nodeName==="PRE"&&e.firstChild&&e.firstChild.nodeName==="CODE"},replacement:function(e,t,n){return`
|
|
29
|
-
|
|
30
|
-
`+t.firstChild.textContent.replace(/\n/g,`
|
|
31
|
-
`)+`
|
|
32
|
-
|
|
33
|
-
`}};u.fencedCodeBlock={filter:function(e,t){return t.codeBlockStyle==="fenced"&&e.nodeName==="PRE"&&e.firstChild&&e.firstChild.nodeName==="CODE"},replacement:function(e,t,n){for(var r=t.firstChild.getAttribute("class")||"",i=(r.match(/language-(\S+)/)||[null,""])[1],a=t.firstChild.textContent,o=n.fence.charAt(0),l=3,s=new RegExp("^"+o+"{3,}","gm"),m;m=s.exec(a);)m[0].length>=l&&(l=m[0].length+1);var S=$(o,l);return`
|
|
34
|
-
|
|
35
|
-
`+S+i+`
|
|
36
|
-
`+a.replace(/\n$/,"")+`
|
|
37
|
-
`+S+`
|
|
38
|
-
|
|
39
|
-
`}};u.horizontalRule={filter:"hr",replacement:function(e,t,n){return`
|
|
40
|
-
|
|
41
|
-
`+n.hr+`
|
|
42
|
-
|
|
43
|
-
`}};u.inlineLink={filter:function(e,t){return t.linkStyle==="inlined"&&e.nodeName==="A"&&e.getAttribute("href")},replacement:function(e,t){var n=_(t.getAttribute("href")),r=j(L(t.getAttribute("title"))),i=r?' "'+r+'"':"";return"["+e+"]("+n+i+")"}};u.referenceLink={filter:function(e,t){return t.linkStyle==="referenced"&&e.nodeName==="A"&&e.getAttribute("href")},replacement:function(e,t,n){var r=_(t.getAttribute("href")),i=L(t.getAttribute("title"));i&&(i=' "'+j(i)+'"');var a,o;switch(n.linkReferenceStyle){case"collapsed":a="["+e+"][]",o="["+e+"]: "+r+i;break;case"shortcut":a="["+e+"]",o="["+e+"]: "+r+i;break;default:var l=this.references.length+1;a="["+e+"]["+l+"]",o="["+l+"]: "+r+i}return this.references.push(o),a},references:[],append:function(e){var t="";return this.references.length&&(t=`
|
|
44
|
-
|
|
45
|
-
`+this.references.join(`
|
|
46
|
-
`)+`
|
|
47
|
-
|
|
48
|
-
`,this.references=[]),t}};u.emphasis={filter:["em","i"],replacement:function(e,t,n){return e.trim()?n.emDelimiter+e+n.emDelimiter:""}};u.strong={filter:["strong","b"],replacement:function(e,t,n){return e.trim()?n.strongDelimiter+e+n.strongDelimiter:""}};u.code={filter:function(e){var t=e.previousSibling||e.nextSibling,n=e.parentNode.nodeName==="PRE"&&!t;return e.nodeName==="CODE"&&!n},replacement:function(e){if(!e)return"";e=e.replace(/\r?\n|\r/g," ");for(var t=/^`|^ .*?[^ ].* $|`$/.test(e)?" ":"",n="`",r=e.match(/`+/gm)||[];r.indexOf(n)!==-1;)n=n+"`";return n+t+e+t+n}};u.image={filter:"img",replacement:function(e,t){var n=ue(L(t.getAttribute("alt"))),r=_(t.getAttribute("src")||""),i=L(t.getAttribute("title")),a=i?' "'+j(i)+'"':"";return r?"":""}};function L(e){return e?e.replace(/(\n+\s*)+/g,`
|
|
49
|
-
`):""}function _(e){var t=e.replace(/([<>()])/g,"\\$1");return t.indexOf(" ")>=0?"<"+t+">":t}function j(e){return e.replace(/"/g,'\\"')}function fe(e){this.options=e,this._keep=[],this._remove=[],this.blankRule={replacement:e.blankReplacement},this.keepReplacement=e.keepReplacement,this.defaultRule={replacement:e.defaultReplacement},this.array=[];for(var t in e.rules)this.array.push(e.rules[t])}fe.prototype={add:function(e,t){this.array.unshift(t)},keep:function(e){this._keep.unshift({filter:e,replacement:this.keepReplacement})},remove:function(e){this._remove.unshift({filter:e,replacement:function(){return""}})},forNode:function(e){if(e.isBlank)return this.blankRule;var t;return(t=H(this.array,e,this.options))||(t=H(this._keep,e,this.options))||(t=H(this._remove,e,this.options))?t:this.defaultRule},forEach:function(e){for(var t=0;t<this.array.length;t++)e(this.array[t],t)}};function H(e,t,n){for(var r=0;r<e.length;r++){var i=e[r];if(He(i,t,n))return i}}function He(e,t,n){var r=e.filter;if(typeof r=="string"){if(r===t.nodeName.toLowerCase())return!0}else if(Array.isArray(r)){if(r.indexOf(t.nodeName.toLowerCase())>-1)return!0}else if(typeof r=="function"){if(r.call(e,t,n))return!0}else throw new TypeError("`filter` needs to be a string, array, or function")}function Be(e){var t=e.element,n=e.isBlock,r=e.isVoid,i=e.isPre||function(Ne){return Ne.nodeName==="PRE"};if(!(!t.firstChild||i(t))){for(var a=null,o=!1,l=null,s=te(l,t,i);s!==t;){if(s.nodeType===3||s.nodeType===4){var m=s.data.replace(/[ \r\n\t]+/g," ");if((!a||/ $/.test(a.data))&&!o&&m[0]===" "&&(m=m.substr(1)),!m){s=B(s);continue}s.data=m,a=s}else if(s.nodeType===1)n(s)||s.nodeName==="BR"?(a&&(a.data=a.data.replace(/ $/,"")),a=null,o=!1):r(s)||i(s)?(a=null,o=!0):a&&(o=!1);else{s=B(s);continue}var S=te(l,s,i);l=s,s=S}a&&(a.data=a.data.replace(/ $/,""),a.data||B(a))}}function B(e){var t=e.nextSibling||e.parentNode;return e.parentNode.removeChild(e),t}function te(e,t,n){return e&&e.parentNode===t||n(t)?t.nextSibling||t.parentNode:t.firstChild||t.nextSibling||t.parentNode}var W=typeof window<"u"?window:{};function Ie(){var e=W.DOMParser,t=!1;try{new e().parseFromString("","text/html")&&(t=!0)}catch{}return t}function $e(){var e=function(){};return Fe()?e.prototype.parseFromString=function(t){var n=new window.ActiveXObject("htmlfile");return n.designMode="on",n.open(),n.write(t),n.close(),n}:e.prototype.parseFromString=function(t){var n=document.implementation.createHTMLDocument("");return n.open(),n.write(t),n.close(),n},e}function Fe(){var e=!1;try{document.implementation.createHTMLDocument("").open()}catch{W.ActiveXObject&&(e=!0)}return e}var Ue=Ie()?W.DOMParser:$e();function _e(e,t){var n;if(typeof e=="string"){var r=je().parseFromString('<x-turndown id="turndown-root">'+e+"</x-turndown>","text/html");n=r.getElementById("turndown-root")}else n=e.cloneNode(!0);return Be({element:n,isBlock:F,isVoid:se,isPre:t.preformattedCode?We:null}),n}var I;function je(){return I=I||new Ue,I}function We(e){return e.nodeName==="PRE"||e.nodeName==="CODE"}function Ve(e,t){return e.isBlock=F(e),e.isCode=e.nodeName==="CODE"||e.parentNode.isCode,e.isBlank=qe(e),e.flankingWhitespace=Ge(e,t),e}function qe(e){return!se(e)&&!De(e)&&/^\s*$/i.test(e.textContent)&&!Re(e)&&!Oe(e)}function Ge(e,t){if(e.isBlock||t.preformattedCode&&e.isCode)return{leading:"",trailing:""};var n=ze(e.textContent);return n.leadingAscii&&ne("left",e,t)&&(n.leading=n.leadingNonAscii),n.trailingAscii&&ne("right",e,t)&&(n.trailing=n.trailingNonAscii),{leading:n.leading,trailing:n.trailing}}function ze(e){var t=e.match(/^(([ \t\r\n]*)(\s*))(?:(?=\S)[\s\S]*\S)?((\s*?)([ \t\r\n]*))$/);return{leading:t[1],leadingAscii:t[2],leadingNonAscii:t[3],trailing:t[4],trailingNonAscii:t[5],trailingAscii:t[6]}}function ne(e,t,n){var r,i,a;return e==="left"?(r=t.previousSibling,i=/ $/):(r=t.nextSibling,i=/^ /),r&&(r.nodeType===3?a=i.test(r.nodeValue):n.preformattedCode&&r.nodeName==="CODE"?a=!1:r.nodeType===1&&!F(r)&&(a=i.test(r.textContent))),a}var Xe=Array.prototype.reduce;function y(e){if(!(this instanceof y))return new y(e);var t={rules:u,headingStyle:"setext",hr:"* * *",bulletListMarker:"*",codeBlockStyle:"indented",fence:"```",emDelimiter:"_",strongDelimiter:"**",linkStyle:"inlined",linkReferenceStyle:"full",br:" ",preformattedCode:!1,blankReplacement:function(n,r){return r.isBlock?`
|
|
50
|
-
|
|
51
|
-
`:""},keepReplacement:function(n,r){return r.isBlock?`
|
|
52
|
-
|
|
53
|
-
`+r.outerHTML+`
|
|
54
|
-
|
|
55
|
-
`:r.outerHTML},defaultReplacement:function(n,r){return r.isBlock?`
|
|
56
|
-
|
|
57
|
-
`+n+`
|
|
58
|
-
|
|
59
|
-
`:n}};this.options=Me({},t,e),this.rules=new fe(this.options)}y.prototype={turndown:function(e){if(!Ye(e))throw new TypeError(e+" is not a string, or an element/document/fragment node.");if(e==="")return"";var t=de.call(this,new _e(e,this.options));return Ke.call(this,t)},use:function(e){if(Array.isArray(e))for(var t=0;t<e.length;t++)this.use(e[t]);else if(typeof e=="function")e(this);else throw new TypeError("plugin must be a Function or an Array of Functions");return this},addRule:function(e,t){return this.rules.add(e,t),this},keep:function(e){return this.rules.keep(e),this},remove:function(e){return this.rules.remove(e),this},escape:function(e){return ue(e)}};function de(e){var t=this;return Xe.call(e.childNodes,function(n,r){r=new Ve(r,t.options);var i="";return r.nodeType===3?i=r.isCode?r.nodeValue:t.escape(r.nodeValue):r.nodeType===1&&(i=Qe.call(t,r)),pe(n,i)},"")}function Ke(e){var t=this;return this.rules.forEach(function(n){typeof n.append=="function"&&(e=pe(e,n.append(t.options)))}),e.replace(/^[\t\r\n]+/,"").replace(/[\t\r\n\s]+$/,"")}function Qe(e){var t=this.rules.forNode(e),n=de.call(this,e),r=e.flankingWhitespace;return(r.leading||r.trailing)&&(n=n.trim()),r.leading+t.replacement(n,e,this.options)+r.trailing}function pe(e,t){var n=ie(e),r=re(t),i=Math.max(e.length-n.length,t.length-r.length),a=`
|
|
60
|
-
|
|
61
|
-
`.substring(0,i);return n+a+r}function Ye(e){return e!=null&&(typeof e=="string"||e.nodeType&&(e.nodeType===1||e.nodeType===9||e.nodeType===11))}var q="mindos_clipper_config",V={mindosUrl:"http://localhost:3456",authToken:"",defaultSpace:"Inbox",connected:!1};async function G(){try{let t=(await chrome.storage.local.get(q))[q];return t?{...V,...t}:{...V}}catch{return{...V}}}async function me(e){let n={...await G(),...e};return await chrome.storage.local.set({[q]:n}),n}function he(e){return!!e.mindosUrl&&!!e.authToken}async function w(e,t,n){let r=new AbortController,i=setTimeout(()=>r.abort(),8e3);try{let a=`${e.mindosUrl.replace(/\/+$/,"")}${t}`;return await fetch(a,{...n,signal:r.signal,headers:{"Content-Type":"application/json",Authorization:`Bearer ${e.authToken}`,...n?.headers??{}}})}finally{clearTimeout(i)}}async function ge(e){try{let t=await w(e,"/api/health");if(!t.ok)return{ok:!1,error:`Server returned ${t.status}`};let n=await w(e,"/api/file?op=list_spaces");return n.status===401||n.status===403?{ok:!1,error:"Invalid auth token"}:n.ok?{ok:!0}:{ok:!1,error:`Auth check failed (${n.status})`}}catch(t){return t instanceof DOMException&&t.name==="AbortError"?{ok:!1,error:"Connection timed out"}:{ok:!1,error:"Cannot reach MindOS \u2014 is it running?"}}}async function x(e){try{let t=await w(e,"/api/file?op=list_dirs");return t.ok?(await t.json()).dirs??[]:[]}catch{return[]}}async function ve(e,t,n){try{let r=await w(e,"/api/inbox",{method:"POST",body:JSON.stringify({files:[{name:t,content:n,encoding:"text"}],source:"web-clipper"})}),i;try{i=await r.json()}catch{return{error:`Server returned invalid response (${r.status})`}}return r.ok?{ok:!0}:{error:i.error??`Server error (${r.status})`}}catch(r){return r instanceof DOMException&&r.name==="AbortError"?{error:"Request timed out"}:{error:"Cannot reach MindOS \u2014 is it running?"}}}async function Ce(e,t,n,r){let i=t?`${t.replace(/\/+$/,"")}/${n}`:n;try{let a=await w(e,"/api/file",{method:"POST",body:JSON.stringify({op:"create_file",path:i,content:r,source:"web-clipper"})}),o;try{o=await a.json()}catch{return{error:`Server returned invalid response (${a.status})`}}return a.ok?{ok:!0}:{error:o.error??`Server error (${a.status})`}}catch(a){return a instanceof DOMException&&a.name==="AbortError"?{error:"Request timed out"}:{error:"Cannot reach MindOS \u2014 is it running?"}}}function Je(e){return e.replace(/[\/\\?*:|"<>]/g,"-").replace(/\s+/g," ").replace(/^\.+/,"").trim().slice(0,120)||"Untitled"}function Ze(e){let t=["---"],n=/^(true|false|null|yes|no|on|off|~)$/i,r=/^[*&!@`>|%-]/;for(let[i,a]of Object.entries(e)){if(a==null||a==="")continue;let o=a.replace(/[\r\n]+/g," ").trim(),s=o.includes(":")||o.includes("#")||o.includes("'")||o.includes('"')||o.includes("[")||o.includes("{")||n.test(o)||r.test(o)?`"${o.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`:o;t.push(`${i}: ${s}`)}return t.push("---",""),t.join(`
|
|
62
|
-
`)}function Ee(e,t,n){let r=Je(e.title)+".md",i=n(e.content),o=`${Ze({title:e.title,source:e.url,author:e.byline,site:e.siteName,saved:e.savedAt})}# ${e.title}
|
|
63
|
-
|
|
64
|
-
${i}
|
|
65
|
-
`;return{fileName:r,markdown:o,space:t,wordCount:e.wordCount}}var v="__inbox__",c=e=>document.getElementById(e),Y=c("view-setup"),ke=c("view-clip"),be=c("view-success"),J=c("view-loading"),Z=c("setup-url"),Se=c("setup-token"),N=c("setup-error"),M=c("btn-connect"),X=c("clip-title"),z=c("clip-site"),et=c("clip-site-text"),ye=c("clip-words"),tt=c("clip-words-text"),K=c("dir-trigger"),we=c("dir-label"),Q=c("dir-panel"),A=c("dir-breadcrumb"),Te=c("dir-list"),nt=c("dir-confirm"),T=c("clip-error"),k=c("btn-save"),rt=c("btn-settings"),it=c("success-detail"),at=c("btn-done"),ot=c("btn-clip-another"),f,d=null,C=[],p=v,h="";function E(e){[Y,ke,be,J].forEach(t=>t.hidden=!0),e.hidden=!1}function b(e,t){let n=e.querySelector(".btn-text"),r=e.querySelector(".btn-loading");n&&(n.hidden=t),r&&(r.hidden=!t),e.disabled=t}var Le=new y({headingStyle:"atx",codeBlockStyle:"fenced",bulletListMarker:"-",emDelimiter:"*"});Le.addRule("pre-code",{filter:e=>e.nodeName==="PRE"&&!!e.querySelector("code"),replacement:(e,t)=>{let n=t.querySelector("code"),r=n?.className?.match(/language-(\w+)/)?.[1]||"",i=n?.textContent||"";return`
|
|
66
|
-
\`\`\`${r}
|
|
67
|
-
${i}
|
|
68
|
-
\`\`\`
|
|
69
|
-
`}});async function xe(){let[e]=await chrome.tabs.query({active:!0,currentWindow:!0});if(!e?.id)throw new Error("No active tab");let t=e.url??"";if(t.startsWith("chrome")||t.startsWith("edge")||t.startsWith("about:")||t.startsWith("moz-extension"))throw new Error("Cannot clip browser internal pages");try{await chrome.scripting.executeScript({target:{tabId:e.id},files:["content/extractor.js"]})}catch{throw new Error("Cannot read this page \u2014 try refreshing first")}let n;try{n=await chrome.scripting.executeScript({target:{tabId:e.id},func:()=>window.__mindosClipResult})}catch{throw new Error("Cannot read extraction result")}let r=n?.[0]?.result;if(!r||typeof r!="object")throw new Error("Content extraction returned empty result");return r}async function st(){if(f=await G(),!he(f)){E(Y),Z.value=f.mindosUrl;return}E(J);let e="";try{[d,C]=await Promise.all([xe(),x(f)])}catch(t){e=t instanceof Error?t.message:"Cannot read this page",d=null,C=await x(f).catch(()=>[])}O(e)}function O(e){if(E(ke),e?(g(T,e),k.disabled=!0):(ee(T),k.disabled=!1),d){X.value=d.title;try{let t=new URL(d.url).hostname.replace(/^www\./,"");et.textContent=t,z.style.display=""}catch{z.style.display="none"}tt.textContent=`${d.wordCount.toLocaleString()} words`,ye.style.display=""}else X.value="",z.style.display="none",ye.style.display="none";p=v,h="",D(),P(!1)}function R(){let e=h?h.split("/"):[];A.innerHTML="";let t=document.createElement("button");t.type="button",t.textContent="/ Inbox",t.className=p===v&&!h?"active":"",t.addEventListener("click",()=>{h="",p=v,D(),R()}),A.appendChild(t),e.forEach((i,a)=>{let o=document.createElement("span");o.className="crumb-sep",o.innerHTML="›",A.appendChild(o);let l=document.createElement("button");l.type="button",l.textContent=i;let s=e.slice(0,a+1).join("/");l.className=a===e.length-1?"active":"",l.addEventListener("click",()=>{h=s,p=s,D(),R()}),A.appendChild(l)});let n=h?h+"/":"",r=C.filter(i=>{if(!i.startsWith(n))return!1;let a=i.slice(n.length);return a.length>0&&!a.includes("/")}).sort();Te.innerHTML="";for(let i of r){let a=i.split("/").pop()||i,o=C.some(s=>s.startsWith(i+"/")),l=document.createElement("button");l.type="button",l.className="dir-item",l.innerHTML=`
|
|
70
|
-
<svg class="dir-item-icon" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"/></svg>
|
|
71
|
-
<span class="dir-item-name">${a}</span>
|
|
72
|
-
${o?'<svg class="dir-item-arrow" width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 18 15 12 9 6"/></svg>':""}
|
|
73
|
-
`,l.addEventListener("click",()=>{h=i,p=i,D(),R()}),Te.appendChild(l)}}function D(){p===v?we.textContent="Inbox":we.textContent=p.split("/").join(" / ")}function P(e){let t=e??Q.hidden;Q.hidden=!t,K.classList.toggle("active",t),K.setAttribute("aria-expanded",String(t)),t&&R()}M.addEventListener("click",async()=>{let e=Z.value.trim().replace(/\/+$/,""),t=Se.value.trim();if(!e){g(N,"Please enter your MindOS URL");return}if(!t){g(N,"Please paste your auth token");return}ee(N),b(M,!0);let n={mindosUrl:e,authToken:t,defaultSpace:"Inbox",connected:!1},r=await ge(n);if(!r.ok){b(M,!1),g(N,r.error||"Connection failed");return}f=await me({...n,connected:!0}),b(M,!1),E(J);try{[d,C]=await Promise.all([xe(),x(f)])}catch(i){d=null,C=[],O(i instanceof Error?i.message:"Cannot read this page");return}O()});k.addEventListener("click",async()=>{if(!d){g(T,"No content extracted from this page");return}ee(T),b(k,!0);let e={...d,title:X.value.trim()||d.title},t=p===v,n=Ee(e,t?"":p,a=>Le.turndown(a)),r=t?await ve(f,n.fileName,n.markdown):await Ce(f,p,n.fileName,n.markdown);if(b(k,!1),r.error){g(T,r.error);return}let i=t?`Inbox/${n.fileName}`:`${p}/${n.fileName}`;it.textContent=i,E(be)});rt.addEventListener("click",()=>{Z.value=f.mindosUrl,Se.value=f.authToken,E(Y)});at.addEventListener("click",()=>{window.close()});ot.addEventListener("click",()=>{O()});K.addEventListener("click",()=>P());nt.addEventListener("click",()=>P(!1));document.addEventListener("keydown",e=>{e.key==="Escape"&&!Q.hidden&&(e.preventDefault(),P(!1))});function g(e,t){e.textContent=t,e.hidden=!1}function ee(e){e.hidden=!0}st();
|