diff --git a/.bashrc b/.bashrc index 8422c71..98a13c7 100644 --- a/.bashrc +++ b/.bashrc @@ -13,6 +13,7 @@ alias export_esp='. ~/bin/export-esp.sh' alias irb='irb -r $HOME/src/dotfiles/helpers.rb' alias mirb='mirb -r $HOME/src/dotfiles/helpers.rb' alias docker_wayland='docker run -e XDG_RUNTIME_DIR=/tmp -e WAYLAND_DISPLAY=$WAYLAND_DISPLAY -v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/$WAYLAND_DISPLAY' +alias aichat="aichat -s" export SSH_ASKPASS=/usr/bin/ksshaskpass export SSH_ASKPASS_REQUIRE=prefer diff --git a/.luarc.json b/.luarc.json index 841ada9..5c81588 100644 --- a/.luarc.json +++ b/.luarc.json @@ -1,3 +1,3 @@ { - "workspace.checkThirdParty": false + "workspace.checkThirdParty": false } diff --git a/agent b/agent new file mode 100755 index 0000000..ef86d78 --- /dev/null +++ b/agent @@ -0,0 +1,71 @@ +#!/usr/bin/env bash + +workspace="$HOME/ai_workspace" +app="opencode" +rebuild=false + +while [[ $# -gt 0 ]]; do + case "$1" in + -p|--path) + workspace="$(readlink -f "$2")" + shift 2 + ;; + -a|--app) + app="$2" + shift 2 + ;; + --rebuild) + rebuild=true + shift + ;; + *) + echo "Usage: $0 [-p /path/to/workspace] [-a claude|opencode] [--rebuild]" >&2 + exit 1 + ;; + esac +done + +case "$app" in + claude) + image_name="claude-code-local" + npm_pkg="@anthropic-ai/claude-code" + cmd="claude" + extra_volumes=( + -v "$HOME/.claude:/root/.claude" + -v "$HOME/.claude.json:/root/.claude.json" + ) + ;; + opencode) + image_name="opencode-local" + npm_pkg="opencode-ai" + cmd="opencode" + extra_volumes=( + -v "$HOME/.config/opencode:/root/.config/opencode" + -v "$HOME/.local/share/opencode:/root/.local/share/opencode" + -v "$HOME/.local/state/opencode:/root/.local/state/opencode" + ) + ;; + *) + echo "Unknown app '$app'. Choose 'claude' or 'opencode'." >&2 + exit 1 + ;; +esac + +if $rebuild || ! docker image inspect "$image_name" &>/dev/null; then + echo "Building $image_name..." + docker build --pull -t "$image_name" - <&2 - exit 1 - ;; - esac -done - -if $rebuild || ! docker image inspect "$image_name" &>/dev/null; then - echo "Building $image_name..." - docker build --pull -t "$image_name" - <<'EOF' -FROM node:24-bullseye -RUN npm install -g @anthropic-ai/claude-code -WORKDIR /workspace -CMD ["claude"] -EOF -fi - -clear - -docker run -it --rm \ - --name claude-chat \ - -v "$workspace:/workspace" \ - -v "$HOME/.claude:/root/.claude" \ - -v "$HOME/.claude.json:/root/.claude.json" \ - -w /workspace \ - "$image_name"