ask-computer-mcp 0.1.1 → 0.1.3
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 +4 -4
- data/lib/ask/computer/mcp/version.rb +1 -1
- data/lib/ask/computer/mcp.rb +55 -1
- metadata +45 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c01bd67cc36eee6a43b81ddfc3db6591a6194032f1901ab03d9afd4189f8d321
|
|
4
|
+
data.tar.gz: 58ad56c6b71db859571e92b6d60cde18c0069db18132802538eb263f15846e95
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c05bd35cc34481d2f9c784902322776b71e423677f25db4959655a6f841b913f0bcc8c55e459b29826f2217d5d1c5165c28a5354a9f7aefdedc10a729419ded1
|
|
7
|
+
data.tar.gz: e6c5c78875c18b5f66151ee186da12b9a9b2d45770324eb1c6eba9815bc6d9947d938c77feb89054f5b6e999bf71b9f02dfab2f3baec04102d4da10680b4f639
|
data/lib/ask/computer/mcp.rb
CHANGED
|
@@ -4,6 +4,15 @@ require "ask-computer"
|
|
|
4
4
|
require "ask/mcp"
|
|
5
5
|
require_relative "mcp/version"
|
|
6
6
|
|
|
7
|
+
# Load ask-decisions when available — adds the Decide tool and AgentAdapter.
|
|
8
|
+
begin
|
|
9
|
+
require "ask-decisions"
|
|
10
|
+
require "ask/decisions/mcp_helper"
|
|
11
|
+
require "ask/decisions/agent_adapter"
|
|
12
|
+
rescue LoadError
|
|
13
|
+
# ask-decisions not installed — decision layer unavailable
|
|
14
|
+
end
|
|
15
|
+
|
|
7
16
|
module Ask
|
|
8
17
|
module Computer
|
|
9
18
|
module MCP
|
|
@@ -21,8 +30,34 @@ module Ask
|
|
|
21
30
|
ALL_TOOLS = COMPUTER_TOOLS.freeze
|
|
22
31
|
|
|
23
32
|
class << self
|
|
33
|
+
# Build the tool list. Includes the Decide tool when ask-decisions
|
|
34
|
+
# is available and a decision provider is configured.
|
|
24
35
|
def tools
|
|
25
|
-
@tools ||=
|
|
36
|
+
@tools ||= build_tools
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Create an AgentAdapter for ask-agent sessions. Returns nil when
|
|
40
|
+
# ask-decisions is not installed.
|
|
41
|
+
#
|
|
42
|
+
# adapter = Ask::Computer::MCP.agent_adapter(
|
|
43
|
+
# decision_provider: :typesafe,
|
|
44
|
+
# gate_tools: %w[click type key],
|
|
45
|
+
# gate_thresholds: { "click" => 0.8 }
|
|
46
|
+
# )
|
|
47
|
+
# adapter.before_tool_hooks # => [gate_hook]
|
|
48
|
+
# adapter.after_tool_hooks # => [output_judge_hook]
|
|
49
|
+
def agent_adapter(config = {})
|
|
50
|
+
return nil unless defined?(Ask::Decisions::AgentAdapter)
|
|
51
|
+
|
|
52
|
+
provider_name = config.fetch(:decision_provider,
|
|
53
|
+
Ask::Decisions.configuration.default_provider)
|
|
54
|
+
Ask::Decisions::AgentAdapter.new(provider_name, config)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# Check whether the Decide tool is available (ask-decisions loaded,
|
|
58
|
+
# Ask::Tools::Decide defined, and a provider is configured).
|
|
59
|
+
def decisions_available?
|
|
60
|
+
defined?(Ask::Tools::Decide) && decision_provider_configured?
|
|
26
61
|
end
|
|
27
62
|
|
|
28
63
|
def start
|
|
@@ -42,6 +77,25 @@ module Ask
|
|
|
42
77
|
|
|
43
78
|
private
|
|
44
79
|
|
|
80
|
+
def build_tools
|
|
81
|
+
list = ALL_TOOLS.map(&:new)
|
|
82
|
+
append_decide_tool(list) if decisions_available?
|
|
83
|
+
list
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def append_decide_tool(list)
|
|
87
|
+
return unless defined?(Ask::Decisions::MCPHelper)
|
|
88
|
+
|
|
89
|
+
list << Ask::Decisions::MCPHelper.tool
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def decision_provider_configured?
|
|
93
|
+
Ask::Decisions.configuration.default_provider
|
|
94
|
+
true
|
|
95
|
+
rescue Ask::UnknownProvider, NameError
|
|
96
|
+
false
|
|
97
|
+
end
|
|
98
|
+
|
|
45
99
|
def ensure_driver
|
|
46
100
|
return if Ask::Computer.installed?
|
|
47
101
|
warn "[ask-computer-mcp] Cua Driver not found — running installer (stable channel)..."
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ask-computer-mcp
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kaka Ruto
|
|
@@ -29,14 +29,28 @@ dependencies:
|
|
|
29
29
|
requirements:
|
|
30
30
|
- - ">="
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: 0.
|
|
32
|
+
version: 0.6.1
|
|
33
33
|
type: :runtime
|
|
34
34
|
prerelease: false
|
|
35
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
36
36
|
requirements:
|
|
37
37
|
- - ">="
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: 0.
|
|
39
|
+
version: 0.6.1
|
|
40
|
+
- !ruby/object:Gem::Dependency
|
|
41
|
+
name: ask-decisions
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - ">="
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: 0.1.0
|
|
47
|
+
type: :runtime
|
|
48
|
+
prerelease: false
|
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - ">="
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: 0.1.0
|
|
40
54
|
- !ruby/object:Gem::Dependency
|
|
41
55
|
name: minitest
|
|
42
56
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -79,6 +93,34 @@ dependencies:
|
|
|
79
93
|
- - "~>"
|
|
80
94
|
- !ruby/object:Gem::Version
|
|
81
95
|
version: '3.1'
|
|
96
|
+
- !ruby/object:Gem::Dependency
|
|
97
|
+
name: webmock
|
|
98
|
+
requirement: !ruby/object:Gem::Requirement
|
|
99
|
+
requirements:
|
|
100
|
+
- - "~>"
|
|
101
|
+
- !ruby/object:Gem::Version
|
|
102
|
+
version: '3.18'
|
|
103
|
+
type: :development
|
|
104
|
+
prerelease: false
|
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
106
|
+
requirements:
|
|
107
|
+
- - "~>"
|
|
108
|
+
- !ruby/object:Gem::Version
|
|
109
|
+
version: '3.18'
|
|
110
|
+
- !ruby/object:Gem::Dependency
|
|
111
|
+
name: vcr
|
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
|
113
|
+
requirements:
|
|
114
|
+
- - "~>"
|
|
115
|
+
- !ruby/object:Gem::Version
|
|
116
|
+
version: '6.0'
|
|
117
|
+
type: :development
|
|
118
|
+
prerelease: false
|
|
119
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
120
|
+
requirements:
|
|
121
|
+
- - "~>"
|
|
122
|
+
- !ruby/object:Gem::Version
|
|
123
|
+
version: '6.0'
|
|
82
124
|
description: |
|
|
83
125
|
Exposes the ask-computer tools (HistoryStatus, HistoryQuery, Screenshot,
|
|
84
126
|
Click, Type, Key, InstallerStatus, InstallerSetup) as MCP tools. Coding
|