glidercli 0.1.5 → 0.3.0
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 +70 -9
- package/bin/glider.js +785 -57
- package/lib/bcdp.js +482 -0
- package/lib/beval.js +78 -0
- package/lib/bexplore.js +815 -0
- package/lib/bextract.js +236 -0
- package/lib/bfetch.js +274 -0
- package/lib/bserve.js +347 -0
- package/lib/bspawn.js +154 -0
- package/lib/bwindow.js +335 -0
- package/lib/cdp-direct.js +305 -0
- package/lib/glider-daemon.sh +31 -0
- package/package.json +8 -2
- package/.git-personal-enforced +0 -4
- package/.github/hooks/post-checkout +0 -24
- package/.github/hooks/post-commit +0 -13
- package/.github/hooks/pre-commit +0 -30
- package/.github/hooks/pre-push +0 -13
- package/.github/scripts/health-check.sh +0 -127
- package/.github/scripts/setup.sh +0 -19
- package/.github/workflows/release.yml +0 -19
- package/assets/icons/.gitkeep +0 -0
- package/assets/icons/claude.webp +0 -0
- package/assets/icons/glider-blue-squircle.webp +0 -0
- package/assets/icons/ralph-wiggum.webp +0 -0
- package/repo.config.json +0 -31
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# Auto-prompt to set email on checkout if not set correctly
|
|
3
|
-
# If allowed_emails is empty, skip check
|
|
4
|
-
|
|
5
|
-
ROOT="$(git rev-parse --show-toplevel 2>/dev/null)"
|
|
6
|
-
CONFIG="$ROOT/repo.config.json"
|
|
7
|
-
EMAIL=$(git config user.email 2>/dev/null)
|
|
8
|
-
|
|
9
|
-
# Read allowed emails from config
|
|
10
|
-
if [[ -f "$CONFIG" ]] && command -v jq &>/dev/null; then
|
|
11
|
-
ALLOWED=$(jq -r '.allowed_emails[]' "$CONFIG" 2>/dev/null)
|
|
12
|
-
else
|
|
13
|
-
exit 0
|
|
14
|
-
fi
|
|
15
|
-
|
|
16
|
-
# If no emails configured, skip check
|
|
17
|
-
[[ -z "$ALLOWED" ]] && exit 0
|
|
18
|
-
|
|
19
|
-
echo "$ALLOWED" | grep -qx "$EMAIL" && exit 0
|
|
20
|
-
|
|
21
|
-
echo ""
|
|
22
|
-
echo "⚠ Git email not set. Pick one from repo.config.json:"
|
|
23
|
-
echo "$ALLOWED" | sed 's/^/ git config user.email '\''/' | sed 's/$/'\''/'
|
|
24
|
-
echo ""
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# post-commit hook - auto push tags after npm version creates them
|
|
3
|
-
# npm version patch/minor/major creates a commit AND a tag
|
|
4
|
-
|
|
5
|
-
# Check if the last commit was from npm version (has version in message)
|
|
6
|
-
LAST_MSG=$(git log -1 --pretty=%B)
|
|
7
|
-
|
|
8
|
-
if [[ "$LAST_MSG" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
|
9
|
-
echo "📦 Detected npm version commit: $LAST_MSG"
|
|
10
|
-
echo "🏷️ Pushing tag v$LAST_MSG..."
|
|
11
|
-
git push --tags 2>/dev/null &
|
|
12
|
-
echo "✓ Tag push triggered (background)"
|
|
13
|
-
fi
|
package/.github/hooks/pre-commit
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# Blocks commits if email not in allowed list (reads from repo.config.json)
|
|
3
|
-
# If allowed_emails is empty, skip check (user hasn't configured yet)
|
|
4
|
-
|
|
5
|
-
ROOT="$(git rev-parse --show-toplevel 2>/dev/null)"
|
|
6
|
-
CONFIG="$ROOT/repo.config.json"
|
|
7
|
-
EMAIL=$(git config user.email)
|
|
8
|
-
|
|
9
|
-
# Read allowed emails from config
|
|
10
|
-
if [[ -f "$CONFIG" ]] && command -v jq &>/dev/null; then
|
|
11
|
-
ALLOWED=$(jq -r '.allowed_emails[]' "$CONFIG" 2>/dev/null)
|
|
12
|
-
else
|
|
13
|
-
# No config or jq - skip check
|
|
14
|
-
exit 0
|
|
15
|
-
fi
|
|
16
|
-
|
|
17
|
-
# If no emails configured, skip check
|
|
18
|
-
[[ -z "$ALLOWED" ]] && exit 0
|
|
19
|
-
|
|
20
|
-
echo "$ALLOWED" | grep -qx "$EMAIL" && exit 0
|
|
21
|
-
|
|
22
|
-
echo ""
|
|
23
|
-
echo "❌ BLOCKED: $EMAIL not allowed"
|
|
24
|
-
echo ""
|
|
25
|
-
echo "Allowed emails (from repo.config.json):"
|
|
26
|
-
echo "$ALLOWED" | sed 's/^/ /'
|
|
27
|
-
echo ""
|
|
28
|
-
echo "Fix: git config user.email '<one of the above>'"
|
|
29
|
-
echo ""
|
|
30
|
-
exit 1
|
package/.github/hooks/pre-push
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# pre-push hook - runs health check before push
|
|
3
|
-
# Blocks push if large files or embedded repos detected
|
|
4
|
-
|
|
5
|
-
ROOT="$(git rev-parse --show-toplevel 2>/dev/null)"
|
|
6
|
-
HEALTH_SCRIPT="$ROOT/.github/scripts/health-check.sh"
|
|
7
|
-
|
|
8
|
-
if [[ -x "$HEALTH_SCRIPT" ]]; then
|
|
9
|
-
"$HEALTH_SCRIPT"
|
|
10
|
-
exit $?
|
|
11
|
-
fi
|
|
12
|
-
|
|
13
|
-
exit 0
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# health-check.sh - Git health check before commit/push
|
|
3
|
-
# Checks: large files (>90MB), embedded git repos
|
|
4
|
-
# Run: .github/scripts/health-check.sh [size_mb]
|
|
5
|
-
|
|
6
|
-
ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
|
|
7
|
-
SIZE_MB="${1:-90}"
|
|
8
|
-
LIMIT=$((SIZE_MB * 1024 * 1024))
|
|
9
|
-
|
|
10
|
-
cd "$ROOT" || exit 1
|
|
11
|
-
|
|
12
|
-
echo "🏥 Git Health Check: $ROOT"
|
|
13
|
-
echo "==================="
|
|
14
|
-
echo ""
|
|
15
|
-
|
|
16
|
-
ISSUES=0
|
|
17
|
-
|
|
18
|
-
# ============================================================================
|
|
19
|
-
# CHECK 1: Large files (>90MB default)
|
|
20
|
-
# ============================================================================
|
|
21
|
-
echo "🔍 Checking for files > ${SIZE_MB}MB..."
|
|
22
|
-
echo ""
|
|
23
|
-
|
|
24
|
-
echo "=== UNSTAGED/UNTRACKED ==="
|
|
25
|
-
while IFS= read -r line; do
|
|
26
|
-
[[ -z "$line" ]] && continue
|
|
27
|
-
file="${line:3}"
|
|
28
|
-
# Handle renames
|
|
29
|
-
[[ "$line" == R* ]] && file="${file##* -> }"
|
|
30
|
-
if [[ -f "$file" ]]; then
|
|
31
|
-
fsize=$(stat -f%z "$file" 2>/dev/null || stat -c%s "$file" 2>/dev/null || echo "0")
|
|
32
|
-
if [[ "$fsize" -gt "$LIMIT" ]]; then
|
|
33
|
-
size_human=$((fsize / 1024 / 1024))
|
|
34
|
-
echo " 🔴 $file (${size_human}MB)"
|
|
35
|
-
ISSUES=1
|
|
36
|
-
fi
|
|
37
|
-
fi
|
|
38
|
-
done < <(git status --porcelain 2>/dev/null)
|
|
39
|
-
|
|
40
|
-
echo ""
|
|
41
|
-
echo "=== STAGED ==="
|
|
42
|
-
while IFS= read -r file; do
|
|
43
|
-
[[ -z "$file" ]] && continue
|
|
44
|
-
if [[ -f "$file" ]]; then
|
|
45
|
-
fsize=$(stat -f%z "$file" 2>/dev/null || stat -c%s "$file" 2>/dev/null || echo "0")
|
|
46
|
-
if [[ "$fsize" -gt "$LIMIT" ]]; then
|
|
47
|
-
size_human=$((fsize / 1024 / 1024))
|
|
48
|
-
echo " 🔴 $file (${size_human}MB)"
|
|
49
|
-
ISSUES=1
|
|
50
|
-
fi
|
|
51
|
-
fi
|
|
52
|
-
done < <(git diff --cached --name-only 2>/dev/null)
|
|
53
|
-
|
|
54
|
-
echo ""
|
|
55
|
-
echo "=== COMMITTED (last 10) ==="
|
|
56
|
-
while IFS= read -r file; do
|
|
57
|
-
[[ -z "$file" ]] && continue
|
|
58
|
-
if [[ -f "$file" ]]; then
|
|
59
|
-
fsize=$(stat -f%z "$file" 2>/dev/null || stat -c%s "$file" 2>/dev/null || echo "0")
|
|
60
|
-
if [[ "$fsize" -gt "$LIMIT" ]]; then
|
|
61
|
-
size_human=$((fsize / 1024 / 1024))
|
|
62
|
-
echo " 🔴 $file (${size_human}MB)"
|
|
63
|
-
ISSUES=1
|
|
64
|
-
fi
|
|
65
|
-
fi
|
|
66
|
-
done < <(git log --oneline -10 --diff-filter=A --name-only --pretty=format:"" 2>/dev/null | sort -u)
|
|
67
|
-
|
|
68
|
-
if [[ $ISSUES -eq 0 ]]; then
|
|
69
|
-
echo " 🟢 No large files"
|
|
70
|
-
fi
|
|
71
|
-
|
|
72
|
-
echo ""
|
|
73
|
-
|
|
74
|
-
# ============================================================================
|
|
75
|
-
# CHECK 2: Embedded git repos
|
|
76
|
-
# ============================================================================
|
|
77
|
-
echo "🔍 Checking for embedded git repos..."
|
|
78
|
-
echo ""
|
|
79
|
-
|
|
80
|
-
ROOT_GIT="$ROOT/.git"
|
|
81
|
-
EMBEDDED=()
|
|
82
|
-
|
|
83
|
-
while IFS= read -r git_dir; do
|
|
84
|
-
[[ -z "$git_dir" ]] && continue
|
|
85
|
-
[[ "$git_dir" == "$ROOT_GIT" ]] && continue
|
|
86
|
-
|
|
87
|
-
repo_dir="${git_dir%/.git}"
|
|
88
|
-
relative="${repo_dir#$ROOT/}"
|
|
89
|
-
|
|
90
|
-
# Check if tracked or not ignored
|
|
91
|
-
is_tracked=false
|
|
92
|
-
git ls-files --cached "$relative" 2>/dev/null | grep -q . && is_tracked=true
|
|
93
|
-
|
|
94
|
-
is_ignored=false
|
|
95
|
-
git check-ignore -q "$relative" 2>/dev/null && is_ignored=true
|
|
96
|
-
|
|
97
|
-
if [[ "$is_tracked" == "true" ]]; then
|
|
98
|
-
echo " 🔴 $relative (TRACKED - needs removal)"
|
|
99
|
-
EMBEDDED+=("$relative")
|
|
100
|
-
ISSUES=1
|
|
101
|
-
elif [[ "$is_ignored" == "false" ]]; then
|
|
102
|
-
echo " 🟡 $relative (not ignored - add to .gitignore)"
|
|
103
|
-
EMBEDDED+=("$relative")
|
|
104
|
-
ISSUES=1
|
|
105
|
-
fi
|
|
106
|
-
done < <(find "$ROOT" -type d -name ".git" 2>/dev/null | sort)
|
|
107
|
-
|
|
108
|
-
if [[ ${#EMBEDDED[@]} -eq 0 ]]; then
|
|
109
|
-
echo " 🟢 No embedded repos"
|
|
110
|
-
else
|
|
111
|
-
echo ""
|
|
112
|
-
echo "Fix: Add to .gitignore:"
|
|
113
|
-
for repo in "${EMBEDDED[@]}"; do
|
|
114
|
-
echo " $repo/"
|
|
115
|
-
done
|
|
116
|
-
fi
|
|
117
|
-
|
|
118
|
-
echo ""
|
|
119
|
-
echo "==================="
|
|
120
|
-
|
|
121
|
-
if [[ $ISSUES -eq 0 ]]; then
|
|
122
|
-
echo "🟢 All checks passed"
|
|
123
|
-
exit 0
|
|
124
|
-
else
|
|
125
|
-
echo "🔴 Issues found - fix before pushing"
|
|
126
|
-
exit 1
|
|
127
|
-
fi
|
package/.github/scripts/setup.sh
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# setup.sh - run after cloning
|
|
3
|
-
# Installs hooks and prompts for email config
|
|
4
|
-
|
|
5
|
-
ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
|
6
|
-
cd "$ROOT"
|
|
7
|
-
|
|
8
|
-
# 1. Install hooks
|
|
9
|
-
mkdir -p .git/hooks
|
|
10
|
-
cp .github/hooks/* .git/hooks/ 2>/dev/null
|
|
11
|
-
chmod +x .git/hooks/* 2>/dev/null
|
|
12
|
-
echo "✓ Hooks installed"
|
|
13
|
-
|
|
14
|
-
# 2. Prompt user to set email
|
|
15
|
-
echo ""
|
|
16
|
-
echo "Set your git email:"
|
|
17
|
-
echo " git config user.email 'github.relock416@passmail.net' # vdutts"
|
|
18
|
-
echo " git config user.email 'me@vd7.io' # vdutts7"
|
|
19
|
-
echo ""
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
name: Release
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
tags:
|
|
6
|
-
- 'v*'
|
|
7
|
-
|
|
8
|
-
jobs:
|
|
9
|
-
release:
|
|
10
|
-
runs-on: ubuntu-latest
|
|
11
|
-
steps:
|
|
12
|
-
- uses: actions/checkout@v4
|
|
13
|
-
|
|
14
|
-
- name: Create Release
|
|
15
|
-
uses: softprops/action-gh-release@v1
|
|
16
|
-
with:
|
|
17
|
-
generate_release_notes: true
|
|
18
|
-
env:
|
|
19
|
-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
package/assets/icons/.gitkeep
DELETED
|
File without changes
|
package/assets/icons/claude.webp
DELETED
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/repo.config.json
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"repo": {
|
|
3
|
-
"name": "glidercli",
|
|
4
|
-
"description": "Browser automation CLI with autonomous loop execution",
|
|
5
|
-
"homepage": "https://npmjs.com/package/glidercli",
|
|
6
|
-
"topics": ["ralph", "claude", "claude-code", "autonomous-agents", "browser-automation", "cdp", "chrome-devtools", "ralph-wiggum"]
|
|
7
|
-
},
|
|
8
|
-
"owner": {
|
|
9
|
-
"github_username": "vdutts7",
|
|
10
|
-
"website": "https://vd7.io",
|
|
11
|
-
"twitter": "vaboratory"
|
|
12
|
-
},
|
|
13
|
-
"allowed_emails": [
|
|
14
|
-
"github.relock416@passmail.net",
|
|
15
|
-
"me@vd7.io"
|
|
16
|
-
],
|
|
17
|
-
"social_preview": {
|
|
18
|
-
"title": "glidercli",
|
|
19
|
-
"icons_dir": "assets/icons",
|
|
20
|
-
"icon_creator": "https://vd7.dev/icon-creator",
|
|
21
|
-
"dimensions": {
|
|
22
|
-
"width": 1280,
|
|
23
|
-
"height": 640
|
|
24
|
-
}
|
|
25
|
-
},
|
|
26
|
-
"npm": {
|
|
27
|
-
"package_name": "glidercli",
|
|
28
|
-
"alt_package": "@vd7/glider",
|
|
29
|
-
"bin_command": "glider"
|
|
30
|
-
}
|
|
31
|
-
}
|