antigravity-sdk 0.1.1 → 0.1.2

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: ade58fad8a0ce76edf2cb631fa0ff4e8c21efc86bfa2ae48d5489372145a6756
4
- data.tar.gz: f06feea8e5aaae71a0b1a24167b8da5f89cead824e5ea4f858aac409b9431574
3
+ metadata.gz: 5fc78b32cbc7cf1f01aa9dde4e53637d3de9ed140337ed461fde3639b8e73559
4
+ data.tar.gz: 78a973c5dff6151ccd0485b75556b6e984c980676e9702a044b7df42221824ef
5
5
  SHA512:
6
- metadata.gz: 72b602c3732ca8e6a24f9684b8e595492381509afeae41493b75a05de9107e605cfffae134b48f58bed7414725a24a73a5fdd42514bbda19a220fb0831543e94
7
- data.tar.gz: f8b3367309f54ae8e667eff77fb9e33da87943a279d5edebe2275c4ba1f2a7183db3a7da61c300efe771a64f8d9dee8299e99cd7d337f14d1a6221e9c5966b3e
6
+ metadata.gz: c853db9ef0827378e9c9e37482df51e815814fd257c03b5b0449f322056a3c07c281e3fa57d984cf61abfa773fa9e06b3624f8615ec85de9b6597f11c7c1a593
7
+ data.tar.gz: 3a5fb1474f5d45351f73321eae75ee1e239bf7e10cf85d5e192fa451b0298a1be38a3609b808420dd7294fb6fa771eb2fe33227b5833d66fbb5e9cb26189955a
@@ -15,19 +15,9 @@ module Antigravity
15
15
  @hooks = Hooks.new
16
16
  @client = Client.new
17
17
 
18
- # Auto-attach default safety guardrails
19
- use_safety_defaults!
20
-
21
18
  yield(self) if block_given?
22
19
  end
23
20
 
24
- def use_safety_defaults!
25
- # Pre-tool guard against editing protected files (.env, Gemfile, etc.)
26
- before_tool_call(&Safety::ProtectedFilesGuard.new)
27
- # Post-tool secret masking
28
- after_tool_call(&Safety::SecretMasker.new)
29
- end
30
-
31
21
  def register_tool(tool_or_name = nil, description: "", &block)
32
22
  if block_given? && tool_or_name
33
23
  tool = Tool::Dynamic.new(tool_or_name, description: description, &block)
data/lib/antigravity.rb CHANGED
@@ -5,7 +5,6 @@ require_relative "antigravity/config"
5
5
  require_relative "antigravity/message"
6
6
  require_relative "antigravity/harness"
7
7
  require_relative "antigravity/hooks"
8
- require_relative "antigravity/safety"
9
8
  require_relative "antigravity/sidecar"
10
9
  require_relative "antigravity/tool"
11
10
  require_relative "antigravity/skill"
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.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Riccardo Carlesso
@@ -52,7 +52,6 @@ files:
52
52
  - lib/antigravity/harness.rb
53
53
  - lib/antigravity/hooks.rb
54
54
  - lib/antigravity/message.rb
55
- - lib/antigravity/safety.rb
56
55
  - lib/antigravity/sidecar.rb
57
56
  - lib/antigravity/skill.rb
58
57
  - lib/antigravity/tool.rb
@@ -1,74 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Antigravity
4
- module Safety
5
- # Pre-hook guardrail to prevent dangerous file edits or destructive operations
6
- class ProtectedFilesGuard
7
- PROTECTED_PATTERNS = [
8
- /\.env(\..*)?$/i,
9
- /Gemfile(\.lock)?$/i,
10
- /config\/secrets\.yml$/i,
11
- /config\/database\.yml$/i,
12
- /\.git\//i,
13
- /\/etc\//i
14
- ].freeze
15
-
16
- attr_reader :blocked_patterns
17
-
18
- def initialize(additional_patterns: [])
19
- @blocked_patterns = PROTECTED_PATTERNS + additional_patterns
20
- end
21
-
22
- def call(tool_name, params)
23
- path = extract_path(params)
24
- return :allow unless path
25
-
26
- if protected_file?(path)
27
- { status: :deny, reason: "Security Policy Violation: Modifications to '#{path}' are restricted and require explicit approval." }
28
- else
29
- :allow
30
- end
31
- end
32
-
33
- def to_proc
34
- method(:call).to_proc
35
- end
36
-
37
- private
38
-
39
- def extract_path(params)
40
- return nil unless params.is_a?(Hash)
41
- params[:path] || params["path"] || params[:file] || params["file"] || params[:target]
42
- end
43
-
44
- def protected_file?(path)
45
- filename = File.basename(path)
46
- @blocked_patterns.any? { |pattern| path =~ pattern || filename =~ pattern }
47
- end
48
- end
49
-
50
- # Post-hook sanitizer to redact sensitive API keys and tokens from tool outputs
51
- class SecretMasker
52
- SECRET_PATTERNS = [
53
- /(AIzaSy[A-Za-z0-9_-]{25,45})/, # Google API Keys
54
- /(sk-[A-Za-z0-9]{25,50})/, # OpenAI API Keys
55
- /(ghp_[A-Za-z0-9]{25,45})/, # GitHub Tokens
56
- /(bearer\s+[A-Za-z0-9\._-]{20,})/i # Bearer Tokens
57
- ].freeze
58
-
59
- def call(_tool_name, _params, result)
60
- return result unless result.is_a?(String)
61
-
62
- sanitized = result.dup
63
- SECRET_PATTERNS.each do |pattern|
64
- sanitized.gsub!(pattern, "[REDACTED_SECRET]")
65
- end
66
- sanitized
67
- end
68
-
69
- def to_proc
70
- method(:call).to_proc
71
- end
72
- end
73
- end
74
- end