mirror of
https://github.com/msitarzewski/agency-agents.git
synced 2026-06-11 21:54:57 +03:00
feat: Installer v2 — selective install, interactive TUI, consolidate the install.sh cluster (#567)
* feat: installer v2 — selective install, interactive TUI, consolidate cluster One coherent, dependency-free installer (bash 3.2+, zero deps) that consolidates 7 conflicting install.sh PRs and fixes #532. Selective install (compose freely; empty = everything): - --division / --agent / --agents-file filter across both source tools and the flat converted outputs via a slug-based allow-set (#157, #487) - --list [tools|teams|agents] and --dry-run Install mechanics: - --link symlink vs copy (#233); --path + env-var fallbacks (#216); auto-run convert.sh when integration files are missing (#426); resolve_tool_path dynamic detection (#327); set -e-safe increments (#505) Interactive wizard (pure bash): - Tools -> Teams -> Review, arrow-key nav, space toggle, a/n all/none, live / search, live agent counts, inline OpenCode capacity warning, alt-screen takeover with trap-based Ctrl-C restore, non-TTY fallback #532: installing a subset keeps you under OpenCode's ~119 scanner cap (upstream anomalyco/opencode#27988); installer warns when exceeded; README documents it. New scripts/lib.sh holds shared frontmatter/slug helpers (used by convert.sh too) + ANSI/TUI primitives. Closes #157, #216, #233, #327, #426, #487, #505. Co-Authored-By: kienbui1995 <kienbui1995@users.noreply.github.com> Co-Authored-By: Shiven0504 <Shiven0504@users.noreply.github.com> Co-Authored-By: rounakkumarsingh <rounakkumarsingh@users.noreply.github.com> Co-Authored-By: toukanno <toukanno@users.noreply.github.com> Co-Authored-By: ilyaivasyk <ilyaivasyk@users.noreply.github.com> Co-Authored-By: Jason2031 <Jason2031@users.noreply.github.com> Co-Authored-By: ShaoJiaZhen <ShaoJiaZhen@users.noreply.github.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(installer): robust arrow-key reading (bash 3.2 integer timeouts + SS3) read_key used a fractional -t 0.01 timeout, which bash 3.2 (/bin/bash on macOS) doesn't support — so arrow-key escape bytes ([A/[B) leaked through and were parsed as letter commands (toggling instead of moving). Rewrite to read the sequence byte-by-byte with integer timeouts and handle both CSI ([) and SS3 (O) cursor modes. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(installer): clear-to-end-of-line per row so frames don't bleed draw_frame only cleared below the frame (\033[0J), so when a new screen's lines were shorter than the previous screen's, the old tails (tool paths, warnings) bled through on the right. Now erase-to-eol (\033[K) on every line before the screen-clear. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * feat(installer): 2-column grid for Tools/Teams on the Review screen Replaces the wrapping space-joined 'Tools:'/'Teams:' lines with a compact column-major 2-column grid (each item on its own line, like the selectors), so long rosters stay readable and on-screen instead of wrapping. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * feat(installer): Review layout — space after Teams, warning below Install Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * feat(installer): consistent screen layout across all 3 screens Standard vertical rhythm everywhere: pager -> description -> content -> selection summary -> navigation -> warnings. Splits the selector footer into separate summary/nav/warning lines (SEL_SUMMARY_FN/SEL_NAV/ SEL_WARN_FN) and reorders the Review screen to match. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: kienbui1995 <kienbui1995@users.noreply.github.com> Co-authored-by: Shiven0504 <Shiven0504@users.noreply.github.com> Co-authored-by: rounakkumarsingh <rounakkumarsingh@users.noreply.github.com> Co-authored-by: toukanno <toukanno@users.noreply.github.com> Co-authored-by: ilyaivasyk <ilyaivasyk@users.noreply.github.com> Co-authored-by: Jason2031 <Jason2031@users.noreply.github.com> Co-authored-by: ShaoJiaZhen <ShaoJiaZhen@users.noreply.github.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
committed by
GitHub
parent
3fd9542983
commit
f541d07bb3
+5
-23
@@ -62,6 +62,10 @@ REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
||||
OUT_DIR="$REPO_ROOT/integrations"
|
||||
TODAY="$(date +%Y-%m-%d)"
|
||||
|
||||
# Shared helpers (get_field, get_body, slugify, ...)
|
||||
# shellcheck source=lib.sh
|
||||
. "$SCRIPT_DIR/lib.sh"
|
||||
|
||||
AGENT_DIRS=(
|
||||
academic design engineering finance game-development marketing paid-media product project-management
|
||||
sales security spatial-computing specialized strategy support testing
|
||||
@@ -81,29 +85,7 @@ parallel_jobs_default() {
|
||||
echo 4
|
||||
}
|
||||
|
||||
# --- Frontmatter helpers ---
|
||||
|
||||
# Extract a single field value from YAML frontmatter block.
|
||||
# Usage: get_field <field> <file>
|
||||
get_field() {
|
||||
local field="$1" file="$2"
|
||||
awk -v f="$field" '
|
||||
/^---$/ { fm++; next }
|
||||
fm == 1 && $0 ~ "^" f ": " { sub("^" f ": ", ""); print; exit }
|
||||
' "$file"
|
||||
}
|
||||
|
||||
# Strip the leading frontmatter block and return only the body.
|
||||
# Usage: get_body <file>
|
||||
get_body() {
|
||||
awk 'BEGIN{fm=0} /^---$/{fm++; next} fm>=2{print}' "$1"
|
||||
}
|
||||
|
||||
# Convert a human-readable agent name to a lowercase kebab-case slug.
|
||||
# "Frontend Developer" → "frontend-developer"
|
||||
slugify() {
|
||||
echo "$1" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g' | sed 's/--*/-/g' | sed 's/^-//;s/-$//'
|
||||
}
|
||||
# --- Frontmatter helpers: get_field / get_body / slugify now live in lib.sh ---
|
||||
|
||||
# Escape a value for a TOML basic string, including control characters that
|
||||
# cannot appear raw in TOML source.
|
||||
|
||||
Reference in New Issue
Block a user