| ... | @@ -948,16 +948,35 @@ export const subscribeOrchestrationV2Shell = Effect.fn("ws.orchestrationV2.subsc | ... | @@ -948,16 +948,35 @@ export const subscribeOrchestrationV2Shell = Effect.fn("ws.orchestrationV2.subsc |
| 948 | const enrichmentRefreshes = Stream.fromSubscription(enrichmentChanges).pipe( | 948 | const enrichmentRefreshes = Stream.fromSubscription(enrichmentChanges).pipe( |
| 949 | Stream.filter((change) => change.repositoryIdentityResolved), | 949 | Stream.filter((change) => change.repositoryIdentityResolved), |
| 950 | Stream.groupedWithin(64, Duration.millis(25)), | 950 | Stream.groupedWithin(64, Duration.millis(25)), |
| | 951 | // Build the refresh from the identities the changes carry. Re-enriching |
| | 952 | // every project here re-requested each expired root, whose resolution |
| | 953 | // published again, so one expiry kept every subscriber reloading every |
| | 954 | // project's metadata once a minute. |
| 951 | Stream.mapEffect((changes) => | 955 | Stream.mapEffect((changes) => |
| 952 | applicationEvents.latestApplicationSequence.pipe( | 956 | Effect.gen(function* () { |
| 953 | Effect.flatMap(loadProjectMetadataSnapshot), | 957 | const identities = new Map( |
| 954 | Effect.map(({ snapshot }) => | 958 | Array.from(changes, (change) => [ |
| 955 | shellStreamItemFromEnrichmentRefresh({ | 959 | change.workspaceRoot, |
| 956 | snapshot, | 960 | change.enrichment.repositoryIdentity, |
| 957 | changes: Array.from(changes), | 961 | ]), |
| 958 | }), | 962 | ); |
| 959 | ), | 963 | const snapshotSequence = yield* applicationEvents.latestApplicationSequence; |
| 960 | ), | 964 | const changedProjects = (yield* projects.listShells()).flatMap((project) => |
| | 965 | identities.has(project.workspaceRoot) |
| | 966 | ? [{ ...project, repositoryIdentity: identities.get(project.workspaceRoot) ?? null }] |
| | 967 | : [], |
| | 968 | ); |
| | 969 | return shellStreamItemFromEnrichmentRefresh({ |
| | 970 | snapshot: { |
| | 971 | schemaVersion: ORCHESTRATION_V2_PROJECTION_SCHEMA_VERSION, |
| | 972 | snapshotSequence, |
| | 973 | projects: changedProjects, |
| | 974 | threads: [], |
| | 975 | archivedThreads: [], |
| | 976 | } as OrchestrationV2ShellSnapshot, |
| | 977 | changes: Array.from(changes), |
| | 978 | }); |
| | 979 | }), |
| 961 | ), | 980 | ), |
| 962 | ); | 981 | ); |
| 963 | | 982 | |