zelari-code 2.52.0 → 2.53.0
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/dist/cli/acp/invariants.js +183 -0
- package/dist/cli/acp/invariants.js.map +1 -0
- package/dist/cli/acp/protocol.js +36 -3
- package/dist/cli/acp/protocol.js.map +1 -1
- package/dist/cli/acp/server.js +51 -15
- package/dist/cli/acp/server.js.map +1 -1
- package/dist/cli/acp/turnAdapter.js +2 -1
- package/dist/cli/acp/turnAdapter.js.map +1 -1
- package/dist/cli/app.js +2 -2
- package/dist/cli/app.js.map +1 -1
- package/dist/cli/companion/framePolicy.js +116 -0
- package/dist/cli/companion/framePolicy.js.map +1 -0
- package/dist/cli/components/SelectList.js +51 -14
- package/dist/cli/components/SelectList.js.map +1 -1
- package/dist/cli/components/StatusBar.js +6 -2
- package/dist/cli/components/StatusBar.js.map +1 -1
- package/dist/cli/components/fuzzyMatch.js +108 -0
- package/dist/cli/components/fuzzyMatch.js.map +1 -0
- package/dist/cli/components/statusChips.js +47 -0
- package/dist/cli/components/statusChips.js.map +1 -1
- package/dist/cli/headless/protocol.js +39 -2
- package/dist/cli/headless/protocol.js.map +1 -1
- package/dist/cli/hooks/useSlashDispatch.js +5 -2
- package/dist/cli/hooks/useSlashDispatch.js.map +1 -1
- package/dist/cli/inbox.js +220 -0
- package/dist/cli/inbox.js.map +1 -0
- package/dist/cli/main.bundled.js +3524 -2519
- package/dist/cli/main.bundled.js.map +4 -4
- package/dist/cli/main.js +22 -0
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/serve/harnessServer.js +7 -0
- package/dist/cli/serve/harnessServer.js.map +1 -1
- package/dist/cli/sessionManager.js +9 -2
- package/dist/cli/sessionManager.js.map +1 -1
- package/dist/cli/skillsCheck.js +209 -0
- package/dist/cli/skillsCheck.js.map +1 -0
- package/dist/cli/slashCommands.js +9 -0
- package/dist/cli/slashCommands.js.map +1 -1
- package/dist/cli/slashHandlers/provider.js.map +1 -1
- package/dist/cli/slashHandlers/sessions.js +131 -0
- package/dist/cli/slashHandlers/sessions.js.map +1 -0
- package/dist/cli/statusline/statuslineItems.js +22 -3
- package/dist/cli/statusline/statuslineItems.js.map +1 -1
- package/dist/cli/statusline/verdictFeed.js +245 -0
- package/dist/cli/statusline/verdictFeed.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* verdictFeed — the `verdict` status-line item, derived from the session spine.
|
|
3
|
+
*
|
|
4
|
+
* DERIVE-ONLY (ADR-0016/0024): this module READS the `verification.*` events of
|
|
5
|
+
* the CURRENT run. It never writes, never caches and never injects anything into
|
|
6
|
+
* the model context (that path is gated by ADR-0031 context.projection).
|
|
7
|
+
*
|
|
8
|
+
* THE EVENTS IT ACTUALLY READS (grounded in
|
|
9
|
+
* packages/core/src/verification/engine.ts + src/cli/kraken/verificationBridge.ts):
|
|
10
|
+
* - `verification.evidence` — one executed observation (command/fs check, exit
|
|
11
|
+
* code, digest). It carries NO criterionId, so it can only be COUNTED,
|
|
12
|
+
* never attributed to a criterion (record-first: no invented attribution).
|
|
13
|
+
* - `verification.run` — the machine-readable record. Fields used, when
|
|
14
|
+
* present: `verdict` (PASS | REPAIR_REQUIRED | BLOCKED), `strict`,
|
|
15
|
+
* `summary`, `legacy{total,passed}`, `evidence{satisfied,
|
|
16
|
+
* unsatisfied[{id,status,reason}],complete}`, and — when the deterministic
|
|
17
|
+
* engine ran — `native` / `compiled` `{criteria[{id,required}],
|
|
18
|
+
* results[{criterionId,status}]}`. The LAST one on the log wins.
|
|
19
|
+
*
|
|
20
|
+
* PHASES: a criterion id is `<phase>.<name>` (criteriaPack.v1 taxonomy:
|
|
21
|
+
* `correctness.*`, `quality.*`, `evidence.*`), so the phase name is the id
|
|
22
|
+
* prefix. A record that carries no criterion ids has NO phases — an empty
|
|
23
|
+
* array, never a fabricated grouping.
|
|
24
|
+
*
|
|
25
|
+
* HONESTY (ADR-0023, unknown ≠ pass): no record at all ⇒ `ready: null`, no item text; no
|
|
26
|
+
* recorded denominator ⇒ the item shows the verdict word alone. Kill switch:
|
|
27
|
+
* `ZELARI_VERDICT_FEED=0` ⇒ `verdictFeedEnabled()` false and
|
|
28
|
+
* `verdictFeedText()` null, i.e. the item renders nothing (same default-ON /
|
|
29
|
+
* read-time kill-switch discipline as spineEnabled / strictDoneEnabled).
|
|
30
|
+
*/
|
|
31
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
32
|
+
import path from 'node:path';
|
|
33
|
+
import { parseSessionLogText, resolveSessionsDir } from '@zelari/core/session';
|
|
34
|
+
import { getCurrentSessionId } from '../sessionManager.js';
|
|
35
|
+
const VERDICTS = new Set(['PASS', 'REPAIR_REQUIRED', 'BLOCKED']);
|
|
36
|
+
/** Default-ON kill switch: only the exact `0` disables the item. */
|
|
37
|
+
export function verdictFeedEnabled(env = process.env) {
|
|
38
|
+
return env.ZELARI_VERDICT_FEED !== '0';
|
|
39
|
+
}
|
|
40
|
+
/** The honest "nothing recorded" feed (EMPTY ≠ absent). */
|
|
41
|
+
export function emptyVerdictFeed() {
|
|
42
|
+
return {
|
|
43
|
+
ready: null,
|
|
44
|
+
verdict: null,
|
|
45
|
+
strict: false,
|
|
46
|
+
summary: '',
|
|
47
|
+
passed: 0,
|
|
48
|
+
total: 0,
|
|
49
|
+
observations: 0,
|
|
50
|
+
phases: [],
|
|
51
|
+
seq: null,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
function asRecord(v) {
|
|
55
|
+
return v && typeof v === 'object' && !Array.isArray(v) ? v : null;
|
|
56
|
+
}
|
|
57
|
+
function asStringArray(v) {
|
|
58
|
+
return Array.isArray(v) ? v.filter((x) => typeof x === 'string') : [];
|
|
59
|
+
}
|
|
60
|
+
/** `correctness.error-signals` → `correctness`; a prefix-less id stays itself. */
|
|
61
|
+
export function verdictPhaseName(criterionId) {
|
|
62
|
+
const dot = criterionId.indexOf('.');
|
|
63
|
+
return dot > 0 ? criterionId.slice(0, dot) : criterionId;
|
|
64
|
+
}
|
|
65
|
+
/** Add a criterion status once — the first source that mentions an id wins. */
|
|
66
|
+
function addStatus(rec, id, status) {
|
|
67
|
+
if (rec.statuses.has(id))
|
|
68
|
+
return;
|
|
69
|
+
rec.statuses.set(id, status);
|
|
70
|
+
rec.order.push(id);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Fold the criteria/results blocks of one payload section (`native`, `compiled`,
|
|
74
|
+
* or the engine's flat `results`). Results are read FIRST so a real status wins
|
|
75
|
+
* over the `unknown` placeholder; criteria that never got a result are recorded
|
|
76
|
+
* as `unknown` — listed but not evaluated is not a pass.
|
|
77
|
+
*/
|
|
78
|
+
function foldSection(rec, section) {
|
|
79
|
+
if (!section)
|
|
80
|
+
return;
|
|
81
|
+
for (const r of Array.isArray(section.results) ? section.results : []) {
|
|
82
|
+
const row = asRecord(r);
|
|
83
|
+
const id = typeof row?.criterionId === 'string' ? row.criterionId : null;
|
|
84
|
+
if (id)
|
|
85
|
+
addStatus(rec, id, typeof row?.status === 'string' ? row.status : 'unknown');
|
|
86
|
+
}
|
|
87
|
+
for (const c of Array.isArray(section.criteria) ? section.criteria : []) {
|
|
88
|
+
const id = asRecord(c)?.id;
|
|
89
|
+
if (typeof id === 'string' && id.length > 0)
|
|
90
|
+
addStatus(rec, id, 'unknown');
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/** Parse one `verification.run` payload defensively (null when unusable). */
|
|
94
|
+
function parseRunRecord(ev) {
|
|
95
|
+
const data = asRecord(ev.data);
|
|
96
|
+
if (!data)
|
|
97
|
+
return null;
|
|
98
|
+
const verdictRaw = typeof data.verdict === 'string' ? data.verdict : '';
|
|
99
|
+
const rec = {
|
|
100
|
+
seq: ev.seq,
|
|
101
|
+
verdict: VERDICTS.has(verdictRaw) ? verdictRaw : 'unknown',
|
|
102
|
+
strict: data.strict === true,
|
|
103
|
+
summary: typeof data.summary === 'string' ? data.summary : '',
|
|
104
|
+
statuses: new Map(),
|
|
105
|
+
order: [],
|
|
106
|
+
};
|
|
107
|
+
const evidence = asRecord(data.evidence);
|
|
108
|
+
for (const id of asStringArray(evidence?.satisfied))
|
|
109
|
+
addStatus(rec, id, 'pass');
|
|
110
|
+
for (const u of Array.isArray(evidence?.unsatisfied) ? evidence.unsatisfied : []) {
|
|
111
|
+
const row = asRecord(u);
|
|
112
|
+
const id = typeof row?.id === 'string' ? row.id : null;
|
|
113
|
+
if (id)
|
|
114
|
+
addStatus(rec, id, typeof row?.status === 'string' ? row.status : 'unknown');
|
|
115
|
+
}
|
|
116
|
+
// Per-criterion detail, when the deterministic engine was the source: the
|
|
117
|
+
// engine's flat `results` first (most specific), then the pack sections.
|
|
118
|
+
foldSection(rec, { criteria: [], results: data.results });
|
|
119
|
+
foldSection(rec, asRecord(data.native));
|
|
120
|
+
foldSection(rec, asRecord(data.compiled));
|
|
121
|
+
const legacy = asRecord(data.legacy);
|
|
122
|
+
if (typeof legacy?.total === 'number')
|
|
123
|
+
rec.legacyTotal = legacy.total;
|
|
124
|
+
if (typeof legacy?.passed === 'number')
|
|
125
|
+
rec.legacyPassed = legacy.passed;
|
|
126
|
+
return rec;
|
|
127
|
+
}
|
|
128
|
+
/** passed/total from recorded fields only: per-criterion statuses, else the legacy counters. */
|
|
129
|
+
function countRun(rec) {
|
|
130
|
+
if (rec.statuses.size > 0) {
|
|
131
|
+
let passed = 0;
|
|
132
|
+
for (const status of rec.statuses.values())
|
|
133
|
+
if (status === 'pass')
|
|
134
|
+
passed += 1;
|
|
135
|
+
return { passed, total: rec.statuses.size };
|
|
136
|
+
}
|
|
137
|
+
const total = rec.legacyTotal ?? 0;
|
|
138
|
+
return { passed: Math.min(rec.legacyPassed ?? 0, total), total };
|
|
139
|
+
}
|
|
140
|
+
function buildPhases(rec) {
|
|
141
|
+
const byName = new Map();
|
|
142
|
+
for (const id of rec.order) {
|
|
143
|
+
const name = verdictPhaseName(id);
|
|
144
|
+
const phase = byName.get(name) ?? { name, passed: 0, total: 0, status: 'pass', statuses: [] };
|
|
145
|
+
const status = rec.statuses.get(id) ?? 'unknown';
|
|
146
|
+
phase.total += 1;
|
|
147
|
+
if (status === 'pass')
|
|
148
|
+
phase.passed += 1;
|
|
149
|
+
phase.statuses.push(status);
|
|
150
|
+
byName.set(name, phase);
|
|
151
|
+
}
|
|
152
|
+
return [...byName.values()].map(({ name, passed, total, statuses }) => ({
|
|
153
|
+
name,
|
|
154
|
+
passed,
|
|
155
|
+
total,
|
|
156
|
+
status: statuses.some((s) => s === 'fail' || s === 'missing')
|
|
157
|
+
? 'fail'
|
|
158
|
+
: statuses.every((s) => s === 'pass')
|
|
159
|
+
? 'pass'
|
|
160
|
+
: 'unknown',
|
|
161
|
+
}));
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Project the verification events of ONE run into a verdict snapshot. Pure:
|
|
165
|
+
* no I/O, no clock. The LAST recognizable `verification.run` wins; evidence
|
|
166
|
+
* observations recorded after it are the in-flight counter.
|
|
167
|
+
*/
|
|
168
|
+
export function deriveVerdictFeed(events) {
|
|
169
|
+
let rec = null;
|
|
170
|
+
let observations = 0;
|
|
171
|
+
for (const ev of events) {
|
|
172
|
+
if (ev.kind === 'verification.evidence') {
|
|
173
|
+
observations += 1;
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
if (ev.kind !== 'verification.run')
|
|
177
|
+
continue;
|
|
178
|
+
const parsed = parseRunRecord(ev);
|
|
179
|
+
if (!parsed)
|
|
180
|
+
continue;
|
|
181
|
+
rec = parsed;
|
|
182
|
+
observations = 0; // the observations before this record are its own evidence
|
|
183
|
+
}
|
|
184
|
+
if (!rec)
|
|
185
|
+
return { ...emptyVerdictFeed(), observations };
|
|
186
|
+
const { passed, total } = countRun(rec);
|
|
187
|
+
return {
|
|
188
|
+
ready: rec.verdict === 'PASS' ? true : rec.verdict === 'unknown' ? null : false,
|
|
189
|
+
verdict: rec.verdict,
|
|
190
|
+
strict: rec.strict,
|
|
191
|
+
summary: rec.summary,
|
|
192
|
+
passed,
|
|
193
|
+
total,
|
|
194
|
+
observations,
|
|
195
|
+
phases: buildPhases(rec),
|
|
196
|
+
seq: rec.seq,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Item text for the `verdict` statusline item, or null when there is nothing
|
|
201
|
+
* honest to say (kill switch off, no record and no observation).
|
|
202
|
+
*/
|
|
203
|
+
export function verdictFeedText(feed, env = process.env) {
|
|
204
|
+
if (!verdictFeedEnabled(env))
|
|
205
|
+
return null;
|
|
206
|
+
if (!feed || feed.seq === null) {
|
|
207
|
+
return feed && feed.observations > 0 ? `verify… ${feed.observations} obs` : null;
|
|
208
|
+
}
|
|
209
|
+
const counts = feed.total > 0 ? `${feed.passed}/${feed.total} · checks` : null;
|
|
210
|
+
if (feed.ready === true)
|
|
211
|
+
return counts ? `PASS ${counts}` : 'PASS';
|
|
212
|
+
if (feed.verdict === 'BLOCKED')
|
|
213
|
+
return counts ? `BLOCKED ${counts}` : 'BLOCKED';
|
|
214
|
+
if (feed.verdict === 'REPAIR_REQUIRED')
|
|
215
|
+
return counts ? `REPAIR ${counts}` : 'REPAIR';
|
|
216
|
+
return counts; // verdict recorded but not recognized: counts only, never a word
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Read the verdict snapshot of the CURRENT run from its spine log. Tolerant by
|
|
220
|
+
* contract: a missing marker/file, a corrupt log or a kill-switched feed all
|
|
221
|
+
* return the empty feed — an unreadable spine is UNKNOWN, never a verdict.
|
|
222
|
+
*/
|
|
223
|
+
export function readVerdictFeed(opts = {}) {
|
|
224
|
+
const env = opts.env ?? process.env;
|
|
225
|
+
if (!verdictFeedEnabled(env))
|
|
226
|
+
return emptyVerdictFeed();
|
|
227
|
+
const sessionId = opts.sessionId ?? getCurrentSessionId();
|
|
228
|
+
if (!sessionId)
|
|
229
|
+
return emptyVerdictFeed();
|
|
230
|
+
const dir = opts.sessionsDir ?? resolveSessionsDir({ workspaceRoot: opts.cwd, env });
|
|
231
|
+
const file = path.join(dir, sessionId, 'events.jsonl');
|
|
232
|
+
try {
|
|
233
|
+
if (!existsSync(file))
|
|
234
|
+
return emptyVerdictFeed();
|
|
235
|
+
return deriveVerdictFeed(parseSessionLogText(file, readFileSync(file, 'utf-8')).events);
|
|
236
|
+
}
|
|
237
|
+
catch {
|
|
238
|
+
return emptyVerdictFeed();
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
/** Convenience for the renderer: the exact string the `verdict` item shows now. */
|
|
242
|
+
export function readVerdictFeedText(opts = {}) {
|
|
243
|
+
return verdictFeedText(readVerdictFeed(opts), opts.env ?? process.env);
|
|
244
|
+
}
|
|
245
|
+
//# sourceMappingURL=verdictFeed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verdictFeed.js","sourceRoot":"","sources":["../../../src/cli/statusline/verdictFeed.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zelari-code",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.53.0",
|
|
4
4
|
"description": "Zelari Code — open-source coding orchestrator CLI. You choose the model; the proof is mandatory. Kraken by default, council when the work earns it: plan/build phases, provider-agnostic LLM streaming, self-update.",
|
|
5
5
|
"author": "Anathema Studio <https://anathema-studio.com/>",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
"@testing-library/react": "^16.3.2",
|
|
79
79
|
"@types/node": "^25.3.0",
|
|
80
80
|
"@types/react": "^19.0.10",
|
|
81
|
-
"@zelari/core": "2.
|
|
81
|
+
"@zelari/core": "2.53.0",
|
|
82
82
|
"esbuild": "^0.25.0",
|
|
83
83
|
"eslint": "^10.10.0",
|
|
84
84
|
"jsdom": "^29.1.1",
|