Skip to content

Commit 931f17e

Browse files
committed
Fix for AdditionalProperties schema change
1 parent cbdab65 commit 931f17e

File tree

2 files changed

+37
-21
lines changed

2 files changed

+37
-21
lines changed

examples/ios_calendar_assistant/iOSCalendarAssistantWithLocalInf/ContentView.swift

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -241,13 +241,18 @@ struct ContentView: View {
241241
switch (call.tool_call) {
242242
case .ToolCall(let toolCall):
243243
var args: [String : String] = [:]
244-
for (arg_name, arg) in toolCall.arguments.additionalProperties {
245-
switch (arg) {
246-
case .case1(let s):
247-
args[arg_name] = s
248-
case .case2(_), .case3(_), .case4(_), .case5(_), .case6(_):
244+
switch toolCall.arguments {
245+
case .case1(let s):
249246
break
250-
}
247+
case .case2(let case2Payload):
248+
for (arg_name, arg) in case2Payload.additionalProperties {
249+
switch (arg) {
250+
case .case1(let s):
251+
args[arg_name] = s
252+
case .case2(_), .case3(_), .case4(_), .case5(_), .case6(_):
253+
break
254+
}
255+
}
251256
}
252257

253258
let formatter = DateFormatter()

local_inference/LocalInferenceImpl/Parsing.swift

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -176,27 +176,38 @@ public func maybeExtractCustomToolCalls(input: String) -> [Components.Schemas.To
176176
return []
177177
}
178178

179-
var props: [String : Components.Schemas.ToolCall.argumentsPayload.additionalPropertiesPayload] = [:]
180-
for (param_name, param) in params {
181-
switch (param) {
182-
case let value as String:
183-
props[param_name] = .case1(value)
184-
case let value as Int:
185-
props[param_name] = .case2(value)
186-
case let value as Double:
187-
props[param_name] = .case3(value)
188-
case let value as Bool:
189-
props[param_name] = .case4(value)
190-
default:
191-
return []
179+
var props: [String : Components.Schemas.ToolCall.argumentsPayload] = [:]
180+
for (param_name, param) in params {
181+
switch (param) {
182+
case let value as String:
183+
props[param_name] = .case1(value)
184+
case let value as Int:
185+
var additionalProps: [String: Components.Schemas.ToolCall.argumentsPayload.Case2Payload.additionalPropertiesPayload] = [:]
186+
additionalProps[param_name] = .case2(value)
187+
let payload = Components.Schemas.ToolCall.argumentsPayload.Case2Payload(additionalProperties: additionalProps)
188+
props[param_name] = .case2(payload)
189+
case let value as Double:
190+
var additionalProps: [String: Components.Schemas.ToolCall.argumentsPayload.Case2Payload.additionalPropertiesPayload] = [:]
191+
additionalProps[param_name] = .case3(value)
192+
let payload = Components.Schemas.ToolCall.argumentsPayload.Case2Payload(additionalProperties: additionalProps)
193+
props[param_name] = .case2(payload)
194+
case let value as Bool:
195+
var additionalProps: [String: Components.Schemas.ToolCall.argumentsPayload.Case2Payload.additionalPropertiesPayload] = [:]
196+
additionalProps[param_name] = .case4(value)
197+
let payload = Components.Schemas.ToolCall.argumentsPayload.Case2Payload(additionalProperties: additionalProps)
198+
props[param_name] = .case2(payload)
199+
default:
200+
return []
201+
}
192202
}
193-
}
203+
204+
let case2Payload = try Components.Schemas.ToolCall.argumentsPayload.Case2Payload(from: props as! Decoder)
194205

195206
result.append(
196207
Components.Schemas.ToolCall(
197208
call_id: UUID().uuidString,
198209
tool_name: .case2(name), // custom_tool
199-
arguments: .init(additionalProperties: props)
210+
arguments: .case2(case2Payload)
200211
)
201212
)
202213
}

0 commit comments

Comments
 (0)