@dzhechkov/harness-core 0.4.1 → 0.4.3

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 (64) hide show
  1. package/.dz-manifest.json +136 -56
  2. package/README.md +4 -2
  3. package/dist/backlog.d.ts +35 -0
  4. package/dist/backlog.d.ts.map +1 -1
  5. package/dist/backlog.js +167 -3
  6. package/dist/backlog.js.map +1 -1
  7. package/dist/feature-adr-checkpoints.d.ts +48 -3
  8. package/dist/feature-adr-checkpoints.d.ts.map +1 -1
  9. package/dist/feature-adr-checkpoints.js +85 -24
  10. package/dist/feature-adr-checkpoints.js.map +1 -1
  11. package/dist/index.d.ts +4 -1
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +4 -1
  14. package/dist/index.js.map +1 -1
  15. package/dist/loop-blobs.generated.js +9 -9
  16. package/dist/loop-blobs.generated.js.map +1 -1
  17. package/dist/loop-plan-graph.d.ts +49 -0
  18. package/dist/loop-plan-graph.d.ts.map +1 -0
  19. package/dist/loop-plan-graph.js +128 -0
  20. package/dist/loop-plan-graph.js.map +1 -0
  21. package/dist/loop-plan.d.ts.map +1 -1
  22. package/dist/loop-plan.js +13 -15
  23. package/dist/loop-plan.js.map +1 -1
  24. package/dist/loop-render.d.ts.map +1 -1
  25. package/dist/loop-render.js +95 -16
  26. package/dist/loop-render.js.map +1 -1
  27. package/dist/loop-trace.d.ts +26 -1
  28. package/dist/loop-trace.d.ts.map +1 -1
  29. package/dist/loop-trace.js +65 -1
  30. package/dist/loop-trace.js.map +1 -1
  31. package/dist/model-recommender.d.ts +91 -0
  32. package/dist/model-recommender.d.ts.map +1 -0
  33. package/dist/model-recommender.js +186 -0
  34. package/dist/model-recommender.js.map +1 -0
  35. package/dist/registry.d.ts.map +1 -1
  36. package/dist/registry.js +4 -1
  37. package/dist/registry.js.map +1 -1
  38. package/dist/statusline.d.ts +10 -2
  39. package/dist/statusline.d.ts.map +1 -1
  40. package/dist/statusline.js +122 -36
  41. package/dist/statusline.js.map +1 -1
  42. package/dist/trace-bundle.d.ts +209 -0
  43. package/dist/trace-bundle.d.ts.map +1 -0
  44. package/dist/trace-bundle.js +601 -0
  45. package/dist/trace-bundle.js.map +1 -0
  46. package/dist/usage.d.ts +7 -0
  47. package/dist/usage.d.ts.map +1 -1
  48. package/dist/usage.js +30 -2
  49. package/dist/usage.js.map +1 -1
  50. package/package.json +5 -5
  51. package/sbom.json +255 -55
  52. package/src/backlog.ts +176 -3
  53. package/src/feature-adr-checkpoints.ts +103 -4
  54. package/src/index.ts +4 -1
  55. package/src/loop-blobs.generated.ts +9 -9
  56. package/src/loop-plan-graph.ts +132 -0
  57. package/src/loop-plan.ts +13 -15
  58. package/src/loop-render.ts +93 -17
  59. package/src/loop-trace.ts +78 -1
  60. package/src/model-recommender.ts +228 -0
  61. package/src/registry.ts +4 -1
  62. package/src/statusline.ts +117 -30
  63. package/src/trace-bundle.ts +743 -0
  64. package/src/usage.ts +42 -2
@@ -13,8 +13,8 @@
13
13
  *
14
14
  * @packageDocumentation
15
15
  */
16
- import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from 'node:fs';
17
- import { dirname, join, resolve } from 'node:path';
16
+ import { existsSync, mkdirSync, readFileSync, readdirSync, statSync, unlinkSync, writeFileSync } from 'node:fs';
17
+ import { join, resolve } from 'node:path';
18
18
  import { createRequire } from 'node:module';
19
19
  import { listBrain } from './brain.js';
20
20
  import { RECALL_USAGE_LOG_RELATIVE, aggregateRecallUsage, parseRecallUsageLog } from './recall-usage.js';
@@ -26,9 +26,27 @@ function sqlitePatternPath(projectRoot) {
26
26
  function consolidateWatermarkPath(projectRoot) {
27
27
  return join(projectRoot, '.dz', 'memory', 'consolidate.json');
28
28
  }
29
- /** Path of the live `/feature-adr` learning-state file (per-run panel source). */
30
- export function featureAdrStatePath(projectRoot) {
31
- return join(projectRoot, '.dz', 'feature-adr', 'learning-state.json');
29
+ /** Directory of the per-slug live `/feature-adr` learning-state slots. */
30
+ export function featureAdrStateDir(projectRoot) {
31
+ return join(projectRoot, '.dz', 'feature-adr', 'learning-state');
32
+ }
33
+ /** Make a slug safe as one bounded filename component (never `/`, `..`, or leading dot/dash). */
34
+ function featureAdrStateSlug(slug) {
35
+ const safe = slug
36
+ .replace(/[^A-Za-z0-9._-]/g, '_')
37
+ .replace(/^[.-]+/, '_')
38
+ .replace(/\.{2,}/g, '_')
39
+ .slice(0, 60);
40
+ return safe.length > 0 ? safe : '_unnamed';
41
+ }
42
+ /**
43
+ * Path of a live `/feature-adr` learning-state file. With a slug this is its namespaced slot;
44
+ * without one this remains the legacy single-slot path for backward-compatible readers/callers.
45
+ */
46
+ export function featureAdrStatePath(projectRoot, slug) {
47
+ return slug === undefined
48
+ ? join(projectRoot, '.dz', 'feature-adr', 'learning-state.json')
49
+ : join(featureAdrStateDir(projectRoot), `${featureAdrStateSlug(slug)}.json`);
32
50
  }
33
51
  /**
34
52
  * Freshness window for the `/feature-adr` panel: a run older than this is considered finished, so
@@ -135,38 +153,88 @@ function consolidatedAgeHours(projectRoot, now) {
135
153
  * @param now Injectable clock (epoch ms) for the freshness check — defaults to `Date.now()`.
136
154
  */
137
155
  export function readFeatureAdrState(projectRoot, now = Date.now()) {
138
- const path = featureAdrStatePath(resolve(projectRoot));
139
- if (!existsSync(path))
140
- return undefined;
156
+ const root = resolve(projectRoot);
157
+ const candidates = [];
158
+ // Keep the legacy single slot in the candidate set: an older dz may still be writing it while a
159
+ // newer statusline renders. Directory discovery is guarded separately because this is the hot,
160
+ // readonly ~300ms render path; it never performs housekeeping or any other write.
141
161
  try {
142
- const parsed = JSON.parse(readFileSync(path, 'utf-8'));
143
- if (typeof parsed.slug !== 'string' || parsed.slug.length === 0)
144
- return undefined;
145
- if (typeof parsed.step !== 'string' || parsed.step.length === 0)
146
- return undefined;
147
- if (typeof parsed.ts !== 'string')
148
- return undefined;
149
- const tsMs = Date.parse(parsed.ts);
150
- if (Number.isNaN(tsMs))
151
- return undefined;
152
- if (now - tsMs > FEATURE_ADR_FRESH_MS)
153
- return undefined; // stale run — do not surface a panel
154
- const num = (v) => (typeof v === 'number' && Number.isFinite(v) ? v : 0);
155
- const state = {
156
- slug: parsed.slug,
157
- step: parsed.step,
158
- pool: num(parsed.pool),
159
- recalled: num(parsed.recalled),
160
- stored: num(parsed.stored),
161
- ...(num(parsed.reinforced) > 0 ? { reinforced: num(parsed.reinforced) } : {}),
162
- ts: parsed.ts,
163
- ...(typeof parsed.mode === 'string' && parsed.mode.length > 0 ? { mode: parsed.mode } : {}),
164
- };
165
- return state;
162
+ const legacyPath = featureAdrStatePath(root);
163
+ if (existsSync(legacyPath))
164
+ candidates.push(legacyPath);
166
165
  }
167
- catch {
168
- return undefined;
166
+ catch { /* best-effort candidate discovery */ }
167
+ try {
168
+ const remaining = 64 - candidates.length;
169
+ if (remaining > 0) {
170
+ const dir = featureAdrStateDir(root);
171
+ const names = readdirSync(dir)
172
+ .filter((name) => name.endsWith('.json'))
173
+ .map((name) => {
174
+ let mtimeMs = -Infinity;
175
+ try {
176
+ mtimeMs = statSync(join(dir, name)).mtimeMs;
177
+ }
178
+ catch { /* a disappearing/unreadable entry sorts last */ }
179
+ return { name, mtimeMs };
180
+ })
181
+ // Truncation may only drop the least recent slots: kind-rank arbitration cannot rescue a non-candidate.
182
+ .sort((a, b) => b.mtimeMs - a.mtimeMs)
183
+ .slice(0, remaining);
184
+ for (const { name } of names)
185
+ candidates.push(join(dir, name));
186
+ }
187
+ }
188
+ catch { /* absent/unreadable per-slug directory is normal */ }
189
+ const parseCandidate = (path) => {
190
+ try {
191
+ const parsed = JSON.parse(readFileSync(path, 'utf-8'));
192
+ if (typeof parsed.slug !== 'string' || parsed.slug.length === 0)
193
+ return undefined;
194
+ if (typeof parsed.step !== 'string' || parsed.step.length === 0)
195
+ return undefined;
196
+ if (typeof parsed.ts !== 'string')
197
+ return undefined;
198
+ const tsMs = Date.parse(parsed.ts);
199
+ if (Number.isNaN(tsMs))
200
+ return undefined;
201
+ if (now - tsMs > FEATURE_ADR_FRESH_MS)
202
+ return undefined; // stale run — do not surface a panel
203
+ const num = (v) => (typeof v === 'number' && Number.isFinite(v) ? v : 0);
204
+ // The panel exists to surface the /feature-adr Pattern-memory loop. A generated loop writes
205
+ // zero recalled/stored counters far more often, so freshest-wins would recreate F5 by making
206
+ // a live pipeline's meaningful counters disappear. Missing/invalid legacy markers therefore
207
+ // retain the historical `feature-adr` rank, which outranks every loop slot regardless of ts.
208
+ const kind = parsed.kind === 'loop' ? 'loop' : 'feature-adr';
209
+ const state = {
210
+ kind,
211
+ slug: parsed.slug,
212
+ step: parsed.step,
213
+ pool: num(parsed.pool),
214
+ recalled: num(parsed.recalled),
215
+ stored: num(parsed.stored),
216
+ ...(num(parsed.reinforced) > 0 ? { reinforced: num(parsed.reinforced) } : {}),
217
+ ts: parsed.ts,
218
+ ...(typeof parsed.mode === 'string' && parsed.mode.length > 0 ? { mode: parsed.mode } : {}),
219
+ };
220
+ return { state, tsMs, rank: kind === 'feature-adr' ? 1 : 0 };
221
+ }
222
+ catch {
223
+ return undefined;
224
+ }
225
+ };
226
+ let winner;
227
+ for (const path of candidates) {
228
+ const candidate = parseCandidate(path);
229
+ if (candidate === undefined)
230
+ continue;
231
+ if (winner === undefined
232
+ || candidate.rank > winner.rank
233
+ || (candidate.rank === winner.rank && candidate.tsMs > winner.tsMs)) {
234
+ winner = candidate;
235
+ }
169
236
  }
237
+ return winner?.state;
170
238
  }
171
239
  /**
172
240
  * Record the live `/feature-adr` learning state — called by the pipeline at Steps 0/8/9. Computes
@@ -186,6 +254,7 @@ export function writeFeatureAdrState(projectRoot, input, now = Date.now()) {
186
254
  pool = 0;
187
255
  }
188
256
  const state = {
257
+ kind: input.kind === 'loop' ? 'loop' : 'feature-adr',
189
258
  slug: input.slug,
190
259
  step: input.step,
191
260
  pool,
@@ -196,8 +265,25 @@ export function writeFeatureAdrState(projectRoot, input, now = Date.now()) {
196
265
  ...(input.mode !== undefined && input.mode.length > 0 ? { mode: input.mode } : {}),
197
266
  };
198
267
  try {
199
- const path = featureAdrStatePath(root);
200
- mkdirSync(dirname(path), { recursive: true });
268
+ const dir = featureAdrStateDir(root);
269
+ mkdirSync(dir, { recursive: true });
270
+ // Housekeeping belongs only on this write path, never the ~300ms render path. Every file is
271
+ // independently guarded so an unreadable/racing entry cannot prevent the live state write.
272
+ try {
273
+ const cutoff = Date.now() - 24 * 60 * 60 * 1_000;
274
+ for (const name of readdirSync(dir)) {
275
+ if (!name.endsWith('.json'))
276
+ continue;
277
+ const stalePath = join(dir, name);
278
+ try {
279
+ if (statSync(stalePath).mtimeMs < cutoff)
280
+ unlinkSync(stalePath);
281
+ }
282
+ catch { /* best-effort per-file cleanup */ }
283
+ }
284
+ }
285
+ catch { /* best-effort directory cleanup */ }
286
+ const path = featureAdrStatePath(root, input.slug);
201
287
  writeFileSync(path, `${JSON.stringify(state, null, 2)}\n`);
202
288
  }
203
289
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"statusline.js","sourceRoot":"","sources":["../src/statusline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"statusline.js","sourceRoot":"","sources":["../src/statusline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,209 @@
1
+ /**
2
+ * Portable workflow trace bundles — the PURE half.
3
+ *
4
+ * The caller owns every external read and write. This module owns the decisions that must be
5
+ * replayable in a test: which ledger rows belong to a run, whether the harness-record layout is
6
+ * recognised, whether an import may touch a destination, and the exact relative writes it permits.
7
+ * Keeping those decisions independent of the host makes a refusal a value rather than a partially
8
+ * completed mutation.
9
+ */
10
+ /** The version is part of the wire contract: readers refuse versions they do not understand. */
11
+ export declare const TRACE_BUNDLE_SCHEMA = "trace-bundle/1";
12
+ /** Native shelves used by both local runs and imported runs. */
13
+ export declare const TRACE_BUNDLE_LEDGER_PATH = ".dz/feature-adr/run-cost-ledger.jsonl";
14
+ export declare const TRACE_BUNDLE_RUN_META_FILE = "run-meta.json";
15
+ export interface BundleMember {
16
+ /** path relative to the run directory, or the well-known source for non-run members */
17
+ readonly origin: string;
18
+ /** raw file content, verbatim — never re-serialised, never re-ordered */
19
+ readonly content: string;
20
+ }
21
+ /** Absence is data: a portable bundle must explain every source it could not carry. */
22
+ export type MemberSlot = {
23
+ readonly present: true;
24
+ readonly member: BundleMember;
25
+ } | {
26
+ readonly present: false;
27
+ readonly reason: string;
28
+ };
29
+ export interface HarnessRecordResult {
30
+ readonly modelsUsed: Record<string, string>;
31
+ readonly usageEvents?: unknown[];
32
+ readonly [key: string]: unknown;
33
+ }
34
+ /**
35
+ * The harness record is kept whole so a consumer can recompute attribution from the transported
36
+ * facts. These are only the fields this adapter recognises; extra persisted fields remain intact.
37
+ */
38
+ export interface HarnessRecord {
39
+ readonly runId: string;
40
+ readonly timestamp: string;
41
+ readonly agentCount: number;
42
+ readonly args: unknown;
43
+ readonly result: HarnessRecordResult;
44
+ readonly [key: string]: unknown;
45
+ }
46
+ /**
47
+ * Closed degradation vocabulary: callers can make strict-mode policy exhaustive.
48
+ * Only `layout-unrecognised` is ACTIONABLE; `records-absent`, `no-match`, `unreadable`, and
49
+ * `predates-model-routing` are not. The historical split follows a real-store measurement where
50
+ * 3 of 32 distinct slugs were valid older feature-ADR runs without per-stage model routing.
51
+ */
52
+ export type RunMetaReason = 'records-absent' | 'no-match' | 'unreadable' | 'predates-model-routing' | 'layout-unrecognised';
53
+ export type RunMeta = {
54
+ resolved: true;
55
+ records: HarnessRecord[];
56
+ /** Joined records that were NOT usable, so attribution can never silently fold fewer
57
+ * records than the run actually had. */
58
+ skipped: {
59
+ count: number;
60
+ historical: number;
61
+ unrecognised: number;
62
+ };
63
+ } | {
64
+ resolved: false;
65
+ reason: RunMetaReason;
66
+ };
67
+ export type Attribution = {
68
+ derived: true;
69
+ rule: string;
70
+ fromRecordIds: string[];
71
+ byStage: Record<string, string>;
72
+ } | {
73
+ derived: false;
74
+ reason: string;
75
+ };
76
+ export interface TraceBundle {
77
+ schema: string;
78
+ provenance: {
79
+ sourceRoot: string;
80
+ runAddress: string;
81
+ slug: string | null;
82
+ runId: string | null;
83
+ toolVersion: string;
84
+ createdAt: string | null;
85
+ };
86
+ trace: MemberSlot;
87
+ checkpoints: MemberSlot;
88
+ ledger: {
89
+ present: boolean;
90
+ scanned: number;
91
+ matched: number;
92
+ malformed: number;
93
+ lines: string[];
94
+ reason?: string;
95
+ };
96
+ pairs: {
97
+ included: false;
98
+ reason: 'not-requested' | 'no-pairs-found';
99
+ } | {
100
+ included: true;
101
+ files: BundleMember[];
102
+ };
103
+ runMeta: RunMeta;
104
+ attribution: Attribution;
105
+ }
106
+ /** Counts make an honestly empty slice distinguishable from an unread ledger. */
107
+ export interface LedgerSelection {
108
+ lines: string[];
109
+ scanned: number;
110
+ matched: number;
111
+ malformed: number;
112
+ }
113
+ /** All external facts needed to build a bundle; optional values degrade to named absence. */
114
+ export interface BuildBundleInput {
115
+ readonly sourceRoot: string;
116
+ readonly runAddress: string;
117
+ readonly slug?: string | null;
118
+ readonly runId?: string | null;
119
+ readonly toolVersion: string;
120
+ readonly createdAt?: string | null;
121
+ readonly trace?: MemberSlot | BundleMember | null;
122
+ readonly checkpoints?: MemberSlot | BundleMember | null;
123
+ /** null means the ledger itself was absent; each array item is one raw JSONL row. */
124
+ readonly ledgerLines?: readonly string[] | null;
125
+ readonly ledgerReason?: string;
126
+ readonly includePairs?: boolean;
127
+ readonly pairFiles?: readonly BundleMember[] | null;
128
+ /** Each item is an already-read record file body, or an already-parsed record. */
129
+ readonly records?: readonly unknown[] | null;
130
+ }
131
+ /** Refusals are deliberately small and discriminated so an importer cannot accidentally continue. */
132
+ export type ParseResult = {
133
+ ok: true;
134
+ bundle: TraceBundle;
135
+ } | {
136
+ ok: false;
137
+ reason: 'unparseable';
138
+ } | {
139
+ ok: false;
140
+ reason: 'unknown-schema';
141
+ found: string;
142
+ } | {
143
+ ok: false;
144
+ reason: 'member-shape';
145
+ member: string;
146
+ };
147
+ /** The two identities used by the existing run-addressing schemes. */
148
+ export interface RunIdentity {
149
+ readonly slug: string | null;
150
+ readonly runId: string | null;
151
+ }
152
+ /** Facts observed by the I/O caller; no path in the resulting plan is absolute. */
153
+ export interface ImportDestinationFacts {
154
+ /** Target run directory relative to the explicitly supplied destination root. */
155
+ readonly runDir?: string;
156
+ readonly existingPaths?: readonly string[] | ReadonlySet<string>;
157
+ readonly runDirHasContent: boolean;
158
+ /** Identity read from the target run, or null when a fresh target has none. */
159
+ readonly runIdentity: RunIdentity | null;
160
+ readonly force?: boolean;
161
+ readonly withPairs?: boolean;
162
+ /** File name/address of the imported bundle, persisted in the run-meta sidecar. */
163
+ readonly bundleName: string;
164
+ }
165
+ /** A caller executes writes only when ok is true; fatal refusals therefore produce no writes. */
166
+ export interface ImportPlan {
167
+ writes: {
168
+ path: string;
169
+ content: string;
170
+ }[];
171
+ refusals: {
172
+ path: string;
173
+ reason: string;
174
+ }[];
175
+ ok: boolean;
176
+ }
177
+ /**
178
+ * Select only rows attributable to this logical run. Slug fallback is deliberately disabled when
179
+ * a row carries any run id: otherwise a foreign loop run sharing a slug leaks into the slice.
180
+ */
181
+ export declare function selectLedgerRows(lines: readonly string[] | null | undefined, identity: {
182
+ readonly runId: string | null;
183
+ readonly slug: string | null;
184
+ } | null | undefined): LedgerSelection;
185
+ /**
186
+ * Join persisted harness records without guessing through an unfamiliar layout. Returning no
187
+ * records on a joined shape failure prevents a model-blind record from appearing model-aware.
188
+ */
189
+ export declare function resolveRunMeta(records: readonly unknown[] | null | undefined, slug: string | null): RunMeta;
190
+ /**
191
+ * Fold the labelled convenience view alongside its source records. Last-writer-wins is explicitly
192
+ * a policy choice, and the source ids let a later consumer choose and audit a different policy.
193
+ */
194
+ export declare function foldAttribution(records: readonly HarnessRecord[] | null | undefined): Attribution;
195
+ /** Assemble a bundle solely from facts the caller has already read. Malformed facts degrade safely. */
196
+ export declare function buildBundle(input: BuildBundleInput): TraceBundle;
197
+ /** JSON escaping changes only the container representation; member content round-trips verbatim. */
198
+ export declare function serializeBundle(bundle: TraceBundle): string;
199
+ /**
200
+ * Recognise the complete current format or refuse it. Validation finishes before the bundle is
201
+ * returned, so an importer can never receive a valid-looking subset of a corrupt artifact.
202
+ */
203
+ export declare function parseBundle(text: string): ParseResult;
204
+ /**
205
+ * Plan native-layout reconstruction without touching the destination. Every fatal check is
206
+ * completed before writes are returned, preserving the all-or-nothing refusal boundary.
207
+ */
208
+ export declare function planImport(bundle: TraceBundle, destFacts: ImportDestinationFacts): ImportPlan;
209
+ //# sourceMappingURL=trace-bundle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-bundle.d.ts","sourceRoot":"","sources":["../src/trace-bundle.ts"],"names":[],"mappings":"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"}