antigravity-sdk 0.1.2 → 0.1.3
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/guards.rb +83 -0
- data/lib/antigravity.rb +1 -0
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 449edf2b1bf5f2aaa389a0e79b74c6ed93bc5b7623a957068b2bd704b292347b
|
|
4
|
+
data.tar.gz: c876958eb74ccac96717634b5a0c1d7314e837f2a3695a557d1d19eee4b6d853
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6ccc779048181412d94425b9a9c4901339acfb957e4646b047ce4fe1b96e4d2b4f4b6096c560178920f68b22733a6d424b3d010769e17b592f90bc77d2004220
|
|
7
|
+
data.tar.gz: e170353f68f1fdbe47ab3c487136be397636a8855223204e72b4d216bd37c7d04592f935d22b207314d9ecd35c95b7ef3741397204005b89eaccdb7564578427
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Antigravity
|
|
4
|
+
module Guards
|
|
5
|
+
# Configurable opt-in file protection guard
|
|
6
|
+
class FileProtection
|
|
7
|
+
DEFAULT_FILES = [
|
|
8
|
+
/\.env(\..*)?$/i,
|
|
9
|
+
/Gemfile(\.lock)?$/i,
|
|
10
|
+
/config\/secrets\.yml$/i,
|
|
11
|
+
/config\/database\.yml$/i
|
|
12
|
+
].freeze
|
|
13
|
+
|
|
14
|
+
attr_reader :protected_files
|
|
15
|
+
|
|
16
|
+
def initialize(files: nil, add: [], remove: [])
|
|
17
|
+
initial_patterns = files ? Array(files) : DEFAULT_FILES
|
|
18
|
+
patterns = initial_patterns.map { |f| f.is_a?(Regexp) ? f : /#{Regexp.escape(f.to_s)}$/i }
|
|
19
|
+
patterns += Array(add).map { |f| f.is_a?(Regexp) ? f : /#{Regexp.escape(f.to_s)}$/i }
|
|
20
|
+
patterns -= Array(remove).map { |f| f.is_a?(Regexp) ? f : /#{Regexp.escape(f.to_s)}$/i }
|
|
21
|
+
@protected_files = patterns.freeze
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def call(_tool_name, params)
|
|
25
|
+
path = extract_path(params)
|
|
26
|
+
return :allow unless path
|
|
27
|
+
|
|
28
|
+
if protected_path?(path)
|
|
29
|
+
{ status: :deny, reason: "FileProtection Guard: Modifications to '#{path}' are restricted." }
|
|
30
|
+
else
|
|
31
|
+
:allow
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def to_proc
|
|
36
|
+
method(:call).to_proc
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
private
|
|
40
|
+
|
|
41
|
+
def extract_path(params)
|
|
42
|
+
return nil unless params.is_a?(Hash)
|
|
43
|
+
params[:path] || params["path"] || params[:file] || params["file"] || params[:target]
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def protected_path?(path)
|
|
47
|
+
filename = File.basename(path)
|
|
48
|
+
@protected_files.any? { |pattern| path =~ pattern || filename =~ pattern }
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Configurable opt-in secret masking filter
|
|
53
|
+
class SecretMasker
|
|
54
|
+
DEFAULT_PATTERNS = [
|
|
55
|
+
/(AIzaSy[A-Za-z0-9_-]{25,45})/, # Google API Keys
|
|
56
|
+
/(sk-[A-Za-z0-9]{25,50})/, # OpenAI API Keys
|
|
57
|
+
/(ghp_[A-Za-z0-9]{25,45})/, # GitHub Tokens
|
|
58
|
+
/(bearer\s+[A-Za-z0-9\._-]{20,})/i # Bearer Tokens
|
|
59
|
+
].freeze
|
|
60
|
+
|
|
61
|
+
attr_reader :patterns, :replacement
|
|
62
|
+
|
|
63
|
+
def initialize(patterns: nil, replacement: "[REDACTED_SECRET]")
|
|
64
|
+
@patterns = (patterns ? Array(patterns) : DEFAULT_PATTERNS).freeze
|
|
65
|
+
@replacement = replacement
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def call(_tool_name, _params, result)
|
|
69
|
+
return result unless result.is_a?(String)
|
|
70
|
+
|
|
71
|
+
sanitized = result.dup
|
|
72
|
+
@patterns.each do |pattern|
|
|
73
|
+
sanitized.gsub!(pattern, @replacement)
|
|
74
|
+
end
|
|
75
|
+
sanitized
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def to_proc
|
|
79
|
+
method(:call).to_proc
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
data/lib/antigravity.rb
CHANGED
|
@@ -5,6 +5,7 @@ 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/guards"
|
|
8
9
|
require_relative "antigravity/sidecar"
|
|
9
10
|
require_relative "antigravity/tool"
|
|
10
11
|
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.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Riccardo Carlesso
|
|
@@ -49,6 +49,7 @@ files:
|
|
|
49
49
|
- lib/antigravity/agent.rb
|
|
50
50
|
- lib/antigravity/client.rb
|
|
51
51
|
- lib/antigravity/config.rb
|
|
52
|
+
- lib/antigravity/guards.rb
|
|
52
53
|
- lib/antigravity/harness.rb
|
|
53
54
|
- lib/antigravity/hooks.rb
|
|
54
55
|
- lib/antigravity/message.rb
|