@telora/daemon 0.18.49 → 0.18.58
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 +13 -3
- package/dist/ai-inspection-context.d.ts.map +1 -1
- package/dist/ai-inspection-context.js +11 -1
- package/dist/ai-inspection-context.js.map +1 -1
- package/dist/ai-inspection-runner.d.ts.map +1 -1
- package/dist/ai-inspection-runner.js +0 -1
- package/dist/ai-inspection-runner.js.map +1 -1
- package/dist/audit-phase.d.ts.map +1 -1
- package/dist/audit-phase.js +4 -0
- package/dist/audit-phase.js.map +1 -1
- package/dist/cascade-restatement.d.ts +14 -5
- package/dist/cascade-restatement.d.ts.map +1 -1
- package/dist/cascade-restatement.js +35 -6
- package/dist/cascade-restatement.js.map +1 -1
- package/dist/completion/team-completion.d.ts.map +1 -1
- package/dist/completion/team-completion.js +32 -2
- package/dist/completion/team-completion.js.map +1 -1
- package/dist/de-restatement.d.ts.map +1 -1
- package/dist/de-restatement.js +0 -1
- package/dist/de-restatement.js.map +1 -1
- package/dist/directive/close-loop-stage.d.ts.map +1 -1
- package/dist/directive/close-loop-stage.js +10 -2
- package/dist/directive/close-loop-stage.js.map +1 -1
- package/dist/focus-executor.d.ts +7 -2
- package/dist/focus-executor.d.ts.map +1 -1
- package/dist/focus-executor.js +20 -9
- package/dist/focus-executor.js.map +1 -1
- package/dist/focus-lifecycle.d.ts.map +1 -1
- package/dist/focus-lifecycle.js +20 -0
- package/dist/focus-lifecycle.js.map +1 -1
- package/dist/git-genesis.d.ts +100 -0
- package/dist/git-genesis.d.ts.map +1 -0
- package/dist/git-genesis.js +231 -0
- package/dist/git-genesis.js.map +1 -0
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js +28 -5
- package/dist/git.js.map +1 -1
- package/dist/negative-branch.d.ts +32 -1
- package/dist/negative-branch.d.ts.map +1 -1
- package/dist/negative-branch.js +55 -9
- package/dist/negative-branch.js.map +1 -1
- package/dist/output-monitor.js +5 -8
- package/dist/output-monitor.js.map +1 -1
- package/dist/prd-controller.d.ts +0 -2
- package/dist/prd-controller.d.ts.map +1 -1
- package/dist/prd-controller.js +14 -35
- package/dist/prd-controller.js.map +1 -1
- package/dist/prd-divergence.d.ts +19 -8
- package/dist/prd-divergence.d.ts.map +1 -1
- package/dist/prd-divergence.js +7 -26
- package/dist/prd-divergence.js.map +1 -1
- package/dist/prd-viability.d.ts +14 -15
- package/dist/prd-viability.d.ts.map +1 -1
- package/dist/prd-viability.js +21 -34
- package/dist/prd-viability.js.map +1 -1
- package/dist/queries/prd.d.ts +24 -2
- package/dist/queries/prd.d.ts.map +1 -1
- package/dist/queries/prd.js +17 -0
- package/dist/queries/prd.js.map +1 -1
- package/dist/queries/schemas.d.ts +28 -0
- package/dist/queries/schemas.d.ts.map +1 -1
- package/dist/queries/schemas.js +26 -0
- package/dist/queries/schemas.js.map +1 -1
- package/dist/queries/sessions.d.ts +14 -0
- package/dist/queries/sessions.d.ts.map +1 -1
- package/dist/queries/sessions.js +19 -0
- package/dist/queries/sessions.js.map +1 -1
- package/dist/queries/starter-repo.d.ts +27 -0
- package/dist/queries/starter-repo.d.ts.map +1 -0
- package/dist/queries/starter-repo.js +32 -0
- package/dist/queries/starter-repo.js.map +1 -0
- package/dist/queries/verification.d.ts +132 -0
- package/dist/queries/verification.d.ts.map +1 -1
- package/dist/queries/verification.js +271 -0
- package/dist/queries/verification.js.map +1 -1
- package/dist/reality-writeback.d.ts +257 -0
- package/dist/reality-writeback.d.ts.map +1 -0
- package/dist/reality-writeback.js +179 -0
- package/dist/reality-writeback.js.map +1 -0
- package/dist/resolvers/shared/reality-tree.d.ts +39 -1
- package/dist/resolvers/shared/reality-tree.d.ts.map +1 -1
- package/dist/resolvers/shared/reality-tree.js +51 -1
- package/dist/resolvers/shared/reality-tree.js.map +1 -1
- package/dist/session-lineage.d.ts +25 -0
- package/dist/session-lineage.d.ts.map +1 -1
- package/dist/session-lineage.js +23 -0
- package/dist/session-lineage.js.map +1 -1
- package/dist/session-stamp.d.ts +63 -0
- package/dist/session-stamp.d.ts.map +1 -0
- package/dist/session-stamp.js +65 -0
- package/dist/session-stamp.js.map +1 -0
- package/dist/spawner/helpers.d.ts.map +1 -1
- package/dist/spawner/helpers.js +5 -8
- package/dist/spawner/helpers.js.map +1 -1
- package/dist/supabase.d.ts +2 -2
- package/dist/supabase.d.ts.map +1 -1
- package/dist/supabase.js +1 -1
- package/dist/supabase.js.map +1 -1
- package/dist/templates/claude-md.d.ts +1 -1
- package/dist/templates/claude-md.d.ts.map +1 -1
- package/dist/templates/claude-md.js +6 -3
- package/dist/templates/claude-md.js.map +1 -1
- package/dist/types/session.d.ts +24 -0
- package/dist/types/session.d.ts.map +1 -1
- package/dist/verification-engine.d.ts +10 -0
- package/dist/verification-engine.d.ts.map +1 -1
- package/dist/verification-engine.js +32 -1
- package/dist/verification-engine.js.map +1 -1
- package/dist/verify-restatement.d.ts +16 -0
- package/dist/verify-restatement.d.ts.map +1 -1
- package/dist/verify-restatement.js +7 -0
- package/dist/verify-restatement.js.map +1 -1
- package/package.json +2 -2
- package/dist/prd-clearance-engine.d.ts +0 -121
- package/dist/prd-clearance-engine.d.ts.map +0 -1
- package/dist/prd-clearance-engine.js +0 -164
- package/dist/prd-clearance-engine.js.map +0 -1
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PRD obstacle clearance predicate engine -- Staged Assembly: PRD Layer.
|
|
3
|
-
*
|
|
4
|
-
* This module lifts the per-delivery verification engine one altitude up to the
|
|
5
|
-
* PRD Prerequisite Tree (PRT) obstacle. Where `verification-engine.ts` answers
|
|
6
|
-
* "is this delivery's injection cleared?", this answers "is this milestone's
|
|
7
|
-
* obstacle cleared?" -- and, in aggregate, "is the whole milestone complete?".
|
|
8
|
-
*
|
|
9
|
-
* The clearance predicate is BOTH the completion signal AND the divergence
|
|
10
|
-
* detector: a PRD (milestone) is done exactly when every obstacle's verifiable
|
|
11
|
-
* clearance predicate passes. (UDE #4 -> desired effect: milestone completion
|
|
12
|
-
* is computable.)
|
|
13
|
-
*
|
|
14
|
-
* Design constraints (delivery C):
|
|
15
|
-
* - PURE. No DB access, no reality-tree writes, no module-level mutable state.
|
|
16
|
-
* The caller fetches obstacles (from `prd_prt_nodes.clearance_predicate`) and
|
|
17
|
-
* passes them in; this module only computes verdicts.
|
|
18
|
-
* - Command execution is INJECTED via `ClearanceContext.runCommand` so tests
|
|
19
|
-
* never shell out. A `defaultRunCommand` is provided for real callers and
|
|
20
|
-
* mirrors `verification-engine.runDeterministicStrategy` (spawn `sh -c`, tail
|
|
21
|
-
* output at 4000 chars, exit 0 = pass) -- but returns the raw triple rather
|
|
22
|
-
* than a StrategyResult, keeping this module side-effect-light.
|
|
23
|
-
* - NO daemon-loop wiring here. Wiring into the focus/verification loop is a
|
|
24
|
-
* later delivery (D).
|
|
25
|
-
*
|
|
26
|
-
* Predicate kinds mirror the verification engine's strategy taxonomy:
|
|
27
|
-
* deterministic -- run shell checks; all exit 0 => cleared.
|
|
28
|
-
* behavioral -- runtime telemetry observation (deferred; no signal source).
|
|
29
|
-
* ai_inspection -- AI reads code/state and decides (deferred; no driver).
|
|
30
|
-
* human -- a human attests clearance (deferred; out of band).
|
|
31
|
-
*
|
|
32
|
-
* @module prd-clearance-engine
|
|
33
|
-
*/
|
|
34
|
-
import { spawn } from 'node:child_process';
|
|
35
|
-
const DEFAULT_CLEARANCE_TIMEOUT_MS = 5 * 60 * 1000; // 5 minutes
|
|
36
|
-
const OUTPUT_TAIL_MAX = 4000;
|
|
37
|
-
// ---------------------------------------------------------------------------
|
|
38
|
-
// Default command runner (mirrors runDeterministicStrategy)
|
|
39
|
-
// ---------------------------------------------------------------------------
|
|
40
|
-
/**
|
|
41
|
-
* Real shell runner: spawn `sh -c <cmd>` in `cwd`, capture stdout/stderr tailed
|
|
42
|
-
* to 4000 chars, resolve `{ exitCode, stdoutTail, stderrTail }`. A spawn error
|
|
43
|
-
* resolves with `exitCode: null` (treated as a non-pass by callers). Mirrors
|
|
44
|
-
* `verification-engine.runDeterministicStrategy` but returns the raw triple.
|
|
45
|
-
*/
|
|
46
|
-
export const defaultRunCommand = (cmd, cwd) => {
|
|
47
|
-
return new Promise((resolve) => {
|
|
48
|
-
const child = spawn('sh', ['-c', cmd], {
|
|
49
|
-
cwd,
|
|
50
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
51
|
-
});
|
|
52
|
-
let stdout = '';
|
|
53
|
-
let stderr = '';
|
|
54
|
-
const tail = (buf, max = OUTPUT_TAIL_MAX) => buf.length <= max ? buf : buf.slice(buf.length - max);
|
|
55
|
-
child.stdout?.on('data', (chunk) => {
|
|
56
|
-
stdout += chunk.toString('utf8');
|
|
57
|
-
stdout = tail(stdout);
|
|
58
|
-
});
|
|
59
|
-
child.stderr?.on('data', (chunk) => {
|
|
60
|
-
stderr += chunk.toString('utf8');
|
|
61
|
-
stderr = tail(stderr);
|
|
62
|
-
});
|
|
63
|
-
const timer = setTimeout(() => {
|
|
64
|
-
try {
|
|
65
|
-
child.kill('SIGKILL');
|
|
66
|
-
}
|
|
67
|
-
catch { /* ignore */ }
|
|
68
|
-
}, DEFAULT_CLEARANCE_TIMEOUT_MS);
|
|
69
|
-
child.on('error', (err) => {
|
|
70
|
-
clearTimeout(timer);
|
|
71
|
-
resolve({
|
|
72
|
-
exitCode: null,
|
|
73
|
-
stdoutTail: stdout,
|
|
74
|
-
stderrTail: tail(`${stderr}\n${err.message}`),
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
child.on('close', (code) => {
|
|
78
|
-
clearTimeout(timer);
|
|
79
|
-
resolve({ exitCode: code, stdoutTail: stdout, stderrTail: stderr });
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
};
|
|
83
|
-
// ---------------------------------------------------------------------------
|
|
84
|
-
// Evaluation
|
|
85
|
-
// ---------------------------------------------------------------------------
|
|
86
|
-
const DEFERRAL_REASON = {
|
|
87
|
-
behavioral: 'behavioral clearance deferred -- no runtime telemetry source wired',
|
|
88
|
-
ai_inspection: 'ai_inspection clearance deferred -- no AI inspection driver wired',
|
|
89
|
-
human: 'human clearance deferred -- requires out-of-band human attestation',
|
|
90
|
-
};
|
|
91
|
-
/**
|
|
92
|
-
* Evaluate a single obstacle's clearance predicate. PURE.
|
|
93
|
-
*
|
|
94
|
-
* - deterministic: run each check via `ctx.runCommand ?? defaultRunCommand`.
|
|
95
|
-
* exit 0 = passed. All pass => cleared. No checks (undefined/empty) =>
|
|
96
|
-
* not cleared, not deferred (a deterministic predicate with nothing to check
|
|
97
|
-
* cannot assert clearance).
|
|
98
|
-
* - behavioral | ai_inspection | human: deferred (cleared:false, deferred:true);
|
|
99
|
-
* evidence names the deferral reason.
|
|
100
|
-
*/
|
|
101
|
-
export async function evaluateClearance(predicate, ctx) {
|
|
102
|
-
if (predicate.kind !== 'deterministic') {
|
|
103
|
-
return {
|
|
104
|
-
kind: predicate.kind,
|
|
105
|
-
cleared: false,
|
|
106
|
-
deferred: true,
|
|
107
|
-
evidence: DEFERRAL_REASON[predicate.kind],
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
const checks = predicate.checks ?? [];
|
|
111
|
-
if (checks.length === 0) {
|
|
112
|
-
return {
|
|
113
|
-
kind: 'deterministic',
|
|
114
|
-
cleared: false,
|
|
115
|
-
deferred: false,
|
|
116
|
-
evidence: 'no checks defined -- deterministic predicate cannot assert clearance',
|
|
117
|
-
checkResults: [],
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
const run = ctx.runCommand ?? defaultRunCommand;
|
|
121
|
-
const checkResults = [];
|
|
122
|
-
for (const check of checks) {
|
|
123
|
-
const { exitCode } = await run(check.cmd, ctx.worktreeDir);
|
|
124
|
-
checkResults.push({
|
|
125
|
-
cmd: check.cmd,
|
|
126
|
-
exitCode,
|
|
127
|
-
passed: exitCode === 0,
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
const passedCount = checkResults.filter(r => r.passed).length;
|
|
131
|
-
const cleared = passedCount === checkResults.length;
|
|
132
|
-
return {
|
|
133
|
-
kind: 'deterministic',
|
|
134
|
-
cleared,
|
|
135
|
-
deferred: false,
|
|
136
|
-
evidence: cleared
|
|
137
|
-
? `deterministic clearance passed (${passedCount}/${checkResults.length} checks exit 0)`
|
|
138
|
-
: `deterministic clearance failed (${passedCount}/${checkResults.length} checks exit 0)`,
|
|
139
|
-
checkResults,
|
|
140
|
-
};
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Aggregate clearance across all obstacles of a PRT -- the "milestone
|
|
144
|
-
* completion is computable" primitive. PURE; the caller fetches the obstacles
|
|
145
|
-
* (each carrying its `clearance_predicate`).
|
|
146
|
-
*
|
|
147
|
-
* - `allCleared` is true only when there is at least one obstacle AND every
|
|
148
|
-
* obstacle's verdict is cleared. (An empty obstacle set cannot assert a
|
|
149
|
-
* complete milestone.)
|
|
150
|
-
* - `deferredCount` counts obstacles whose predicate could not be evaluated
|
|
151
|
-
* automatically -- these block `allCleared` and flag where human/AI signal
|
|
152
|
-
* is still required.
|
|
153
|
-
*/
|
|
154
|
-
export async function evaluatePrtClearance(obstacles, ctx) {
|
|
155
|
-
const nodeVerdicts = [];
|
|
156
|
-
for (const obstacle of obstacles) {
|
|
157
|
-
const verdict = await evaluateClearance(obstacle.predicate, ctx);
|
|
158
|
-
nodeVerdicts.push({ nodeId: obstacle.nodeId, verdict });
|
|
159
|
-
}
|
|
160
|
-
const allCleared = obstacles.length > 0 && nodeVerdicts.every(nv => nv.verdict.cleared);
|
|
161
|
-
const deferredCount = nodeVerdicts.filter(nv => nv.verdict.deferred).length;
|
|
162
|
-
return { nodeVerdicts, allCleared, deferredCount };
|
|
163
|
-
}
|
|
164
|
-
//# sourceMappingURL=prd-clearance-engine.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prd-clearance-engine.js","sourceRoot":"","sources":["../src/prd-clearance-engine.ts"],"names":[],"mappings":"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"}
|