@quarry-systems/drift-secrets
v0.1.0-alpha.1
Published
Secrets adapter for Drift - environment variables and literal values
Maintainers
Readme
@quarry-systems/mcg-secrets
Secrets adapter for MCG - environment variables and literal values.
Features
- Environment variables: Read from
process.env - Literal values: Hardcoded secrets for testing
- Composite adapter: Chain multiple secret sources with fallback
- Type-safe: Full TypeScript support
Installation
npm install @quarry-systems/mcg-secretsUsage
Environment Variables
import { createEnvSecretsAdapter } from '@quarry-systems/mcg-secrets';
const secrets = createEnvSecretsAdapter();
// Read from process.env.OPENAI_API_KEY
const apiKey = await secrets.get({ key: 'OPENAI_API_KEY' });Literal Values
import { createLiteralSecretsAdapter } from '@quarry-systems/mcg-secrets';
const secrets = createLiteralSecretsAdapter({
'API_KEY': 'test-key-123',
'DATABASE_URL': 'postgresql://localhost/test'
});
const apiKey = await secrets.get({ key: 'API_KEY' });Composite (Fallback Chain)
import {
createCompositeSecretsAdapter,
createEnvSecretsAdapter,
createLiteralSecretsAdapter
} from '@quarry-systems/mcg-secrets';
const secrets = createCompositeSecretsAdapter([
createEnvSecretsAdapter(), // Try env first
createLiteralSecretsAdapter({ // Fallback to literals
'API_KEY': 'default-key'
})
]);
// Returns process.env.API_KEY if set, otherwise 'default-key'
const apiKey = await secrets.get({ key: 'API_KEY' });Integration with MCG
import { ManagedCyclicGraph } from '@quarry-systems/managed-cyclic-graph';
import { createEnvSecretsAdapter } from '@quarry-systems/mcg-secrets';
// Create secrets adapter
const secrets = createEnvSecretsAdapter();
// Build graph with secrets plugin
const graph = new ManagedCyclicGraph()
.use({ services: { secrets } })
.node('callAPI', {
type: 'action',
action: async (ctx, services) => {
// Get API key from environment
const apiKey = await services.secrets.get({ key: 'OPENAI_API_KEY' });
const response = await fetch('https://api.openai.com/v1/models', {
headers: {
'Authorization': `Bearer ${apiKey}`,
'Content-Type': 'application/json'
}
});
return { models: await response.json() };
}
})
.build();
// Execute
await graph.run({ input: 'list models' });API
Implements SecretsAdapter from @quarry-systems/mcg-contracts:
get(ref)- Get secret value by keylist()- List available secret keys (env adapter only)
Testing
npm testLicense
MIT
