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 +4 -4
- data/lib/antigravity/agent.rb +0 -10
- data/lib/antigravity.rb +0 -1
- metadata +1 -2
- data/lib/antigravity/safety.rb +0 -74
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5fc78b32cbc7cf1f01aa9dde4e53637d3de9ed140337ed461fde3639b8e73559
|
|
4
|
+
data.tar.gz: 78a973c5dff6151ccd0485b75556b6e984c980676e9702a044b7df42221824ef
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c853db9ef0827378e9c9e37482df51e815814fd257c03b5b0449f322056a3c07c281e3fa57d984cf61abfa773fa9e06b3624f8615ec85de9b6597f11c7c1a593
|
|
7
|
+
data.tar.gz: 3a5fb1474f5d45351f73321eae75ee1e239bf7e10cf85d5e192fa451b0298a1be38a3609b808420dd7294fb6fa771eb2fe33227b5833d66fbb5e9cb26189955a
|
data/lib/antigravity/agent.rb
CHANGED
|
@@ -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.
|
|
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
|
data/lib/antigravity/safety.rb
DELETED
|
@@ -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
|