antigravity-sdk 0.1.4 → 0.1.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: afe9c665bf383ac5f2b9e0cf07ea94f085373c0c2a0d0b10c135a56a639e0eac
4
- data.tar.gz: d2cf2720c77a9d6d854c8415c2113c13f3ca91c5aabd86d413cb39422e47cf31
3
+ metadata.gz: 6e2f8d1b432e31aa733976b69c28c01db1c0a8f7d109eb920e489d22ee0fa001
4
+ data.tar.gz: c1dec66ab20e10063913499f9811a8baf1aaf63bf1113d8008b4410e4a68b92a
5
5
  SHA512:
6
- metadata.gz: b730d5312a05e57473a765d8398cc3e2b80edcbcf931bf802541ca72f0962b7600c6dbeac7761b4815da34caae823e1b1f6dacd993eb9550d156173aac797a39
7
- data.tar.gz: 7cedb00e25e9e8d17d00a6e94588301b75f126c107e4a06fd145db7c87c08fb5d2ea8cc0f78aa3a39577263b5067e0bc7e84e0f4176ec35931a95d7bdbba36d0
6
+ metadata.gz: 3601db0d85ee97d1607f61b08091560382bb6ff648042c1bf5340c72c58bd5a3ba026bb79d152281d7a80bd1103542f6de19f86fa4a6a20076884db2cf718374
7
+ data.tar.gz: 457ba9d83a710200dfefa3d07b14a83a2349efcd19f46c2033addf550070bdf927e37f21a93109d36eeeb6dc84e536b829397315683049f00ef52b67f638961d
@@ -3,9 +3,9 @@
3
3
  module Antigravity
4
4
  class Agent
5
5
  attr_accessor :model, :system_instruction, :api_key
6
- attr_reader :tools, :skills, :hooks, :sidecars, :client
6
+ attr_reader :tools, :skills, :hooks, :sidecars, :client, :logger_guard
7
7
 
8
- def initialize(model: nil, &block)
8
+ def initialize(model: nil, auto_logger: true, &block)
9
9
  @model = model || Antigravity.config.default_model
10
10
  @api_key = Antigravity.config.api_key
11
11
  @system_instruction = nil
@@ -14,6 +14,12 @@ module Antigravity
14
14
  @sidecars = []
15
15
  @hooks = Hooks.new
16
16
  @client = Client.new
17
+ @logger_guard = nil
18
+
19
+ # Automagic Logger attachment unless disabled via ENV["ANTIGRAVITY_LOGGER"]=false or auto_logger: false
20
+ if auto_logger && logger_enabled?
21
+ attach_logger
22
+ end
17
23
 
18
24
  yield(self) if block_given?
19
25
  end
@@ -35,10 +41,10 @@ module Antigravity
35
41
  sidecar
36
42
  end
37
43
 
38
- def attach_logger(log_target = "log/antigravity.log", level: ::Logger::INFO)
39
- logger_guard = Guards::AgentLogger.new(log_target, level: level)
40
- logger_guard.attach_to(self)
41
- logger_guard
44
+ def attach_logger(log_target = nil, level: ::Logger::INFO, silent_notice: false)
45
+ @logger_guard = Guards::AgentLogger.new(log_target, level: level, silent_notice: silent_notice)
46
+ @logger_guard.attach_to(self)
47
+ @logger_guard
42
48
  end
43
49
 
44
50
  def load_skill(skill_path)
@@ -80,5 +86,14 @@ module Antigravity
80
86
  response
81
87
  end
82
88
  alias ask prompt
89
+
90
+ private
91
+
92
+ def logger_enabled?
93
+ env_val = ENV["ANTIGRAVITY_LOGGER"]&.downcase
94
+ return false if %w[false 0 none no].include?(env_val)
95
+
96
+ true
97
+ end
83
98
  end
84
99
  end
@@ -7,18 +7,29 @@ module Antigravity
7
7
  module Guards
8
8
  # Configurable opt-in logger guard supporting file loggers and Rails.logger
9
9
  class AgentLogger
10
- attr_reader :logger
11
-
12
- def initialize(log_target = "log/antigravity.log", level: Logger::INFO)
13
- if log_target.is_a?(String)
14
- FileUtils.mkdir_p(File.dirname(log_target)) rescue nil
15
- @logger = ::Logger.new(log_target)
16
- elsif log_target.respond_to?(:info)
17
- @logger = log_target
10
+ attr_reader :logger, :target_description
11
+
12
+ def initialize(log_target = nil, level: Logger::INFO, silent_notice: false)
13
+ resolved_target = resolve_log_target(log_target)
14
+
15
+ if resolved_target.is_a?(String)
16
+ dir = File.dirname(resolved_target)
17
+ FileUtils.mkdir_p(dir) unless Dir.exist?(dir)
18
+ @logger = ::Logger.new(resolved_target)
19
+ @target_description = resolved_target
20
+ elsif resolved_target.respond_to?(:info)
21
+ @logger = resolved_target
22
+ @target_description = "Rails.logger"
18
23
  else
19
24
  @logger = ::Logger.new($stdout)
25
+ @target_description = "$stdout"
20
26
  end
27
+
21
28
  @logger.level = level if @logger.respond_to?(:level=)
29
+
30
+ unless silent_notice
31
+ puts "🪵 Logging to #{@target_description}"
32
+ end
22
33
  end
23
34
 
24
35
  def before_prompt(prompt_text)
@@ -45,6 +56,22 @@ module Antigravity
45
56
  agent.before_tool_call { |t, p| logger_guard.before_tool_call(t, p) }
46
57
  agent.after_tool_call { |t, p, r| logger_guard.after_tool_call(t, p, r) }
47
58
  end
59
+
60
+ private
61
+
62
+ def resolve_log_target(target)
63
+ return target if target
64
+
65
+ if defined?(Rails) && Rails.respond_to?(:logger) && Rails.logger
66
+ Rails.logger
67
+ elsif ENV["RAILS_ENV"] && !ENV["RAILS_ENV"].empty?
68
+ "log/#{ENV['RAILS_ENV']}.log"
69
+ elsif ENV["RACK_ENV"] && !ENV["RACK_ENV"].empty?
70
+ "log/#{ENV['RACK_ENV']}.log"
71
+ else
72
+ "log/antigravity.log"
73
+ end
74
+ end
48
75
  end
49
76
 
50
77
  # Configurable opt-in file protection guard
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: antigravity-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Riccardo Carlesso