sublayer 0.1.0.pre.alpha → 0.1.0.pre.alpha.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5a723acaec8ce50c64470d067dc29769fb8efe9415e4a867507272ef8961e687
4
- data.tar.gz: 76508d4f490e5d9601d3827e35191b20ba7887e2086696bb610567e0f49639bd
3
+ metadata.gz: 80d1bcf936b12b7638feb1ddc87d0369dd7438f535837e0c0353ffa4e717a9ac
4
+ data.tar.gz: a2113a776870928e115e62a318e29e149ecc791633ad7b47f218a9f4d3df75ca
5
5
  SHA512:
6
- metadata.gz: 983e31c6d8b85a6116accf2b7eb395b257e79de967e79f4046ddfacf046522bc274335e931e8665f67864704fd2af7b331cd93cc294f50d9533f44bf99d94f39
7
- data.tar.gz: 3a18adf3d93a074897855874780f7ae0205ed5de3541923f5711a238ab0823fadedb3a0a82fe32c87cbca5da918656d0fa9d982bb2a3ef1651a5a606f5647d81
6
+ metadata.gz: ee8d2b20c430e814e400a224f351ac0dd8d4f4e0428f30fc490a3085d40f3fd1e3112044ab9365d4373e4ce1e4035a3a5acf58522fb9d63ec17abc75daa9efff
7
+ data.tar.gz: 5c35b019b2e111f935f171fce4d22681195cc0c9d4f40f066283497cd5a99e090505dd8acfc05a3dabd7c241f8455c4c32a2b3916f4f71eb14c1c1f34b235abb
@@ -1,6 +1,53 @@
1
1
  module Sublayer
2
2
  module Agents
3
3
  class Base
4
+ class << self
5
+ attr_accessor :goal_condition_block, :trigger_condition_block, :trigger_on_files_changed_block, :check_status_block, :step_block
6
+
7
+ def trigger_condition(&block)
8
+ self.trigger_condition_block = block
9
+ end
10
+
11
+ def trigger_on_files_changed(&block)
12
+ self.trigger_on_files_changed_block = block
13
+ end
14
+
15
+ def goal_condition(&block)
16
+ self.goal_condition_block = block
17
+ end
18
+
19
+ def check_status(&block)
20
+ self.check_status_block = block
21
+ end
22
+
23
+ def step(&block)
24
+ self.step_block = block
25
+ end
26
+ end
27
+
28
+ def run
29
+ files_to_listen_to = instance_eval(&self.class.trigger_on_files_changed_block).map { |file| File.expand_path(file) }
30
+ folders = files_to_listen_to.map { |file| File.dirname(file) }.uniq
31
+
32
+ listener = Listen.to(*folders) do |modified, added, removed|
33
+ if files_to_listen_to.any? { |file| modified.include?(file) }
34
+ take_step
35
+ end
36
+ end
37
+
38
+ listener.start
39
+
40
+ take_step
41
+
42
+ sleep
43
+ end
44
+
45
+ private
46
+
47
+ def take_step
48
+ instance_eval(&self.class.check_status_block)
49
+ instance_eval(&self.class.step_block) unless instance_eval(&self.class.goal_condition_block)
50
+ end
4
51
  end
5
52
  end
6
53
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sublayer
4
- VERSION = "0.1.0-alpha"
4
+ VERSION = "0.1.0-alpha.3"
5
5
  end
data/lib/sublayer.rb CHANGED
@@ -8,6 +8,8 @@ require 'ostruct'
8
8
  require "httparty"
9
9
  require "openai"
10
10
  require "nokogiri"
11
+ require "listen"
12
+
11
13
  require_relative "sublayer/version"
12
14
 
13
15
  loader = Zeitwerk::Loader.for_gem
data/sublayer.gemspec CHANGED
@@ -36,6 +36,7 @@ Gem::Specification.new do |spec|
36
36
  spec.add_dependency "zeitwerk"
37
37
  spec.add_dependency "nokogiri", "~> 1.16.5"
38
38
  spec.add_dependency "httparty"
39
+ spec.add_dependency "listen"
39
40
 
40
41
  spec.add_development_dependency "rspec", "~> 3.12"
41
42
  spec.add_development_dependency "pry", "~> 0.14"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sublayer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.pre.alpha
4
+ version: 0.1.0.pre.alpha.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Werner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-05-16 00:00:00.000000000 Z
11
+ date: 2024-05-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruby-openai
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: listen
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: rspec
99
113
  requirement: !ruby/object:Gem::Requirement