aidevops 3.13.50 → 3.13.51

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/VERSION CHANGED
@@ -1 +1 @@
1
- 3.13.50
1
+ 3.13.51
package/aidevops.sh CHANGED
@@ -5,7 +5,7 @@
5
5
  # AI DevOps Framework CLI
6
6
  # Usage: aidevops <command> [options]
7
7
  #
8
- # Version: 3.13.50
8
+ # Version: 3.13.51
9
9
 
10
10
  set -euo pipefail
11
11
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aidevops",
3
- "version": "3.13.50",
3
+ "version": "3.13.51",
4
4
  "description": "AI DevOps Framework - AI-assisted development workflows, code quality, and deployment automation",
5
5
  "type": "module",
6
6
  "bin": {
@@ -340,8 +340,9 @@ _install_opencode_plugin_deps() {
340
340
  }
341
341
 
342
342
  # _atomic_stage_and_deploy_agents source_dir target_dir [plugin_namespaces...]
343
- # Stages a copy in target_dir.staging, carries over preserved dirs (custom/,
344
- # draft/, and any plugin namespaces), then atomically swaps staging into place.
343
+ # Stages a copy in a per-process target_dir.staging.* directory, carries over
344
+ # preserved dirs (custom/, draft/, and any plugin namespaces), then atomically
345
+ # swaps staging into place.
345
346
  # Returns 0 on success, 1 on failure.
346
347
  _atomic_stage_and_deploy_agents() {
347
348
  local source_dir="$1"
@@ -353,14 +354,22 @@ _atomic_stage_and_deploy_agents() {
353
354
  # Previously, clean + copy happened in-place, creating a window where
354
355
  # scripts were missing. The pulse could dispatch workers mid-deploy,
355
356
  # hitting "No such file or directory" errors. Now we:
356
- # 1. rsync into a staging dir (target_dir.staging)
357
+ # 1. rsync into a unique staging dir (target_dir.staging.*)
357
358
  # 2. Move preserved dirs (custom/, draft/, plugins) from live to staging
358
- # 3. mv live → .old, mv staging → live (atomic on same filesystem)
359
- # 4. rm .old
360
- local staging_dir="${target_dir}.staging"
361
- local old_dir="${target_dir}.old"
362
- rm -rf "$staging_dir" "$old_dir"
363
- mkdir -p "$staging_dir"
359
+ # 3. mv live → .old.*, mv staging → live (atomic on same filesystem)
360
+ # 4. rm .old.*
361
+ #
362
+ # GH#22063: the staging/backup paths must be unique per setup process. Fixed
363
+ # names such as target_dir.staging let a concurrent setup cleanup remove the
364
+ # directory while rsync is still writing into it, producing renameat/move_file
365
+ # ENOENT failures even though the canonical .agents/ source is valid.
366
+ local staging_dir old_dir
367
+ staging_dir=$(mktemp -d "${target_dir}.staging.XXXXXX") || {
368
+ print_error "Failed to create agents staging directory"
369
+ return 1
370
+ }
371
+ old_dir="${target_dir}.old.$$"
372
+ rm -rf "$old_dir"
364
373
 
365
374
  # Copy source into staging
366
375
  local copy_rc
package/setup.sh CHANGED
@@ -12,7 +12,7 @@ shopt -s inherit_errexit 2>/dev/null || true
12
12
  # AI Assistant Server Access Framework Setup Script
13
13
  # Helps developers set up the framework for their infrastructure
14
14
  #
15
- # Version: 3.13.50
15
+ # Version: 3.13.51
16
16
  #
17
17
  # Quick Install:
18
18
  # npm install -g aidevops && aidevops update (recommended)