| 1213 | /** The artifact as THIS caller can read it. A miss and a row owned by |
| 1214 | * someone else are the same answer, because they are the same query. */ |
| 1215 | const loadArtifact = (id: string): Effect.Effect<Artifact | null> => |
| 1216 | config.artifacts |
| 1217 | ? config.artifacts.get(id).pipe(Effect.catchCause(() => Effect.succeed(null))) |
| 1218 | : Effect.succeed(null); |
| 1219 | |
| 1220 | // `execute-action` is `execute` as called by the shell rather than by the |
| 1221 | // model, and the difference is who owns approval. The shell renders the |