Chaining app intents in code

I would like to split up my intents into smaller intents with more atomic pieces of functionality that I can then call one intent from another. For example:

struct SumValuesIntent: AppIntent {

	static var title: LocalizedStringResource { "Sum Values" }

	let a: Int
	let b: Int

	init(a: Int, b: Int) {
		self.a = a
		self.b = b
	}

	init() {
		self.init(a: 0, b: 0)
	}

	func perform() async throws -> some IntentResult {
		let sum = a + b
		print("SumValuesIntent:", sum)
		return .result(value: sum)
	}

}

struct PrintValueIntent: AppIntent {

	static var title: LocalizedStringResource { "Print Value" }

	let string: String

	init(string: String) {
		self.string = string
	}

	init() {
		self.init(string: "")
	}

	func perform() async throws -> some IntentResult {
		print("PrintValueIntent:", string)
		return .result()
	}

}

What is the best way to chain intents like these? I tried

.result(opensIntent: PrintValueIntent(string: String(describing: sum)))

as the return type of SumValuesIntent.perform but that doesn't seem to work. Then I tried

try await PrintValueIntent(string: String(describing: sum)).perform()

as the return type and that works but I'm not sure that's the correct way to do it.

Chaining app intents in code
 
 
Q