ilo 0.8.2

ilo — a programming language for AI agents
-- 05: Workflow

tool charge "Charge a payment method"
	payment-id: text, amount: number -> result text, text
	timeout: 30, retry: 0

tool reserve "Reserve items in warehouse"
	items: list item -> result text, text
	timeout: 10, retry: 1

tool release "Release reserved inventory"
	reservation-id: text -> result nil, text
	timeout: 10, retry: 2

type item
	sku: text
	quantity: number

type receipt
	order-id: text
	charge-id: text
	reservation-id: text

fn checkout
	@ charge from tools
	@ reserve from tools
	@ release from tools
	@ make-id from orders
	payment-id: text, amount: number, items: list item -> result receipt, text
	-- Step 1: Reserve inventory
	let reserved = reserve items: items
	match reserved
		err e: err concat "Inventory unavailable: " e
	let rid = unwrap reserved
	-- Step 2: Charge payment (compensate on failure)
	let charged = charge payment-id: payment-id, amount: amount
	match charged
		err e:
			release reservation-id: rid
			err concat "Payment failed: " e
	let cid = unwrap charged
	-- Step 3: Generate order
	let oid = make-id
	ok receipt
		order-id: oid,
		charge-id: cid,
		reservation-id: rid