feather-ai 0.2.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.
data/sig/Feather.rbs ADDED
@@ -0,0 +1,91 @@
1
+ module Feather
2
+ VERSION: String
3
+
4
+ class Error < StandardError
5
+ end
6
+
7
+ class ConfigurationError < Error
8
+ end
9
+
10
+ class IdentificationError < Error
11
+ end
12
+
13
+ def self.configuration: () -> Configuration
14
+ def self.configure: () { (Configuration) -> void } -> void
15
+ def self.reset!: () -> nil
16
+ def self.identify: (?String? image, ?String? audio, ?location: String?, ?consensus: bool) -> Result
17
+
18
+ class Configuration
19
+ attr_accessor provider: Symbol
20
+ attr_accessor model: String
21
+ attr_accessor location: String?
22
+ attr_accessor consensus_models: Array[String]
23
+ attr_accessor tips_model: String
24
+
25
+ def initialize: () -> void
26
+ def initialize_copy: (Configuration source) -> void
27
+ end
28
+
29
+ class Result
30
+ attr_reader common_name: String?
31
+ attr_reader species: String?
32
+ attr_reader family: String?
33
+ attr_reader confidence: Symbol?
34
+ attr_reader region_native: bool?
35
+ attr_reader candidates: Array[Result]
36
+ attr_reader input_tokens: Integer?
37
+ attr_reader output_tokens: Integer?
38
+ attr_reader cost: Float?
39
+ attr_reader model_id: String?
40
+ attr_reader duration_ms: Integer?
41
+ attr_reader source: Symbol?
42
+ attr_reader consensus_models: Array[String]?
43
+
44
+ def initialize: (Hash[Symbol, untyped] attrs) -> void
45
+ def confident?: () -> bool
46
+ def region_native?: () -> bool
47
+ def photography_tips: () -> Hash[Symbol, String]?
48
+ def to_h: () -> Hash[Symbol, untyped]
49
+ end
50
+
51
+ class Identifier
52
+ SCHEMA: untyped
53
+ PROVIDER_RATES: Hash[Symbol, Hash[Symbol, Float]]
54
+
55
+ def initialize: (?config: Configuration) -> void
56
+ def identify: (?String? image, ?String? audio, ?location: String?) -> Result
57
+ end
58
+
59
+ class Consensus
60
+ def initialize: (?config: Configuration) -> void
61
+ def identify: (?String? image, ?String? audio, ?location: String?) -> Result
62
+ end
63
+
64
+ class PhotographyTips
65
+ SCHEMA: untyped
66
+
67
+ def initialize: (species: String, common_name: String, ?config: Configuration) -> void
68
+ def fetch: () -> Hash[Symbol, String]
69
+ end
70
+
71
+ module Instrumentation
72
+ def self.instrument: (String event_name, ?Hash[Symbol, untyped] payload) { () -> untyped } -> untyped
73
+ end
74
+
75
+ module Rails
76
+ module ActsAsSighting
77
+ CORRECTABLE_FIELDS: Array[Symbol]
78
+
79
+ module ClassMethods
80
+ def acts_as_sighting: () -> void
81
+ end
82
+
83
+ module InstanceMethods
84
+ def identify!: () -> Result
85
+ def correct!: (Hash[Symbol | String, untyped] attrs) -> void
86
+ def corrected?: () -> bool
87
+ def correction_delta: () -> Hash[Symbol, Hash[Symbol, untyped]]
88
+ end
89
+ end
90
+ end
91
+ end
metadata ADDED
@@ -0,0 +1,89 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: feather-ai
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - Brandyn Britton
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 2026-03-18 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: ruby_llm
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '1.0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '1.0'
26
+ description: A Ruby gem for identifying birds from photos and audio using RubyLLM.
27
+ Adds multi-modal identification, location-aware results, multi-model consensus,
28
+ and a Rails integration.
29
+ email:
30
+ - brandynbb96@gmail.com
31
+ executables: []
32
+ extensions: []
33
+ extra_rdoc_files: []
34
+ files:
35
+ - ".idea/.gitignore"
36
+ - ".idea/Feather.iml"
37
+ - ".idea/copilot.data.migration.ask2agent.xml"
38
+ - ".idea/modules.xml"
39
+ - ".idea/vcs.xml"
40
+ - ".rspec"
41
+ - ".rubocop.yml"
42
+ - ".ruby-version"
43
+ - CLAUDE.md
44
+ - CODE_OF_CONDUCT.md
45
+ - LICENSE.txt
46
+ - README.md
47
+ - Rakefile
48
+ - lib/feather_ai.rb
49
+ - lib/feather_ai/configuration.rb
50
+ - lib/feather_ai/consensus.rb
51
+ - lib/feather_ai/identifier.rb
52
+ - lib/feather_ai/instrumentation.rb
53
+ - lib/feather_ai/photography_tips.rb
54
+ - lib/feather_ai/rails.rb
55
+ - lib/feather_ai/rails/acts_as_sighting.rb
56
+ - lib/feather_ai/rails/railtie.rb
57
+ - lib/feather_ai/result.rb
58
+ - lib/feather_ai/version.rb
59
+ - lib/generators/feather_ai/add_corrections_generator.rb
60
+ - lib/generators/feather_ai/install_generator.rb
61
+ - lib/generators/feather_ai/templates/correction_migration.rb.tt
62
+ - lib/generators/feather_ai/templates/migration.rb.tt
63
+ - sig/Feather.rbs
64
+ homepage: https://github.com/Birdup-Australia/Feather
65
+ licenses:
66
+ - MIT
67
+ metadata:
68
+ homepage_uri: https://github.com/Birdup-Australia/Feather
69
+ source_code_uri: https://github.com/Birdup-Australia/Feather
70
+ changelog_uri: https://github.com/Birdup-Australia/Feather/blob/main/CHANGELOG.md
71
+ rubygems_mfa_required: 'true'
72
+ rdoc_options: []
73
+ require_paths:
74
+ - lib
75
+ required_ruby_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: 3.2.0
80
+ required_rubygems_version: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ requirements: []
86
+ rubygems_version: 3.6.2
87
+ specification_version: 4
88
+ summary: Identify birds from photos and audio using LLMs
89
+ test_files: []