@telora/daemon 0.19.26 → 0.19.28

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.
package/build-info.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
- "commitSha": "7edbba269",
3
- "builtAt": "2026-07-01T00:27:36.908Z",
2
+ "commitSha": "ca90d24f8",
3
+ "builtAt": "2026-07-01T15:53:39.318Z",
4
4
  "expectedMigrations": [
5
5
  "20250829113330_create_org_nodes_table.sql",
6
6
  "20250829113402_fix_function_security_search_path.sql",
@@ -695,6 +695,10 @@
695
695
  "20260629214737_loop_item_lock_state.sql",
696
696
  "20260629220420_loop_items_due.sql",
697
697
  "20260630073050_product_show_on_dashboard.sql",
698
- "20260630080221_agent_cfd_functions.sql"
698
+ "20260630080221_agent_cfd_functions.sql",
699
+ "20260630211018_org_scope_reality_trees.sql",
700
+ "20260630212200_reality_tree_links_product_cross_product.sql",
701
+ "20260630212829_progenitor_injection_lineage.sql",
702
+ "20260630230112_reality_trees_realtime_full_identity.sql"
699
703
  ]
700
704
  }
@@ -123,7 +123,7 @@ export declare function resolveCwdRepoPath(cfg: DaemonJson): string | null;
123
123
  /**
124
124
  * Self-heal the CLAUDE.md Telora seed block for the cwd-matching product on
125
125
  * every session open. This is the session-open analog of the daemon's
126
- * boot-time `refreshClaudeMdForProducts`: a connected repo whose daemon process
126
+ * boot-time `scaffoldProductsAtBoot`: a connected repo whose daemon process
127
127
  * is not running otherwise keeps a seed frozen at connect-time, so newly
128
128
  * shipped Telora directives never reach that workstation. The SessionStart hook
129
129
  * runs `session-state` regardless of whether the daemon process is up, so doing
@@ -234,7 +234,7 @@ export function resolveCwdRepoPath(cfg) {
234
234
  /**
235
235
  * Self-heal the CLAUDE.md Telora seed block for the cwd-matching product on
236
236
  * every session open. This is the session-open analog of the daemon's
237
- * boot-time `refreshClaudeMdForProducts`: a connected repo whose daemon process
237
+ * boot-time `scaffoldProductsAtBoot`: a connected repo whose daemon process
238
238
  * is not running otherwise keeps a seed frozen at connect-time, so newly
239
239
  * shipped Telora directives never reach that workstation. The SessionStart hook
240
240
  * runs `session-state` regardless of whether the daemon process is up, so doing
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Daemon config self-heal: prune products deleted from the backend.
3
+ *
4
+ * Registration into ~/.telora/daemon.json is asymmetric -- adding a product has
5
+ * two hot-reloading paths (telora_connector_start and telora_product create ->
6
+ * addProductToDaemonConfig() + SIGHUP), but removal has none. A product deleted
7
+ * out-of-band (SQL/UI) leaves a permanent stale entry, so every poll tick the
8
+ * focus engine iterates config.products, calls a backend that 404s, and scans a
9
+ * repoPath that may no longer exist.
10
+ *
11
+ * This module closes that gap by RECONCILIATION, not an explicit command:
12
+ * config (reality) reconciles toward the backend (intent). On each tick the
13
+ * daemon looks up every configured product; when a lookup returns a DEFINITIVE
14
+ * backend not-found (HTTP 404), that entry is removed from both the in-memory
15
+ * config.products array (poll loop stops iterating it immediately) and the
16
+ * on-disk daemon.json (rewritten 0600, all other fields preserved).
17
+ *
18
+ * SAFETY CONSTRAINT (non-negotiable): prune ONLY on a definitive not-found.
19
+ * Transient errors (network blip, 5xx, timeout, read-only mode, circuit open)
20
+ * and a merely-missing repo directory NEVER trigger removal -- a transient
21
+ * outage must not silently unregister live products. The backend not-found is
22
+ * the sole authoritative deletion signal.
23
+ *
24
+ * The disk read-merge-write mirrors the shape of the MCP-side
25
+ * addProductToDaemonConfig(); the daemon cannot import that helper (it lives in
26
+ * a separate package), so the shape is re-implemented here.
27
+ */
28
+ import type { DaemonConfig } from './types.js';
29
+ /**
30
+ * Classification of a single product lookup against the backend.
31
+ *
32
+ * - 'found' -> the product exists; keep it.
33
+ * - 'not_found' -> DEFINITIVE backend not-found (404); prune it.
34
+ * - 'transient' -> network / 5xx / timeout / read-only / circuit / anything
35
+ * that is not a definitive 404; KEEP it (safety constraint).
36
+ */
37
+ export type ProductLookupOutcome = 'found' | 'not_found' | 'transient';
38
+ export interface PruneDiskResult {
39
+ /** True when daemon.json was rewritten without the pruned entry. */
40
+ written: boolean;
41
+ /** The config file targeted (global if present, else repo-local). */
42
+ configPath: string;
43
+ /** Why the disk write was skipped (config missing / corrupt), when not written. */
44
+ reason?: string;
45
+ }
46
+ export interface ReconcileDeps {
47
+ /** Classify a configured product against the backend. */
48
+ lookupProduct(productId: string): Promise<ProductLookupOutcome>;
49
+ /** Remove the product from daemon.json on disk (read-merge-write, 0600). */
50
+ pruneFromDisk(productId: string): PruneDiskResult;
51
+ /** Emit an operator-visible log line (-> ~/.telora/daemon.log). */
52
+ log(message: string): void;
53
+ }
54
+ export interface ReconcileResult {
55
+ /** Products checked this tick. */
56
+ checked: number;
57
+ /** Ids pruned this tick (definitive not-found). */
58
+ pruned: string[];
59
+ /** Surviving product count after the tick. */
60
+ kept: number;
61
+ }
62
+ /**
63
+ * Return a copy of an existing daemon.json object with the given product ids
64
+ * removed from products[], preserving every other field (identity, engines,
65
+ * surviving products, and any operator customizations).
66
+ *
67
+ * Mirrors the normalization mergeConfig() applies on the add path: a legacy
68
+ * flat `productId` + `repoPath` pair is migrated into products[] first, then
69
+ * the flat fields are dropped so products[] is the single canonical surface.
70
+ */
71
+ export declare function removeProductsFromConfig(existing: Record<string, unknown>, removedIds: string[]): Record<string, unknown>;
72
+ /**
73
+ * Resolve the daemon.json the running daemon reads: the global
74
+ * ~/.telora/daemon.json when it exists (the daemon is launched with
75
+ * `--config <global>` in that case), else the repo-local .telora/daemon.json.
76
+ *
77
+ * Mirrors resolveDaemonPaths() in the MCP daemonConfig helper so add and remove
78
+ * target the identical file.
79
+ */
80
+ export declare function resolveDaemonConfigPath(repoPath: string): string;
81
+ /**
82
+ * Read-merge-write daemon.json removing one product entry, at mode 0600.
83
+ * Skips (never partially writes) when the config is missing or corrupt.
84
+ */
85
+ export declare function writeConfigRemovingProduct(configPath: string, productId: string): PruneDiskResult;
86
+ /**
87
+ * Look up a product by id and classify the outcome for reconciliation.
88
+ *
89
+ * Uses callApiOnce (a single attempt that BYPASSES the retry + circuit breaker)
90
+ * so a 404 resolves immediately and repeated not-found lookups never open the
91
+ * shared 'delivery' breaker. Only HTTP 404 is a definitive not-found; every
92
+ * other failure -- network error (no statusCode), 5xx, timeout, read-only-mode
93
+ * refusal (503) -- classifies as transient and keeps the product.
94
+ */
95
+ export declare function classifyProductLookup(productId: string): Promise<ProductLookupOutcome>;
96
+ /**
97
+ * Build the production dependency set for reconcileDaemonProducts. The config
98
+ * path is resolved once from the daemon's repoPath (stable for the run).
99
+ */
100
+ export declare function buildReconcileDeps(config: DaemonConfig): ReconcileDeps;
101
+ /**
102
+ * Reconcile config.products against backend reality once.
103
+ *
104
+ * For each configured product: look it up; on a DEFINITIVE not-found, remove it
105
+ * from the on-disk daemon.json and splice it out of the in-memory config.products
106
+ * array IN PLACE (so the array reference shared with the poll loop / listener /
107
+ * heartbeat sees the removal on its next cycle, and in-flight teams on surviving
108
+ * products are untouched). Any non-definitive outcome keeps the product.
109
+ *
110
+ * All fallible work is per-product isolated: a lookup or disk error for one
111
+ * product never aborts reconciliation of the others.
112
+ */
113
+ export declare function reconcileDaemonProducts(config: Pick<DaemonConfig, 'products'>, deps: ReconcileDeps): Promise<ReconcileResult>;
114
+ //# sourceMappingURL=config-reconcile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-reconcile.d.ts","sourceRoot":"","sources":["../src/config-reconcile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAO/C;;;;;;;GAOG;AACH,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,WAAW,GAAG,WAAW,CAAC;AAEvE,MAAM,WAAW,eAAe;IAC9B,oEAAoE;IACpE,OAAO,EAAE,OAAO,CAAC;IACjB,qEAAqE;IACrE,UAAU,EAAE,MAAM,CAAC;IACnB,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,yDAAyD;IACzD,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAChE,4EAA4E;IAC5E,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,CAAC;IAClD,mEAAmE;IACnE,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;CACd;AAMD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,UAAU,EAAE,MAAM,EAAE,GACnB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoBzB;AAMD;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIhE;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,eAAe,CAgBjB;AAMD;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAQ5F;AAMD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,aAAa,CAOtE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,EACtC,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,eAAe,CAAC,CA2C1B"}
@@ -0,0 +1,187 @@
1
+ /**
2
+ * Daemon config self-heal: prune products deleted from the backend.
3
+ *
4
+ * Registration into ~/.telora/daemon.json is asymmetric -- adding a product has
5
+ * two hot-reloading paths (telora_connector_start and telora_product create ->
6
+ * addProductToDaemonConfig() + SIGHUP), but removal has none. A product deleted
7
+ * out-of-band (SQL/UI) leaves a permanent stale entry, so every poll tick the
8
+ * focus engine iterates config.products, calls a backend that 404s, and scans a
9
+ * repoPath that may no longer exist.
10
+ *
11
+ * This module closes that gap by RECONCILIATION, not an explicit command:
12
+ * config (reality) reconciles toward the backend (intent). On each tick the
13
+ * daemon looks up every configured product; when a lookup returns a DEFINITIVE
14
+ * backend not-found (HTTP 404), that entry is removed from both the in-memory
15
+ * config.products array (poll loop stops iterating it immediately) and the
16
+ * on-disk daemon.json (rewritten 0600, all other fields preserved).
17
+ *
18
+ * SAFETY CONSTRAINT (non-negotiable): prune ONLY on a definitive not-found.
19
+ * Transient errors (network blip, 5xx, timeout, read-only mode, circuit open)
20
+ * and a merely-missing repo directory NEVER trigger removal -- a transient
21
+ * outage must not silently unregister live products. The backend not-found is
22
+ * the sole authoritative deletion signal.
23
+ *
24
+ * The disk read-merge-write mirrors the shape of the MCP-side
25
+ * addProductToDaemonConfig(); the daemon cannot import that helper (it lives in
26
+ * a separate package), so the shape is re-implemented here.
27
+ */
28
+ import { join } from 'node:path';
29
+ import { homedir } from 'node:os';
30
+ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
31
+ import { callApiOnce } from './queries/shared.js';
32
+ // ---------------------------------------------------------------------------
33
+ // Pure config transform (no I/O -- unit-testable)
34
+ // ---------------------------------------------------------------------------
35
+ /**
36
+ * Return a copy of an existing daemon.json object with the given product ids
37
+ * removed from products[], preserving every other field (identity, engines,
38
+ * surviving products, and any operator customizations).
39
+ *
40
+ * Mirrors the normalization mergeConfig() applies on the add path: a legacy
41
+ * flat `productId` + `repoPath` pair is migrated into products[] first, then
42
+ * the flat fields are dropped so products[] is the single canonical surface.
43
+ */
44
+ export function removeProductsFromConfig(existing, removedIds) {
45
+ const merged = { ...existing };
46
+ const removeSet = new Set(removedIds);
47
+ let products = Array.isArray(merged.products)
48
+ ? merged.products
49
+ : [];
50
+ // Migrate legacy flat productId/repoPath into products[] (add-path parity).
51
+ if (products.length === 0 && typeof merged.productId === 'string' && merged.productId) {
52
+ const legacyRepoPath = typeof merged.repoPath === 'string' ? merged.repoPath : '';
53
+ products = [{ id: merged.productId, repoPath: legacyRepoPath }];
54
+ }
55
+ // Deprecated flat fields are never resurrected: products[] is canonical.
56
+ delete merged.productId;
57
+ delete merged.repoPath;
58
+ merged.products = products.filter((p) => !removeSet.has(p.id));
59
+ return merged;
60
+ }
61
+ // ---------------------------------------------------------------------------
62
+ // Config-path resolution + disk write (I/O)
63
+ // ---------------------------------------------------------------------------
64
+ /**
65
+ * Resolve the daemon.json the running daemon reads: the global
66
+ * ~/.telora/daemon.json when it exists (the daemon is launched with
67
+ * `--config <global>` in that case), else the repo-local .telora/daemon.json.
68
+ *
69
+ * Mirrors resolveDaemonPaths() in the MCP daemonConfig helper so add and remove
70
+ * target the identical file.
71
+ */
72
+ export function resolveDaemonConfigPath(repoPath) {
73
+ const globalPath = join(homedir(), '.telora', 'daemon.json');
74
+ if (existsSync(globalPath))
75
+ return globalPath;
76
+ return join(repoPath, '.telora', 'daemon.json');
77
+ }
78
+ /**
79
+ * Read-merge-write daemon.json removing one product entry, at mode 0600.
80
+ * Skips (never partially writes) when the config is missing or corrupt.
81
+ */
82
+ export function writeConfigRemovingProduct(configPath, productId) {
83
+ if (!existsSync(configPath)) {
84
+ return { written: false, configPath, reason: 'no_config' };
85
+ }
86
+ let existing;
87
+ try {
88
+ existing = JSON.parse(readFileSync(configPath, 'utf-8'));
89
+ }
90
+ catch {
91
+ // Corrupt config: do not silently overwrite. In-memory prune still happens.
92
+ return { written: false, configPath, reason: 'corrupt_config' };
93
+ }
94
+ const merged = removeProductsFromConfig(existing, [productId]);
95
+ writeFileSync(configPath, JSON.stringify(merged, null, 2) + '\n', { mode: 0o600 });
96
+ return { written: true, configPath };
97
+ }
98
+ // ---------------------------------------------------------------------------
99
+ // Backend lookup classification (I/O)
100
+ // ---------------------------------------------------------------------------
101
+ /**
102
+ * Look up a product by id and classify the outcome for reconciliation.
103
+ *
104
+ * Uses callApiOnce (a single attempt that BYPASSES the retry + circuit breaker)
105
+ * so a 404 resolves immediately and repeated not-found lookups never open the
106
+ * shared 'delivery' breaker. Only HTTP 404 is a definitive not-found; every
107
+ * other failure -- network error (no statusCode), 5xx, timeout, read-only-mode
108
+ * refusal (503) -- classifies as transient and keeps the product.
109
+ */
110
+ export async function classifyProductLookup(productId) {
111
+ try {
112
+ await callApiOnce('get', { productId });
113
+ return 'found';
114
+ }
115
+ catch (err) {
116
+ const statusCode = err.statusCode;
117
+ return statusCode === 404 ? 'not_found' : 'transient';
118
+ }
119
+ }
120
+ // ---------------------------------------------------------------------------
121
+ // Orchestrator
122
+ // ---------------------------------------------------------------------------
123
+ /**
124
+ * Build the production dependency set for reconcileDaemonProducts. The config
125
+ * path is resolved once from the daemon's repoPath (stable for the run).
126
+ */
127
+ export function buildReconcileDeps(config) {
128
+ const configPath = resolveDaemonConfigPath(config.repoPath);
129
+ return {
130
+ lookupProduct: (productId) => classifyProductLookup(productId),
131
+ pruneFromDisk: (productId) => writeConfigRemovingProduct(configPath, productId),
132
+ log: (message) => console.warn(message),
133
+ };
134
+ }
135
+ /**
136
+ * Reconcile config.products against backend reality once.
137
+ *
138
+ * For each configured product: look it up; on a DEFINITIVE not-found, remove it
139
+ * from the on-disk daemon.json and splice it out of the in-memory config.products
140
+ * array IN PLACE (so the array reference shared with the poll loop / listener /
141
+ * heartbeat sees the removal on its next cycle, and in-flight teams on surviving
142
+ * products are untouched). Any non-definitive outcome keeps the product.
143
+ *
144
+ * All fallible work is per-product isolated: a lookup or disk error for one
145
+ * product never aborts reconciliation of the others.
146
+ */
147
+ export async function reconcileDaemonProducts(config, deps) {
148
+ // Snapshot the entries to check so mutating config.products mid-loop is safe.
149
+ const toCheck = [...config.products];
150
+ const pruned = [];
151
+ for (const product of toCheck) {
152
+ let outcome;
153
+ try {
154
+ outcome = await deps.lookupProduct(product.id);
155
+ }
156
+ catch {
157
+ // Defensive: an unexpected throw is treated as transient -> keep.
158
+ outcome = 'transient';
159
+ }
160
+ // Safety constraint: prune ONLY on a definitive backend not-found.
161
+ if (outcome !== 'not_found')
162
+ continue;
163
+ let disk;
164
+ try {
165
+ disk = deps.pruneFromDisk(product.id);
166
+ }
167
+ catch (err) {
168
+ disk = {
169
+ written: false,
170
+ configPath: 'unknown',
171
+ reason: err instanceof Error ? err.message : String(err),
172
+ };
173
+ }
174
+ // In-memory self-heal: splice in place to preserve the shared array ref.
175
+ const idx = config.products.findIndex((p) => p.id === product.id);
176
+ if (idx >= 0)
177
+ config.products.splice(idx, 1);
178
+ pruned.push(product.id);
179
+ deps.log(`[config-reconcile] pruned product ${product.id} (repoPath: ${product.repoPath}) ` +
180
+ '-- backend returned not-found; ' +
181
+ (disk.written
182
+ ? `removed from ${disk.configPath}`
183
+ : `on-disk write skipped (${disk.reason ?? 'unknown'}); in-memory only`));
184
+ }
185
+ return { checked: toCheck.length, pruned, kept: config.products.length };
186
+ }
187
+ //# sourceMappingURL=config-reconcile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-reconcile.js","sourceRoot":"","sources":["../src/config-reconcile.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"focus-engine.d.ts","sourceRoot":"","sources":["../src/focus-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,aAAa,EACb,UAAU,EACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAA2B,gBAAgB,EAAmD,MAAM,qBAAqB,CAAC;AA6DjI;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,EAClB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAOT;AAMD,qBAAa,WAAY,YAAW,eAAe;IACjD,QAAQ,CAAC,IAAI,WAAW;IAExB,wCAAwC;IACxC,OAAO,CAAC,MAAM,CAA6B;IAE3C,kEAAkE;IAClE,OAAO,CAAC,QAAQ,CAAiC;IAEjD,sEAAsE;IACtE,OAAO,CAAC,SAAS,CAAwC;IAEzD,8EAA8E;IAC9E,OAAO,CAAC,qBAAqB,CAA6B;IAE1D;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI;IAUlC,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAkEjE,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAsEjC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAqVd,aAAa;YA8Bb,wBAAwB;IA+BtC,IAAI,IAAI,IAAI;IAeN,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IA2G/B,WAAW,IAAI,YAAY;IA0D3B,gBAAgB,IAAI,aAAa;IAwBjC;;;OAGG;IACH,OAAO,CAAC,aAAa;CAStB"}
1
+ {"version":3,"file":"focus-engine.d.ts","sourceRoot":"","sources":["../src/focus-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,aAAa,EACb,UAAU,EACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAA2B,gBAAgB,EAAmD,MAAM,qBAAqB,CAAC;AA8DjI;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,EAClB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAOT;AAMD,qBAAa,WAAY,YAAW,eAAe;IACjD,QAAQ,CAAC,IAAI,WAAW;IAExB,wCAAwC;IACxC,OAAO,CAAC,MAAM,CAA6B;IAE3C,kEAAkE;IAClE,OAAO,CAAC,QAAQ,CAAiC;IAEjD,sEAAsE;IACtE,OAAO,CAAC,SAAS,CAAwC;IAEzD,8EAA8E;IAC9E,OAAO,CAAC,qBAAqB,CAA6B;IAE1D;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI;IAUlC,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAkEjE,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAsEjC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAmXd,aAAa;YA8Bb,wBAAwB;IA+BtC,IAAI,IAAI,IAAI;IAeN,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IA2G/B,WAAW,IAAI,YAAY;IA0D3B,gBAAgB,IAAI,aAAa;IAwBjC;;;OAGG;IACH,OAAO,CAAC,aAAa;CAStB"}
@@ -43,6 +43,7 @@ import { runCascadeProseTick, runNegativeBranchTick } from './cascade-restatemen
43
43
  import { runPrdControllerTickAll } from './prd-controller.js';
44
44
  import { runMergeBackTick } from './merge-back-loop.js';
45
45
  import { runDriftEvalTick, runPendingDriftEvalRequestsTick } from './drift-eval-loop.js';
46
+ import { reconcileDaemonProducts, buildReconcileDeps } from './config-reconcile.js';
46
47
  import { buildDefaultSecurityScanDeps, registerScanner, runSecurityScanTick, } from './security-scan-engine.js';
47
48
  import { depsScanner } from './scanners/deps.js';
48
49
  import { signaturesScanner } from './scanners/signatures.js';
@@ -487,6 +488,33 @@ export class FocusEngine {
487
488
  else {
488
489
  console.log('Security scan loop tick: disabled (TELORA_SECURITY_SCAN_LOOP=0)');
489
490
  }
491
+ // Config self-heal: prune products deleted from the backend (60s).
492
+ // Reconciles config.products against backend reality -- a product that a
493
+ // definitive backend lookup reports as not-found (404) is removed from both
494
+ // the in-memory config.products array and the on-disk daemon.json, so the
495
+ // daemon stops iterating a product that no longer exists. Prunes ONLY on a
496
+ // definitive not-found; transient errors and a missing repo directory never
497
+ // trigger removal (see config-reconcile.ts). Opt-out via
498
+ // TELORA_CONFIG_RECONCILE_LOOP=0; default ON.
499
+ if (shouldRunLoop('TELORA_CONFIG_RECONCILE_LOOP')) {
500
+ console.log('Config-reconcile loop tick: enabled (set TELORA_CONFIG_RECONCILE_LOOP=0 to disable)');
501
+ const reconcileDeps = buildReconcileDeps(config);
502
+ this.intervals.push(safeInterval(async () => {
503
+ try {
504
+ const result = await reconcileDaemonProducts(config, reconcileDeps);
505
+ if (result.pruned.length > 0) {
506
+ console.log(`[config-reconcile] tick: checked=${result.checked} pruned=${result.pruned.length} ` +
507
+ `(${result.pruned.join(', ')}) kept=${result.kept}`);
508
+ }
509
+ }
510
+ catch (err) {
511
+ console.warn('[config-reconcile] tick failed:', err.message);
512
+ }
513
+ }, 60_000, 'config-reconcile'));
514
+ }
515
+ else {
516
+ console.log('Config-reconcile loop tick: disabled (TELORA_CONFIG_RECONCILE_LOOP=0)');
517
+ }
490
518
  console.log('Focus engine started');
491
519
  }
492
520
  // -----------------------------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"file":"focus-engine.js","sourceRoot":"","sources":["../src/focus-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"focus-engine.js","sourceRoot":"","sources":["../src/focus-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Product directory self-heal / bootstrap.
3
+ *
4
+ * ONE idempotent scaffolder that makes a registered product's directory a
5
+ * functioning Telora workspace, called from BOTH the daemon boot path and the
6
+ * SIGHUP hot-reload handler (scoped to newly-added products). It:
7
+ *
8
+ * 1. Ensures the product's directory exists.
9
+ * 2. Self-heals the canonical CLAUDE.md via `writeOrMergeClaudeMd` (the same
10
+ * idempotent writer `connect` and the boot CLAUDE.md refresh use -- no
11
+ * template duplication).
12
+ * 3. When the directory has NO git repo: `git init`, writes `.gitignore`
13
+ * (reusing `ensureGitignoreEntries`), makes an initial commit, and creates
14
+ * the integration branch from `config.integrationBranch` -- so the focus
15
+ * engine can immediately create the branches and worktrees it needs.
16
+ *
17
+ * Idempotent by construction: `writeOrMergeClaudeMd` no-ops when the seed block
18
+ * is already current, and every git step is guarded on `.git` existence /
19
+ * branch existence, so re-running produces no changes and no errors. It never
20
+ * clobbers an existing repo or files -- git-init runs ONLY when there is no
21
+ * `.git`, and the initial commit only adds what is already in the directory.
22
+ *
23
+ * All effects are per-product best-effort: a failure on one product is logged
24
+ * and swallowed so it never aborts the daemon or the other products' scaffold.
25
+ *
26
+ * Interaction with starter genesis (git-genesis.ts): this scaffolder writes a
27
+ * plain initial commit for an EMPTY, repo-less directory. For products that
28
+ * carry a repo already (the common case) the git-init step is a no-op, so
29
+ * `initGit`/`ensureInitialCommit` still own the starter-genesis seeding path.
30
+ * A brand-new empty directory scaffolded here is committed eagerly (immediate
31
+ * worktree-readiness is this focus's stated priority) rather than deferred for
32
+ * a pending starter-selecting PRD -- if starter-genesis coexistence on the
33
+ * scaffold path is later required, route this initial commit through
34
+ * `ensureInitialCommit` (which encodes the defer-rather-than-foreclose rule).
35
+ */
36
+ import type { ProductEntry } from '@telora/daemon-core';
37
+ import { type ConnectIO } from './cli/connect.js';
38
+ /** The narrow config the scaffolder reads. A full `DaemonConfig` satisfies it. */
39
+ export interface ScaffoldConfig {
40
+ /** Integration branch name to create for a freshly git-inited directory. */
41
+ integrationBranch: string;
42
+ }
43
+ /** Commit message for the scaffolder's initial commit on a fresh directory. */
44
+ export declare const SCAFFOLD_INITIAL_COMMIT_MESSAGE = "chore: scaffold Telora product directory";
45
+ /**
46
+ * Self-heal / bootstrap a single product's directory. Idempotent and
47
+ * best-effort (never throws). No-ops when the product declares no repoPath.
48
+ *
49
+ * @param product The product entry (repoPath is the directory to scaffold).
50
+ * @param config Carries the integration branch name for git-init.
51
+ * @param io Output sink (defaults to process stdout/stderr).
52
+ */
53
+ export declare function scaffoldProductDirectory(product: ProductEntry, config: ScaffoldConfig, io?: ConnectIO): void;
54
+ //# sourceMappingURL=product-scaffold.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product-scaffold.d.ts","sourceRoot":"","sources":["../src/product-scaffold.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,EAGL,KAAK,SAAS,EACf,MAAM,kBAAkB,CAAC;AAE1B,kFAAkF;AAClF,MAAM,WAAW,cAAc;IAC7B,4EAA4E;IAC5E,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,+EAA+E;AAC/E,eAAO,MAAM,+BAA+B,6CACA,CAAC;AA8E7C;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,cAAc,EACtB,EAAE,GAAE,SAA+B,GAClC,IAAI,CA0BN"}