stellavault 0.4.4 → 0.5.0
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/README.md +52 -16
- package/SECURITY.md +50 -0
- package/dist/stellavault.js +8968 -0
- package/package.json +70 -33
- package/.env.example +0 -12
- package/CHANGELOG.md +0 -106
- package/CLAUDE.md +0 -42
- package/CONTRIBUTING.md +0 -65
- package/index.html +0 -509
- package/packages/cli/bin/ekh.js +0 -2
- package/packages/cli/bin/stellavault.js +0 -2
- package/packages/cli/dist/commands/adr-cmd.d.ts +0 -7
- package/packages/cli/dist/commands/adr-cmd.js +0 -45
- package/packages/cli/dist/commands/ask-cmd.d.ts +0 -5
- package/packages/cli/dist/commands/ask-cmd.js +0 -36
- package/packages/cli/dist/commands/autopilot-cmd.d.ts +0 -4
- package/packages/cli/dist/commands/autopilot-cmd.js +0 -76
- package/packages/cli/dist/commands/brief-cmd.d.ts +0 -2
- package/packages/cli/dist/commands/brief-cmd.js +0 -82
- package/packages/cli/dist/commands/capture-cmd.d.ts +0 -7
- package/packages/cli/dist/commands/capture-cmd.js +0 -31
- package/packages/cli/dist/commands/card-cmd.d.ts +0 -4
- package/packages/cli/dist/commands/card-cmd.js +0 -26
- package/packages/cli/dist/commands/clip-cmd.d.ts +0 -4
- package/packages/cli/dist/commands/clip-cmd.js +0 -151
- package/packages/cli/dist/commands/cloud-cmd.d.ts +0 -4
- package/packages/cli/dist/commands/cloud-cmd.js +0 -64
- package/packages/cli/dist/commands/compile-cmd.d.ts +0 -6
- package/packages/cli/dist/commands/compile-cmd.js +0 -30
- package/packages/cli/dist/commands/contradictions-cmd.d.ts +0 -2
- package/packages/cli/dist/commands/contradictions-cmd.js +0 -34
- package/packages/cli/dist/commands/decay-cmd.d.ts +0 -2
- package/packages/cli/dist/commands/decay-cmd.js +0 -48
- package/packages/cli/dist/commands/digest-cmd.d.ts +0 -5
- package/packages/cli/dist/commands/digest-cmd.js +0 -136
- package/packages/cli/dist/commands/draft-cmd.d.ts +0 -6
- package/packages/cli/dist/commands/draft-cmd.js +0 -110
- package/packages/cli/dist/commands/duplicates-cmd.d.ts +0 -4
- package/packages/cli/dist/commands/duplicates-cmd.js +0 -30
- package/packages/cli/dist/commands/federate-cmd.d.ts +0 -5
- package/packages/cli/dist/commands/federate-cmd.js +0 -247
- package/packages/cli/dist/commands/fleeting-cmd.d.ts +0 -4
- package/packages/cli/dist/commands/fleeting-cmd.js +0 -45
- package/packages/cli/dist/commands/flush-cmd.d.ts +0 -2
- package/packages/cli/dist/commands/flush-cmd.js +0 -58
- package/packages/cli/dist/commands/gaps-cmd.d.ts +0 -2
- package/packages/cli/dist/commands/gaps-cmd.js +0 -33
- package/packages/cli/dist/commands/graph-cmd.d.ts +0 -2
- package/packages/cli/dist/commands/graph-cmd.js +0 -89
- package/packages/cli/dist/commands/index-cmd.d.ts +0 -2
- package/packages/cli/dist/commands/index-cmd.js +0 -57
- package/packages/cli/dist/commands/ingest-cmd.d.ts +0 -9
- package/packages/cli/dist/commands/ingest-cmd.js +0 -195
- package/packages/cli/dist/commands/init-cmd.d.ts +0 -2
- package/packages/cli/dist/commands/init-cmd.js +0 -161
- package/packages/cli/dist/commands/learn-cmd.d.ts +0 -2
- package/packages/cli/dist/commands/learn-cmd.js +0 -48
- package/packages/cli/dist/commands/lint-cmd.d.ts +0 -2
- package/packages/cli/dist/commands/lint-cmd.js +0 -61
- package/packages/cli/dist/commands/pack-cmd.d.ts +0 -15
- package/packages/cli/dist/commands/pack-cmd.js +0 -93
- package/packages/cli/dist/commands/review-cmd.d.ts +0 -4
- package/packages/cli/dist/commands/review-cmd.js +0 -107
- package/packages/cli/dist/commands/search-cmd.d.ts +0 -4
- package/packages/cli/dist/commands/search-cmd.js +0 -38
- package/packages/cli/dist/commands/serve-cmd.d.ts +0 -2
- package/packages/cli/dist/commands/serve-cmd.js +0 -14
- package/packages/cli/dist/commands/session-cmd.d.ts +0 -7
- package/packages/cli/dist/commands/session-cmd.js +0 -95
- package/packages/cli/dist/commands/status-cmd.d.ts +0 -2
- package/packages/cli/dist/commands/status-cmd.js +0 -33
- package/packages/cli/dist/commands/sync-cmd.d.ts +0 -5
- package/packages/cli/dist/commands/sync-cmd.js +0 -62
- package/packages/cli/dist/commands/vault-cmd.d.ts +0 -10
- package/packages/cli/dist/commands/vault-cmd.js +0 -54
- package/packages/cli/dist/index.d.ts +0 -2
- package/packages/cli/dist/index.js +0 -233
- package/packages/cli/package.json +0 -24
- package/packages/core/dist/api/dashboard.d.ts +0 -3
- package/packages/core/dist/api/dashboard.js +0 -135
- package/packages/core/dist/api/graph-data.d.ts +0 -11
- package/packages/core/dist/api/graph-data.js +0 -255
- package/packages/core/dist/api/pwa.d.ts +0 -3
- package/packages/core/dist/api/pwa.js +0 -77
- package/packages/core/dist/api/server.d.ts +0 -16
- package/packages/core/dist/api/server.js +0 -1122
- package/packages/core/dist/capture/voice.d.ts +0 -24
- package/packages/core/dist/capture/voice.js +0 -135
- package/packages/core/dist/cloud/index.d.ts +0 -3
- package/packages/core/dist/cloud/index.js +0 -2
- package/packages/core/dist/cloud/sync.d.ts +0 -29
- package/packages/core/dist/cloud/sync.js +0 -137
- package/packages/core/dist/config.d.ts +0 -35
- package/packages/core/dist/config.js +0 -63
- package/packages/core/dist/federation/credits.d.ts +0 -26
- package/packages/core/dist/federation/credits.js +0 -56
- package/packages/core/dist/federation/identity.d.ts +0 -14
- package/packages/core/dist/federation/identity.js +0 -74
- package/packages/core/dist/federation/index.d.ts +0 -7
- package/packages/core/dist/federation/index.js +0 -5
- package/packages/core/dist/federation/node.d.ts +0 -31
- package/packages/core/dist/federation/node.js +0 -216
- package/packages/core/dist/federation/privacy.d.ts +0 -8
- package/packages/core/dist/federation/privacy.js +0 -40
- package/packages/core/dist/federation/reputation.d.ts +0 -37
- package/packages/core/dist/federation/reputation.js +0 -139
- package/packages/core/dist/federation/search.d.ts +0 -19
- package/packages/core/dist/federation/search.js +0 -101
- package/packages/core/dist/federation/sharing.d.ts +0 -72
- package/packages/core/dist/federation/sharing.js +0 -246
- package/packages/core/dist/federation/trust.d.ts +0 -15
- package/packages/core/dist/federation/trust.js +0 -60
- package/packages/core/dist/federation/types.d.ts +0 -40
- package/packages/core/dist/federation/types.js +0 -3
- package/packages/core/dist/i18n/index.d.ts +0 -6
- package/packages/core/dist/i18n/index.js +0 -81
- package/packages/core/dist/i18n/note-strings.d.ts +0 -5
- package/packages/core/dist/i18n/note-strings.js +0 -94
- package/packages/core/dist/index.d.ts +0 -123
- package/packages/core/dist/index.js +0 -74
- package/packages/core/dist/indexer/chunker.d.ts +0 -14
- package/packages/core/dist/indexer/chunker.js +0 -148
- package/packages/core/dist/indexer/embedder.d.ts +0 -8
- package/packages/core/dist/indexer/embedder.js +0 -3
- package/packages/core/dist/indexer/index.d.ts +0 -28
- package/packages/core/dist/indexer/index.js +0 -74
- package/packages/core/dist/indexer/local-embedder.d.ts +0 -3
- package/packages/core/dist/indexer/local-embedder.js +0 -29
- package/packages/core/dist/indexer/scanner.d.ts +0 -11
- package/packages/core/dist/indexer/scanner.js +0 -148
- package/packages/core/dist/indexer/watcher.d.ts +0 -19
- package/packages/core/dist/indexer/watcher.js +0 -49
- package/packages/core/dist/intelligence/ask-engine.d.ts +0 -24
- package/packages/core/dist/intelligence/ask-engine.js +0 -142
- package/packages/core/dist/intelligence/auto-linker.d.ts +0 -19
- package/packages/core/dist/intelligence/auto-linker.js +0 -126
- package/packages/core/dist/intelligence/code-linker.d.ts +0 -20
- package/packages/core/dist/intelligence/code-linker.js +0 -88
- package/packages/core/dist/intelligence/contradiction-detector.d.ts +0 -20
- package/packages/core/dist/intelligence/contradiction-detector.js +0 -115
- package/packages/core/dist/intelligence/decay-engine.d.ts +0 -27
- package/packages/core/dist/intelligence/decay-engine.js +0 -190
- package/packages/core/dist/intelligence/draft-generator.d.ts +0 -25
- package/packages/core/dist/intelligence/draft-generator.js +0 -277
- package/packages/core/dist/intelligence/duplicate-detector.d.ts +0 -20
- package/packages/core/dist/intelligence/duplicate-detector.js +0 -55
- package/packages/core/dist/intelligence/file-extractors.d.ts +0 -13
- package/packages/core/dist/intelligence/file-extractors.js +0 -155
- package/packages/core/dist/intelligence/fsrs.d.ts +0 -43
- package/packages/core/dist/intelligence/fsrs.js +0 -70
- package/packages/core/dist/intelligence/gap-detector.d.ts +0 -25
- package/packages/core/dist/intelligence/gap-detector.js +0 -78
- package/packages/core/dist/intelligence/ingest-pipeline.d.ts +0 -32
- package/packages/core/dist/intelligence/ingest-pipeline.js +0 -245
- package/packages/core/dist/intelligence/knowledge-lint.d.ts +0 -27
- package/packages/core/dist/intelligence/knowledge-lint.js +0 -132
- package/packages/core/dist/intelligence/learning-path.d.ts +0 -31
- package/packages/core/dist/intelligence/learning-path.js +0 -53
- package/packages/core/dist/intelligence/notifications.d.ts +0 -31
- package/packages/core/dist/intelligence/notifications.js +0 -65
- package/packages/core/dist/intelligence/predictive-gaps.d.ts +0 -14
- package/packages/core/dist/intelligence/predictive-gaps.js +0 -74
- package/packages/core/dist/intelligence/semantic-versioning.d.ts +0 -37
- package/packages/core/dist/intelligence/semantic-versioning.js +0 -68
- package/packages/core/dist/intelligence/types.d.ts +0 -28
- package/packages/core/dist/intelligence/types.js +0 -3
- package/packages/core/dist/intelligence/wiki-compiler.d.ts +0 -30
- package/packages/core/dist/intelligence/wiki-compiler.js +0 -222
- package/packages/core/dist/intelligence/youtube-extractor.d.ts +0 -29
- package/packages/core/dist/intelligence/youtube-extractor.js +0 -321
- package/packages/core/dist/intelligence/zettelkasten.d.ts +0 -59
- package/packages/core/dist/intelligence/zettelkasten.js +0 -234
- package/packages/core/dist/mcp/custom-tools.d.ts +0 -29
- package/packages/core/dist/mcp/custom-tools.js +0 -70
- package/packages/core/dist/mcp/index.d.ts +0 -2
- package/packages/core/dist/mcp/index.js +0 -2
- package/packages/core/dist/mcp/server.d.ts +0 -51
- package/packages/core/dist/mcp/server.js +0 -174
- package/packages/core/dist/mcp/tools/agentic-graph.d.ts +0 -93
- package/packages/core/dist/mcp/tools/agentic-graph.js +0 -116
- package/packages/core/dist/mcp/tools/ask.d.ts +0 -29
- package/packages/core/dist/mcp/tools/ask.js +0 -43
- package/packages/core/dist/mcp/tools/brief.d.ts +0 -31
- package/packages/core/dist/mcp/tools/brief.js +0 -39
- package/packages/core/dist/mcp/tools/decay.d.ts +0 -33
- package/packages/core/dist/mcp/tools/decay.js +0 -32
- package/packages/core/dist/mcp/tools/decision-journal.d.ts +0 -78
- package/packages/core/dist/mcp/tools/decision-journal.js +0 -79
- package/packages/core/dist/mcp/tools/detect-gaps.d.ts +0 -24
- package/packages/core/dist/mcp/tools/detect-gaps.js +0 -47
- package/packages/core/dist/mcp/tools/export.d.ts +0 -29
- package/packages/core/dist/mcp/tools/export.js +0 -60
- package/packages/core/dist/mcp/tools/federated-search.d.ts +0 -29
- package/packages/core/dist/mcp/tools/federated-search.js +0 -36
- package/packages/core/dist/mcp/tools/generate-claude-md.d.ts +0 -35
- package/packages/core/dist/mcp/tools/generate-claude-md.js +0 -107
- package/packages/core/dist/mcp/tools/generate-draft.d.ts +0 -34
- package/packages/core/dist/mcp/tools/generate-draft.js +0 -120
- package/packages/core/dist/mcp/tools/get-document.d.ts +0 -35
- package/packages/core/dist/mcp/tools/get-document.js +0 -25
- package/packages/core/dist/mcp/tools/get-evolution.d.ts +0 -28
- package/packages/core/dist/mcp/tools/get-evolution.js +0 -70
- package/packages/core/dist/mcp/tools/get-related.d.ts +0 -32
- package/packages/core/dist/mcp/tools/get-related.js +0 -33
- package/packages/core/dist/mcp/tools/learning-path.d.ts +0 -23
- package/packages/core/dist/mcp/tools/learning-path.js +0 -45
- package/packages/core/dist/mcp/tools/link-code.d.ts +0 -34
- package/packages/core/dist/mcp/tools/link-code.js +0 -44
- package/packages/core/dist/mcp/tools/list-topics.d.ts +0 -15
- package/packages/core/dist/mcp/tools/list-topics.js +0 -18
- package/packages/core/dist/mcp/tools/search.d.ts +0 -39
- package/packages/core/dist/mcp/tools/search.js +0 -29
- package/packages/core/dist/mcp/tools/snapshot.d.ts +0 -47
- package/packages/core/dist/mcp/tools/snapshot.js +0 -84
- package/packages/core/dist/multi-vault/index.d.ts +0 -26
- package/packages/core/dist/multi-vault/index.js +0 -80
- package/packages/core/dist/pack/creator.d.ts +0 -21
- package/packages/core/dist/pack/creator.js +0 -105
- package/packages/core/dist/pack/exporter.d.ts +0 -4
- package/packages/core/dist/pack/exporter.js +0 -18
- package/packages/core/dist/pack/importer.d.ts +0 -10
- package/packages/core/dist/pack/importer.js +0 -55
- package/packages/core/dist/pack/index.d.ts +0 -6
- package/packages/core/dist/pack/index.js +0 -5
- package/packages/core/dist/pack/marketplace.d.ts +0 -14
- package/packages/core/dist/pack/marketplace.js +0 -90
- package/packages/core/dist/pack/pii-masker.d.ts +0 -7
- package/packages/core/dist/pack/pii-masker.js +0 -29
- package/packages/core/dist/pack/types.d.ts +0 -36
- package/packages/core/dist/pack/types.js +0 -3
- package/packages/core/dist/plugins/index.d.ts +0 -35
- package/packages/core/dist/plugins/index.js +0 -57
- package/packages/core/dist/plugins/webhooks.d.ts +0 -30
- package/packages/core/dist/plugins/webhooks.js +0 -79
- package/packages/core/dist/search/adaptive.d.ts +0 -16
- package/packages/core/dist/search/adaptive.js +0 -67
- package/packages/core/dist/search/bm25.d.ts +0 -4
- package/packages/core/dist/search/bm25.js +0 -10
- package/packages/core/dist/search/index.d.ts +0 -15
- package/packages/core/dist/search/index.js +0 -64
- package/packages/core/dist/search/rrf.d.ts +0 -7
- package/packages/core/dist/search/rrf.js +0 -21
- package/packages/core/dist/search/semantic.d.ts +0 -5
- package/packages/core/dist/search/semantic.js +0 -6
- package/packages/core/dist/store/index.d.ts +0 -3
- package/packages/core/dist/store/index.js +0 -2
- package/packages/core/dist/store/sqlite-vec.d.ts +0 -6
- package/packages/core/dist/store/sqlite-vec.js +0 -251
- package/packages/core/dist/store/types.d.ts +0 -20
- package/packages/core/dist/store/types.js +0 -3
- package/packages/core/dist/team/index.d.ts +0 -25
- package/packages/core/dist/team/index.js +0 -97
- package/packages/core/dist/types/chunk.d.ts +0 -23
- package/packages/core/dist/types/chunk.js +0 -3
- package/packages/core/dist/types/document.d.ts +0 -23
- package/packages/core/dist/types/document.js +0 -3
- package/packages/core/dist/types/graph.d.ts +0 -39
- package/packages/core/dist/types/graph.js +0 -3
- package/packages/core/dist/types/index.d.ts +0 -5
- package/packages/core/dist/types/index.js +0 -2
- package/packages/core/dist/types/search.d.ts +0 -39
- package/packages/core/dist/types/search.js +0 -3
- package/packages/core/dist/utils/retry.d.ts +0 -25
- package/packages/core/dist/utils/retry.js +0 -59
- package/packages/core/package.json +0 -67
package/index.html
DELETED
|
@@ -1,509 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
-
<title>Stellavault — Self-Compiling Knowledge MCP Server</title>
|
|
7
|
-
<meta name="description" content="Drop anything. It organizes itself. Claude knows everything you know. Self-compiling Zettelkasten with 21 MCP tools.">
|
|
8
|
-
<meta name="theme-color" content="#6366f1">
|
|
9
|
-
<meta property="og:title" content="Stellavault — Self-Compiling Knowledge MCP Server">
|
|
10
|
-
<meta property="og:description" content="Drop anything. It organizes itself. Claude knows everything you know.">
|
|
11
|
-
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
12
|
-
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
13
|
-
<link href="https://fonts.googleapis.com/css2?family=DM+Mono:wght@300;400;500&family=Inter:wght@300;400;500;600&family=Instrument+Serif:ital@0;1&display=swap" rel="stylesheet">
|
|
14
|
-
<style>
|
|
15
|
-
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
|
|
16
|
-
:root{
|
|
17
|
-
--void:#050508;--surface:#0c0c14;--surface2:#131320;
|
|
18
|
-
--border:#252535;--border-subtle:#1a1a28;--border-glow:#6366f140;
|
|
19
|
-
--text:#eeeef2;--text-dim:#9898b8;--text-muted:#72728a;
|
|
20
|
-
--violet:#6366f1;--violet-bright:#818cf8;--violet-glow:#6366f160;
|
|
21
|
-
--cyan:#22d3ee;--emerald:#34d399;--rose:#f43f5e;
|
|
22
|
-
--font-display:'Instrument Serif',Georgia,serif;
|
|
23
|
-
--font-body:'Inter',system-ui,sans-serif;
|
|
24
|
-
--font-mono:'DM Mono',monospace;
|
|
25
|
-
}
|
|
26
|
-
html{scroll-behavior:smooth;background:var(--void);color:var(--text);font-family:var(--font-body);font-weight:400;font-size:15px;line-height:1.6}
|
|
27
|
-
body{overflow-x:hidden;background:var(--void)}
|
|
28
|
-
code,.mono{font-family:var(--font-mono)}
|
|
29
|
-
a{color:var(--violet-bright);text-decoration:none;transition:color .2s}
|
|
30
|
-
a:hover{color:var(--cyan)}
|
|
31
|
-
::selection{background:var(--violet);color:#fff}
|
|
32
|
-
|
|
33
|
-
/* ═══ COSMOS ═══ */
|
|
34
|
-
.cosmos{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}
|
|
35
|
-
.cosmos .g1{position:absolute;width:800px;height:800px;top:-300px;right:-200px;background:radial-gradient(ellipse,rgba(99,102,241,.3) 0%,rgba(99,102,241,.08) 40%,transparent 70%);filter:blur(60px);animation:drift 20s ease-in-out infinite}
|
|
36
|
-
.cosmos .g2{position:absolute;width:500px;height:500px;bottom:15%;left:-120px;background:radial-gradient(ellipse,rgba(34,211,238,.15) 0%,rgba(52,211,153,.05) 50%,transparent 70%);filter:blur(80px);animation:drift 25s ease-in-out infinite reverse}
|
|
37
|
-
.cosmos .g3{position:absolute;width:300px;height:300px;top:40%;left:50%;background:radial-gradient(circle,rgba(99,102,241,.1) 0%,transparent 60%);filter:blur(40px);animation:drift 15s 5s ease-in-out infinite}
|
|
38
|
-
@keyframes drift{0%,100%{transform:translate(0,0)}50%{transform:translate(40px,-30px)}}
|
|
39
|
-
.star-field{position:fixed;inset:0;z-index:0;pointer-events:none}
|
|
40
|
-
|
|
41
|
-
/* ═══ LAYOUT ═══ */
|
|
42
|
-
.container{max-width:1200px;margin:0 auto;padding:0 32px;position:relative;z-index:1}
|
|
43
|
-
|
|
44
|
-
/* ═══ HERO ═══ */
|
|
45
|
-
.hero{min-height:100vh;display:flex;align-items:center;justify-content:center;text-align:center;position:relative;padding:80px 0}
|
|
46
|
-
.hero-inner{max-width:860px}
|
|
47
|
-
.hero-badge{display:inline-flex;align-items:center;gap:8px;padding:7px 18px;border:1px solid var(--border);border-radius:100px;font-family:var(--font-mono);font-size:11px;letter-spacing:1.5px;text-transform:uppercase;color:var(--text-dim);margin-bottom:36px;animation:fadeUp .8s ease both}
|
|
48
|
-
.hero-badge .sep{color:var(--border);font-size:8px}
|
|
49
|
-
.hero h1{font-family:var(--font-display);font-size:clamp(52px,9vw,104px);font-weight:400;line-height:1.0;letter-spacing:-2px;margin-bottom:28px;animation:fadeUp .8s .1s ease both}
|
|
50
|
-
.hero h1 em{font-style:italic;color:var(--violet-bright);position:relative}
|
|
51
|
-
.hero h1 em::after{content:'';position:absolute;bottom:2px;left:0;width:100%;height:2px;background:linear-gradient(90deg,transparent,var(--violet),transparent);opacity:.6}
|
|
52
|
-
.hero-sub{font-size:18px;color:var(--text-dim);max-width:560px;margin:0 auto 44px;line-height:1.65;animation:fadeUp .8s .2s ease both}
|
|
53
|
-
.hero-cta{display:flex;gap:12px;justify-content:center;align-items:center;flex-wrap:wrap;animation:fadeUp .8s .3s ease both}
|
|
54
|
-
.cta-install{display:inline-flex;align-items:center;gap:12px;padding:15px 28px;background:var(--surface2);border:1px solid var(--border);border-radius:10px;font-family:var(--font-mono);font-size:14px;color:var(--text);cursor:pointer;transition:all .3s cubic-bezier(.16,1,.3,1)}
|
|
55
|
-
.cta-install:hover{border-color:var(--violet);box-shadow:0 0 40px rgba(99,102,241,.2),0 0 0 1px rgba(99,102,241,.3) inset;transform:translateY(-2px)}
|
|
56
|
-
.cta-install.copied{border-color:var(--emerald);box-shadow:0 0 30px rgba(52,211,153,.2)}
|
|
57
|
-
.cta-install.copied .prompt{color:var(--emerald)}
|
|
58
|
-
.cta-install .prompt{color:var(--violet-bright);transition:color .2s}
|
|
59
|
-
.cta-install .copy-hint{font-size:10px;color:var(--text-muted);margin-left:4px;opacity:0;transition:opacity .2s}
|
|
60
|
-
.cta-install:hover .copy-hint{opacity:1}
|
|
61
|
-
.cta-secondary{display:inline-flex;align-items:center;gap:6px;padding:15px 24px;color:var(--text-dim);font-size:14px;border:1px solid var(--border);border-radius:10px;transition:all .2s}
|
|
62
|
-
.cta-secondary:hover{color:var(--text);border-color:var(--border-glow)}
|
|
63
|
-
.cta-mobile{display:none;padding:16px 32px;background:var(--violet);color:#fff;border-radius:10px;font-weight:500;font-size:14px}
|
|
64
|
-
.hero-proof{margin-top:28px;display:flex;gap:16px;justify-content:center;align-items:center;font-size:12px;color:var(--text-muted);animation:fadeUp .8s .5s ease both}
|
|
65
|
-
.proof-num{color:var(--violet-bright);font-weight:500;font-family:var(--font-mono)}
|
|
66
|
-
.proof-sep{color:var(--border);font-size:6px}
|
|
67
|
-
|
|
68
|
-
/* ═══ GRAPH BG ═══ */
|
|
69
|
-
.graph-visual{position:absolute;inset:0;z-index:-1;opacity:.2;overflow:hidden}
|
|
70
|
-
.node{position:absolute;border-radius:50%;animation:pulse 3s ease-in-out infinite}
|
|
71
|
-
.node.v{background:var(--violet);box-shadow:0 0 20px var(--violet-glow)}
|
|
72
|
-
.node.c{background:var(--cyan);box-shadow:0 0 15px #22d3ee40}
|
|
73
|
-
.node.e{background:var(--emerald);box-shadow:0 0 15px #34d39940}
|
|
74
|
-
.edge{position:absolute;height:1px;background:linear-gradient(90deg,transparent,var(--violet-glow),transparent);transform-origin:left center}
|
|
75
|
-
@keyframes pulse{0%,100%{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.4)}}
|
|
76
|
-
|
|
77
|
-
/* ═══ SECTIONS ═══ */
|
|
78
|
-
.section-label{font-family:var(--font-mono);font-size:11px;letter-spacing:3px;text-transform:uppercase;color:var(--violet-bright);margin-bottom:14px}
|
|
79
|
-
.section-title{font-family:var(--font-display);font-size:clamp(32px,5vw,56px);font-weight:400;line-height:1.1;letter-spacing:-.5px;margin-bottom:18px}
|
|
80
|
-
.section-desc{color:var(--text-dim);max-width:560px;font-size:16px;line-height:1.65}
|
|
81
|
-
.divider{height:1px;background:linear-gradient(90deg,transparent 0%,var(--border) 20%,var(--border) 80%,transparent 100%);max-width:600px;margin:0 auto}
|
|
82
|
-
|
|
83
|
-
/* ═══ PROBLEMS ═══ */
|
|
84
|
-
.s-problems{padding:120px 0 100px}
|
|
85
|
-
.problems{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px;margin-top:56px}
|
|
86
|
-
.problem-card{padding:36px;background:var(--surface);border:1px solid var(--border);border-radius:14px;transition:all .4s cubic-bezier(.16,1,.3,1);position:relative;overflow:hidden}
|
|
87
|
-
.problem-card:hover{transform:translateY(-6px) scale(1.005);border-color:rgba(99,102,241,.5);box-shadow:0 4px 6px rgba(0,0,0,.3),0 20px 40px rgba(99,102,241,.12),0 0 0 1px rgba(99,102,241,.15) inset}
|
|
88
|
-
.problem-card::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,rgba(99,102,241,.8),transparent);opacity:0;transition:opacity .3s}
|
|
89
|
-
.problem-card:hover::before{opacity:1}
|
|
90
|
-
.problem-icon{font-size:28px;margin-bottom:20px;display:block}
|
|
91
|
-
.problem-label{font-family:var(--font-mono);font-size:10px;letter-spacing:2px;text-transform:uppercase;color:var(--text-muted);margin-bottom:10px}
|
|
92
|
-
.problem-title{font-family:var(--font-display);font-size:24px;margin-bottom:14px;line-height:1.2}
|
|
93
|
-
.problem-desc{color:var(--text-dim);font-size:14px;line-height:1.6}
|
|
94
|
-
.problem-arrow{color:var(--violet-bright);font-size:18px;margin:14px 0;display:block}
|
|
95
|
-
.problem-solution{color:var(--text);font-size:14px;font-weight:500}
|
|
96
|
-
|
|
97
|
-
/* ═══ PIPELINE ═══ */
|
|
98
|
-
.s-pipeline{padding:100px 0}
|
|
99
|
-
.pipeline-flow{display:grid;grid-template-columns:repeat(4,1fr);gap:2px;margin-top:40px}
|
|
100
|
-
.pipeline-step{text-align:center;padding:32px 18px;background:var(--surface);border:1px solid var(--border);position:relative;transition:all .3s cubic-bezier(.16,1,.3,1)}
|
|
101
|
-
.pipeline-step:first-child{border-radius:14px 0 0 14px}
|
|
102
|
-
.pipeline-step:last-child{border-radius:0 14px 14px 0}
|
|
103
|
-
.pipeline-step:hover{background:var(--surface2);border-color:var(--violet)}
|
|
104
|
-
.pipeline-step::after{content:'';position:absolute;right:-8px;top:50%;width:14px;height:14px;border-right:2px solid var(--violet);border-top:2px solid var(--violet);transform:translateY(-50%) rotate(45deg);z-index:2}
|
|
105
|
-
.pipeline-step:last-child::after{display:none}
|
|
106
|
-
.step-num{font-family:var(--font-mono);font-size:10px;color:var(--violet-bright);letter-spacing:2px;margin-bottom:10px}
|
|
107
|
-
.step-name{font-family:var(--font-display);font-size:22px;margin-bottom:10px}
|
|
108
|
-
.step-desc{color:var(--text-dim);font-size:12px;line-height:1.6}
|
|
109
|
-
|
|
110
|
-
/* ═══ SCREENSHOTS ═══ */
|
|
111
|
-
.s-screenshots{padding:100px 0}
|
|
112
|
-
.screenshot-hero{margin-top:40px;border-radius:14px;overflow:hidden;border:1px solid var(--border);box-shadow:0 20px 60px rgba(0,0,0,.5)}
|
|
113
|
-
.screenshot-hero img,.screenshot-hero video{width:100%;display:block}
|
|
114
|
-
.screenshot-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px;margin-top:20px}
|
|
115
|
-
.screenshot-card{border-radius:12px;overflow:hidden;border:1px solid var(--border);transition:all .3s cubic-bezier(.16,1,.3,1);position:relative;cursor:pointer}
|
|
116
|
-
.screenshot-card:hover{border-color:var(--violet);transform:translateY(-4px) scale(1.01);box-shadow:0 12px 40px rgba(99,102,241,.2)}
|
|
117
|
-
.screenshot-card img{width:100%;display:block;transition:transform .4s cubic-bezier(.16,1,.3,1)}
|
|
118
|
-
.screenshot-card:hover img{transform:scale(1.03)}
|
|
119
|
-
.screenshot-card .caption{position:absolute;bottom:0;left:0;right:0;padding:12px 16px;background:linear-gradient(transparent,rgba(5,5,8,.9));font-size:12px;color:var(--text-dim);transition:padding .3s}
|
|
120
|
-
.screenshot-card:hover .caption{padding-bottom:16px}
|
|
121
|
-
.screenshot-card .expand-hint{position:absolute;top:12px;right:12px;width:28px;height:28px;background:rgba(5,5,8,.7);border:1px solid var(--border);border-radius:6px;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s;font-size:14px;color:var(--text-dim)}
|
|
122
|
-
.screenshot-card:hover .expand-hint{opacity:1}
|
|
123
|
-
|
|
124
|
-
/* Lightbox */
|
|
125
|
-
.lightbox{position:fixed;inset:0;z-index:9999;background:rgba(5,5,8,.92);backdrop-filter:blur(20px);display:none;align-items:center;justify-content:center;cursor:zoom-out;animation:lbIn .25s ease}
|
|
126
|
-
.lightbox.active{display:flex}
|
|
127
|
-
.lightbox img{max-width:92vw;max-height:90vh;border-radius:12px;border:1px solid var(--border);box-shadow:0 24px 80px rgba(0,0,0,.6);animation:lbZoom .3s cubic-bezier(.16,1,.3,1)}
|
|
128
|
-
.lightbox .lb-caption{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);color:var(--text-dim);font-size:13px;background:rgba(5,5,8,.8);padding:8px 20px;border-radius:8px;border:1px solid var(--border)}
|
|
129
|
-
.lightbox .lb-close{position:absolute;top:20px;right:24px;width:36px;height:36px;background:rgba(255,255,255,.08);border:1px solid var(--border);border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--text);font-size:18px;cursor:pointer;transition:background .2s}
|
|
130
|
-
.lightbox .lb-close:hover{background:rgba(255,255,255,.15)}
|
|
131
|
-
.lightbox .lb-nav{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;background:rgba(255,255,255,.06);border:1px solid var(--border);border-radius:10px;display:flex;align-items:center;justify-content:center;color:var(--text);font-size:20px;cursor:pointer;transition:all .2s}
|
|
132
|
-
.lightbox .lb-nav:hover{background:rgba(99,102,241,.2);border-color:var(--violet)}
|
|
133
|
-
.lightbox .lb-prev{left:20px}
|
|
134
|
-
.lightbox .lb-next{right:20px}
|
|
135
|
-
@keyframes lbIn{from{opacity:0}to{opacity:1}}
|
|
136
|
-
@keyframes lbZoom{from{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}
|
|
137
|
-
|
|
138
|
-
/* ═══ FORMATS ═══ */
|
|
139
|
-
.s-formats{padding:80px 0 60px}
|
|
140
|
-
.formats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-top:36px}
|
|
141
|
-
.format-chip{padding:20px;background:var(--surface);border:1px solid var(--border);border-radius:10px;text-align:center;transition:all .3s cubic-bezier(.16,1,.3,1)}
|
|
142
|
-
.format-chip:hover{border-color:var(--violet);background:var(--surface2);transform:translateY(-2px)}
|
|
143
|
-
.format-ext{font-family:var(--font-mono);font-size:20px;font-weight:500;color:var(--violet-bright);margin-bottom:6px}
|
|
144
|
-
.format-name{font-size:12px;color:var(--text-muted)}
|
|
145
|
-
|
|
146
|
-
/* ═══ MCP ═══ */
|
|
147
|
-
.s-mcp{padding:100px 0;background:linear-gradient(180deg,transparent 0%,var(--surface) 6%,var(--surface) 94%,transparent 100%)}
|
|
148
|
-
.mcp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:8px;margin-top:28px}
|
|
149
|
-
.mcp-tool{padding:11px 16px;border:1px solid var(--border);border-radius:8px;font-size:13px;transition:all .2s cubic-bezier(.16,1,.3,1);display:flex;align-items:center;gap:10px}
|
|
150
|
-
.mcp-tool:hover{border-color:rgba(99,102,241,.35);background:rgba(99,102,241,.05)}
|
|
151
|
-
.mcp-tool .dot{width:6px;height:6px;border-radius:50%;background:var(--emerald);flex-shrink:0;box-shadow:0 0 6px rgba(52,211,153,.5);animation:dotPulse 2.5s ease-in-out infinite}
|
|
152
|
-
.mcp-tool code{font-family:var(--font-mono);color:var(--violet-bright);font-size:12px}
|
|
153
|
-
.mcp-tool span.desc{color:var(--text-dim);font-size:12px}
|
|
154
|
-
@keyframes dotPulse{0%,100%{opacity:.6;transform:scale(1)}50%{opacity:1;transform:scale(1.4)}}
|
|
155
|
-
.mcp-connect{margin-top:36px;padding:22px 24px;background:var(--void);border:1px solid var(--border);border-radius:10px;font-family:var(--font-mono);font-size:13px;display:flex;align-items:center;gap:10px}
|
|
156
|
-
.mcp-connect .prompt{color:var(--violet-bright)}
|
|
157
|
-
.mcp-connect code{color:var(--text)}
|
|
158
|
-
|
|
159
|
-
/* ═══ SETUP ═══ */
|
|
160
|
-
.s-setup{padding:140px 0 120px}
|
|
161
|
-
.setup-steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:24px;margin-top:40px}
|
|
162
|
-
.setup-step{padding:32px;background:var(--surface);border:1px solid var(--border);border-radius:14px;position:relative;transition:border-color .3s}
|
|
163
|
-
.setup-step:hover{border-color:var(--violet)}
|
|
164
|
-
.setup-num{position:absolute;top:-13px;left:22px;background:var(--violet);color:#fff;width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:12px;font-weight:500}
|
|
165
|
-
.setup-cmd{display:block;margin-top:14px;padding:14px;background:var(--void);border:1px solid var(--border-subtle);border-radius:8px;font-family:var(--font-mono);font-size:13px;color:var(--cyan)}
|
|
166
|
-
.setup-label{font-size:14px;font-weight:500}
|
|
167
|
-
.setup-desc{font-size:13px;color:var(--text-muted);margin-top:6px}
|
|
168
|
-
|
|
169
|
-
/* ═══ TECH ═══ */
|
|
170
|
-
.s-tech{padding:80px 0}
|
|
171
|
-
.tech-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin-top:28px}
|
|
172
|
-
.tech-item{padding:16px 20px;border:1px solid var(--border);border-radius:10px;display:flex;justify-content:space-between;align-items:center;font-size:13px;transition:border-color .2s}
|
|
173
|
-
.tech-item:hover{border-color:var(--border-glow)}
|
|
174
|
-
.tech-item .label{color:var(--text-muted)}
|
|
175
|
-
.tech-item .value{color:var(--text);font-weight:500}
|
|
176
|
-
|
|
177
|
-
/* ═══ FOOTER ═══ */
|
|
178
|
-
footer{padding:60px 0;text-align:center}
|
|
179
|
-
.footer-cta{padding-bottom:48px;margin-bottom:48px;border-bottom:1px solid var(--border)}
|
|
180
|
-
.footer-cta .footer-brand{font-family:var(--font-display);font-size:32px;margin-bottom:8px}
|
|
181
|
-
.footer-cta .footer-tagline{color:var(--text-muted);font-size:13px;margin-bottom:24px}
|
|
182
|
-
.footer-links{display:flex;gap:28px;justify-content:center;font-size:13px;margin-bottom:20px}
|
|
183
|
-
.footer-links a{color:var(--text-dim);transition:color .2s}
|
|
184
|
-
.footer-links a:hover{color:var(--text)}
|
|
185
|
-
.footer-copy{font-size:11px;color:var(--text-muted)}
|
|
186
|
-
|
|
187
|
-
/* ═══ ANIMATIONS ═══ */
|
|
188
|
-
@keyframes fadeUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
|
|
189
|
-
.reveal{opacity:0;transform:translateY(16px);transition:opacity .5s cubic-bezier(.16,1,.3,1),transform .5s cubic-bezier(.16,1,.3,1)}
|
|
190
|
-
.reveal.visible{opacity:1;transform:translateY(0)}
|
|
191
|
-
.problems .problem-card:nth-child(1){transition-delay:0ms}
|
|
192
|
-
.problems .problem-card:nth-child(2){transition-delay:80ms}
|
|
193
|
-
.problems .problem-card:nth-child(3){transition-delay:160ms}
|
|
194
|
-
.pipeline-flow .pipeline-step:nth-child(1){transition-delay:0ms}
|
|
195
|
-
.pipeline-flow .pipeline-step:nth-child(2){transition-delay:60ms}
|
|
196
|
-
.pipeline-flow .pipeline-step:nth-child(3){transition-delay:120ms}
|
|
197
|
-
.pipeline-flow .pipeline-step:nth-child(4){transition-delay:180ms}
|
|
198
|
-
|
|
199
|
-
/* ═══ RESPONSIVE ═══ */
|
|
200
|
-
@media(max-width:768px){
|
|
201
|
-
.hero{min-height:auto;padding:100px 0 60px}
|
|
202
|
-
.hero h1{letter-spacing:-1px}
|
|
203
|
-
.s-problems,.s-pipeline,.s-setup{padding:80px 0}
|
|
204
|
-
.s-setup{padding:100px 0 80px}
|
|
205
|
-
.problems{grid-template-columns:1fr}
|
|
206
|
-
.pipeline-flow{grid-template-columns:1fr}
|
|
207
|
-
.pipeline-step{border-radius:0!important}
|
|
208
|
-
.pipeline-step:first-child{border-radius:14px 14px 0 0!important}
|
|
209
|
-
.pipeline-step:last-child{border-radius:0 0 14px 14px!important}
|
|
210
|
-
.pipeline-step::after{right:50%;top:auto;bottom:-8px;transform:translateX(50%) rotate(135deg)}
|
|
211
|
-
.mcp-grid{grid-template-columns:1fr 1fr}
|
|
212
|
-
.cta-install{display:none}
|
|
213
|
-
.cta-secondary{display:none}
|
|
214
|
-
.cta-mobile{display:inline-flex}
|
|
215
|
-
.hero-cta{flex-direction:column}
|
|
216
|
-
}
|
|
217
|
-
@media(max-width:480px){
|
|
218
|
-
.container{padding:0 20px}
|
|
219
|
-
.mcp-grid{grid-template-columns:1fr}
|
|
220
|
-
.formats-grid{grid-template-columns:repeat(3,1fr)}
|
|
221
|
-
.hero-proof{flex-wrap:wrap;gap:8px}
|
|
222
|
-
}
|
|
223
|
-
</style>
|
|
224
|
-
</head>
|
|
225
|
-
<body>
|
|
226
|
-
|
|
227
|
-
<div class="cosmos"><div class="g1"></div><div class="g2"></div><div class="g3"></div></div>
|
|
228
|
-
<div class="star-field" id="stars"></div>
|
|
229
|
-
|
|
230
|
-
<!-- ═══ HERO ═══ -->
|
|
231
|
-
<section class="hero">
|
|
232
|
-
<div class="graph-visual" id="graphVisual"></div>
|
|
233
|
-
<div class="hero-inner container">
|
|
234
|
-
<div class="hero-badge">open source <span class="sep">●</span> local-first <span class="sep">●</span> MIT license</div>
|
|
235
|
-
<h1>Drop anything.<br>It <em>compiles itself</em><br>into knowledge.</h1>
|
|
236
|
-
<p class="hero-sub">Self-compiling Zettelkasten MCP server. Ingest PDFs, YouTube, documents—auto-organized into linked wiki. Claude accesses your entire knowledge base through 21 MCP tools.</p>
|
|
237
|
-
<div class="hero-cta">
|
|
238
|
-
<button class="cta-install" id="ctaInstall">
|
|
239
|
-
<span class="prompt">$</span> npm install -g stellavault
|
|
240
|
-
<span class="copy-hint">click to copy</span>
|
|
241
|
-
</button>
|
|
242
|
-
<a href="https://github.com/Evanciel/stellavault" class="cta-secondary">View on GitHub →</a>
|
|
243
|
-
<a href="https://github.com/Evanciel/stellavault" class="cta-mobile">View on GitHub →</a>
|
|
244
|
-
</div>
|
|
245
|
-
<div class="hero-proof">
|
|
246
|
-
<span><span class="proof-num">171KB</span> on npm</span>
|
|
247
|
-
<span class="proof-sep">●</span>
|
|
248
|
-
<span><span class="proof-num">20</span> MCP tools</span>
|
|
249
|
-
<span class="proof-sep">●</span>
|
|
250
|
-
<span><span class="proof-num">127</span> tests passing</span>
|
|
251
|
-
<span class="proof-sep">●</span>
|
|
252
|
-
<span>No cloud required</span>
|
|
253
|
-
</div>
|
|
254
|
-
</div>
|
|
255
|
-
</section>
|
|
256
|
-
|
|
257
|
-
<div class="divider"></div>
|
|
258
|
-
|
|
259
|
-
<!-- ═══ PROBLEMS ═══ -->
|
|
260
|
-
<section class="s-problems">
|
|
261
|
-
<div class="container">
|
|
262
|
-
<div class="section-label reveal">The Problem</div>
|
|
263
|
-
<h2 class="section-title reveal">Notes pile up.<br>Knowledge doesn't.</h2>
|
|
264
|
-
<p class="section-desc reveal">Three things break every knowledge system. Stellavault fixes all three automatically.</p>
|
|
265
|
-
<div class="problems">
|
|
266
|
-
<div class="problem-card reveal">
|
|
267
|
-
<span class="problem-icon">🗒</span>
|
|
268
|
-
<div class="problem-label">Problem</div>
|
|
269
|
-
<div class="problem-title">Notes rot in folders</div>
|
|
270
|
-
<div class="problem-desc">You save articles, highlight books, clip videos. They never become connected knowledge.</div>
|
|
271
|
-
<span class="problem-arrow">↓</span>
|
|
272
|
-
<div class="problem-solution">Auto-compiling wiki — raw notes become linked concepts in <100ms</div>
|
|
273
|
-
</div>
|
|
274
|
-
<div class="problem-card reveal">
|
|
275
|
-
<span class="problem-icon">🔎</span>
|
|
276
|
-
<div class="problem-label">Problem</div>
|
|
277
|
-
<div class="problem-title">Search finds words, not meaning</div>
|
|
278
|
-
<div class="problem-desc">Keyword search misses semantic connections. You know you wrote it, but can't find it.</div>
|
|
279
|
-
<span class="problem-arrow">↓</span>
|
|
280
|
-
<div class="problem-solution">Hybrid AI search — BM25 + vector + RRF, 50+ languages, locally</div>
|
|
281
|
-
</div>
|
|
282
|
-
<div class="problem-card reveal">
|
|
283
|
-
<span class="problem-icon">🤖</span>
|
|
284
|
-
<div class="problem-label">Problem</div>
|
|
285
|
-
<div class="problem-title">AI doesn't know what you know</div>
|
|
286
|
-
<div class="problem-desc">ChatGPT has the internet. It doesn't have your notes, your decisions, your context.</div>
|
|
287
|
-
<span class="problem-arrow">↓</span>
|
|
288
|
-
<div class="problem-solution">21 MCP tools — Claude searches, asks, drafts from your vault</div>
|
|
289
|
-
</div>
|
|
290
|
-
</div>
|
|
291
|
-
</div>
|
|
292
|
-
</section>
|
|
293
|
-
|
|
294
|
-
<div class="divider"></div>
|
|
295
|
-
|
|
296
|
-
<!-- ═══ PIPELINE ═══ -->
|
|
297
|
-
<section class="s-pipeline">
|
|
298
|
-
<div class="container">
|
|
299
|
-
<div class="section-label reveal">The Pipeline</div>
|
|
300
|
-
<h2 class="section-title reveal">Karpathy's self-compiling loop,<br>built for your brain.</h2>
|
|
301
|
-
<p class="section-desc reveal">Inspired by Andrej Karpathy and Niklas Luhmann. Every input flows through the same pipeline. You never manually organize.</p>
|
|
302
|
-
<div class="pipeline-flow reveal">
|
|
303
|
-
<div class="pipeline-step"><div class="step-num">01</div><div class="step-name">Capture</div><div class="step-desc">Drop PDF, paste YouTube, type thought. Drag files in browser. Any format.</div></div>
|
|
304
|
-
<div class="pipeline-step"><div class="step-num">02</div><div class="step-name">Organize</div><div class="step-desc">Zettelkasten auto-classification. Index codes, tags, wikilinks auto-inserted.</div></div>
|
|
305
|
-
<div class="pipeline-step"><div class="step-num">03</div><div class="step-name">Distill</div><div class="step-desc">Compile into wiki. Extract concepts. Detect gaps, contradictions, duplicates.</div></div>
|
|
306
|
-
<div class="pipeline-step"><div class="step-num">04</div><div class="step-name">Express</div><div class="step-desc">Generate drafts. Blog, report, outline. AI-enhanced via Claude. Ship it.</div></div>
|
|
307
|
-
</div>
|
|
308
|
-
</div>
|
|
309
|
-
</section>
|
|
310
|
-
|
|
311
|
-
<!-- ═══ COMPOUNDING LOOP ═══ -->
|
|
312
|
-
<section style="padding:80px 0">
|
|
313
|
-
<div class="container" style="text-align:center">
|
|
314
|
-
<div class="section-label reveal">The Compounding Loop</div>
|
|
315
|
-
<h2 class="section-title reveal">Gets smarter every session.</h2>
|
|
316
|
-
<p class="section-desc reveal" style="margin:0 auto 40px">Every conversation with Claude becomes knowledge. Knowledge improves the next conversation. Karpathy's self-evolving architecture.</p>
|
|
317
|
-
<div class="reveal" style="max-width:700px;margin:0 auto;padding:32px;background:var(--surface);border:1px solid var(--border);border-radius:14px;font-family:var(--font-mono);font-size:13px;line-height:2.2;color:var(--text-dim);text-align:left">
|
|
318
|
-
<span style="color:var(--cyan)">Session</span> → <code style="color:var(--violet-bright)">session-save</code> → <span style="color:var(--text)">daily-log</span> → <code style="color:var(--violet-bright)">flush</code> → <span style="color:var(--emerald)">wiki</span><br>
|
|
319
|
-
<span style="color:var(--text-muted);margin-left:16px">↑</span><span style="padding-left:280px;color:var(--text-muted)">↓</span><br>
|
|
320
|
-
<span style="color:var(--text-muted);margin-left:16px">←← Claude reads wiki via MCP (20 tools) ←←←</span>
|
|
321
|
-
</div>
|
|
322
|
-
<div style="display:flex;gap:16px;justify-content:center;margin-top:28px;flex-wrap:wrap" class="reveal">
|
|
323
|
-
<div style="padding:14px 20px;background:var(--surface);border:1px solid var(--border);border-radius:10px;font-size:12px"><span style="color:var(--violet-bright);font-family:var(--font-mono)">session-save</span><br><span style="color:var(--text-dim)">Auto-capture decisions & lessons</span></div>
|
|
324
|
-
<div style="padding:14px 20px;background:var(--surface);border:1px solid var(--border);border-radius:10px;font-size:12px"><span style="color:var(--violet-bright);font-family:var(--font-mono)">flush</span><br><span style="color:var(--text-dim)">Daily logs → wiki compilation</span></div>
|
|
325
|
-
<div style="padding:14px 20px;background:var(--surface);border:1px solid var(--border);border-radius:10px;font-size:12px"><span style="color:var(--violet-bright);font-family:var(--font-mono)">Claude Code hooks</span><br><span style="color:var(--text-dim)">Fully automatic capture</span></div>
|
|
326
|
-
</div>
|
|
327
|
-
</div>
|
|
328
|
-
</section>
|
|
329
|
-
|
|
330
|
-
<div class="divider"></div>
|
|
331
|
-
|
|
332
|
-
<!-- ═══ SCREENSHOTS ═══ -->
|
|
333
|
-
<section class="s-screenshots">
|
|
334
|
-
<div class="container">
|
|
335
|
-
<div class="section-label reveal">See It In Action</div>
|
|
336
|
-
<h2 class="section-title reveal">Your vault as a<br>living neural network.</h2>
|
|
337
|
-
<div class="screenshot-hero reveal">
|
|
338
|
-
<video autoplay loop muted playsinline style="width:100%;display:block;border-radius:14px">
|
|
339
|
-
<source src="images/screenshots/stellavault-demo.webm" type="video/webm">
|
|
340
|
-
<img src="images/screenshots/graph-main-2.png" alt="Stellavault 3D Knowledge Graph" loading="lazy">
|
|
341
|
-
</video>
|
|
342
|
-
</div>
|
|
343
|
-
<div class="screenshot-grid">
|
|
344
|
-
<div class="screenshot-card reveal" data-lb="0">
|
|
345
|
-
<img src="images/screenshots/search-active.png" alt="Semantic Search" loading="lazy">
|
|
346
|
-
<div class="caption">Hybrid AI search — meaning, not just keywords</div>
|
|
347
|
-
<div class="expand-hint">⛶</div>
|
|
348
|
-
</div>
|
|
349
|
-
<div class="screenshot-card reveal" data-lb="1">
|
|
350
|
-
<img src="images/screenshots/graph-heatmap.png" alt="Knowledge Heatmap" loading="lazy">
|
|
351
|
-
<div class="caption">Heatmap overlay — see where your knowledge lives</div>
|
|
352
|
-
<div class="expand-hint">⛶</div>
|
|
353
|
-
</div>
|
|
354
|
-
<div class="screenshot-card reveal" data-lb="2">
|
|
355
|
-
<img src="images/screenshots/graph-light-mode.png" alt="Light Mode" loading="lazy">
|
|
356
|
-
<div class="caption">Light mode — monochrome with color on interaction</div>
|
|
357
|
-
<div class="expand-hint">⛶</div>
|
|
358
|
-
</div>
|
|
359
|
-
</div>
|
|
360
|
-
</div>
|
|
361
|
-
</section>
|
|
362
|
-
|
|
363
|
-
<div class="divider"></div>
|
|
364
|
-
|
|
365
|
-
<!-- ═══ MCP ═══ -->
|
|
366
|
-
<section class="s-mcp">
|
|
367
|
-
<div class="container">
|
|
368
|
-
<div class="section-label reveal">Claude Integration</div>
|
|
369
|
-
<h2 class="section-title reveal">21 MCP tools. Claude knows<br>everything you know.</h2>
|
|
370
|
-
<p class="section-desc reveal">One command connects your vault to Claude Code. No API key needed.</p>
|
|
371
|
-
<p class="section-desc reveal">One command connects your vault to Claude Code. No API key needed.</p>
|
|
372
|
-
<div class="mcp-connect reveal"><span class="prompt">$</span> <code>claude mcp add stellavault -- stellavault serve</code></div>
|
|
373
|
-
<div class="mcp-grid reveal">
|
|
374
|
-
<div class="mcp-tool"><span class="dot"></span><code>search</code><span class="desc">hybrid AI search</span></div>
|
|
375
|
-
<div class="mcp-tool"><span class="dot"></span><code>ask</code><span class="desc">Q&A from vault</span></div>
|
|
376
|
-
<div class="mcp-tool"><span class="dot"></span><code>generate-draft</code><span class="desc">AI writes drafts</span></div>
|
|
377
|
-
<div class="mcp-tool"><span class="dot"></span><code>get-document</code><span class="desc">full doc + meta</span></div>
|
|
378
|
-
<div class="mcp-tool"><span class="dot"></span><code>get-related</code><span class="desc">semantic neighbors</span></div>
|
|
379
|
-
<div class="mcp-tool"><span class="dot"></span><code>detect-gaps</code><span class="desc">knowledge gaps</span></div>
|
|
380
|
-
<div class="mcp-tool"><span class="dot"></span><code>get-decay-status</code><span class="desc">fading memories</span></div>
|
|
381
|
-
<div class="mcp-tool"><span class="dot"></span><code>get-learning-path</code><span class="desc">review order</span></div>
|
|
382
|
-
<div class="mcp-tool"><span class="dot"></span><code>get-evolution</code><span class="desc">idea drift tracking</span></div>
|
|
383
|
-
<div class="mcp-tool"><span class="dot"></span><code>link-code</code><span class="desc">code-knowledge links</span></div>
|
|
384
|
-
<div class="mcp-tool"><span class="dot"></span><code>create-knowledge-node</code><span class="desc">AI writes notes</span></div>
|
|
385
|
-
<div class="mcp-tool"><span class="dot"></span><code>create-knowledge-link</code><span class="desc">auto-connect</span></div>
|
|
386
|
-
<div class="mcp-tool"><span class="dot"></span><code>log-decision</code><span class="desc">decision journal</span></div>
|
|
387
|
-
<div class="mcp-tool"><span class="dot"></span><code>get-morning-brief</code><span class="desc">daily briefing</span></div>
|
|
388
|
-
<div class="mcp-tool"><span class="dot"></span><code>list-topics</code><span class="desc">topic cloud</span></div>
|
|
389
|
-
<div class="mcp-tool"><span class="dot"></span><code>export</code><span class="desc">JSON / CSV</span></div>
|
|
390
|
-
<div class="mcp-tool"><span class="dot"></span><code>find-decisions</code><span class="desc">decision lookup</span></div>
|
|
391
|
-
<div class="mcp-tool"><span class="dot"></span><code>create-snapshot</code><span class="desc">context save/load</span></div>
|
|
392
|
-
<div class="mcp-tool"><span class="dot"></span><code>generate-claude-md</code><span class="desc">auto CLAUDE.md</span></div>
|
|
393
|
-
<div class="mcp-tool"><span class="dot"></span><code>federated-search</code><span class="desc">P2P search</span></div>
|
|
394
|
-
</div>
|
|
395
|
-
</div>
|
|
396
|
-
</section>
|
|
397
|
-
|
|
398
|
-
<div class="divider"></div>
|
|
399
|
-
|
|
400
|
-
<!-- ═══ FORMATS ═══ -->
|
|
401
|
-
<section class="s-formats">
|
|
402
|
-
<div class="container">
|
|
403
|
-
<div class="section-label reveal">Ingest Anything</div>
|
|
404
|
-
<h2 class="section-title reveal">Every format. One command.</h2>
|
|
405
|
-
<p class="section-desc reveal">Text extraction built-in. No external services. Transcripts with timestamps.</p>
|
|
406
|
-
<div class="formats-grid reveal">
|
|
407
|
-
<div class="format-chip"><div class="format-ext">.pdf</div><div class="format-name">unpdf</div></div>
|
|
408
|
-
<div class="format-chip"><div class="format-ext">.docx</div><div class="format-name">mammoth</div></div>
|
|
409
|
-
<div class="format-chip"><div class="format-ext">.pptx</div><div class="format-name">officeparser</div></div>
|
|
410
|
-
<div class="format-chip"><div class="format-ext">.xlsx</div><div class="format-name">SheetJS</div></div>
|
|
411
|
-
<div class="format-chip"><div class="format-ext" style="color:var(--rose)">YouTube</div><div class="format-name">yt-dlp transcript</div></div>
|
|
412
|
-
<div class="format-chip"><div class="format-ext" style="color:var(--cyan)">URL</div><div class="format-name">HTML to text</div></div>
|
|
413
|
-
</div>
|
|
414
|
-
</div>
|
|
415
|
-
</section>
|
|
416
|
-
|
|
417
|
-
<!-- ═══ SETUP ═══ -->
|
|
418
|
-
<section class="s-setup">
|
|
419
|
-
<div class="container">
|
|
420
|
-
<div class="section-label reveal">Get Started</div>
|
|
421
|
-
<h2 class="section-title reveal">5 minutes to a living<br>knowledge graph.</h2>
|
|
422
|
-
<div class="setup-steps">
|
|
423
|
-
<div class="setup-step reveal"><div class="setup-num">1</div><div class="setup-label">Install globally</div><code class="setup-cmd">npm install -g stellavault</code><div class="setup-desc">157KB. Node.js 20+ required.</div></div>
|
|
424
|
-
<div class="setup-step reveal"><div class="setup-num">2</div><div class="setup-label">Initialize your vault</div><code class="setup-cmd">stellavault init</code><div class="setup-desc">Interactive setup. Points to your Obsidian vault. Indexes everything.</div></div>
|
|
425
|
-
<div class="setup-step reveal"><div class="setup-num">3</div><div class="setup-label">Launch the graph</div><code class="setup-cmd">stellavault graph</code><div class="setup-desc">3D neural graph in browser. Drag files to ingest. Mobile ready.</div></div>
|
|
426
|
-
</div>
|
|
427
|
-
</div>
|
|
428
|
-
</section>
|
|
429
|
-
|
|
430
|
-
<div class="divider"></div>
|
|
431
|
-
|
|
432
|
-
<!-- ═══ TECH ═══ -->
|
|
433
|
-
<section class="s-tech">
|
|
434
|
-
<div class="container">
|
|
435
|
-
<div class="section-label reveal">Under The Hood</div>
|
|
436
|
-
<h2 class="section-title reveal">Local-first. No cloud required.</h2>
|
|
437
|
-
<p class="section-desc reveal">Your knowledge stays on your machine. No API keys needed for core features.</p>
|
|
438
|
-
<div class="tech-grid reveal">
|
|
439
|
-
<div class="tech-item"><span class="label">Embeddings</span><span class="value">multilingual-MiniLM</span></div>
|
|
440
|
-
<div class="tech-item"><span class="label">Vector Store</span><span class="value">SQLite-vec</span></div>
|
|
441
|
-
<div class="tech-item"><span class="label">Search</span><span class="value">BM25 + Cosine + RRF</span></div>
|
|
442
|
-
<div class="tech-item"><span class="label">Memory</span><span class="value">FSRS repetition</span></div>
|
|
443
|
-
<div class="tech-item"><span class="label">3D Graph</span><span class="value">React Three Fiber</span></div>
|
|
444
|
-
<div class="tech-item"><span class="label">AI Protocol</span><span class="value">MCP (21 tools)</span></div>
|
|
445
|
-
<div class="tech-item"><span class="label">Runtime</span><span class="value">Node.js 20+ ESM</span></div>
|
|
446
|
-
<div class="tech-item"><span class="label">Package</span><span class="value">171KB on npm</span></div>
|
|
447
|
-
</div>
|
|
448
|
-
</div>
|
|
449
|
-
</section>
|
|
450
|
-
|
|
451
|
-
<!-- ═══ FOOTER ═══ -->
|
|
452
|
-
<footer>
|
|
453
|
-
<div class="container">
|
|
454
|
-
<div class="footer-cta reveal">
|
|
455
|
-
<div class="footer-brand">Stellavault</div>
|
|
456
|
-
<div class="footer-tagline">Self-compiling knowledge MCP server</div>
|
|
457
|
-
<button class="cta-install" onclick="navigator.clipboard.writeText('npm install -g stellavault');this.classList.add('copied');setTimeout(()=>this.classList.remove('copied'),2000)">
|
|
458
|
-
<span class="prompt">$</span> npm install -g stellavault
|
|
459
|
-
<span class="copy-hint">click to copy</span>
|
|
460
|
-
</button>
|
|
461
|
-
</div>
|
|
462
|
-
<div class="footer-links">
|
|
463
|
-
<a href="https://github.com/Evanciel/stellavault">GitHub</a>
|
|
464
|
-
<a href="https://www.npmjs.com/package/stellavault">npm</a>
|
|
465
|
-
<a href="https://github.com/Evanciel/stellavault/releases">Releases</a>
|
|
466
|
-
<a href="https://github.com/Evanciel/stellavault-obsidian">Obsidian Plugin</a>
|
|
467
|
-
</div>
|
|
468
|
-
<div class="footer-copy">MIT License · Built by Evan</div>
|
|
469
|
-
</div>
|
|
470
|
-
</footer>
|
|
471
|
-
|
|
472
|
-
<!-- Lightbox -->
|
|
473
|
-
<div class="lightbox" id="lightbox">
|
|
474
|
-
<button class="lb-close" id="lbClose">×</button>
|
|
475
|
-
<button class="lb-nav lb-prev" id="lbPrev">‹</button>
|
|
476
|
-
<button class="lb-nav lb-next" id="lbNext">›</button>
|
|
477
|
-
<img id="lbImg" src="" alt="">
|
|
478
|
-
<div class="lb-caption" id="lbCaption"></div>
|
|
479
|
-
</div>
|
|
480
|
-
|
|
481
|
-
<script>
|
|
482
|
-
// Lightbox
|
|
483
|
-
!function(){
|
|
484
|
-
const slides=[
|
|
485
|
-
{src:'images/screenshots/search-active.png',cap:'Hybrid AI search — meaning, not just keywords'},
|
|
486
|
-
{src:'images/screenshots/graph-heatmap.png',cap:'Heatmap overlay — see where your knowledge lives'},
|
|
487
|
-
{src:'images/screenshots/graph-light-mode.png',cap:'Light mode — monochrome with color on interaction'},
|
|
488
|
-
];
|
|
489
|
-
let cur=0;
|
|
490
|
-
const lb=document.getElementById('lightbox'),img=document.getElementById('lbImg'),cap=document.getElementById('lbCaption');
|
|
491
|
-
const show=i=>{cur=((i%slides.length)+slides.length)%slides.length;img.src=slides[cur].src;cap.textContent=slides[cur].cap;lb.classList.add('active');document.body.style.overflow='hidden'};
|
|
492
|
-
const hide=()=>{lb.classList.remove('active');document.body.style.overflow=''};
|
|
493
|
-
document.querySelectorAll('.screenshot-card[data-lb]').forEach(c=>c.addEventListener('click',()=>show(+c.dataset.lb)));
|
|
494
|
-
document.getElementById('lbClose').addEventListener('click',e=>{e.stopPropagation();hide()});
|
|
495
|
-
document.getElementById('lbPrev').addEventListener('click',e=>{e.stopPropagation();show(cur-1)});
|
|
496
|
-
document.getElementById('lbNext').addEventListener('click',e=>{e.stopPropagation();show(cur+1)});
|
|
497
|
-
lb.addEventListener('click',hide);
|
|
498
|
-
lb.querySelector('img').addEventListener('click',e=>e.stopPropagation());
|
|
499
|
-
document.addEventListener('keydown',e=>{if(!lb.classList.contains('active'))return;if(e.key==='Escape')hide();if(e.key==='ArrowLeft')show(cur-1);if(e.key==='ArrowRight')show(cur+1)});
|
|
500
|
-
}();
|
|
501
|
-
|
|
502
|
-
!function(){const c=document.getElementById('stars'),s=document.createDocumentFragment();for(let i=0;i<100;i++){const d=document.createElement('div');const sz=Math.random()*2+.5;d.style.cssText=`position:absolute;width:${sz}px;height:${sz}px;background:#fff;border-radius:50%;opacity:${Math.random()*.35+.05};left:${Math.random()*100}%;top:${Math.random()*100}%;animation:pulse ${Math.random()*5+3}s ${Math.random()*4}s ease-in-out infinite`;s.appendChild(d)}c.appendChild(s)}();
|
|
503
|
-
!function(){const g=document.getElementById('graphVisual'),nodes=[],cls=['v','c','e'];for(let i=0;i<24;i++){const d=document.createElement('div'),sz=Math.random()*10+3,x=Math.random()*100,y=Math.random()*100;d.className=`node ${cls[i%3]}`;d.style.cssText=`width:${sz}px;height:${sz}px;left:${x}%;top:${y}%;animation-delay:${Math.random()*3}s;animation-duration:${Math.random()*4+2}s`;g.appendChild(d);nodes.push({x,y})}for(let i=0;i<15;i++){const a=nodes[0|Math.random()*nodes.length],b=nodes[0|Math.random()*nodes.length];if(a===b)continue;const dx=b.x-a.x,dy=b.y-a.y,len=Math.sqrt(dx*dx+dy*dy);if(len>35)continue;const e=document.createElement('div');e.className='edge';e.style.cssText=`left:${a.x}%;top:${a.y}%;width:${len}%;transform:rotate(${Math.atan2(dy,dx)*180/Math.PI}deg);opacity:.25`;g.appendChild(e)}}();
|
|
504
|
-
document.getElementById('ctaInstall').addEventListener('click',function(){navigator.clipboard.writeText('npm install -g stellavault');this.classList.add('copied');this.querySelector('.copy-hint').textContent='copied!';setTimeout(()=>{this.classList.remove('copied');this.querySelector('.copy-hint').textContent='click to copy'},2000)});
|
|
505
|
-
const obs=new IntersectionObserver(e=>{e.forEach(e=>{if(e.isIntersecting){e.target.classList.add('visible');obs.unobserve(e.target)}})},{threshold:.1,rootMargin:'0px 0px -40px 0px'});document.querySelectorAll('.reveal').forEach(el=>obs.observe(el));
|
|
506
|
-
document.querySelectorAll('.mcp-tool').forEach((el,i)=>el.style.setProperty('transition-delay',i*25+'ms'));
|
|
507
|
-
</script>
|
|
508
|
-
</body>
|
|
509
|
-
</html>
|
package/packages/cli/bin/ekh.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
// stellavault adr — Architecture Decision Record 구조화 인제스트
|
|
2
|
-
// 의사결정 기록: 제목/맥락/옵션/결정/결과
|
|
3
|
-
import chalk from 'chalk';
|
|
4
|
-
import { loadConfig, ingest } from '@stellavault/core';
|
|
5
|
-
export async function adrCommand(title, options) {
|
|
6
|
-
if (!title) {
|
|
7
|
-
console.error(chalk.yellow('Usage: stellavault adr "Decision Title" --context "..." --options "..." --decision "..." --consequences "..."'));
|
|
8
|
-
process.exit(1);
|
|
9
|
-
}
|
|
10
|
-
const config = loadConfig();
|
|
11
|
-
const now = new Date().toISOString().split('T')[0];
|
|
12
|
-
const content = [
|
|
13
|
-
`# ADR: ${title}`,
|
|
14
|
-
'',
|
|
15
|
-
`**Date:** ${now}`,
|
|
16
|
-
`**Status:** Accepted`,
|
|
17
|
-
'',
|
|
18
|
-
'## Context',
|
|
19
|
-
options.context ?? '<!-- Why is this decision needed? -->',
|
|
20
|
-
'',
|
|
21
|
-
'## Options Considered',
|
|
22
|
-
options.options ?? '<!-- What alternatives were evaluated? -->',
|
|
23
|
-
'',
|
|
24
|
-
'## Decision',
|
|
25
|
-
options.decision ?? '<!-- What was decided and why? -->',
|
|
26
|
-
'',
|
|
27
|
-
'## Consequences',
|
|
28
|
-
options.consequences ?? '<!-- What are the implications? -->',
|
|
29
|
-
'',
|
|
30
|
-
].join('\n');
|
|
31
|
-
const result = ingest(config.vaultPath, {
|
|
32
|
-
type: 'text',
|
|
33
|
-
content,
|
|
34
|
-
tags: ['adr', 'decision'],
|
|
35
|
-
title: `ADR: ${title}`,
|
|
36
|
-
stage: 'literature',
|
|
37
|
-
}, config.folders);
|
|
38
|
-
console.log(chalk.green(`ADR created: ${title}`));
|
|
39
|
-
console.log(chalk.dim(` Saved: ${result.savedTo}`));
|
|
40
|
-
console.log(chalk.dim(` Stage: literature`));
|
|
41
|
-
console.log(chalk.dim(` Tags: adr, decision`));
|
|
42
|
-
console.log('');
|
|
43
|
-
console.log(chalk.dim(`Find later: stellavault ask "why did we choose ${title}?"`));
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=adr-cmd.js.map
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
// stellavault ask — Q&A + auto-filing CLI command
|
|
2
|
-
import chalk from 'chalk';
|
|
3
|
-
import { loadConfig, createKnowledgeHub, askVault } from '@stellavault/core';
|
|
4
|
-
export async function askCommand(question, options) {
|
|
5
|
-
if (!question || question.trim().length < 2) {
|
|
6
|
-
console.error(chalk.yellow('Usage: stellavault ask "your question here" [--save]'));
|
|
7
|
-
console.error(chalk.dim('\nSearch Mode: finds relevant notes from your vault.'));
|
|
8
|
-
console.error(chalk.dim('For AI-powered answers, use MCP: claude mcp add stellavault -- stellavault serve'));
|
|
9
|
-
process.exit(1);
|
|
10
|
-
}
|
|
11
|
-
const config = loadConfig();
|
|
12
|
-
const hub = createKnowledgeHub(config);
|
|
13
|
-
console.error(chalk.dim('Searching your knowledge (local search mode)...'));
|
|
14
|
-
await hub.store.initialize();
|
|
15
|
-
await hub.embedder.initialize();
|
|
16
|
-
const result = await askVault(hub.searchEngine, question, {
|
|
17
|
-
limit: 10,
|
|
18
|
-
save: options.save ?? false,
|
|
19
|
-
vaultPath: config.vaultPath,
|
|
20
|
-
mode: options.quotes ? 'quotes' : 'default',
|
|
21
|
-
});
|
|
22
|
-
// 출력
|
|
23
|
-
console.log('');
|
|
24
|
-
console.log(result.answer);
|
|
25
|
-
if (result.savedTo) {
|
|
26
|
-
console.log('');
|
|
27
|
-
console.log(chalk.green(`Saved to: ${result.savedTo}`));
|
|
28
|
-
}
|
|
29
|
-
if (result.sources.length > 0 && !options.save) {
|
|
30
|
-
console.log('');
|
|
31
|
-
console.log(chalk.dim('Tip: Add --save to file this answer into your vault.'));
|
|
32
|
-
console.log(chalk.dim('For AI-generated answers: use Claude Code with MCP integration.'));
|
|
33
|
-
}
|
|
34
|
-
await hub.store.close?.();
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=ask-cmd.js.map
|