@zincapp/zn-vault-agent 1.6.13 → 1.6.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,175 @@
1
+ // Path: src/plugins/context.ts
2
+ // Plugin context implementation - provides safe access to agent internals
3
+ import { EventEmitter } from 'node:events';
4
+ import { createLogger } from '../lib/logger.js';
5
+ import { getSecret as apiGetSecret, decryptCertificate } from '../lib/api.js';
6
+ import { getPluginStorage } from './storage.js';
7
+ /**
8
+ * Inter-plugin event emitter (singleton)
9
+ */
10
+ const pluginEventEmitter = new EventEmitter();
11
+ pluginEventEmitter.setMaxListeners(50); // Support many plugins
12
+ /**
13
+ * Create a plugin context for a specific plugin
14
+ */
15
+ export function createPluginContext(pluginName, agentInternals, _loader) {
16
+ const logger = createLogger({ module: `plugin:${pluginName}` });
17
+ return {
18
+ logger,
19
+ // Read-only config snapshot
20
+ get config() {
21
+ return Object.freeze({ ...agentInternals.config });
22
+ },
23
+ get vaultUrl() {
24
+ return agentInternals.config.vaultUrl;
25
+ },
26
+ get tenantId() {
27
+ return agentInternals.config.tenantId;
28
+ },
29
+ /**
30
+ * Fetch a secret from vault by alias or ID
31
+ */
32
+ async getSecret(aliasOrId) {
33
+ logger.debug({ aliasOrId }, 'Plugin fetching secret');
34
+ const decrypted = await apiGetSecret(aliasOrId);
35
+ return {
36
+ id: decrypted.id,
37
+ alias: decrypted.alias,
38
+ data: decrypted.data,
39
+ version: decrypted.version,
40
+ type: decrypted.type,
41
+ };
42
+ },
43
+ /**
44
+ * Get certificate content by ID or name
45
+ */
46
+ async getCertificate(certIdOrName) {
47
+ logger.debug({ certIdOrName }, 'Plugin fetching certificate');
48
+ // Find cert ID from targets if name given
49
+ let certId = certIdOrName;
50
+ const targets = agentInternals.config.targets || [];
51
+ const target = targets.find(t => t.name === certIdOrName || t.certId === certIdOrName);
52
+ if (target) {
53
+ certId = target.certId;
54
+ }
55
+ // Decrypt certificate from vault
56
+ const decrypted = await decryptCertificate(certId, 'plugin-access');
57
+ // Parse PEM to extract components
58
+ const certData = decrypted.certificateData;
59
+ const parts = parsePemBundle(certData);
60
+ return {
61
+ id: decrypted.id,
62
+ name: target?.name || certId,
63
+ certificate: parts.certificate,
64
+ privateKey: parts.privateKey,
65
+ chain: parts.chain,
66
+ fullchain: parts.fullchain,
67
+ fingerprint: decrypted.fingerprintSha256,
68
+ expiresAt: '', // Would need to parse from cert
69
+ commonName: '', // Would need to parse from cert
70
+ };
71
+ },
72
+ /**
73
+ * Get configured certificate targets
74
+ */
75
+ getCertTargets() {
76
+ return agentInternals.config.targets || [];
77
+ },
78
+ /**
79
+ * Get configured secret targets
80
+ */
81
+ getSecretTargets() {
82
+ return agentInternals.config.secretTargets || [];
83
+ },
84
+ /**
85
+ * Request child process restart
86
+ */
87
+ async restartChild(reason) {
88
+ if (agentInternals.restartChild) {
89
+ logger.info({ reason }, 'Plugin requesting child restart');
90
+ await agentInternals.restartChild(reason);
91
+ }
92
+ else {
93
+ logger.debug('restartChild called but no exec mode configured');
94
+ }
95
+ },
96
+ /**
97
+ * Get current child process state
98
+ */
99
+ getChildState() {
100
+ if (agentInternals.childProcessManager) {
101
+ return agentInternals.childProcessManager.getState();
102
+ }
103
+ return null;
104
+ },
105
+ /**
106
+ * Emit custom event to other plugins
107
+ */
108
+ emit(event, data) {
109
+ const eventName = `plugin:${event}`;
110
+ logger.debug({ event: eventName }, 'Plugin emitting event');
111
+ pluginEventEmitter.emit(eventName, data);
112
+ },
113
+ /**
114
+ * Listen for custom events from other plugins
115
+ */
116
+ on(event, handler) {
117
+ const eventName = `plugin:${event}`;
118
+ pluginEventEmitter.on(eventName, handler);
119
+ },
120
+ /**
121
+ * Remove event listener
122
+ */
123
+ off(event, handler) {
124
+ const eventName = `plugin:${event}`;
125
+ pluginEventEmitter.off(eventName, handler);
126
+ },
127
+ /**
128
+ * Plugin-specific persistent storage
129
+ */
130
+ storage: getPluginStorage(pluginName),
131
+ };
132
+ }
133
+ /**
134
+ * Parse a PEM bundle into components
135
+ */
136
+ function parsePemBundle(pemData) {
137
+ const blocks = [];
138
+ const regex = /-----BEGIN ([^-]+)-----[\s\S]*?-----END \1-----/g;
139
+ let match;
140
+ while ((match = regex.exec(pemData)) !== null) {
141
+ blocks.push(match[0]);
142
+ }
143
+ let certificate = '';
144
+ let privateKey = '';
145
+ const chainCerts = [];
146
+ for (const block of blocks) {
147
+ if (block.includes('CERTIFICATE')) {
148
+ if (!certificate) {
149
+ certificate = block;
150
+ }
151
+ else {
152
+ chainCerts.push(block);
153
+ }
154
+ }
155
+ else if (block.includes('PRIVATE KEY')) {
156
+ privateKey = block;
157
+ }
158
+ }
159
+ const chain = chainCerts.length > 0 ? chainCerts.join('\n') : undefined;
160
+ const fullchain = chain ? `${certificate}\n${chain}` : certificate;
161
+ return { certificate, privateKey, chain, fullchain };
162
+ }
163
+ /**
164
+ * Get the inter-plugin event emitter (for testing)
165
+ */
166
+ export function getPluginEventEmitter() {
167
+ return pluginEventEmitter;
168
+ }
169
+ /**
170
+ * Clear all plugin event listeners (for testing)
171
+ */
172
+ export function clearPluginEventListeners() {
173
+ pluginEventEmitter.removeAllListeners();
174
+ }
175
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/plugins/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export type { AgentPlugin, PluginFactory, PluginConfig, PluginContext, PluginStorage, SecretValue, CertificateContent, CertificateDeployedEvent, SecretDeployedEvent, KeyRotatedEvent, ChildProcessEvent, PluginHealthStatus, LoadedPlugin, PluginEventMap, } from './types.js';
2
+ export { PluginLoader, createPluginLoader, getPluginLoader, clearPluginLoader, type AgentInternals, type PluginLoaderOptions, } from './loader.js';
3
+ export { createPluginContext, getPluginEventEmitter, clearPluginEventListeners, } from './context.js';
4
+ export { getPluginStorage, deletePluginStorage, listPluginsWithStorage, clearStorageCache, } from './storage.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAIA,YAAY,EACV,WAAW,EACX,aAAa,EACb,YAAY,EACZ,aAAa,EACb,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,wBAAwB,EACxB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,KAAK,cAAc,EACnB,KAAK,mBAAmB,GACzB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,9 @@
1
+ // Path: src/plugins/index.ts
2
+ // Plugin system public exports
3
+ // Loader
4
+ export { PluginLoader, createPluginLoader, getPluginLoader, clearPluginLoader, } from './loader.js';
5
+ // Context
6
+ export { createPluginContext, getPluginEventEmitter, clearPluginEventListeners, } from './context.js';
7
+ // Storage
8
+ export { getPluginStorage, deletePluginStorage, listPluginsWithStorage, clearStorageCache, } from './storage.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,+BAA+B;AAoB/B,SAAS;AACT,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,iBAAiB,GAGlB,MAAM,aAAa,CAAC;AAErB,UAAU;AACV,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,cAAc,CAAC;AAEtB,UAAU;AACV,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,116 @@
1
+ import type { FastifyInstance } from 'fastify';
2
+ import { EventEmitter } from 'node:events';
3
+ import type { AgentPlugin, PluginConfig, LoadedPlugin, PluginEventMap, PluginHealthStatus } from './types.js';
4
+ import type { AgentConfig } from '../lib/config.js';
5
+ import type { ChildProcessManager } from '../services/child-process-manager.js';
6
+ /**
7
+ * Agent internals passed to plugin context
8
+ */
9
+ export interface AgentInternals {
10
+ /** Current agent config */
11
+ config: AgentConfig;
12
+ /** Child process manager (if exec mode) */
13
+ childProcessManager: ChildProcessManager | null;
14
+ /** Restart child process callback */
15
+ restartChild?: (reason: string) => Promise<void>;
16
+ }
17
+ /**
18
+ * Plugin loader options
19
+ */
20
+ export interface PluginLoaderOptions {
21
+ /** Plugin directory for local plugins */
22
+ pluginDir?: string;
23
+ /** Skip npm package discovery */
24
+ skipNpmDiscovery?: boolean;
25
+ }
26
+ /**
27
+ * Manages plugin discovery, loading, and lifecycle
28
+ */
29
+ export declare class PluginLoader extends EventEmitter {
30
+ private plugins;
31
+ private agentInternals;
32
+ private options;
33
+ private isStarted;
34
+ constructor(agentInternals: AgentInternals, options?: PluginLoaderOptions);
35
+ /**
36
+ * Load all plugins from config and auto-discovered locations
37
+ */
38
+ loadPlugins(config: AgentConfig): Promise<void>;
39
+ /**
40
+ * Load a single plugin by config
41
+ */
42
+ loadPlugin(config: PluginConfig): Promise<AgentPlugin | null>;
43
+ /**
44
+ * Load plugins from local directory
45
+ */
46
+ private loadLocalPlugins;
47
+ /**
48
+ * Validate plugin has required fields
49
+ */
50
+ private validatePlugin;
51
+ /**
52
+ * Initialize all loaded plugins
53
+ */
54
+ initializePlugins(): Promise<void>;
55
+ /**
56
+ * Start all initialized plugins
57
+ */
58
+ startPlugins(): Promise<void>;
59
+ /**
60
+ * Stop all running plugins
61
+ */
62
+ stopPlugins(): Promise<void>;
63
+ /**
64
+ * Register plugin routes on Fastify server
65
+ */
66
+ registerRoutes(fastify: FastifyInstance): Promise<void>;
67
+ /**
68
+ * Dispatch event to all plugins
69
+ */
70
+ dispatchEvent<K extends keyof PluginEventMap>(eventType: K, event: PluginEventMap[K]): Promise<void>;
71
+ /**
72
+ * Collect health status from all plugins
73
+ */
74
+ collectHealthStatus(): Promise<PluginHealthStatus[]>;
75
+ /**
76
+ * Get loaded plugins
77
+ */
78
+ getPlugins(): AgentPlugin[];
79
+ /**
80
+ * Get plugin by name
81
+ */
82
+ getPlugin(name: string): AgentPlugin | undefined;
83
+ /**
84
+ * Get plugin status
85
+ */
86
+ getPluginStatus(name: string): LoadedPlugin['status'] | undefined;
87
+ /**
88
+ * Get all plugin statuses
89
+ */
90
+ getAllPluginStatuses(): Array<{
91
+ name: string;
92
+ status: LoadedPlugin['status'];
93
+ error?: string;
94
+ }>;
95
+ /**
96
+ * Check if any plugins are loaded
97
+ */
98
+ hasPlugins(): boolean;
99
+ /**
100
+ * Update agent internals (called when config changes)
101
+ */
102
+ updateInternals(internals: Partial<AgentInternals>): void;
103
+ }
104
+ /**
105
+ * Get or create the plugin loader instance
106
+ */
107
+ export declare function getPluginLoader(): PluginLoader | null;
108
+ /**
109
+ * Create and set the plugin loader instance
110
+ */
111
+ export declare function createPluginLoader(agentInternals: AgentInternals, options?: PluginLoaderOptions): PluginLoader;
112
+ /**
113
+ * Clear the plugin loader instance (for testing)
114
+ */
115
+ export declare function clearPluginLoader(): void;
116
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"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"}