Draft
Conversation
…t architecture (#140) This commit implements phase A.1 (Scope type) and B.2 (Store Scope support) from the multi-cloud refactoring plan. Key changes: - Add staging.Scope type with Provider enum (AWS, GoogleCloud, Azure) - Add helper constructors: AWSScope, GoogleCloudScope, AzureKeyVaultScope, AzureAppConfigScope - Refactor daemon to be scope-independent at startup - Move scope from daemon initialization to per-request handling - Update protocol to include Scope in Request messages - Update all stores (agent, file) to accept Scope parameter Architecture change: Before: One daemon per scope (accountID + region) After: Single daemon handles all scopes (scope passed per-request) This enables future multi-cloud support where different providers have different scope structures. Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #141 +/- ##
==========================================
- Coverage 90.35% 88.29% -2.07%
==========================================
Files 132 139 +7
Lines 7746 8168 +422
==========================================
+ Hits 6999 7212 +213
- Misses 503 699 +196
- Partials 244 257 +13
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
- Set TMPDIR for Darwin - Set XDG_RUNTIME_DIR for Linux - Set LOCALAPPDATA for Windows Also enable Windows GUI tests on multicloud branch. Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Add multicloud branch alongside main for: - test.yml: push and pull_request triggers - labels.yml: push trigger Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Refactor file-based staging store to use separate files for each service: - param.json for Parameter Store entries - secret.json for Secrets Manager entries Changes: - Store now uses stateDir instead of stateFilePath - Add NewStoreWithDir constructor, deprecate NewStoreWithPath - Drain merges state from both service files - WriteState writes to appropriate file(s) based on service filter - Delete removes both files - Exists returns true if either file exists - IsEncrypted checks both files This separation prepares for multi-cloud support where different providers may have different service availability. Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
…ud support (#145) This commit implements Phase A.2, A.3, and B.1 of the multi-cloud refactoring: A.2: Model type definitions - Add internal/model/parameter.go with TypedParameter, Parameter, ParameterHistory, and provider-specific metadata types (AWSParameterMeta, AzureAppConfigMeta) - Add internal/model/secret.go with TypedSecret, Secret, SecretVersion, and provider-specific metadata types (AWSSecretMeta, GCPSecretMeta, AzureKeyVaultMeta) - Generic types enable type-safe metadata access at provider layer - Base types with `any` metadata for UseCase layer abstraction A.3: Provider interface definitions - Add internal/provider/parameter.go with ParameterReader, ParameterWriter, ParameterTagger, and ParameterService interfaces - Add internal/provider/secret.go with SecretReader, SecretWriter, SecretTagger, SecretService, SecretRestorer, and SecretDescriber interfaces - Interfaces are provider-agnostic, enabling future GCP/Azure implementations B.1: AWS adapter implementations - Add internal/provider/aws/param/adapter.go implementing ParameterService for AWS SSM Parameter Store - Add internal/provider/aws/secret/adapter.go implementing SecretService (plus SecretRestorer, SecretDescriber) for AWS Secrets Manager - Adapters convert between AWS SDK types and model types - Add ParameterTier and ParameterInlinePolicy to paramapi/types.go Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
- Update param and secret TagUseCase to use provider.ParameterTagger and provider.SecretTagger interfaces instead of AWS SDK types - Add NewAdapter() factory functions to provider/aws/param and provider/aws/secret packages (moved from infra package) - Update CLI commands (tag, untag) and GUI to use new adapter locations - Simplify test mocks to implement provider interfaces This reduces coupling to AWS SDK and prepares for multi-cloud support. Code reduced by ~160 lines while improving maintainability. Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Move provider-specific fields from base types to metadata: - Parameter.Type -> AWSParameterMeta.Type - ParameterListItem.Type -> AWSParameterListItemMeta.Type (new) - Secret.ARN -> AWSSecretMeta.ARN - SecretListItem.ARN, DeletedDate -> AWSSecretListItemMeta (new) Add AWSMeta() helper methods for type-safe metadata access. Update AWS adapters to populate metadata fields correctly. This makes base types provider-agnostic for multi-cloud support. Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* refactor(usecase): migrate param/show to provider interfaces - Change ShowClient interface to use provider.ParameterReader and provider.ParameterTagger instead of paramapi types - Move version resolution logic (shift handling) to usecase layer - Update ShowOutput to use string types for Version and Type (provider-agnostic, no longer tied to AWS-specific enums) - Update CLI show command to use awsparam.NewAdapter - Update GUI ParamShow to use awsparam.NewAdapter with parseInt64 helper - Update all tests to use model.Parameter and model.AWSParameterMeta Part of multi-cloud refactoring: PR #2 (Read UseCase Migration) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * refactor(model): unify field names for multi-cloud compatibility - Rename Secret.VersionID to Version (consistent with Parameter) - Rename Parameter.LastModified to UpdatedAt - Rename Secret.CreatedDate to CreatedAt - Add UpdatedAt field to Secret for providers that track both dates - Update all layers: model, provider, usecase, cli, gui This makes the model layer truly provider-agnostic, supporting AWS, Azure, and GCP field semantics uniformly. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * refactor(usecase): simplify param/diff and param/show using paramversion helper - Move version resolution logic from usecase to paramversion.GetParameterWithVersion() - Update paramversion to use provider.ParameterReader interface - Add ParamReader field to staging diff runner for version resolution - Use hybrid approach in staging: Client for apply ops, Reader for version resolution - Update all test files with correct mocks for new interfaces Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
) Migrate all write use cases (create, update, delete, restore) from AWS-specific API interfaces to cloud-agnostic provider interfaces. Changes: - Update provider interfaces with write result types - Migrate param/create, param/update, param/delete use cases - Migrate secret/create, secret/update, secret/delete, secret/restore - Update CLI commands to use AWS adapters - Update GUI to use AWS adapters - Update all related tests with new mock implementations This completes PR #3 of the multi-cloud refactoring roadmap. Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.