openai-cli 0.1.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 +7 -0
- data/.rspec +3 -0
- data/.rubocop.yml +13 -0
- data/CHANGELOG.md +5 -0
- data/Gemfile +12 -0
- data/Gemfile.lock +109 -0
- data/LICENSE.txt +21 -0
- data/README.md +25 -0
- data/Rakefile +11 -0
- data/exe/openai +5 -0
- data/lib/openai/cli/cli.rb +22 -0
- data/lib/openai/cli/commands/complete.rb +31 -0
- data/lib/openai/cli/commands/config.rb +28 -0
- data/lib/openai/cli/commands/status.rb +24 -0
- data/lib/openai/cli/commands/version.rb +20 -0
- data/lib/openai/cli/config.rb +28 -0
- data/lib/openai/cli/persistence/entities/completion.rb +12 -0
- data/lib/openai/cli/persistence/entities/conversation.rb +11 -0
- data/lib/openai/cli/persistence/entities/prompt.rb +12 -0
- data/lib/openai/cli/version.rb +7 -0
- data/openai-cli.gemspec +47 -0
- data/sig/chatgpt/cli.rbs +6 -0
- metadata +210 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: c82b47be860e5ededf34aa24ea681a6bdae7973a71f96b89dee2fdd6c1af7a98
|
4
|
+
data.tar.gz: 809c1f364dc3a1b968930c00d19cabeeb6af13aad2e9cd676d4472b55f054f83
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 36e5e1d18ef2f16412d26429b222c4541383ce97361992c042f88385ec6b10da6f37297be22344b35d65991e818112f74ed1a7ce8d3b002df7091b635d681c03
|
7
|
+
data.tar.gz: a25c8dfaad67745028a19800dcd6d6e11ef93a3cdc61fc349fda2ee2e83808bd022f13d363367a95c0f6ada4977e66e175949a1665147f8a03af116a290a47b5
|
data/.rspec
ADDED
data/.rubocop.yml
ADDED
data/CHANGELOG.md
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
openai-cli (0.1.0)
|
5
|
+
dry-auto_inject
|
6
|
+
dry-cli
|
7
|
+
dry-configurable
|
8
|
+
dry-container
|
9
|
+
dry-types
|
10
|
+
ruby-openai
|
11
|
+
sqlite
|
12
|
+
|
13
|
+
GEM
|
14
|
+
remote: https://rubygems.org/
|
15
|
+
specs:
|
16
|
+
ast (2.4.2)
|
17
|
+
byebug (11.1.3)
|
18
|
+
coderay (1.1.3)
|
19
|
+
concurrent-ruby (1.2.0)
|
20
|
+
diff-lcs (1.5.0)
|
21
|
+
dry-auto_inject (1.0.1)
|
22
|
+
dry-core (~> 1.0)
|
23
|
+
zeitwerk (~> 2.6)
|
24
|
+
dry-cli (1.0.0)
|
25
|
+
dry-configurable (1.0.1)
|
26
|
+
dry-core (~> 1.0, < 2)
|
27
|
+
zeitwerk (~> 2.6)
|
28
|
+
dry-container (0.11.0)
|
29
|
+
concurrent-ruby (~> 1.0)
|
30
|
+
dry-core (1.0.0)
|
31
|
+
concurrent-ruby (~> 1.0)
|
32
|
+
zeitwerk (~> 2.6)
|
33
|
+
dry-inflector (1.0.0)
|
34
|
+
dry-logic (1.5.0)
|
35
|
+
concurrent-ruby (~> 1.0)
|
36
|
+
dry-core (~> 1.0, < 2)
|
37
|
+
zeitwerk (~> 2.6)
|
38
|
+
dry-types (1.7.0)
|
39
|
+
concurrent-ruby (~> 1.0)
|
40
|
+
dry-core (~> 1.0, < 2)
|
41
|
+
dry-inflector (~> 1.0, < 2)
|
42
|
+
dry-logic (>= 1.4, < 2)
|
43
|
+
zeitwerk (~> 2.6)
|
44
|
+
httparty (0.21.0)
|
45
|
+
mini_mime (>= 1.0.0)
|
46
|
+
multi_xml (>= 0.5.2)
|
47
|
+
json (2.6.3)
|
48
|
+
method_source (1.0.0)
|
49
|
+
mini_mime (1.1.2)
|
50
|
+
minitest (5.17.0)
|
51
|
+
multi_xml (0.6.0)
|
52
|
+
parallel (1.22.1)
|
53
|
+
parser (3.2.1.0)
|
54
|
+
ast (~> 2.4.1)
|
55
|
+
pry (0.14.2)
|
56
|
+
coderay (~> 1.1)
|
57
|
+
method_source (~> 1.0)
|
58
|
+
pry-byebug (3.10.1)
|
59
|
+
byebug (~> 11.0)
|
60
|
+
pry (>= 0.13, < 0.15)
|
61
|
+
rainbow (3.1.1)
|
62
|
+
rake (13.0.6)
|
63
|
+
regexp_parser (2.7.0)
|
64
|
+
rexml (3.2.5)
|
65
|
+
rspec (3.12.0)
|
66
|
+
rspec-core (~> 3.12.0)
|
67
|
+
rspec-expectations (~> 3.12.0)
|
68
|
+
rspec-mocks (~> 3.12.0)
|
69
|
+
rspec-core (3.12.1)
|
70
|
+
rspec-support (~> 3.12.0)
|
71
|
+
rspec-expectations (3.12.2)
|
72
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
73
|
+
rspec-support (~> 3.12.0)
|
74
|
+
rspec-mocks (3.12.3)
|
75
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
76
|
+
rspec-support (~> 3.12.0)
|
77
|
+
rspec-support (3.12.0)
|
78
|
+
rubocop (1.45.1)
|
79
|
+
json (~> 2.3)
|
80
|
+
parallel (~> 1.10)
|
81
|
+
parser (>= 3.2.0.0)
|
82
|
+
rainbow (>= 2.2.2, < 4.0)
|
83
|
+
regexp_parser (>= 1.8, < 3.0)
|
84
|
+
rexml (>= 3.2.5, < 4.0)
|
85
|
+
rubocop-ast (>= 1.24.1, < 2.0)
|
86
|
+
ruby-progressbar (~> 1.7)
|
87
|
+
unicode-display_width (>= 2.4.0, < 3.0)
|
88
|
+
rubocop-ast (1.26.0)
|
89
|
+
parser (>= 3.2.1.0)
|
90
|
+
ruby-openai (3.2.0)
|
91
|
+
httparty (>= 0.18.1)
|
92
|
+
ruby-progressbar (1.11.0)
|
93
|
+
sqlite (1.0.2)
|
94
|
+
unicode-display_width (2.4.2)
|
95
|
+
zeitwerk (2.6.7)
|
96
|
+
|
97
|
+
PLATFORMS
|
98
|
+
x86_64-linux
|
99
|
+
|
100
|
+
DEPENDENCIES
|
101
|
+
minitest
|
102
|
+
openai-cli!
|
103
|
+
pry-byebug
|
104
|
+
rake (~> 13.0)
|
105
|
+
rspec (~> 3.0)
|
106
|
+
rubocop (~> 1.21)
|
107
|
+
|
108
|
+
BUNDLED WITH
|
109
|
+
2.4.6
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2023 Viktor Habchak
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# OpenAI::CLI
|
2
|
+
## Installation
|
3
|
+
|
4
|
+
```bash
|
5
|
+
gem install openai-cli
|
6
|
+
```
|
7
|
+
|
8
|
+
## TODO Usage
|
9
|
+
|
10
|
+
# Future Features
|
11
|
+
- `edit` command
|
12
|
+
- `edit` command
|
13
|
+
- `help` command
|
14
|
+
- `moderation` command
|
15
|
+
- pass a file to `ask` command
|
16
|
+
- Instead of failing on reaching max-tokens, implement the drift mechanism
|
17
|
+
e.g. only submit latest max-tokens allowed in the conversation.
|
18
|
+
|
19
|
+
## Contributing
|
20
|
+
|
21
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/vikdotdev/openai-cli.
|
22
|
+
|
23
|
+
## License
|
24
|
+
|
25
|
+
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
data/exe/openai
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "openai/cli/config"
|
4
|
+
|
5
|
+
OpenAI::CLI::Config.configure
|
6
|
+
|
7
|
+
require "openai/cli/commands/version"
|
8
|
+
require "openai/cli/commands/complete"
|
9
|
+
require "openai/cli/commands/status"
|
10
|
+
require "openai/cli/commands/config"
|
11
|
+
|
12
|
+
module OpenAI
|
13
|
+
module CLI
|
14
|
+
module Commands
|
15
|
+
register "complete", Complete, aliases: ["c"]
|
16
|
+
register "status", Status
|
17
|
+
register "config", Config
|
18
|
+
register "version", Version, aliases: ["v", "-v", "--version"]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require "dry/cli"
|
2
|
+
|
3
|
+
module OpenAI
|
4
|
+
module CLI
|
5
|
+
module Commands
|
6
|
+
extend Dry::CLI::Registry
|
7
|
+
|
8
|
+
class Complete < Dry::CLI::Command
|
9
|
+
desc "Send requests to OpenAI completion endpoint"
|
10
|
+
|
11
|
+
argument :message, required: false, desc: "Prompt message"
|
12
|
+
option :max_tokens, required: false, default: 100, desc: <<~DESC
|
13
|
+
Maximum amount of tokens permitted in the response
|
14
|
+
DESC
|
15
|
+
option :interactive, required: false, default: true, desc: "Interactive mode"
|
16
|
+
option :model, required: false, desc: "Specify OpenAI model"
|
17
|
+
|
18
|
+
example [
|
19
|
+
'openai complete "What is the meaning of life?" # A single completion',
|
20
|
+
"openai complete -i # Enter interactive mode"
|
21
|
+
]
|
22
|
+
|
23
|
+
def call(message: "", **opts)
|
24
|
+
# either message or interactive mode should be present
|
25
|
+
# model should be read from the configuration
|
26
|
+
puts "complete command called with arguments: #{message.inspect}, #{opts.inspect}"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require "dry/cli"
|
2
|
+
|
3
|
+
module OpenAI
|
4
|
+
module CLI
|
5
|
+
module Commands
|
6
|
+
extend Dry::CLI::Registry
|
7
|
+
|
8
|
+
class Config < Dry::CLI::Command
|
9
|
+
desc "Configure the CLI"
|
10
|
+
|
11
|
+
option :restore_default, desc: <<~DESC
|
12
|
+
Restores configuration to default
|
13
|
+
DESC
|
14
|
+
|
15
|
+
def call(**opts)
|
16
|
+
puts "config command called with arguments: #{opts.inspect}"
|
17
|
+
end
|
18
|
+
|
19
|
+
# This should attempt to fetch OPENAI_API_KEY if available
|
20
|
+
# openai config auth -k <your-api-key>
|
21
|
+
#
|
22
|
+
# openai config completion -m text-davince-001
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require "dry/cli"
|
2
|
+
|
3
|
+
module OpenAI
|
4
|
+
module CLI
|
5
|
+
module Commands
|
6
|
+
extend Dry::CLI::Registry
|
7
|
+
|
8
|
+
class Status < Dry::CLI::Command
|
9
|
+
desc "Show CLI status"
|
10
|
+
|
11
|
+
example [
|
12
|
+
"openai status"
|
13
|
+
]
|
14
|
+
|
15
|
+
def call(**)
|
16
|
+
puts "status command called"
|
17
|
+
end
|
18
|
+
|
19
|
+
# Display token usage.
|
20
|
+
# opanai status
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# TODO print api version too ??
|
2
|
+
#
|
3
|
+
require "dry/cli"
|
4
|
+
require "openai/cli/version"
|
5
|
+
|
6
|
+
module OpenAI
|
7
|
+
module CLI
|
8
|
+
module Commands
|
9
|
+
extend Dry::CLI::Registry
|
10
|
+
|
11
|
+
class Version < Dry::CLI::Command
|
12
|
+
desc "Print version"
|
13
|
+
|
14
|
+
def call(*)
|
15
|
+
puts OpenAI::CLI::VERSION
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require "dry/configurable"
|
2
|
+
require "ruby/openai"
|
3
|
+
|
4
|
+
module OpenAI
|
5
|
+
module CLI
|
6
|
+
|
7
|
+
class Config
|
8
|
+
def self.configure
|
9
|
+
Ruby::OpenAI.configure do |config|
|
10
|
+
config.access_token = ENV["OPENAI_API_KEY"]
|
11
|
+
config.organization_id = ENV["OPENAI_ORGANIZATION_ID"]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
# generate default config if does not exist from env or otherwise
|
16
|
+
#
|
17
|
+
# read config and provide values
|
18
|
+
#
|
19
|
+
# determine whether this is the first command execution
|
20
|
+
#
|
21
|
+
# write default configuration, copy a yaml file to location or something
|
22
|
+
#
|
23
|
+
# put api key into that configuration
|
24
|
+
#
|
25
|
+
# all this with error handling when config is malformed, with option to recreate default config
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/openai-cli.gemspec
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "lib/openai/cli/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "openai-cli"
|
7
|
+
spec.version = OpenAI::CLI::VERSION
|
8
|
+
spec.authors = ["Viktor Habchak"]
|
9
|
+
spec.email = ["vikdotdev@gmail.com"]
|
10
|
+
|
11
|
+
spec.summary = "Command line tool to interact with OpenAI APIs"
|
12
|
+
spec.description = <<~DESCRIPTION
|
13
|
+
Command line tool to interact with OpenAI APIs. Aims to be ergonomic and
|
14
|
+
rely on GNU tools when possible.
|
15
|
+
DESCRIPTION
|
16
|
+
spec.homepage = "https://github.com/vikdotdev/openai-cli"
|
17
|
+
spec.license = "MIT"
|
18
|
+
spec.required_ruby_version = ">= 2.7.0"
|
19
|
+
|
20
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
21
|
+
spec.metadata["source_code_uri"] = "https://github.com/vikdotdev/openai-cli"
|
22
|
+
spec.metadata["changelog_uri"] = "https://github.com/vikdotdev/openai-cli/CHANGELOG.md"
|
23
|
+
|
24
|
+
# Specify which files should be added to the gem when it is released.
|
25
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
26
|
+
spec.files = Dir.chdir(__dir__) do
|
27
|
+
`git ls-files -z`.split("\x0").reject do |f|
|
28
|
+
(f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|circleci)|appveyor)})
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
spec.bindir = "exe"
|
33
|
+
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
34
|
+
spec.require_paths = ["lib"]
|
35
|
+
|
36
|
+
spec.add_dependency "dry-auto_inject"
|
37
|
+
spec.add_dependency "dry-cli"
|
38
|
+
spec.add_dependency "dry-configurable"
|
39
|
+
spec.add_dependency "dry-container"
|
40
|
+
spec.add_dependency "dry-types"
|
41
|
+
spec.add_dependency "ruby-openai"
|
42
|
+
spec.add_dependency "sqlite"
|
43
|
+
|
44
|
+
spec.add_development_dependency "minitest"
|
45
|
+
spec.add_development_dependency "pry-byebug"
|
46
|
+
spec.add_development_dependency "rspec"
|
47
|
+
end
|
data/sig/chatgpt/cli.rbs
ADDED
metadata
ADDED
@@ -0,0 +1,210 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: openai-cli
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Viktor Habchak
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2023-02-15 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: dry-auto_inject
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: dry-cli
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: dry-configurable
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: dry-container
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: dry-types
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: ruby-openai
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: sqlite
|
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'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: minitest
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: pry-byebug
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: rspec
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
description: |
|
154
|
+
Command line tool to interact with OpenAI APIs. Aims to be ergonomic and
|
155
|
+
rely on GNU tools when possible.
|
156
|
+
email:
|
157
|
+
- vikdotdev@gmail.com
|
158
|
+
executables:
|
159
|
+
- openai
|
160
|
+
extensions: []
|
161
|
+
extra_rdoc_files: []
|
162
|
+
files:
|
163
|
+
- ".rspec"
|
164
|
+
- ".rubocop.yml"
|
165
|
+
- CHANGELOG.md
|
166
|
+
- Gemfile
|
167
|
+
- Gemfile.lock
|
168
|
+
- LICENSE.txt
|
169
|
+
- README.md
|
170
|
+
- Rakefile
|
171
|
+
- exe/openai
|
172
|
+
- lib/openai/cli/cli.rb
|
173
|
+
- lib/openai/cli/commands/complete.rb
|
174
|
+
- lib/openai/cli/commands/config.rb
|
175
|
+
- lib/openai/cli/commands/status.rb
|
176
|
+
- lib/openai/cli/commands/version.rb
|
177
|
+
- lib/openai/cli/config.rb
|
178
|
+
- lib/openai/cli/persistence/entities/completion.rb
|
179
|
+
- lib/openai/cli/persistence/entities/conversation.rb
|
180
|
+
- lib/openai/cli/persistence/entities/prompt.rb
|
181
|
+
- lib/openai/cli/version.rb
|
182
|
+
- openai-cli.gemspec
|
183
|
+
- sig/chatgpt/cli.rbs
|
184
|
+
homepage: https://github.com/vikdotdev/openai-cli
|
185
|
+
licenses:
|
186
|
+
- MIT
|
187
|
+
metadata:
|
188
|
+
homepage_uri: https://github.com/vikdotdev/openai-cli
|
189
|
+
source_code_uri: https://github.com/vikdotdev/openai-cli
|
190
|
+
changelog_uri: https://github.com/vikdotdev/openai-cli/CHANGELOG.md
|
191
|
+
post_install_message:
|
192
|
+
rdoc_options: []
|
193
|
+
require_paths:
|
194
|
+
- lib
|
195
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
196
|
+
requirements:
|
197
|
+
- - ">="
|
198
|
+
- !ruby/object:Gem::Version
|
199
|
+
version: 2.7.0
|
200
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
201
|
+
requirements:
|
202
|
+
- - ">="
|
203
|
+
- !ruby/object:Gem::Version
|
204
|
+
version: '0'
|
205
|
+
requirements: []
|
206
|
+
rubygems_version: 3.3.7
|
207
|
+
signing_key:
|
208
|
+
specification_version: 4
|
209
|
+
summary: Command line tool to interact with OpenAI APIs
|
210
|
+
test_files: []
|