envpkt 0.1.0

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,392 @@
1
+ import * as _sinclair_typebox0 from "@sinclair/typebox";
2
+ import { Static } from "@sinclair/typebox";
3
+ import { Either, List, Option } from "functype";
4
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
5
+ import { CallToolResult, ReadResourceResult, Resource } from "@modelcontextprotocol/sdk/types.js";
6
+
7
+ //#region src/core/schema.d.ts
8
+ declare const ConsumerType: _sinclair_typebox0.TUnion<[_sinclair_typebox0.TLiteral<"agent">, _sinclair_typebox0.TLiteral<"service">, _sinclair_typebox0.TLiteral<"developer">, _sinclair_typebox0.TLiteral<"ci">]>;
9
+ type ConsumerType = Static<typeof ConsumerType>;
10
+ declare const AgentIdentitySchema: _sinclair_typebox0.TObject<{
11
+ name: _sinclair_typebox0.TString;
12
+ consumer: _sinclair_typebox0.TOptional<_sinclair_typebox0.TUnion<[_sinclair_typebox0.TLiteral<"agent">, _sinclair_typebox0.TLiteral<"service">, _sinclair_typebox0.TLiteral<"developer">, _sinclair_typebox0.TLiteral<"ci">]>>;
13
+ description: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
14
+ capabilities: _sinclair_typebox0.TOptional<_sinclair_typebox0.TArray<_sinclair_typebox0.TString>>;
15
+ expires: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
16
+ services: _sinclair_typebox0.TOptional<_sinclair_typebox0.TArray<_sinclair_typebox0.TString>>;
17
+ identity: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
18
+ recipient: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
19
+ secrets: _sinclair_typebox0.TOptional<_sinclair_typebox0.TArray<_sinclair_typebox0.TString>>;
20
+ }>;
21
+ type AgentIdentity = Static<typeof AgentIdentitySchema>;
22
+ declare const SecretMetaSchema: _sinclair_typebox0.TObject<{
23
+ service: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
24
+ expires: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
25
+ rotation_url: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
26
+ purpose: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
27
+ capabilities: _sinclair_typebox0.TOptional<_sinclair_typebox0.TArray<_sinclair_typebox0.TString>>;
28
+ created: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
29
+ rotates: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
30
+ rate_limit: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
31
+ model_hint: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
32
+ source: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
33
+ required: _sinclair_typebox0.TOptional<_sinclair_typebox0.TBoolean>;
34
+ tags: _sinclair_typebox0.TOptional<_sinclair_typebox0.TRecord<_sinclair_typebox0.TString, _sinclair_typebox0.TString>>;
35
+ }>;
36
+ type SecretMeta = Static<typeof SecretMetaSchema>;
37
+ declare const LifecycleConfigSchema: _sinclair_typebox0.TObject<{
38
+ stale_warning_days: _sinclair_typebox0.TOptional<_sinclair_typebox0.TNumber>;
39
+ require_expiration: _sinclair_typebox0.TOptional<_sinclair_typebox0.TBoolean>;
40
+ require_service: _sinclair_typebox0.TOptional<_sinclair_typebox0.TBoolean>;
41
+ }>;
42
+ type LifecycleConfig = Static<typeof LifecycleConfigSchema>;
43
+ declare const CallbackConfigSchema: _sinclair_typebox0.TObject<{
44
+ on_expiring: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
45
+ on_expired: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
46
+ on_audit_fail: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
47
+ }>;
48
+ type CallbackConfig = Static<typeof CallbackConfigSchema>;
49
+ declare const ToolsConfigSchema: _sinclair_typebox0.TRecord<_sinclair_typebox0.TString, _sinclair_typebox0.TUnknown>;
50
+ type ToolsConfig = Static<typeof ToolsConfigSchema>;
51
+ declare const EnvpktConfigSchema: _sinclair_typebox0.TObject<{
52
+ version: _sinclair_typebox0.TNumber;
53
+ catalog: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
54
+ agent: _sinclair_typebox0.TOptional<_sinclair_typebox0.TObject<{
55
+ name: _sinclair_typebox0.TString;
56
+ consumer: _sinclair_typebox0.TOptional<_sinclair_typebox0.TUnion<[_sinclair_typebox0.TLiteral<"agent">, _sinclair_typebox0.TLiteral<"service">, _sinclair_typebox0.TLiteral<"developer">, _sinclair_typebox0.TLiteral<"ci">]>>;
57
+ description: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
58
+ capabilities: _sinclair_typebox0.TOptional<_sinclair_typebox0.TArray<_sinclair_typebox0.TString>>;
59
+ expires: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
60
+ services: _sinclair_typebox0.TOptional<_sinclair_typebox0.TArray<_sinclair_typebox0.TString>>;
61
+ identity: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
62
+ recipient: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
63
+ secrets: _sinclair_typebox0.TOptional<_sinclair_typebox0.TArray<_sinclair_typebox0.TString>>;
64
+ }>>;
65
+ meta: _sinclair_typebox0.TRecord<_sinclair_typebox0.TString, _sinclair_typebox0.TObject<{
66
+ service: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
67
+ expires: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
68
+ rotation_url: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
69
+ purpose: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
70
+ capabilities: _sinclair_typebox0.TOptional<_sinclair_typebox0.TArray<_sinclair_typebox0.TString>>;
71
+ created: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
72
+ rotates: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
73
+ rate_limit: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
74
+ model_hint: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
75
+ source: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
76
+ required: _sinclair_typebox0.TOptional<_sinclair_typebox0.TBoolean>;
77
+ tags: _sinclair_typebox0.TOptional<_sinclair_typebox0.TRecord<_sinclair_typebox0.TString, _sinclair_typebox0.TString>>;
78
+ }>>;
79
+ lifecycle: _sinclair_typebox0.TOptional<_sinclair_typebox0.TObject<{
80
+ stale_warning_days: _sinclair_typebox0.TOptional<_sinclair_typebox0.TNumber>;
81
+ require_expiration: _sinclair_typebox0.TOptional<_sinclair_typebox0.TBoolean>;
82
+ require_service: _sinclair_typebox0.TOptional<_sinclair_typebox0.TBoolean>;
83
+ }>>;
84
+ callbacks: _sinclair_typebox0.TOptional<_sinclair_typebox0.TObject<{
85
+ on_expiring: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
86
+ on_expired: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
87
+ on_audit_fail: _sinclair_typebox0.TOptional<_sinclair_typebox0.TString>;
88
+ }>>;
89
+ tools: _sinclair_typebox0.TOptional<_sinclair_typebox0.TRecord<_sinclair_typebox0.TString, _sinclair_typebox0.TUnknown>>;
90
+ }>;
91
+ type EnvpktConfig = Static<typeof EnvpktConfigSchema>;
92
+ //#endregion
93
+ //#region src/core/types.d.ts
94
+ type HealthStatus = "healthy" | "degraded" | "critical";
95
+ type SecretStatus = "healthy" | "expiring_soon" | "expired" | "stale" | "missing" | "missing_metadata";
96
+ type SecretHealth = {
97
+ readonly key: string;
98
+ readonly service: Option<string>;
99
+ readonly status: SecretStatus;
100
+ readonly days_remaining: Option<number>;
101
+ readonly rotation_url: Option<string>;
102
+ readonly purpose: Option<string>;
103
+ readonly created: Option<string>;
104
+ readonly expires: Option<string>;
105
+ readonly issues: List<string>;
106
+ };
107
+ type AuditResult = {
108
+ readonly status: HealthStatus;
109
+ readonly secrets: List<SecretHealth>;
110
+ readonly total: number;
111
+ readonly healthy: number;
112
+ readonly expiring_soon: number;
113
+ readonly expired: number;
114
+ readonly stale: number;
115
+ readonly missing: number;
116
+ readonly missing_metadata: number;
117
+ readonly orphaned: number;
118
+ readonly agent?: AgentIdentity;
119
+ };
120
+ type FleetAgent = {
121
+ readonly path: string;
122
+ readonly agent?: AgentIdentity;
123
+ readonly min_expiry_days?: number;
124
+ readonly audit: AuditResult;
125
+ };
126
+ type FleetHealth = {
127
+ readonly status: HealthStatus;
128
+ readonly agents: List<FleetAgent>;
129
+ readonly total_agents: number;
130
+ readonly total_secrets: number;
131
+ readonly expired: number;
132
+ readonly expiring_soon: number;
133
+ };
134
+ type FnoxSecret = {
135
+ readonly key: string;
136
+ readonly profile: Option<string>;
137
+ };
138
+ type FnoxConfig = {
139
+ readonly secrets: Record<string, unknown>;
140
+ readonly profiles: Option<Record<string, unknown>>;
141
+ };
142
+ type ConfigError = {
143
+ readonly _tag: "FileNotFound";
144
+ readonly path: string;
145
+ } | {
146
+ readonly _tag: "ParseError";
147
+ readonly message: string;
148
+ } | {
149
+ readonly _tag: "ValidationError";
150
+ readonly errors: List<string>;
151
+ } | {
152
+ readonly _tag: "ReadError";
153
+ readonly message: string;
154
+ };
155
+ type FnoxError = {
156
+ readonly _tag: "FnoxNotFound";
157
+ readonly message: string;
158
+ } | {
159
+ readonly _tag: "FnoxCliError";
160
+ readonly message: string;
161
+ } | {
162
+ readonly _tag: "FnoxParseError";
163
+ readonly message: string;
164
+ };
165
+ type ResolveOptions = {
166
+ readonly configPath?: string;
167
+ readonly output?: string;
168
+ };
169
+ type ResolveResult = {
170
+ readonly config: EnvpktConfig;
171
+ readonly catalogPath?: string;
172
+ readonly merged: ReadonlyArray<string>;
173
+ readonly overridden: ReadonlyArray<string>;
174
+ readonly warnings: ReadonlyArray<string>;
175
+ };
176
+ type CatalogError = {
177
+ readonly _tag: "CatalogNotFound";
178
+ readonly path: string;
179
+ } | {
180
+ readonly _tag: "CatalogLoadError";
181
+ readonly message: string;
182
+ } | {
183
+ readonly _tag: "SecretNotInCatalog";
184
+ readonly key: string;
185
+ readonly catalogPath: string;
186
+ } | {
187
+ readonly _tag: "MissingSecretsList";
188
+ readonly message: string;
189
+ };
190
+ type BootOptions = {
191
+ readonly configPath?: string;
192
+ readonly profile?: string;
193
+ readonly inject?: boolean;
194
+ readonly failOnExpired?: boolean;
195
+ readonly warnOnly?: boolean;
196
+ };
197
+ type BootResult = {
198
+ readonly audit: AuditResult;
199
+ readonly injected: ReadonlyArray<string>;
200
+ readonly skipped: ReadonlyArray<string>;
201
+ readonly secrets: Readonly<Record<string, string>>;
202
+ readonly warnings: ReadonlyArray<string>;
203
+ };
204
+ type BootError = ConfigError | FnoxError | CatalogError | {
205
+ readonly _tag: "AuditFailed";
206
+ readonly audit: AuditResult;
207
+ readonly message: string;
208
+ } | IdentityError;
209
+ type IdentityError = {
210
+ readonly _tag: "AgeNotFound";
211
+ readonly message: string;
212
+ } | {
213
+ readonly _tag: "DecryptFailed";
214
+ readonly message: string;
215
+ } | {
216
+ readonly _tag: "IdentityNotFound";
217
+ readonly path: string;
218
+ };
219
+ //#endregion
220
+ //#region src/core/config.d.ts
221
+ /** Find envpkt.toml in the given directory */
222
+ declare const findConfigPath: (dir: string) => Option<string>;
223
+ /** Read a config file, returning Either<ConfigError, string> */
224
+ declare const readConfigFile: (path: string) => Either<ConfigError, string>;
225
+ /** Parse a TOML string, returning Either<ConfigError, unknown> */
226
+ declare const parseToml: (raw: string) => Either<ConfigError, unknown>;
227
+ /** Validate parsed data against the TypeBox schema */
228
+ declare const validateConfig: (data: unknown) => Either<ConfigError, EnvpktConfig>;
229
+ /** Load and validate an envpkt.toml from a file path */
230
+ declare const loadConfig: (path: string) => Either<ConfigError, EnvpktConfig>;
231
+ /** Load config from CWD, returning both path and parsed config */
232
+ declare const loadConfigFromCwd: (cwd?: string) => Either<ConfigError, {
233
+ path: string;
234
+ config: EnvpktConfig;
235
+ }>;
236
+ /**
237
+ * Resolve config path via priority chain:
238
+ * 1. Explicit flag path
239
+ * 2. ENVPKT_CONFIG env var
240
+ * 3. CWD discovery
241
+ */
242
+ declare const resolveConfigPath: (flagPath?: string, envVar?: string, cwd?: string) => Either<ConfigError, string>;
243
+ //#endregion
244
+ //#region src/core/catalog.d.ts
245
+ /** Load and validate a catalog file, mapping ConfigError → CatalogError */
246
+ declare const loadCatalog: (catalogPath: string) => Either<CatalogError, EnvpktConfig>;
247
+ /** Resolve secrets by merging catalog meta with agent overrides (shallow merge) */
248
+ declare const resolveSecrets: (agentMeta: Record<string, SecretMeta>, catalogMeta: Record<string, SecretMeta>, agentSecrets: ReadonlyArray<string>, catalogPath: string) => Either<CatalogError, Record<string, SecretMeta>>;
249
+ /** Resolve an agent config against its catalog (if any), producing a flat self-contained config */
250
+ declare const resolveConfig: (agentConfig: EnvpktConfig, agentConfigDir: string) => Either<CatalogError, ResolveResult>;
251
+ //#endregion
252
+ //#region src/core/format.d.ts
253
+ type SecretDisplay = "encrypted" | "plaintext";
254
+ type FormatPacketOptions = {
255
+ readonly secrets?: Readonly<Record<string, string>>;
256
+ readonly secretDisplay?: SecretDisplay;
257
+ };
258
+ declare const maskValue: (value: string) => string;
259
+ declare const formatPacket: (result: ResolveResult, options?: FormatPacketOptions) => string;
260
+ //#endregion
261
+ //#region src/core/audit.d.ts
262
+ declare const computeAudit: (config: EnvpktConfig, fnoxKeys?: ReadonlySet<string>, today?: Date) => AuditResult;
263
+ //#endregion
264
+ //#region src/core/patterns.d.ts
265
+ type ConfidenceLevel = "high" | "medium" | "low";
266
+ type CredentialPattern = {
267
+ readonly kind: "name" | "prefix" | "suffix" | "value_prefix" | "value_regex";
268
+ readonly pattern: string;
269
+ readonly service: string;
270
+ readonly confidence: ConfidenceLevel;
271
+ readonly description: string;
272
+ };
273
+ type MatchResult = {
274
+ readonly envVar: string;
275
+ readonly value: string;
276
+ readonly service: Option<string>;
277
+ readonly confidence: ConfidenceLevel;
278
+ readonly matchedBy: string;
279
+ };
280
+ /** Detect service from value prefix/shape */
281
+ declare const matchValueShape: (value: string) => Option<{
282
+ service: string;
283
+ description: string;
284
+ }>;
285
+ /** Strip common suffixes and derive a service name from an env var name */
286
+ declare const deriveServiceFromName: (name: string) => string;
287
+ /** Match a single env var against all patterns */
288
+ declare const matchEnvVar: (name: string, value: string) => Option<MatchResult>;
289
+ /** Scan full env, sorted by confidence (high first) then alphabetically */
290
+ declare const scanEnv: (env: Readonly<Record<string, string | undefined>>) => ReadonlyArray<MatchResult>;
291
+ //#endregion
292
+ //#region src/core/env.d.ts
293
+ type ScanResult = {
294
+ readonly discovered: List<MatchResult>;
295
+ readonly total_scanned: number;
296
+ readonly high_confidence: number;
297
+ readonly medium_confidence: number;
298
+ readonly low_confidence: number;
299
+ };
300
+ type DriftStatus = "tracked" | "missing_from_env" | "untracked";
301
+ type DriftEntry = {
302
+ readonly envVar: string;
303
+ readonly service: Option<string>;
304
+ readonly status: DriftStatus;
305
+ readonly confidence: Option<ConfidenceLevel>;
306
+ };
307
+ type CheckResult = {
308
+ readonly entries: List<DriftEntry>;
309
+ readonly tracked_and_present: number;
310
+ readonly missing_from_env: number;
311
+ readonly untracked_credentials: number;
312
+ readonly is_clean: boolean;
313
+ };
314
+ type ScanOptions = {
315
+ readonly includeUnknown?: boolean;
316
+ };
317
+ /** Scan env for credentials, returning structured results */
318
+ declare const envScan: (env: Readonly<Record<string, string | undefined>>, options?: ScanOptions) => ScanResult;
319
+ /** Bidirectional drift detection between config and live environment */
320
+ declare const envCheck: (config: EnvpktConfig, env: Readonly<Record<string, string | undefined>>) => CheckResult;
321
+ /** Generate TOML [meta.*] blocks from scan results, mirroring init.ts pattern */
322
+ declare const generateTomlFromScan: (matches: ReadonlyArray<MatchResult>) => string;
323
+ //#endregion
324
+ //#region src/core/boot.d.ts
325
+ /** Programmatic boot — returns Either<BootError, BootResult> */
326
+ declare const bootSafe: (options?: BootOptions) => Either<BootError, BootResult>;
327
+ /** Programmatic boot — throws EnvpktBootError on failure */
328
+ declare const boot: (options?: BootOptions) => BootResult;
329
+ /** Error class for boot() failures */
330
+ declare class EnvpktBootError extends Error {
331
+ readonly error: BootError;
332
+ constructor(error: BootError);
333
+ }
334
+ //#endregion
335
+ //#region src/core/fleet.d.ts
336
+ declare const scanFleet: (rootDir: string, options?: {
337
+ maxDepth?: number;
338
+ }) => FleetHealth;
339
+ //#endregion
340
+ //#region src/fnox/cli.d.ts
341
+ /** Export all secrets from fnox as key=value pairs for a given profile */
342
+ declare const fnoxExport: (profile?: string, agentKey?: string) => Either<FnoxError, Record<string, string>>;
343
+ /** Get a single secret value from fnox */
344
+ declare const fnoxGet: (key: string, profile?: string, agentKey?: string) => Either<FnoxError, string>;
345
+ //#endregion
346
+ //#region src/fnox/detect.d.ts
347
+ /** Detect fnox.toml in the given directory */
348
+ declare const detectFnox: (dir: string) => Option<string>;
349
+ /** Check if fnox CLI is available on PATH */
350
+ declare const fnoxAvailable: () => boolean;
351
+ //#endregion
352
+ //#region src/fnox/identity.d.ts
353
+ /** Check if the age CLI is available on PATH */
354
+ declare const ageAvailable: () => boolean;
355
+ /** Unwrap an encrypted agent key using age --decrypt */
356
+ declare const unwrapAgentKey: (identityPath: string) => Either<IdentityError, string>;
357
+ //#endregion
358
+ //#region src/fnox/parse.d.ts
359
+ /** Read and parse fnox.toml, extracting secret keys and profiles */
360
+ declare const readFnoxConfig: (path: string) => Either<FnoxError, FnoxConfig>;
361
+ /** Extract the set of secret key names from a parsed fnox config */
362
+ declare const extractFnoxKeys: (config: FnoxConfig) => ReadonlySet<string>;
363
+ //#endregion
364
+ //#region src/fnox/sync.d.ts
365
+ /** Compare fnox keys and envpkt meta keys to find mismatches */
366
+ declare const compareFnoxAndEnvpkt: (fnoxKeys: ReadonlySet<string>, envpktKeys: ReadonlySet<string>) => {
367
+ missing: List<string>;
368
+ orphaned: List<string>;
369
+ };
370
+ //#endregion
371
+ //#region src/mcp/resources.d.ts
372
+ declare const resourceDefinitions: readonly Resource[];
373
+ declare const readResource: (uri: string) => ReadResourceResult | undefined;
374
+ //#endregion
375
+ //#region src/mcp/server.d.ts
376
+ declare const createServer: () => Server;
377
+ declare const startServer: () => Promise<void>;
378
+ //#endregion
379
+ //#region src/mcp/tools.d.ts
380
+ type ToolDef = {
381
+ readonly name: string;
382
+ readonly description: string;
383
+ readonly inputSchema: {
384
+ readonly type: "object";
385
+ readonly properties?: Record<string, unknown>;
386
+ readonly required?: readonly string[];
387
+ };
388
+ };
389
+ declare const toolDefinitions: readonly ToolDef[];
390
+ declare const callTool: (name: string, args: Record<string, unknown>) => CallToolResult;
391
+ //#endregion
392
+ export { type AgentIdentity, AgentIdentitySchema, type AuditResult, type BootError, type BootOptions, type BootResult, type CallbackConfig, CallbackConfigSchema, type CatalogError, type CheckResult, type ConfidenceLevel, type ConfigError, type ConsumerType, type CredentialPattern, type DriftEntry, type DriftStatus, EnvpktBootError, type EnvpktConfig, EnvpktConfigSchema, type FleetAgent, type FleetHealth, type FnoxConfig, type FnoxError, type FnoxSecret, type FormatPacketOptions, type HealthStatus, type IdentityError, type LifecycleConfig, LifecycleConfigSchema, type MatchResult, type ResolveOptions, type ResolveResult, type ScanOptions, type ScanResult, type SecretDisplay, type SecretHealth, type SecretMeta, SecretMetaSchema, type SecretStatus, type ToolsConfig, ToolsConfigSchema, ageAvailable, boot, bootSafe, callTool, compareFnoxAndEnvpkt, computeAudit, createServer, deriveServiceFromName, detectFnox, envCheck, envScan, extractFnoxKeys, findConfigPath, fnoxAvailable, fnoxExport, fnoxGet, formatPacket, generateTomlFromScan, loadCatalog, loadConfig, loadConfigFromCwd, maskValue, matchEnvVar, matchValueShape, parseToml, readConfigFile, readFnoxConfig, readResource, resolveConfig, resolveConfigPath, resolveSecrets, resourceDefinitions, scanEnv, scanFleet, startServer, toolDefinitions, unwrapAgentKey, validateConfig };