@polarityinc/paragon 0.0.9 → 0.0.11
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 +32 -1
- package/bin/paragon +27 -0
- package/bin/reviewserver +0 -0
- package/package.json +1 -1
- package/scripts/npm-install.js +52 -9
package/README.md
CHANGED
|
@@ -103,6 +103,38 @@ Paragon uses Language Server Protocol (LSP) for deep code understanding, just li
|
|
|
103
103
|
### Extensible via MCP
|
|
104
104
|
Add capabilities through Model Context Protocol (`http`, `stdio`, and `sse` transports).
|
|
105
105
|
|
|
106
|
+
Paragon ships with a Claude-compatible MCP CLI so you can manage servers without leaving the terminal:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
# Add stdio server locally (stored in .paragon/mcp.local.json)
|
|
110
|
+
paragon mcp add local-filesystem --transport stdio --env ROOT=/work -- ls --color=never
|
|
111
|
+
|
|
112
|
+
# Share a server with your team via .mcp.json
|
|
113
|
+
paragon mcp add github --transport http --scope project https://api.githubcopilot.com/mcp/
|
|
114
|
+
|
|
115
|
+
# Inspect and manage servers
|
|
116
|
+
paragon mcp list
|
|
117
|
+
paragon mcp get github
|
|
118
|
+
paragon mcp remove local-filesystem --scope local
|
|
119
|
+
|
|
120
|
+
# Supabase works exactly like Claude
|
|
121
|
+
paragon mcp add --scope project --transport http supabase https://mcp.supabase.com/mcp
|
|
122
|
+
paragon mcp auth supabase
|
|
123
|
+
|
|
124
|
+
# Install every catalog MCP in one shot
|
|
125
|
+
paragon mcp catalog install --all --scope project
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Scopes mirror Claude Code:
|
|
129
|
+
|
|
130
|
+
- `local` (default) → private to you per project, saved under `.paragon/mcp.local.json`
|
|
131
|
+
- `project` → shared `.mcp.json` in the repo root
|
|
132
|
+
- `user` → stored in your global Paragon config so every project can use it
|
|
133
|
+
|
|
134
|
+
The command palette’s **Add MCP Server** dialog now follows the same flow (scope selection, auth metadata, env vars) and will launch OAuth URLs automatically when provided. Supabase servers trigger the full Claude-style OAuth handshake (local callback server, PKCE, browser open) and save the resulting token to your local `.paragon/mcp.tokens.json`. For instant setup, run `paragon mcp catalog install --all --scope project` to pull in every curated MCP from the catalog; the `/mcp` dialog will walk you through approving and authenticating each one.
|
|
135
|
+
|
|
136
|
+
Inside the TUI, type `/mcp` (or run **Manage MCP Servers** from the command palette) to review servers, authenticate via browser, or disable entries. Project-scoped MCPs from `.mcp.json` prompt you to approve or reject them before Paragon connects, mirroring Claude Code’s safety flow.
|
|
137
|
+
|
|
106
138
|
### Works Everywhere
|
|
107
139
|
First-class support in every terminal on macOS, Linux, Windows (PowerShell and WSL), FreeBSD, OpenBSD, and NetBSD.
|
|
108
140
|
|
|
@@ -203,4 +235,3 @@ For inquiries, contact [sales@polarity.cc](mailto:sales@polarity.cc).
|
|
|
203
235
|
</p>
|
|
204
236
|
|
|
205
237
|
---
|
|
206
|
-
|
package/bin/paragon
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const { spawn } = require('child_process');
|
|
4
|
+
const path = require('path');
|
|
5
|
+
const fs = require('fs');
|
|
6
|
+
|
|
7
|
+
// Determine platform
|
|
8
|
+
const platform = process.platform === 'win32' ? 'windows' : process.platform;
|
|
9
|
+
const binaryName = platform === 'windows' ? 'paragon.exe' : 'paragon-bin';
|
|
10
|
+
const binaryPath = path.join(__dirname, binaryName);
|
|
11
|
+
|
|
12
|
+
// Check if binary exists
|
|
13
|
+
if (!fs.existsSync(binaryPath)) {
|
|
14
|
+
console.error('Error: Paragon binary not found.');
|
|
15
|
+
console.error('Please reinstall: npm install -g @polarityinc/paragon');
|
|
16
|
+
process.exit(1);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// Execute the binary with all arguments
|
|
20
|
+
const child = spawn(binaryPath, process.argv.slice(2), {
|
|
21
|
+
stdio: 'inherit',
|
|
22
|
+
shell: false
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
child.on('exit', (code) => {
|
|
26
|
+
process.exit(code);
|
|
27
|
+
});
|
package/bin/reviewserver
ADDED
|
Binary file
|
package/package.json
CHANGED
package/scripts/npm-install.js
CHANGED
|
@@ -39,7 +39,7 @@ const GITHUB_RELEASE_URL = `https://github.com/Polarityinc/polarity-binaries/rel
|
|
|
39
39
|
|
|
40
40
|
// Create bin directory
|
|
41
41
|
const binDir = path.join(__dirname, '..', 'bin');
|
|
42
|
-
const binPath = path.join(binDir, platform === 'windows' ? 'paragon.exe' : 'paragon');
|
|
42
|
+
const binPath = path.join(binDir, platform === 'windows' ? 'paragon.exe' : 'paragon-bin');
|
|
43
43
|
|
|
44
44
|
if (!fs.existsSync(binDir)) {
|
|
45
45
|
fs.mkdirSync(binDir, { recursive: true });
|
|
@@ -162,6 +162,33 @@ function installRipgrep() {
|
|
|
162
162
|
}
|
|
163
163
|
}
|
|
164
164
|
|
|
165
|
+
// Uninstall brew version if it exists
|
|
166
|
+
function uninstallBrewPolarity() {
|
|
167
|
+
if (platform !== 'darwin') {
|
|
168
|
+
return; // Only relevant for macOS
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
try {
|
|
172
|
+
// Check if brew is available
|
|
173
|
+
execSync('brew --version', { stdio: 'ignore' });
|
|
174
|
+
|
|
175
|
+
// Check if polarity is installed via brew
|
|
176
|
+
try {
|
|
177
|
+
execSync('brew list polarity', { stdio: 'ignore' });
|
|
178
|
+
console.log('Found existing Homebrew installation of polarity, uninstalling...');
|
|
179
|
+
execSync('brew uninstall polarity', { stdio: 'inherit' });
|
|
180
|
+
console.log('✓ Homebrew polarity uninstalled successfully\n');
|
|
181
|
+
} catch (e) {
|
|
182
|
+
// polarity not installed via brew, which is fine
|
|
183
|
+
}
|
|
184
|
+
} catch (e) {
|
|
185
|
+
// brew not available, skip
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// Uninstall brew version before installing npm version
|
|
190
|
+
uninstallBrewPolarity();
|
|
191
|
+
|
|
165
192
|
downloadFile(GITHUB_RELEASE_URL, binPath)
|
|
166
193
|
.then(() => {
|
|
167
194
|
// Make binary executable on Unix systems
|
|
@@ -169,26 +196,42 @@ downloadFile(GITHUB_RELEASE_URL, binPath)
|
|
|
169
196
|
fs.chmodSync(binPath, 0o755);
|
|
170
197
|
}
|
|
171
198
|
|
|
172
|
-
|
|
199
|
+
// ASCII Art Logo
|
|
200
|
+
console.log('\n');
|
|
201
|
+
console.log(' ██████╗ █████╗ ██████╗ █████╗ ██████╗ ██████╗ ███╗ ██╗');
|
|
202
|
+
console.log(' ██╔══██╗██╔══██╗██╔══██╗██╔══██╗██╔════╝ ██╔═══██╗████╗ ██║');
|
|
203
|
+
console.log(' ██████╔╝███████║██████╔╝███████║██║ ███╗██║ ██║██╔██╗ ██║');
|
|
204
|
+
console.log(' ██╔═══╝ ██╔══██║██╔══██╗██╔══██║██║ ██║██║ ██║██║╚██╗██║');
|
|
205
|
+
console.log(' ██║ ██║ ██║██║ ██║██║ ██║╚██████╔╝╚██████╔╝██║ ╚████║');
|
|
206
|
+
console.log(' ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═══╝');
|
|
207
|
+
console.log('\n The Best Code Review Agent in the World\n');
|
|
208
|
+
console.log('✓ Paragon installed successfully!\n');
|
|
173
209
|
|
|
174
210
|
// Check and install ripgrep if needed
|
|
175
211
|
if (!checkRipgrep()) {
|
|
176
|
-
console.log('\nripgrep is required but not found.');
|
|
177
212
|
if (!installRipgrep()) {
|
|
178
|
-
console.log('
|
|
179
|
-
console.log('Please install it manually: https://github.com/BurntSushi/ripgrep#installation');
|
|
213
|
+
console.log('⚠️ Could not auto-install ripgrep');
|
|
214
|
+
console.log('Please install it manually: https://github.com/BurntSushi/ripgrep#installation\n');
|
|
180
215
|
} else {
|
|
181
|
-
console.log('✓ ripgrep installed
|
|
216
|
+
console.log('✓ ripgrep installed automatically!\n');
|
|
182
217
|
}
|
|
183
218
|
}
|
|
184
219
|
|
|
185
|
-
console.log(
|
|
186
|
-
console.log('
|
|
220
|
+
console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
|
|
221
|
+
console.log('\n📝 Next Steps:\n');
|
|
222
|
+
console.log(' 1. Authenticate with Polarity:');
|
|
223
|
+
console.log(' $ paragon auth login\n');
|
|
224
|
+
console.log(' 2. Get your API key from:');
|
|
225
|
+
console.log(' https://home.polarity.cc/app/settings\n');
|
|
226
|
+
console.log(' 3. Start using Paragon:');
|
|
227
|
+
console.log(' $ paragon\n');
|
|
228
|
+
console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
|
|
229
|
+
console.log('\n📚 Documentation: https://polarity.cc/docs');
|
|
230
|
+
console.log('💬 Support: sales@polarity.cc\n');
|
|
187
231
|
})
|
|
188
232
|
.catch((err) => {
|
|
189
233
|
console.error('✗ Installation failed:', err.message);
|
|
190
234
|
console.error('\nPlease try one of these alternatives:');
|
|
191
|
-
console.error('- Homebrew: brew install polarityinc/polarity/polarity');
|
|
192
235
|
console.error('- Direct download: https://github.com/Polarityinc/polarity-binaries/releases');
|
|
193
236
|
process.exit(1);
|
|
194
237
|
});
|