ask-core 0.1.5 → 0.2.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 +4 -4
- data/lib/ask/conversation.rb +9 -0
- data/lib/ask/tool_def.rb +19 -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: 5bdccf7f79627afa2402bf1664f73aeab7129095e09694fdb9acda35dc56ce0c
|
|
4
|
+
data.tar.gz: d2af40aed07e8036b583cfb0b85469c87b85c32a2fdcd5678ccf127fc6dbbdaf
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 41689e4eb0b4b41e719d642aa6407cb89c104d53ce8c164b8ebed117fd76655752edd2c0dd011d1534425cb66dd0d1c6e457fa441f858507d8a6f91e5ac065ba
|
|
7
|
+
data.tar.gz: 66b66595e04e62e750c02f899e1c90fc72f1b2b198b855d0c616ae391f22e1b304bd46b4539603484cf7f566facb8d5782cc20c688490402bc345d776d5cdb23
|
data/lib/ask/conversation.rb
CHANGED
|
@@ -248,6 +248,15 @@ module Ask
|
|
|
248
248
|
# @return [Array<Ask::Message>] tool messages
|
|
249
249
|
def tool_messages = by_role(:tool)
|
|
250
250
|
|
|
251
|
+
# Walk message history to find a matching assistant tool call for a tool result.
|
|
252
|
+
# Returns the assistant message that contains the tool call, or nil.
|
|
253
|
+
def find_matching_tool_call(tool_call_id)
|
|
254
|
+
@messages.reverse.find do |m|
|
|
255
|
+
next unless m.role == :assistant && m.tool_calls.is_a?(Hash)
|
|
256
|
+
m.tool_calls.key?(tool_call_id)
|
|
257
|
+
end
|
|
258
|
+
end
|
|
259
|
+
|
|
251
260
|
# Deep copy of this conversation.
|
|
252
261
|
# @return [Ask::Conversation]
|
|
253
262
|
def dup
|
data/lib/ask/tool_def.rb
CHANGED
|
@@ -30,6 +30,25 @@ module Ask
|
|
|
30
30
|
provider_params: tool.provider_params
|
|
31
31
|
)
|
|
32
32
|
end
|
|
33
|
+
|
|
34
|
+
# Safely create a ToolDef, returning nil instead of raising on invalid input.
|
|
35
|
+
# Calls the optional log block with the error message if creation fails.
|
|
36
|
+
#
|
|
37
|
+
# @yield [message] called with the error message if creation fails
|
|
38
|
+
# @yieldparam message [String] the error description
|
|
39
|
+
# @return [Ask::ToolDef, nil] the created ToolDef or nil on failure
|
|
40
|
+
def safe_create(name:, description: "", parameters: nil, provider_params: {}, &log_block)
|
|
41
|
+
new(name: name, description: description, parameters: parameters, provider_params: provider_params)
|
|
42
|
+
rescue InvalidToolDefinition => e
|
|
43
|
+
msg = e.message
|
|
44
|
+
if log_block
|
|
45
|
+
log_block.call(msg)
|
|
46
|
+
else
|
|
47
|
+
$stderr.puts "[ask-core] ToolDef.safe_create skipped: #{msg}"
|
|
48
|
+
end
|
|
49
|
+
nil
|
|
50
|
+
end
|
|
51
|
+
|
|
33
52
|
end
|
|
34
53
|
|
|
35
54
|
# @return [String] tool name (must match /\\A[a-zA-Z_][a-zA-Z0-9_-]*\\z/)
|
data/lib/ask/version.rb
CHANGED