Channels previously deleted downloaded media files via defer os.Remove, racing with the async Agent consumer. Introduce MediaStore to decouple file ownership: channels register files on download, Agent releases them after processing via ReleaseAll(scope). - New pkg/media with MediaStore interface + FileMediaStore implementation - InboundMessage gains MediaScope field for lifecycle tracking - BaseChannel gains SetMediaStore/GetMediaStore + BuildMediaScope helper - Manager injects MediaStore into channels; AgentLoop releases on completion - Telegram, Discord, Slack, OneBot, LINE channels migrated from defer os.Remove to store.Store() with media:// refs |
||
|---|---|---|
| .. | ||
| context.go | ||
| context_cache_test.go | ||
| context_test.go | ||
| instance.go | ||
| instance_test.go | ||
| loop.go | ||
| loop_test.go | ||
| memory.go | ||
| mock_provider_test.go | ||
| registry.go | ||
| registry_test.go | ||