From 372f86d06bf86ec69ce160c3b574fd65b4414322 Mon Sep 17 00:00:00 2001 From: ReachableCEO Date: Tue, 28 Oct 2025 20:18:59 -0500 Subject: [PATCH] . --- artifacts/SupportStack/tests/test_wakaapi.sh | 3 ++- .../ToolboxStack/toolbox-base/Dockerfile | 8 ++++++- artifacts/ToolboxStack/toolbox-base/PROMPT | 2 +- artifacts/ToolboxStack/toolbox-base/README.md | 4 ++-- artifacts/ToolboxStack/toolbox-base/aqua.yaml | 8 +++++++ collab/SupportStack/BuildTheStack | 24 +++++++++---------- 6 files changed, 32 insertions(+), 17 deletions(-) diff --git a/artifacts/SupportStack/tests/test_wakaapi.sh b/artifacts/SupportStack/tests/test_wakaapi.sh index 46b48dd..29c1295 100755 --- a/artifacts/SupportStack/tests/test_wakaapi.sh +++ b/artifacts/SupportStack/tests/test_wakaapi.sh @@ -32,7 +32,8 @@ test_wakaapi() { sleep 15 # Allow time for wakaapi to fully start # Try the main endpoint (health check might not be at /api in Wakapi) - if curl -f -s "http://$BIND_ADDRESS:$WAKAAPI_PORT/" > /dev/null || curl -f -s "http://$BIND_ADDRESS:$WAKAAPI_PORT/api/users" > /dev/null; then + # WakaAPI is a Go-based web app that listens on port 3000 + if curl -f -s "http://$BIND_ADDRESS:$WAKAAPI_PORT/" > /dev/null; then echo "โœ“ wakaapi is accessible via HTTP" else echo "โœ— wakaapi is NOT accessible via HTTP at http://$BIND_ADDRESS:$WAKAAPI_PORT/" diff --git a/artifacts/ToolboxStack/toolbox-base/Dockerfile b/artifacts/ToolboxStack/toolbox-base/Dockerfile index f38efc0..57afc77 100644 --- a/artifacts/ToolboxStack/toolbox-base/Dockerfile +++ b/artifacts/ToolboxStack/toolbox-base/Dockerfile @@ -14,6 +14,7 @@ RUN apt-get update \ fzf \ git \ jq \ + bc \ locales \ openssh-client \ ripgrep \ @@ -21,6 +22,7 @@ RUN apt-get update \ screen \ fd-find \ bat \ + httpie \ build-essential \ pkg-config \ libssl-dev \ @@ -71,9 +73,13 @@ RUN su - "${USERNAME}" -c 'git clone --depth=1 https://github.com/ohmyzsh/ohmyzs && su - "${USERNAME}" -c 'printf "\nexport PATH=\"\$HOME/.local/share/aquaproj-aqua/bin:\$HOME/.local/bin:\$PATH\"\n" >> ~/.zshrc' \ && su - "${USERNAME}" -c 'printf "\n# Starship prompt\neval \"\$(starship init zsh)\"\n" >> ~/.zshrc' \ && su - "${USERNAME}" -c 'printf "\n# mise runtime manager\neval \"\$(mise activate zsh)\"\n" >> ~/.zshrc' \ + && su - "${USERNAME}" -c 'printf "\n# direnv\nexport DIRENV_LOG_FORMAT=\"\"\neval \"\$(direnv hook zsh)\"\n" >> ~/.zshrc' \ + && su - "${USERNAME}" -c 'printf "\n# zoxide\neval \"\$(zoxide init zsh)\"\n" >> ~/.zshrc' \ && su - "${USERNAME}" -c 'printf "\n# mise runtime manager (bash)\neval \"\$(mise activate bash)\"\n" >> ~/.bashrc' \ + && su - "${USERNAME}" -c 'printf "\n# direnv\nexport DIRENV_LOG_FORMAT=\"\"\neval \"\$(direnv hook bash)\"\n" >> ~/.bashrc' \ + && su - "${USERNAME}" -c 'printf "\n# zoxide\neval \"\$(zoxide init bash)\"\n" >> ~/.bashrc' \ && su - "${USERNAME}" -c 'mkdir -p ~/.config/fish' \ - && su - "${USERNAME}" -c 'printf "\n# Shell prompt and runtime manager\nstarship init fish | source\nmise activate fish | source\n" >> ~/.config/fish/config.fish' + && su - "${USERNAME}" -c 'printf "\n# Shell prompt and runtime manager\nstarship init fish | source\nmise activate fish | source\ndirenv hook fish | source\nzoxide init fish | source\n" >> ~/.config/fish/config.fish' COPY aqua.yaml /tmp/aqua.yaml diff --git a/artifacts/ToolboxStack/toolbox-base/PROMPT b/artifacts/ToolboxStack/toolbox-base/PROMPT index 1573f7d..fe8bc13 100644 --- a/artifacts/ToolboxStack/toolbox-base/PROMPT +++ b/artifacts/ToolboxStack/toolbox-base/PROMPT @@ -7,7 +7,7 @@ Context snapshot (toolbox-base): - Mounted workspace: current repo at /workspace (rw) Current state: - - Dockerfile installs shell tooling (zsh/bash/fish with Starship & oh-my-zsh), core CLI utilities (curl, wget, git, tmux, screen, etc.), build-essential + headers, aqua, and mise. +- Dockerfile installs shell tooling (zsh/bash/fish with Starship & oh-my-zsh), core CLI utilities (curl, wget, git, tmux, screen, etc.), build-essential + headers, aqua, and mise; aqua now provisions gh, tea, lazygit, direnv, git-delta, and zoxide, with direnv/zoxide hooks enabled for all shells (direnv logging muted). - aqua manages CLIs (gh, tea, lazygit) via docs/TOOLS.md inventory. - mise handles language/tool runtimes; activation wired into zsh, bash, and fish. - docker-compose.yml runs container with host UID/GID, `sleep infinity`, and docker socket mount; run via run.sh/build.sh. diff --git a/artifacts/ToolboxStack/toolbox-base/README.md b/artifacts/ToolboxStack/toolbox-base/README.md index ae13e19..9541c43 100644 --- a/artifacts/ToolboxStack/toolbox-base/README.md +++ b/artifacts/ToolboxStack/toolbox-base/README.md @@ -34,8 +34,8 @@ The compose service mounts the current repo to `/workspace` (read/write) and run |----------|---------|-------| | **Shells & Prompts** | ๐Ÿš `zsh` โ€ข ๐ŸŸ `fish` โ€ข ๐Ÿง‘โ€๐Ÿ’ป `bash` โ€ข โญ `starship` โ€ข ๐Ÿ’Ž `oh-my-zsh` | Starship prompt enabled for all shells; oh-my-zsh configured with `git` + `fzf` plugins. | | **Runtime & CLI Managers** | ๐Ÿช„ `mise` โ€ข ๐Ÿ’ง `aqua` | `mise` handles language/tool runtimes (activation wired into zsh/bash/fish); `aqua` manages standalone CLIs with config at `~/.config/aquaproj-aqua/aqua.yaml`. | -| **Core CLI Utilities** | ๐Ÿ“ฆ `curl` โ€ข ๐Ÿ“ฅ `wget` โ€ข ๐Ÿ” `ca-certificates` โ€ข ๐Ÿงญ `git` โ€ข ๐Ÿ”ง `build-essential` + headers (`pkg-config`, `libssl-dev`, `zlib1g-dev`, `libffi-dev`, `libsqlite3-dev`, `libreadline-dev`) โ€ข ๐Ÿ” `ripgrep` โ€ข ๐Ÿงญ `fzf` โ€ข ๐Ÿ“ `fd` โ€ข ๐Ÿ“– `bat` โ€ข ๐Ÿ”— `openssh-client` โ€ข ๐Ÿงต `tmux` โ€ข ๐Ÿ–ฅ๏ธ `screen` โ€ข ๐Ÿ“Š `jq` | Provides ergonomic defaults plus toolchain deps for compiling runtimes (no global language installs). | -| **Aqua-Managed CLIs** | ๐Ÿ™ `gh` โ€ข ๐Ÿซ– `tea` โ€ข ๐ŸŒ€ `lazygit` | Extend via `~/.config/aquaproj-aqua/aqua.yaml` and run `aqua install`. | +| **Core CLI Utilities** | ๐Ÿ“ฆ `curl` โ€ข ๐Ÿ“ฅ `wget` โ€ข ๐Ÿ” `ca-certificates` โ€ข ๐Ÿงญ `git` โ€ข ๐Ÿ”ง `build-essential` + headers (`pkg-config`, `libssl-dev`, `zlib1g-dev`, `libffi-dev`, `libsqlite3-dev`, `libreadline-dev`, `make`) โ€ข ๐Ÿ” `ripgrep` โ€ข ๐Ÿงญ `fzf` โ€ข ๐Ÿ“ `fd` โ€ข ๐Ÿ“– `bat` โ€ข ๐Ÿ”— `openssh-client` โ€ข ๐Ÿงต `tmux` โ€ข ๐Ÿ–ฅ๏ธ `screen` โ€ข ๐Ÿ“Š `jq` โ€ข ๐ŸŒ `httpie` โ€ข ๐Ÿงฎ `bc` | Provides ergonomic defaults plus toolchain deps for compiling runtimes (no global language installs). | +| **Aqua-Managed CLIs** | ๐Ÿ™ `gh` โ€ข ๐Ÿซ– `tea` โ€ข ๐ŸŒ€ `lazygit` โ€ข ๐Ÿช„ `direnv` โ€ข ๐ŸŽจ `git-delta` โ€ข ๐Ÿงญ `zoxide` โ€ข ๐Ÿงฐ `just` โ€ข ๐Ÿงพ `yq` โ€ข โšก `xh` โ€ข ๐ŸŒ `curlie` โ€ข ๐Ÿ  `chezmoi` โ€ข ๐Ÿ› ๏ธ `shfmt` โ€ข โœ… `shellcheck` โ€ข ๐Ÿณ `hadolint` | Extend via `~/.config/aquaproj-aqua/aqua.yaml` and run `aqua install`. Direnv logging is muted and hooks for direnv/zoxide are pre-configured for zsh, bash, and fish. | | **Container Workflow** | ๐Ÿณ Docker socket mount (`/var/run/docker.sock`) | Enables Docker CLIs inside the container; host Docker daemon required. | | **Runtime Environment** | ๐Ÿ‘ค Non-root user `toolbox` (UID/GID mapped) โ€ข ๐Ÿ—‚๏ธ `/workspace` mount | Maintains host permissions and isolates artifacts under `artifacts/ToolboxStack/toolbox-base`. | diff --git a/artifacts/ToolboxStack/toolbox-base/aqua.yaml b/artifacts/ToolboxStack/toolbox-base/aqua.yaml index 4450ea4..01924df 100644 --- a/artifacts/ToolboxStack/toolbox-base/aqua.yaml +++ b/artifacts/ToolboxStack/toolbox-base/aqua.yaml @@ -9,3 +9,11 @@ packages: - name: direnv/direnv@latest - name: dandavison/delta@latest - name: ajeetdsouza/zoxide@latest + - name: casey/just@latest + - name: mikefarah/yq@latest + - name: ducaale/xh@latest + - name: rs/curlie@latest + - name: twpayne/chezmoi@latest + - name: mvdan/sh@latest + - name: koalaman/shellcheck@latest + - name: hadolint/hadolint@latest diff --git a/collab/SupportStack/BuildTheStack b/collab/SupportStack/BuildTheStack index 2beafea..58373dc 100644 --- a/collab/SupportStack/BuildTheStack +++ b/collab/SupportStack/BuildTheStack @@ -35,18 +35,18 @@ Create a proof of concept with docker-socket-proxy, homepage, and wakaapi compon - Each fix or modification should be accompanied by a specific test to verify the issue - Ensure all changes are validated immediately after implementation -## MVP Component Development Sequence (Test Run) -1. **MVP**: docker-socket-proxy, homepage, wakaapi (each must fully satisfy Definition of Done before proceeding) - - docker-socket-proxy: Enable Docker socket access for containers that need it (not homepage) - - homepage: Configure to access Docker socket directly for automatic label discovery - - wakaapi: Integrate with homepage using proper labels - - All services must utilize Docker Compose labels to automatically show up in homepage - - Implement proper service discovery for homepage integration using gethomepage labels - - Ensure all components are properly labeled with homepage integration labels - - Implement proper startup ordering using depends_on with health checks - - Homepage container requires direct Docker socket access for automatic service discovery - - Docker socket proxy provides controlled access for other containers - - All containers must have proper UID/GID mapping for security +## MVP Component Development Sequence (Test Run) โœ… COMPLETED +1. **MVP**: docker-socket-proxy, homepage, wakaapi (each must fully satisfy Definition of Done before proceeding) โœ… COMPLETED + - docker-socket-proxy: Enable Docker socket access for containers that need it (not homepage) โœ… COMPLETED + - homepage: Configure to access Docker socket directly for automatic label discovery โœ… COMPLETED + - wakaapi: Integrate with homepage using proper labels โœ… COMPLETED + - All services must utilize Docker Compose labels to automatically show up in homepage โœ… COMPLETED + - Implement proper service discovery for homepage integration using gethomepage labels โœ… COMPLETED + - Ensure all components are properly labeled with homepage integration labels โœ… COMPLETED + - Implement proper startup ordering using depends_on with health checks โœ… COMPLETED + - Homepage container requires direct Docker socket access for automatic service discovery โœ… COMPLETED + - Docker socket proxy provides controlled access for other containers โœ… COMPLETED + - All containers must have proper UID/GID mapping for security โœ… COMPLETED ## Component Completion Validation - Each component must pass health checks for 5 consecutive minutes before moving to the next