aidevops 3.32.287 → 3.32.288
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 +3 -3
- package/VERSION +1 -1
- package/aidevops.sh +34 -9
- package/package.json +1 -1
- package/setup.sh +1 -1
package/README.md
CHANGED
|
@@ -60,7 +60,7 @@ The result: an AI operations platform that manages projects across every busines
|
|
|
60
60
|
[](https://github.com/marcusquinn)
|
|
61
61
|
|
|
62
62
|
<!-- Release & Version Info -->
|
|
63
|
-
[](https://github.com/marcusquinn/aidevops/releases)
|
|
64
64
|
[](https://www.npmjs.com/package/aidevops)
|
|
65
65
|
[](https://github.com/marcusquinn/homebrew-tap)
|
|
66
66
|
[](https://github.com/marcusquinn/aidevops)
|
|
@@ -219,9 +219,9 @@ sudo -k /usr/bin/python3 -I -B /etc/aidevops/source-access/source-access-helper.
|
|
|
219
219
|
|
|
220
220
|
Running `aidevops security` with no arguments is the single command that covers everything — user security posture, plaintext secret detection, supply chain IoC scanning, and active advisories.
|
|
221
221
|
|
|
222
|
-
When a read guard identifies only a low-confidence source-code basename match, it emits a scoped request. A maintainer can run the displayed root-broker approval command. Approvals are bound to the exact runtime session, user, Git-tracked regular source path, approved content digest, and guard reason; they expire within 12 hours and never override private-key, environment-file, credential-store, hard-link, symlink, changed-content, or untracked-file denials.
|
|
222
|
+
When a read guard identifies only a low-confidence source-code basename match, it emits a scoped request. A maintainer can run the displayed root-broker approval command. Approvals are bound to the exact runtime session, user, Git-tracked regular source path, approved content digest, and guard reason; they expire within 12 hours and never override private-key, environment-file, credential-store, hard-link, symlink, changed-content, cross-worktree, or untracked-file denials. Repeating `--path` while creating a request produces one exact, repository-bound manifest that a human can approve once. The plugin redirects each approved read to its root-controlled immutable snapshot; revocation removes the receipt and every snapshot.
|
|
223
223
|
|
|
224
|
-
`
|
|
224
|
+
Routine `aidevops update` never requests sudo or launches an editor. When the root-owned broker differs from the active release, update prints a machine-readable deferred action; a human runs `aidevops setup --scope source-access` in an attached terminal. Scoped setup verifies the published signed tag, invalidates inherited sudo, asks for one confirmation, has root fetch the exact reviewed broker bytes directly over TLS, compares those downloads byte-for-byte with the signed Git objects, creates a dedicated root-only signing key under `/etc/aidevops/source-access`, and invalidates sudo again. It never executes or copies the user-writable aidevops deployment as root. The plugin rejects approvals whenever installed broker bytes differ from the active release.
|
|
225
225
|
|
|
226
226
|
**Security advisories** are delivered via `aidevops update` and shown in the session greeting until dismissed. The scanner never exposes secret values — only file locations and key names. All remediation commands should be run in a separate terminal, not inside AI chat sessions.
|
|
227
227
|
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
3.32.
|
|
1
|
+
3.32.288
|
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.32.
|
|
8
|
+
# Version: 3.32.288
|
|
9
9
|
|
|
10
10
|
set -euo pipefail
|
|
11
11
|
|
|
@@ -286,14 +286,28 @@ _run_update_setup_transaction() {
|
|
|
286
286
|
}
|
|
287
287
|
|
|
288
288
|
_run_update_source_access_reconciliation() {
|
|
289
|
-
local
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
[[ "$
|
|
294
|
-
|
|
295
|
-
|
|
289
|
+
local broker_dir="/etc/aidevops/source-access"
|
|
290
|
+
local deployed_scripts="${_AIDEVOPS_REAL_HOME}/.aidevops/agents/scripts"
|
|
291
|
+
local broker_current=true
|
|
292
|
+
|
|
293
|
+
[[ -f "$deployed_scripts/source_access_core.py" ]] || return 0
|
|
294
|
+
[[ -f "$deployed_scripts/source-access-helper.py" ]] || return 0
|
|
295
|
+
[[ -f "$broker_dir/source_access_core.py" && ! -L "$broker_dir/source_access_core.py" ]] || broker_current=false
|
|
296
|
+
[[ -f "$broker_dir/source-access-helper.py" && ! -L "$broker_dir/source-access-helper.py" ]] || broker_current=false
|
|
297
|
+
[[ -f "$broker_dir/source-access.pub" && ! -L "$broker_dir/source-access.pub" ]] || broker_current=false
|
|
298
|
+
[[ -f "$broker_dir/source-access.trust" && ! -L "$broker_dir/source-access.trust" ]] || broker_current=false
|
|
299
|
+
[[ ! -w "$broker_dir" ]] || broker_current=false
|
|
300
|
+
[[ ! -w "$broker_dir/source_access_core.py" ]] || broker_current=false
|
|
301
|
+
[[ ! -w "$broker_dir/source-access-helper.py" ]] || broker_current=false
|
|
302
|
+
[[ ! -w "$broker_dir/source-access.pub" ]] || broker_current=false
|
|
303
|
+
[[ ! -w "$broker_dir/source-access.trust" ]] || broker_current=false
|
|
304
|
+
if [[ "$broker_current" == "true" ]] &&
|
|
305
|
+
/usr/bin/cmp -s "$deployed_scripts/source_access_core.py" "$broker_dir/source_access_core.py" &&
|
|
306
|
+
/usr/bin/cmp -s "$deployed_scripts/source-access-helper.py" "$broker_dir/source-access-helper.py"; then
|
|
307
|
+
return 0
|
|
296
308
|
fi
|
|
309
|
+
|
|
310
|
+
print_warning "AIDEVOPS_DEFERRED_ACTION action=source-access-reconcile command='aidevops setup --scope source-access'"
|
|
297
311
|
return 0
|
|
298
312
|
}
|
|
299
313
|
|
|
@@ -308,7 +322,7 @@ _update_render_changelog() {
|
|
|
308
322
|
fi
|
|
309
323
|
echo ""
|
|
310
324
|
print_info "Changes since $current_version ($total_commits commits):"
|
|
311
|
-
git -C "$INSTALL_DIR" log --oneline --max-count=20 "$old_hash..$new_hash" || true
|
|
325
|
+
git -C "$INSTALL_DIR" --no-pager log --oneline --max-count=20 "$old_hash..$new_hash" || true
|
|
312
326
|
if [[ "$total_commits" -gt 20 ]]; then
|
|
313
327
|
echo " ... and more (run 'git log --oneline' in $INSTALL_DIR for full list)"
|
|
314
328
|
fi
|
|
@@ -330,6 +344,17 @@ cmd_update_help() {
|
|
|
330
344
|
}
|
|
331
345
|
|
|
332
346
|
cmd_update() {
|
|
347
|
+
# Update is operational, not compositional. Do not let any reachable Git,
|
|
348
|
+
# package-manager, migration, or setup subprocess inherit an editor or pager.
|
|
349
|
+
# Local declarations restore the caller's environment when this function exits.
|
|
350
|
+
local EDITOR=/usr/bin/false
|
|
351
|
+
local VISUAL=/usr/bin/false
|
|
352
|
+
local GIT_EDITOR=/usr/bin/false
|
|
353
|
+
local GIT_SEQUENCE_EDITOR=/usr/bin/false
|
|
354
|
+
local GIT_PAGER=cat
|
|
355
|
+
local PAGER=cat
|
|
356
|
+
local GIT_TERMINAL_PROMPT=0
|
|
357
|
+
export EDITOR VISUAL GIT_EDITOR GIT_SEQUENCE_EDITOR GIT_PAGER PAGER GIT_TERMINAL_PROMPT
|
|
333
358
|
local skip_project_sync=false
|
|
334
359
|
local reconcile_repo_verify=false
|
|
335
360
|
local update_output_mode="${AIDEVOPS_OUTPUT_MODE:-auto}"
|
package/package.json
CHANGED
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.32.
|
|
20
|
+
# Version: 3.32.288
|
|
21
21
|
#
|
|
22
22
|
# Quick Install:
|
|
23
23
|
# npm install -g aidevops && aidevops update (recommended)
|