feat: implement wallet daemon-first CLI operations and marketplace buy functionality

This commit is contained in:
aitbc
2026-04-28 18:38:41 +02:00
parent 8781d15a5b
commit f73c604de0
2 changed files with 154 additions and 0 deletions

View File

@@ -0,0 +1,64 @@
# Multi-Node Git Sync Skill
This skill provides expertise in synchronizing git changes across AITBC multi-node deployment (genesis, follower, gitea-runner).
## Node Architecture
- **Genesis Node** (localhost): `/opt/aitbc` - Primary development node
- **Follower Node** (aitbc1): `/opt/aitbc` - Secondary blockchain node
- **Gitea-Runner Node** (gitea-runner): `/opt/aitbc` - CI/CD runner node
## Git Remote Strategy
- **Primary Remote**: `origin` (Gitea) - Daily development operations
- **Secondary Remote**: `github` - Milestone releases only
## Common Operations
### Check Multi-Node Git Status
```bash
# Check all three nodes
cd /opt/aitbc
echo "=== Genesis ===" && git status --short && git rev-parse --short HEAD
echo "=== Follower ===" && ssh aitbc1 'cd /opt/aitbc && git status --short && git rev-parse --short HEAD'
echo "=== Gitea-Runner ===" && ssh gitea-runner 'cd /opt/aitbc && git status --short && git rev-parse --short HEAD'
```
### Sync All Nodes from Genesis
```bash
# 1. Commit and push from genesis
cd /opt/aitbc
git add . && git commit -m "feat: description" && git push origin main
# 2. Pull on follower
ssh aitbc1 'cd /opt/aitbc && git pull origin main'
# 3. Pull on gitea-runner
ssh gitea-runner 'cd /opt/aitbc && git pull origin main'
# 4. Verify sync
# (use check status command above)
```
### Handle Sync Conflicts
```bash
# If git pull fails on remote node:
ssh aitbc1 'cd /opt/aitbc && git checkout --force . && git clean -fd && git pull origin main'
ssh gitea-runner 'cd /opt/aitbc && git checkout --force . && git clean -fd && git pull origin main'
```
### Service Restart After Sync
```bash
# Restart services that need code updates
ssh aitbc1 'systemctl restart aitbc-agent-coordinator.service'
ssh aitbc1 'systemctl restart aitbc-blockchain-node.service'
ssh gitea-runner 'systemctl restart aitbc-blockchain-node.service'
```
## Best Practices
1. Always verify git status on all nodes before major changes
2. Push to Gitea first, then pull on remote nodes
3. Use `--force-with-lease` instead of `--force` when needed
4. Restart affected services after code sync
5. Verify service health after sync and restart

View File

@@ -0,0 +1,90 @@
#!/bin/bash
# Multi-Node Git Sync Script for AITBC
# Syncs git changes from genesis node to follower and gitea-runner nodes
set -e
REPO_DIR="/opt/aitbc"
GITEA_REMOTE="origin"
FOLLOWER_NODE="aitbc1"
RUNNER_NODE="gitea-runner"
echo "=== AITBC Multi-Node Git Sync ==="
echo "Starting sync from genesis node..."
echo ""
# Check genesis node status
echo "=== Genesis Node Status ==="
cd $REPO_DIR
git status --short
GENESIS_HASH=$(git rev-parse HEAD)
echo "Genesis HEAD: $GENESIS_HASH"
echo ""
# Check if there are uncommitted changes
if ! git diff-index --quiet HEAD --; then
echo "⚠️ Uncommitted changes detected on genesis node"
echo "Please commit changes before syncing:"
echo " git add ."
echo " git commit -m 'description'"
exit 1
fi
# Check if genesis is ahead of origin
if [ "$(git rev-parse HEAD)" != "$(git rev-parse $GITEA_REMOTE/main)" ]; then
echo "⚠️ Genesis node is ahead of $GITEA_REMOTE"
echo "Pushing to $GITEA_REMOTE first..."
git push $GITEA_REMOTE main
echo "✅ Pushed to $GITEA_REMOTE"
else
echo "✅ Genesis node is up to date with $GITEA_REMOTE"
fi
echo ""
# Sync follower node
echo "=== Syncing Follower Node ($FOLLOWER_NODE) ==="
FOLLOWER_HASH=$(ssh $FOLLOWER_NODE "cd $REPO_DIR && git rev-parse HEAD" 2>/dev/null || echo "none")
echo "Follower HEAD: $FOLLOWER_HASH"
if [ "$GENESIS_HASH" != "$FOLLOWER_HASH" ]; then
echo "Syncing follower node..."
ssh $FOLLOWER_NODE "cd $REPO_DIR && git fetch $GITEA_REMOTE && git reset --hard $GITEA_REMOTE/main"
NEW_FOLLOWER_HASH=$(ssh $FOLLOWER_NODE "cd $REPO_DIR && git rev-parse HEAD")
echo "✅ Follower node synced: $NEW_FOLLOWER_HASH"
else
echo "✅ Follower node already in sync"
fi
echo ""
# Sync gitea-runner node
echo "=== Syncing Gitea-Runner Node ($RUNNER_NODE) ==="
RUNNER_HASH=$(ssh $RUNNER_NODE "cd $REPO_DIR && git rev-parse HEAD" 2>/dev/null || echo "none")
echo "Gitea-Runner HEAD: $RUNNER_HASH"
if [ "$GENESIS_HASH" != "$RUNNER_HASH" ]; then
echo "Syncing gitea-runner node..."
ssh $RUNNER_NODE "cd $REPO_DIR && git fetch $GITEA_REMOTE && git reset --hard $GITEA_REMOTE/main"
NEW_RUNNER_HASH=$(ssh $RUNNER_NODE "cd $REPO_DIR && git rev-parse HEAD")
echo "✅ Gitea-Runner node synced: $NEW_RUNNER_HASH"
else
echo "✅ Gitea-Runner node already in sync"
fi
echo ""
# Final verification
echo "=== Final Verification ==="
FINAL_GENESIS=$(git rev-parse --short HEAD)
FINAL_FOLLOWER=$(ssh $FOLLOWER_NODE "cd $REPO_DIR && git rev-parse --short HEAD")
FINAL_RUNNER=$(ssh $RUNNER_NODE "cd $REPO_DIR && git rev-parse --short HEAD")
echo "Genesis: $FINAL_GENESIS"
echo "Follower: $FINAL_FOLLOWER"
echo "Gitea-Runner: $FINAL_RUNNER"
if [ "$FINAL_GENESIS" = "$FINAL_FOLLOWER" ] && [ "$FINAL_GENESIS" = "$FINAL_RUNNER" ]; then
echo "✅ All three nodes are in sync"
exit 0
else
echo "❌ Nodes are out of sync"
exit 1
fi