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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5fc78b32cbc7cf1f01aa9dde4e53637d3de9ed140337ed461fde3639b8e73559
4
- data.tar.gz: 78a973c5dff6151ccd0485b75556b6e984c980676e9702a044b7df42221824ef
3
+ metadata.gz: 449edf2b1bf5f2aaa389a0e79b74c6ed93bc5b7623a957068b2bd704b292347b
4
+ data.tar.gz: c876958eb74ccac96717634b5a0c1d7314e837f2a3695a557d1d19eee4b6d853
5
5
  SHA512:
6
- metadata.gz: c853db9ef0827378e9c9e37482df51e815814fd257c03b5b0449f322056a3c07c281e3fa57d984cf61abfa773fa9e06b3624f8615ec85de9b6597f11c7c1a593
7
- data.tar.gz: 3a5fb1474f5d45351f73321eae75ee1e239bf7e10cf85d5e192fa451b0298a1be38a3609b808420dd7294fb6fa771eb2fe33227b5833d66fbb5e9cb26189955a
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.2
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