From d67347be77f33ecb8c23a12cb41b56864f5d32c3 Mon Sep 17 00:00:00 2001 From: Dotta <34892728+cryppadotta@users.noreply.github.com> Date: Tue, 19 May 2026 15:50:23 -0500 Subject: [PATCH] [codex] Provider vault secrets UX (#6381) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Thinking Path > - Paperclip orchestrates AI agents that need scoped, auditable access to secrets > - Hosted and external deployments need provider vault configuration without exposing secret values in Paperclip metadata > - AWS Secrets Manager vault setup previously required too much manual operator knowledge > - Provider vault discovery and removal belong together as an independent secrets-management improvement > - This pull request adds AWS provider vault discovery/prefill plus vault removal flows > - The benefit is a safer operator path for configuring external secret storage before higher-level cloud workflows depend on it ## What Changed - Added shared validators/types for AWS provider vault discovery payloads and safe provider metadata. - Implemented AWS provider vault discovery preview on the server. - Added provider vault removal service/route behavior. - Added Secrets page UI for discovery prefill, removal messaging, and related rendering coverage. - Added Storybook provider-vault fixtures and captured screenshots for the new UX states. ## Verification - `pnpm install --frozen-lockfile --ignore-scripts` - `pnpm exec vitest run packages/shared/src/validators/secret.test.ts server/src/__tests__/aws-secrets-manager-provider.test.ts server/src/__tests__/secrets-routes.test.ts server/src/__tests__/secrets-service.test.ts ui/src/pages/Secrets.render.test.tsx` - Result: 4 files passed, 1 embedded Postgres-backed file skipped on this host because local Postgres init was unavailable. - `pnpm --filter @paperclipai/ui exec vitest run src/pages/Secrets.render.test.tsx` - `pnpm --filter @paperclipai/ui typecheck` - Storybook screenshot capture against `Product/Secrets` on `http://127.0.0.1:60381/iframe.html?id=product-secrets--secrets-inventory&viewMode=story&globals=theme:dark` ## Screenshots Provider vaults tab after this change: ![Provider vaults tab](https://raw.githubusercontent.com/paperclipai/paperclip/pap-9861-provider-vault-secrets/doc/screenshots/pr-6381/provider-vaults-tab.png) AWS discovery candidate flow: ![AWS discovery candidate flow](https://raw.githubusercontent.com/paperclipai/paperclip/pap-9861-provider-vault-secrets/doc/screenshots/pr-6381/aws-discovery-candidates.png) Provider vault removal confirmation: ![Provider vault removal confirmation](https://raw.githubusercontent.com/paperclipai/paperclip/pap-9861-provider-vault-secrets/doc/screenshots/pr-6381/remove-provider-vault-confirmation.png) ## Risks - Secret provider metadata handling must remain non-sensitive; validators reject credential-bearing Vault URLs and sensitive AWS discovery keys. - AWS discovery depends on deployment credentials being configured correctly outside Paperclip-managed company secrets. > For core feature work, check [`ROADMAP.md`](ROADMAP.md) first and discuss it in `#dev` before opening the PR. Feature PRs that overlap with planned core work may need to be redirected — check the roadmap first. See `CONTRIBUTING.md`. ## Model Used - OpenAI Codex, GPT-5-based coding agent with local shell/git/tool use. Exact hosted model ID and context-window size are not exposed by the local Paperclip adapter runtime. ## Checklist - [x] I have included a thinking path that traces from project context to this change - [x] I have specified the model used (with version and capability details) - [x] I have checked ROADMAP.md and confirmed this PR does not duplicate planned core work - [x] I have run tests locally and they pass - [x] I have added or updated tests where applicable - [x] If this change affects the UI, I have included before/after screenshots - [x] I have updated relevant documentation to reflect my changes - [x] I have considered and documented any risks above - [x] I will address all Greptile and reviewer comments before requesting merge --------- Co-authored-by: Paperclip --- .../pr-6381/aws-discovery-candidates.png | Bin 0 -> 128667 bytes .../pr-6381/provider-vaults-tab.png | Bin 0 -> 81421 bytes .../remove-provider-vault-confirmation.png | Bin 0 -> 91056 bytes packages/shared/src/api.ts | 1 + packages/shared/src/index.ts | 6 + packages/shared/src/types/index.ts | 4 + packages/shared/src/types/secrets.ts | 37 +++ packages/shared/src/validators/index.ts | 2 + packages/shared/src/validators/secret.test.ts | 35 ++ packages/shared/src/validators/secret.ts | 24 ++ .../aws-secrets-manager-provider.test.ts | 97 ++++++ server/src/__tests__/secrets-routes.test.ts | 146 ++++++++ server/src/__tests__/secrets-service.test.ts | 134 ++++++++ server/src/routes/secrets.ts | 54 ++- .../secrets/aws-secrets-manager-provider.ts | 262 ++++++++++++++- server/src/secrets/types.ts | 13 +- server/src/services/secrets.ts | 70 ++++ ui/src/api/secrets.ts | 19 ++ ui/src/pages/Secrets.render.test.tsx | 311 +++++++++++++++++- ui/src/pages/Secrets.tsx | 289 ++++++++++++++++ ui/storybook/.storybook/preview.tsx | 16 + ui/storybook/fixtures/paperclipData.ts | 94 ++++++ ui/storybook/stories/secrets.stories.tsx | 1 - 23 files changed, 1602 insertions(+), 13 deletions(-) create mode 100644 doc/screenshots/pr-6381/aws-discovery-candidates.png create mode 100644 doc/screenshots/pr-6381/provider-vaults-tab.png create mode 100644 doc/screenshots/pr-6381/remove-provider-vault-confirmation.png diff --git a/doc/screenshots/pr-6381/aws-discovery-candidates.png b/doc/screenshots/pr-6381/aws-discovery-candidates.png new file mode 100644 index 0000000000000000000000000000000000000000..9006d175cf66196fb9337e04c2ac9acd232fbfd0 GIT binary patch literal 128667 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�PW?V69hx&Cmo zd0^K%b*z~u3Ahq9mkAC*a9~xbK2)BGFA^gG@_r+cIobcBeVRkq~E4 zK&+|vczo&W)1ML>nQS=R5uPdPhR58&49ddLnHfh*G3;>6vMrshx9^ebvs#!L2zsZ- zy+TrXf@o-?PqV&AaY_@F6o4`y zzVXe%FSEBM@9{{>E<8)HIp`LFS2IVBnq*`9k4%BZyFcHEIHGy=7gi$MlJhVEge%u1 zBfC|+V?U0TrsifNJpq@yGlSe+Ggooean_{N%{DC53hfTQusT0K-y7#1I6-L9@f(cc zBGWXbrKMZNZ}v{8u%lnMt>jYC(0=kHfYts1NSt*#&HRzp@_(h|ru#x08Hd=$R7a;N zKd9>`*(k{O4g?)>7#~J9A}lIeBrb3JL0=bzWH!h5<-uH>rdLdgF3kzSn~KV z;qQ2#&pZhc(|i3xz~UeR#TfkoHV+Eq@>t10iQW;p0e0}zr&qLMU3K(4)b2L(Uu5Wf zq*vV7TM7)XF>D@m=;eop@cHxig0+buF)o?MPPiY5ndIfd{x88 z+#!V}hb*?!M_>^uo1-UD6}NmG1x+51aH0<-y28&S=SE`CwdMk{3uv<^QLVW|*({mfl-mhr^r(WusZ}=<<$~I%h=6s!1SeqlBf_@Xs{QV%V8+R_V$GvXsprTbI`k{~4-n0Rcdhcwn z;z zeRDPh99=1u#_zU`P?~fQdThWS2hJU+2vBf<1jT42aWo<}vRDa~C}09`=Hwn9dxY#E zEVp|jY2bLis8TVdaDV$-P3fK1-+r{P3;fLT`!c6Z*{v(7lNfRn(P z)w9(ZKs)(sU51yLxx0n3%*f z2Hk4=bjrYGPIYsr%^9nbDVS^0CLOO6O!rfGn3`R*DT!eu1f7ix4@ zJ0{ccfE*K>Wg5MaWbsb5>vKu^k@%mPjW9i~|Jy#ByoJ}_H}57-_kS(F$y<2+^UN@9 zpV=(`j0Rcdf0xmyoe~!lo0^(KYxNNm6O$t6oVXapJbq;Gq`4N}5o6dm(aWrTV*d+4 C-*Hv| literal 0 HcmV?d00001 diff --git a/doc/screenshots/pr-6381/provider-vaults-tab.png b/doc/screenshots/pr-6381/provider-vaults-tab.png new file mode 100644 index 0000000000000000000000000000000000000000..6d304c20422b0257c0852f2eed46687190901d50 GIT binary patch literal 81421 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

+p09%>eaRPDTRvZwO*_lJg3?pHK?yR}ZI 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 ZuXrPMc5&E`{}}ORCzLgna*v)4_#fSRR$>4E literal 0 HcmV?d00001 diff --git a/doc/screenshots/pr-6381/remove-provider-vault-confirmation.png b/doc/screenshots/pr-6381/remove-provider-vault-confirmation.png new file mode 100644 index 0000000000000000000000000000000000000000..40a4c81a06efff5bc6482fc6035ad92fb1361064 GIT binary patch literal 91056 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 literal 0 HcmV?d00001 diff --git a/packages/shared/src/api.ts b/packages/shared/src/api.ts index 38988c6f..7fe53f4c 100644 --- a/packages/shared/src/api.ts +++ b/packages/shared/src/api.ts @@ -12,6 +12,7 @@ export const API = { approvals: `${API_PREFIX}/approvals`, secrets: `${API_PREFIX}/secrets`, secretProviderConfigs: `${API_PREFIX}/secret-provider-configs`, + secretProviderConfigDiscoveryPreview: `${API_PREFIX}/companies/:companyId/secret-provider-configs/discovery/preview`, costs: `${API_PREFIX}/costs`, activity: `${API_PREFIX}/activity`, dashboard: `${API_PREFIX}/dashboard`, diff --git a/packages/shared/src/index.ts b/packages/shared/src/index.ts index dcd92bcf..a851acf0 100644 --- a/packages/shared/src/index.ts +++ b/packages/shared/src/index.ts @@ -558,6 +558,10 @@ export type { SecretProviderConfigPayload, SecretProviderConfigHealthDetails, SecretProviderConfigHealthResponse, + SecretProviderConfigDiscoveryCandidate, + SecretProviderConfigDiscoveryPreviewResult, + SecretProviderConfigDiscoverySample, + SecretProviderConfigDiscoverySignal, CompanySecretBinding, CompanySecretBindingTarget, CompanySecretUsageBinding, @@ -885,6 +889,7 @@ export { createSecretSchema, createSecretProviderConfigSchema, updateSecretProviderConfigSchema, + secretProviderConfigDiscoveryPreviewSchema, remoteSecretImportPreviewSchema, remoteSecretImportSchema, remoteSecretImportSelectionSchema, @@ -911,6 +916,7 @@ export { type CreateSecret, type CreateSecretProviderConfig, type UpdateSecretProviderConfig, + type SecretProviderConfigDiscoveryPreview, type RemoteSecretImportPreview, type RemoteSecretImport, type RemoteSecretImportSelection, diff --git a/packages/shared/src/types/index.ts b/packages/shared/src/types/index.ts index a2354757..cfd7c74b 100644 --- a/packages/shared/src/types/index.ts +++ b/packages/shared/src/types/index.ts @@ -258,6 +258,10 @@ export type { SecretProviderConfigPayload, SecretProviderConfigHealthDetails, SecretProviderConfigHealthResponse, + SecretProviderConfigDiscoveryCandidate, + SecretProviderConfigDiscoveryPreviewResult, + SecretProviderConfigDiscoverySample, + SecretProviderConfigDiscoverySignal, CompanySecretBinding, CompanySecretBindingTarget, CompanySecretUsageBinding, diff --git a/packages/shared/src/types/secrets.ts b/packages/shared/src/types/secrets.ts index 7a4f0ae3..9c01ff40 100644 --- a/packages/shared/src/types/secrets.ts +++ b/packages/shared/src/types/secrets.ts @@ -138,6 +138,43 @@ export interface SecretProviderConfigHealthResponse { checkedAt: Date; } +export interface SecretProviderConfigDiscoverySignal { + namespace: string | null; + secretNamePrefix: string | null; + environmentTag: string | null; + ownerTag: string | null; + kmsKeyId: string | null; + hasKmsKey: boolean; + sampleCount: number; + paperclipManagedSampleCount: number; + skippedForeignPaperclipSampleCount: number; +} + +export interface SecretProviderConfigDiscoverySample { + name: string; + hasKmsKey: boolean; + tagKeys: string[]; +} + +export interface SecretProviderConfigDiscoveryCandidate { + provider: SecretProvider; + displayName: string; + config: SecretProviderConfigPayload; + sampleCount: number; + samples: SecretProviderConfigDiscoverySample[]; + signals: SecretProviderConfigDiscoverySignal; + warnings: string[]; +} + +export interface SecretProviderConfigDiscoveryPreviewResult { + provider: SecretProvider; + nextToken: string | null; + sampledSecretCount: number; + skippedForeignPaperclipSampleCount: number; + candidates: SecretProviderConfigDiscoveryCandidate[]; + warnings: string[]; +} + export interface CompanySecretVersion { id: string; secretId: string; diff --git a/packages/shared/src/validators/index.ts b/packages/shared/src/validators/index.ts index 3380c553..e8410a01 100644 --- a/packages/shared/src/validators/index.ts +++ b/packages/shared/src/validators/index.ts @@ -293,6 +293,7 @@ export { createSecretSchema, createSecretProviderConfigSchema, updateSecretProviderConfigSchema, + secretProviderConfigDiscoveryPreviewSchema, remoteSecretImportPreviewSchema, remoteSecretImportSchema, remoteSecretImportSelectionSchema, @@ -309,6 +310,7 @@ export { type CreateSecret, type CreateSecretProviderConfig, type UpdateSecretProviderConfig, + type SecretProviderConfigDiscoveryPreview, type RemoteSecretImportPreview, type RemoteSecretImport, type RemoteSecretImportSelection, diff --git a/packages/shared/src/validators/secret.test.ts b/packages/shared/src/validators/secret.test.ts index c8a8163d..10d81a9d 100644 --- a/packages/shared/src/validators/secret.test.ts +++ b/packages/shared/src/validators/secret.test.ts @@ -4,6 +4,7 @@ import { createSecretSchema, remoteSecretImportPreviewSchema, remoteSecretImportSchema, + secretProviderConfigDiscoveryPreviewSchema, secretProviderConfigPayloadSchema, updateSecretProviderConfigSchema, } from "./secret.js"; @@ -140,6 +141,40 @@ describe("secret validators", () => { }); }); + it("validates AWS provider vault discovery draft config without allowing sensitive keys", () => { + expect( + secretProviderConfigDiscoveryPreviewSchema.parse({ + provider: "aws_secrets_manager", + config: { + region: "us-east-1", + namespace: "production", + secretNamePrefix: "paperclip", + }, + query: "paperclip", + pageSize: 50, + }), + ).toEqual({ + provider: "aws_secrets_manager", + config: { + region: "us-east-1", + namespace: "production", + secretNamePrefix: "paperclip", + }, + query: "paperclip", + pageSize: 50, + }); + + expect(() => + secretProviderConfigDiscoveryPreviewSchema.parse({ + provider: "aws_secrets_manager", + config: { + region: "us-east-1", + accessKeyId: "AKIA...", + }, + }), + ).toThrow(/sensitive field/i); + }); + it("caps AWS remote import paging and row counts", () => { expect(() => remoteSecretImportPreviewSchema.parse({ diff --git a/packages/shared/src/validators/secret.ts b/packages/shared/src/validators/secret.ts index 1ee1952c..a90bf064 100644 --- a/packages/shared/src/validators/secret.ts +++ b/packages/shared/src/validators/secret.ts @@ -262,6 +262,30 @@ export const remoteSecretImportPreviewSchema = z.object({ export type RemoteSecretImportPreview = z.infer; +export const secretProviderConfigDiscoveryPreviewSchema = z.object({ + provider: z.enum(SECRET_PROVIDERS), + config: z.record(z.unknown()).default({}), + query: z.string().trim().max(200).optional().nullable(), + nextToken: z.string().trim().min(1).max(4096).optional().nullable(), + pageSize: z.number().int().min(1).max(100).optional(), +}).superRefine((value, ctx) => { + rejectSensitiveProviderConfigKeys(value.config, ctx); + const parsed = secretProviderConfigPayloadSchema.safeParse({ + provider: value.provider, + config: value.config, + }); + if (!parsed.success) { + for (const issue of parsed.error.issues) { + ctx.addIssue({ + ...issue, + path: issue.path[0] === "config" ? issue.path : ["config", ...issue.path], + }); + } + } +}); + +export type SecretProviderConfigDiscoveryPreview = z.infer; + export const remoteSecretImportSelectionSchema = z.object({ externalRef: z.string().trim().min(1).max(2048), name: z.string().trim().min(1).max(160).optional().nullable(), diff --git a/server/src/__tests__/aws-secrets-manager-provider.test.ts b/server/src/__tests__/aws-secrets-manager-provider.test.ts index 488f3415..90fec295 100644 --- a/server/src/__tests__/aws-secrets-manager-provider.test.ts +++ b/server/src/__tests__/aws-secrets-manager-provider.test.ts @@ -454,6 +454,103 @@ describe("awsSecretsManagerProvider", () => { expect(JSON.stringify(listed)).not.toContain("team"); }); + it("discovers AWS provider vault prefill candidates from metadata without reading values", async () => { + const calls: Array<{ op: string; input: Record }> = []; + const provider = createAwsSecretsManagerProvider({ + gateway: { + async createSecret() { + throw new Error("not used"); + }, + async putSecretValue() { + throw new Error("not used"); + }, + async getSecretValue() { + throw new Error("GetSecretValue must not be used for provider vault discovery"); + }, + async deleteSecret() { + throw new Error("not used"); + }, + async listSecrets(input) { + calls.push({ op: "listSecrets", input }); + return { + NextToken: "next-page", + SecretList: [ + { + ARN: "arn:aws:secretsmanager:us-east-1:123456789012:secret:paperclip/prod-use1/company-1/openai", + Name: "paperclip/prod-use1/company-1/openai", + KmsKeyId: "arn:aws:kms:us-east-1:123456789012:key/prod", + Tags: [ + { Key: "paperclip:managed-by", Value: "paperclip" }, + { Key: "paperclip:deployment-id", Value: "prod-use1" }, + { Key: "paperclip:company-id", Value: "company-1" }, + { Key: "paperclip:environment", Value: "production" }, + { Key: "paperclip:provider-owner", Value: "platform" }, + ], + }, + { + ARN: "arn:aws:secretsmanager:us-east-1:123456789012:secret:paperclip/prod-use1/company-2/stripe", + Name: "paperclip/prod-use1/company-2/stripe", + Tags: [ + { Key: "paperclip:managed-by", Value: "paperclip" }, + { Key: "paperclip:company-id", Value: "company-2" }, + ], + }, + ], + }; + }, + }, + }); + + const preview = await provider.discoverProviderConfigs?.({ + companyId: "company-1", + providerConfig: { + id: "draft", + provider: "aws_secrets_manager", + status: "ready", + config: { region: "us-east-1" }, + }, + query: "paperclip", + pageSize: 25, + }); + + expect(calls).toEqual([ + { + op: "listSecrets", + input: { + MaxResults: 25, + NextToken: undefined, + IncludePlannedDeletion: false, + Filters: [{ Key: "all", Values: ["paperclip"] }], + }, + }, + ]); + expect(preview).toMatchObject({ + provider: "aws_secrets_manager", + nextToken: "next-page", + sampledSecretCount: 1, + skippedForeignPaperclipSampleCount: 1, + candidates: [ + expect.objectContaining({ + displayName: "AWS production", + config: expect.objectContaining({ + region: "us-east-1", + namespace: "prod-use1", + secretNamePrefix: "paperclip", + kmsKeyId: "arn:aws:kms:us-east-1:123456789012:key/prod", + ownerTag: "platform", + environmentTag: "production", + }), + signals: expect.objectContaining({ + paperclipManagedSampleCount: 1, + skippedForeignPaperclipSampleCount: 1, + }), + }), + ], + }); + expect(JSON.stringify(preview)).not.toContain("SecretString"); + expect(JSON.stringify(preview)).not.toContain("company-2/stripe"); + }); + it("redacts AWS provider exception text when remote listing fails", async () => { const rawProviderMessage = "AccessDeniedException: User: arn:aws:sts::123456789012:assumed-role/prod/Paperclip is not authorized to perform secretsmanager:ListSecrets on arn:aws:secretsmanager:us-east-1:123456789012:secret:prod/openai"; diff --git a/server/src/__tests__/secrets-routes.test.ts b/server/src/__tests__/secrets-routes.test.ts index 86d4b7cb..33bdfc67 100644 --- a/server/src/__tests__/secrets-routes.test.ts +++ b/server/src/__tests__/secrets-routes.test.ts @@ -9,10 +9,12 @@ const mockSecretService = vi.hoisted(() => ({ listProviders: vi.fn(), checkProviders: vi.fn(), listProviderConfigs: vi.fn(), + previewProviderConfigDiscovery: vi.fn(), getProviderConfigById: vi.fn(), createProviderConfig: vi.fn(), updateProviderConfig: vi.fn(), disableProviderConfig: vi.fn(), + removeProviderConfig: vi.fn(), setDefaultProviderConfig: vi.fn(), checkProviderConfigHealth: vi.fn(), getById: vi.fn(), @@ -117,6 +119,22 @@ describe("secret routes", () => { expect(mockSecretService.listProviderConfigs).not.toHaveBeenCalled(); }); + it("rejects provider vault discovery preview for non-board actors", async () => { + const res = await request(createApp({ + type: "agent", + agentId: "agent-1", + companyId: "company-1", + })) + .post("/api/companies/company-1/secret-provider-configs/discovery/preview") + .send({ + provider: "aws_secrets_manager", + config: { region: "us-east-1" }, + }); + + expect(res.status).toBe(403); + expect(mockSecretService.previewProviderConfigDiscovery).not.toHaveBeenCalled(); + }); + it("rejects sensitive provider vault config fields", async () => { const res = await request(createApp()).post("/api/companies/company-1/secret-provider-configs").send({ provider: "aws_secrets_manager", @@ -132,6 +150,92 @@ describe("secret routes", () => { expect(mockSecretService.createProviderConfig).not.toHaveBeenCalled(); }); + it("rejects sensitive provider vault discovery draft config fields", async () => { + const res = await request(createApp()) + .post("/api/companies/company-1/secret-provider-configs/discovery/preview") + .send({ + provider: "aws_secrets_manager", + config: { + region: "us-east-1", + secretAccessKey: "secret", + }, + }); + + expect(res.status).toBe(400); + expect(JSON.stringify(res.body)).toMatch(/sensitive field/i); + expect(mockSecretService.previewProviderConfigDiscovery).not.toHaveBeenCalled(); + }); + + it("previews provider vault discovery and logs only aggregate metadata", async () => { + mockSecretService.previewProviderConfigDiscovery.mockResolvedValue({ + provider: "aws_secrets_manager", + nextToken: null, + sampledSecretCount: 2, + skippedForeignPaperclipSampleCount: 0, + candidates: [ + { + provider: "aws_secrets_manager", + displayName: "AWS production", + config: { + region: "us-east-1", + namespace: "prod-use1", + secretNamePrefix: "paperclip", + environmentTag: "production", + ownerTag: "platform", + kmsKeyId: null, + }, + sampleCount: 2, + samples: [ + { name: "paperclip/prod-use1/company-1/openai", hasKmsKey: false, tagKeys: ["environment"] }, + ], + signals: { + namespace: "prod-use1", + secretNamePrefix: "paperclip", + environmentTag: "production", + ownerTag: "platform", + kmsKeyId: null, + hasKmsKey: false, + sampleCount: 2, + paperclipManagedSampleCount: 0, + skippedForeignPaperclipSampleCount: 0, + }, + warnings: [], + }, + ], + warnings: [], + }); + + const res = await request(createApp()) + .post("/api/companies/company-1/secret-provider-configs/discovery/preview") + .send({ + provider: "aws_secrets_manager", + config: { region: "us-east-1" }, + query: "paperclip", + pageSize: 25, + }); + + expect(res.status).toBe(200); + expect(mockSecretService.previewProviderConfigDiscovery).toHaveBeenCalledWith("company-1", { + provider: "aws_secrets_manager", + config: { region: "us-east-1" }, + query: "paperclip", + nextToken: undefined, + pageSize: 25, + }); + expect(mockLogActivity).toHaveBeenCalledWith(expect.anything(), expect.objectContaining({ + action: "secret_provider_config.discovery_previewed", + entityType: "secret_provider_config_discovery", + entityId: "company-1", + details: { + provider: "aws_secrets_manager", + candidateCount: 1, + sampledSecretCount: 2, + warningCount: 0, + }, + })); + expect(JSON.stringify(mockLogActivity.mock.calls)).not.toContain("paperclip/prod-use1/company-1/openai"); + }); + it("rejects ready status for coming-soon provider vaults", async () => { const res = await request(createApp()).post("/api/companies/company-1/secret-provider-configs").send({ provider: "vault", @@ -241,6 +345,48 @@ describe("secret routes", () => { expect(JSON.stringify(mockLogActivity.mock.calls)).not.toContain("accessKey"); }); + it("removes provider vault config locally without deleting remote provider data", async () => { + const createdAt = new Date("2026-05-06T00:00:00.000Z"); + const providerConfig = { + id: "11111111-1111-4111-8111-111111111111", + companyId: "company-1", + provider: "aws_secrets_manager", + displayName: "AWS prod", + status: "ready", + isDefault: false, + config: { region: "us-east-1" }, + healthStatus: null, + healthCheckedAt: null, + healthMessage: null, + healthDetails: null, + disabledAt: null, + createdByAgentId: null, + createdByUserId: "user-1", + createdAt, + updatedAt: createdAt, + }; + mockSecretService.getProviderConfigById.mockResolvedValue(providerConfig); + mockSecretService.removeProviderConfig.mockResolvedValue(providerConfig); + + const res = await request(createApp()).delete( + "/api/secret-provider-configs/11111111-1111-4111-8111-111111111111", + ); + + expect(res.status).toBe(200); + expect(mockSecretService.removeProviderConfig).toHaveBeenCalledWith( + "11111111-1111-4111-8111-111111111111", + ); + expect(mockSecretService.disableProviderConfig).not.toHaveBeenCalled(); + expect(mockLogActivity).toHaveBeenCalledWith(expect.anything(), expect.objectContaining({ + action: "secret_provider_config.removed", + details: { + provider: "aws_secrets_manager", + displayName: "AWS prod", + remoteDeleted: false, + }, + })); + }); + it("rejects remote import preview for non-board actors", async () => { const res = await request(createApp({ type: "agent", diff --git a/server/src/__tests__/secrets-service.test.ts b/server/src/__tests__/secrets-service.test.ts index d01b6777..c9513079 100644 --- a/server/src/__tests__/secrets-service.test.ts +++ b/server/src/__tests__/secrets-service.test.ts @@ -492,6 +492,35 @@ describeEmbeddedPostgres("secretService", () => { ); }); + it("removes provider vault config locally without deleting remote AWS secrets", async () => { + const companyId = await seedCompany(); + const svc = secretService(db); + const vault = await svc.createProviderConfig(companyId, { + provider: "aws_secrets_manager", + displayName: "AWS production", + config: { region: "us-east-1", namespace: "prod-use1" }, + }); + const secret = await svc.create(companyId, { + name: `external-${randomUUID()}`, + provider: "aws_secrets_manager", + providerConfigId: vault.id, + managedMode: "external_reference", + externalRef: "arn:aws:secretsmanager:us-east-1:123456789012:secret:prod/external", + }); + const deleteSpy = vi.spyOn(awsSecretsManagerProvider, "deleteOrArchive").mockResolvedValue(); + + const removed = await svc.removeProviderConfig(vault.id); + + expect(removed?.id).toBe(vault.id); + await expect(svc.getProviderConfigById(vault.id)).resolves.toBeNull(); + const [persistedSecret] = await db + .select() + .from(companySecrets) + .where(eq(companySecrets.id, secret.id)); + expect(persistedSecret?.providerConfigId).toBeNull(); + expect(deleteSpy).not.toHaveBeenCalled(); + }); + it("hides soft-deleted secrets and allows name/key reuse", async () => { const companyId = await seedCompany(); const svc = secretService(db); @@ -1207,6 +1236,111 @@ describeEmbeddedPostgres("secretService", () => { expect(thrown instanceof Error ? thrown.message : String(thrown)).not.toContain("arn:aws"); }); + it("previews AWS provider vault discovery from draft config without persisting a provider vault", async () => { + const companyId = await seedCompany(); + const svc = secretService(db); + const discoverSpy = vi.spyOn(awsSecretsManagerProvider, "discoverProviderConfigs").mockResolvedValue({ + provider: "aws_secrets_manager", + nextToken: null, + sampledSecretCount: 1, + skippedForeignPaperclipSampleCount: 0, + candidates: [ + { + provider: "aws_secrets_manager", + displayName: "AWS production", + config: { + region: "us-east-1", + namespace: "prod-use1", + secretNamePrefix: "paperclip", + kmsKeyId: null, + ownerTag: "platform", + environmentTag: "production", + }, + sampleCount: 1, + samples: [ + { name: "paperclip/prod-use1/company-1/openai", hasKmsKey: false, tagKeys: ["paperclip:environment"] }, + ], + signals: { + namespace: "prod-use1", + secretNamePrefix: "paperclip", + environmentTag: "production", + ownerTag: "platform", + kmsKeyId: null, + hasKmsKey: false, + sampleCount: 1, + paperclipManagedSampleCount: 0, + skippedForeignPaperclipSampleCount: 0, + }, + warnings: [], + }, + ], + warnings: [], + }); + + const preview = await svc.previewProviderConfigDiscovery(companyId, { + provider: "aws_secrets_manager", + config: { region: "us-east-1" }, + query: "openai", + pageSize: 25, + }); + + expect(discoverSpy).toHaveBeenCalledWith({ + companyId, + providerConfig: { + id: `discovery-preview-${companyId}`, + provider: "aws_secrets_manager", + status: "ready", + config: { region: "us-east-1" }, + }, + query: "openai", + nextToken: undefined, + pageSize: 25, + }); + expect(preview.candidates[0]?.config).toMatchObject({ + region: "us-east-1", + namespace: "prod-use1", + }); + expect(JSON.stringify(preview)).not.toContain("runtime-secret"); + const persistedVaults = await db.select().from(companySecretProviderConfigs); + expect(persistedVaults).toHaveLength(0); + }); + + it("sanitizes AWS provider vault discovery errors before crossing the service boundary", async () => { + const companyId = await seedCompany(); + const svc = secretService(db); + const rawProviderMessage = + "AccessDeniedException: User: arn:aws:sts::123456789012:assumed-role/prod/Paperclip is not authorized to perform secretsmanager:ListSecrets"; + + vi.spyOn(awsSecretsManagerProvider, "discoverProviderConfigs").mockRejectedValueOnce( + new SecretProviderClientError({ + code: "access_denied", + provider: "aws_secrets_manager", + operation: "discoverProviderConfigs", + message: "AWS Secrets Manager denied the request. Check IAM permissions for this provider vault.", + rawMessage: rawProviderMessage, + }), + ); + + let thrown: unknown; + try { + await svc.previewProviderConfigDiscovery(companyId, { + provider: "aws_secrets_manager", + config: { region: "us-east-1" }, + }); + } catch (error) { + thrown = error; + } + + expect(thrown).toMatchObject({ + status: 403, + message: "AWS Secrets Manager denied the request. Check IAM permissions for this provider vault.", + details: { code: "access_denied" }, + }); + expect(JSON.stringify(thrown)).not.toContain("arn:aws"); + expect(JSON.stringify(thrown)).not.toContain("123456789012"); + expect(thrown instanceof Error ? thrown.message : String(thrown)).not.toContain("arn:aws"); + }); + it("imports AWS remote references row-by-row without fetching plaintext", async () => { const companyId = await seedCompany(); const svc = secretService(db); diff --git a/server/src/routes/secrets.ts b/server/src/routes/secrets.ts index be9d503f..760d36c7 100644 --- a/server/src/routes/secrets.ts +++ b/server/src/routes/secrets.ts @@ -6,6 +6,7 @@ import { remoteSecretImportPreviewSchema, remoteSecretImportSchema, rotateSecretSchema, + secretProviderConfigDiscoveryPreviewSchema, updateSecretProviderConfigSchema, updateSecretSchema, } from "@paperclipai/shared"; @@ -41,6 +42,41 @@ export function secretRoutes(db: Db) { res.json(await svc.listProviderConfigs(companyId)); }); + router.post( + "/companies/:companyId/secret-provider-configs/discovery/preview", + validate(secretProviderConfigDiscoveryPreviewSchema), + async (req, res) => { + assertBoard(req); + const companyId = req.params.companyId as string; + assertCompanyAccess(req, companyId); + + const preview = await svc.previewProviderConfigDiscovery(companyId, { + provider: req.body.provider, + config: req.body.config, + query: req.body.query, + nextToken: req.body.nextToken, + pageSize: req.body.pageSize, + }); + + await logActivity(db, { + companyId, + actorType: "user", + actorId: req.actor.userId ?? "board", + action: "secret_provider_config.discovery_previewed", + entityType: "secret_provider_config_discovery", + entityId: companyId, + details: { + provider: preview.provider, + candidateCount: preview.candidates.length, + sampledSecretCount: preview.sampledSecretCount, + warningCount: preview.warnings.length, + }, + }); + + res.json(preview); + }, + ); + router.post("/companies/:companyId/secret-provider-configs", validate(createSecretProviderConfigSchema), async (req, res) => { assertBoard(req); const companyId = req.params.companyId as string; @@ -136,27 +172,27 @@ export function secretRoutes(db: Db) { } assertCompanyAccess(req, existing.companyId); - const disabled = await svc.disableProviderConfig(id); - if (!disabled) { + const removed = await svc.removeProviderConfig(id); + if (!removed) { res.status(404).json({ error: "Provider vault not found" }); return; } await logActivity(db, { - companyId: disabled.companyId, + companyId: removed.companyId, actorType: "user", actorId: req.actor.userId ?? "board", - action: "secret_provider_config.disabled", + action: "secret_provider_config.removed", entityType: "secret_provider_config", - entityId: disabled.id, + entityId: removed.id, details: { - provider: disabled.provider, - displayName: disabled.displayName, - status: disabled.status, + provider: removed.provider, + displayName: removed.displayName, + remoteDeleted: false, }, }); - res.json(disabled); + res.json(removed); }); router.post("/secret-provider-configs/:id/default", async (req, res) => { diff --git a/server/src/secrets/aws-secrets-manager-provider.ts b/server/src/secrets/aws-secrets-manager-provider.ts index 8c638594..a697556a 100644 --- a/server/src/secrets/aws-secrets-manager-provider.ts +++ b/server/src/secrets/aws-secrets-manager-provider.ts @@ -1,6 +1,6 @@ import { createHash, createHmac } from "node:crypto"; import { S3Client } from "@aws-sdk/client-s3"; -import type { DeploymentMode } from "@paperclipai/shared"; +import type { DeploymentMode, SecretProviderConfigDiscoveryPreviewResult } from "@paperclipai/shared"; import { unprocessable } from "../errors.js"; import type { PreparedSecretVersion, @@ -24,6 +24,8 @@ const DEFAULT_DELETE_RECOVERY_WINDOW_DAYS = 30; const AWS_SECRETS_MANAGER_REQUEST_TIMEOUT_MS = 30_000; const AWS_CREDENTIAL_CACHE_TTL_MS = 5 * 60_000; const AWS_CREDENTIAL_EXPIRATION_SKEW_MS = 60_000; +const PROVIDER_CONFIG_DISCOVERY_SAMPLE_LIMIT = 3; +const PROVIDER_CONFIG_DISCOVERY_CANDIDATE_LIMIT = 6; const AWS_RUNTIME_CREDENTIAL_WARNING = "AWS bootstrap credentials must be available to the Paperclip server runtime through the AWS SDK default credential provider chain: IAM role/workload identity, AWS_PROFILE/SSO/shared credentials, web identity, container/instance metadata, or short-lived shell credentials."; const AWS_CREDENTIAL_CUSTODY_WARNING = @@ -590,6 +592,234 @@ function createRemoteSecretMetadata(entry: AwsSecretsManagerListSecretEntry): Re }; } +function tagValue(tags: Map, keys: string[]) { + for (const key of keys) { + const value = tags.get(key.toLowerCase()); + if (value) return value; + } + return null; +} + +function normalizeAwsTags(tags: AwsSecretsManagerTag[] | undefined) { + const normalized = new Map(); + for (const tag of tags ?? []) { + const key = tag.Key?.trim(); + const value = tag.Value?.trim(); + if (key && value) normalized.set(key.toLowerCase(), value); + } + return normalized; +} + +function commonValue(values: Array) { + const nonEmpty = values.filter((value): value is string => Boolean(value?.trim())); + if (nonEmpty.length === 0) return null; + const first = nonEmpty[0]; + return nonEmpty.every((value) => value === first) ? first : null; +} + +function uniqueValues(values: Array) { + return [...new Set(values.filter((value): value is string => Boolean(value?.trim())))]; +} + +function pathSegments(name: string) { + return name.split("/").map((segment) => segment.trim()).filter(Boolean); +} + +function inferPathSignals(entry: AwsSecretsManagerListSecretEntry, tags: Map) { + const name = entry.Name?.trim() || entry.ARN?.trim() || ""; + const segments = pathSegments(name); + const paperclipDeploymentId = tagValue(tags, ["paperclip:deployment-id"]); + const paperclipManaged = tagValue(tags, ["paperclip:managed-by"])?.toLowerCase() === "paperclip"; + + if (paperclipDeploymentId || paperclipManaged) { + return { + prefix: segments[0] ?? DEFAULT_PREFIX, + namespace: paperclipDeploymentId ?? segments[1] ?? null, + }; + } + + if (segments.length >= 3) { + return { + prefix: segments[0] ?? null, + namespace: segments[1] ?? null, + }; + } + + return { + prefix: segments[0] ?? null, + namespace: null, + }; +} + +function discoveryDisplayName(input: { + environmentTag: string | null; + ownerTag: string | null; + namespace: string | null; + secretNamePrefix: string | null; +}) { + const qualifier = + input.environmentTag ?? + input.namespace ?? + input.secretNamePrefix ?? + input.ownerTag ?? + "discovered"; + return `AWS ${qualifier}`; +} + +function discoverAwsProviderConfigCandidates(input: { + companyId: string; + config: AwsSecretsManagerConfig; + draftConfig: Record; + entries: AwsSecretsManagerListSecretEntry[]; + nextToken: string | null; +}): SecretProviderConfigDiscoveryPreviewResult { + type DiscoverySample = { + entry: AwsSecretsManagerListSecretEntry; + name: string; + tags: Map; + prefix: string | null; + namespace: string | null; + environmentTag: string | null; + ownerTag: string | null; + kmsKeyId: string | null; + paperclipManaged: boolean; + paperclipCompanyId: string | null; + }; + + const skippedWarnings: string[] = []; + let skippedForeignPaperclipSampleCount = 0; + const samples: DiscoverySample[] = []; + + for (const entry of input.entries) { + const name = entry.Name?.trim() || entry.ARN?.trim(); + if (!name) continue; + const tags = normalizeAwsTags(entry.Tags); + const paperclipManaged = tagValue(tags, ["paperclip:managed-by"])?.toLowerCase() === "paperclip"; + const paperclipCompanyId = tagValue(tags, ["paperclip:company-id"]); + if (paperclipManaged && paperclipCompanyId !== input.companyId) { + skippedForeignPaperclipSampleCount += 1; + continue; + } + const path = inferPathSignals(entry, tags); + samples.push({ + entry, + name, + tags, + prefix: path.prefix, + namespace: path.namespace, + environmentTag: tagValue(tags, ["paperclip:environment", "environment", "env", "stage"]), + ownerTag: tagValue(tags, ["paperclip:provider-owner", "owner", "team", "service", "application"]), + kmsKeyId: asOptionalNonEmptyString(entry.KmsKeyId), + paperclipManaged, + paperclipCompanyId, + }); + } + + if (skippedForeignPaperclipSampleCount > 0) { + skippedWarnings.push( + `Skipped ${skippedForeignPaperclipSampleCount} Paperclip-managed AWS secret sample(s) that were not tagged for this company.`, + ); + } + + const draftNamespace = asOptionalNonEmptyString(input.draftConfig.namespace); + const draftPrefix = asOptionalNonEmptyString(input.draftConfig.secretNamePrefix); + const draftKmsKeyId = asOptionalNonEmptyString(input.draftConfig.kmsKeyId); + const draftEnvironmentTag = asOptionalNonEmptyString(input.draftConfig.environmentTag); + const draftOwnerTag = asOptionalNonEmptyString(input.draftConfig.ownerTag); + const groups = new Map(); + + for (const sample of samples) { + const key = [ + draftPrefix ?? sample.prefix ?? "", + draftNamespace ?? sample.namespace ?? "", + ].join("\0"); + groups.set(key, [...(groups.get(key) ?? []), sample]); + } + + const candidates = [...groups.values()] + .sort((a, b) => b.length - a.length) + .slice(0, PROVIDER_CONFIG_DISCOVERY_CANDIDATE_LIMIT) + .map((group) => { + const prefix = draftPrefix ?? commonValue(group.map((sample) => sample.prefix)) ?? input.config.prefix; + const namespace = draftNamespace ?? commonValue(group.map((sample) => sample.namespace)) ?? null; + const environmentTag = draftEnvironmentTag ?? commonValue(group.map((sample) => sample.environmentTag)); + const ownerTag = draftOwnerTag ?? commonValue(group.map((sample) => sample.ownerTag)); + const kmsKeys = uniqueValues(group.map((sample) => sample.kmsKeyId)); + const commonKmsKey = commonValue(group.map((sample) => sample.kmsKeyId)); + const kmsKeyId = draftKmsKeyId ?? commonKmsKey; + const candidateWarnings: string[] = []; + + if (!namespace) { + candidateWarnings.push("No stable namespace signal was found in the sampled AWS secret names or tags."); + } + if (!environmentTag) { + candidateWarnings.push("No common environment tag was found in the sampled AWS secrets."); + } + if (!ownerTag) { + candidateWarnings.push("No common owner/team tag was found in the sampled AWS secrets."); + } + if (kmsKeys.length > 1 && !draftKmsKeyId) { + candidateWarnings.push("Sampled AWS secrets use multiple KMS keys; choose the intended KMS key before saving."); + } + if (group.some((sample) => sample.paperclipManaged && sample.paperclipCompanyId === input.companyId)) { + candidateWarnings.push("Sample includes Paperclip-managed secrets for this company; do not import them as external references."); + } + + return { + provider: "aws_secrets_manager" as const, + displayName: discoveryDisplayName({ + environmentTag, + ownerTag, + namespace, + secretNamePrefix: prefix, + }), + config: { + region: input.config.region, + namespace, + secretNamePrefix: prefix, + kmsKeyId: kmsKeyId ?? null, + ownerTag, + environmentTag, + }, + sampleCount: group.length, + samples: group.slice(0, PROVIDER_CONFIG_DISCOVERY_SAMPLE_LIMIT).map((sample) => ({ + name: sample.name, + hasKmsKey: Boolean(sample.kmsKeyId), + tagKeys: [...sample.tags.keys()].sort(), + })), + signals: { + namespace, + secretNamePrefix: prefix, + environmentTag, + ownerTag, + kmsKeyId: kmsKeyId ?? null, + hasKmsKey: kmsKeys.length > 0, + sampleCount: group.length, + paperclipManagedSampleCount: group.filter((sample) => sample.paperclipManaged).length, + skippedForeignPaperclipSampleCount, + }, + warnings: candidateWarnings, + }; + }); + + const warnings = [...skippedWarnings]; + if (samples.length === 0) { + warnings.push("AWS Secrets Manager returned no metadata samples for this draft provider vault config."); + } + if (groups.size > PROVIDER_CONFIG_DISCOVERY_CANDIDATE_LIMIT) { + warnings.push("Additional AWS secret name groups were omitted from this preview; refine the query to inspect them."); + } + + return { + provider: "aws_secrets_manager", + nextToken: input.nextToken, + sampledSecretCount: samples.length, + skippedForeignPaperclipSampleCount, + candidates, + warnings, + }; +} + function asAwsSecretsManagerMaterial(value: StoredSecretVersionMaterial): AwsSecretsManagerMaterial { if ( value && @@ -983,6 +1213,36 @@ export function createAwsSecretsManagerProvider( normalizeAwsError("listSecrets", error); } }, + async discoverProviderConfigs(input): Promise { + const config = resolveConfig(input.providerConfig); + const gateway = resolveGateway(config); + const query = input.query?.trim(); + const pageSize = + input.pageSize && Number.isFinite(input.pageSize) + ? Math.min(Math.max(Math.trunc(input.pageSize), 1), 100) + : 100; + + try { + if (!gateway.listSecrets) { + throw new Error("ListSecrets gateway operation is unavailable"); + } + const listed = await gateway.listSecrets({ + MaxResults: pageSize, + NextToken: input.nextToken?.trim() || undefined, + IncludePlannedDeletion: false, + Filters: query ? [{ Key: "all", Values: [query] }] : undefined, + }); + return discoverAwsProviderConfigCandidates({ + companyId: input.companyId, + config, + draftConfig: input.providerConfig.config, + entries: listed.SecretList ?? [], + nextToken: listed.NextToken ?? null, + }); + } catch (error) { + normalizeAwsError("discoverProviderConfigs", error); + } + }, async resolveVersion(input) { const config = resolveConfig(input.providerConfig); const gateway = resolveGateway(config); diff --git a/server/src/secrets/types.ts b/server/src/secrets/types.ts index 341163e6..9edf7766 100644 --- a/server/src/secrets/types.ts +++ b/server/src/secrets/types.ts @@ -1,4 +1,8 @@ -import type { SecretProvider, SecretProviderDescriptor } from "@paperclipai/shared"; +import type { + SecretProvider, + SecretProviderConfigDiscoveryPreviewResult, + SecretProviderDescriptor, +} from "@paperclipai/shared"; import type { DeploymentMode } from "@paperclipai/shared"; export interface StoredSecretVersionMaterial { @@ -152,6 +156,13 @@ export interface SecretProviderModule { nextToken?: string | null; pageSize?: number; }): Promise; + discoverProviderConfigs?(input: { + companyId: string; + providerConfig: SecretProviderVaultRuntimeConfig; + query?: string | null; + nextToken?: string | null; + pageSize?: number; + }): Promise; resolveVersion(input: { material: StoredSecretVersionMaterial; externalRef: string | null; diff --git a/server/src/services/secrets.ts b/server/src/services/secrets.ts index ce9ee967..327b250e 100644 --- a/server/src/services/secrets.ts +++ b/server/src/services/secrets.ts @@ -20,6 +20,7 @@ import type { RemoteSecretImportCandidate, RemoteSecretImportConflict, RemoteSecretImportRowResult, + SecretProviderConfigDiscoveryPreviewResult, SecretBindingTargetType, SecretProvider, SecretProviderConfigHealthResponse, @@ -34,6 +35,7 @@ import { isUuidLike, normalizeAgentUrlKey, secretProviderConfigPayloadSchema, + secretProviderConfigDiscoveryPreviewSchema, updateSecretProviderConfigSchema, } from "@paperclipai/shared"; import { conflict, HttpError, notFound, unprocessable } from "../errors.js"; @@ -471,6 +473,19 @@ export function secretService(db: Db) { return parsed.data.config; } + function toDraftProviderVaultRuntimeConfig(input: { + companyId: string; + provider: SecretProvider; + config: Record; + }): SecretProviderVaultRuntimeConfig { + return { + id: `discovery-preview-${input.companyId}`, + provider: input.provider, + status: "ready", + config: validateProviderConfigPayload(input.provider, input.config), + }; + } + function providerConfigHealth(input: { id: string; provider: SecretProvider; @@ -949,6 +964,54 @@ export function secretService(db: Db) { checkProviders: () => checkSecretProviders(), + previewProviderConfigDiscovery: async ( + companyId: string, + input: { + provider: SecretProvider; + config?: Record; + query?: string | null; + nextToken?: string | null; + pageSize?: number; + }, + ): Promise => { + const parsed = secretProviderConfigDiscoveryPreviewSchema.safeParse({ + provider: input.provider, + config: input.config ?? {}, + query: input.query, + nextToken: input.nextToken, + pageSize: input.pageSize, + }); + if (!parsed.success) { + throw unprocessable("Invalid provider vault discovery config", parsed.error.flatten()); + } + const providerId = parsed.data.provider as SecretProvider; + const provider = getSecretProvider(providerId); + if (!provider.discoverProviderConfigs) { + throw unprocessable(`${providerId} provider does not support provider vault discovery`); + } + const runtimeConfig = toDraftProviderVaultRuntimeConfig({ + companyId, + provider: providerId, + config: parsed.data.config, + }); + try { + return await provider.discoverProviderConfigs({ + companyId, + providerConfig: runtimeConfig, + query: parsed.data.query, + nextToken: parsed.data.nextToken, + pageSize: parsed.data.pageSize, + }); + } catch (error) { + throw remoteProviderHttpError(error, { + companyId, + provider: providerId, + providerConfigId: "discovery-preview", + operation: "secret_provider_config.discovery.preview", + }); + } + }, + listProviderConfigs: (companyId: string) => db .select() @@ -1071,6 +1134,13 @@ export function secretService(db: Db) { .then((rows) => rows[0] ?? null); }, + removeProviderConfig: async (id: string) => + db + .delete(companySecretProviderConfigs) + .where(eq(companySecretProviderConfigs.id, id)) + .returning() + .then((rows) => rows[0] ?? null), + setDefaultProviderConfig: async (id: string) => { const existing = await getProviderConfigById(id); if (!existing) return null; diff --git a/ui/src/api/secrets.ts b/ui/src/api/secrets.ts index aedfa85d..f04705f3 100644 --- a/ui/src/api/secrets.ts +++ b/ui/src/api/secrets.ts @@ -2,6 +2,7 @@ import type { CompanySecret, CompanySecretUsageBinding, CompanySecretProviderConfig, + SecretProviderConfigDiscoveryPreviewResult, RemoteSecretImportPreviewResult, RemoteSecretImportResult, SecretAccessEvent, @@ -95,6 +96,14 @@ export interface RemoteImportInput { secrets: RemoteImportSelectionInput[]; } +export interface SecretProviderConfigDiscoveryPreviewInput { + provider: SecretProvider; + config?: Record; + query?: string | null; + nextToken?: string | null; + pageSize?: number; +} + export const secretsApi = { list: (companyId: string) => api.get(`/companies/${companyId}/secrets`), providers: (companyId: string) => @@ -103,11 +112,21 @@ export const secretsApi = { api.get(`/companies/${companyId}/secret-providers/health`), providerConfigs: (companyId: string) => api.get(`/companies/${companyId}/secret-provider-configs`), + providerConfigDiscoveryPreview: ( + companyId: string, + data: SecretProviderConfigDiscoveryPreviewInput, + ) => + api.post( + `/companies/${companyId}/secret-provider-configs/discovery/preview`, + data, + ), createProviderConfig: (companyId: string, data: CreateSecretProviderConfigInput) => api.post(`/companies/${companyId}/secret-provider-configs`, data), updateProviderConfig: (id: string, data: UpdateSecretProviderConfigInput) => api.patch(`/secret-provider-configs/${id}`, data), disableProviderConfig: (id: string) => + api.patch(`/secret-provider-configs/${id}`, { status: "disabled" }), + removeProviderConfig: (id: string) => api.delete(`/secret-provider-configs/${id}`), setDefaultProviderConfig: (id: string) => api.post(`/secret-provider-configs/${id}/default`, {}), diff --git a/ui/src/pages/Secrets.render.test.tsx b/ui/src/pages/Secrets.render.test.tsx index a61ba7cd..8a274d89 100644 --- a/ui/src/pages/Secrets.render.test.tsx +++ b/ui/src/pages/Secrets.render.test.tsx @@ -4,18 +4,25 @@ import { act } from "react"; import { createRoot } from "react-dom/client"; import { MemoryRouter } from "react-router-dom"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; -import type { CompanySecretProviderConfig, SecretProviderDescriptor } from "@paperclipai/shared"; +import type { + CompanySecretProviderConfig, + SecretProviderConfigDiscoveryPreviewResult, + SecretProviderDescriptor, +} from "@paperclipai/shared"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { ProviderVaultsTab, Secrets } from "./Secrets"; +import { ApiError } from "../api/client"; const mockSecretsApi = vi.hoisted(() => ({ list: vi.fn(), providers: vi.fn(), providerHealth: vi.fn(), providerConfigs: vi.fn(), + providerConfigDiscoveryPreview: vi.fn(), createProviderConfig: vi.fn(), updateProviderConfig: vi.fn(), disableProviderConfig: vi.fn(), + removeProviderConfig: vi.fn(), setDefaultProviderConfig: vi.fn(), checkProviderConfigHealth: vi.fn(), create: vi.fn(), @@ -133,6 +140,79 @@ async function flushReact() { }); } +function makeDiscoveryPreview( + overrides: Partial = {}, +): SecretProviderConfigDiscoveryPreviewResult { + return { + provider: "aws_secrets_manager", + nextToken: null, + sampledSecretCount: 2, + skippedForeignPaperclipSampleCount: 0, + warnings: [], + candidates: [ + { + provider: "aws_secrets_manager", + displayName: "AWS production", + config: { + region: "us-east-1", + namespace: "prod-use1", + secretNamePrefix: "paperclip", + kmsKeyId: "alias/paperclip-secrets", + ownerTag: "platform", + environmentTag: "production", + }, + sampleCount: 2, + samples: [ + { + name: "paperclip/prod-use1/company-1/openai", + hasKmsKey: true, + tagKeys: ["owner", "environment"], + }, + ], + signals: { + namespace: "prod-use1", + secretNamePrefix: "paperclip", + environmentTag: "production", + ownerTag: "platform", + kmsKeyId: "alias/paperclip-secrets", + hasKmsKey: true, + sampleCount: 2, + paperclipManagedSampleCount: 0, + skippedForeignPaperclipSampleCount: 0, + }, + warnings: [], + }, + ], + ...overrides, + }; +} + +function setInputValue(input: HTMLInputElement, value: string) { + const setter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, "value")?.set; + setter?.call(input, value); + input.dispatchEvent(new Event("input", { bubbles: true })); +} + +async function openAwsVaultDialog() { + const vaultTabButton = [...document.querySelectorAll("button")].find( + (button) => button.textContent?.includes("Provider vaults"), + ) as HTMLButtonElement | undefined; + await act(async () => { + vaultTabButton?.dispatchEvent(new PointerEvent("pointerdown", { bubbles: true })); + vaultTabButton?.dispatchEvent(new KeyboardEvent("keydown", { bubbles: true, key: "Enter" })); + vaultTabButton?.click(); + }); + await flushReact(); + + const addVaultButtons = [...document.querySelectorAll("button")].filter( + (button) => button.textContent?.includes("Add vault"), + ) as HTMLButtonElement[]; + await act(async () => { + addVaultButtons[1]?.click(); + }); + await flushReact(); +} + describe("Secrets page layout", () => { let container: HTMLDivElement; @@ -153,6 +233,7 @@ describe("Secrets page layout", () => { ], }); mockSecretsApi.providerConfigs.mockResolvedValue(providerConfigs); + mockSecretsApi.providerConfigDiscoveryPreview.mockResolvedValue(makeDiscoveryPreview()); }); afterEach(() => { @@ -200,6 +281,7 @@ describe("Secrets page layout", () => { onCreate={vi.fn()} onEdit={vi.fn()} onDisable={vi.fn()} + onRemove={vi.fn()} onSetDefault={vi.fn()} onHealthCheck={vi.fn()} pendingActionId={null} @@ -218,6 +300,64 @@ describe("Secrets page layout", () => { }); }); + it("warns that removing a provider vault only removes Paperclip config", async () => { + mockSecretsApi.removeProviderConfig.mockResolvedValueOnce(providerConfigs[1]); + const root = createRoot(container); + const queryClient = new QueryClient({ + defaultOptions: { queries: { retry: false } }, + }); + + await act(async () => { + root.render( + + + + + , + ); + }); + await flushReact(); + await flushReact(); + + const vaultTabButton = [...document.querySelectorAll("button")].find( + (button) => button.textContent?.includes("Provider vaults"), + ) as HTMLButtonElement | undefined; + await act(async () => { + vaultTabButton?.dispatchEvent(new PointerEvent("pointerdown", { bubbles: true })); + vaultTabButton?.dispatchEvent(new KeyboardEvent("keydown", { bubbles: true, key: "Enter" })); + vaultTabButton?.click(); + }); + await flushReact(); + + const removeButtons = [...document.querySelectorAll("button")].filter( + (button) => button.textContent?.trim() === "Remove", + ) as HTMLButtonElement[]; + await act(async () => { + removeButtons[1]?.click(); + }); + await flushReact(); + + expect(document.body.textContent).toContain("Remove provider vault"); + expect(document.body.textContent).toContain("from Paperclip only"); + expect(document.body.textContent).toContain("does not delete"); + expect(document.body.textContent).toContain("AWS Secrets Manager"); + + const confirmButton = [...document.querySelectorAll("button")].find( + (button) => button.textContent?.includes("Remove from Paperclip"), + ) as HTMLButtonElement | undefined; + await act(async () => { + confirmButton?.click(); + }); + await flushReact(); + + expect(mockSecretsApi.removeProviderConfig).toHaveBeenCalledWith("vault-aws"); + expect(mockSecretsApi.disableProviderConfig).not.toHaveBeenCalled(); + + await act(async () => { + root.unmount(); + }); + }); + it("opens reference details from the secrets table count", async () => { mockSecretsApi.list.mockResolvedValue([ { @@ -344,4 +484,173 @@ describe("Secrets page layout", () => { root.unmount(); }); }); + + it("discovers AWS provider vault candidates and applies selected values as prefill", async () => { + mockSecretsApi.providerConfigDiscoveryPreview.mockResolvedValueOnce(makeDiscoveryPreview()); + const root = createRoot(container); + const queryClient = new QueryClient({ + defaultOptions: { queries: { retry: false } }, + }); + + await act(async () => { + root.render( + + + + + , + ); + }); + await flushReact(); + await flushReact(); + await openAwsVaultDialog(); + + const discoveryButton = document.querySelector( + '[data-testid="aws-vault-discovery-button"]', + ) as HTMLButtonElement | null; + expect(discoveryButton).not.toBeNull(); + expect(discoveryButton?.disabled).toBe(true); + + const regionInput = document.getElementById("provider-vault-aws-region") as HTMLInputElement | null; + const prefixInput = document.getElementById("provider-vault-secret-name-prefix") as HTMLInputElement | null; + expect(regionInput).not.toBeNull(); + await act(async () => { + setInputValue(regionInput!, "us-east-1"); + setInputValue(prefixInput!, "paperclip"); + }); + await flushReact(); + + expect(discoveryButton?.disabled).toBe(false); + await act(async () => { + discoveryButton?.click(); + }); + await flushReact(); + await flushReact(); + + expect(mockSecretsApi.providerConfigDiscoveryPreview).toHaveBeenCalledWith("company-1", { + provider: "aws_secrets_manager", + config: { + region: "us-east-1", + namespace: null, + secretNamePrefix: "paperclip", + kmsKeyId: null, + ownerTag: null, + environmentTag: null, + }, + query: "paperclip", + pageSize: 25, + }); + expect(document.body.textContent).toContain("AWS production"); + + const useValuesButton = [...document.querySelectorAll("button")].find( + (button) => button.textContent?.includes("Use values"), + ) as HTMLButtonElement | undefined; + await act(async () => { + useValuesButton?.click(); + }); + await flushReact(); + + expect((document.getElementById("vault-name") as HTMLInputElement).value).toBe("AWS production"); + expect((document.getElementById("provider-vault-namespace") as HTMLInputElement).value).toBe("prod-use1"); + expect((document.getElementById("provider-vault-secret-name-prefix") as HTMLInputElement).value).toBe("paperclip"); + expect((document.getElementById("provider-vault-kms-key-id") as HTMLInputElement).value).toBe("alias/paperclip-secrets"); + expect((document.getElementById("provider-vault-owner-tag") as HTMLInputElement).value).toBe("platform"); + expect((document.getElementById("provider-vault-environment-tag") as HTMLInputElement).value).toBe("production"); + expect(mockSecretsApi.createProviderConfig).not.toHaveBeenCalled(); + + await act(async () => { + root.unmount(); + }); + }); + + it("shows AWS discovery errors without replacing manual vault form values", async () => { + mockSecretsApi.providerConfigDiscoveryPreview.mockRejectedValueOnce( + new ApiError("AWS Secrets Manager denied the request. Check IAM permissions for this provider vault.", 403, { + details: { code: "access_denied" }, + }), + ); + const root = createRoot(container); + const queryClient = new QueryClient({ + defaultOptions: { queries: { retry: false } }, + }); + + await act(async () => { + root.render( + + + + + , + ); + }); + await flushReact(); + await flushReact(); + await openAwsVaultDialog(); + + const regionInput = document.getElementById("provider-vault-aws-region") as HTMLInputElement; + const namespaceInput = document.getElementById("provider-vault-namespace") as HTMLInputElement; + await act(async () => { + setInputValue(regionInput, "us-west-2"); + setInputValue(namespaceInput, "manual-prod"); + }); + await flushReact(); + + const discoveryButton = document.querySelector( + '[data-testid="aws-vault-discovery-button"]', + ) as HTMLButtonElement | null; + await act(async () => { + discoveryButton?.click(); + }); + await flushReact(); + await flushReact(); + + expect(document.body.textContent).toContain("AWS Secrets Manager denied the request"); + expect(regionInput.value).toBe("us-west-2"); + expect(namespaceInput.value).toBe("manual-prod"); + + await act(async () => { + root.unmount(); + }); + }); + + it("shows an empty AWS discovery result without blocking manual entry", async () => { + mockSecretsApi.providerConfigDiscoveryPreview.mockResolvedValueOnce( + makeDiscoveryPreview({ candidates: [], sampledSecretCount: 0 }), + ); + const root = createRoot(container); + const queryClient = new QueryClient({ + defaultOptions: { queries: { retry: false } }, + }); + + await act(async () => { + root.render( + + + + + , + ); + }); + await flushReact(); + await flushReact(); + await openAwsVaultDialog(); + + const regionInput = document.getElementById("provider-vault-aws-region") as HTMLInputElement; + await act(async () => { + setInputValue(regionInput, "us-east-2"); + }); + await flushReact(); + await act(async () => { + (document.querySelector('[data-testid="aws-vault-discovery-button"]') as HTMLButtonElement | null)?.click(); + }); + await flushReact(); + await flushReact(); + + expect(document.body.textContent).toContain("No AWS vault metadata candidates found"); + expect(regionInput.value).toBe("us-east-2"); + + await act(async () => { + root.unmount(); + }); + }); }); diff --git a/ui/src/pages/Secrets.tsx b/ui/src/pages/Secrets.tsx index fea13de9..985df8ce 100644 --- a/ui/src/pages/Secrets.tsx +++ b/ui/src/pages/Secrets.tsx @@ -29,6 +29,8 @@ import type { CompanySecret, CompanySecretUsageBinding, CompanySecretProviderConfig, + SecretProviderConfigDiscoveryCandidate, + SecretProviderConfigDiscoveryPreviewResult, SecretAccessEvent, SecretManagedMode, SecretProvider, @@ -325,6 +327,16 @@ function buildProviderVaultConfig(form: ProviderVaultForm): Record(null); const [vaultDialogOpen, setVaultDialogOpen] = useState(false); const [editingVault, setEditingVault] = useState(null); + const [removeVaultConfirm, setRemoveVaultConfirm] = useState(null); const [vaultForm, setVaultForm] = useState(() => emptyProviderVaultForm()); const [vaultError, setVaultError] = useState(null); + const [vaultDiscovery, setVaultDiscovery] = + useState(null); + const [vaultDiscoveryError, setVaultDiscoveryError] = useState(null); useEffect(() => { setBreadcrumbs([{ label: "Secrets" }]); @@ -648,6 +664,24 @@ export function Secrets() { }, }); + const discoverVaultMutation = useMutation({ + mutationFn: () => + secretsApi.providerConfigDiscoveryPreview(selectedCompanyId!, { + provider: "aws_secrets_manager", + config: buildProviderVaultConfig(vaultForm), + query: getAwsProviderVaultDiscoveryQuery(vaultForm), + pageSize: 25, + }), + onSuccess: (preview) => { + setVaultDiscovery(preview); + setVaultDiscoveryError(null); + }, + onError: (error) => { + setVaultDiscovery(null); + setVaultDiscoveryError(error instanceof ApiError ? error.message : (error as Error).message); + }, + }); + const disableVaultMutation = useMutation({ mutationFn: (id: string) => secretsApi.disableProviderConfig(id), onSuccess: (updated) => { @@ -663,6 +697,26 @@ export function Secrets() { }, }); + const removeVaultMutation = useMutation({ + mutationFn: (id: string) => secretsApi.removeProviderConfig(id), + onSuccess: (removed) => { + pushToast({ + title: "Provider vault removed", + body: `${removed.displayName} was removed from Paperclip only.`, + tone: "info", + }); + setRemoveVaultConfirm(null); + invalidateAll(); + }, + onError: (error) => { + pushToast({ + title: "Remove failed", + body: error instanceof Error ? error.message : "Try again", + tone: "error", + }); + }, + }); + const defaultVaultMutation = useMutation({ mutationFn: (id: string) => secretsApi.setDefaultProviderConfig(id), onSuccess: (updated) => { @@ -735,6 +789,8 @@ export function Secrets() { setEditingVault(null); setVaultForm(emptyProviderVaultForm(provider)); setVaultError(null); + setVaultDiscovery(null); + setVaultDiscoveryError(null); setVaultDialogOpen(true); } @@ -742,9 +798,26 @@ export function Secrets() { setEditingVault(config); setVaultForm(providerVaultFormFromConfig(config)); setVaultError(null); + setVaultDiscovery(null); + setVaultDiscoveryError(null); setVaultDialogOpen(true); } + function applyVaultDiscoveryCandidate(candidate: SecretProviderConfigDiscoveryCandidate) { + if (candidate.provider !== "aws_secrets_manager") return; + const config = candidate.config as Record; + setVaultForm((current) => ({ + ...current, + displayName: current.displayName.trim() ? current.displayName : candidate.displayName, + region: providerConfigValue(config, "region"), + namespace: providerConfigValue(config, "namespace"), + secretNamePrefix: providerConfigValue(config, "secretNamePrefix"), + kmsKeyId: providerConfigValue(config, "kmsKeyId"), + ownerTag: providerConfigValue(config, "ownerTag"), + environmentTag: providerConfigValue(config, "environmentTag"), + })); + } + if (!selectedCompanyId) { return (

Select a company to manage secrets.
@@ -923,10 +996,12 @@ export function Secrets() { onCreate={openCreateVault} onEdit={openEditVault} onDisable={(config) => disableVaultMutation.mutate(config.id)} + onRemove={(config) => setRemoveVaultConfirm(config)} onSetDefault={(config) => defaultVaultMutation.mutate(config.id)} onHealthCheck={(config) => healthVaultMutation.mutate(config.id)} pendingActionId={ disableVaultMutation.variables ?? + removeVaultMutation.variables ?? defaultVaultMutation.variables ?? healthVaultMutation.variables ?? null @@ -1305,6 +1380,8 @@ export function Secrets() { onChange={(event) => { const provider = event.target.value as SecretProvider; setVaultForm(emptyProviderVaultForm(provider)); + setVaultDiscovery(null); + setVaultDiscoveryError(null); }} > {PROVIDER_ORDER.map((provider) => ( @@ -1367,6 +1444,21 @@ export function Secrets() { + {!editingVault && vaultForm.provider === "aws_secrets_manager" ? ( + { + setVaultDiscovery(null); + setVaultDiscoveryError(null); + discoverVaultMutation.mutate(); + }} + onApply={applyVaultDiscoveryCandidate} + /> + ) : null} + {vaultForm.provider === "gcp_secret_manager" || vaultForm.provider === "vault" ? (
This provider can save draft routing metadata, but runtime writes and resolution stay disabled until @@ -1510,6 +1602,32 @@ export function Secrets() { + + !open && setRemoveVaultConfirm(null)}> + + + Remove provider vault + + Removes {removeVaultConfirm?.displayName} from Paperclip only.{" "} + {removeVaultConfirm?.provider === "aws_secrets_manager" + ? "This does not delete the remote AWS Secrets Manager vault, secrets, or any AWS data." + : "This does not delete any remote provider data."}{" "} + Secrets using this vault will lose the vault association until you assign another one. + + + + + + + +
); } @@ -1748,6 +1866,7 @@ export function ProviderVaultsTab({ onCreate, onEdit, onDisable, + onRemove, onSetDefault, onHealthCheck, pendingActionId, @@ -1760,6 +1879,7 @@ export function ProviderVaultsTab({ onCreate: (provider: SecretProvider) => void; onEdit: (config: CompanySecretProviderConfig) => void; onDisable: (config: CompanySecretProviderConfig) => void; + onRemove: (config: CompanySecretProviderConfig) => void; onSetDefault: (config: CompanySecretProviderConfig) => void; onHealthCheck: (config: CompanySecretProviderConfig) => void; pendingActionId: string | null; @@ -1840,6 +1960,7 @@ export function ProviderVaultsTab({ pending={pendingActionId === config.id} onEdit={() => onEdit(config)} onDisable={() => onDisable(config)} + onRemove={() => onRemove(config)} onSetDefault={() => onSetDefault(config)} onHealthCheck={() => onHealthCheck(config)} /> @@ -1858,6 +1979,7 @@ function ProviderVaultCard({ pending, onEdit, onDisable, + onRemove, onSetDefault, onHealthCheck, }: { @@ -1865,6 +1987,7 @@ function ProviderVaultCard({ pending: boolean; onEdit: () => void; onDisable: () => void; + onRemove: () => void; onSetDefault: () => void; onHealthCheck: () => void; }) { @@ -1936,6 +2059,16 @@ function ProviderVaultCard({ Disable + ); @@ -2002,6 +2135,162 @@ function ProviderVaultFields({ ); } +function AwsProviderVaultDiscoveryPanel({ + form, + preview, + error, + loading, + onDiscover, + onApply, +}: { + form: ProviderVaultForm; + preview: SecretProviderConfigDiscoveryPreviewResult | null; + error: string | null; + loading: boolean; + onDiscover: () => void; + onApply: (candidate: SecretProviderConfigDiscoveryCandidate) => void; +}) { + const canDiscover = Boolean(form.region.trim()); + const warnings = preview?.warnings ?? []; + + return ( +
+
+
+

AWS discovery

+

+ Uses the current draft routing fields to inspect AWS Secrets Manager metadata. Values are not read. +

+
+ +
+ + {!canDiscover ? ( +

Enter an AWS region before discovery.

+ ) : null} + + {loading ? ( +
+ + Searching AWS Secrets Manager metadata +
+ ) : null} + + {error ? ( +
+ + {error} +
+ ) : null} + + {warnings.length > 0 ? ( +
+ {warnings.map((warning) => ( +
+ + {warning} +
+ ))} +
+ ) : null} + + {preview && preview.candidates.length === 0 && !loading ? ( +
+ No AWS vault metadata candidates found. Manual entry is still available. +
+ ) : null} + + {preview && preview.candidates.length > 0 ? ( +
+
+ + + {preview.candidates.length} candidate{preview.candidates.length === 1 ? "" : "s"} from{" "} + {preview.sampledSecretCount} sampled secret{preview.sampledSecretCount === 1 ? "" : "s"} + +
+
+ {preview.candidates.map((candidate, index) => ( + onApply(candidate)} + /> + ))} +
+
+ ) : null} +
+ ); +} + +function AwsProviderVaultDiscoveryCandidateRow({ + candidate, + onApply, +}: { + candidate: SecretProviderConfigDiscoveryCandidate; + onApply: () => void; +}) { + const fieldSummary = [ + providerConfigValue(candidate.config, "region"), + providerConfigValue(candidate.config, "namespace"), + providerConfigValue(candidate.config, "secretNamePrefix"), + ].filter(Boolean); + + return ( +
+
+
+
+

{candidate.displayName}

+ + {candidate.sampleCount} sample{candidate.sampleCount === 1 ? "" : "s"} + +
+

+ {fieldSummary.length > 0 ? fieldSummary.join(" / ") : "No stable namespace or prefix detected"} +

+ {candidate.samples[0] ? ( +

+ {candidate.samples[0].name} +

+ ) : null} +
+ +
+ {candidate.warnings.length > 0 ? ( +
+ {candidate.warnings.map((warning) => ( +
+ + {warning} +
+ ))} +
+ ) : null} +
+ ); +} + function TextField({ label, value, diff --git a/ui/storybook/.storybook/preview.tsx b/ui/storybook/.storybook/preview.tsx index df150978..011ec14b 100644 --- a/ui/storybook/.storybook/preview.tsx +++ b/ui/storybook/.storybook/preview.tsx @@ -22,6 +22,8 @@ import { storybookProjects, storybookSecretAccessEvents, storybookSecretBindings, + storybookSecretProviderConfigs, + storybookSecretProviderDiscoveryPreview, storybookSecretProviderHealth, storybookSecretProviders, storybookSecrets, @@ -187,6 +189,20 @@ function installStorybookApiFixtures() { return Response.json(storybookSecretProviderHealth); } + const secretProviderConfigsMatch = url.pathname.match( + /^\/api\/companies\/([^/]+)\/secret-provider-configs$/, + ); + if (secretProviderConfigsMatch) { + return Response.json(storybookSecretProviderConfigs); + } + + const secretProviderConfigDiscoveryPreviewMatch = url.pathname.match( + /^\/api\/companies\/([^/]+)\/secret-provider-configs\/discovery\/preview$/, + ); + if (secretProviderConfigDiscoveryPreviewMatch && init?.method?.toUpperCase() === "POST") { + return Response.json(storybookSecretProviderDiscoveryPreview); + } + const secretUsageMatch = url.pathname.match(/^\/api\/secrets\/([^/]+)\/usage$/); if (secretUsageMatch) { const [, secretId] = secretUsageMatch; diff --git a/ui/storybook/fixtures/paperclipData.ts b/ui/storybook/fixtures/paperclipData.ts index 0984f9d5..d798c9ee 100644 --- a/ui/storybook/fixtures/paperclipData.ts +++ b/ui/storybook/fixtures/paperclipData.ts @@ -7,6 +7,7 @@ import type { Company, CompanySecret, CompanySecretBinding, + CompanySecretProviderConfig, DashboardSummary, ExecutionWorkspace, Goal, @@ -15,6 +16,7 @@ import type { IssueLabel, Project, SecretAccessEvent, + SecretProviderConfigDiscoveryPreviewResult, SecretProviderDescriptor, SidebarBadges, WorkspaceRuntimeService, @@ -1324,6 +1326,98 @@ export const storybookSecretProviders: SecretProviderDescriptor[] = [ { id: "vault", label: "HashiCorp Vault", requiresExternalRef: false }, ]; +export const storybookSecretProviderConfigs: CompanySecretProviderConfig[] = [ + { + id: "provider-config-local", + companyId: "company-storybook", + provider: "local_encrypted", + displayName: "Local encrypted default", + status: "ready", + isDefault: true, + config: { backupReminderAcknowledged: true }, + healthStatus: "ready", + healthCheckedAt: recent(45), + healthMessage: "Local encrypted provider is healthy.", + healthDetails: null, + disabledAt: null, + createdByAgentId: null, + createdByUserId: "user-board", + createdAt: recent(2_400), + updatedAt: recent(45), + }, + { + id: "provider-config-aws-prod", + companyId: "company-storybook", + provider: "aws_secrets_manager", + displayName: "AWS production", + status: "warning", + isDefault: false, + config: { + region: "us-east-1", + namespace: "prod-use1", + secretNamePrefix: "paperclip", + kmsKeyId: "alias/paperclip-secrets", + ownerTag: "platform", + environmentTag: "production", + }, + healthStatus: "warning", + healthCheckedAt: recent(18), + healthMessage: "Connected; KMS key rotation policy not yet enforced.", + healthDetails: { + code: "kms_rotation_policy", + message: "Connected; KMS key rotation policy not yet enforced.", + guidance: ["Enable automatic key rotation before using this vault for production agents."], + }, + disabledAt: null, + createdByAgentId: null, + createdByUserId: "user-board", + createdAt: recent(1_800), + updatedAt: recent(18), + }, +]; + +export const storybookSecretProviderDiscoveryPreview: SecretProviderConfigDiscoveryPreviewResult = { + provider: "aws_secrets_manager", + nextToken: null, + sampledSecretCount: 6, + skippedForeignPaperclipSampleCount: 1, + warnings: ["Skipped 1 Paperclip-managed AWS secret from a different deployment namespace."], + candidates: [ + { + provider: "aws_secrets_manager", + displayName: "AWS production", + config: { + region: "us-east-1", + namespace: "prod-use1", + secretNamePrefix: "paperclip", + kmsKeyId: "alias/paperclip-secrets", + ownerTag: "platform", + environmentTag: "production", + }, + sampleCount: 5, + samples: [ + { + name: "paperclip/prod-use1/company-storybook/openai_api_key", + hasKmsKey: true, + tagKeys: ["paperclip:managed-by", "paperclip:environment", "paperclip:provider-owner"], + }, + ], + signals: { + namespace: "prod-use1", + secretNamePrefix: "paperclip", + environmentTag: "production", + ownerTag: "platform", + kmsKeyId: "alias/paperclip-secrets", + hasKmsKey: true, + sampleCount: 5, + paperclipManagedSampleCount: 5, + skippedForeignPaperclipSampleCount: 1, + }, + warnings: [], + }, + ], +}; + export const storybookSecrets: CompanySecret[] = [ { id: "secret-openai", diff --git a/ui/storybook/stories/secrets.stories.tsx b/ui/storybook/stories/secrets.stories.tsx index 5c3d09ea..0b787829 100644 --- a/ui/storybook/stories/secrets.stories.tsx +++ b/ui/storybook/stories/secrets.stories.tsx @@ -22,7 +22,6 @@ if (typeof window !== "undefined") { function StorybookSecretsFixtures({ children }: { children: ReactNode }) { const queryClient = useQueryClient(); // Seed query caches synchronously so children hydrate from cache on first render. - queryClient.setQueryData(queryKeys.companies.all, storybookCompanies); queryClient.setQueryData(queryKeys.secrets.list(COMPANY_ID), storybookSecrets); const { selectedCompanyId, setSelectedCompanyId } = useCompany();