aidevops 3.13.95 → 3.14.1

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
@@ -49,7 +49,6 @@ The result: an AI operations platform that manages projects across every busines
49
49
 
50
50
  <!-- Build & Quality Status -->
51
51
  [![GitHub Actions](https://github.com/marcusquinn/aidevops/workflows/Code%20Quality%20Analysis/badge.svg)](https://github.com/marcusquinn/aidevops/actions)
52
- [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=marcusquinn_aidevops&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=marcusquinn_aidevops)
53
52
  [![CodeFactor](https://www.codefactor.io/repository/github/marcusquinn/aidevops/badge)](https://www.codefactor.io/repository/github/marcusquinn/aidevops)
54
53
  [![Maintainability](https://qlty.sh/gh/marcusquinn/projects/aidevops/maintainability.svg)](https://qlty.sh/gh/marcusquinn/projects/aidevops)
55
54
  [![Codacy Badge](https://app.codacy.com/project/badge/Grade/2b1adbd66c454dae92234341e801b984)](https://app.codacy.com/gh/marcusquinn/aidevops/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
package/VERSION CHANGED
@@ -1 +1 @@
1
- 3.13.95
1
+ 3.14.1
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.95
8
+ # Version: 3.14.1
9
9
 
10
10
  set -euo pipefail
11
11
 
@@ -35,6 +35,23 @@ if [[ -n "${SUDO_USER:-}" && "$(id -u)" -eq 0 ]] && command -v getent &>/dev/nul
35
35
  fi
36
36
  fi
37
37
  INSTALL_DIR="$_AIDEVOPS_REAL_HOME/Git/aidevops"
38
+ _AIDEVOPS_SOURCE_PATH="${BASH_SOURCE[0]}"
39
+ _AIDEVOPS_SOURCE_DIR="${_AIDEVOPS_SOURCE_PATH%/*}"
40
+ [[ "$_AIDEVOPS_SOURCE_DIR" == "$_AIDEVOPS_SOURCE_PATH" ]] && _AIDEVOPS_SOURCE_DIR="."
41
+ _AIDEVOPS_SOURCE_DIR="$(cd "$_AIDEVOPS_SOURCE_DIR" 2>/dev/null && pwd)" || _AIDEVOPS_SOURCE_DIR=""
42
+ if [[ -n "$_AIDEVOPS_SOURCE_DIR" && -L "$_AIDEVOPS_SOURCE_PATH" ]]; then
43
+ _AIDEVOPS_LINK_TARGET="$(readlink "$_AIDEVOPS_SOURCE_PATH" 2>/dev/null || true)"
44
+ if [[ -n "$_AIDEVOPS_LINK_TARGET" ]]; then
45
+ [[ "$_AIDEVOPS_LINK_TARGET" != /* ]] && _AIDEVOPS_LINK_TARGET="$_AIDEVOPS_SOURCE_DIR/$_AIDEVOPS_LINK_TARGET"
46
+ _AIDEVOPS_LINK_DIR="${_AIDEVOPS_LINK_TARGET%/*}"
47
+ _AIDEVOPS_LINK_DIR="$(cd "$_AIDEVOPS_LINK_DIR" 2>/dev/null && pwd)" || _AIDEVOPS_LINK_DIR=""
48
+ [[ -n "$_AIDEVOPS_LINK_DIR" ]] && _AIDEVOPS_SOURCE_DIR="$_AIDEVOPS_LINK_DIR"
49
+ fi
50
+ fi
51
+ if [[ -n "$_AIDEVOPS_SOURCE_DIR" && -f "$_AIDEVOPS_SOURCE_DIR/.agents/scripts/aidevops-cli/aidevops-repos-lib.sh" ]]; then
52
+ INSTALL_DIR="$_AIDEVOPS_SOURCE_DIR"
53
+ fi
54
+ unset _AIDEVOPS_SOURCE_PATH _AIDEVOPS_SOURCE_DIR _AIDEVOPS_LINK_TARGET _AIDEVOPS_LINK_DIR
38
55
  AGENTS_DIR="$_AIDEVOPS_REAL_HOME/.aidevops/agents"
39
56
  CONFIG_DIR="$_AIDEVOPS_REAL_HOME/.config/aidevops"
40
57
  REPOS_FILE="$CONFIG_DIR/repos.json"
@@ -153,29 +170,30 @@ ensure_trailing_newline() {
153
170
  [[ -s "$file" ]] && [[ "$last" != $'\n'x ]] && printf '\n' >>"$file"
154
171
  }
155
172
 
156
- # Source sub-libraries (repo management, init/scaffold, skills/plugins).
157
- # INSTALL_DIR is the canonical location of aidevops.sh (set above).
158
- # Using INSTALL_DIR rather than BASH_SOURCE[0] because aidevops is installed
159
- # as a symlink at /usr/local/bin/aidevops → $INSTALL_DIR/aidevops.sh;
160
- # dirname(BASH_SOURCE[0]) resolves to /usr/local/bin, not $INSTALL_DIR.
161
- # shellcheck source=./aidevops-repos-lib.sh
162
- # shellcheck disable=SC1091 # sub-library resolved at runtime via $INSTALL_DIR
163
- source "${INSTALL_DIR}/aidevops-repos-lib.sh"
164
- # shellcheck source=./aidevops-init-lib.sh
165
- # shellcheck disable=SC1091 # sub-library resolved at runtime via $INSTALL_DIR
166
- source "${INSTALL_DIR}/aidevops-init-lib.sh"
167
- # shellcheck source=./aidevops-skills-plugin-lib.sh
168
- # shellcheck disable=SC1091 # sub-library resolved at runtime via $INSTALL_DIR
169
- source "${INSTALL_DIR}/aidevops-skills-plugin-lib.sh"
170
- # shellcheck source=./aidevops-status-lib.sh
171
- # shellcheck disable=SC1091 # sub-library resolved at runtime via $INSTALL_DIR
172
- source "${INSTALL_DIR}/aidevops-status-lib.sh"
173
- # shellcheck source=./aidevops-update-lib.sh
174
- # shellcheck disable=SC1091 # sub-library resolved at runtime via $INSTALL_DIR
175
- source "${INSTALL_DIR}/aidevops-update-lib.sh"
176
- # shellcheck source=./aidevops-upgrade-planning-lib.sh
177
- # shellcheck disable=SC1091 # sub-library resolved at runtime via $INSTALL_DIR
178
- source "${INSTALL_DIR}/aidevops-upgrade-planning-lib.sh"
173
+ # Source CLI implementation modules from the namespaced module tree.
174
+ # INSTALL_DIR is the canonical location of aidevops.sh (set above). Using
175
+ # INSTALL_DIR rather than BASH_SOURCE[0] preserves installed symlink support:
176
+ # /usr/local/bin/aidevops → $INSTALL_DIR/aidevops.sh would otherwise resolve
177
+ # BASH_SOURCE[0] to /usr/local/bin instead of the checkout/deployed tree.
178
+ AIDEVOPS_CLI_MODULES_DIR="${INSTALL_DIR}/.agents/scripts/aidevops-cli"
179
+ # shellcheck source=.agents/scripts/aidevops-cli/aidevops-repos-lib.sh
180
+ # shellcheck disable=SC1091 # module path resolved at runtime via $INSTALL_DIR
181
+ source "${AIDEVOPS_CLI_MODULES_DIR}/aidevops-repos-lib.sh"
182
+ # shellcheck source=.agents/scripts/aidevops-cli/aidevops-init-lib.sh
183
+ # shellcheck disable=SC1091
184
+ source "${AIDEVOPS_CLI_MODULES_DIR}/aidevops-init-lib.sh"
185
+ # shellcheck source=.agents/scripts/aidevops-cli/aidevops-skills-plugin-lib.sh
186
+ # shellcheck disable=SC1091
187
+ source "${AIDEVOPS_CLI_MODULES_DIR}/aidevops-skills-plugin-lib.sh"
188
+ # shellcheck source=.agents/scripts/aidevops-cli/aidevops-status-lib.sh
189
+ # shellcheck disable=SC1091
190
+ source "${AIDEVOPS_CLI_MODULES_DIR}/aidevops-status-lib.sh"
191
+ # shellcheck source=.agents/scripts/aidevops-cli/aidevops-update-lib.sh
192
+ # shellcheck disable=SC1091
193
+ source "${AIDEVOPS_CLI_MODULES_DIR}/aidevops-update-lib.sh"
194
+ # shellcheck source=.agents/scripts/aidevops-cli/aidevops-upgrade-planning-lib.sh
195
+ # shellcheck disable=SC1091
196
+ source "${AIDEVOPS_CLI_MODULES_DIR}/aidevops-upgrade-planning-lib.sh"
179
197
 
180
198
  # Update/upgrade command
181
199
  cmd_update() {
@@ -229,11 +247,11 @@ cmd_update() {
229
247
  if [[ -n "$deployed_sha" && "$deployed_sha" != "$local_hash" ]]; then
230
248
  # Per Gemini code-review on PR #20342: use git's path filter +
231
249
  # `grep -q .` to detect drift across the full set of deploy-affecting
232
- # paths (not just .agents/ subdirs — also setup.sh, setup-modules/,
250
+ # paths (not just .agents/ subdirs — also setup.sh, .agents/scripts/setup/modules/,
233
251
  # and aidevops.sh itself, which are deployed/sourced by setup).
234
252
  if git -C "$INSTALL_DIR" diff --name-only "$deployed_sha" "$local_hash" -- \
235
253
  .agents/scripts/ .agents/agents/ .agents/workflows/ .agents/prompts/ .agents/hooks/ \
236
- setup.sh setup-modules/ aidevops.sh 2>/dev/null | grep -q .; then
254
+ setup.sh .agents/scripts/setup/modules/ aidevops.sh 2>/dev/null | grep -q .; then
237
255
  has_code_drift=1
238
256
  fi
239
257
  if [[ "$has_code_drift" -eq 1 ]]; then
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aidevops",
3
- "version": "3.13.95",
3
+ "version": "3.14.1",
4
4
  "description": "AI DevOps Framework - AI-assisted development workflows, code quality, and deployment automation",
5
5
  "type": "module",
6
6
  "bin": {
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.95
15
+ # Version: 3.14.1
16
16
  #
17
17
  # Quick Install:
18
18
  # npm install -g aidevops && aidevops update (recommended)
@@ -32,11 +32,11 @@ INTERACTIVE_MODE=false
32
32
  NON_INTERACTIVE="${AIDEVOPS_NON_INTERACTIVE:-false}"
33
33
  UPDATE_TOOLS_MODE=false
34
34
  # Python compatibility floor used by setup checks and skill/tool gating.
35
- # Keep in sync with setup-modules/plugins.sh requirements.
35
+ # Keep in sync with .agents/scripts/setup/modules/plugins.sh requirements.
36
36
  PYTHON_REQUIRED_MAJOR=3
37
37
  PYTHON_REQUIRED_MINOR=10
38
38
  export PYTHON_REQUIRED_MAJOR PYTHON_REQUIRED_MINOR
39
- # Platform constants — exported for sourced setup-modules (shell-env.sh,
39
+ # Platform constants — exported for sourced .agents/scripts/setup/modules (shell-env.sh,
40
40
  # tool-install.sh) that reference them at runtime.
41
41
  PLATFORM_MACOS=$([[ "$(uname -s)" == "Darwin" ]] && echo true || echo false)
42
42
  PLATFORM_ARM64=$([[ "$(uname -m)" == "arm64" || "$(uname -m)" == "aarch64" ]] && echo true || echo false)
@@ -51,7 +51,7 @@ if [[ -f "$_platform_detect_script" ]]; then
51
51
  source "$_platform_detect_script"
52
52
  fi
53
53
  unset _platform_detect_script
54
- # Repo constants — exported; consumed by setup-modules/core.sh, agent-deploy.sh
54
+ # Repo constants — exported; consumed by .agents/scripts/setup/modules/core.sh, agent-deploy.sh
55
55
  REPO_URL="https://github.com/marcusquinn/aidevops.git"
56
56
  # INSTALL_DIR: resolve from the directory where setup.sh is executed (supports worktrees)
57
57
  # For bootstrap (curl install), this will be /dev/fd/NN and trigger re-exec after clone
@@ -226,11 +226,11 @@ validate_namespace() {
226
226
  # =============================================================================
227
227
  # Bootstrap guard: detect curl/process-substitution execution
228
228
  # When running via `bash <(curl ...)`, BASH_SOURCE[0] is /dev/fd/NN and the
229
- # setup-modules/ directory doesn't exist at that path. We must clone the repo
229
+ # .agents/scripts/setup/modules/ directory doesn't exist at that path. We must clone the repo
230
230
  # first, then re-exec the local copy. This MUST run before any source lines.
231
231
  # =============================================================================
232
232
  _setup_script_dir="$(dirname "${BASH_SOURCE[0]}")"
233
- if [[ ! -d "$_setup_script_dir/setup-modules" ]]; then
233
+ if [[ ! -d "$_setup_script_dir/.agents/scripts/setup/modules" ]]; then
234
234
  # Running from curl pipe or process substitution — bootstrap the repo
235
235
  print_info "Remote install detected — bootstrapping repository..."
236
236
 
@@ -290,37 +290,41 @@ if [[ ! -d "$_setup_script_dir/setup-modules" ]]; then
290
290
 
291
291
  print_success "Repository ready at $_bootstrap_install_dir"
292
292
 
293
- # Re-execute the local copy (which has setup-modules/ available)
293
+ # Re-execute the local copy (which has .agents/scripts/setup/modules/ available)
294
294
  cd "$_bootstrap_install_dir" || exit 1
295
295
  exec bash "./setup.sh" "$@"
296
296
  fi
297
297
  unset _setup_script_dir
298
298
 
299
- # Source modularized setup functions
300
- # shellcheck disable=SC1091 # Dynamic path via BASH_SOURCE; files exist at runtime
301
- source "$(dirname "${BASH_SOURCE[0]}")/setup-modules/core.sh"
299
+ # Source modularized setup functions from the canonical setup module tree.
300
+ # The sibling .agents/scripts/setup/_*.sh files above are bootstrap/fallback
301
+ # helpers loaded early by the root entrypoint; normal setup implementation
302
+ # modules live under modules/ so the repository root has no module directory.
303
+ SETUP_IMPL_MODULES_DIR="${SETUP_MODULES_DIR}/modules"
304
+ # shellcheck disable=SC1091 # Dynamic path via $SETUP_IMPL_MODULES_DIR
305
+ source "${SETUP_IMPL_MODULES_DIR}/core.sh"
302
306
  # shellcheck disable=SC1091
303
- source "$(dirname "${BASH_SOURCE[0]}")/setup-modules/migrations.sh"
307
+ source "${SETUP_IMPL_MODULES_DIR}/migrations.sh"
304
308
  # shellcheck disable=SC1091
305
- source "$(dirname "${BASH_SOURCE[0]}")/setup-modules/shell-env.sh"
309
+ source "${SETUP_IMPL_MODULES_DIR}/shell-env.sh"
306
310
  # shellcheck disable=SC1091
307
- source "$(dirname "${BASH_SOURCE[0]}")/setup-modules/tool-install.sh"
311
+ source "${SETUP_IMPL_MODULES_DIR}/tool-install.sh"
308
312
  # shellcheck disable=SC1091
309
- source "$(dirname "${BASH_SOURCE[0]}")/setup-modules/mcp-setup.sh"
313
+ source "${SETUP_IMPL_MODULES_DIR}/mcp-setup.sh"
310
314
  # shellcheck disable=SC1091
311
- source "$(dirname "${BASH_SOURCE[0]}")/setup-modules/agent-deploy.sh"
315
+ source "${SETUP_IMPL_MODULES_DIR}/agent-deploy.sh"
312
316
  # shellcheck disable=SC1091
313
- source "$(dirname "${BASH_SOURCE[0]}")/setup-modules/agent-runtime.sh"
317
+ source "${SETUP_IMPL_MODULES_DIR}/agent-runtime.sh"
314
318
  # shellcheck disable=SC1091
315
- source "$(dirname "${BASH_SOURCE[0]}")/setup-modules/tool-beads.sh"
319
+ source "${SETUP_IMPL_MODULES_DIR}/tool-beads.sh"
316
320
  # shellcheck disable=SC1091
317
- source "$(dirname "${BASH_SOURCE[0]}")/setup-modules/config.sh"
321
+ source "${SETUP_IMPL_MODULES_DIR}/config.sh"
318
322
  # shellcheck disable=SC1091
319
- source "$(dirname "${BASH_SOURCE[0]}")/setup-modules/plugins.sh"
323
+ source "${SETUP_IMPL_MODULES_DIR}/plugins.sh"
320
324
  # shellcheck disable=SC1091
321
- source "$(dirname "${BASH_SOURCE[0]}")/setup-modules/schedulers.sh"
325
+ source "${SETUP_IMPL_MODULES_DIR}/schedulers.sh"
322
326
  # shellcheck disable=SC1091
323
- source "$(dirname "${BASH_SOURCE[0]}")/setup-modules/post-setup.sh"
327
+ source "${SETUP_IMPL_MODULES_DIR}/post-setup.sh"
324
328
 
325
329
  parse_args() {
326
330
  while [[ $# -gt 0 ]]; do