Skip to content

fix(chat): render assistant-generated images inline - #6558

Closed
aGamingGod1234 wants to merge 3 commits into
pingdotgg:mainfrom
aGamingGod1234:agent/inline-generated-images
Closed

fix(chat): render assistant-generated images inline#6558
aGamingGod1234 wants to merge 3 commits into
pingdotgg:mainfrom
aGamingGod1234:agent/inline-generated-images

fix(chat): harden image download fallback

2cd94e1
Select commit
Loading
Failed to load commit list.
MacroscopeApp / Macroscope - Effect Service Conventions succeeded Aug 14, 2026 in 59s

All clear

All clear

Details

Note

Your check run agent prompt is: .macroscope/check-run-agents/effect-service-conventions.md
More information about how Check Run Agents work can be found in our Help Center.


🔍 Agent activity — reasoning, no tool calls

💭 I'm reviewing the TypeScript files in the Effect codebase, starting with the AssistantImageAttachments module. The imports look standard — using the Effect library conventions with proper named imports for Effect, FileSystem, and Predicate. I notice the persistAssistantImageInputs function uses Effect.fn, but there's an issue: no error class has been defined for handling failures in this function. Looking at the error handling, the code catches causes with Effect.catchCause and logs warnings. The logging approach here seems acceptable — logging the cause alongside a warning message is different from the guidance about not reintroducing serialized error fields. Since this is a helper module rather than a service definition, most of the service conventions don't apply here. Checking the web app changes, those are React hooks and atoms, not Effect services. The server-side code correctly consumes FileSystem and ServerConfig through yield* syntax, and the namespace import of the local service module follows the right pattern. I need to verify whether the ServerConfig.layerTest signature changed in this PR — the test calls it with a prefix parameter, but I don't see config.ts modifications in the diff. The layerTest signature already handles the object form correctly. Looking at conventions, this is a helper module that properly consumes FileSystem and ServerConfig through the environment rather than as a service. The test file imports the right dependencies and uses Effect.provideService to inject the guarded filesystem as a test seam. No new errors to report. For error handling, the module uses Effect.catchCause to swallow failures into warning logs, which aligns with the convention that this is best-effort persistence. Now I need to examine ProviderRuntimeIngestion.ts more closely to check the surrounding context and import boundaries, then look at the web app's assetUrls.ts and ChatView components for any Effect service issues. Looking at the Effect code conventions in the touched files — the test imports from @effect/vitest and the wildcard imports from effect/Layer are both fine. The yield syntax in AssistantImageAttachments.test.ts follows the right pattern. I should check if there are any consolidated named imports from "effect" that might need refactoring across the changed files. Now I'm checking whether the default import from @effect/platform-node/Mime aligns with the repo's conventions by looking at how other files handle similar imports. The persist function follows conventions properly since it's a plain exported Effect helper that consumes FileSystem and ServerConfig through the environment without creating new service definitions. The error handling in persistAssistantImageInputs catches all failures and logs them, which doesn't require a new error class, though there's a question about whether logging the cause object might inadvertently include arbitrary defect text that the conventions discourage. Looking at the other changes — MessageId.make calls are fine, the mobile threadActivity logic is pure, and the test harness changes don't introduce any Layer.succeed or runPromise issues. The import statement added at the bottom of ExpandedImagePreview.tsx is stylistically odd but not an Effect service convention violation. No findings overall.


Agent Credits: 60 credits