yatfa 1.0.78 → 1.0.80
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/bin/install-agent.sh +13 -9
- package/bin/run-yatfa-agent.rb +40 -4
- package/lib/yatfa_agent/agent.rb +8 -29
- package/package.json +2 -1
- package/setup/setup-agent.rb +1038 -0
- package/setup/setup-claw-agent.rb +494 -0
- package/setup/setup-github.rb +222 -0
package/bin/install-agent.sh
CHANGED
|
@@ -101,16 +101,20 @@ YATFA_VERSION=${YATFA_VERSION:-main}
|
|
|
101
101
|
cat << 'EOF' > /usr/local/bin/setup-agent
|
|
102
102
|
#!/bin/bash
|
|
103
103
|
YATFA_VERSION=${YATFA_VERSION:-main}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
104
|
+
BASE_URL="https://objectstore.fra1.civo.com/yatfa/${YATFA_VERSION}"
|
|
105
|
+
# Use local setup/ dir if mounted (dev mode), otherwise download all from remote
|
|
106
|
+
if [ -f "/tmp/setup/setup-agent.rb" ]; then
|
|
107
|
+
echo "🔧 Using local setup/ (dev mode)"
|
|
108
|
+
ruby /tmp/setup/setup-agent.rb
|
|
108
109
|
else
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
# Download
|
|
112
|
-
curl -fsSL
|
|
113
|
-
|
|
110
|
+
mkdir -p /tmp/setup
|
|
111
|
+
echo "Downloading setup scripts (version: ${YATFA_VERSION})..."
|
|
112
|
+
# Download manifest listing all setup files
|
|
113
|
+
MANIFEST=$(curl -fsSL "${BASE_URL}/setup/MANIFEST" 2>/dev/null || echo "setup-agent.rb")
|
|
114
|
+
for file in ${MANIFEST}; do
|
|
115
|
+
curl -fsSL "${BASE_URL}/setup/${file}" -o "/tmp/setup/${file}" 2>/dev/null || true
|
|
116
|
+
done
|
|
117
|
+
ruby /tmp/setup/setup-agent.rb
|
|
114
118
|
fi
|
|
115
119
|
EOF
|
|
116
120
|
chmod +x /usr/local/bin/setup-agent
|
package/bin/run-yatfa-agent.rb
CHANGED
|
@@ -17,12 +17,45 @@ require_relative "../lib/yatfa_agent/agent"
|
|
|
17
17
|
require_relative "../lib/yatfa_agent/setup"
|
|
18
18
|
require_relative "../agents"
|
|
19
19
|
|
|
20
|
-
def
|
|
20
|
+
def current_version
|
|
21
21
|
require "json"
|
|
22
22
|
real_path = File.realpath(__FILE__)
|
|
23
23
|
package_json_path = File.join(File.dirname(real_path), "..", "package.json")
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
JSON.parse(File.read(package_json_path))["version"]
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def latest_npm_version
|
|
28
|
+
require "net/http"
|
|
29
|
+
require "json"
|
|
30
|
+
uri = URI("https://registry.npmjs.org/yatfa/latest")
|
|
31
|
+
response = Net::HTTP.get_response(uri)
|
|
32
|
+
return nil unless response.is_a?(Net::HTTPSuccess)
|
|
33
|
+
JSON.parse(response.body)["version"]
|
|
34
|
+
rescue StandardError
|
|
35
|
+
nil
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def check_version!
|
|
39
|
+
local = current_version
|
|
40
|
+
remote = latest_npm_version
|
|
41
|
+
return if remote.nil? || local == remote
|
|
42
|
+
|
|
43
|
+
# Try to self-delete the outdated install so next run fetches fresh
|
|
44
|
+
begin
|
|
45
|
+
real_path = File.realpath(__FILE__)
|
|
46
|
+
install_dir = File.expand_path("../..", real_path) # bin/../.. → package root
|
|
47
|
+
FileUtils.rm_rf(install_dir)
|
|
48
|
+
rescue StandardError
|
|
49
|
+
# No permission or other issue — just warn
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
puts "⚠️ Outdated version: v#{local} (latest: v#{remote})"
|
|
53
|
+
puts " Re-run: npx yatfa@latest #{ARGV.join(' ')}"
|
|
54
|
+
exit 1
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def show_version
|
|
58
|
+
puts "yatfa v#{current_version}"
|
|
26
59
|
exit 0
|
|
27
60
|
end
|
|
28
61
|
|
|
@@ -54,9 +87,12 @@ show_usage if ARGV.empty?
|
|
|
54
87
|
|
|
55
88
|
command = ARGV[0].downcase
|
|
56
89
|
|
|
57
|
-
# Handle version command
|
|
90
|
+
# Handle version command (skip version check — user is just asking what version they have)
|
|
58
91
|
show_version if %w[version -v --version].include?(command)
|
|
59
92
|
|
|
93
|
+
# Check for updates before doing anything else
|
|
94
|
+
check_version!
|
|
95
|
+
|
|
60
96
|
# Handle setup command
|
|
61
97
|
if command == "setup"
|
|
62
98
|
wizard = YatfaAgent::Setup::SetupWizard.new
|
package/lib/yatfa_agent/agent.rb
CHANGED
|
@@ -320,10 +320,10 @@ module YatfaAgent
|
|
|
320
320
|
add_development_mounts!(docker_cmd)
|
|
321
321
|
end
|
|
322
322
|
|
|
323
|
-
|
|
323
|
+
local_setup_dir = File.join(File.dirname(__FILE__), "..", "..", "setup")
|
|
324
324
|
|
|
325
|
-
if File.
|
|
326
|
-
docker_cmd += [Config.image_name(config), "ruby", "/tmp/setup-agent.rb"]
|
|
325
|
+
if File.directory?(local_setup_dir)
|
|
326
|
+
docker_cmd += [Config.image_name(config), "ruby", "/tmp/setup/setup-agent.rb"]
|
|
327
327
|
else
|
|
328
328
|
docker_cmd += [Config.image_name(config)]
|
|
329
329
|
end
|
|
@@ -389,33 +389,12 @@ module YatfaAgent
|
|
|
389
389
|
end
|
|
390
390
|
|
|
391
391
|
def self.add_development_mounts!(docker_cmd)
|
|
392
|
-
# Check for local setup
|
|
393
|
-
|
|
394
|
-
setup_script_paths = [
|
|
395
|
-
File.join(File.dirname(__FILE__), "..", "..", "setup-agent.rb"), # Relative to gem
|
|
396
|
-
File.join(Dir.pwd, "tinker-public", "setup-agent.rb"), # Running from metafolder
|
|
397
|
-
File.join(Dir.pwd, "setup-agent.rb"), # Running from yatfa-public
|
|
398
|
-
]
|
|
392
|
+
# Check for local setup/ directory (for development)
|
|
393
|
+
setup_dir = File.join(File.dirname(__FILE__), "..", "..", "setup")
|
|
399
394
|
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
local_setup_script = path
|
|
404
|
-
break
|
|
405
|
-
end
|
|
406
|
-
end
|
|
407
|
-
|
|
408
|
-
# Mount local setup-agent.rb for development if present
|
|
409
|
-
# Binaries are always fetched from bucket by setup-agent.rb
|
|
410
|
-
if local_setup_script
|
|
411
|
-
puts "🔧 Using local setup-agent.rb for development"
|
|
412
|
-
docker_cmd.concat(["-v", "#{File.expand_path(local_setup_script)}:/tmp/setup-agent.rb:ro"])
|
|
413
|
-
|
|
414
|
-
# Also mount setup-claw-agent.rb if present (loaded by setup-agent.rb when AGENT_TYPE=claw)
|
|
415
|
-
local_claw_script = File.join(File.dirname(local_setup_script), "setup-claw-agent.rb")
|
|
416
|
-
if File.exist?(local_claw_script)
|
|
417
|
-
docker_cmd.concat(["-v", "#{File.expand_path(local_claw_script)}:/tmp/setup-claw-agent.rb:ro"])
|
|
418
|
-
end
|
|
395
|
+
if File.directory?(setup_dir)
|
|
396
|
+
puts "🔧 Using local setup/ for development"
|
|
397
|
+
docker_cmd.concat(["-v", "#{File.expand_path(setup_dir)}:/tmp/setup:ro"])
|
|
419
398
|
end
|
|
420
399
|
end
|
|
421
400
|
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "yatfa",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.80",
|
|
4
4
|
"description": "YATFA - Yet Another Tool For Agents",
|
|
5
5
|
"bin": "./bin/run-yatfa-agent.rb",
|
|
6
6
|
"files": [
|
|
7
7
|
"bin/run-yatfa-agent.rb",
|
|
8
8
|
"agents.rb",
|
|
9
9
|
"lib/",
|
|
10
|
+
"setup/",
|
|
10
11
|
"bin/agent-bridge-tmux",
|
|
11
12
|
"bin/install-agent.sh"
|
|
12
13
|
],
|