@telora/daemon 0.20.21 → 0.20.32

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.
Files changed (115) hide show
  1. package/build-info.json +4 -3
  2. package/dist/audit-phase.d.ts +43 -6
  3. package/dist/audit-phase.d.ts.map +1 -1
  4. package/dist/audit-phase.js +124 -23
  5. package/dist/audit-phase.js.map +1 -1
  6. package/dist/auto-update.d.ts +87 -0
  7. package/dist/auto-update.d.ts.map +1 -1
  8. package/dist/auto-update.js +142 -8
  9. package/dist/auto-update.js.map +1 -1
  10. package/dist/cascade-restatement.d.ts +13 -147
  11. package/dist/cascade-restatement.d.ts.map +1 -1
  12. package/dist/cascade-restatement.js +13 -429
  13. package/dist/cascade-restatement.js.map +1 -1
  14. package/dist/focus-engine.d.ts.map +1 -1
  15. package/dist/focus-engine.js +15 -0
  16. package/dist/focus-engine.js.map +1 -1
  17. package/dist/focus-loop-registry.d.ts.map +1 -1
  18. package/dist/focus-loop-registry.js +43 -90
  19. package/dist/focus-loop-registry.js.map +1 -1
  20. package/dist/focus-loop.d.ts +0 -2
  21. package/dist/focus-loop.d.ts.map +1 -1
  22. package/dist/focus-loop.js +33 -25
  23. package/dist/focus-loop.js.map +1 -1
  24. package/dist/focus-phase.d.ts +26 -0
  25. package/dist/focus-phase.d.ts.map +1 -1
  26. package/dist/focus-phase.js +38 -0
  27. package/dist/focus-phase.js.map +1 -1
  28. package/dist/focus-prompt-builder.d.ts.map +1 -1
  29. package/dist/focus-prompt-builder.js +5 -1
  30. package/dist/focus-prompt-builder.js.map +1 -1
  31. package/dist/listener.d.ts.map +1 -1
  32. package/dist/listener.js +40 -9
  33. package/dist/listener.js.map +1 -1
  34. package/dist/loops/llm-client.d.ts.map +1 -1
  35. package/dist/loops/llm-client.js +17 -4
  36. package/dist/loops/llm-client.js.map +1 -1
  37. package/dist/prompt-listing.d.ts +25 -0
  38. package/dist/prompt-listing.d.ts.map +1 -1
  39. package/dist/prompt-listing.js +61 -0
  40. package/dist/prompt-listing.js.map +1 -1
  41. package/dist/queries/audit-runs.d.ts +56 -2
  42. package/dist/queries/audit-runs.d.ts.map +1 -1
  43. package/dist/queries/audit-runs.js +40 -0
  44. package/dist/queries/audit-runs.js.map +1 -1
  45. package/dist/queries/deliveries.d.ts +27 -0
  46. package/dist/queries/deliveries.d.ts.map +1 -1
  47. package/dist/queries/deliveries.js.map +1 -1
  48. package/dist/queries/focuses.d.ts +0 -9
  49. package/dist/queries/focuses.d.ts.map +1 -1
  50. package/dist/queries/focuses.js +0 -14
  51. package/dist/queries/focuses.js.map +1 -1
  52. package/dist/resolvers/index.d.ts +1 -1
  53. package/dist/resolvers/index.d.ts.map +1 -1
  54. package/dist/resolvers/index.js +1 -1
  55. package/dist/resolvers/index.js.map +1 -1
  56. package/dist/resolvers/shared/audit.d.ts +5 -0
  57. package/dist/resolvers/shared/audit.d.ts.map +1 -1
  58. package/dist/resolvers/shared/audit.js +8 -3
  59. package/dist/resolvers/shared/audit.js.map +1 -1
  60. package/dist/resolvers/shared/git-diff.d.ts +13 -0
  61. package/dist/resolvers/shared/git-diff.d.ts.map +1 -1
  62. package/dist/resolvers/shared/git-diff.js +30 -0
  63. package/dist/resolvers/shared/git-diff.js.map +1 -1
  64. package/dist/security-scan-engine.d.ts +9 -1
  65. package/dist/security-scan-engine.d.ts.map +1 -1
  66. package/dist/security-scan-engine.js +25 -2
  67. package/dist/security-scan-engine.js.map +1 -1
  68. package/dist/spawn/review-role-fallback.d.ts +74 -0
  69. package/dist/spawn/review-role-fallback.d.ts.map +1 -0
  70. package/dist/spawn/review-role-fallback.js +62 -0
  71. package/dist/spawn/review-role-fallback.js.map +1 -0
  72. package/dist/staleness-sensor.d.ts +153 -0
  73. package/dist/staleness-sensor.d.ts.map +1 -0
  74. package/dist/staleness-sensor.js +308 -0
  75. package/dist/staleness-sensor.js.map +1 -0
  76. package/dist/unified-shell.d.ts.map +1 -1
  77. package/dist/unified-shell.js +11 -0
  78. package/dist/unified-shell.js.map +1 -1
  79. package/dist/verification-engine.d.ts +17 -1
  80. package/dist/verification-engine.d.ts.map +1 -1
  81. package/dist/verification-engine.js +143 -104
  82. package/dist/verification-engine.js.map +1 -1
  83. package/dist/verification-feedback.d.ts +68 -1
  84. package/dist/verification-feedback.d.ts.map +1 -1
  85. package/dist/verification-feedback.js +175 -0
  86. package/dist/verification-feedback.js.map +1 -1
  87. package/dist/verify-reconciliation.d.ts +16 -1
  88. package/dist/verify-reconciliation.d.ts.map +1 -1
  89. package/dist/verify-reconciliation.js +18 -2
  90. package/dist/verify-reconciliation.js.map +1 -1
  91. package/dist/verify-restatement.d.ts +7 -0
  92. package/dist/verify-restatement.d.ts.map +1 -1
  93. package/dist/verify-restatement.js +1 -0
  94. package/dist/verify-restatement.js.map +1 -1
  95. package/dist/version-check.d.ts +6 -0
  96. package/dist/version-check.d.ts.map +1 -1
  97. package/dist/version-check.js +1 -1
  98. package/dist/version-check.js.map +1 -1
  99. package/package.json +2 -2
  100. package/dist/drift-ratify-loop.d.ts +0 -68
  101. package/dist/drift-ratify-loop.d.ts.map +0 -1
  102. package/dist/drift-ratify-loop.js +0 -161
  103. package/dist/drift-ratify-loop.js.map +0 -1
  104. package/dist/negative-branch.d.ts +0 -136
  105. package/dist/negative-branch.d.ts.map +0 -1
  106. package/dist/negative-branch.js +0 -241
  107. package/dist/negative-branch.js.map +0 -1
  108. package/dist/shortfall-disposition-config.d.ts +0 -34
  109. package/dist/shortfall-disposition-config.d.ts.map +0 -1
  110. package/dist/shortfall-disposition-config.js +0 -46
  111. package/dist/shortfall-disposition-config.js.map +0 -1
  112. package/dist/shortfall-disposition-loop.d.ts +0 -86
  113. package/dist/shortfall-disposition-loop.d.ts.map +0 -1
  114. package/dist/shortfall-disposition-loop.js +0 -309
  115. package/dist/shortfall-disposition-loop.js.map +0 -1
@@ -27,6 +27,117 @@ export const EXIT_CODE_UPDATE = 75;
27
27
  * traffic is unaffected (the candidate version comes from the warm cache).
28
28
  */
29
29
  export const DEFAULT_SAMPLE_INTERVAL_MS = 30_000;
30
+ /**
31
+ * Steady-state heartbeat for the default decision-logging sink. In the common
32
+ * "checked and current" / "candidate pending" states the sink suppresses
33
+ * duplicate consecutive lines, but re-emits at least this often so that an
34
+ * ABSENT trace positively identifies a controller that is NOT running (the
35
+ * invisibility this module exists to close: a 7-version gap survived 198h
36
+ * precisely because ran-and-found-nothing looked identical to never-ran).
37
+ * With ~30s sampling, a 1h heartbeat caps steady-state log volume at ~24
38
+ * lines/day while making any >1h silence diagnostic.
39
+ */
40
+ export const DEFAULT_DECISION_HEARTBEAT_MS = 3_600_000;
41
+ /**
42
+ * Render a decision into a loggable line. Exhaustive over {@link UpdateDecision}
43
+ * (the trailing `never` assignment fails the build if a case is added without a
44
+ * message). All lines share the `[auto-update]` prefix so the trace is greppable
45
+ * and assertable.
46
+ */
47
+ export function describeUpdateDecision(decision, currentVersion) {
48
+ switch (decision.kind) {
49
+ case 'current':
50
+ return {
51
+ level: 'info',
52
+ steady: true,
53
+ signature: 'current',
54
+ message: `[auto-update] Checked: up to date (v${currentVersion}); no newer version available`,
55
+ };
56
+ case 'candidate-pending':
57
+ return {
58
+ level: 'info',
59
+ steady: true,
60
+ signature: `pending:${decision.reason}:${decision.candidate}`,
61
+ message: decision.reason === 'busy'
62
+ ? `[auto-update] Candidate v${decision.candidate} available but daemon busy; waiting for a safe seam (current v${currentVersion})`
63
+ : `[auto-update] Candidate v${decision.candidate} available and idle; awaiting rising idle edge (current v${currentVersion})`,
64
+ };
65
+ case 'drain-armed':
66
+ return {
67
+ level: 'info',
68
+ steady: false,
69
+ signature: `drain-armed:${decision.candidate}`,
70
+ message: `[auto-update] Drain armed to create a safe seam for v${decision.candidate} (current v${currentVersion})`,
71
+ };
72
+ case 'applying':
73
+ return {
74
+ level: 'info',
75
+ steady: false,
76
+ signature: `applying:${decision.trigger}:${decision.candidate}`,
77
+ message: decision.trigger === 'urgent'
78
+ ? `[auto-update] URGENT signal set -- applying update v${decision.candidate} mid-batch, preempting in-flight work (current v${currentVersion})`
79
+ : `[auto-update] Batch-safe idle seam reached; applying update v${decision.candidate} (current v${currentVersion})`,
80
+ };
81
+ case 'applied':
82
+ return {
83
+ level: 'info',
84
+ steady: false,
85
+ signature: `applied:${decision.candidate}`,
86
+ message: `[auto-update] Update to v${decision.candidate} installed; signaling restart (exit ${EXIT_CODE_UPDATE})`,
87
+ };
88
+ case 'failed':
89
+ return {
90
+ level: 'warn',
91
+ steady: false,
92
+ signature: `failed:${decision.trigger}:${decision.candidate}`,
93
+ message: decision.trigger === 'urgent'
94
+ ? `[auto-update] Urgent install of v${decision.candidate} FAILED: ${decision.error}; will retry next tick`
95
+ : `[auto-update] Install of v${decision.candidate} FAILED at idle seam: ${decision.error}; will retry on the next idle edge`,
96
+ };
97
+ case 'error':
98
+ return {
99
+ level: 'warn',
100
+ steady: false,
101
+ signature: 'error',
102
+ message: `[auto-update] Unexpected error: ${decision.error}`,
103
+ };
104
+ default: {
105
+ const _exhaustive = decision;
106
+ return _exhaustive;
107
+ }
108
+ }
109
+ }
110
+ /**
111
+ * Build the default {@link AutoUpdateDeps.onDecision} sink: it logs every
112
+ * actionable decision immediately (loud on failure), and throttles the
113
+ * recurring steady-state decisions to at most one line per heartbeat window so
114
+ * the log stays readable without ever going fully silent while the controller
115
+ * runs.
116
+ */
117
+ export function createLoggingDecisionSink(opts) {
118
+ const { logger, currentVersion, heartbeatMs = DEFAULT_DECISION_HEARTBEAT_MS, now = Date.now } = opts;
119
+ let lastSteadySignature = null;
120
+ let lastSteadyLoggedAt = Number.NEGATIVE_INFINITY;
121
+ return (decision) => {
122
+ const described = describeUpdateDecision(decision, currentVersion);
123
+ if (described.steady) {
124
+ const heartbeatDue = now() - lastSteadyLoggedAt >= heartbeatMs;
125
+ if (described.signature === lastSteadySignature && !heartbeatDue)
126
+ return;
127
+ lastSteadySignature = described.signature;
128
+ lastSteadyLoggedAt = now();
129
+ }
130
+ else {
131
+ // An actionable event breaks the steady-state run; the next steady tick
132
+ // re-logs its current state rather than being suppressed as a duplicate.
133
+ lastSteadySignature = null;
134
+ }
135
+ if (described.level === 'warn')
136
+ logger.warn(described.message);
137
+ else
138
+ logger.info(described.message);
139
+ };
140
+ }
30
141
  /**
31
142
  * Run `npm install -g <package>@latest` as a child process.
32
143
  * Returns true on success, false on failure.
@@ -64,7 +175,12 @@ export function performSelfUpdate(packageName) {
64
175
  * re-arms only when the daemon leaves and re-enters the ready state.
65
176
  */
66
177
  export function createUpdateController(deps) {
67
- const { currentVersion, packageName = '@telora/daemon', isIdle, getCachedCandidateVersion, onUpdateReady, performUpdate = performSelfUpdate, now = Date.now, stalenessThresholdMs = Number.POSITIVE_INFINITY, armDrain = armDrainForUpdate, releaseDrain = releaseDrainForUpdate, isUrgent = () => false, } = deps;
178
+ const { currentVersion, packageName = '@telora/daemon', isIdle, getCachedCandidateVersion, onUpdateReady, performUpdate = performSelfUpdate, now = Date.now, stalenessThresholdMs = Number.POSITIVE_INFINITY, armDrain = armDrainForUpdate, releaseDrain = releaseDrainForUpdate, isUrgent = () => false, decisionHeartbeatMs = DEFAULT_DECISION_HEARTBEAT_MS, onDecision, } = deps;
179
+ // Observability sink: every tick emits exactly one classified decision here.
180
+ // Default logs (heartbeat-throttled) so activity is never fully silent; tests
181
+ // inject their own sink to assert the decision contract.
182
+ const emit = onDecision ??
183
+ createLoggingDecisionSink({ logger: log, currentVersion, heartbeatMs: decisionHeartbeatMs, now });
68
184
  // True while the "ready to update" condition (idle + newer version) held on
69
185
  // the previous tick. The controller acts only on the false->true transition.
70
186
  let wasReady = false;
@@ -103,13 +219,15 @@ export function createUpdateController(deps) {
103
219
  // interrupt an in-flight batch, and it is NEVER the loop's own decision.
104
220
  // Absent the signal, behavior is exactly deliveries A-C.
105
221
  if (haveNewer && isUrgent()) {
106
- log.info(`[auto-update] URGENT signal set -- applying update v${candidate} mid-batch, ` +
107
- `preempting in-flight work (current v${currentVersion})`);
222
+ // candidate is non-null here (haveNewer implies it).
223
+ const target = candidate;
224
+ emit({ kind: 'applying', candidate: target, trigger: 'urgent' });
108
225
  const ok = await performUpdate(packageName);
109
226
  if (!ok) {
110
- log.warn('Urgent install failed; will retry next tick');
227
+ emit({ kind: 'failed', candidate: target, trigger: 'urgent', error: 'npm install did not succeed' });
111
228
  return;
112
229
  }
230
+ emit({ kind: 'applied', candidate: target });
113
231
  onUpdateReady();
114
232
  return;
115
233
  }
@@ -124,24 +242,40 @@ export function createUpdateController(deps) {
124
242
  !idleNow &&
125
243
  now() - pendingSince >= stalenessThresholdMs) {
126
244
  armDrain();
245
+ emit({ kind: 'drain-armed', candidate: candidate });
127
246
  }
128
247
  const ready = idleNow && haveNewer;
129
248
  const risingEdge = ready && !wasReady;
130
249
  wasReady = ready;
131
- if (!risingEdge)
250
+ if (!risingEdge) {
251
+ // No install this tick -- still emit the classified steady state so the
252
+ // controller's liveness is observable (silence never means "not run").
253
+ if (!haveNewer) {
254
+ emit({ kind: 'current' });
255
+ }
256
+ else {
257
+ emit({
258
+ kind: 'candidate-pending',
259
+ candidate: candidate,
260
+ reason: idleNow ? 'awaiting-idle-edge' : 'busy',
261
+ });
262
+ }
132
263
  return;
133
- log.info(`[auto-update] Batch-safe idle seam reached; applying update v${candidate} (current v${currentVersion})`);
264
+ }
265
+ const target = candidate;
266
+ emit({ kind: 'applying', candidate: target, trigger: 'idle-seam' });
134
267
  const ok = await performUpdate(packageName);
135
268
  if (!ok) {
136
269
  // Consume the edge: do not retry until the daemon leaves and re-enters
137
270
  // the ready state, so a persistent install failure cannot spam npm.
138
- log.warn('Install failed; will retry on the next idle edge');
271
+ emit({ kind: 'failed', candidate: target, trigger: 'idle-seam', error: 'npm install did not succeed' });
139
272
  return;
140
273
  }
274
+ emit({ kind: 'applied', candidate: target });
141
275
  onUpdateReady();
142
276
  }
143
277
  catch (err) {
144
- log.warn(`[auto-update] Unexpected error: ${err instanceof Error ? err.message : String(err)}`);
278
+ emit({ kind: 'error', error: err instanceof Error ? err.message : String(err) });
145
279
  }
146
280
  }
147
281
  return { tick };
@@ -1 +1 @@
1
- {"version":3,"file":"auto-update.js","sourceRoot":"","sources":["../src/auto-update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auto-update.js","sourceRoot":"","sources":["../src/auto-update.ts"],"names":[],"mappings":"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"}
@@ -1,156 +1,22 @@
1
1
  /**
2
- * Eager FRT-cascade desired-effect restatement authoring.
2
+ * Shared FRT-restatement type aliases.
3
3
  *
4
- * DRAFT-ASSIST BACKSTOP -- NOT THE SOURCE OF TRUTH. The declared desired
5
- * effect, authored as intent at injection time via the `target` action, is the
6
- * source of truth. This loop is an optional backstop that authors prose ONLY
7
- * when a declared desired effect is absent (the node's `frt_statement` is
8
- * blank); it NEVER overwrites a non-blank `frt_statement`. Everything it writes
9
- * is MARKED as a machine draft (`frt_statement_drafted=true`) so a declared
10
- * intent of record is always distinguishable from loop-generated draft prose.
4
+ * HISTORY. This module used to host two standing timer ticks:
5
+ * - `runCascadeProseTick` -- eager FRT cascade-prose reconciliation, and
6
+ * - `runNegativeBranchTick` -- periodic negative-branch reservation generation.
7
+ * Both were RETIRED with the continuous drift-reconciliation layer (drift is no
8
+ * longer reconciled on a calendar). Per-injection FRT prose is authored at the
9
+ * verify event (`verify-restatement.ts`), not on a timer, so the eager backstop
10
+ * was redundant; the negative-branch generator was the un-deduped source of the
11
+ * duplicate-proposal pile and had no other consumer.
11
12
  *
12
- * When an injection flips a UDE, the derived-FRT engine marks not just the
13
- * directly-targeted UDE as resolved but the FULL downstream consequence
14
- * cascade (every UDE the flip propagates through). Today the verify-time path
15
- * (`verify-restatement.ts`) only authors prose for the directly-targeted
16
- * nodes, and only at verify -- so flipped downstream consequences keep reading
17
- * as present-tense problems until (and unless) they are themselves a verify
18
- * target.
19
- *
20
- * This module closes that gap. It authors future-state desired-effect prose
21
- * (`frt_statement`) EAGERLY across the whole resolved cascade -- the targeted
22
- * UDE plus every downstream resolved consequence -- in future tense, while the
23
- * CRT base statement stays untouched until verify. It is the "daemon
24
- * reconciliation backstop" the targetInjection edge comment promises.
25
- *
26
- * Reuses the de-restatement prose helper (`authorRestatement`) -- it does NOT
27
- * duplicate the prompt/model logic -- and the server-side derive-FRT action
28
- * (`reality_tree_derive_frt`, Delivery A) which returns the engine's derived
29
- * cascade. Overlay-only: only `frt_statement` is written; node_type and the
30
- * base statement are left untouched.
31
- *
32
- * Idempotent at the prose level: a cascade node that already carries a
33
- * positive `frt_statement` is skipped (`needsRestatement` is false), so the
34
- * per-tick scan does not churn already-authored trees.
13
+ * What remains are the two shared type aliases the retire-aware restatement path
14
+ * and the backfill CLI still import (`CallApiFn`, `AuthorRestatementFn`). They
15
+ * live here so those importers keep a stable specifier.
35
16
  *
36
17
  * @module cascade-restatement
37
18
  */
38
- import { type RestatementInputs, type RestatementOptions } from './de-restatement.js';
39
- import { proposeNegativeBranchesForInjection as defaultProposeNegativeBranches, type ProposeNegativeBranchesDeps, type ProposeNegativeBranchesResult } from './negative-branch.js';
40
- import { authorRetiredInjectionRestatements as defaultAuthorRetiredInjectionRestatements } from './retire-aware-restatement.js';
41
- import { getActiveFocuses } from './queries/deliveries.js';
42
- import type { DaemonConfig } from './types.js';
19
+ import type { RestatementInputs, RestatementOptions } from './de-restatement.js';
43
20
  export type CallApiFn = <T>(action: string, params?: Record<string, unknown>) => Promise<T>;
44
21
  export type AuthorRestatementFn = (inputs: RestatementInputs, opts?: RestatementOptions) => Promise<string>;
45
- /** One FRT-visible node as returned by the derive-FRT action (Delivery A). */
46
- export interface DerivedFrtNode {
47
- id: string;
48
- seq: number;
49
- derivedNodeType: 'entity' | 'undesired_effect' | 'desired_effect' | 'injection';
50
- resolved: boolean;
51
- statement: string;
52
- frtStatement: string | null;
53
- }
54
- /** Shape of the `reality_tree_derive_frt` server action response (Delivery A). */
55
- export interface DeriveFrtResponse {
56
- treeId: string;
57
- clearedNodeIds: string[];
58
- flippedNodeIds: string[];
59
- nodes: DerivedFrtNode[];
60
- }
61
- export interface AuthorCascadeRestatementsDeps {
62
- callApi?: CallApiFn;
63
- authorRestatement?: AuthorRestatementFn;
64
- }
65
- /**
66
- * Author injection-conditioned desired-effect prose across the FULL resolved
67
- * cascade of a tree (the targeted UDE plus every downstream resolved
68
- * consequence), eagerly.
69
- *
70
- * For each flipped/resolved node that still needs prose, authors one positive
71
- * future-state sentence conditioned on the tree's active injection statements,
72
- * then writes it to `frt_statement` via `reality_tree_node_update` (which
73
- * leaves node_type and the base statement untouched).
74
- *
75
- * Best-effort per node: a per-node author-or-write failure is swallowed (that
76
- * node is recorded as skipped) so one failure never aborts the cascade.
77
- *
78
- * Idempotent: a node whose `frt_statement` is already a positive sentence is
79
- * skipped, not re-authored.
80
- */
81
- export declare function authorCascadeRestatements(treeId: string, deps?: AuthorCascadeRestatementsDeps): Promise<{
82
- authored: string[];
83
- skipped: string[];
84
- }>;
85
- export interface RunCascadeProseTickDeps {
86
- callApi?: CallApiFn;
87
- authorRestatement?: AuthorRestatementFn;
88
- /** Enumerate active focuses for a product. Defaults to the live query. */
89
- getActiveFocuses?: typeof getActiveFocuses;
90
- /** Author cascade prose for one tree. Defaults to authorCascadeRestatements. */
91
- authorCascadeRestatements?: typeof authorCascadeRestatements;
92
- /**
93
- * Retire-aware authoring for one tree (verified/retired injections' flipped
94
- * UDEs, sourced from node history). Defaults to the real helper. Runs ONLY on
95
- * the departed-focus catch-up pass -- the completion-time safety net.
96
- */
97
- authorRetiredInjectionRestatements?: typeof defaultAuthorRetiredInjectionRestatements;
98
- }
99
- /**
100
- * Test-only seam: reset the prior-active-focus set so unrelated tests do not
101
- * leak departed-focus state into one another. Not part of the public API.
102
- */
103
- export declare function __resetProseTickState(): void;
104
- /**
105
- * Eager reconciliation tick. For every product -> active focus -> active
106
- * reality tree that carries at least one applied injection, runs
107
- * authorCascadeRestatements so flipped cascade nodes get future-state prose
108
- * without waiting for verify.
109
- *
110
- * Additionally diffs the current active-focus set against the prior tick's set
111
- * and re-scans any focus that JUST departed (completed or cancelled), so a
112
- * focus that leaves the active scan still gets its resolved cascade authored on
113
- * the next tick. Idempotency means the re-scan is a no-op once authored.
114
- *
115
- * Trees with no applied (derivedNodeType==='injection') injection are skipped
116
- * cheaply -- there is nothing flipped to restate. Idempotency in
117
- * authorCascadeRestatements prevents churn on already-authored trees.
118
- */
119
- export declare function runCascadeProseTick(config: DaemonConfig, deps?: RunCascadeProseTickDeps): Promise<{
120
- treesScanned: number;
121
- authored: number;
122
- }>;
123
- export interface RunNegativeBranchTickDeps {
124
- callApi?: CallApiFn;
125
- /** Enumerate active focuses for a product. Defaults to the live query. */
126
- getActiveFocuses?: typeof getActiveFocuses;
127
- /** Propose NB candidates for one injection. Defaults to proposeNegativeBranchesForInjection. */
128
- proposeNegativeBranches?: (inputs: Parameters<typeof defaultProposeNegativeBranches>[0], deps?: ProposeNegativeBranchesDeps) => Promise<ProposeNegativeBranchesResult>;
129
- }
130
- /**
131
- * Background tick that proposes negative-branch reservations for every applied
132
- * injection that has not yet had candidates generated.
133
- *
134
- * Idempotency: an injection is skipped when EITHER
135
- * (a) it carries a durable `negative_branch_pass_ran_at` marker -- a pass has
136
- * already COMPLETED for it (clean or not), so re-running would re-probe an
137
- * injection whose doubt is already discharged; OR
138
- * (b) any non-dismissed `add_node` proposal with
139
- * `proposedMetadata.isNegativeBranch === true` and
140
- * `proposedMetadata.sourceInjectionId === injectionId` already exists for
141
- * the tree (the pre-marker signal; kept for back-compat with injections
142
- * that were probed before the durable marker existed).
143
- *
144
- * The marker (a) is the load-bearing gate: it distinguishes "ran clean" (marker
145
- * set, zero proposals) from "never ran" (marker null, zero proposals) -- the
146
- * proposal-presence check (b) alone cannot. Dismissed proposals are left behind
147
- * (the user cleared the concern; don't re-surface it).
148
- *
149
- * Shares the `TELORA_FRT_PROSE_LOOP` opt-out signal with the prose tick --
150
- * both are FRT-overlay authoring concerns driven by the same guard.
151
- */
152
- export declare function runNegativeBranchTick(config: DaemonConfig, deps?: RunNegativeBranchTickDeps): Promise<{
153
- treesScanned: number;
154
- proposed: number;
155
- }>;
156
22
  //# sourceMappingURL=cascade-restatement.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cascade-restatement.d.ts","sourceRoot":"","sources":["../src/cascade-restatement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cascade-restatement.d.ts","sourceRoot":"","sources":["../src/cascade-restatement.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEjF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAE5F,MAAM,MAAM,mBAAmB,GAAG,CAChC,MAAM,EAAE,iBAAiB,EACzB,IAAI,CAAC,EAAE,kBAAkB,KACtB,OAAO,CAAC,MAAM,CAAC,CAAC"}