ask-tools 0.1.2 → 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/tools/tool.rb +43 -0
- data/lib/ask/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8d01f01b47e797c394a9cc5cdc1c3232c68eefe868467e9f566e5b4a12b4fe64
|
|
4
|
+
data.tar.gz: 288e2acd5fbb771f4267f053c240c568014477b27fcf7c182121e2df05f484f8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5620cac66589fa5d51e92e71175f2b210fd0b468489e8210a6b0d72b262771e9316810fd2869368846ce56e9accca11e9ad8cf1873a6fb6a14de4d4839cce0d3
|
|
7
|
+
data.tar.gz: c96941efe222b6f611c46dabf22c8c5b301001400d47454919c3a0476351ff67da7207fbe46674bfa76581b8cb2ccb18bd2aa801fe704b1956db2bb48409b0e7
|
data/lib/ask/tools/tool.rb
CHANGED
|
@@ -48,6 +48,49 @@ module Ask
|
|
|
48
48
|
@provider_params ||= {}
|
|
49
49
|
end
|
|
50
50
|
|
|
51
|
+
def params_schema
|
|
52
|
+
@params_schema ||= begin
|
|
53
|
+
if @params_schema_definition
|
|
54
|
+
deep_stringify_keys(resolve_params_schema(@params_schema_definition))
|
|
55
|
+
elsif @parameters && @parameters.any?
|
|
56
|
+
build_schema_from_params
|
|
57
|
+
else
|
|
58
|
+
nil
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def build_schema_from_params
|
|
64
|
+
properties = parameters.to_h do |_name, param|
|
|
65
|
+
schema = { type: param.type }
|
|
66
|
+
schema[:description] = param.description if param.description
|
|
67
|
+
schema[:items] = { type: "string" } if param.type == "array"
|
|
68
|
+
[param.name.to_s, schema]
|
|
69
|
+
end
|
|
70
|
+
required = parameters.select { |_, p| p.required }.keys.map(&:to_s)
|
|
71
|
+
{ type: "object", properties: properties, required: required, additionalProperties: false }
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def resolve_params_schema(definition)
|
|
75
|
+
case definition
|
|
76
|
+
when Proc
|
|
77
|
+
schema_class = Ask::Schema.create(&definition)
|
|
78
|
+
schema_class.new.to_json_schema.dig(:schema)
|
|
79
|
+
when Hash then definition
|
|
80
|
+
when ->(d) { d.respond_to?(:to_json_schema) }
|
|
81
|
+
definition.to_json_schema.dig(:schema)
|
|
82
|
+
else nil
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def deep_stringify_keys(obj)
|
|
87
|
+
case obj
|
|
88
|
+
when Hash then obj.each_with_object({}) { |(k, v), h| h[k.to_s] = deep_stringify_keys(v) }
|
|
89
|
+
when Array then obj.map { |v| deep_stringify_keys(v) }
|
|
90
|
+
else obj
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
51
94
|
private
|
|
52
95
|
|
|
53
96
|
def validate_param_type!(type, name)
|
data/lib/ask/version.rb
CHANGED