Resolve a content reference your app found in content it ALREADY holds
(FILE_SHARING §7 / UI_AS_APPS §8.7; "plan 12 §E"). This is a RELAY, not a
fabrication: the host honors it ONLY when your app
already holds a grant to ref.mountId (else forbidden) — apps follow
writer-authored links inside granted content; they cannot name a space from
nothing (T27). The host runs a per-VIEWER consent prompt (named via the owning
app's project sidecar), and existence is never leaked — a decline and a
non-existent path are indistinguishable.
On allow, the host APPENDS a read scope for the referenced path to your grant
(durable; same §8.15 lifecycle) and returns the STABLE absolute path the file
is mounted at — identical for every viewer, so a path the author stored resolves
the same for you. Read it through the fs module at that path. Rejects with a
SpaceError: forbidden (you don't hold the referenced mount) or
cancelled (the viewer declined / the path doesn't exist — no oracle).
Resolve a content reference your app found in content it ALREADY holds (FILE_SHARING §7 / UI_AS_APPS §8.7; "plan 12 §E"). This is a RELAY, not a fabrication: the host honors it ONLY when your app already holds a grant to
ref.mountId(elseforbidden) — apps follow writer-authored links inside granted content; they cannot name a space from nothing (T27). The host runs a per-VIEWER consent prompt (named via the owning app's project sidecar), and existence is never leaked — a decline and a non-existent path are indistinguishable.On allow, the host APPENDS a read scope for the referenced path to your grant (durable; same §8.15 lifecycle) and returns the STABLE absolute
paththe file is mounted at — identical for every viewer, so a path the author stored resolves the same for you. Read it through thefsmodule at that path. Rejects with a SpaceError:forbidden(you don't hold the referenced mount) orcancelled(the viewer declined / the path doesn't exist — no oracle).const { path } = await resolveContentRef(ref); const text = await fs.promises.readFile(path, 'utf8');