@telora/daemon 0.15.18 → 0.15.24

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 (96) hide show
  1. package/build-info.json +2 -2
  2. package/dist/ai-inspection-context.d.ts +56 -0
  3. package/dist/ai-inspection-context.d.ts.map +1 -0
  4. package/dist/ai-inspection-context.js +110 -0
  5. package/dist/ai-inspection-context.js.map +1 -0
  6. package/dist/ai-inspection-runner.d.ts +72 -0
  7. package/dist/ai-inspection-runner.d.ts.map +1 -0
  8. package/dist/ai-inspection-runner.js +247 -0
  9. package/dist/ai-inspection-runner.js.map +1 -0
  10. package/dist/assembly-resolvers.d.ts +49 -1
  11. package/dist/assembly-resolvers.d.ts.map +1 -1
  12. package/dist/assembly-resolvers.js +125 -2
  13. package/dist/assembly-resolvers.js.map +1 -1
  14. package/dist/directive-executor.d.ts.map +1 -1
  15. package/dist/directive-executor.js +23 -1
  16. package/dist/directive-executor.js.map +1 -1
  17. package/dist/focus-completion.d.ts.map +1 -1
  18. package/dist/focus-completion.js +31 -3
  19. package/dist/focus-completion.js.map +1 -1
  20. package/dist/focus-engine.d.ts +18 -0
  21. package/dist/focus-engine.d.ts.map +1 -1
  22. package/dist/focus-engine.js +86 -6
  23. package/dist/focus-engine.js.map +1 -1
  24. package/dist/focus-executor.d.ts.map +1 -1
  25. package/dist/focus-executor.js +2 -0
  26. package/dist/focus-executor.js.map +1 -1
  27. package/dist/focus-loop.d.ts +61 -0
  28. package/dist/focus-loop.d.ts.map +1 -0
  29. package/dist/focus-loop.js +286 -0
  30. package/dist/focus-loop.js.map +1 -0
  31. package/dist/heartbeat.d.ts +1 -6
  32. package/dist/heartbeat.d.ts.map +1 -1
  33. package/dist/heartbeat.js +3 -27
  34. package/dist/heartbeat.js.map +1 -1
  35. package/dist/index.js +9 -9
  36. package/dist/index.js.map +1 -1
  37. package/dist/listener.d.ts.map +1 -1
  38. package/dist/listener.js +16 -18
  39. package/dist/listener.js.map +1 -1
  40. package/dist/queries/control-state.d.ts +5 -5
  41. package/dist/queries/control-state.d.ts.map +1 -1
  42. package/dist/queries/control-state.js +4 -7
  43. package/dist/queries/control-state.js.map +1 -1
  44. package/dist/queries/focus-cycle-evaluations.d.ts +32 -0
  45. package/dist/queries/focus-cycle-evaluations.d.ts.map +1 -0
  46. package/dist/queries/focus-cycle-evaluations.js +25 -0
  47. package/dist/queries/focus-cycle-evaluations.js.map +1 -0
  48. package/dist/queries/reality-tree.d.ts +39 -0
  49. package/dist/queries/reality-tree.d.ts.map +1 -0
  50. package/dist/queries/reality-tree.js +84 -0
  51. package/dist/queries/reality-tree.js.map +1 -0
  52. package/dist/queries/shared.d.ts.map +1 -1
  53. package/dist/queries/shared.js +7 -0
  54. package/dist/queries/shared.js.map +1 -1
  55. package/dist/queries/verification.d.ts +25 -0
  56. package/dist/queries/verification.d.ts.map +1 -0
  57. package/dist/queries/verification.js +20 -0
  58. package/dist/queries/verification.js.map +1 -0
  59. package/dist/realign-apply.d.ts +59 -0
  60. package/dist/realign-apply.d.ts.map +1 -0
  61. package/dist/realign-apply.js +207 -0
  62. package/dist/realign-apply.js.map +1 -0
  63. package/dist/self-update.d.ts +1 -1
  64. package/dist/self-update.js +2 -2
  65. package/dist/self-update.js.map +1 -1
  66. package/dist/state-cascade.d.ts +11 -30
  67. package/dist/state-cascade.d.ts.map +1 -1
  68. package/dist/state-cascade.js +13 -105
  69. package/dist/state-cascade.js.map +1 -1
  70. package/dist/team-prompt-base.d.ts +11 -0
  71. package/dist/team-prompt-base.d.ts.map +1 -1
  72. package/dist/team-prompt-base.js +63 -0
  73. package/dist/team-prompt-base.js.map +1 -1
  74. package/dist/team-spawner.d.ts.map +1 -1
  75. package/dist/team-spawner.js +2 -0
  76. package/dist/team-spawner.js.map +1 -1
  77. package/dist/types/focus.d.ts +13 -0
  78. package/dist/types/focus.d.ts.map +1 -1
  79. package/dist/unified-engine-lifecycle.d.ts.map +1 -1
  80. package/dist/unified-engine-lifecycle.js +4 -27
  81. package/dist/unified-engine-lifecycle.js.map +1 -1
  82. package/dist/unified-shell-config.d.ts +1 -7
  83. package/dist/unified-shell-config.d.ts.map +1 -1
  84. package/dist/unified-shell-config.js +0 -43
  85. package/dist/unified-shell-config.js.map +1 -1
  86. package/dist/unified-shell-status.d.ts.map +1 -1
  87. package/dist/unified-shell-status.js +2 -6
  88. package/dist/unified-shell-status.js.map +1 -1
  89. package/dist/unified-shell.d.ts.map +1 -1
  90. package/dist/unified-shell.js +2 -5
  91. package/dist/unified-shell.js.map +1 -1
  92. package/dist/verification-engine.d.ts +109 -0
  93. package/dist/verification-engine.d.ts.map +1 -0
  94. package/dist/verification-engine.js +256 -0
  95. package/dist/verification-engine.js.map +1 -0
  96. package/package.json +1 -2
@@ -0,0 +1,256 @@
1
+ /**
2
+ * Pluggable verification engine -- Differential Focus Spec.
3
+ *
4
+ * Each delivery is the materialization of an injection. When the delivery
5
+ * reaches the 'verify' execution status, this engine selects a strategy
6
+ * based on the delivery's verification_method and runs it. On a 'passed'
7
+ * outcome the injection is retired (its FRT statement promotes to CRT)
8
+ * via the existing reality_tree_verify_injection compound op.
9
+ *
10
+ * Methods:
11
+ * deterministic -- run a shell command (tests, lint, types). Pass = exit 0.
12
+ * behavioral -- runtime telemetry observation (scaffold; needs drift
13
+ * detection from delivery 82bdf164 to provide signal).
14
+ * ai_inspection -- AI reads code/state and decides (scaffold; needs the
15
+ * reality-tree-dialog skill driving it).
16
+ * human -- pure no-op: human flips verification_outcome via UI.
17
+ *
18
+ * @module verification-engine
19
+ */
20
+ import { spawn } from 'node:child_process';
21
+ import { getPendingVerifications, recordDeliveryVerificationOutcome, verifyInjectionOnPass, } from './queries/verification.js';
22
+ import { configForProduct } from './config.js';
23
+ import { resolveAiInspectionInputs as defaultResolveAiInspectionInputs, } from './ai-inspection-context.js';
24
+ import { runAiInspection as defaultRunAiInspection, } from './ai-inspection-runner.js';
25
+ import { callApi } from './queries/shared.js';
26
+ const DEFAULT_VERIFICATION_TIMEOUT_MS = 5 * 60 * 1000; // 5 minutes
27
+ /**
28
+ * Run a configured shell command in the focus's worktree (or the product
29
+ * repo path as fallback). Pass = exit 0.
30
+ */
31
+ export async function runDeterministicStrategy(config, cwd) {
32
+ const command = config?.command;
33
+ if (typeof command !== 'string' || command.length === 0 || !config) {
34
+ return {
35
+ outcome: 'escalated',
36
+ rationale: 'deterministic strategy missing config.command',
37
+ };
38
+ }
39
+ const timeoutMs = typeof config.timeoutMs === 'number' && config.timeoutMs > 0
40
+ ? config.timeoutMs
41
+ : DEFAULT_VERIFICATION_TIMEOUT_MS;
42
+ return new Promise((resolve) => {
43
+ const child = spawn('sh', ['-c', command], {
44
+ cwd,
45
+ stdio: ['ignore', 'pipe', 'pipe'],
46
+ });
47
+ let stdout = '';
48
+ let stderr = '';
49
+ const tail = (buf, max = 4000) => buf.length <= max ? buf : buf.slice(buf.length - max);
50
+ child.stdout?.on('data', (chunk) => {
51
+ stdout += chunk.toString('utf8');
52
+ stdout = tail(stdout);
53
+ });
54
+ child.stderr?.on('data', (chunk) => {
55
+ stderr += chunk.toString('utf8');
56
+ stderr = tail(stderr);
57
+ });
58
+ const timer = setTimeout(() => {
59
+ try {
60
+ child.kill('SIGKILL');
61
+ }
62
+ catch { /* ignore */ }
63
+ }, timeoutMs);
64
+ child.on('error', (err) => {
65
+ clearTimeout(timer);
66
+ resolve({
67
+ outcome: 'failed',
68
+ rationale: `deterministic spawn error: ${err.message}`,
69
+ stdoutTail: stdout,
70
+ stderrTail: stderr,
71
+ });
72
+ });
73
+ child.on('close', (code) => {
74
+ clearTimeout(timer);
75
+ const passed = code === 0;
76
+ resolve({
77
+ outcome: passed ? 'passed' : 'failed',
78
+ rationale: passed
79
+ ? 'deterministic check passed (exit 0)'
80
+ : `deterministic check failed (exit ${code})`,
81
+ exitCode: code,
82
+ stdoutTail: stdout,
83
+ stderrTail: stderr,
84
+ });
85
+ });
86
+ });
87
+ }
88
+ export async function runHumanStrategy() {
89
+ return {
90
+ outcome: 'pending',
91
+ rationale: 'human strategy -- awaiting "done done" sign-off via UI',
92
+ };
93
+ }
94
+ export async function runBehavioralStrategy() {
95
+ return {
96
+ outcome: 'pending',
97
+ rationale: 'behavioral strategy scaffold -- runtime telemetry source not yet wired (see drift detection 82bdf164)',
98
+ };
99
+ }
100
+ /**
101
+ * Spawn a tool-augmented Claude runner against the focus worktree to judge
102
+ * whether the injection's FRT statement holds in the code state. Maps the
103
+ * runner verdict to a verification outcome:
104
+ * - passed → outcome 'passed' (caller will retire injection)
105
+ * - failed → outcome 'failed' (caller will revert delivery to coding)
106
+ * - inconclusive → outcome 'pending' (caller leaves the row in queue)
107
+ *
108
+ * The strategy itself does NOT call verifyInjection or emit drift proposals;
109
+ * those side effects are wired by runVerificationForDelivery (next task)
110
+ * so the dispatch layer stays the single owner of the pass-path side effect.
111
+ *
112
+ * Drift observations from the runner are returned via the rationale field
113
+ * (compact JSON) so the caller can persist them as crt_drift_proposals.
114
+ */
115
+ export async function runAiInspectionStrategy(deps, v) {
116
+ const inputs = await deps.resolveAiInspectionInputs(v);
117
+ if (!inputs) {
118
+ return {
119
+ outcome: 'pending',
120
+ rationale: 'ai_inspection skipped: injection node not found',
121
+ };
122
+ }
123
+ const inspection = await deps.runAiInspection(inputs);
124
+ const outcome = inspection.verdict === 'passed' ? 'passed'
125
+ : inspection.verdict === 'failed' ? 'failed'
126
+ : 'pending';
127
+ return {
128
+ outcome,
129
+ rationale: inspection.rationale,
130
+ inspection,
131
+ };
132
+ }
133
+ async function defaultEmitDriftProposal(payload) {
134
+ await callApi('crt_drift_proposal_create', {
135
+ focusId: payload.focusId,
136
+ productId: payload.productId,
137
+ nodeId: payload.observation.nodeId,
138
+ proposalKind: payload.observation.kind,
139
+ observedState: payload.observation.observed,
140
+ proposedCorrection: payload.observation.suggestedCorrection,
141
+ });
142
+ }
143
+ const defaultDeps = (config) => {
144
+ const resolveCwd = (productId) => {
145
+ if (!productId)
146
+ return config.repoPath;
147
+ const product = config.products.find(p => p.id === productId);
148
+ if (!product)
149
+ return config.repoPath;
150
+ return configForProduct(config, product).repoPath;
151
+ };
152
+ return {
153
+ getPendingVerifications,
154
+ recordOutcome: recordDeliveryVerificationOutcome,
155
+ verifyInjection: verifyInjectionOnPass,
156
+ emitDriftProposal: defaultEmitDriftProposal,
157
+ runDeterministic: runDeterministicStrategy,
158
+ runAiInspection: defaultRunAiInspection,
159
+ resolveAiInspectionInputs: (v) => defaultResolveAiInspectionInputs(v, {
160
+ callApi,
161
+ resolveCwd,
162
+ integrationBranch: config.integrationBranch,
163
+ }),
164
+ resolveCwd,
165
+ integrationBranch: config.integrationBranch,
166
+ };
167
+ };
168
+ const STRATEGIES = {
169
+ deterministic: (deps, v) => deps.runDeterministic(v.verificationConfig, deps.resolveCwd(v.productId)),
170
+ behavioral: () => runBehavioralStrategy(),
171
+ ai_inspection: (deps, v) => runAiInspectionStrategy(deps, v),
172
+ human: () => runHumanStrategy(),
173
+ };
174
+ /**
175
+ * Run verification for a single delivery.
176
+ *
177
+ * Ordering invariants:
178
+ * 1. Run the strategy.
179
+ * 2. On verdict 'passed' with an injection node: retire injection FIRST
180
+ * (verifyInjection runs the reality_tree_verify_injection compound op).
181
+ * If retirement fails, the outcome demotes to 'pending' so the loop
182
+ * will retry — better to leave the row queued than to record 'passed'
183
+ * while the graph is in an inconsistent state.
184
+ * 3. Record the (possibly demoted) outcome.
185
+ * 4. Emit any drift_observations the runner attached, regardless of
186
+ * verdict. Each becomes a crt_drift_proposal in 'proposed' status.
187
+ *
188
+ * Drift emission is best-effort: a single failure logs and continues so
189
+ * one bad observation does not prevent the rest from being persisted.
190
+ */
191
+ export async function runVerificationForDelivery(v, deps) {
192
+ const strategy = STRATEGIES[v.verificationMethod];
193
+ const strategyResult = await strategy(deps, v);
194
+ const result = { ...strategyResult };
195
+ // Pass path FIRST so a verifyInjection failure short-circuits before we
196
+ // record an outcome that does not match graph state.
197
+ if (result.outcome === 'passed' && v.injectionNodeId) {
198
+ try {
199
+ await deps.verifyInjection(v.injectionNodeId);
200
+ }
201
+ catch (err) {
202
+ result.outcome = 'pending';
203
+ result.rationale = `verifyInjection failed for ${v.injectionNodeId}: ${err.message}`;
204
+ }
205
+ }
206
+ await deps.recordOutcome(v.deliveryId, result.outcome);
207
+ // Drift emission is independent of verdict — a 'passed' inspection can
208
+ // still observe contradictions to other CRT statements.
209
+ const inspection = result.inspection;
210
+ if (inspection && inspection.driftObservations.length > 0) {
211
+ for (const obs of inspection.driftObservations) {
212
+ try {
213
+ await deps.emitDriftProposal({
214
+ focusId: v.focusId,
215
+ productId: v.productId,
216
+ injectionNodeId: v.injectionNodeId,
217
+ observation: obs,
218
+ });
219
+ }
220
+ catch (err) {
221
+ console.warn(`[verification] drift proposal emit failed for delivery ${v.deliveryId}:`, err.message);
222
+ }
223
+ }
224
+ }
225
+ return result;
226
+ }
227
+ /**
228
+ * One tick: fetch pending verifications across products, dispatch each.
229
+ * Returns counts for telemetry.
230
+ */
231
+ export async function runVerificationTick(config, deps) {
232
+ const merged = { ...defaultDeps(config), ...deps };
233
+ const counts = { checked: 0, passed: 0, failed: 0, pending: 0, escalated: 0 };
234
+ for (const product of config.products) {
235
+ let pending;
236
+ try {
237
+ pending = await merged.getPendingVerifications(product.id);
238
+ }
239
+ catch (err) {
240
+ console.warn(`[verification] fetch failed for product ${product.id}:`, err.message);
241
+ continue;
242
+ }
243
+ for (const v of pending) {
244
+ counts.checked += 1;
245
+ try {
246
+ const r = await runVerificationForDelivery(v, merged);
247
+ counts[r.outcome] = (counts[r.outcome] ?? 0) + 1;
248
+ }
249
+ catch (err) {
250
+ console.warn(`[verification] tick failed for delivery ${v.deliveryId}:`, err.message);
251
+ }
252
+ }
253
+ }
254
+ return counts;
255
+ }
256
+ //# sourceMappingURL=verification-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification-engine.js","sourceRoot":"","sources":["../src/verification-engine.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.15.18",
3
+ "version": "0.15.24",
4
4
  "description": "Agent orchestration daemon for Telora - spawns and manages Claude Code instances",
5
5
  "type": "module",
6
6
  "bin": {
@@ -36,7 +36,6 @@
36
36
  "//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.",
37
37
  "dependencies": {
38
38
  "@telora/daemon-core": "^0.2.16",
39
- "@telora/factory": "^0.4.6",
40
39
  "@telora/mcp-products": "^0.22.1",
41
40
  "commander": "^14.0.3",
42
41
  "zod": "^4.3.6"