107589420c
Adds a new `streams.input<T>()` API that enables external callers to send typed data into running tasks. Inside tasks, data is received via `.on()`, `.once()`, and `.peek()` methods. Outside tasks, `.send(runId, data)` pushes data through a new platform API route. Architecture: - All input streams for a run multiplex onto a single `__input` stream - Worker demuxes by stream ID and routes to registered handlers - Lazy stream creation on first `.send()` call - New IPC message `INPUT_STREAM_CREATED` triggers worker tail connection New files: - packages/core/src/v3/inputStreams/ (manager, types, noop, singleton) - apps/webapp/app/routes/realtime.v1.streams.$runId.input.$streamId.ts - DB migration for hasInputStream field on TaskRun https://claude.ai/code/session_01SJHJts7r2yAxmoKLLz8vpc