Skip to content

feat(base-ops): grouped secret facts and resolver#22

Merged
ivanbenko merged 4 commits intomasterfrom
feat/grouped-secret-facts
Apr 2, 2026
Merged

feat(base-ops): grouped secret facts and resolver#22
ivanbenko merged 4 commits intomasterfrom
feat/grouped-secret-facts

Conversation

@ivanbenko
Copy link
Copy Markdown
Member

Summary

  • Add secretGroup() factory for defining multiple named secret values under a single group name
  • Add resolveSecret()/requireSecret() that transparently resolve camelCase names (e.g. netbirdApiKey) by exact match or group+property split (netbird + apiKey)
  • Update vault-fact-store to read/write grouped secret specs alongside simple secrets

Test plan

  • Unit tests for camelCaseSplits edge cases (acronyms, single word, multi-word)
  • Unit tests for resolver (exact match, group match, priority, not-found)
  • Unit tests for secretGroup() factory and pool coexistence with simple secrets
  • Vault-fact-store tests for grouped secret read/write
  • All 173 tests pass, ts:check and lint clean

🤖 Generated with Claude Code

Support defining multiple secret values under a single group name via
secretGroup(). Add resolveSecret/requireSecret helpers that transparently
resolve a camelCase name (e.g. "netbirdApiKey") by trying exact match
first, then splitting into group + property ("netbird" + "apiKey").
Update vault-fact-store to read/write grouped secret specs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
ivanbenko and others added 3 commits April 2, 2026 11:13
…ecrets

Vault may store numeric values (e.g. ports) that should be treated as
strings in the secret spec. Convert numbers to strings during read so
they pass validation and are usable as secret properties.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Move secret resolution logic into InfrastructureFactsPool so modules can
call pool.requireSecret('netbirdApiKey') directly. The standalone
resolveSecret/requireSecret functions are kept as deprecated delegates.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@ivanbenko ivanbenko merged commit 587d123 into master Apr 2, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant