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 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
 
@@ -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
- execSync(`${python} -m pip install --quiet fastmcp pyyaml pydantic packaging 2>/dev/null`, { stdio: 'pipe' });
105
- log(` ${green('✓')} Python dependencies installed`);
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('!')} pip install failed — run manually: pip install fastmcp pyyaml pydantic packaging`);
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 GEMINI_CONFIG = path.join(os.homedir(), '.gemini', 'settings.json');
188
- if (fs.existsSync(GEMINI_CONFIG)) {
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 = JSON.parse(fs.readFileSync(GEMINI_CONFIG, 'utf-8'));
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('');
@@ -0,0 +1,6 @@
1
+ # Delimit MCP server dependencies — pinned for supply chain security
2
+ # Update these when upgrading deps, then re-publish npm package
3
+ fastmcp==3.1.0
4
+ pyyaml==6.0.3
5
+ pydantic==2.12.5
6
+ packaging==26.0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "delimit-cli",
3
- "version": "3.6.5",
3
+ "version": "3.6.7",
4
4
  "description": "Catch breaking API changes before they ship. GitHub Action + CLI for OpenAPI specs.",
5
5
  "main": "index.js",
6
6
  "files": [