@happyvertical/smrt-config 0.51.32 → 0.51.33

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 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import { cosmiconfig } from 'cosmiconfig';
2
+ import type { LoadConfigOptions, SmrtConfig } from './types.js';
3
+ /**
4
+ * Extend globalThis to include loader cache properties.
5
+ * Using globalThis ensures all module instances share the same loader state,
6
+ * which is critical in monorepos where the same package can be loaded
7
+ * from different paths (e.g., pnpm store vs workspace symlink).
8
+ *
9
+ * @see https://github.com/happyvertical/smrt/issues/543
10
+ */
11
+ declare global {
12
+ var __smrtLoaderCachedConfig: SmrtConfig | null | undefined;
13
+ var __smrtLoaderExplorer: ReturnType<typeof cosmiconfig> | null | undefined;
14
+ }
15
+ /**
16
+ * Load and parse configuration from the project root using cosmiconfig.
17
+ *
18
+ * Searches for `smrt.config.{js,mjs,cjs,ts,mts,cts,json}` starting from `cwd`,
19
+ * walking up the directory tree unless `searchParents` is `false`. TypeScript
20
+ * configs are transpiled on demand via jiti (#1783). The result is
21
+ * cached in `globalThis.__smrtLoaderCachedConfig` so that all modules sharing
22
+ * the same runtime (including pnpm workspace symlinks) see the same config.
23
+ *
24
+ * Returns an empty object (`{}`) when no config file is found, so callers
25
+ * should always treat every field as optional. A config file that **exists but
26
+ * fails to load/parse** (syntax error, bad import, invalid JSON) throws instead
27
+ * of being silently ignored (#1579).
28
+ *
29
+ * @param options - Search and caching options.
30
+ * @returns The parsed {@link SmrtConfig}, or `{}` if no config file is found.
31
+ * @throws If a config file exists but cannot be loaded or parsed.
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * import { loadConfig } from '@happyvertical/smrt-config';
36
+ *
37
+ * const config = await loadConfig();
38
+ * console.log(config.smrt?.logLevel); // 'debug'
39
+ * ```
40
+ *
41
+ * @example Load a specific file (useful in tests):
42
+ * ```ts
43
+ * const config = await loadConfig({ configPath: './fixtures/smrt.config.js', cache: false });
44
+ * ```
45
+ *
46
+ * @see {@link LoadConfigOptions}
47
+ * @see {@link clearConfigCache}
48
+ */
49
+ export declare function loadConfig(options?: LoadConfigOptions): Promise<SmrtConfig>;
50
+ /**
51
+ * Clear the internal loader cache.
52
+ *
53
+ * Resets `globalThis.__smrtLoaderCachedConfig` and invalidates the cosmiconfig
54
+ * explorer so that the next `loadConfig()` call performs a fresh file search.
55
+ *
56
+ * This is a low-level helper. Consumer code should call {@link clearCache}
57
+ * from `index.ts` instead, which also clears the runtime-override store.
58
+ *
59
+ * @see {@link clearCache}
60
+ */
61
+ export declare function clearConfigCache(): void;
62
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAuChE;;;;;;;GAOG;AACH,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,wBAAwB,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;IAE5D,IAAI,oBAAoB,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;CAC7E;AA0CD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAsB,UAAU,CAC9B,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,UAAU,CAAC,CAiFrB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CASvC"}
@@ -0,0 +1,69 @@
1
+ import type { SmrtConfig } from './types.js';
2
+ declare global {
3
+ var __smrtRuntimeConfig: Partial<SmrtConfig> | undefined;
4
+ }
5
+ /**
6
+ * Deep-merge `config` into the in-memory runtime override store.
7
+ *
8
+ * Runtime overrides take the highest priority in the merge order:
9
+ * runtime > file config > defaults. Subsequent calls accumulate — they do not
10
+ * replace previous overrides, except that explicitly switching runtime profile
11
+ * resets the stored runtime provider subtree. Call {@link clearRuntimeConfig}
12
+ * to reset all overrides.
13
+ *
14
+ * This is the low-level setter; consumer code should call {@link setConfig}
15
+ * from `index.ts` which delegates here.
16
+ *
17
+ * @param config - Partial config to merge into the runtime store.
18
+ *
19
+ * @see {@link clearRuntimeConfig}
20
+ * @see {@link getRuntimeConfig}
21
+ */
22
+ export declare function setConfig(config: Partial<SmrtConfig>): void;
23
+ /**
24
+ * Return the current runtime configuration override store.
25
+ *
26
+ * Used internally by {@link getModuleConfig} and {@link getPackageConfig} to
27
+ * layer runtime overrides on top of file-based config. Prefer those helpers
28
+ * for reading config; this is a low-level accessor.
29
+ *
30
+ * @returns The accumulated runtime config partial.
31
+ */
32
+ export declare function getRuntimeConfig(): Partial<SmrtConfig>;
33
+ /**
34
+ * Reset the runtime configuration override store to an empty object.
35
+ *
36
+ * Called by {@link clearCache} in `index.ts` as part of a full cache reset.
37
+ * Useful in tests to ensure a clean state between cases.
38
+ *
39
+ * @see {@link setConfig}
40
+ */
41
+ export declare function clearRuntimeConfig(): void;
42
+ /**
43
+ * Merge three config layers in ascending priority order.
44
+ *
45
+ * Priority (highest to lowest):
46
+ * 1. `runtime` — runtime overrides set via {@link setConfig}
47
+ * 2. `fileConfig` — values loaded from `smrt.config.js`
48
+ * 3. `defaults` — caller-supplied fallback values
49
+ *
50
+ * Uses {@link deepMerge} internally, so `null` / `undefined` source values
51
+ * never overwrite existing target values.
52
+ *
53
+ * @param defaults - Lowest-priority base values (caller defaults).
54
+ * @param fileConfig - Mid-priority values from the loaded config file.
55
+ * @param runtime - Highest-priority runtime override values.
56
+ * @returns A new object with all three layers merged.
57
+ *
58
+ * @example
59
+ * ```ts
60
+ * const merged = mergeConfigs(
61
+ * { timeout: 5000, retries: 3 },
62
+ * { retries: 5 },
63
+ * { timeout: 1000 },
64
+ * );
65
+ * // => { timeout: 1000, retries: 5 }
66
+ * ```
67
+ */
68
+ export declare function mergeConfigs<T extends Record<string, unknown>>(defaults: T, fileConfig: Partial<T>, runtime: Partial<T>): T;
69
+ //# sourceMappingURL=merge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../src/merge.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,mBAAmB,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC;CAC1D;AAuHD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAyC3D;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC,CAEtD;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5D,QAAQ,EAAE,CAAC,EACX,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,EACtB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAClB,CAAC,CAKH"}
@@ -0,0 +1,163 @@
1
+ /**
2
+ * Stable application-runtime profile contract.
3
+ *
4
+ * Profiles select infrastructure composition only. Domain models, generated
5
+ * surfaces, effect metadata, and approval policy are deliberately outside the
6
+ * override surface so moving an application cannot silently change behavior.
7
+ */
8
+ export type ApplicationRuntimeProfile = 'local' | 'self-hosted' | 'cloud';
9
+ export type DatabaseEngine = 'sqlite' | 'postgres';
10
+ export type ConnectionOwnership = 'user' | 'operator' | 'managed';
11
+ export type AuthenticationProvider = 'owner-bootstrap' | 'oidc' | 'magic-link' | 'hosted-identity';
12
+ export type OwnerBootstrapMode = 'single-use' | 'disabled';
13
+ export type TenancyMode = 'default-tenant' | 'single-tenant' | 'multi-tenant';
14
+ export type TenantContextMode = 'defaulted' | 'required';
15
+ export type TenantIsolation = 'application' | 'database-rls';
16
+ export type AssetStorageProvider = 'local-files' | 's3-compatible' | 'managed-object-storage';
17
+ export type AssetOwnership = 'user' | 'operator' | 'managed';
18
+ export type SecretProvider = 'local-file' | 'environment' | 'external' | 'managed';
19
+ export type SecretOwnership = 'user' | 'operator' | 'managed';
20
+ export type JobTopology = 'inline' | 'embedded' | 'external' | 'scalable';
21
+ export type NetworkExposure = 'loopback' | 'public';
22
+ export type BackupProvider = 'file-snapshot' | 'operator' | 'managed';
23
+ export interface RuntimeDatabaseProvider {
24
+ readonly engine: DatabaseEngine;
25
+ readonly connectionOwnership: ConnectionOwnership;
26
+ }
27
+ export interface RuntimeAuthenticationProvider {
28
+ readonly provider: AuthenticationProvider;
29
+ readonly ownerBootstrap: OwnerBootstrapMode;
30
+ }
31
+ export interface RuntimeTenancyProvider {
32
+ readonly mode: TenancyMode;
33
+ readonly context: TenantContextMode;
34
+ readonly isolation: TenantIsolation;
35
+ }
36
+ export interface RuntimeAssetProvider {
37
+ readonly provider: AssetStorageProvider;
38
+ readonly ownership: AssetOwnership;
39
+ }
40
+ export interface RuntimeSecretProvider {
41
+ readonly provider: SecretProvider;
42
+ readonly ownership: SecretOwnership;
43
+ }
44
+ export interface RuntimeJobProvider {
45
+ readonly topology: JobTopology;
46
+ }
47
+ export interface RuntimeNetworkProvider {
48
+ readonly exposure: NetworkExposure;
49
+ readonly tls: boolean;
50
+ }
51
+ export interface RuntimePortabilityProvider {
52
+ readonly backup: BackupProvider;
53
+ readonly logicalExport: true;
54
+ readonly logicalImport: true;
55
+ }
56
+ /** Fully selected infrastructure providers for an application runtime. */
57
+ export interface RuntimeProviders {
58
+ readonly database: RuntimeDatabaseProvider;
59
+ readonly authentication: RuntimeAuthenticationProvider;
60
+ readonly tenancy: RuntimeTenancyProvider;
61
+ readonly assets: RuntimeAssetProvider;
62
+ readonly secrets: RuntimeSecretProvider;
63
+ readonly jobs: RuntimeJobProvider;
64
+ readonly network: RuntimeNetworkProvider;
65
+ readonly portability: RuntimePortabilityProvider;
66
+ }
67
+ /**
68
+ * Explicit provider changes layered over a profile's safe preset.
69
+ *
70
+ * Every override is revalidated with the completed composition. Capability and
71
+ * surface-policy fields are intentionally absent: providers cannot use this
72
+ * seam to weaken cross-profile invariants.
73
+ */
74
+ export interface RuntimeProviderOverrides {
75
+ database?: Partial<RuntimeDatabaseProvider>;
76
+ authentication?: Partial<RuntimeAuthenticationProvider>;
77
+ tenancy?: Partial<RuntimeTenancyProvider>;
78
+ assets?: Partial<RuntimeAssetProvider>;
79
+ secrets?: Partial<RuntimeSecretProvider>;
80
+ jobs?: Partial<RuntimeJobProvider>;
81
+ network?: Partial<RuntimeNetworkProvider>;
82
+ }
83
+ /** Canonical config stored at `runtime` in `smrt.config.ts`. */
84
+ export interface ApplicationRuntimeConfig {
85
+ profile: ApplicationRuntimeProfile;
86
+ providers?: RuntimeProviderOverrides;
87
+ }
88
+ /** Derived capabilities used by startup, doctor, tests, and agent inspection. */
89
+ export interface RuntimeCapabilities {
90
+ readonly ownerBootstrap: boolean;
91
+ readonly publicAuthentication: boolean;
92
+ readonly defaultTenant: boolean;
93
+ readonly multiTenant: boolean;
94
+ readonly localAssets: boolean;
95
+ readonly externalWorkers: boolean;
96
+ readonly backup: true;
97
+ readonly logicalExport: true;
98
+ readonly logicalImport: true;
99
+ readonly diagnostics: true;
100
+ readonly orchestrationHealth: boolean;
101
+ }
102
+ /** Behaviors that provider/profile selection is never allowed to change. */
103
+ export interface RuntimeInvariants {
104
+ readonly domainModels: 'identical';
105
+ readonly generatedRest: 'identical';
106
+ readonly generatedCli: 'identical';
107
+ readonly generatedMcp: 'identical';
108
+ readonly generatedWebMcp: 'identical';
109
+ readonly mcpExposurePolicy: 'identical';
110
+ readonly webMcpExposurePolicy: 'identical';
111
+ readonly actionEffects: 'identical';
112
+ readonly approvalPolicy: 'identical';
113
+ readonly authorizationRecords: 'required';
114
+ readonly jobInvocation: 'identical';
115
+ readonly portability: 'logical-export-import';
116
+ }
117
+ export interface RuntimeOverrideReport {
118
+ readonly path: string;
119
+ readonly from: string | boolean;
120
+ readonly to: string | boolean;
121
+ }
122
+ /** Deterministic, secret-free runtime diagnostic snapshot. */
123
+ export interface ResolvedApplicationRuntime {
124
+ readonly schemaVersion: 1;
125
+ readonly profile: ApplicationRuntimeProfile;
126
+ readonly providers: RuntimeProviders;
127
+ readonly capabilities: RuntimeCapabilities;
128
+ readonly invariants: RuntimeInvariants;
129
+ readonly diagnostics: {
130
+ readonly secretValuesIncluded: false;
131
+ readonly overrides: readonly RuntimeOverrideReport[];
132
+ readonly unsafeOverrides: readonly [];
133
+ };
134
+ }
135
+ export interface RuntimeProfileValidationIssue {
136
+ code: 'invalid_config' | 'unsupported_field' | 'incompatible_provider';
137
+ path: string;
138
+ message: string;
139
+ recovery: string;
140
+ }
141
+ /** Aggregates deterministic, actionable failures before application startup. */
142
+ export declare class RuntimeProfileValidationError extends Error {
143
+ readonly issues: readonly RuntimeProfileValidationIssue[];
144
+ constructor(issues: RuntimeProfileValidationIssue[]);
145
+ }
146
+ /**
147
+ * Validate only the runtime contract's object and field shape.
148
+ *
149
+ * @internal Used while composing configuration layers before a profile is
150
+ * necessarily available. Full profile/provider compatibility validation stays
151
+ * in {@link resolveApplicationRuntime}.
152
+ */
153
+ export declare function validateApplicationRuntimeConfigShape(config: unknown): readonly RuntimeProfileValidationIssue[];
154
+ /**
155
+ * Resolve a safe preset and explicit provider overrides into a stable snapshot.
156
+ *
157
+ * The resolver is pure: it reads no environment variables, paths, credentials,
158
+ * clocks, or process state. Invalid and unknown fields fail before startup.
159
+ */
160
+ export declare function resolveApplicationRuntime(config: ApplicationRuntimeConfig): Readonly<ResolvedApplicationRuntime>;
161
+ /** Return a fresh copy of the documented preset for inspection and tooling. */
162
+ export declare function getApplicationRuntimePreset(profile: ApplicationRuntimeProfile): Readonly<RuntimeProviders>;
163
+ //# sourceMappingURL=runtime-profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-profile.d.ts","sourceRoot":"","sources":["../src/runtime-profile.ts"],"names":[],"mappings":"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"}