Logger and metadata

logger.debug, info, warn, and error accept a message and optional JSON-valued attributes. Each returns Promise<void>.

await logger.info("processing", { itemId: "item_123" })

metadata.set(key, value), metadata.patch(values), and metadata.increment(key, amount = 1) mutate current Run metadata and also return Promise<void>. Await these acknowledged runtime operations.

Structured logs appear as kind: "structured" records with level, message, attributes, Run ID, attempt number, and timestamp. Stdout and stderr are separate base64-encoded stream records.