delimit-cli 4.1.21 → 4.1.23

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.
@@ -708,6 +708,11 @@ WHITE='\\033[97m'; BOLD='\\033[1m'; DIM='\\033[2m'; RESET='\\033[0m'
708
708
  # Fix config permissions before anything else
709
709
  [ -f "$HOME/.codex/config.toml" ] && chmod 644 "$HOME/.codex/config.toml" 2>/dev/null
710
710
  if [ "$DELIMIT_WRAPPED" = "true" ] || [ ! -t 1 ]; then
711
+ # Check for renamed binary first (avoids infinite loop when shim IS at /usr/bin/tool)
712
+ for c in /usr/bin/${toolName}-real /usr/local/bin/${toolName}-real $HOME/.local/bin/${toolName}-real; do
713
+ [ -x "$c" ] && exec "$c" "$@"
714
+ done
715
+ DELIMIT_WRAPPED=true; export DELIMIT_WRAPPED
711
716
  for c in /usr/bin/${toolName} /usr/local/bin/${toolName} $HOME/.local/bin/${toolName}; do
712
717
  [ -x "$c" ] && exec "$c" "$@"
713
718
  done
@@ -177,7 +177,7 @@ function detectAITools() {
177
177
  let hasClaude = fs.existsSync(claudeSettings) || fs.existsSync(claudeSettingsLocal);
178
178
  if (!hasClaude) {
179
179
  try {
180
- execSync('claude --version 2>/dev/null', { stdio: 'pipe' });
180
+ execSync('claude --version 2>/dev/null', { stdio: 'pipe', timeout: 3000 });
181
181
  hasClaude = true;
182
182
  } catch { /* not installed */ }
183
183
  }
@@ -195,7 +195,7 @@ function detectAITools() {
195
195
  let hasCodex = fs.existsSync(codexDir);
196
196
  if (!hasCodex) {
197
197
  try {
198
- execSync('codex --version 2>/dev/null', { stdio: 'pipe' });
198
+ execSync('codex --version 2>/dev/null', { stdio: 'pipe', timeout: 3000 });
199
199
  hasCodex = true;
200
200
  } catch { /* not installed */ }
201
201
  }
@@ -214,7 +214,7 @@ function detectAITools() {
214
214
  let hasGemini = fs.existsSync(geminiDir);
215
215
  if (!hasGemini) {
216
216
  try {
217
- execSync('gemini --version 2>/dev/null', { stdio: 'pipe' });
217
+ execSync('gemini --version 2>/dev/null', { stdio: 'pipe', timeout: 3000 });
218
218
  hasGemini = true;
219
219
  } catch { /* not installed */ }
220
220
  }
@@ -482,7 +482,7 @@ fi
482
482
  if (!existingSpecLint) {
483
483
  config.hooks.PostToolUse.push({
484
484
  matcher: 'Edit|Write',
485
- if: "filePath matches '**/*openapi*.yaml' or filePath matches '**/*openapi*.yml' or filePath matches '**/*openapi*.json' or filePath matches '**/*swagger*.yaml' or filePath matches '**/*swagger*.yml' or filePath matches '**/*swagger*.json' or filePath matches '**/api/*.yaml' or filePath matches '**/api/*.yml' or filePath matches '**/specs/**'",
485
+ if: "path_matches('**/openapi*') || path_matches('**/swagger*') || path_matches('**/specs/**')",
486
486
  hooks: [{
487
487
  type: 'command',
488
488
  command: `${npxCmd} lint "$DELIMIT_FILE_PATH"`,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "delimit-cli",
3
3
  "mcpName": "io.github.delimit-ai/delimit-mcp-server",
4
- "version": "4.1.21",
4
+ "version": "4.1.23",
5
5
  "description": "Unify Claude Code, Codex, Cursor, and Gemini CLI with persistent context, governance, and multi-model debate.",
6
6
  "main": "index.js",
7
7
  "files": [