completion-kit 0.28.5 → 0.28.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4206f8709997fb6c2e5055bcf2f201eda59d4de2c7c3ef15fc7f98dac4f92a21
4
- data.tar.gz: 83e6756cc1f5ed0606d01f7e269e7157146a9efe539c7550f4dd33ace35914b0
3
+ metadata.gz: 15a1909a7793a8a6cb9e0d95eb333483823c0040dd902b40a4a50e3ced485bee
4
+ data.tar.gz: fc407f0abd09a7505d56a96d4adcad8f9aedfa7ec6aaa4de928fb71fb8a9859c
5
5
  SHA512:
6
- metadata.gz: 8edabb8604bbee9c38c9cf070add0732592c8392f686f8f224c8ca82cd7aef1d3a581011f41da48eb7cbd3cd0bd26a0331002483843183cf62e4167ea408689c
7
- data.tar.gz: 2afb4955b727b0bca04939e4d2ce2a6fd61b25e66e3bbe843b39e48ca0a81be30fd845369b30c39b7c17d71d7029d947eb3221d78ca9f0f1faeba9e8eab0a179
6
+ metadata.gz: 16242a62b2e34fc8667093e88cb77cba25fcdaab65c4603cfd693fbe3dcce71ac34a76a501ffb1725a8d868ee78107775984d42135d9b98ca846f48712416634
7
+ data.tar.gz: a3b5ba5d4eda948f3c2e2d0c5f75262793e3ddf439aac7e4a33c782df93dd0a4944e1b2b8655836fb4df25ae0f4e1e6a70ccb3b795a53d78951cac30456256dd
@@ -1,7 +1,17 @@
1
1
  module CompletionKit
2
2
  class McpController < Api::V1::BaseController
3
+ PUBLIC_METHODS = %w[initialize notifications/initialized tools/list].freeze
4
+
5
+ skip_before_action :authenticate_api!, only: [:stream, :handle], raise: false
6
+
7
+ def stream
8
+ response.set_header("Allow", "POST, DELETE")
9
+ head :method_not_allowed
10
+ end
11
+
3
12
  def handle
4
13
  request_body = JSON.parse(request.body.read)
14
+ return unless authorize_mcp_method(request_body["method"])
5
15
 
6
16
  if request_body["method"] == "initialize"
7
17
  result = McpDispatcher.initialize_session
@@ -41,6 +51,12 @@ module CompletionKit
41
51
 
42
52
  private
43
53
 
54
+ def authorize_mcp_method(method)
55
+ return true if PUBLIC_METHODS.include?(method)
56
+ authenticate_api!
57
+ !performed?
58
+ end
59
+
44
60
  def jsonrpc_response(id, result)
45
61
  {jsonrpc: "2.0", id: id, result: result}
46
62
  end
data/config/routes.rb CHANGED
@@ -102,6 +102,7 @@ CompletionKit::Engine.routes.draw do
102
102
  end
103
103
  end
104
104
 
105
+ get "mcp", to: "mcp#stream"
105
106
  post "mcp", to: "mcp#handle"
106
107
  delete "mcp", to: "mcp#destroy"
107
108
  end
@@ -1,3 +1,3 @@
1
1
  module CompletionKit
2
- VERSION = "0.28.5"
2
+ VERSION = "0.28.7"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: completion-kit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.28.5
4
+ version: 0.28.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Damien Bastin
@@ -189,14 +189,14 @@ dependencies:
189
189
  requirements:
190
190
  - - "~>"
191
191
  - !ruby/object:Gem::Version
192
- version: '0.22'
192
+ version: '1.0'
193
193
  type: :development
194
194
  prerelease: false
195
195
  version_requirements: !ruby/object:Gem::Requirement
196
196
  requirements:
197
197
  - - "~>"
198
198
  - !ruby/object:Gem::Version
199
- version: '0.22'
199
+ version: '1.0'
200
200
  - !ruby/object:Gem::Dependency
201
201
  name: solid_queue
202
202
  requirement: !ruby/object:Gem::Requirement