From 4245f3e12853a0f3136a103cff07b31e53baac7b Mon Sep 17 00:00:00 2001 From: vthwang Date: Wed, 12 Aug 2026 11:42:22 -0700 Subject: [PATCH] feat: advertise TSP alongside DIDComm across all four components MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Images are built with TSP; the recipes now match. - vta-setup.toml (both modes): [services] tsp = true - mediator-recipe.toml: protocols = ["didcomm", "tsp"] - webvh-recipe.toml: [identity] transport = "both" - vtc-setup.toml: [messaging] transports = ["tsp", "didcomm"] The VTC's `transports` is required — `MessagingSetup` has no serde default, so a [messaging] table without it fails to deserialize on any vtc image from #929 onward, TSP or not. full_stack's [messaging] deliberately gains no `protocols` key: omitted, setup derives the minted mediator's transports from [services]. Signed-off-by: vthwang --- docs/full-stack-setup-design.md | 6 +++++- docs/vta-setup-design.md | 1 + internal/setup/templates.go | 1 + internal/setup/templates_fullstack.go | 4 +++- internal/setup/templates_vtc.go | 1 + 5 files changed, 11 insertions(+), 2 deletions(-) diff --git a/docs/full-stack-setup-design.md b/docs/full-stack-setup-design.md index fc16fd3..9eb5abe 100644 --- a/docs/full-stack-setup-design.md +++ b/docs/full-stack-setup-design.md @@ -861,6 +861,7 @@ public_url = "{{ .VtaPublicURL }}" # https://vta-{vta_name}.{domain} [services] rest = true didcomm = true +tsp = true [server] host = "0.0.0.0" @@ -900,7 +901,7 @@ pre_rotation_count = {{ .PreRotationCount }} ```toml [deployment] type = "server" -protocols = ["didcomm"] +protocols = ["didcomm", "tsp"] use_vta = true vta_mode = "sealed-export" @@ -956,6 +957,7 @@ data_dir = "data/daemon" [identity] public_url = "{{ .PublicURL }}" # https://dids-{vta_name}.{domain} mediator_did = "{{ .MediatorDid }}" # 1b +transport = "both" [vta] request_path = "bootstrap-request.json" # phase 1 only @@ -1014,6 +1016,7 @@ path = "{{ .VtcName }}-vtc" # DID path — did:webvh::` as the exists-tolerant regrant | `vta-service/src/main.rs::ImportDid` (`--context Vec`) | diff --git a/docs/vta-setup-design.md b/docs/vta-setup-design.md index 3ba96ab..5a30f71 100644 --- a/docs/vta-setup-design.md +++ b/docs/vta-setup-design.md @@ -351,6 +351,7 @@ public_url = "{{ .PublicURL }}" # https://{subdomain}.{CLUSTER_DOMAIN [services] rest = true didcomm = true +tsp = true [server] host = "0.0.0.0" diff --git a/internal/setup/templates.go b/internal/setup/templates.go index c4c64be..ca8db0f 100644 --- a/internal/setup/templates.go +++ b/internal/setup/templates.go @@ -15,6 +15,7 @@ public_url = "{{ .PublicURL }}" [services] rest = true didcomm = true +tsp = true [server] host = "0.0.0.0" diff --git a/internal/setup/templates_fullstack.go b/internal/setup/templates_fullstack.go index f56c065..98eb6da 100644 --- a/internal/setup/templates_fullstack.go +++ b/internal/setup/templates_fullstack.go @@ -18,6 +18,7 @@ public_url = "{{ .VtaPublicURL }}" [services] rest = true didcomm = true +tsp = true [server] host = "0.0.0.0" @@ -88,7 +89,7 @@ func RenderFullStackVtaSetupTOML(s *model.SetupSession, vault VaultSecrets) (str var mediatorRecipeTmpl = template.Must(template.New("fs-mediator-recipe").Parse(`[deployment] type = "server" -protocols = ["didcomm"] +protocols = ["didcomm", "tsp"] use_vta = true vta_mode = "sealed-export" @@ -165,6 +166,7 @@ data_dir = "data/daemon" [identity] public_url = "{{ .PublicURL }}" mediator_did = "{{ .MediatorDid }}" +transport = "both" [vta] {{- if eq .Phase "offline-prepare" }} diff --git a/internal/setup/templates_vtc.go b/internal/setup/templates_vtc.go index 0baa9d2..dc35986 100644 --- a/internal/setup/templates_vtc.go +++ b/internal/setup/templates_vtc.go @@ -39,6 +39,7 @@ path = "{{ .VtcDidPath }}" [messaging] mediator_did = "{{ .MediatorDid }}" mediator_url = "{{ .MediatorURL }}" +transports = ["tsp", "didcomm"] [secrets] backend = "vault"