@telora/daemon 0.17.70 → 0.17.78

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 (63) hide show
  1. package/build-info.json +6 -3
  2. package/dist/cascade-restatement.d.ts +15 -0
  3. package/dist/cascade-restatement.d.ts.map +1 -1
  4. package/dist/cascade-restatement.js +68 -4
  5. package/dist/cascade-restatement.js.map +1 -1
  6. package/dist/cli/backfill-frt-prose.d.ts +33 -13
  7. package/dist/cli/backfill-frt-prose.d.ts.map +1 -1
  8. package/dist/cli/backfill-frt-prose.js +53 -41
  9. package/dist/cli/backfill-frt-prose.js.map +1 -1
  10. package/dist/de-restatement.d.ts +2 -0
  11. package/dist/de-restatement.d.ts.map +1 -1
  12. package/dist/de-restatement.js +1 -1
  13. package/dist/de-restatement.js.map +1 -1
  14. package/dist/focus-executor.d.ts +9 -0
  15. package/dist/focus-executor.d.ts.map +1 -1
  16. package/dist/focus-executor.js +10 -1
  17. package/dist/focus-executor.js.map +1 -1
  18. package/dist/listener.d.ts.map +1 -1
  19. package/dist/listener.js +23 -3
  20. package/dist/listener.js.map +1 -1
  21. package/dist/queries/deliveries.d.ts +12 -0
  22. package/dist/queries/deliveries.d.ts.map +1 -1
  23. package/dist/queries/deliveries.js +9 -0
  24. package/dist/queries/deliveries.js.map +1 -1
  25. package/dist/queries/index.d.ts +1 -1
  26. package/dist/queries/index.d.ts.map +1 -1
  27. package/dist/queries/index.js +1 -1
  28. package/dist/queries/index.js.map +1 -1
  29. package/dist/queries/schemas.d.ts +2 -0
  30. package/dist/queries/schemas.d.ts.map +1 -1
  31. package/dist/queries/schemas.js +5 -0
  32. package/dist/queries/schemas.js.map +1 -1
  33. package/dist/queries/verification.d.ts +10 -1
  34. package/dist/queries/verification.d.ts.map +1 -1
  35. package/dist/queries/verification.js.map +1 -1
  36. package/dist/resolvers/shared/reality-tree.d.ts +15 -0
  37. package/dist/resolvers/shared/reality-tree.d.ts.map +1 -1
  38. package/dist/resolvers/shared/reality-tree.js.map +1 -1
  39. package/dist/retire-aware-restatement.d.ts +92 -0
  40. package/dist/retire-aware-restatement.d.ts.map +1 -0
  41. package/dist/retire-aware-restatement.js +150 -0
  42. package/dist/retire-aware-restatement.js.map +1 -0
  43. package/dist/supabase.d.ts +1 -1
  44. package/dist/supabase.d.ts.map +1 -1
  45. package/dist/supabase.js +1 -1
  46. package/dist/supabase.js.map +1 -1
  47. package/dist/templates/claude-md.d.ts +1 -1
  48. package/dist/templates/claude-md.d.ts.map +1 -1
  49. package/dist/templates/claude-md.js +6 -0
  50. package/dist/templates/claude-md.js.map +1 -1
  51. package/dist/verification-engine.d.ts +21 -8
  52. package/dist/verification-engine.d.ts.map +1 -1
  53. package/dist/verification-engine.js +108 -14
  54. package/dist/verification-engine.js.map +1 -1
  55. package/dist/verify-reconciliation.d.ts +75 -0
  56. package/dist/verify-reconciliation.d.ts.map +1 -0
  57. package/dist/verify-reconciliation.js +164 -0
  58. package/dist/verify-reconciliation.js.map +1 -0
  59. package/dist/verify-restatement.d.ts +82 -28
  60. package/dist/verify-restatement.d.ts.map +1 -1
  61. package/dist/verify-restatement.js +98 -43
  62. package/dist/verify-restatement.js.map +1 -1
  63. package/package.json +2 -2
@@ -1,42 +1,71 @@
1
1
  /**
2
- * Verify-time desired-effect restatement authoring.
2
+ * Verify-time desired-effect reconciliation.
3
3
  *
4
4
  * When the verification engine produces a 'passed' verdict for an injection,
5
- * it authors the positive desired-effect restatement for each targeted UDE and
6
- * passes the prose INTO the verify call. The edge `reality_tree_verify_injection`
7
- * then applies the supplied prose as the UDE's new base statement (no LLM in the
8
- * edge). Authoring is therefore an OUTPUT of verification, gated by the same
9
- * evidence that produced the passing verdict -- not a separate pre-write step or
10
- * a per-tick reconciliation scan.
5
+ * it reconciles the DECLARED desired effect (the UDE's preserved frt_statement,
6
+ * authored at target time) against the ACHIEVED desired effect re-derived from
7
+ * the delivery's CITED worktree EVIDENCE (diff, test output, inspection finding)
8
+ * -- NOT from the targeted UDE's problem text. Each targeted UDE gets a
9
+ * classification:
11
10
  *
12
- * Reuses the de-restatement prose helper (authorRestatement) -- it does NOT
13
- * duplicate the prompt/model logic. Injection-conditioned: each UDE becomes the
14
- * positive state it reaches given the resolving injection.
11
+ * - match -- the achieved outcome realizes the declared intent.
12
+ * - legitimate_divergence -- a valid but different outcome (carries a reason).
13
+ * - shortfall -- the achieved outcome falls short of the intent.
14
+ *
15
+ * match / legitimate_divergence are carried INTO the verify call as the UDE's
16
+ * new base statement (+ classification + reason). The edge applies the supplied
17
+ * prose; it never runs the LLM.
18
+ *
19
+ * ASYMMETRY: a shortfall is NEVER carried into verify and NEVER softens the
20
+ * declared DE. The caller short-circuits the flip and escalates to a human --
21
+ * reality is moved toward intent, never the reverse. Shortfalls are returned
22
+ * here so the caller can hold the gate and file the escalation.
23
+ *
24
+ * Reuses the de-restatement CLI plumbing via verify-reconciliation (no new
25
+ * client or secret wiring).
15
26
  *
16
27
  * @module verify-restatement
17
28
  */
18
29
  import { callApi as defaultCallApi } from './queries/shared.js';
19
- import { authorRestatement as defaultAuthorRestatement, needsRestatement, } from './de-restatement.js';
30
+ import { reconcileAchievedEffect as defaultReconcile, } from './verify-reconciliation.js';
20
31
  /**
21
- * Author a positive desired-effect restatement for each UDE the injection
22
- * targets, returning them for the caller to pass into the verify call.
32
+ * Reconcile the achieved outcome against the declared desired effect for each
33
+ * UDE the injection targets.
34
+ *
35
+ * For each targeted UDE:
36
+ * - The DECLARED desired effect is the UDE's preserved `frtStatement` (intent
37
+ * of record). When absent, there is no declared intent to fall short of, so
38
+ * the achieved DE authored from evidence is treated as a match.
39
+ * - The ACHIEVED desired effect is authored from the supplied `evidence`
40
+ * (diff/tests/inspection), NOT from the UDE problem text.
41
+ * - The judgment classifies match / legitimate_divergence / shortfall.
42
+ *
43
+ * match / legitimate_divergence -> `restatements` (carried into verify).
44
+ * shortfall -> `shortfalls` (caller holds gate + escalates).
45
+ *
46
+ * Best-effort per target: a reconciliation FAILURE (model error / parse error)
47
+ * is treated as a SHORTFALL -- we cannot prove the achieved outcome realizes the
48
+ * declared intent, so we do not flip it and we surface it to a human. (This is
49
+ * the asymmetric-safe default: never flip what you could not reconcile.)
23
50
  *
24
- * Injection-conditioned on the injection's own statement. Best-effort and
25
- * idempotent at the prose level: a target that already carries a positive
26
- * frt_statement (target-time intent) reuses it rather than re-authoring. A
27
- * per-target authoring failure is swallowed (that target is omitted, and the
28
- * edge falls back to promoting any target-time frt_statement) so one failure
29
- * never aborts verify.
51
+ * SCOPE BOUNDARY (intentional): this reconciles ONLY the UDEs the injection
52
+ * DIRECTLY targets (its `targets` edges). Downstream consequences that resolve
53
+ * by causal PROPAGATION at verify are NOT reconciled here -- they have no
54
+ * declared DE to measure against, and their forward prose is authored by the
55
+ * injection-conditioned draft-assist loop (cascade-restatement.ts), not from raw
56
+ * code evidence. Verify flips their node_type but leaves verify_classification
57
+ * null; display falls back to the draft-assist frt_statement. See the matching
58
+ * note in graph-verification.ts (verifyInjectionImpl, Step 6).
30
59
  *
31
- * Returns an empty array when focusId is null or the injection is not found in
32
- * the focus's active tree(s).
60
+ * Returns empty result when focusId is null or the injection is not in the
61
+ * focus's active tree(s).
33
62
  */
34
- export async function authorTargetRestatements(injectionNodeId, focusId, deps = {}) {
63
+ export async function authorTargetRestatements(injectionNodeId, focusId, evidence, deps = {}) {
35
64
  const callApi = deps.callApi ?? defaultCallApi;
36
- const author = deps.authorRestatement ?? defaultAuthorRestatement;
37
- const out = [];
65
+ const reconcile = deps.reconcile ?? defaultReconcile;
66
+ const result = { restatements: [], shortfalls: [] };
38
67
  if (!focusId)
39
- return out;
68
+ return result;
40
69
  const treesResp = await callApi('reality_tree_list', { focusId });
41
70
  const trees = (treesResp.items ?? []).filter((t) => t.status === 'active');
42
71
  for (const tree of trees) {
@@ -50,36 +79,62 @@ export async function authorTargetRestatements(injectionNodeId, focusId, deps =
50
79
  const injection = nodeById.get(injectionNodeId);
51
80
  if (!injection || injection.nodeType !== 'injection')
52
81
  continue; // not in this tree
53
- const injectionStatements = injection.statement.trim() !== '' ? [injection.statement] : undefined;
54
82
  for (const e of edges) {
55
83
  if (e.edgeType !== 'targets' || e.fromNodeId !== injectionNodeId)
56
84
  continue;
57
85
  const target = nodeById.get(e.toNodeId);
58
86
  if (!target || target.nodeType !== 'undesired_effect')
59
87
  continue;
60
- // Reuse a positive target-time frt_statement (intent) if present; else
61
- // author the positive prose now, gated by this passing verdict.
62
- if (target.frtStatement && !needsRestatement(target.frtStatement)) {
63
- out.push({ nodeId: target.id, statement: target.frtStatement });
88
+ // The DECLARED desired effect is the preserved frt_statement (intent of
89
+ // record). When none was ever authored there is nothing to fall short of.
90
+ const declared = target.frtStatement && target.frtStatement.trim() !== ''
91
+ ? target.frtStatement.trim()
92
+ : null;
93
+ let judgment;
94
+ try {
95
+ judgment = await reconcile({
96
+ declaredStatement: declared ?? '',
97
+ evidence,
98
+ });
99
+ }
100
+ catch (err) {
101
+ // Asymmetric-safe: a reconciliation we could not complete is a shortfall.
102
+ // We never flip an injection whose achievement we could not verify.
103
+ result.shortfalls.push({
104
+ nodeId: target.id,
105
+ declaredStatement: declared ?? target.statement,
106
+ achievedStatement: '(reconciliation failed)',
107
+ reason: `Reconciliation failed: ${err.message}`,
108
+ });
64
109
  continue;
65
110
  }
66
- try {
67
- const text = await author({
68
- udeStatement: target.statement,
69
- injectionStatements,
70
- evidence: target.evidence ?? undefined,
111
+ const classification = declared
112
+ ? judgment.classification
113
+ // No declared intent to measure against -> the evidence-derived outcome
114
+ // stands on its own as a match (cannot fall short of nothing).
115
+ : 'match';
116
+ if (classification === 'shortfall') {
117
+ result.shortfalls.push({
118
+ nodeId: target.id,
119
+ declaredStatement: declared ?? target.statement,
120
+ achievedStatement: judgment.achievedStatement,
121
+ reason: judgment.divergenceReason
122
+ ?? 'Achieved outcome falls short of the declared desired effect.',
71
123
  });
72
- if (text && text.trim() !== '') {
73
- out.push({ nodeId: target.id, statement: text.trim() });
74
- }
124
+ continue;
75
125
  }
76
- catch {
77
- // best-effort: omit this target; the edge falls back to promoting any
78
- // target-time frt_statement (or node_type-only flip).
126
+ const entry = {
127
+ nodeId: target.id,
128
+ statement: judgment.achievedStatement,
129
+ classification,
130
+ };
131
+ if (classification === 'legitimate_divergence' && judgment.divergenceReason) {
132
+ entry.divergenceReason = judgment.divergenceReason;
79
133
  }
134
+ result.restatements.push(entry);
80
135
  }
81
- return out; // injection found and processed
136
+ return result; // injection found and processed
82
137
  }
83
- return out;
138
+ return result;
84
139
  }
85
140
  //# sourceMappingURL=verify-restatement.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"verify-restatement.js","sourceRoot":"","sources":["../src/verify-restatement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verify-restatement.js","sourceRoot":"","sources":["../src/verify-restatement.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@telora/daemon",
3
- "version": "0.17.70",
3
+ "version": "0.17.78",
4
4
  "description": "Agent orchestration daemon for Telora - spawns and manages Claude Code instances",
5
5
  "type": "module",
6
6
  "bin": {
@@ -37,7 +37,7 @@
37
37
  "//testRunner": "Uses Node.js built-in test runner (node:test) via tsx for TypeScript support. The root package uses Vitest; this is a deliberate choice for the daemon package to avoid framework dependencies. See src/__tests__/ for test files.",
38
38
  "dependencies": {
39
39
  "@telora/daemon-core": "^0.2.42",
40
- "@telora/mcp-products": "^0.22.61",
40
+ "@telora/mcp-products": "^0.22.63",
41
41
  "commander": "^14.0.3",
42
42
  "yaml": "^2.4.0",
43
43
  "zod": "^4.3.6"