delimit-cli 3.6.5 → 3.6.7
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 +1 -1
- package/bin/delimit-setup.js +37 -7
- package/gateway/requirements.txt +6 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -39,7 +39,7 @@ That's it. Delimit auto-fetches the base branch spec, diffs it, and posts a PR c
|
|
|
39
39
|
- Step-by-step migration guide
|
|
40
40
|
- Policy violations
|
|
41
41
|
|
|
42
|
-
[View on GitHub Marketplace →](https://github.com/marketplace/actions/delimit-api-governance)
|
|
42
|
+
[View on GitHub Marketplace →](https://github.com/marketplace/actions/delimit-api-governance) · [See a live PR comment →](https://github.com/delimit-ai/delimit-quickstart/pull/1)
|
|
43
43
|
|
|
44
44
|
### Example PR comment
|
|
45
45
|
|
package/bin/delimit-setup.js
CHANGED
|
@@ -98,13 +98,32 @@ async function main() {
|
|
|
98
98
|
fs.copyFileSync(serverSource, path.join(DELIMIT_HOME, 'server', 'mcp-server.py'));
|
|
99
99
|
}
|
|
100
100
|
|
|
101
|
-
// Install Python deps
|
|
101
|
+
// Install Python deps into isolated venv with pinned versions
|
|
102
102
|
log(` ${dim(' Installing Python dependencies...')}`);
|
|
103
|
+
const venvDir = path.join(DELIMIT_HOME, 'venv');
|
|
104
|
+
const reqFile = path.join(DELIMIT_HOME, 'server', 'requirements.txt');
|
|
103
105
|
try {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
+
if (!fs.existsSync(venvDir)) {
|
|
107
|
+
execSync(`${python} -m venv "${venvDir}"`, { stdio: 'pipe' });
|
|
108
|
+
}
|
|
109
|
+
const venvPython = path.join(venvDir, 'bin', 'python');
|
|
110
|
+
const venvPythonWin = path.join(venvDir, 'Scripts', 'python.exe');
|
|
111
|
+
const venvPy = fs.existsSync(venvPython) ? venvPython : venvPythonWin;
|
|
112
|
+
if (fs.existsSync(reqFile)) {
|
|
113
|
+
execSync(`"${venvPy}" -m pip install --quiet -r "${reqFile}" 2>/dev/null`, { stdio: 'pipe' });
|
|
114
|
+
} else {
|
|
115
|
+
execSync(`"${venvPy}" -m pip install --quiet fastmcp==3.1.0 pyyaml==6.0.3 pydantic==2.12.5 packaging==26.0 2>/dev/null`, { stdio: 'pipe' });
|
|
116
|
+
}
|
|
117
|
+
python = venvPy; // Use venv python for MCP config
|
|
118
|
+
log(` ${green('✓')} Python dependencies installed (isolated venv)`);
|
|
106
119
|
} catch {
|
|
107
|
-
log(` ${yellow('!')}
|
|
120
|
+
log(` ${yellow('!')} venv install failed — trying global pip`);
|
|
121
|
+
try {
|
|
122
|
+
execSync(`${python} -m pip install --quiet fastmcp==3.1.0 pyyaml==6.0.3 pydantic==2.12.5 packaging==26.0 2>/dev/null`, { stdio: 'pipe' });
|
|
123
|
+
log(` ${green('✓')} Python dependencies installed (global)`);
|
|
124
|
+
} catch {
|
|
125
|
+
log(` ${yellow('!')} pip install failed — run manually: pip install fastmcp pyyaml pydantic packaging`);
|
|
126
|
+
}
|
|
108
127
|
}
|
|
109
128
|
|
|
110
129
|
// Step 3: Configure Claude Code MCP
|
|
@@ -184,10 +203,14 @@ async function main() {
|
|
|
184
203
|
}
|
|
185
204
|
|
|
186
205
|
// Step 3d: Configure Gemini CLI (if installed)
|
|
187
|
-
const
|
|
188
|
-
|
|
206
|
+
const GEMINI_DIR = path.join(os.homedir(), '.gemini');
|
|
207
|
+
const GEMINI_CONFIG = path.join(GEMINI_DIR, 'settings.json');
|
|
208
|
+
if (fs.existsSync(GEMINI_DIR)) {
|
|
189
209
|
try {
|
|
190
|
-
let geminiConfig =
|
|
210
|
+
let geminiConfig = {};
|
|
211
|
+
if (fs.existsSync(GEMINI_CONFIG)) {
|
|
212
|
+
geminiConfig = JSON.parse(fs.readFileSync(GEMINI_CONFIG, 'utf-8'));
|
|
213
|
+
}
|
|
191
214
|
if (!geminiConfig.mcpServers) geminiConfig.mcpServers = {};
|
|
192
215
|
if (geminiConfig.mcpServers.delimit) {
|
|
193
216
|
log(` ${green('✓')} Delimit already in Gemini CLI config`);
|
|
@@ -308,6 +331,13 @@ Run full governance compliance checks. Verify security, policy compliance, evide
|
|
|
308
331
|
log('');
|
|
309
332
|
log(` ${green('Delimit is installed.')} Your AI now has persistent memory and governance.`);
|
|
310
333
|
log('');
|
|
334
|
+
log(' Configured for:');
|
|
335
|
+
const tools = ['Claude Code'];
|
|
336
|
+
if (fs.existsSync(CODEX_CONFIG)) tools.push('Codex');
|
|
337
|
+
if (fs.existsSync(path.join(os.homedir(), '.cursor'))) tools.push('Cursor');
|
|
338
|
+
if (fs.existsSync(GEMINI_DIR)) tools.push('Gemini CLI');
|
|
339
|
+
log(` ${green('✓')} ${tools.join(', ')}`);
|
|
340
|
+
log('');
|
|
311
341
|
log(' Try it now:');
|
|
312
342
|
log(` ${bold('$ claude')}`);
|
|
313
343
|
log('');
|