antigravity-sdk 0.1.9 → 0.3.0
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 +2 -9
- data/lib/antigravity/base.rb +18 -0
- data/lib/antigravity/emojis.rb +63 -2
- data/lib/antigravity/message.rb +2 -9
- data/lib/antigravity/sidecar.rb +8 -12
- data/lib/antigravity/skill.rb +2 -9
- data/lib/antigravity/tool.rb +2 -13
- 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: 665ab001fa484b0bc5ba97c2e7feb960712b0f8e5070ed521f0caf5ad0f16a58
|
|
4
|
+
data.tar.gz: 3f556321b1083daadea10792632ac216ba168abb26708fc5cc3a81824301d460
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d60ff58a66fec4ed17a85ad51015568e743363f313eb1a27b9e6512a767ae5a7abca062796ae0bc19edbe59545202828415b693f6551b77a22d8a1ff5cca99ea
|
|
7
|
+
data.tar.gz: 9e09ed8b23e59d29f644d10f421b73d70f357c7d9fd601ba67ba429df8c2814768d0264084e5e6439cd9161d2f8c13313f6890bcd11faf6f66f7e43e3ea2578f
|
data/lib/antigravity/agent.rb
CHANGED
|
@@ -1,18 +1,11 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Antigravity
|
|
4
|
-
class Agent
|
|
4
|
+
class Agent < Base
|
|
5
|
+
|
|
5
6
|
attr_accessor :model, :system_instruction, :api_key
|
|
6
7
|
attr_reader :tools, :skills, :hooks, :sidecars, :client, :logger_guard
|
|
7
8
|
|
|
8
|
-
def self.emoji
|
|
9
|
-
Antigravity.emoji(:gem)
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def emoji
|
|
13
|
-
self.class.emoji
|
|
14
|
-
end
|
|
15
|
-
|
|
16
9
|
def initialize(model: nil, auto_logger: true, &block)
|
|
17
10
|
@model = model || Antigravity.config.default_model
|
|
18
11
|
@api_key = Antigravity.config.api_key
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Antigravity
|
|
4
|
+
# Base class for all Antigravity domain objects.
|
|
5
|
+
# Subclasses automagically get .emoji / #emoji via Emojifiable.
|
|
6
|
+
#
|
|
7
|
+
# ⚠️ Keep this class SUPER thin!
|
|
8
|
+
# Every SDK class inherits from it, so any weight here
|
|
9
|
+
# is carried by Agent, Tool, Skill, Message, Sidecar::Runner, etc.
|
|
10
|
+
class Base
|
|
11
|
+
include Emojifiable
|
|
12
|
+
|
|
13
|
+
def self.inherited(subclass)
|
|
14
|
+
super
|
|
15
|
+
subclass.include(Emojifiable) unless subclass < Emojifiable
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
data/lib/antigravity/emojis.rb
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
module Antigravity
|
|
4
4
|
EMOJIS = {
|
|
5
5
|
gem: "💎",
|
|
6
|
+
agent: "🕵️♂️",
|
|
6
7
|
prompt: "💬",
|
|
7
8
|
response: "🤖",
|
|
8
9
|
thinking: "🤔",
|
|
@@ -12,13 +13,73 @@ module Antigravity
|
|
|
12
13
|
sidecar: "🚗",
|
|
13
14
|
logger: "🪵",
|
|
14
15
|
skill: "📁",
|
|
16
|
+
message: "💬",
|
|
17
|
+
guard: "🛡️",
|
|
15
18
|
test: "🧪",
|
|
16
|
-
success: "✅"
|
|
19
|
+
success: "✅",
|
|
20
|
+
unknown: "🤷"
|
|
21
|
+
}.freeze
|
|
22
|
+
|
|
23
|
+
# Name fragments we recognise in the class hierarchy
|
|
24
|
+
EMOJI_CLASS_MAP = {
|
|
25
|
+
"Agent" => :agent,
|
|
26
|
+
"Tool" => :tool,
|
|
27
|
+
"Sidecar" => :sidecar,
|
|
28
|
+
"Runner" => :sidecar,
|
|
29
|
+
"Skill" => :skill,
|
|
30
|
+
"Message" => :message,
|
|
31
|
+
"Chunk" => :message,
|
|
32
|
+
"Guard" => :guard,
|
|
33
|
+
"Logger" => :logger
|
|
17
34
|
}.freeze
|
|
18
35
|
|
|
19
36
|
class << self
|
|
20
37
|
def emoji(key)
|
|
21
|
-
EMOJIS[key.to_sym] ||
|
|
38
|
+
EMOJIS[key.to_sym] || EMOJIS[:unknown]
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def emoji_for(target)
|
|
42
|
+
key = resolve_emoji_key(target)
|
|
43
|
+
emoji(key)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
private
|
|
47
|
+
|
|
48
|
+
def resolve_emoji_key(target)
|
|
49
|
+
# Message/Chunk: role-aware
|
|
50
|
+
if target.is_a?(Message) || (defined?(Chunk) && target.is_a?(Chunk))
|
|
51
|
+
return target.respond_to?(:role) && target.role == :user ? :prompt : :response
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Direct symbol/string lookup
|
|
55
|
+
return target if target.is_a?(Symbol) || target.is_a?(String)
|
|
56
|
+
|
|
57
|
+
# Class hierarchy reflection
|
|
58
|
+
klass = target.is_a?(Class) || target.is_a?(Module) ? target : target.class
|
|
59
|
+
parts = klass.name&.split("::") || []
|
|
60
|
+
parts.reverse_each do |part|
|
|
61
|
+
return EMOJI_CLASS_MAP[part] if EMOJI_CLASS_MAP.key?(part)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
:unknown
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Mixin providing polymorphic .emoji class and #emoji instance methods.
|
|
69
|
+
# Auto-included by Antigravity::Base via inherited hook.
|
|
70
|
+
module Emojifiable
|
|
71
|
+
def emoji
|
|
72
|
+
Antigravity.emoji_for(self)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
module ClassMethods
|
|
76
|
+
def emoji
|
|
77
|
+
Antigravity.emoji_for(self)
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def self.included(base)
|
|
82
|
+
base.extend(ClassMethods)
|
|
22
83
|
end
|
|
23
84
|
end
|
|
24
85
|
end
|
data/lib/antigravity/message.rb
CHANGED
|
@@ -1,16 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Antigravity
|
|
4
|
-
class Message
|
|
5
|
-
attr_accessor :role, :content, :thinking, :tool_calls, :model_id, :tokens
|
|
6
|
-
|
|
7
|
-
def self.emoji
|
|
8
|
-
Antigravity.emoji(:response)
|
|
9
|
-
end
|
|
4
|
+
class Message < Base
|
|
10
5
|
|
|
11
|
-
|
|
12
|
-
role == :user ? Antigravity.emoji(:prompt) : Antigravity.emoji(:response)
|
|
13
|
-
end
|
|
6
|
+
attr_accessor :role, :content, :thinking, :tool_calls, :model_id, :tokens
|
|
14
7
|
|
|
15
8
|
def initialize(role: :assistant, content: "", thinking: "", tool_calls: [], model_id: nil)
|
|
16
9
|
@role = role
|
data/lib/antigravity/sidecar.rb
CHANGED
|
@@ -6,17 +6,11 @@ require "fileutils"
|
|
|
6
6
|
|
|
7
7
|
module Antigravity
|
|
8
8
|
module Sidecar
|
|
9
|
-
#
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
def self.emoji
|
|
14
|
-
Antigravity.emoji(:sidecar)
|
|
15
|
-
end
|
|
9
|
+
# Abstract runner for non-blocking agent sidecars.
|
|
10
|
+
# Subclass and implement #process_event.
|
|
11
|
+
class Runner < Antigravity::Base
|
|
16
12
|
|
|
17
|
-
|
|
18
|
-
self.class.emoji
|
|
19
|
-
end
|
|
13
|
+
attr_reader :name, :queue, :worker_thread
|
|
20
14
|
|
|
21
15
|
def initialize(name = "SidecarWorker")
|
|
22
16
|
@name = name
|
|
@@ -58,7 +52,7 @@ module Antigravity
|
|
|
58
52
|
end
|
|
59
53
|
|
|
60
54
|
# Async Audit Logger Sidecar
|
|
61
|
-
class AuditLogger <
|
|
55
|
+
class AuditLogger < Runner
|
|
62
56
|
attr_reader :log_file
|
|
63
57
|
|
|
64
58
|
def initialize(log_file = "log/agent_audit.jsonl")
|
|
@@ -78,7 +72,7 @@ module Antigravity
|
|
|
78
72
|
end
|
|
79
73
|
|
|
80
74
|
# Async Vulnerability & Code Quality Scanner Sidecar
|
|
81
|
-
class VulnerabilityScanner <
|
|
75
|
+
class VulnerabilityScanner < Runner
|
|
82
76
|
attr_reader :scanned_events
|
|
83
77
|
|
|
84
78
|
def initialize
|
|
@@ -96,5 +90,7 @@ module Antigravity
|
|
|
96
90
|
@scanned_events << { tool: tool_name, params: params, verified: true }
|
|
97
91
|
end
|
|
98
92
|
end
|
|
93
|
+
# Backward-compatible alias
|
|
94
|
+
Base = Runner
|
|
99
95
|
end
|
|
100
96
|
end
|
data/lib/antigravity/skill.rb
CHANGED
|
@@ -3,16 +3,9 @@
|
|
|
3
3
|
require "yaml"
|
|
4
4
|
|
|
5
5
|
module Antigravity
|
|
6
|
-
class Skill
|
|
7
|
-
attr_reader :name, :description, :instructions, :path
|
|
8
|
-
|
|
9
|
-
def self.emoji
|
|
10
|
-
Antigravity.emoji(:skill)
|
|
11
|
-
end
|
|
6
|
+
class Skill < Base
|
|
12
7
|
|
|
13
|
-
|
|
14
|
-
self.class.emoji
|
|
15
|
-
end
|
|
8
|
+
attr_reader :name, :description, :instructions, :path
|
|
16
9
|
|
|
17
10
|
def initialize(path)
|
|
18
11
|
@path = File.expand_path(path)
|
data/lib/antigravity/tool.rb
CHANGED
|
@@ -1,22 +1,15 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Antigravity
|
|
4
|
-
class Tool
|
|
4
|
+
class Tool < Base
|
|
5
5
|
class << self
|
|
6
6
|
def inherited(subclass)
|
|
7
|
+
super
|
|
7
8
|
subclass.extend(ClassMethods)
|
|
8
9
|
end
|
|
9
|
-
|
|
10
|
-
def emoji
|
|
11
|
-
Antigravity.emoji(:tool)
|
|
12
|
-
end
|
|
13
10
|
end
|
|
14
11
|
|
|
15
12
|
module ClassMethods
|
|
16
|
-
def emoji
|
|
17
|
-
Antigravity.emoji(:tool)
|
|
18
|
-
end
|
|
19
|
-
|
|
20
13
|
def name(val = nil, desc: nil)
|
|
21
14
|
if val
|
|
22
15
|
@tool_name = val.to_s
|
|
@@ -69,10 +62,6 @@ module Antigravity
|
|
|
69
62
|
end
|
|
70
63
|
end
|
|
71
64
|
|
|
72
|
-
def emoji
|
|
73
|
-
self.class.emoji
|
|
74
|
-
end
|
|
75
|
-
|
|
76
65
|
def tool_name
|
|
77
66
|
self.class.name
|
|
78
67
|
end
|
data/lib/antigravity.rb
CHANGED
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.
|
|
4
|
+
version: 0.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Riccardo Carlesso
|
|
@@ -61,6 +61,7 @@ extra_rdoc_files: []
|
|
|
61
61
|
files:
|
|
62
62
|
- lib/antigravity.rb
|
|
63
63
|
- lib/antigravity/agent.rb
|
|
64
|
+
- lib/antigravity/base.rb
|
|
64
65
|
- lib/antigravity/client.rb
|
|
65
66
|
- lib/antigravity/config.rb
|
|
66
67
|
- lib/antigravity/emojis.rb
|