feat(FN-4945): complete Step 1 — add isSecretScope guard

Fusion-Task-Id: FN-4945
Fusion-Task-Lineage: f3049b2a-26de-4d48-be99-eb90e4780a9e
This commit is contained in:
Fusion (runfusion.ai)
2026-05-17 15:01:51 -07:00
committed by gsxdsm
parent 91ac073f8e
commit 18f810f841
3 changed files with 22 additions and 0 deletions

View File

@@ -0,0 +1,17 @@
import { describe, expect, it } from "vitest";
import { isSecretScope } from "../secrets-store.js";
describe("isSecretScope", () => {
it("accepts project and global", () => {
expect(isSecretScope("project")).toBe(true);
expect(isSecretScope("global")).toBe(true);
});
it("rejects invalid values", () => {
expect(isSecretScope(null)).toBe(false);
expect(isSecretScope(undefined)).toBe(false);
expect(isSecretScope(123)).toBe(false);
expect(isSecretScope("local")).toBe(false);
expect(isSecretScope("GLOBAL")).toBe(false);
});
});

View File

@@ -1143,6 +1143,7 @@ export type {
EncryptedSecret,
} from "./secrets-crypto.js";
export {
isSecretScope,
SecretsStore,
SecretsStoreError,
} from "./secrets-store.js";

View File

@@ -4,6 +4,10 @@ import type { CentralDatabase } from "./central-db.js";
import { createSecretCipher, SecretCryptoError, type MasterKeyProvider } from "./secrets-crypto.js";
export type SecretScope = "project" | "global";
export function isSecretScope(value: unknown): value is SecretScope {
return value === "project" || value === "global";
}
export type SecretAccessPolicy = "auto" | "prompt" | "deny";
export interface SecretRecord {