Generalize auth/base-url value sources: provider registry replaces hardcoded SSM #150
Labels
No labels
burndown-2026-06
sunday-sprint
coherence-core
consult
headless
interactive
P0
P1
P2
P3
P4
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
coilyco-flight-deck/cli-guard#150
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Replace the hardcoded SSM config hydration with a pluggable value-source mechanism so guardfiles can name other config stores.
Grammar
ssm "/path"becomesvalue <provider> "<address>"everywhere a secret or host is named (header-token, bearer, query-param param, base-url). A newValueSource{Provider, Address}type replacesAuth.SSM,QueryAuthParam.SSM,BaseURLSSM.Engine
TokenResolverbecomes aProviders map[string]Providerregistry (Provider = func(ctx, address) (string, error)). cli-guard ships no-SDK built-ins (env, file, literal); the consumer registers ssm and tailscale. Build-time fail-closed validation: avalue foowhose provider isn't registered is a build error. base-url, auth token, and query-param secrets collapse onto the one resolver, deleting the parallel BaseURLFn/baseURLSSM path.Codegen
The generated consumer main.go (specgen template) builds a providers map wiring ssm + tailscale, gating the AWS SDK imports on whether any guardfile actually uses ssm. base-url-via-value flows through the same map. This is where the real hardcoded SSM hydration lived.
Motivating non-ssm case
base-url { value tailscale "open-webui" }resolves a tailnet host live viatailscale ip -4, dropping an SSM entry.v0.x break; ward/coily re-bump along the dependency arrow.