@copilotkit/pathfinder 1.1.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/.env.example +20 -0
- package/.superpowers/brainstorm/47098-1775507869/content/homepage-mockup.html +324 -0
- package/.superpowers/brainstorm/47098-1775507869/state/server-stopped +1 -0
- package/.superpowers/brainstorm/47098-1775507869/state/server.log +13 -0
- package/.superpowers/brainstorm/47098-1775507869/state/server.pid +1 -0
- package/.superpowers/brainstorm/82141-1775511032/content/migration-v2.html +340 -0
- package/.superpowers/brainstorm/82141-1775511032/content/migration.html +340 -0
- package/.superpowers/brainstorm/82141-1775511032/state/server-stopped +1 -0
- package/.superpowers/brainstorm/82141-1775511032/state/server.log +4 -0
- package/.superpowers/brainstorm/82141-1775511032/state/server.pid +1 -0
- package/CHANGELOG.md +26 -0
- package/LICENSE +21 -0
- package/README.md +284 -0
- package/dist/config.d.ts +32 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +180 -0
- package/dist/config.js.map +1 -0
- package/dist/db/client.d.ts +22 -0
- package/dist/db/client.d.ts.map +1 -0
- package/dist/db/client.js +134 -0
- package/dist/db/client.js.map +1 -0
- package/dist/db/queries.d.ts +51 -0
- package/dist/db/queries.d.ts.map +1 -0
- package/dist/db/queries.js +271 -0
- package/dist/db/queries.js.map +1 -0
- package/dist/db/schema.d.ts +11 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +63 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +366 -0
- package/dist/index.js.map +1 -0
- package/dist/indexing/chunking/code.d.ts +17 -0
- package/dist/indexing/chunking/code.d.ts.map +1 -0
- package/dist/indexing/chunking/code.js +277 -0
- package/dist/indexing/chunking/code.js.map +1 -0
- package/dist/indexing/chunking/index.d.ts +6 -0
- package/dist/indexing/chunking/index.d.ts.map +1 -0
- package/dist/indexing/chunking/index.js +19 -0
- package/dist/indexing/chunking/index.js.map +1 -0
- package/dist/indexing/chunking/markdown.d.ts +16 -0
- package/dist/indexing/chunking/markdown.d.ts.map +1 -0
- package/dist/indexing/chunking/markdown.js +283 -0
- package/dist/indexing/chunking/markdown.js.map +1 -0
- package/dist/indexing/chunking/raw-text.d.ts +11 -0
- package/dist/indexing/chunking/raw-text.d.ts.map +1 -0
- package/dist/indexing/chunking/raw-text.js +59 -0
- package/dist/indexing/chunking/raw-text.js.map +1 -0
- package/dist/indexing/embeddings.d.ts +10 -0
- package/dist/indexing/embeddings.d.ts.map +1 -0
- package/dist/indexing/embeddings.js +78 -0
- package/dist/indexing/embeddings.js.map +1 -0
- package/dist/indexing/orchestrator.d.ts +69 -0
- package/dist/indexing/orchestrator.d.ts.map +1 -0
- package/dist/indexing/orchestrator.js +387 -0
- package/dist/indexing/orchestrator.js.map +1 -0
- package/dist/indexing/source-indexer.d.ts +68 -0
- package/dist/indexing/source-indexer.d.ts.map +1 -0
- package/dist/indexing/source-indexer.js +379 -0
- package/dist/indexing/source-indexer.js.map +1 -0
- package/dist/indexing/url-derivation.d.ts +7 -0
- package/dist/indexing/url-derivation.d.ts.map +1 -0
- package/dist/indexing/url-derivation.js +31 -0
- package/dist/indexing/url-derivation.js.map +1 -0
- package/dist/mcp/server.d.ts +10 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +67 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools/bash-fs.d.ts +19 -0
- package/dist/mcp/tools/bash-fs.d.ts.map +1 -0
- package/dist/mcp/tools/bash-fs.js +134 -0
- package/dist/mcp/tools/bash-fs.js.map +1 -0
- package/dist/mcp/tools/bash-grep.d.ts +29 -0
- package/dist/mcp/tools/bash-grep.d.ts.map +1 -0
- package/dist/mcp/tools/bash-grep.js +153 -0
- package/dist/mcp/tools/bash-grep.js.map +1 -0
- package/dist/mcp/tools/bash-related.d.ts +14 -0
- package/dist/mcp/tools/bash-related.d.ts.map +1 -0
- package/dist/mcp/tools/bash-related.js +54 -0
- package/dist/mcp/tools/bash-related.js.map +1 -0
- package/dist/mcp/tools/bash-session.d.ts +23 -0
- package/dist/mcp/tools/bash-session.d.ts.map +1 -0
- package/dist/mcp/tools/bash-session.js +60 -0
- package/dist/mcp/tools/bash-session.js.map +1 -0
- package/dist/mcp/tools/bash-telemetry.d.ts +26 -0
- package/dist/mcp/tools/bash-telemetry.d.ts.map +1 -0
- package/dist/mcp/tools/bash-telemetry.js +53 -0
- package/dist/mcp/tools/bash-telemetry.js.map +1 -0
- package/dist/mcp/tools/bash-virtual-files.d.ts +3 -0
- package/dist/mcp/tools/bash-virtual-files.d.ts.map +1 -0
- package/dist/mcp/tools/bash-virtual-files.js +65 -0
- package/dist/mcp/tools/bash-virtual-files.js.map +1 -0
- package/dist/mcp/tools/bash.d.ts +25 -0
- package/dist/mcp/tools/bash.d.ts.map +1 -0
- package/dist/mcp/tools/bash.js +140 -0
- package/dist/mcp/tools/bash.js.map +1 -0
- package/dist/mcp/tools/collect.d.ts +13 -0
- package/dist/mcp/tools/collect.d.ts.map +1 -0
- package/dist/mcp/tools/collect.js +56 -0
- package/dist/mcp/tools/collect.js.map +1 -0
- package/dist/mcp/tools/search.d.ts +5 -0
- package/dist/mcp/tools/search.d.ts.map +1 -0
- package/dist/mcp/tools/search.js +68 -0
- package/dist/mcp/tools/search.js.map +1 -0
- package/dist/types.d.ts +1237 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +163 -0
- package/dist/types.js.map +1 -0
- package/dist/webhooks/github.d.ts +12 -0
- package/dist/webhooks/github.d.ts.map +1 -0
- package/dist/webhooks/github.js +117 -0
- package/dist/webhooks/github.js.map +1 -0
- package/package.json +48 -0
package/.env.example
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Database
|
|
2
|
+
DATABASE_URL=postgresql://mcp:mcp_local@localhost:5432/mcp_docs
|
|
3
|
+
|
|
4
|
+
# OpenAI (required for embeddings)
|
|
5
|
+
OPENAI_API_KEY=sk-...
|
|
6
|
+
|
|
7
|
+
# GitHub (optional, for cloning private repos)
|
|
8
|
+
GITHUB_TOKEN=ghp_...
|
|
9
|
+
|
|
10
|
+
# GitHub webhook (required for incremental re-indexing)
|
|
11
|
+
GITHUB_WEBHOOK_SECRET=whsec_...
|
|
12
|
+
|
|
13
|
+
# Server
|
|
14
|
+
PORT=3001
|
|
15
|
+
NODE_ENV=development
|
|
16
|
+
LOG_LEVEL=debug
|
|
17
|
+
|
|
18
|
+
# Automatic nightly reindex (default: true, runs at 3 AM UTC)
|
|
19
|
+
AUTO_REINDEX_ENABLED=true
|
|
20
|
+
AUTO_REINDEX_CRON_HOUR=3
|
|
@@ -0,0 +1,324 @@
|
|
|
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>Pathfinder — Agentic Docs Retrieval</title>
|
|
7
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
8
|
+
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&family=Instrument+Sans:wght@400;500;600;700&display=swap" rel="stylesheet">
|
|
9
|
+
<style>
|
|
10
|
+
:root {
|
|
11
|
+
--bg-deep: #0a0a0f;
|
|
12
|
+
--bg-surface: #111118;
|
|
13
|
+
--bg-card: #16161f;
|
|
14
|
+
--border: #222233;
|
|
15
|
+
--text-primary: #e8e8f0;
|
|
16
|
+
--text-secondary: #8888a0;
|
|
17
|
+
--text-dim: #555570;
|
|
18
|
+
--accent: #00cc66;
|
|
19
|
+
--accent-glow: rgba(0,204,102,0.15);
|
|
20
|
+
--blue: #4488ff;
|
|
21
|
+
--purple: #aa66ff;
|
|
22
|
+
--warning: #ffaa00;
|
|
23
|
+
--mono: 'JetBrains Mono', monospace;
|
|
24
|
+
--sans: 'Instrument Sans', system-ui, sans-serif;
|
|
25
|
+
}
|
|
26
|
+
* { margin:0; padding:0; box-sizing:border-box; }
|
|
27
|
+
body { background: var(--bg-deep); color: var(--text-primary); font-family: var(--sans); line-height: 1.6; overflow-x:hidden; }
|
|
28
|
+
|
|
29
|
+
/* Noise overlay */
|
|
30
|
+
body::before { content:''; position:fixed; top:0; left:0; width:100%; height:100%; pointer-events:none; z-index:9999;
|
|
31
|
+
background: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.03'/%3E%3C/svg%3E");
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/* Nav */
|
|
35
|
+
nav { position:fixed; top:0; left:0; right:0; z-index:100; padding: 12px 32px; display:flex; align-items:center; justify-content:space-between;
|
|
36
|
+
background: rgba(10,10,15,0.8); backdrop-filter: blur(20px) saturate(1.8); border-bottom: 1px solid var(--border); }
|
|
37
|
+
.nav-brand { font-family: var(--mono); font-weight: 600; font-size: 15px; color: var(--accent); }
|
|
38
|
+
.nav-brand span { color: var(--text-dim); }
|
|
39
|
+
.nav-links { display:flex; gap: 24px; align-items:center; }
|
|
40
|
+
.nav-links a { color: var(--text-secondary); text-decoration:none; font-size: 14px; transition: color 0.2s; }
|
|
41
|
+
.nav-links a:hover { color: var(--text-primary); }
|
|
42
|
+
.nav-links .gh-btn { display:inline-flex; align-items:center; gap:6px; padding: 6px 14px; border: 1px solid var(--border); border-radius: 6px; font-size: 13px; }
|
|
43
|
+
.nav-links .gh-btn:hover { border-color: var(--text-dim); }
|
|
44
|
+
|
|
45
|
+
/* Hero */
|
|
46
|
+
.hero { padding: 140px 32px 80px; max-width: 1000px; margin: 0 auto; text-align: center; }
|
|
47
|
+
.badge { display: inline-flex; align-items:center; gap: 8px; padding: 6px 16px; border: 1px solid var(--border); border-radius: 100px; font-size: 13px; color: var(--text-secondary); margin-bottom: 32px; }
|
|
48
|
+
.badge .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--accent); animation: pulse 2s infinite; }
|
|
49
|
+
@keyframes pulse { 0%,100% { opacity:1; } 50% { opacity:0.4; } }
|
|
50
|
+
.hero h1 { font-size: 52px; font-weight: 700; line-height: 1.15; margin-bottom: 20px; letter-spacing: -0.02em; }
|
|
51
|
+
.hero h1 .accent { color: var(--accent); }
|
|
52
|
+
.hero .subtitle { font-size: 18px; color: var(--text-secondary); max-width: 640px; margin: 0 auto 40px; }
|
|
53
|
+
|
|
54
|
+
/* Install box */
|
|
55
|
+
.install-box { display: inline-flex; align-items:center; gap: 12px; background: var(--bg-surface); border: 1px solid var(--border); border-radius: 8px; padding: 12px 20px; font-family: var(--mono); font-size: 14px; margin-bottom: 48px; }
|
|
56
|
+
.install-box .prompt { color: var(--accent); }
|
|
57
|
+
.install-box .cmd { color: var(--text-primary); }
|
|
58
|
+
.install-box .copy-btn { background:none; border: 1px solid var(--border); border-radius: 4px; padding: 4px 8px; color: var(--text-dim); cursor:pointer; font-size: 12px; }
|
|
59
|
+
.install-box .copy-btn:hover { color: var(--text-secondary); border-color: var(--text-dim); }
|
|
60
|
+
|
|
61
|
+
/* Demo grid */
|
|
62
|
+
.demo-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; max-width: 900px; margin: 0 auto; }
|
|
63
|
+
.demo-panel { background: var(--bg-surface); border: 1px solid var(--border); border-radius: 10px; overflow: hidden; text-align: left; }
|
|
64
|
+
.demo-header { padding: 10px 16px; background: var(--bg-card); border-bottom: 1px solid var(--border); font-family: var(--mono); font-size: 12px; color: var(--text-dim); display:flex; gap:8px; align-items:center; }
|
|
65
|
+
.demo-header .dot-r { width:10px; height:10px; border-radius:50%; background:#ff5f57; }
|
|
66
|
+
.demo-header .dot-y { width:10px; height:10px; border-radius:50%; background:#ffbd2e; }
|
|
67
|
+
.demo-header .dot-g { width:10px; height:10px; border-radius:50%; background:#28c840; }
|
|
68
|
+
.demo-body { padding: 16px; font-family: var(--mono); font-size: 13px; line-height: 1.7; min-height: 460px; }
|
|
69
|
+
.demo-body .line { opacity: 0; animation: fadeInLine 0.3s forwards; }
|
|
70
|
+
.demo-body .prompt-line { color: var(--accent); }
|
|
71
|
+
.demo-body .output { color: var(--text-secondary); }
|
|
72
|
+
.demo-body .highlight { color: var(--warning); }
|
|
73
|
+
.demo-body .file { color: var(--blue); }
|
|
74
|
+
@keyframes fadeInLine { from { opacity:0; transform:translateY(4px); } to { opacity:1; transform:translateY(0); } }
|
|
75
|
+
|
|
76
|
+
/* Features */
|
|
77
|
+
.features { padding: 80px 32px; max-width: 1000px; margin: 0 auto; }
|
|
78
|
+
.features h2 { text-align:center; font-size: 36px; margin-bottom: 12px; }
|
|
79
|
+
.features .section-sub { text-align:center; color: var(--text-secondary); margin-bottom: 48px; font-size: 16px; }
|
|
80
|
+
.feature-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
|
|
81
|
+
.feature-card { background: var(--bg-surface); border: 1px solid var(--border); border-radius: 10px; padding: 24px; transition: transform 0.2s, border-color 0.2s; }
|
|
82
|
+
.feature-card:hover { transform: translateY(-2px); border-color: var(--accent); }
|
|
83
|
+
.feature-card .icon { font-size: 28px; margin-bottom: 12px; }
|
|
84
|
+
.feature-card h3 { font-size: 16px; margin-bottom: 8px; }
|
|
85
|
+
.feature-card p { font-size: 14px; color: var(--text-secondary); line-height: 1.5; }
|
|
86
|
+
|
|
87
|
+
/* Comparison */
|
|
88
|
+
.comparison { padding: 80px 32px; max-width: 1000px; margin: 0 auto; }
|
|
89
|
+
.comparison h2 { text-align:center; font-size: 36px; margin-bottom: 12px; }
|
|
90
|
+
.comparison .section-sub { text-align:center; color: var(--text-secondary); margin-bottom: 48px; font-size: 16px; }
|
|
91
|
+
.comp-table { width: 100%; border-collapse: collapse; font-size: 14px; }
|
|
92
|
+
.comp-table th { padding: 12px 16px; text-align: left; border-bottom: 2px solid var(--border); color: var(--text-secondary); font-weight: 500; }
|
|
93
|
+
.comp-table th.highlight-col { color: var(--accent); border-bottom-color: var(--accent); }
|
|
94
|
+
.comp-table td { padding: 10px 16px; border-bottom: 1px solid var(--border); }
|
|
95
|
+
.comp-table td.highlight-col { background: var(--accent-glow); }
|
|
96
|
+
.comp-table .check { color: var(--accent); }
|
|
97
|
+
.comp-table .cross { color: var(--text-dim); }
|
|
98
|
+
.comp-table .partial { color: var(--warning); }
|
|
99
|
+
|
|
100
|
+
/* Migration CTA */
|
|
101
|
+
.migration { padding: 80px 32px; max-width: 800px; margin: 0 auto; text-align: center; }
|
|
102
|
+
.migration h2 { font-size: 36px; margin-bottom: 12px; }
|
|
103
|
+
.migration .section-sub { color: var(--text-secondary); margin-bottom: 32px; font-size: 16px; }
|
|
104
|
+
.migration .cta-btn { display: inline-flex; align-items:center; gap: 8px; padding: 14px 28px; background: var(--accent); color: var(--bg-deep); font-weight: 600; font-size: 15px; border: none; border-radius: 8px; cursor: pointer; text-decoration: none; transition: opacity 0.2s; }
|
|
105
|
+
.migration .cta-btn:hover { opacity: 0.9; }
|
|
106
|
+
|
|
107
|
+
/* Footer */
|
|
108
|
+
footer { padding: 40px 32px; border-top: 1px solid var(--border); text-align:center; color: var(--text-dim); font-size: 13px; }
|
|
109
|
+
footer a { color: var(--text-secondary); text-decoration:none; }
|
|
110
|
+
|
|
111
|
+
/* Selection indicator for brainstorm */
|
|
112
|
+
.feedback-bar { position: fixed; bottom: 20px; left: 50%; transform: translateX(-50%); background: var(--bg-card); border: 1px solid var(--accent); border-radius: 8px; padding: 12px 24px; font-size: 14px; color: var(--accent); z-index: 200; display:none; }
|
|
113
|
+
</style>
|
|
114
|
+
</head>
|
|
115
|
+
<body>
|
|
116
|
+
|
|
117
|
+
<nav>
|
|
118
|
+
<div class="nav-brand"><span>$</span> pathfinder</div>
|
|
119
|
+
<div class="nav-links">
|
|
120
|
+
<a href="#features">Features</a>
|
|
121
|
+
<a href="#comparison">vs ChromaFS</a>
|
|
122
|
+
<a href="#migration">Migrate</a>
|
|
123
|
+
<a href="#" class="gh-btn">GitHub</a>
|
|
124
|
+
</div>
|
|
125
|
+
</nav>
|
|
126
|
+
|
|
127
|
+
<section class="hero">
|
|
128
|
+
<div class="badge"><span class="dot"></span> Open Source · MIT License</div>
|
|
129
|
+
<h1><span class="accent">Pathfinder</span><br>Agentic docs retrieval for AI agents</h1>
|
|
130
|
+
<p class="subtitle">Your AI already knows find, grep, and cat. Give it a virtual filesystem over your docs — plus semantic search when it needs meaning, not just matches. Self-hosted. Open source. Zero lock-in.</p>
|
|
131
|
+
|
|
132
|
+
<div class="install-box">
|
|
133
|
+
<span class="prompt">$</span>
|
|
134
|
+
<span class="cmd">git clone https://github.com/CopilotKit/pathfinder && cd pathfinder</span>
|
|
135
|
+
<button class="copy-btn">Copy</button>
|
|
136
|
+
</div>
|
|
137
|
+
|
|
138
|
+
<div class="demo-grid">
|
|
139
|
+
<div class="demo-panel">
|
|
140
|
+
<div class="demo-header"><span class="dot-r"></span><span class="dot-y"></span><span class="dot-g"></span> pathfinder.yaml</div>
|
|
141
|
+
<div class="demo-body"><pre style="margin:0; font:inherit; color:inherit; white-space:pre;"><span class="highlight">server:</span>
|
|
142
|
+
name: my-project-docs
|
|
143
|
+
|
|
144
|
+
<span class="highlight">sources:</span>
|
|
145
|
+
- name: docs
|
|
146
|
+
type: markdown
|
|
147
|
+
repo: <span class="file">github.com/you/project</span>
|
|
148
|
+
path: docs/
|
|
149
|
+
|
|
150
|
+
<span class="highlight">tools:</span>
|
|
151
|
+
- name: search-docs
|
|
152
|
+
type: search
|
|
153
|
+
source: docs
|
|
154
|
+
|
|
155
|
+
- name: explore-docs
|
|
156
|
+
type: bash
|
|
157
|
+
sources: [docs]
|
|
158
|
+
bash:
|
|
159
|
+
session_state: <span class="file">true</span>
|
|
160
|
+
grep_strategy: <span class="file">hybrid</span></pre>
|
|
161
|
+
</div>
|
|
162
|
+
</div>
|
|
163
|
+
<div class="demo-panel">
|
|
164
|
+
<div class="demo-header"><span class="dot-r"></span><span class="dot-y"></span><span class="dot-g"></span> Agent exploring your docs</div>
|
|
165
|
+
<div class="demo-body" id="terminal">
|
|
166
|
+
</div>
|
|
167
|
+
</div>
|
|
168
|
+
</div>
|
|
169
|
+
</section>
|
|
170
|
+
|
|
171
|
+
<section class="features" id="features">
|
|
172
|
+
<h2>Two retrieval paradigms, one server</h2>
|
|
173
|
+
<p class="section-sub">Agents choose the right tool for each sub-task — no other MCP server does both</p>
|
|
174
|
+
|
|
175
|
+
<div class="feature-grid">
|
|
176
|
+
<div class="feature-card">
|
|
177
|
+
<div class="icon">🔍</div>
|
|
178
|
+
<h3>Semantic Search (RAG)</h3>
|
|
179
|
+
<p>pgvector embeddings with cosine similarity. Ask conceptual questions: "how do I configure auth?"</p>
|
|
180
|
+
</div>
|
|
181
|
+
<div class="feature-card">
|
|
182
|
+
<div class="icon">📁</div>
|
|
183
|
+
<h3>Filesystem Exploration</h3>
|
|
184
|
+
<p>find, grep, cat, ls, head — agents explore docs like a developer would. Sandboxed via just-bash.</p>
|
|
185
|
+
</div>
|
|
186
|
+
<div class="feature-card">
|
|
187
|
+
<div class="icon">🧭</div>
|
|
188
|
+
<h3>Session State</h3>
|
|
189
|
+
<p>cd persists across commands. Agents navigate naturally: cd docs/guides && ls && cat auth.mdx</p>
|
|
190
|
+
</div>
|
|
191
|
+
<div class="feature-card">
|
|
192
|
+
<div class="icon">⚡</div>
|
|
193
|
+
<h3>Vector Grep</h3>
|
|
194
|
+
<p>3-pass search: semantic embeddings + ILIKE text + dedup. Falls back gracefully when infra is down.</p>
|
|
195
|
+
</div>
|
|
196
|
+
<div class="feature-card">
|
|
197
|
+
<div class="icon">🔗</div>
|
|
198
|
+
<h3>Cross-Paradigm Hints</h3>
|
|
199
|
+
<p>`related /path` finds similar files across sources. Grep misses suggest companion search tools.</p>
|
|
200
|
+
</div>
|
|
201
|
+
<div class="feature-card">
|
|
202
|
+
<div class="icon">🚀</div>
|
|
203
|
+
<h3>Zero-Infra Mode</h3>
|
|
204
|
+
<p>Bash-only tools work with no database, no API keys. Add RAG when you're ready — it's just config.</p>
|
|
205
|
+
</div>
|
|
206
|
+
</div>
|
|
207
|
+
</section>
|
|
208
|
+
|
|
209
|
+
<section class="comparison" id="comparison">
|
|
210
|
+
<h2>Pathfinder vs ChromaFS</h2>
|
|
211
|
+
<p class="section-sub">Mintlify replaced RAG with a filesystem. We compose both.</p>
|
|
212
|
+
|
|
213
|
+
<table class="comp-table">
|
|
214
|
+
<thead>
|
|
215
|
+
<tr>
|
|
216
|
+
<th>Capability</th>
|
|
217
|
+
<th class="highlight-col">Pathfinder</th>
|
|
218
|
+
<th>ChromaFS</th>
|
|
219
|
+
</tr>
|
|
220
|
+
</thead>
|
|
221
|
+
<tbody>
|
|
222
|
+
<tr><td>Semantic search</td><td class="highlight-col"><span class="check">✓</span> pgvector RAG</td><td><span class="check">✓</span> Via Chroma</td></tr>
|
|
223
|
+
<tr><td>File exploration</td><td class="highlight-col"><span class="check">✓</span> find/grep/cat/ls</td><td><span class="check">✓</span> find/grep/cat/ls</td></tr>
|
|
224
|
+
<tr><td>Both paradigms composable</td><td class="highlight-col"><span class="check">✓</span></td><td><span class="cross">✗</span> FS-only</td></tr>
|
|
225
|
+
<tr><td>Session state (persistent CWD)</td><td class="highlight-col"><span class="check">✓</span></td><td><span class="cross">✗</span></td></tr>
|
|
226
|
+
<tr><td>Vector-backed grep</td><td class="highlight-col"><span class="check">✓</span> Configurable</td><td><span class="check">✓</span> Chroma-backed</td></tr>
|
|
227
|
+
<tr><td>Writable workspace</td><td class="highlight-col"><span class="check">✓</span></td><td><span class="cross">✗</span> EROFS</td></tr>
|
|
228
|
+
<tr><td>Multi-source</td><td class="highlight-col"><span class="check">✓</span> Config-driven</td><td><span class="cross">✗</span> Single collection</td></tr>
|
|
229
|
+
<tr><td>Feedback collection</td><td class="highlight-col"><span class="check">✓</span> Collect tools</td><td><span class="cross">✗</span></td></tr>
|
|
230
|
+
<tr><td>Zero-infra mode</td><td class="highlight-col"><span class="check">✓</span> Bash-only</td><td><span class="cross">✗</span> Needs Chroma+Redis</td></tr>
|
|
231
|
+
<tr><td>Open source</td><td class="highlight-col"><span class="check">✓</span> MIT</td><td><span class="cross">✗</span> Proprietary</td></tr>
|
|
232
|
+
<tr><td>Auto-refresh on webhook</td><td class="highlight-col"><span class="check">✓</span></td><td><span class="partial">~</span> Manual reingestion</td></tr>
|
|
233
|
+
</tbody>
|
|
234
|
+
</table>
|
|
235
|
+
</section>
|
|
236
|
+
|
|
237
|
+
<section class="migration" id="migration">
|
|
238
|
+
<h2>Switching from Mintlify?</h2>
|
|
239
|
+
<p class="section-sub">Your docs are already structured for it. Our migration guide takes 15 minutes.</p>
|
|
240
|
+
<a href="/migrate-from-mintlify.html" class="cta-btn">Migration Guide →</a>
|
|
241
|
+
</section>
|
|
242
|
+
|
|
243
|
+
<footer>
|
|
244
|
+
<p>Pathfinder is MIT Licensed · <a href="#">GitHub</a> · <a href="#">Docs</a> · Built by <a href="#">CopilotKit</a></p>
|
|
245
|
+
</footer>
|
|
246
|
+
|
|
247
|
+
<script>
|
|
248
|
+
// Terminal animation
|
|
249
|
+
const terminal = document.getElementById('terminal');
|
|
250
|
+
const lines = [
|
|
251
|
+
{ type: 'prompt', text: '$ find / -name "*.mdx" | head -5' },
|
|
252
|
+
{ type: 'output', text: '/docs/quickstart.mdx' },
|
|
253
|
+
{ type: 'output', text: '/docs/guides/streaming.mdx' },
|
|
254
|
+
{ type: 'output', text: '/docs/guides/auth.mdx' },
|
|
255
|
+
{ type: 'output', text: '/docs/reference/hooks.mdx' },
|
|
256
|
+
{ type: 'output', text: '/docs/reference/config.mdx' },
|
|
257
|
+
{ type: 'pause', ms: 800 },
|
|
258
|
+
{ type: 'prompt', text: '$ grep -rl "useAction" /docs' },
|
|
259
|
+
{ type: 'output', text: '/docs/hooks/useAction.mdx' },
|
|
260
|
+
{ type: 'output', text: '/docs/guides/actions.mdx' },
|
|
261
|
+
{ type: 'pause', ms: 600 },
|
|
262
|
+
{ type: 'prompt', text: '$ related /docs/hooks/useAction.mdx' },
|
|
263
|
+
{ type: 'output', text: ' 0.92 /docs/guides/actions.mdx' },
|
|
264
|
+
{ type: 'output', text: ' 0.87 /code/src/hooks/useAction.ts' },
|
|
265
|
+
{ type: 'output', text: ' 0.81 /docs/reference/hooks.mdx' },
|
|
266
|
+
{ type: 'pause', ms: 600 },
|
|
267
|
+
{ type: 'prompt', text: '$ search-docs("async action handling")' },
|
|
268
|
+
{ type: 'output', text: 'SNIPPET 1: /docs/guides/actions.mdx' },
|
|
269
|
+
{ type: 'output', text: ' The useAction hook provides...' },
|
|
270
|
+
];
|
|
271
|
+
|
|
272
|
+
async function typeText(el, text, speed = 30) {
|
|
273
|
+
for (const char of text) {
|
|
274
|
+
el.textContent += char;
|
|
275
|
+
await new Promise(r => setTimeout(r, speed));
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
async function runTerminal() {
|
|
280
|
+
terminal.innerHTML = '';
|
|
281
|
+
for (const line of lines) {
|
|
282
|
+
if (line.type === 'pause') {
|
|
283
|
+
await new Promise(r => setTimeout(r, line.ms));
|
|
284
|
+
continue;
|
|
285
|
+
}
|
|
286
|
+
const span = document.createElement('div');
|
|
287
|
+
span.className = line.type === 'prompt' ? 'prompt-line' : 'output';
|
|
288
|
+
span.style.opacity = '0';
|
|
289
|
+
terminal.appendChild(span);
|
|
290
|
+
|
|
291
|
+
if (line.type === 'prompt') {
|
|
292
|
+
span.style.opacity = '1';
|
|
293
|
+
await typeText(span, line.text, 25);
|
|
294
|
+
await new Promise(r => setTimeout(r, 200));
|
|
295
|
+
} else {
|
|
296
|
+
span.textContent = line.text;
|
|
297
|
+
span.style.transition = 'opacity 0.3s';
|
|
298
|
+
span.style.opacity = '1';
|
|
299
|
+
await new Promise(r => setTimeout(r, 100));
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
// Add blinking cursor
|
|
303
|
+
const cursor = document.createElement('span');
|
|
304
|
+
cursor.textContent = '█';
|
|
305
|
+
cursor.style.animation = 'pulse 1s infinite';
|
|
306
|
+
cursor.className = 'prompt-line';
|
|
307
|
+
terminal.appendChild(cursor);
|
|
308
|
+
|
|
309
|
+
await new Promise(r => setTimeout(r, 3000));
|
|
310
|
+
runTerminal(); // loop
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
// Start animation when visible
|
|
314
|
+
const observer = new IntersectionObserver(entries => {
|
|
315
|
+
if (entries[0].isIntersecting) {
|
|
316
|
+
observer.disconnect();
|
|
317
|
+
runTerminal();
|
|
318
|
+
}
|
|
319
|
+
});
|
|
320
|
+
observer.observe(terminal);
|
|
321
|
+
</script>
|
|
322
|
+
|
|
323
|
+
</body>
|
|
324
|
+
</html>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"reason":"idle timeout","timestamp":1775510569809}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{"type":"server-started","port":59619,"host":"127.0.0.1","url_host":"localhost","url":"http://localhost:59619","screen_dir":"/proj/cpk/mcp-docs/.superpowers/brainstorm/47098-1775507869/content","state_dir":"/proj/cpk/mcp-docs/.superpowers/brainstorm/47098-1775507869/state"}
|
|
2
|
+
{"type":"screen-added","file":"/proj/cpk/mcp-docs/.superpowers/brainstorm/47098-1775507869/content/homepage-mockup.html"}
|
|
3
|
+
{"type":"screen-updated","file":"/proj/cpk/mcp-docs/.superpowers/brainstorm/47098-1775507869/content/homepage-mockup.html"}
|
|
4
|
+
{"type":"screen-updated","file":"/proj/cpk/mcp-docs/.superpowers/brainstorm/47098-1775507869/content/homepage-mockup.html"}
|
|
5
|
+
{"type":"screen-updated","file":"/proj/cpk/mcp-docs/.superpowers/brainstorm/47098-1775507869/content/homepage-mockup.html"}
|
|
6
|
+
{"type":"screen-updated","file":"/proj/cpk/mcp-docs/.superpowers/brainstorm/47098-1775507869/content/homepage-mockup.html"}
|
|
7
|
+
{"type":"screen-updated","file":"/proj/cpk/mcp-docs/.superpowers/brainstorm/47098-1775507869/content/homepage-mockup.html"}
|
|
8
|
+
{"type":"screen-updated","file":"/proj/cpk/mcp-docs/.superpowers/brainstorm/47098-1775507869/content/homepage-mockup.html"}
|
|
9
|
+
{"type":"screen-updated","file":"/proj/cpk/mcp-docs/.superpowers/brainstorm/47098-1775507869/content/homepage-mockup.html"}
|
|
10
|
+
{"type":"screen-updated","file":"/proj/cpk/mcp-docs/.superpowers/brainstorm/47098-1775507869/content/homepage-mockup.html"}
|
|
11
|
+
{"type":"screen-updated","file":"/proj/cpk/mcp-docs/.superpowers/brainstorm/47098-1775507869/content/homepage-mockup.html"}
|
|
12
|
+
{"type":"screen-updated","file":"/proj/cpk/mcp-docs/.superpowers/brainstorm/47098-1775507869/content/homepage-mockup.html"}
|
|
13
|
+
{"type":"server-stopped","reason":"idle timeout"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
47107
|