aidevops 3.39.52 → 3.39.54

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
@@ -25,7 +25,7 @@ token efficiency, and quality control built in.**
25
25
  [![Maintainability](https://qlty.sh/gh/marcusquinn/projects/aidevops/maintainability.svg)](https://qlty.sh/gh/marcusquinn/projects/aidevops)
26
26
  [![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)
27
27
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
28
- [![Version](https://img.shields.io/badge/Version-3.39.52-blue.svg)](https://github.com/marcusquinn/aidevops/releases)
28
+ [![Version](https://img.shields.io/badge/Version-3.39.54-blue.svg)](https://github.com/marcusquinn/aidevops/releases)
29
29
  [![npm version](https://img.shields.io/npm/v/aidevops)](https://www.npmjs.com/package/aidevops)
30
30
  [![Homebrew](https://img.shields.io/badge/homebrew-marcusquinn%2Ftap-orange)](https://github.com/marcusquinn/homebrew-tap)
31
31
 
package/VERSION CHANGED
@@ -1 +1 @@
1
- 3.39.52
1
+ 3.39.54
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.39.52
8
+ # Version: 3.39.54
9
9
 
10
10
  set -euo pipefail
11
11
 
@@ -1231,7 +1231,7 @@ _help_commands() {
1231
1231
  echo " lint [cmd] Audit/configure native repo lint, format, typecheck, and hooks"
1232
1232
  echo " design <cmd> DESIGN.md detection, scaffolding, and brand guideline exports"
1233
1233
  echo " keywords <cmd> context/keywords.md search targets: scaffold, brief, sync, track, budget"
1234
- echo " cleanup <cmd> Cleanup helpers (remote branch audit/delete)"
1234
+ echo " cleanup [cmd] Storage report/reclaim (all --apply) and branch cleanup"
1235
1235
  echo " model-accounts-pool OAuth account pool (list/check/diagnose/add/rotate/reset-cooldowns)"
1236
1236
  echo " gpt56-context <cmd> Manage the 300K GPT-5.6 OpenCode context cap (enable/disable/status)"
1237
1237
  echo " gpt6-context <cmd> Manage the default ~240K GPT-6 Sol/Luna compaction cap (enable/disable/status)"
@@ -1760,8 +1760,55 @@ _main_check_version() {
1760
1760
  return 0
1761
1761
  }
1762
1762
 
1763
+ # Verify advisory metadata only during an explicit full security assessment.
1764
+ _security_check_advisories() {
1765
+ local advisories_dir="$HOME/.aidevops/advisories"
1766
+ local dismissed_file="$advisories_dir/dismissed.txt"
1767
+ local tls_helper="tls-trust-helper.sh"
1768
+ local advisory_file adv_id line check status
1769
+ local -a check_args=()
1770
+ for advisory_file in "$advisories_dir"/*.advisory; do
1771
+ [[ -f "$advisory_file" ]] || continue
1772
+ adv_id="${advisory_file##*/}"
1773
+ adv_id="${adv_id%.advisory}"
1774
+ if [[ -f "$dismissed_file" ]] && grep -qxF -- "$adv_id" "$dismissed_file"; then
1775
+ continue
1776
+ fi
1777
+ check=""
1778
+ while IFS= read -r line || [[ -n "$line" ]]; do
1779
+ if [[ "$line" == '# check: '* ]]; then
1780
+ check="${line#\# check: }"
1781
+ break
1782
+ fi
1783
+ done <"$advisory_file"
1784
+ [[ -n "$check" ]] || continue
1785
+ # Split literal whitespace only: no evaluation, expansion or shell quoting.
1786
+ IFS=$' \t' read -r -a check_args <<<"$check"
1787
+ # Allow only the checking subcommand, never help/probe-script (also exit 0).
1788
+ if [[ "${check_args[0]:-}" != tls-trust || "${check_args[1]:-}" != local ]] ||
1789
+ { [[ ${#check_args[@]} -ne 2 ]] &&
1790
+ ! { [[ ${#check_args[@]} -eq 4 && "${check_args[2]:-}" == --canary && "${check_args[3]:-}" != -* ]]; }; }; then
1791
+ printf 'Keeping %s: unsupported advisory check\n' "$adv_id"
1792
+ continue
1793
+ fi
1794
+ status=0
1795
+ _dispatch_helper "$tls_helper" "$tls_helper" "${check_args[@]:1}" || status=$?
1796
+ if [[ "$status" -eq 0 ]]; then
1797
+ if printf '%s\n' "$adv_id" >>"$dismissed_file"; then
1798
+ printf 'auto-dismissed %s: verified clean\n' "$adv_id"
1799
+ else
1800
+ printf 'Keeping %s: could not record dismissal\n' "$adv_id" >&2
1801
+ fi
1802
+ else
1803
+ printf 'Keeping %s: advisory check exited %s\n' "$adv_id" "$status"
1804
+ fi
1805
+ done
1806
+ return 0
1807
+ }
1808
+
1763
1809
  # Route 'aidevops security [subcommand]' to appropriate helpers
1764
1810
  _cmd_security() {
1811
+ local tls_helper="tls-trust-helper.sh"
1765
1812
  case "${1:-}" in
1766
1813
  "")
1767
1814
  # No args: run ALL security checks (posture + hygiene + advisories)
@@ -1774,6 +1821,9 @@ _cmd_security() {
1774
1821
  _dispatch_helper "secret-hygiene-helper.sh" "secret-hygiene-helper.sh" scan || true
1775
1822
  echo ""
1776
1823
  _dispatch_helper "supply-chain-advisory-helper.sh" "supply-chain-advisory-helper.sh" scan || true
1824
+ echo ""
1825
+ _dispatch_helper "$tls_helper" "$tls_helper" local || true
1826
+ _security_check_advisories
1777
1827
  ;;
1778
1828
  scan | scan-secrets | scan-pth | scan-deps)
1779
1829
  _dispatch_helper "secret-hygiene-helper.sh" "secret-hygiene-helper.sh" "$@"
@@ -1808,6 +1858,11 @@ _cmd_security() {
1808
1858
  shift || true
1809
1859
  _dispatch_helper "supply-chain-advisory-helper.sh" "supply-chain-advisory-helper.sh" "${@:-scan}"
1810
1860
  ;;
1861
+ tls-trust)
1862
+ shift || true
1863
+ _dispatch_helper "$tls_helper" "$tls_helper" "${@:-local}"
1864
+ return $?
1865
+ ;;
1811
1866
  *)
1812
1867
  _dispatch_helper "security-posture-helper.sh" "security-posture-helper.sh" "$@"
1813
1868
  ;;
@@ -2100,7 +2155,8 @@ _main_dispatch() {
2100
2155
  }
2101
2156
 
2102
2157
  _main_dispatch_cleanup() {
2103
- local cleanup_subcommand="${1:-help}"
2158
+ local cleanup_subcommand="${1:-report}"
2159
+ local storage_helper="storage-cleanup-helper.sh"
2104
2160
  case "$cleanup_subcommand" in
2105
2161
  branches | remote-branches)
2106
2162
  shift || true
@@ -2110,22 +2166,33 @@ _main_dispatch_cleanup() {
2110
2166
  shift || true
2111
2167
  _dispatch_helper "local-branch-cleanup-helper.sh" "local-branch-cleanup-helper.sh" "$@"
2112
2168
  ;;
2113
- help | --help | -h | "")
2114
- echo "Usage: aidevops cleanup <branches|remote-branches|local-branches> [options]"
2169
+ report | status | all | tmp | worktrees | opencode | observability)
2170
+ # GH#35245: storage stores route to their existing owning cleaners.
2171
+ _dispatch_helper "$storage_helper" "$storage_helper" "$@"
2172
+ return $?
2173
+ ;;
2174
+ help | --help | -h)
2175
+ echo "Usage: aidevops cleanup [report|all|<store>|<branch-cmd>] [options]"
2176
+ echo ""
2177
+ echo "Storage (dry-run unless --apply):"
2178
+ echo " (no args), report Sizes of aidevops-owned stores and their cleaners"
2179
+ echo " all [--apply] Preview or clean every store"
2180
+ echo " tmp|worktrees|opencode|observability [--apply] One store"
2181
+ echo " Daily automatic run: routine r922 Storage hygiene (installed by setup)"
2115
2182
  echo ""
2116
- echo "Cleanup commands:"
2117
- echo " branches Audit stale remote branches (dry-run default)"
2183
+ echo "Branches (dry-run unless --apply):"
2184
+ echo " branches Audit stale remote branches"
2118
2185
  echo " remote-branches Alias for branches"
2119
- echo " local-branches Audit merged local branches (dry-run default)"
2186
+ echo " local-branches Audit merged local branches"
2120
2187
  echo ""
2121
- echo "Options:"
2188
+ echo "Branch options:"
2122
2189
  echo " --repo PATH Repository path (default: current directory)"
2123
2190
  echo " --remote NAME Remote to audit (default: origin)"
2124
2191
  echo " --branch NAME Single local branch (local-branches only)"
2125
2192
  echo " --apply Delete safe candidates"
2126
2193
  echo ""
2127
2194
  ;;
2128
- *) print_error "Unknown cleanup subcommand: $cleanup_subcommand (try branches|remote-branches|local-branches|help)"; return 1 ;;
2195
+ *) print_error "Unknown cleanup subcommand: $cleanup_subcommand (try report|all|tmp|worktrees|opencode|observability|branches|local-branches|help)"; return 1 ;;
2129
2196
  esac
2130
2197
  return 0
2131
2198
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aidevops",
3
- "version": "3.39.52",
3
+ "version": "3.39.54",
4
4
  "description": "AI DevOps Framework - AI-assisted development workflows, code quality, and deployment automation",
5
5
  "type": "module",
6
6
  "packageManager": "bun@1.3.11",
package/setup.sh CHANGED
@@ -17,7 +17,7 @@ fi
17
17
  # AI Assistant Server Access Framework Setup Script
18
18
  # Helps developers set up the framework for their infrastructure
19
19
  #
20
- # Version: 3.39.52
20
+ # Version: 3.39.54
21
21
  #
22
22
  # Quick Install:
23
23
  # npm install -g aidevops && aidevops update (recommended)
@@ -1902,6 +1902,8 @@ _setup_noninteractive_schedulers() {
1902
1902
  # opencode DB archive/VACUUM (GH#25136). Dedicated low-priority scheduler;
1903
1903
  # not tied to pulse preflight cadence.
1904
1904
  _time_step "setup_opencode_db_archive" setup_opencode_db_archive
1905
+ # r922 storage hygiene (GH#35245). Daily owning-cleaner run, Pulse-independent.
1906
+ _time_step "setup_storage_hygiene" setup_storage_hygiene
1905
1907
  # Migrate cron entries to systemd after schedulers are installed (GH#17695 Finding D)
1906
1908
  _time_step "migrate_cron_to_systemd" migrate_cron_to_systemd
1907
1909
  _time_step "$SETUP_STAGE_TABBY" setup_tabby
@@ -1958,6 +1960,7 @@ _setup_post_setup_steps() {
1958
1960
  setup_oauth_token_refresh
1959
1961
  setup_opencode_db_maintenance
1960
1962
  setup_opencode_db_archive
1963
+ setup_storage_hygiene
1961
1964
  # Migrate cron entries to systemd after schedulers are installed (GH#17695 Finding D)
1962
1965
  migrate_cron_to_systemd
1963
1966
  setup_tabby