@telora/daemon-core 0.2.32 → 0.2.34

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,116 @@
1
+ /**
2
+ * Typed, validated daemon environment configuration -- the ONE discoverable
3
+ * index of every operational knob the daemon reads from the environment.
4
+ *
5
+ * Why this module exists:
6
+ * Before this, operational knobs were scattered as ad-hoc `process.env.TELORA_*`
7
+ * reads across the daemon. They were undiscoverable (no single list), and a
8
+ * typo'd or out-of-range value failed silently at runtime (NaN, wrong branch)
9
+ * instead of loudly at startup. This module declares EVERY knob in one place
10
+ * with a Zod type, a default, and a one-line description, and validates them
11
+ * once at startup -- so invalid config fails loudly, naming the offending var.
12
+ *
13
+ * What lives here:
14
+ * - Operational knobs only (loop gates, intervals, limits, ports, paths,
15
+ * branch names, registry URL, telemetry tuning). Connection identity
16
+ * (TELORA_TRACKER_ID / _ORGANIZATION_ID / _PRODUCT_ID / _URL / _REPO_PATH,
17
+ * CLAUDE_CODE_PATH, TELORA_LOG_DIR, SESSION_TIMEOUT_MS) stays in
18
+ * `config.ts`'s BASE_ENV_MAP -- that is the established home for connection
19
+ * fields and the multi-product normalization. This module does not
20
+ * duplicate them.
21
+ * - Secrets (ANTHROPIC_API_KEY, OPENAI_API_KEY, ...) are intentionally OUT of
22
+ * scope: they are read by spawned processes, not the daemon's own config.
23
+ *
24
+ * Loop-gate semantics:
25
+ * The opt-out loop gates (TELORA_FOCUS_LOOP, ...) MUST reproduce
26
+ * `shouldRunLoop` EXACTLY: unset -> true, '' -> true, '0' -> false,
27
+ * anything else -> true. `loopGate()` below is the canonical preprocessor.
28
+ *
29
+ * Discoverability:
30
+ * `ENV_VAR_METADATA` is the machine-readable index (name + description +
31
+ * default + kind) of all declared knobs. `formatEnvVarTable()` renders it
32
+ * for docs / `--help`.
33
+ */
34
+ import { z } from 'zod';
35
+ /**
36
+ * Reproduce the canonical opt-out loop-gate semantics as a boolean:
37
+ * undefined -> true (unset: loop fires)
38
+ * '' -> true (treated like unset)
39
+ * '0' -> false (explicit opt-out)
40
+ * anything -> true ('1', 'true', 'yes', etc.)
41
+ *
42
+ * Keep this in lockstep with `shouldRunLoop` in
43
+ * `packages/daemon/src/focus-engine.ts`.
44
+ */
45
+ export declare function loopGateEnabled(raw: string | undefined): boolean;
46
+ export type EnvVarKind = 'loop-gate' | 'int' | 'float' | 'port' | 'bool' | 'string' | 'enum';
47
+ export interface EnvVarMeta {
48
+ /** The process.env variable name (e.g. TELORA_FOCUS_LOOP). */
49
+ name: string;
50
+ /** The typed-config field name this var populates. */
51
+ field: keyof EnvConfig;
52
+ /** Coarse kind, for rendering / docs. */
53
+ kind: EnvVarKind;
54
+ /** Default applied when the var is unset or empty. */
55
+ default: string | number | boolean | undefined;
56
+ /** One-line human description of what the knob does. */
57
+ description: string;
58
+ }
59
+ declare const EnvConfigSchema: z.ZodObject<{
60
+ TELORA_FOCUS_LOOP: z.ZodType<boolean, unknown, z.core.$ZodTypeInternals<boolean, unknown>>;
61
+ TELORA_VERIFICATION_LOOP: z.ZodType<boolean, unknown, z.core.$ZodTypeInternals<boolean, unknown>>;
62
+ TELORA_MERGE_BACK_LOOP: z.ZodType<boolean, unknown, z.core.$ZodTypeInternals<boolean, unknown>>;
63
+ TELORA_FRT_PROSE_LOOP: z.ZodType<boolean, unknown, z.core.$ZodTypeInternals<boolean, unknown>>;
64
+ TELORA_PRD_LOOP: z.ZodType<boolean, unknown, z.core.$ZodTypeInternals<boolean, unknown>>;
65
+ TELORA_DRIFT_EVAL_LOOP: z.ZodType<boolean, unknown, z.core.$ZodTypeInternals<boolean, unknown>>;
66
+ TELORA_SECURITY_SCAN_LOOP: z.ZodType<boolean, unknown, z.core.$ZodTypeInternals<boolean, unknown>>;
67
+ TELORA_SECURITY_SCAN_INTERVAL_HOURS: z.ZodType<number, unknown, z.core.$ZodTypeInternals<number, unknown>>;
68
+ TELORA_STUCK_BRANCH_THRESHOLD_HOURS: z.ZodType<number, unknown, z.core.$ZodTypeInternals<number, unknown>>;
69
+ TELORA_REVIEW_REMEDIATION_LIMIT: z.ZodType<number, unknown, z.core.$ZodTypeInternals<number, unknown>>;
70
+ TELORA_SCOPE_COVERAGE_NO_PROGRESS_LIMIT: z.ZodType<number, unknown, z.core.$ZodTypeInternals<number, unknown>>;
71
+ TELORA_WORKTREE_DIR: z.ZodType<string | undefined, unknown, z.core.$ZodTypeInternals<string | undefined, unknown>>;
72
+ TELORA_INTEGRATION_BRANCH: z.ZodType<string, unknown, z.core.$ZodTypeInternals<string, unknown>>;
73
+ TELORA_POLICY_FAILURE_MODE: z.ZodPipe<z.ZodTransform<string, unknown>, z.ZodEnum<{
74
+ [x: string]: string;
75
+ }>>;
76
+ TELORA_REGISTRY_URL: z.ZodType<string, unknown, z.core.$ZodTypeInternals<string, unknown>>;
77
+ TELORA_TELEMETRY_ENABLED: z.ZodType<boolean, unknown, z.core.$ZodTypeInternals<boolean, unknown>>;
78
+ TELORA_TELEMETRY_PORT: z.ZodType<number, unknown, z.core.$ZodTypeInternals<number, unknown>>;
79
+ TELORA_TELEMETRY_FLUSH_INTERVAL_MS: z.ZodType<number, unknown, z.core.$ZodTypeInternals<number, unknown>>;
80
+ TELORA_TELEMETRY_RETENTION_DAYS: z.ZodType<number, unknown, z.core.$ZodTypeInternals<number, unknown>>;
81
+ MAX_TOTAL_SESSIONS: z.ZodType<number, unknown, z.core.$ZodTypeInternals<number, unknown>>;
82
+ TOKEN_LIMIT: z.ZodType<number, unknown, z.core.$ZodTypeInternals<number, unknown>>;
83
+ COST_LIMIT: z.ZodType<number, unknown, z.core.$ZodTypeInternals<number, unknown>>;
84
+ MERGE_LOCK_TIMEOUT_MS: z.ZodType<number, unknown, z.core.$ZodTypeInternals<number, unknown>>;
85
+ MERGE_LOCK_CONTENTION_WARNING_MS: z.ZodType<number, unknown, z.core.$ZodTypeInternals<number, unknown>>;
86
+ LOG_MAX_AGE_DAYS: z.ZodType<number, unknown, z.core.$ZodTypeInternals<number, unknown>>;
87
+ LOG_MAX_TOTAL_BYTES: z.ZodType<number, unknown, z.core.$ZodTypeInternals<number, unknown>>;
88
+ LOG_MAX_FILES: z.ZodType<number, unknown, z.core.$ZodTypeInternals<number, unknown>>;
89
+ }, z.core.$strip>;
90
+ /** Fully typed, validated, frozen operational config. */
91
+ export type EnvConfig = z.infer<typeof EnvConfigSchema>;
92
+ /**
93
+ * Machine-readable index of every declared knob -- the discoverability surface.
94
+ * Order mirrors the schema declaration above.
95
+ */
96
+ export declare const ENV_VAR_METADATA: readonly EnvVarMeta[];
97
+ /**
98
+ * Parse + validate the operational env config ONCE and return a typed, frozen
99
+ * object. On invalid input, throws a CLEAR, ACTIONABLE error naming each
100
+ * offending variable and what was expected -- so a typo'd MERGE_LOCK_TIMEOUT_MS
101
+ * or a non-numeric TELORA_TELEMETRY_PORT fails loudly at startup rather than
102
+ * silently at runtime.
103
+ *
104
+ * @param env Env source (defaults to process.env). When omitted, the result is
105
+ * memoized; pass an explicit env (e.g. in tests) to bypass the cache.
106
+ */
107
+ export declare function loadEnvConfig(env?: NodeJS.ProcessEnv): EnvConfig;
108
+ /** Test-only: clear the memoized config so a later load re-reads process.env. */
109
+ export declare function resetEnvConfigCache(): void;
110
+ /**
111
+ * Render the knob index as a human-readable table (for docs / --help output).
112
+ * This is the discoverable list of every operational env var.
113
+ */
114
+ export declare function formatEnvVarTable(): string;
115
+ export {};
116
+ //# sourceMappingURL=env-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-config.d.ts","sourceRoot":"","sources":["../src/env-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAIhE;AAsED,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE7F,MAAM,WAAW,UAAU;IACzB,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,KAAK,EAAE,MAAM,SAAS,CAAC;IACvB,yCAAyC;IACzC,IAAI,EAAE,UAAU,CAAC;IACjB,sDAAsD;IACtD,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IAC/C,wDAAwD;IACxD,WAAW,EAAE,MAAM,CAAC;CACrB;AAiDD,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAwB,CAAC;AAE9C,yDAAyD;AACzD,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,UAAU,EAiChD,CAAC;AAQH;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CA6BhE;AAED,iFAAiF;AACjF,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAM1C"}
@@ -0,0 +1,230 @@
1
+ /**
2
+ * Typed, validated daemon environment configuration -- the ONE discoverable
3
+ * index of every operational knob the daemon reads from the environment.
4
+ *
5
+ * Why this module exists:
6
+ * Before this, operational knobs were scattered as ad-hoc `process.env.TELORA_*`
7
+ * reads across the daemon. They were undiscoverable (no single list), and a
8
+ * typo'd or out-of-range value failed silently at runtime (NaN, wrong branch)
9
+ * instead of loudly at startup. This module declares EVERY knob in one place
10
+ * with a Zod type, a default, and a one-line description, and validates them
11
+ * once at startup -- so invalid config fails loudly, naming the offending var.
12
+ *
13
+ * What lives here:
14
+ * - Operational knobs only (loop gates, intervals, limits, ports, paths,
15
+ * branch names, registry URL, telemetry tuning). Connection identity
16
+ * (TELORA_TRACKER_ID / _ORGANIZATION_ID / _PRODUCT_ID / _URL / _REPO_PATH,
17
+ * CLAUDE_CODE_PATH, TELORA_LOG_DIR, SESSION_TIMEOUT_MS) stays in
18
+ * `config.ts`'s BASE_ENV_MAP -- that is the established home for connection
19
+ * fields and the multi-product normalization. This module does not
20
+ * duplicate them.
21
+ * - Secrets (ANTHROPIC_API_KEY, OPENAI_API_KEY, ...) are intentionally OUT of
22
+ * scope: they are read by spawned processes, not the daemon's own config.
23
+ *
24
+ * Loop-gate semantics:
25
+ * The opt-out loop gates (TELORA_FOCUS_LOOP, ...) MUST reproduce
26
+ * `shouldRunLoop` EXACTLY: unset -> true, '' -> true, '0' -> false,
27
+ * anything else -> true. `loopGate()` below is the canonical preprocessor.
28
+ *
29
+ * Discoverability:
30
+ * `ENV_VAR_METADATA` is the machine-readable index (name + description +
31
+ * default + kind) of all declared knobs. `formatEnvVarTable()` renders it
32
+ * for docs / `--help`.
33
+ */
34
+ import { z } from 'zod';
35
+ // ---------------------------------------------------------------------------
36
+ // Loop-gate semantics (must match focus-engine.shouldRunLoop EXACTLY)
37
+ // ---------------------------------------------------------------------------
38
+ /**
39
+ * Reproduce the canonical opt-out loop-gate semantics as a boolean:
40
+ * undefined -> true (unset: loop fires)
41
+ * '' -> true (treated like unset)
42
+ * '0' -> false (explicit opt-out)
43
+ * anything -> true ('1', 'true', 'yes', etc.)
44
+ *
45
+ * Keep this in lockstep with `shouldRunLoop` in
46
+ * `packages/daemon/src/focus-engine.ts`.
47
+ */
48
+ export function loopGateEnabled(raw) {
49
+ if (raw === undefined)
50
+ return true;
51
+ if (raw === '')
52
+ return true;
53
+ return raw !== '0';
54
+ }
55
+ /**
56
+ * A Zod schema that parses a raw env string into a loop-gate boolean using
57
+ * the exact opt-out semantics above. Used for every loop-gate knob.
58
+ */
59
+ const loopGate = () => z.preprocess((v) => loopGateEnabled(v === undefined ? undefined : String(v)), z.boolean());
60
+ // ---------------------------------------------------------------------------
61
+ // Numeric coercion helpers
62
+ //
63
+ // We hand-write the preprocess so an invalid value produces a CLEAR, ACTIONABLE
64
+ // error that names the offending var (the field key is included by Zod). An
65
+ // empty/unset value falls through to the declared default.
66
+ // ---------------------------------------------------------------------------
67
+ /** Positive integer (> 0). Unset/'' -> default. Non-numeric -> loud error. */
68
+ const positiveInt = (def) => z.preprocess((v) => {
69
+ if (v === undefined || v === '')
70
+ return def;
71
+ const n = Number(v);
72
+ return n;
73
+ }, z.number({ message: 'must be a number' }).int('must be an integer').positive('must be > 0'));
74
+ /** Positive float (> 0). Unset/'' -> default. Non-numeric -> loud error. */
75
+ const positiveFloat = (def) => z.preprocess((v) => {
76
+ if (v === undefined || v === '')
77
+ return def;
78
+ return Number(v);
79
+ }, z.number({ message: 'must be a number' }).positive('must be > 0'));
80
+ /** TCP port (1..65535). Unset/'' -> default. */
81
+ const port = (def) => z.preprocess((v) => {
82
+ if (v === undefined || v === '')
83
+ return def;
84
+ return Number(v);
85
+ }, z.number({ message: 'must be a number' }).int('must be an integer').min(1, 'must be >= 1').max(65535, 'must be <= 65535'));
86
+ /** Boolean with true/false/1/0 semantics. Unset/'' -> default. */
87
+ const boolEnabled = (def) => z.preprocess((v) => {
88
+ if (v === undefined || v === '')
89
+ return def;
90
+ const s = String(v).toLowerCase();
91
+ if (s === '0' || s === 'false' || s === 'no')
92
+ return false;
93
+ return true;
94
+ }, z.boolean());
95
+ /** Optional string (undefined when unset/''); never errors. */
96
+ const optionalString = () => z.preprocess((v) => (v === undefined || v === '' ? undefined : String(v)), z.string().optional());
97
+ /** String with a default when unset/''. */
98
+ const stringDefault = (def) => z.preprocess((v) => (v === undefined || v === '' ? def : String(v)), z.string());
99
+ /** Enum string with a default. Inference preserves the literal union. */
100
+ const enumDefault = (values, def) => z.preprocess((v) => (v === undefined || v === '' ? def : String(v)), z.enum(values));
101
+ // ---------------------------------------------------------------------------
102
+ // Schema + metadata, declared together so they cannot drift.
103
+ //
104
+ // Loop gates -- opt-out (unset/''/other -> on, '0' -> off):
105
+ // ---------------------------------------------------------------------------
106
+ const schemaShape = {
107
+ // ── Loop gates (opt-out: '0' disables, everything else enables) ──
108
+ TELORA_FOCUS_LOOP: loopGate(),
109
+ TELORA_VERIFICATION_LOOP: loopGate(),
110
+ TELORA_MERGE_BACK_LOOP: loopGate(),
111
+ TELORA_FRT_PROSE_LOOP: loopGate(),
112
+ TELORA_PRD_LOOP: loopGate(),
113
+ TELORA_DRIFT_EVAL_LOOP: loopGate(),
114
+ TELORA_SECURITY_SCAN_LOOP: loopGate(),
115
+ // ── Loop / scan cadence + bounds ──
116
+ TELORA_SECURITY_SCAN_INTERVAL_HOURS: positiveFloat(24),
117
+ TELORA_STUCK_BRANCH_THRESHOLD_HOURS: positiveFloat(24),
118
+ TELORA_REVIEW_REMEDIATION_LIMIT: positiveInt(3),
119
+ TELORA_SCOPE_COVERAGE_NO_PROGRESS_LIMIT: positiveInt(3),
120
+ // ── Branch / path / registry ──
121
+ TELORA_WORKTREE_DIR: optionalString(),
122
+ TELORA_INTEGRATION_BRANCH: stringDefault('integration'),
123
+ TELORA_POLICY_FAILURE_MODE: enumDefault(['fail-open', 'fail-closed'], 'fail-open'),
124
+ TELORA_REGISTRY_URL: stringDefault('https://registry.npmjs.org/'),
125
+ // ── Telemetry / OTLP receiver ──
126
+ TELORA_TELEMETRY_ENABLED: boolEnabled(true),
127
+ TELORA_TELEMETRY_PORT: port(4318),
128
+ TELORA_TELEMETRY_FLUSH_INTERVAL_MS: positiveInt(5000),
129
+ TELORA_TELEMETRY_RETENTION_DAYS: positiveInt(30),
130
+ // ── Session / cost limits (non-prefixed operational vars) ──
131
+ MAX_TOTAL_SESSIONS: positiveInt(5),
132
+ TOKEN_LIMIT: positiveInt(200000),
133
+ COST_LIMIT: positiveFloat(10.0),
134
+ MERGE_LOCK_TIMEOUT_MS: positiveInt(300000),
135
+ MERGE_LOCK_CONTENTION_WARNING_MS: positiveInt(30000),
136
+ // ── Log retention ──
137
+ LOG_MAX_AGE_DAYS: positiveInt(7),
138
+ LOG_MAX_TOTAL_BYTES: positiveInt(1073741824),
139
+ LOG_MAX_FILES: positiveInt(500),
140
+ };
141
+ const EnvConfigSchema = z.object(schemaShape);
142
+ /**
143
+ * Machine-readable index of every declared knob -- the discoverability surface.
144
+ * Order mirrors the schema declaration above.
145
+ */
146
+ export const ENV_VAR_METADATA = Object.freeze([
147
+ { name: 'TELORA_FOCUS_LOOP', field: 'TELORA_FOCUS_LOOP', kind: 'loop-gate', default: true, description: 'Differential focus loop tick (opt-out: 0 disables).' },
148
+ { name: 'TELORA_VERIFICATION_LOOP', field: 'TELORA_VERIFICATION_LOOP', kind: 'loop-gate', default: true, description: 'Pluggable per-delivery verification tick (opt-out: 0 disables).' },
149
+ { name: 'TELORA_MERGE_BACK_LOOP', field: 'TELORA_MERGE_BACK_LOOP', kind: 'loop-gate', default: true, description: 'Continuous merge-back recovery tick (opt-out: 0 disables).' },
150
+ { name: 'TELORA_FRT_PROSE_LOOP', field: 'TELORA_FRT_PROSE_LOOP', kind: 'loop-gate', default: true, description: 'Eager FRT cascade-prose reconciliation tick (opt-out: 0 disables).' },
151
+ { name: 'TELORA_PRD_LOOP', field: 'TELORA_PRD_LOOP', kind: 'loop-gate', default: true, description: 'PRD-lifecycle controller tick; arms PRT frontier foci (opt-out: 0 disables).' },
152
+ { name: 'TELORA_DRIFT_EVAL_LOOP', field: 'TELORA_DRIFT_EVAL_LOOP', kind: 'loop-gate', default: true, description: 'Reality-tree drift evaluation tick (opt-out: 0 disables).' },
153
+ { name: 'TELORA_SECURITY_SCAN_LOOP', field: 'TELORA_SECURITY_SCAN_LOOP', kind: 'loop-gate', default: true, description: 'Pluggable security scanner engine tick (opt-out: 0 disables).' },
154
+ { name: 'TELORA_SECURITY_SCAN_INTERVAL_HOURS', field: 'TELORA_SECURITY_SCAN_INTERVAL_HOURS', kind: 'float', default: 24, description: 'Cadence (hours) of the security scan loop.' },
155
+ { name: 'TELORA_STUCK_BRANCH_THRESHOLD_HOURS', field: 'TELORA_STUCK_BRANCH_THRESHOLD_HOURS', kind: 'float', default: 24, description: 'Hours a focus branch may lead integration before a stuck_focus_branch escalation.' },
156
+ { name: 'TELORA_REVIEW_REMEDIATION_LIMIT', field: 'TELORA_REVIEW_REMEDIATION_LIMIT', kind: 'int', default: 3, description: 'Cap on review remediation cycles before escalation.' },
157
+ { name: 'TELORA_SCOPE_COVERAGE_NO_PROGRESS_LIMIT', field: 'TELORA_SCOPE_COVERAGE_NO_PROGRESS_LIMIT', kind: 'int', default: 3, description: 'Cap on consecutive no-progress re-engagement cycles before scope-coverage escalation.' },
158
+ { name: 'TELORA_WORKTREE_DIR', field: 'TELORA_WORKTREE_DIR', kind: 'string', default: undefined, description: 'Override directory for parallel agent worktrees (default: <repo>/.telora/worktrees).' },
159
+ { name: 'TELORA_INTEGRATION_BRANCH', field: 'TELORA_INTEGRATION_BRANCH', kind: 'string', default: 'integration', description: 'Branch agents merge into on success before human promotion to main.' },
160
+ { name: 'TELORA_POLICY_FAILURE_MODE', field: 'TELORA_POLICY_FAILURE_MODE', kind: 'enum', default: 'fail-open', description: 'Guard failure mode: fail-open (default) or fail-closed.' },
161
+ { name: 'TELORA_REGISTRY_URL', field: 'TELORA_REGISTRY_URL', kind: 'string', default: 'https://registry.npmjs.org/', description: 'npm registry the update check targets (LAN/dev override).' },
162
+ { name: 'TELORA_TELEMETRY_ENABLED', field: 'TELORA_TELEMETRY_ENABLED', kind: 'bool', default: true, description: 'Enable the OTLP telemetry receiver (false/0 disables).' },
163
+ { name: 'TELORA_TELEMETRY_PORT', field: 'TELORA_TELEMETRY_PORT', kind: 'port', default: 4318, description: 'TCP port for the OTLP telemetry receiver.' },
164
+ { name: 'TELORA_TELEMETRY_FLUSH_INTERVAL_MS', field: 'TELORA_TELEMETRY_FLUSH_INTERVAL_MS', kind: 'int', default: 5000, description: 'Telemetry buffer flush interval (ms).' },
165
+ { name: 'TELORA_TELEMETRY_RETENTION_DAYS', field: 'TELORA_TELEMETRY_RETENTION_DAYS', kind: 'int', default: 30, description: 'Telemetry retention window (days).' },
166
+ { name: 'MAX_TOTAL_SESSIONS', field: 'MAX_TOTAL_SESSIONS', kind: 'int', default: 5, description: 'Max concurrent focus agent sessions.' },
167
+ { name: 'TOKEN_LIMIT', field: 'TOKEN_LIMIT', kind: 'int', default: 200000, description: 'Per-session token budget.' },
168
+ { name: 'COST_LIMIT', field: 'COST_LIMIT', kind: 'float', default: 10.0, description: 'Per-session cost budget (USD).' },
169
+ { name: 'MERGE_LOCK_TIMEOUT_MS', field: 'MERGE_LOCK_TIMEOUT_MS', kind: 'int', default: 300000, description: 'Max wait (ms) to acquire the merge lock.' },
170
+ { name: 'MERGE_LOCK_CONTENTION_WARNING_MS', field: 'MERGE_LOCK_CONTENTION_WARNING_MS', kind: 'int', default: 30000, description: 'Warn threshold (ms) when contending for the merge lock.' },
171
+ { name: 'LOG_MAX_AGE_DAYS', field: 'LOG_MAX_AGE_DAYS', kind: 'int', default: 7, description: 'Max age (days) of retained agent logs.' },
172
+ { name: 'LOG_MAX_TOTAL_BYTES', field: 'LOG_MAX_TOTAL_BYTES', kind: 'int', default: 1073741824, description: 'Max total bytes of retained agent logs.' },
173
+ { name: 'LOG_MAX_FILES', field: 'LOG_MAX_FILES', kind: 'int', default: 500, description: 'Max number of retained agent log files.' },
174
+ ]);
175
+ // ---------------------------------------------------------------------------
176
+ // Loader
177
+ // ---------------------------------------------------------------------------
178
+ let cached = null;
179
+ /**
180
+ * Parse + validate the operational env config ONCE and return a typed, frozen
181
+ * object. On invalid input, throws a CLEAR, ACTIONABLE error naming each
182
+ * offending variable and what was expected -- so a typo'd MERGE_LOCK_TIMEOUT_MS
183
+ * or a non-numeric TELORA_TELEMETRY_PORT fails loudly at startup rather than
184
+ * silently at runtime.
185
+ *
186
+ * @param env Env source (defaults to process.env). When omitted, the result is
187
+ * memoized; pass an explicit env (e.g. in tests) to bypass the cache.
188
+ */
189
+ export function loadEnvConfig(env) {
190
+ const useCache = env === undefined;
191
+ if (useCache && cached)
192
+ return cached;
193
+ const source = env ?? process.env;
194
+ // Pick only the declared keys so unrelated env vars cannot interfere.
195
+ const input = {};
196
+ for (const meta of ENV_VAR_METADATA) {
197
+ input[meta.name] = source[meta.name];
198
+ }
199
+ const result = EnvConfigSchema.safeParse(input);
200
+ if (!result.success) {
201
+ const lines = result.error.issues.map((issue) => {
202
+ const varName = String(issue.path[0] ?? '(unknown)');
203
+ const got = source[varName];
204
+ return ` - ${varName}: ${issue.message} (got: ${JSON.stringify(got)})`;
205
+ });
206
+ throw new Error(`Invalid daemon environment configuration (${result.error.issues.length} error(s)):\n` +
207
+ lines.join('\n') +
208
+ '\nRun the daemon with corrected values, or unset the variable to use its default.');
209
+ }
210
+ const frozen = Object.freeze(result.data);
211
+ if (useCache)
212
+ cached = frozen;
213
+ return frozen;
214
+ }
215
+ /** Test-only: clear the memoized config so a later load re-reads process.env. */
216
+ export function resetEnvConfigCache() {
217
+ cached = null;
218
+ }
219
+ /**
220
+ * Render the knob index as a human-readable table (for docs / --help output).
221
+ * This is the discoverable list of every operational env var.
222
+ */
223
+ export function formatEnvVarTable() {
224
+ const rows = ENV_VAR_METADATA.map((m) => {
225
+ const def = m.default === undefined ? '(none)' : String(m.default);
226
+ return `${m.name}\t[${m.kind}, default ${def}]\t${m.description}`;
227
+ });
228
+ return ['Operational environment variables:', ...rows].join('\n');
229
+ }
230
+ //# sourceMappingURL=env-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-config.js","sourceRoot":"","sources":["../src/env-config.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -7,6 +7,7 @@ export { type AgentEvent, type AgentEventParser, type AgentSessionStartedEvent,
7
7
  export { ClaudeAgentParser, extractFilePath, } from './claude-agent-parser.js';
8
8
  export { CodexAgentParser, } from './codex-agent-parser.js';
9
9
  export { UUID_REGEX, loadConfigFile, productLabel, resolveBaseConfig, validateBaseConfig, type BaseConfig, type ProductEntry, } from './config.js';
10
+ export { ENV_VAR_METADATA, formatEnvVarTable, loadEnvConfig, loopGateEnabled, resetEnvConfigCache, type EnvConfig, type EnvVarKind, type EnvVarMeta, } from './env-config.js';
10
11
  export { PidLockError, ShutdownController, acquirePidLock, isProcessRunning, releasePidLock, setupSignalHandlers, type ShutdownHandler, } from './lifecycle.js';
11
12
  export { DEFAULT_GIT_TIMEOUT_MS, branchExists, runGit, type GitResult, } from './git.js';
12
13
  export { commitWip, createWorktreeBase, pruneWorktrees, removeWorktreeBase, worktreeExistsForBranch, type CreateWorktreeResult, } from './worktree.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -15,6 +15,8 @@ export { ClaudeAgentParser, extractFilePath, } from './claude-agent-parser.js';
15
15
  export { CodexAgentParser, } from './codex-agent-parser.js';
16
16
  // Shared config infrastructure (BaseConfig, loaders, validators)
17
17
  export { UUID_REGEX, loadConfigFile, productLabel, resolveBaseConfig, validateBaseConfig, } from './config.js';
18
+ // Typed operational env config (the discoverable index of every daemon knob)
19
+ export { ENV_VAR_METADATA, formatEnvVarTable, loadEnvConfig, loopGateEnabled, resetEnvConfigCache, } from './env-config.js';
18
20
  // Process lifecycle (PID locking, signal handling, shutdown coordination)
19
21
  export { PidLockError, ShutdownController, acquirePidLock, isProcessRunning, releasePidLock, setupSignalHandlers, } from './lifecycle.js';
20
22
  // Git utilities (synchronous git runner, branch helpers)
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@telora/daemon-core",
3
- "version": "0.2.32",
3
+ "version": "0.2.34",
4
4
  "description": "Shared core infrastructure for Telora daemon and factory - resilience, API client, config, git operations",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",