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.
@@ -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
- # Use local setup-agent.rb if mounted (dev mode), otherwise download from remote
105
- if [ -f "/tmp/setup-agent.rb" ]; then
106
- echo "🔧 Using local setup-agent.rb (dev mode)"
107
- ruby /tmp/setup-agent.rb
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
- echo "Downloading latest setup-agent.rb (version: ${YATFA_VERSION})..."
110
- curl -fsSL https://objectstore.fra1.civo.com/yatfa/${YATFA_VERSION}/setup-agent.rb -o /tmp/setup-agent.rb
111
- # Download claw setup (non-fatal only needed when AGENT_TYPE=claw)
112
- curl -fsSL https://objectstore.fra1.civo.com/yatfa/${YATFA_VERSION}/setup-claw-agent.rb -o /tmp/setup-claw-agent.rb 2>/dev/null || true
113
- ruby /tmp/setup-agent.rb
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
@@ -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 show_version
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
- version = JSON.parse(File.read(package_json_path))["version"]
25
- puts "yatfa v#{version}"
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
@@ -320,10 +320,10 @@ module YatfaAgent
320
320
  add_development_mounts!(docker_cmd)
321
321
  end
322
322
 
323
- local_setup_script = File.join(File.dirname(__FILE__), "..", "..", "setup-agent.rb")
323
+ local_setup_dir = File.join(File.dirname(__FILE__), "..", "..", "setup")
324
324
 
325
- if File.exist?(local_setup_script)
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-agent.rb (for development)
393
- # Try multiple paths: relative to gem, relative to cwd
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
- local_setup_script = nil
401
- setup_script_paths.each do |path|
402
- if File.exist?(path)
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.78",
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
  ],