mirror of
https://github.com/hanzoai/ui-customization.git
synced 2026-10-30 18:18:42 +00:00
The architectural reference for console's tRPC->ZAP migration. Replaces the in-process tRPC UiCustomization router with a standalone Go binary built on Hanzo Base (embedded encrypted SQLite + plugins) exposing a typed ZAP capability-RPC interface. 11+ services follow this pattern. - proto/ui-customization.zap: canonical schema (zap-spec dialect), source of truth, compiled to Go via zapgen (make zap-gen, idempotent). - server/: ZAP RPC handler at msgType 200. Three decoupled wire layers (transport / envelope / typed payload); capability carried as opaque bytes. Single auth chokepoint (Kind + PermSessionRead bitmask); signature verify gated on a wired issuer registry (TODO -> SPEC.md 2.3). Get + GetModules read from the ui_customization Base collection. Promise-pipelining via an await/resolve table. - main.go: base.New() + vault (per-org encrypted SQLite) + ZAP router. HTTP :8090 (Base health/metrics), ZAP :9999. - cmd/probe/: out-of-process smoke probe. Tests: 4/4 pass (Get, GetModules, permission-denied, pipelining proof showing the dependent call ships before the first answer resolves). Pure-Go (CGO_ENABLED=0); zap-gen + build reproducible. No Prisma/Postgres/Mongo/tRPC.
149 lines
5.6 KiB
Go
149 lines
5.6 KiB
Go
// Code generated by zapgen; DO NOT EDIT.
|
|
// source: ui-customization.zap
|
|
|
|
package uic
|
|
|
|
import (
|
|
zap "github.com/zap-proto/go"
|
|
)
|
|
|
|
const (
|
|
uiCustomizationConfigPresentOff = 0
|
|
uiCustomizationConfigHostnameOff = 4
|
|
uiCustomizationConfigDocumentationHrefOff = 12
|
|
uiCustomizationConfigSupportHrefOff = 20
|
|
uiCustomizationConfigFeedbackHrefOff = 28
|
|
uiCustomizationConfigLogoLightModeHrefOff = 36
|
|
uiCustomizationConfigLogoDarkModeHrefOff = 44
|
|
uiCustomizationConfigDefaultModelAdapterOff = 52
|
|
uiCustomizationConfigDefaultBaseUrlOpenAIOff = 60
|
|
uiCustomizationConfigDefaultBaseUrlAnthropicOff = 68
|
|
uiCustomizationConfigDefaultBaseUrlAzureOff = 76
|
|
uiCustomizationConfigVisibleModulesOff = 84
|
|
uiCustomizationConfigSize = 92
|
|
)
|
|
|
|
// UiCustomizationConfig is a zero-copy view into a ZAP-encoded UiCustomizationConfig message.
|
|
type UiCustomizationConfig struct{ o zap.Object }
|
|
|
|
// WrapUiCustomizationConfig parses b and returns a typed view. Returns an error if the
|
|
// wire-level checks (magic, version, size) fail.
|
|
func WrapUiCustomizationConfig(b []byte) (UiCustomizationConfig, error) {
|
|
m, err := zap.Parse(b)
|
|
if err != nil {
|
|
return UiCustomizationConfig{}, err
|
|
}
|
|
return UiCustomizationConfig{o: m.Root()}, nil
|
|
}
|
|
|
|
func (t UiCustomizationConfig) Present() bool { return t.o.Bool(uiCustomizationConfigPresentOff) }
|
|
func (t UiCustomizationConfig) Hostname() string { return t.o.Text(uiCustomizationConfigHostnameOff) }
|
|
func (t UiCustomizationConfig) DocumentationHref() string {
|
|
return t.o.Text(uiCustomizationConfigDocumentationHrefOff)
|
|
}
|
|
func (t UiCustomizationConfig) SupportHref() string {
|
|
return t.o.Text(uiCustomizationConfigSupportHrefOff)
|
|
}
|
|
func (t UiCustomizationConfig) FeedbackHref() string {
|
|
return t.o.Text(uiCustomizationConfigFeedbackHrefOff)
|
|
}
|
|
func (t UiCustomizationConfig) LogoLightModeHref() string {
|
|
return t.o.Text(uiCustomizationConfigLogoLightModeHrefOff)
|
|
}
|
|
func (t UiCustomizationConfig) LogoDarkModeHref() string {
|
|
return t.o.Text(uiCustomizationConfigLogoDarkModeHrefOff)
|
|
}
|
|
func (t UiCustomizationConfig) DefaultModelAdapter() string {
|
|
return t.o.Text(uiCustomizationConfigDefaultModelAdapterOff)
|
|
}
|
|
func (t UiCustomizationConfig) DefaultBaseUrlOpenAI() string {
|
|
return t.o.Text(uiCustomizationConfigDefaultBaseUrlOpenAIOff)
|
|
}
|
|
func (t UiCustomizationConfig) DefaultBaseUrlAnthropic() string {
|
|
return t.o.Text(uiCustomizationConfigDefaultBaseUrlAnthropicOff)
|
|
}
|
|
func (t UiCustomizationConfig) DefaultBaseUrlAzure() string {
|
|
return t.o.Text(uiCustomizationConfigDefaultBaseUrlAzureOff)
|
|
}
|
|
func (t UiCustomizationConfig) VisibleModules() zap.List {
|
|
return t.o.List(uiCustomizationConfigVisibleModulesOff)
|
|
}
|
|
|
|
// UiCustomizationConfigInput collects the field values for NewUiCustomizationConfig.
|
|
type UiCustomizationConfigInput struct {
|
|
Present bool
|
|
Hostname string
|
|
DocumentationHref string
|
|
SupportHref string
|
|
FeedbackHref string
|
|
LogoLightModeHref string
|
|
LogoDarkModeHref string
|
|
DefaultModelAdapter string
|
|
DefaultBaseUrlOpenAI string
|
|
DefaultBaseUrlAnthropic string
|
|
DefaultBaseUrlAzure string
|
|
VisibleModules [][]byte
|
|
}
|
|
|
|
// NewUiCustomizationConfig builds a ZAP-encoded UiCustomizationConfig message from in and returns the bytes.
|
|
func NewUiCustomizationConfig(in UiCustomizationConfigInput) []byte {
|
|
b := zap.NewBuilder(256)
|
|
ob := b.StartObject(uiCustomizationConfigSize)
|
|
ob.SetBool(uiCustomizationConfigPresentOff, in.Present)
|
|
ob.SetText(uiCustomizationConfigHostnameOff, in.Hostname)
|
|
ob.SetText(uiCustomizationConfigDocumentationHrefOff, in.DocumentationHref)
|
|
ob.SetText(uiCustomizationConfigSupportHrefOff, in.SupportHref)
|
|
ob.SetText(uiCustomizationConfigFeedbackHrefOff, in.FeedbackHref)
|
|
ob.SetText(uiCustomizationConfigLogoLightModeHrefOff, in.LogoLightModeHref)
|
|
ob.SetText(uiCustomizationConfigLogoDarkModeHrefOff, in.LogoDarkModeHref)
|
|
ob.SetText(uiCustomizationConfigDefaultModelAdapterOff, in.DefaultModelAdapter)
|
|
ob.SetText(uiCustomizationConfigDefaultBaseUrlOpenAIOff, in.DefaultBaseUrlOpenAI)
|
|
ob.SetText(uiCustomizationConfigDefaultBaseUrlAnthropicOff, in.DefaultBaseUrlAnthropic)
|
|
ob.SetText(uiCustomizationConfigDefaultBaseUrlAzureOff, in.DefaultBaseUrlAzure)
|
|
visibleModulesLB := b.StartList(0)
|
|
for _, elem := range in.VisibleModules {
|
|
visibleModulesLB.AddObjectBytes(elem)
|
|
}
|
|
ob.SetList(uiCustomizationConfigVisibleModulesOff, visibleModulesLB.FinishOffset(), len(in.VisibleModules))
|
|
ob.FinishAsRoot()
|
|
return b.Finish()
|
|
}
|
|
|
|
const (
|
|
visibleModulesModulesOff = 0
|
|
visibleModulesSize = 8
|
|
)
|
|
|
|
// VisibleModules is a zero-copy view into a ZAP-encoded VisibleModules message.
|
|
type VisibleModules struct{ o zap.Object }
|
|
|
|
// WrapVisibleModules parses b and returns a typed view. Returns an error if the
|
|
// wire-level checks (magic, version, size) fail.
|
|
func WrapVisibleModules(b []byte) (VisibleModules, error) {
|
|
m, err := zap.Parse(b)
|
|
if err != nil {
|
|
return VisibleModules{}, err
|
|
}
|
|
return VisibleModules{o: m.Root()}, nil
|
|
}
|
|
|
|
func (t VisibleModules) Modules() zap.List { return t.o.List(visibleModulesModulesOff) }
|
|
|
|
// VisibleModulesInput collects the field values for NewVisibleModules.
|
|
type VisibleModulesInput struct {
|
|
Modules [][]byte
|
|
}
|
|
|
|
// NewVisibleModules builds a ZAP-encoded VisibleModules message from in and returns the bytes.
|
|
func NewVisibleModules(in VisibleModulesInput) []byte {
|
|
b := zap.NewBuilder(256)
|
|
ob := b.StartObject(visibleModulesSize)
|
|
modulesLB := b.StartList(0)
|
|
for _, elem := range in.Modules {
|
|
modulesLB.AddObjectBytes(elem)
|
|
}
|
|
ob.SetList(visibleModulesModulesOff, modulesLB.FinishOffset(), len(in.Modules))
|
|
ob.FinishAsRoot()
|
|
return b.Finish()
|
|
}
|