tickrb 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 +15 -0
- data/Gemfile +17 -0
- data/Gemfile.lock +143 -0
- data/LICENSE.txt +21 -0
- data/README.md +112 -0
- data/Rakefile +53 -0
- data/lib/tickrb/auth.rb +106 -0
- data/lib/tickrb/client.rb +144 -0
- data/lib/tickrb/mcp_server.rb +445 -0
- data/lib/tickrb/token_store.rb +29 -0
- data/lib/tickrb/version.rb +6 -0
- data/lib/tickrb.rb +37 -0
- data/sorbet/config +4 -0
- data/sorbet/rbi/gems/.gitattributes +1 -0
- data/sorbet/rbi/gems/ast@2.4.3.rbi +585 -0
- data/sorbet/rbi/gems/benchmark@0.4.1.rbi +619 -0
- data/sorbet/rbi/gems/diff-lcs@1.6.2.rbi +1134 -0
- data/sorbet/rbi/gems/dotenv@3.1.8.rbi +295 -0
- data/sorbet/rbi/gems/erubi@1.13.1.rbi +155 -0
- data/sorbet/rbi/gems/json@2.12.2.rbi +2051 -0
- data/sorbet/rbi/gems/language_server-protocol@3.17.0.5.rbi +14244 -0
- data/sorbet/rbi/gems/lint_roller@1.1.0.rbi +240 -0
- data/sorbet/rbi/gems/logger@1.7.0.rbi +963 -0
- data/sorbet/rbi/gems/net-http@0.6.0.rbi +4247 -0
- data/sorbet/rbi/gems/netrc@0.11.0.rbi +159 -0
- data/sorbet/rbi/gems/parallel@1.27.0.rbi +291 -0
- data/sorbet/rbi/gems/parser@3.3.8.0.rbi +5535 -0
- data/sorbet/rbi/gems/prism@1.4.0.rbi +41732 -0
- data/sorbet/rbi/gems/racc@1.8.1.rbi +164 -0
- data/sorbet/rbi/gems/rainbow@3.1.1.rbi +403 -0
- data/sorbet/rbi/gems/rake@13.3.0.rbi +3031 -0
- data/sorbet/rbi/gems/rbi@0.3.3.rbi +6742 -0
- data/sorbet/rbi/gems/rbs@3.9.4.rbi +6976 -0
- data/sorbet/rbi/gems/regexp_parser@2.10.0.rbi +3795 -0
- data/sorbet/rbi/gems/rexml@3.4.1.rbi +5243 -0
- data/sorbet/rbi/gems/rspec-core@3.13.4.rbi +11238 -0
- data/sorbet/rbi/gems/rspec-expectations@3.13.5.rbi +8189 -0
- data/sorbet/rbi/gems/rspec-mocks@3.13.5.rbi +5350 -0
- data/sorbet/rbi/gems/rspec-sorbet-types@0.3.0.rbi +130 -0
- data/sorbet/rbi/gems/rspec-support@3.13.4.rbi +1630 -0
- data/sorbet/rbi/gems/rspec@3.13.1.rbi +83 -0
- data/sorbet/rbi/gems/rubocop-ast@1.45.0.rbi +7721 -0
- data/sorbet/rbi/gems/rubocop-performance@1.25.0.rbi +9 -0
- data/sorbet/rbi/gems/rubocop@1.75.8.rbi +62104 -0
- data/sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi +1318 -0
- data/sorbet/rbi/gems/spoom@1.6.3.rbi +6985 -0
- data/sorbet/rbi/gems/standard-custom@1.0.2.rbi +9 -0
- data/sorbet/rbi/gems/standard-performance@1.8.0.rbi +9 -0
- data/sorbet/rbi/gems/standard@1.50.0.rbi +1146 -0
- data/sorbet/rbi/gems/tapioca@0.16.11.rbi +3628 -0
- data/sorbet/rbi/gems/thor@1.3.2.rbi +4378 -0
- data/sorbet/rbi/gems/unicode-display_width@3.1.4.rbi +132 -0
- data/sorbet/rbi/gems/unicode-emoji@4.0.4.rbi +251 -0
- data/sorbet/rbi/gems/uri@1.0.3.rbi +2325 -0
- data/sorbet/rbi/gems/webrick@1.9.1.rbi +2856 -0
- data/sorbet/rbi/gems/yard-sorbet@0.9.0.rbi +435 -0
- data/sorbet/rbi/gems/yard@0.9.37.rbi +18445 -0
- data/sorbet/rbi/tickrb.rbi +9 -0
- data/sorbet/tapioca.yml +10 -0
- data/test_api_direct.rb +98 -0
- data/test_mcp_server.rb +157 -0
- data/tickrb.gemspec +47 -0
- metadata +278 -0
data/sorbet/tapioca.yml
ADDED
data/test_api_direct.rb
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# Direct API testing script
|
3
|
+
|
4
|
+
require_relative "lib/tickrb"
|
5
|
+
|
6
|
+
def test_token_loading
|
7
|
+
puts "=== Testing Token Loading ==="
|
8
|
+
|
9
|
+
token_file = File.expand_path("~/.config/tickrb/token.json")
|
10
|
+
puts "Token file path: #{token_file}"
|
11
|
+
puts "Token file exists: #{File.exist?(token_file)}"
|
12
|
+
|
13
|
+
if File.exist?(token_file)
|
14
|
+
puts "Token file contents:"
|
15
|
+
puts File.read(token_file)
|
16
|
+
puts
|
17
|
+
|
18
|
+
begin
|
19
|
+
data = JSON.parse(File.read(token_file))
|
20
|
+
expires_at = Time.parse(data["expires_at"]).utc
|
21
|
+
now = Time.now.utc
|
22
|
+
puts "Token expires at: #{expires_at}"
|
23
|
+
puts "Current time: #{now}"
|
24
|
+
puts "Token expired: #{now > expires_at}"
|
25
|
+
puts "Token value: #{data["access_token"][0..20]}..." if data["access_token"]
|
26
|
+
rescue => e
|
27
|
+
puts "Error parsing token file: #{e.message}"
|
28
|
+
end
|
29
|
+
else
|
30
|
+
puts "No token file found. Need to authenticate first."
|
31
|
+
end
|
32
|
+
puts
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_client_creation
|
36
|
+
puts "=== Testing Client Creation ==="
|
37
|
+
|
38
|
+
begin
|
39
|
+
client = Tickrb::Client.new
|
40
|
+
puts "✅ Client created successfully"
|
41
|
+
client
|
42
|
+
rescue => e
|
43
|
+
puts "❌ Client creation failed: #{e.message}"
|
44
|
+
nil
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_api_calls(client)
|
49
|
+
return unless client
|
50
|
+
|
51
|
+
puts "=== Testing API Calls ==="
|
52
|
+
|
53
|
+
# Test get_tasks
|
54
|
+
puts "\n1. Testing get_tasks..."
|
55
|
+
begin
|
56
|
+
tasks = client.get_tasks
|
57
|
+
puts "✅ get_tasks successful"
|
58
|
+
puts " Number of tasks: #{tasks.length}"
|
59
|
+
if tasks.any?
|
60
|
+
puts " First task: #{tasks.first["title"]}"
|
61
|
+
else
|
62
|
+
puts " No tasks found"
|
63
|
+
end
|
64
|
+
rescue => e
|
65
|
+
puts "❌ get_tasks failed: #{e.message}"
|
66
|
+
end
|
67
|
+
|
68
|
+
# Test get_projects
|
69
|
+
puts "\n2. Testing get_projects..."
|
70
|
+
begin
|
71
|
+
projects = client.get_projects
|
72
|
+
puts "✅ get_projects successful"
|
73
|
+
puts " Number of projects: #{projects.length}"
|
74
|
+
if projects.any?
|
75
|
+
puts " First project: #{projects.first["name"]}"
|
76
|
+
else
|
77
|
+
puts " No projects found"
|
78
|
+
end
|
79
|
+
rescue => e
|
80
|
+
puts "❌ get_projects failed: #{e.message}"
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def main
|
85
|
+
puts "TickRb Direct API Test"
|
86
|
+
puts "=" * 30
|
87
|
+
|
88
|
+
test_token_loading
|
89
|
+
client = test_client_creation
|
90
|
+
test_api_calls(client)
|
91
|
+
|
92
|
+
puts "\n" + "=" * 30
|
93
|
+
puts "Test completed!"
|
94
|
+
end
|
95
|
+
|
96
|
+
if __FILE__ == $0
|
97
|
+
main
|
98
|
+
end
|
data/test_mcp_server.rb
ADDED
@@ -0,0 +1,157 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# Test script for the MCP server
|
3
|
+
|
4
|
+
require "json"
|
5
|
+
require "open3"
|
6
|
+
require "timeout"
|
7
|
+
|
8
|
+
def test_mcp_server
|
9
|
+
puts "Testing MCP Server..."
|
10
|
+
|
11
|
+
# Start the server process
|
12
|
+
server_cmd = "ruby bin/tickrb-mcp-server"
|
13
|
+
|
14
|
+
Open3.popen3(server_cmd) do |stdin, stdout, stderr, wait_thr|
|
15
|
+
# Check for any startup errors
|
16
|
+
puts "Checking server startup..."
|
17
|
+
sleep 0.1 # Give server a moment to start
|
18
|
+
|
19
|
+
# Check if there are any error messages
|
20
|
+
begin
|
21
|
+
error_output = stderr.read_nonblock(1000)
|
22
|
+
puts "Server errors: #{error_output}" unless error_output.empty?
|
23
|
+
rescue IO::WaitReadable
|
24
|
+
# No errors, continue
|
25
|
+
end
|
26
|
+
|
27
|
+
# Test 1: Initialize
|
28
|
+
puts "\n1. Testing initialize..."
|
29
|
+
init_request = {
|
30
|
+
jsonrpc: "2.0",
|
31
|
+
id: 1,
|
32
|
+
method: "initialize",
|
33
|
+
params: {
|
34
|
+
protocolVersion: "2024-11-05",
|
35
|
+
capabilities: {},
|
36
|
+
clientInfo: {
|
37
|
+
name: "test-client",
|
38
|
+
version: "1.0.0"
|
39
|
+
}
|
40
|
+
}
|
41
|
+
}
|
42
|
+
|
43
|
+
puts "Sending: #{init_request.to_json}"
|
44
|
+
stdin.puts init_request.to_json
|
45
|
+
stdin.flush
|
46
|
+
|
47
|
+
# Add timeout to prevent hanging
|
48
|
+
response = nil
|
49
|
+
begin
|
50
|
+
Timeout.timeout(5) do
|
51
|
+
response_line = stdout.gets
|
52
|
+
puts "Received: #{response_line}"
|
53
|
+
response = JSON.parse(response_line)
|
54
|
+
end
|
55
|
+
rescue Timeout::Error
|
56
|
+
puts "❌ Timeout waiting for response"
|
57
|
+
break
|
58
|
+
end
|
59
|
+
|
60
|
+
if response && response["result"] && response["result"]["protocolVersion"]
|
61
|
+
puts "✅ Initialize successful"
|
62
|
+
puts " Protocol version: #{response["result"]["protocolVersion"]}"
|
63
|
+
puts " Server name: #{response["result"]["serverInfo"]["name"]}"
|
64
|
+
else
|
65
|
+
puts "❌ Initialize failed: #{response}"
|
66
|
+
end
|
67
|
+
|
68
|
+
# Test 2: List tools
|
69
|
+
puts "\n2. Testing tools/list..."
|
70
|
+
list_request = {
|
71
|
+
jsonrpc: "2.0",
|
72
|
+
id: 2,
|
73
|
+
method: "tools/list"
|
74
|
+
}
|
75
|
+
|
76
|
+
stdin.puts list_request.to_json
|
77
|
+
response = JSON.parse(stdout.gets)
|
78
|
+
|
79
|
+
if response["result"] && response["result"]["tools"]
|
80
|
+
puts "✅ Tools list successful"
|
81
|
+
puts " Available tools:"
|
82
|
+
response["result"]["tools"].each do |tool|
|
83
|
+
puts " - #{tool["name"]}: #{tool["description"]}"
|
84
|
+
end
|
85
|
+
else
|
86
|
+
puts "❌ Tools list failed: #{response}"
|
87
|
+
end
|
88
|
+
|
89
|
+
# Test 3: Call ping tool
|
90
|
+
puts "\n3. Testing tools/call (ping)..."
|
91
|
+
call_request = {
|
92
|
+
jsonrpc: "2.0",
|
93
|
+
id: 3,
|
94
|
+
method: "tools/call",
|
95
|
+
params: {
|
96
|
+
name: "ping",
|
97
|
+
arguments: {
|
98
|
+
message: "test message"
|
99
|
+
}
|
100
|
+
}
|
101
|
+
}
|
102
|
+
|
103
|
+
stdin.puts call_request.to_json
|
104
|
+
response = JSON.parse(stdout.gets)
|
105
|
+
|
106
|
+
if response["result"] && response["result"]["content"]
|
107
|
+
puts "✅ Ping tool successful"
|
108
|
+
puts " Response: #{response["result"]["content"][0]["text"]}"
|
109
|
+
else
|
110
|
+
puts "❌ Ping tool failed: #{response}"
|
111
|
+
end
|
112
|
+
|
113
|
+
# Test 4: Call list_tasks tool
|
114
|
+
puts "\n4. Testing tools/call (list_tasks)..."
|
115
|
+
list_tasks_request = {
|
116
|
+
jsonrpc: "2.0",
|
117
|
+
id: 4,
|
118
|
+
method: "tools/call",
|
119
|
+
params: {
|
120
|
+
name: "list_tasks",
|
121
|
+
arguments: {}
|
122
|
+
}
|
123
|
+
}
|
124
|
+
|
125
|
+
stdin.puts list_tasks_request.to_json
|
126
|
+
response_line = stdout.gets
|
127
|
+
puts "Raw response: #{response_line}"
|
128
|
+
response = JSON.parse(response_line)
|
129
|
+
|
130
|
+
if response["result"] && response["result"]["content"]
|
131
|
+
puts "✅ List tasks tool successful"
|
132
|
+
puts " Response: #{response["result"]["content"][0]["text"]}"
|
133
|
+
else
|
134
|
+
puts "❌ List tasks tool failed: #{response}"
|
135
|
+
if response["error"]
|
136
|
+
puts " Error code: #{response["error"]["code"]}"
|
137
|
+
puts " Error message: #{response["error"]["message"]}"
|
138
|
+
puts " Error data: #{response["error"]["data"]}" if response["error"]["data"]
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
# Close stdin to signal end of input
|
143
|
+
stdin.close
|
144
|
+
|
145
|
+
# Wait for process to finish
|
146
|
+
wait_thr.join
|
147
|
+
|
148
|
+
puts "\n✅ MCP Server test completed!"
|
149
|
+
end
|
150
|
+
rescue => e
|
151
|
+
puts "❌ Test failed: #{e.message}"
|
152
|
+
puts e.backtrace.first(5)
|
153
|
+
end
|
154
|
+
|
155
|
+
if __FILE__ == $0
|
156
|
+
test_mcp_server
|
157
|
+
end
|
data/tickrb.gemspec
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "lib/tickrb/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "tickrb"
|
7
|
+
spec.version = Tickrb::VERSION
|
8
|
+
spec.authors = ["Graham Turner"]
|
9
|
+
spec.email = ["turnertgraham@gmail.com"]
|
10
|
+
|
11
|
+
spec.summary = "A Ruby gem for tickrb functionality"
|
12
|
+
spec.description = "Longer description of what tickrb does"
|
13
|
+
spec.homepage = "https://github.com/tgturner/tickrb"
|
14
|
+
spec.license = "MIT"
|
15
|
+
spec.required_ruby_version = ">= 2.6.0"
|
16
|
+
|
17
|
+
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
18
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
19
|
+
spec.metadata["source_code_uri"] = "https://github.com/tgturner/tickrb"
|
20
|
+
spec.metadata["changelog_uri"] = "https://github.com/tgturner/tickrb/blob/main/CHANGELOG.md"
|
21
|
+
|
22
|
+
# Specify which files should be added to the gem when it is released.
|
23
|
+
spec.files = Dir.chdir(__dir__) do
|
24
|
+
`git ls-files -z`.split("\x0").reject do |f|
|
25
|
+
(f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
|
26
|
+
end
|
27
|
+
end
|
28
|
+
spec.bindir = "exe"
|
29
|
+
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
30
|
+
spec.require_paths = ["lib"]
|
31
|
+
|
32
|
+
# Runtime dependencies
|
33
|
+
spec.add_dependency "webrick"
|
34
|
+
spec.add_dependency "sorbet-runtime"
|
35
|
+
spec.add_dependency "net-http"
|
36
|
+
spec.add_dependency "uri"
|
37
|
+
|
38
|
+
# Development dependencies
|
39
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
40
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
41
|
+
spec.add_development_dependency "rubocop", "~> 1.21"
|
42
|
+
spec.add_development_dependency "sorbet", "~> 0.5"
|
43
|
+
spec.add_development_dependency "tapioca"
|
44
|
+
spec.add_development_dependency "standard"
|
45
|
+
spec.add_development_dependency "rspec-sorbet-types"
|
46
|
+
spec.add_development_dependency "dotenv"
|
47
|
+
end
|
metadata
ADDED
@@ -0,0 +1,278 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: tickrb
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Graham Turner
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2025-06-27 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: webrick
|
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: sorbet-runtime
|
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: net-http
|
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: uri
|
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: rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '3.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rake
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '13.0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '13.0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rubocop
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '1.21'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '1.21'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: sorbet
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0.5'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0.5'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: tapioca
|
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: standard
|
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
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: rspec-sorbet-types
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: dotenv
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
181
|
+
description: Longer description of what tickrb does
|
182
|
+
email:
|
183
|
+
- turnertgraham@gmail.com
|
184
|
+
executables: []
|
185
|
+
extensions: []
|
186
|
+
extra_rdoc_files: []
|
187
|
+
files:
|
188
|
+
- ".rspec"
|
189
|
+
- ".rubocop.yml"
|
190
|
+
- Gemfile
|
191
|
+
- Gemfile.lock
|
192
|
+
- LICENSE.txt
|
193
|
+
- README.md
|
194
|
+
- Rakefile
|
195
|
+
- lib/tickrb.rb
|
196
|
+
- lib/tickrb/auth.rb
|
197
|
+
- lib/tickrb/client.rb
|
198
|
+
- lib/tickrb/mcp_server.rb
|
199
|
+
- lib/tickrb/token_store.rb
|
200
|
+
- lib/tickrb/version.rb
|
201
|
+
- sorbet/config
|
202
|
+
- sorbet/rbi/gems/.gitattributes
|
203
|
+
- sorbet/rbi/gems/ast@2.4.3.rbi
|
204
|
+
- sorbet/rbi/gems/benchmark@0.4.1.rbi
|
205
|
+
- sorbet/rbi/gems/diff-lcs@1.6.2.rbi
|
206
|
+
- sorbet/rbi/gems/dotenv@3.1.8.rbi
|
207
|
+
- sorbet/rbi/gems/erubi@1.13.1.rbi
|
208
|
+
- sorbet/rbi/gems/json@2.12.2.rbi
|
209
|
+
- sorbet/rbi/gems/language_server-protocol@3.17.0.5.rbi
|
210
|
+
- sorbet/rbi/gems/lint_roller@1.1.0.rbi
|
211
|
+
- sorbet/rbi/gems/logger@1.7.0.rbi
|
212
|
+
- sorbet/rbi/gems/net-http@0.6.0.rbi
|
213
|
+
- sorbet/rbi/gems/netrc@0.11.0.rbi
|
214
|
+
- sorbet/rbi/gems/parallel@1.27.0.rbi
|
215
|
+
- sorbet/rbi/gems/parser@3.3.8.0.rbi
|
216
|
+
- sorbet/rbi/gems/prism@1.4.0.rbi
|
217
|
+
- sorbet/rbi/gems/racc@1.8.1.rbi
|
218
|
+
- sorbet/rbi/gems/rainbow@3.1.1.rbi
|
219
|
+
- sorbet/rbi/gems/rake@13.3.0.rbi
|
220
|
+
- sorbet/rbi/gems/rbi@0.3.3.rbi
|
221
|
+
- sorbet/rbi/gems/rbs@3.9.4.rbi
|
222
|
+
- sorbet/rbi/gems/regexp_parser@2.10.0.rbi
|
223
|
+
- sorbet/rbi/gems/rexml@3.4.1.rbi
|
224
|
+
- sorbet/rbi/gems/rspec-core@3.13.4.rbi
|
225
|
+
- sorbet/rbi/gems/rspec-expectations@3.13.5.rbi
|
226
|
+
- sorbet/rbi/gems/rspec-mocks@3.13.5.rbi
|
227
|
+
- sorbet/rbi/gems/rspec-sorbet-types@0.3.0.rbi
|
228
|
+
- sorbet/rbi/gems/rspec-support@3.13.4.rbi
|
229
|
+
- sorbet/rbi/gems/rspec@3.13.1.rbi
|
230
|
+
- sorbet/rbi/gems/rubocop-ast@1.45.0.rbi
|
231
|
+
- sorbet/rbi/gems/rubocop-performance@1.25.0.rbi
|
232
|
+
- sorbet/rbi/gems/rubocop@1.75.8.rbi
|
233
|
+
- sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi
|
234
|
+
- sorbet/rbi/gems/spoom@1.6.3.rbi
|
235
|
+
- sorbet/rbi/gems/standard-custom@1.0.2.rbi
|
236
|
+
- sorbet/rbi/gems/standard-performance@1.8.0.rbi
|
237
|
+
- sorbet/rbi/gems/standard@1.50.0.rbi
|
238
|
+
- sorbet/rbi/gems/tapioca@0.16.11.rbi
|
239
|
+
- sorbet/rbi/gems/thor@1.3.2.rbi
|
240
|
+
- sorbet/rbi/gems/unicode-display_width@3.1.4.rbi
|
241
|
+
- sorbet/rbi/gems/unicode-emoji@4.0.4.rbi
|
242
|
+
- sorbet/rbi/gems/uri@1.0.3.rbi
|
243
|
+
- sorbet/rbi/gems/webrick@1.9.1.rbi
|
244
|
+
- sorbet/rbi/gems/yard-sorbet@0.9.0.rbi
|
245
|
+
- sorbet/rbi/gems/yard@0.9.37.rbi
|
246
|
+
- sorbet/rbi/tickrb.rbi
|
247
|
+
- sorbet/tapioca.yml
|
248
|
+
- test_api_direct.rb
|
249
|
+
- test_mcp_server.rb
|
250
|
+
- tickrb.gemspec
|
251
|
+
homepage: https://github.com/tgturner/tickrb
|
252
|
+
licenses:
|
253
|
+
- MIT
|
254
|
+
metadata:
|
255
|
+
allowed_push_host: https://rubygems.org
|
256
|
+
homepage_uri: https://github.com/tgturner/tickrb
|
257
|
+
source_code_uri: https://github.com/tgturner/tickrb
|
258
|
+
changelog_uri: https://github.com/tgturner/tickrb/blob/main/CHANGELOG.md
|
259
|
+
post_install_message:
|
260
|
+
rdoc_options: []
|
261
|
+
require_paths:
|
262
|
+
- lib
|
263
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
264
|
+
requirements:
|
265
|
+
- - ">="
|
266
|
+
- !ruby/object:Gem::Version
|
267
|
+
version: 2.6.0
|
268
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
269
|
+
requirements:
|
270
|
+
- - ">="
|
271
|
+
- !ruby/object:Gem::Version
|
272
|
+
version: '0'
|
273
|
+
requirements: []
|
274
|
+
rubygems_version: 3.4.9
|
275
|
+
signing_key:
|
276
|
+
specification_version: 4
|
277
|
+
summary: A Ruby gem for tickrb functionality
|
278
|
+
test_files: []
|