(text: string)
| 148 | }).pipe(Effect.timeout(Duration.seconds(10)), Effect.withSpan("IntegrationsRegistry.fetch")); |
| 149 | |
| 150 | const writeCache = (text: string) => |
| 151 | Effect.gen(function* () { |
| 152 | yield* fs.makeDirectory(cacheDir, { recursive: true }).pipe(Effect.ignore); |
| 153 | yield* fs.writeFileString(cacheFile, text); |
| 154 | }); |
| 155 | |
| 156 | // Cross-process advisory lock so concurrent CLI invocations don't all |
| 157 | // race to refresh the same file. Best-effort: if we can't acquire, |