@younndai/lyt 0.9.9 → 0.10.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/README.md CHANGED
@@ -71,6 +71,19 @@ leaves (unique-leaf, errors on collision), aliases, and `lyt:vault:` origin
71
71
  coordinates all resolve to it. `lyt vault init <mesh>/<vault>` is
72
72
  create-if-missing.
73
73
 
74
+ ## Metadata that stays correct
75
+
76
+ Every note carries an 8-field frontmatter contract — title, real dates, tags, a `topic`, and a `purpose` you write. Lyt keeps it correct at rest, sets it at capture, and heals legacy files — without ever touching your prose:
77
+
78
+ ```bash
79
+ lyt capture "an idea" --dir projects/notes # choose where it lands; sets a topic interactively
80
+ lyt vault backfill <name> # fill missing frontmatter on an existing vault, in place
81
+ lyt vault reconcile <name> --apply # heal notes that are unindexed or missing metadata
82
+ lyt doctor # count notes with missing or invalid frontmatter
83
+ ```
84
+
85
+ Backfill fills titles, genuine created/modified dates (from git history), and keyword tags **with no model required** — on any vault, including one you just imported. `purpose` is left blank and flagged, never guessed; anything you authored is never overwritten. When a local embedding model is present, `topic:` is enriched too — capture *suggests* one for you to confirm (never auto-selected), and backfill assigns a confident match from your vault's existing labels, leaving it blank when unsure. Topics are ranked against your vault's current on-disk labels and computed on-device — nothing is sent anywhere. Every machine-filled field is provenance-stamped, so it stays distinguishable from your own writing.
86
+
74
87
  ## The Lyt toolchain
75
88
 
76
89
  Lyt is an open toolchain — `@younndai/lyt` composes these packages, and you can also depend on any of them directly:
@@ -1,5 +1,6 @@
1
1
  import type { Client } from "@libsql/client";
2
2
  import { type LytRunContext } from "@younndai/lyt-runner";
3
+ import { type Embedder } from "@younndai/lyt-vault";
3
4
  declare const MANDATORY_FIELDS: readonly ["title", "created", "modified", "tags", "purpose", "topic", "mesh-visibility", "weight"];
4
5
  type MandatoryField = (typeof MANDATORY_FIELDS)[number];
5
6
  export interface MetadataFillerArgs {
@@ -19,6 +20,18 @@ export interface MetadataFillerOutcome {
19
20
  filesWritten: string[];
20
21
  }
21
22
  export declare function runMetadataFillerBody(ctx: LytRunContext, args: MetadataFillerArgs): Promise<MetadataFillerOutcome>;
23
+ interface EnrichmentContext {
24
+ existingTopics: string[];
25
+ labelVectors: Float32Array[];
26
+ embedder: Embedder | null;
27
+ }
28
+ interface FigmentEnrichment {
29
+ topic: string | null;
30
+ topicConfidence?: number | null;
31
+ tags: string[];
32
+ }
33
+ declare function enrichFigment(raw: string, slug: string, ctx: EnrichmentContext): Promise<FigmentEnrichment>;
34
+ declare function resolveFaithfulDate(absPath: string, vaultPath: string, vaultIsGitRepo: boolean): Promise<string>;
22
35
  interface FillResult {
23
36
  content: string;
24
37
  fieldsFilled: MandatoryField[];
@@ -26,9 +39,15 @@ interface FillResult {
26
39
  interface FillDefaults {
27
40
  filenameSlug: string;
28
41
  now: string;
42
+ enriched?: FigmentEnrichment;
29
43
  }
30
44
  export declare function fillMissingMandatoryFields(raw: string, defaults: FillDefaults): FillResult;
31
- declare function walkMarkdownFiles(root: string): string[];
45
+ export declare function detectMissingMandatoryFields(raw: string): MandatoryField[];
46
+ export declare function detectBlankEnrichableFields(raw: string): ("topic" | "tags")[];
47
+ declare function renderTagsValue(tags: readonly string[]): string;
48
+ declare function renderTopicValue(topic: string | null): string;
32
49
  export { MANDATORY_FIELDS };
33
- export { walkMarkdownFiles as _walkMarkdownFilesForTests };
50
+ export { resolveFaithfulDate as _resolveFaithfulDateForTests };
51
+ export { enrichFigment as _enrichFigmentForTests, renderTagsValue as _renderTagsValueForTests, renderTopicValue as _renderTopicValueForTests, };
52
+ export type { EnrichmentContext as _EnrichmentContext, FigmentEnrichment as _FigmentEnrichment };
34
53
  //# sourceMappingURL=metadata-filler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata-filler.d.ts","sourceRoot":"","sources":["../../src/automator-bodies/metadata-filler.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAA0B,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAElF,QAAA,MAAM,gBAAgB,oGASZ,CAAC;AAEX,KAAK,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAExD,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IAGzB,aAAa,CAAC,EAAE;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAG1B,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,qBAAqB,CAAC,CAqChC;AASD,UAAU,UAAU;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,cAAc,EAAE,CAAC;CAChC;AAED,UAAU,YAAY;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,UAAU,CA6D1F;AAgCD,iBAAS,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAuBjD;AAaD,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAC5B,OAAO,EAAE,iBAAiB,IAAI,0BAA0B,EAAE,CAAC"}
1
+ {"version":3,"file":"metadata-filler.d.ts","sourceRoot":"","sources":["../../src/automator-bodies/metadata-filler.ts"],"names":[],"mappings":"AA6EA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAA0B,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAcL,KAAK,QAAQ,EACd,MAAM,qBAAqB,CAAC;AAE7B,QAAA,MAAM,gBAAgB,oGASZ,CAAC;AAEX,KAAK,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAExD,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IAGzB,aAAa,CAAC,EAAE;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAG1B,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,qBAAqB,CAAC,CAwHhC;AAuBD,UAAU,iBAAiB;IAIzB,cAAc,EAAE,MAAM,EAAE,CAAC;IAMzB,YAAY,EAAE,YAAY,EAAE,CAAC;IAE7B,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;CAC3B;AAED,UAAU,iBAAiB;IAEzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAQrB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhC,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AA8DD,iBAAe,aAAa,CAC1B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,iBAAiB,GACrB,OAAO,CAAC,iBAAiB,CAAC,CA+B5B;AAoBD,iBAAe,mBAAmB,CAChC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,OAAO,GACtB,OAAO,CAAC,MAAM,CAAC,CA0BjB;AASD,UAAU,UAAU;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,cAAc,EAAE,CAAC;CAChC;AAED,UAAU,YAAY;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IAMZ,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,UAAU,CAU1F;AAqID,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,EAAE,CAqC1E;AAYD,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,EAAE,CAiC7E;AAuCD,iBAAS,eAAe,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAIxD;AAMD,iBAAS,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAGtD;AAiBD,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B,OAAO,EAAE,mBAAmB,IAAI,4BAA4B,EAAE,CAAC;AAE/D,OAAO,EACL,aAAa,IAAI,sBAAsB,EACvC,eAAe,IAAI,wBAAwB,EAC3C,gBAAgB,IAAI,yBAAyB,GAC9C,CAAC;AACF,YAAY,EAAE,iBAAiB,IAAI,kBAAkB,EAAE,iBAAiB,IAAI,kBAAkB,EAAE,CAAC"}
@@ -1,6 +1,7 @@
1
- import { readdirSync, readFileSync, statSync } from "node:fs";
2
- import { join, relative, sep, posix } from "node:path";
1
+ import { readFileSync, statSync } from "node:fs";
2
+ import { relative, sep, posix } from "node:path";
3
3
  import { writeMarkdownWithStamp } from "@younndai/lyt-runner";
4
+ import { classifyTopic, embedderMemoized, gitCommitterDateToIso, isGitRepo, isIndexable, loadEmbedder, modelCachePresent, parseFigmentTopicTags, precomputeTopicLabelVectors, runGit, stripFrontmatter, suggestFigmentTags, walkVaultMarkdownFiles, } from "@younndai/lyt-vault";
4
5
  const MANDATORY_FIELDS = [
5
6
  "title",
6
7
  "created",
@@ -12,22 +13,39 @@ const MANDATORY_FIELDS = [
12
13
  "weight",
13
14
  ];
14
15
  export async function runMetadataFillerBody(ctx, args) {
15
- const notesRoot = join(args.vaultPath, "notes");
16
- const targets = walkMarkdownFiles(notesRoot);
16
+ const targets = walkVaultMarkdownFiles(args.vaultPath, isIndexable);
17
17
  const outcome = {
18
18
  filesScanned: targets.length,
19
19
  filesMutated: 0,
20
20
  fieldsFilledTotal: 0,
21
21
  filesWritten: [],
22
22
  };
23
+ const vaultIsGitRepo = await isGitRepo(args.vaultPath);
24
+ const enrichCtx = await resolveEnrichmentContext(targets);
23
25
  for (const absPath of targets) {
24
26
  const raw = readFileSync(absPath, "utf8");
27
+ const missing = detectMissingMandatoryFields(raw);
28
+ const blankEnrichable = detectBlankEnrichableFields(raw);
29
+ if (missing.length === 0 && blankEnrichable.length === 0)
30
+ continue;
31
+ const faithfulDate = await resolveFaithfulDate(absPath, args.vaultPath, vaultIsGitRepo);
32
+ const wantsTopic = missing.includes("topic") || blankEnrichable.includes("topic");
33
+ const wantsTags = missing.includes("tags") || blankEnrichable.includes("tags");
34
+ const enriched = wantsTopic || wantsTags
35
+ ? await enrichFigment(raw, filenameSlug(absPath), enrichCtx)
36
+ : undefined;
25
37
  const filled = fillMissingMandatoryFields(raw, {
26
38
  filenameSlug: filenameSlug(absPath),
27
- now: new Date(ctx.startedAt).toISOString(),
39
+ now: faithfulDate,
40
+ ...(enriched !== undefined ? { enriched } : {}),
28
41
  });
29
42
  if (filled.fieldsFilled.length === 0)
30
43
  continue;
44
+ const enrichedFields = enriched !== undefined
45
+ ? filled.fieldsFilled.filter((f) => (f === "topic" && enriched.topic !== null) ||
46
+ (f === "tags" && enriched.tags.length > 0))
47
+ : [];
48
+ const topicWasEnriched = enrichedFields.includes("topic");
31
49
  await writeMarkdownWithStamp(ctx, args.vaultDb, {
32
50
  path: absPath,
33
51
  content: filled.content,
@@ -36,7 +54,13 @@ export async function runMetadataFillerBody(ctx, args) {
36
54
  src: `automator:${args.automatorName}/v${args.automatorVersion}`,
37
55
  method: "filler",
38
56
  confidence: 1.0,
39
- details: { fields_filled: filled.fieldsFilled },
57
+ details: {
58
+ fields_filled: filled.fieldsFilled,
59
+ ...(enrichedFields.length > 0 ? { enriched_fields: enrichedFields } : {}),
60
+ ...(topicWasEnriched && enriched?.topicConfidence !== null && enriched?.topicConfidence !== undefined
61
+ ? { topic_confidence: enriched.topicConfidence }
62
+ : {}),
63
+ },
40
64
  },
41
65
  ...(args.ledgerClients !== undefined ? { ledgerClients: args.ledgerClients } : {}),
42
66
  });
@@ -46,8 +70,91 @@ export async function runMetadataFillerBody(ctx, args) {
46
70
  }
47
71
  return outcome;
48
72
  }
73
+ async function resolveEnrichmentContext(targets) {
74
+ const rawTopics = [];
75
+ const seen = new Set();
76
+ for (const absPath of targets) {
77
+ let topic = null;
78
+ try {
79
+ topic = parseFigmentTopicTags(readFileSync(absPath, "utf8")).topic;
80
+ }
81
+ catch {
82
+ continue;
83
+ }
84
+ if (topic === null)
85
+ continue;
86
+ const trimmed = topic.trim();
87
+ if (trimmed.length === 0)
88
+ continue;
89
+ const key = trimmed.toLowerCase();
90
+ if (seen.has(key))
91
+ continue;
92
+ seen.add(key);
93
+ rawTopics.push(trimmed);
94
+ }
95
+ let embedder = null;
96
+ if (modelCachePresent() || embedderMemoized()) {
97
+ try {
98
+ const load = await loadEmbedder();
99
+ if (load.available)
100
+ embedder = load.embedder;
101
+ }
102
+ catch {
103
+ embedder = null;
104
+ }
105
+ }
106
+ const { labels, vectors } = await precomputeTopicLabelVectors(rawTopics, embedder);
107
+ return { existingTopics: labels, labelVectors: vectors, embedder };
108
+ }
109
+ async function enrichFigment(raw, slug, ctx) {
110
+ const body = stripFrontmatter(raw);
111
+ const title = slug.replace(/[-_]+/g, " ").trim();
112
+ const figmentText = `${title}\n${body}`.trim();
113
+ const tags = figmentText.length > 0 ? suggestFigmentTags(title, body) : [];
114
+ let topic = null;
115
+ let topicConfidence = null;
116
+ if (ctx.embedder !== null && ctx.existingTopics.length > 0 && figmentText.length > 0) {
117
+ const result = await classifyTopic(figmentText, ctx.existingTopics, ctx.embedder, {
118
+ labelVectors: ctx.labelVectors,
119
+ });
120
+ topic = result.topic;
121
+ if (topic !== null) {
122
+ const hit = result.ranked.find((r) => r.topic === topic);
123
+ topicConfidence = hit !== undefined ? hit.score : null;
124
+ }
125
+ }
126
+ return { topic, topicConfidence, tags };
127
+ }
128
+ async function resolveFaithfulDate(absPath, vaultPath, vaultIsGitRepo) {
129
+ if (vaultIsGitRepo) {
130
+ try {
131
+ const rel = relative(vaultPath, absPath).split(sep).join(posix.sep);
132
+ const r = await runGit(["log", "-1", "--format=%ct", "--", rel], {
133
+ cwd: vaultPath,
134
+ allowFailure: true,
135
+ });
136
+ if (r.code === 0) {
137
+ const raw = r.stdout.trim();
138
+ if (raw.length > 0) {
139
+ const iso = gitCommitterDateToIso(raw);
140
+ if (iso !== null)
141
+ return iso;
142
+ }
143
+ }
144
+ }
145
+ catch {
146
+ }
147
+ }
148
+ return new Date(statSync(absPath).mtimeMs).toISOString();
149
+ }
49
150
  const FRONTMATTER_DELIM = "---";
50
151
  export function fillMissingMandatoryFields(raw, defaults) {
152
+ const BOM = String.fromCodePoint(0xfeff);
153
+ const hasBom = raw.startsWith(BOM);
154
+ const inner = fillMissingMandatoryFieldsInner(hasBom ? raw.slice(1) : raw, defaults);
155
+ return hasBom ? { ...inner, content: BOM + inner.content } : inner;
156
+ }
157
+ function fillMissingMandatoryFieldsInner(raw, defaults) {
51
158
  const lines = raw.split(/\r?\n/);
52
159
  let firstNonEmpty = -1;
53
160
  for (let i = 0; i < lines.length; i++) {
@@ -79,25 +186,137 @@ export function fillMissingMandatoryFields(raw, defaults) {
79
186
  }
80
187
  const present = new Set();
81
188
  for (let i = firstNonEmpty + 1; i < closeIdx; i++) {
82
- const lineNoIndent = lines[i].replace(/^\s+/, "");
189
+ const line = lines[i];
190
+ if (/^\s/.test(line))
191
+ continue;
83
192
  for (const f of MANDATORY_FIELDS) {
84
- if (lineNoIndent.startsWith(`${f}:`) || lineNoIndent.startsWith(`${f} :`)) {
193
+ if (line.startsWith(`${f}:`) || line.startsWith(`${f} :`)) {
85
194
  present.add(f);
86
195
  break;
87
196
  }
88
197
  }
89
198
  }
90
199
  const missing = MANDATORY_FIELDS.filter((f) => !present.has(f));
91
- if (missing.length === 0) {
200
+ const blankReplaced = [];
201
+ for (const field of ["topic", "tags"]) {
202
+ if (!present.has(field))
203
+ continue;
204
+ const rendered = renderDefault(field, defaults);
205
+ if (rendered === blankDefaultFor(field))
206
+ continue;
207
+ for (let i = firstNonEmpty + 1; i < closeIdx; i++) {
208
+ const line = lines[i];
209
+ if (/^\s/.test(line))
210
+ continue;
211
+ if (!(line.startsWith(`${field}:`) || line.startsWith(`${field} :`)))
212
+ continue;
213
+ const value = line.slice(line.indexOf(":") + 1).trim();
214
+ if (!isBlankEnrichableValue(field, value))
215
+ break;
216
+ lines[i] = `${field}: ${rendered}`;
217
+ blankReplaced.push(field);
218
+ break;
219
+ }
220
+ }
221
+ if (missing.length === 0 && blankReplaced.length === 0) {
92
222
  return { content: raw, fieldsFilled: [] };
93
223
  }
94
224
  const insertions = missing.map((f) => `${f}: ${renderDefault(f, defaults)}`);
95
- lines.splice(closeIdx, 0, ...insertions);
225
+ if (insertions.length > 0)
226
+ lines.splice(closeIdx, 0, ...insertions);
96
227
  return {
97
228
  content: lines.join("\n"),
98
- fieldsFilled: missing,
229
+ fieldsFilled: [...missing, ...blankReplaced],
99
230
  };
100
231
  }
232
+ function isBlankEnrichableValue(field, value) {
233
+ const v = value.trim();
234
+ if (v.length === 0)
235
+ return true;
236
+ if (v === '""' || v === "''")
237
+ return true;
238
+ if (field === "tags" && v === "[]")
239
+ return true;
240
+ return false;
241
+ }
242
+ function blankDefaultFor(field) {
243
+ return field === "tags" ? "[]" : '""';
244
+ }
245
+ export function detectMissingMandatoryFields(raw) {
246
+ const BOM = String.fromCodePoint(0xfeff);
247
+ const inner = raw.startsWith(BOM) ? raw.slice(1) : raw;
248
+ const lines = inner.split(/\r?\n/);
249
+ let firstNonEmpty = -1;
250
+ for (let i = 0; i < lines.length; i++) {
251
+ if (lines[i].length > 0) {
252
+ firstNonEmpty = i;
253
+ break;
254
+ }
255
+ }
256
+ if (firstNonEmpty === -1 || lines[firstNonEmpty] !== FRONTMATTER_DELIM) {
257
+ return [...MANDATORY_FIELDS];
258
+ }
259
+ let closeIdx = -1;
260
+ for (let i = firstNonEmpty + 1; i < lines.length; i++) {
261
+ if (lines[i] === FRONTMATTER_DELIM) {
262
+ closeIdx = i;
263
+ break;
264
+ }
265
+ }
266
+ if (closeIdx === -1)
267
+ return [...MANDATORY_FIELDS];
268
+ const present = new Set();
269
+ for (let i = firstNonEmpty + 1; i < closeIdx; i++) {
270
+ const line = lines[i];
271
+ if (/^\s/.test(line))
272
+ continue;
273
+ for (const f of MANDATORY_FIELDS) {
274
+ if (line.startsWith(`${f}:`) || line.startsWith(`${f} :`)) {
275
+ present.add(f);
276
+ break;
277
+ }
278
+ }
279
+ }
280
+ return MANDATORY_FIELDS.filter((f) => !present.has(f));
281
+ }
282
+ export function detectBlankEnrichableFields(raw) {
283
+ const BOM = String.fromCodePoint(0xfeff);
284
+ const inner = raw.startsWith(BOM) ? raw.slice(1) : raw;
285
+ const lines = inner.split(/\r?\n/);
286
+ let firstNonEmpty = -1;
287
+ for (let i = 0; i < lines.length; i++) {
288
+ if (lines[i].length > 0) {
289
+ firstNonEmpty = i;
290
+ break;
291
+ }
292
+ }
293
+ if (firstNonEmpty === -1 || lines[firstNonEmpty] !== FRONTMATTER_DELIM)
294
+ return [];
295
+ let closeIdx = -1;
296
+ for (let i = firstNonEmpty + 1; i < lines.length; i++) {
297
+ if (lines[i] === FRONTMATTER_DELIM) {
298
+ closeIdx = i;
299
+ break;
300
+ }
301
+ }
302
+ if (closeIdx === -1)
303
+ return [];
304
+ const blank = [];
305
+ for (const field of ["topic", "tags"]) {
306
+ for (let i = firstNonEmpty + 1; i < closeIdx; i++) {
307
+ const line = lines[i];
308
+ if (/^\s/.test(line))
309
+ continue;
310
+ if (!(line.startsWith(`${field}:`) || line.startsWith(`${field} :`)))
311
+ continue;
312
+ const value = line.slice(line.indexOf(":") + 1).trim();
313
+ if (isBlankEnrichableValue(field, value))
314
+ blank.push(field);
315
+ break;
316
+ }
317
+ }
318
+ return blank;
319
+ }
101
320
  function renderFreshFrontmatter(defaults) {
102
321
  const body = MANDATORY_FIELDS.map((f) => `${f}: ${renderDefault(f, defaults)}`).join("\n");
103
322
  return `---\n${body}\n---`;
@@ -111,43 +330,27 @@ function renderDefault(field, defaults) {
111
330
  case "modified":
112
331
  return defaults.now;
113
332
  case "tags":
114
- return "[]";
333
+ return renderTagsValue(defaults.enriched?.tags ?? []);
115
334
  case "purpose":
116
335
  return '""';
117
336
  case "topic":
118
- return '""';
337
+ return renderTopicValue(defaults.enriched?.topic ?? null);
119
338
  case "mesh-visibility":
120
339
  return "local";
121
340
  case "weight":
122
341
  return "3";
123
342
  }
124
343
  }
125
- function walkMarkdownFiles(root) {
126
- const out = [];
127
- let names;
128
- try {
129
- names = readdirSync(root);
130
- }
131
- catch {
132
- return out;
133
- }
134
- for (const name of names) {
135
- const p = join(root, name);
136
- let stat;
137
- try {
138
- stat = statSync(p);
139
- }
140
- catch {
141
- continue;
142
- }
143
- if (stat.isDirectory()) {
144
- out.push(...walkMarkdownFiles(p));
145
- }
146
- else if (stat.isFile() && p.toLowerCase().endsWith(".md")) {
147
- out.push(p);
148
- }
149
- }
150
- return out;
344
+ function renderTagsValue(tags) {
345
+ if (tags.length === 0)
346
+ return "[]";
347
+ const items = tags.map((t) => `"${t.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`);
348
+ return `[${items.join(", ")}]`;
349
+ }
350
+ function renderTopicValue(topic) {
351
+ if (topic === null || topic.trim().length === 0)
352
+ return '""';
353
+ return `"${topic.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`;
151
354
  }
152
355
  function filenameSlug(absPath) {
153
356
  const parts = absPath.split(/[\\/]/);
@@ -158,5 +361,6 @@ function toVaultRel(absPath, vaultRoot) {
158
361
  return relative(vaultRoot, absPath).split(sep).join(posix.sep);
159
362
  }
160
363
  export { MANDATORY_FIELDS };
161
- export { walkMarkdownFiles as _walkMarkdownFilesForTests };
364
+ export { resolveFaithfulDate as _resolveFaithfulDateForTests };
365
+ export { enrichFigment as _enrichFigmentForTests, renderTagsValue as _renderTagsValueForTests, renderTopicValue as _renderTopicValueForTests, };
162
366
  //# sourceMappingURL=metadata-filler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata-filler.js","sourceRoot":"","sources":["../../src/automator-bodies/metadata-filler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metadata-filler.js","sourceRoot":"","sources":["../../src/automator-bodies/metadata-filler.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -7,11 +7,14 @@ import { buildSkillsCommand } from "@younndai/lyt-skills";
7
7
  import { registerVaultVerbs } from "@younndai/lyt-vault";
8
8
  import { buildAgentManualCommand, buildDiscoverCommand, buildRepairCommand, } from "@younndai/lyt-vault";
9
9
  import { buildAutomatorRunSubcommand } from "./cli-automator-run.js";
10
+ import { buildBackfillCommand } from "./commands/backfill.js";
10
11
  import { buildBenchCommand } from "./commands/bench.js";
11
12
  import { buildCaptureCommand } from "./commands/capture.js";
13
+ import { buildContractCommand } from "./commands/contract.js";
12
14
  import { buildLytInitCommand } from "./commands/init.js";
13
15
  import { buildModelCommand } from "./commands/model.js";
14
16
  import { buildPrimerCommand } from "./commands/primer.js";
17
+ import { buildReconcileCommand } from "./commands/reconcile.js";
15
18
  import { buildReindexCommand } from "./commands/reindex.js";
16
19
  import { buildSearchCommand } from "./commands/search.js";
17
20
  const program = new Command();
@@ -32,11 +35,18 @@ if (automatorCmd === undefined) {
32
35
  throw new Error("@younndai/lyt meta CLI: expected registerVaultVerbs to register an 'automator' command but none was found.");
33
36
  }
34
37
  automatorCmd.addCommand(buildAutomatorRunSubcommand());
38
+ const vaultCmd = program.commands.find((c) => c.name() === "vault");
39
+ if (vaultCmd === undefined) {
40
+ throw new Error("@younndai/lyt meta CLI: expected registerVaultVerbs to register a 'vault' command but none was found.");
41
+ }
42
+ vaultCmd.addCommand(buildBackfillCommand());
43
+ vaultCmd.addCommand(buildReconcileCommand());
35
44
  program.addCommand(buildSyncCommand());
36
45
  program.addCommand(buildPodStatusCommand());
37
46
  program.addCommand(buildMcpSubcommand());
38
47
  program.addCommand(buildSearchCommand());
39
48
  program.addCommand(buildCaptureCommand());
49
+ program.addCommand(buildContractCommand());
40
50
  program.addCommand(buildPrimerCommand());
41
51
  program.addCommand(buildReindexCommand());
42
52
  program.addCommand(buildModelCommand());
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function buildBackfillCommand(): Command;
3
+ //# sourceMappingURL=backfill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backfill.d.ts","sourceRoot":"","sources":["../../src/commands/backfill.ts"],"names":[],"mappings":"AA4CA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgCpC,wBAAgB,oBAAoB,IAAI,OAAO,CAmG9C"}
@@ -0,0 +1,101 @@
1
+ import { Command } from "commander";
2
+ import { reconcileVaultScan } from "@younndai/lyt-vault";
3
+ import { runAutomator } from "../automator-run.js";
4
+ function asOutcome(body) {
5
+ const o = (body ?? {});
6
+ return {
7
+ filesScanned: typeof o.filesScanned === "number" ? o.filesScanned : 0,
8
+ filesMutated: typeof o.filesMutated === "number" ? o.filesMutated : 0,
9
+ fieldsFilledTotal: typeof o.fieldsFilledTotal === "number" ? o.fieldsFilledTotal : 0,
10
+ filesWritten: Array.isArray(o.filesWritten) ? o.filesWritten : [],
11
+ };
12
+ }
13
+ export function buildBackfillCommand() {
14
+ return new Command("backfill")
15
+ .description("Backfill missing frontmatter across a vault's figments (deterministic: real git/fs dates, purpose/topic left blank + flagged, provenance-stamped). Never overwrites existing values. Writes locally; use --push to also commit + push. NOT `lyt repair`.")
16
+ .argument("<name>", "Vault name to backfill (must be registered)")
17
+ .option("--dry-run", "Preview which figments WOULD be filled — read-only, writes nothing")
18
+ .option("--push", "Also git-commit + push the fills (default: write locally, run `lyt sync` to publish)")
19
+ .option("--json", "Emit a JSON result instead of the human-readable summary")
20
+ .action(async (name, opts) => {
21
+ if (opts.dryRun === true) {
22
+ let scan;
23
+ try {
24
+ scan = await reconcileVaultScan(name);
25
+ }
26
+ catch (err) {
27
+ reportError(opts, name, err);
28
+ process.exit(1);
29
+ }
30
+ const wouldFill = scan.missingFrontmatter;
31
+ if (opts.json === true) {
32
+ console.log(JSON.stringify({
33
+ dry_run: true,
34
+ vault: { name: scan.vaultName, path: scan.vaultPath },
35
+ scanned: scan.scanned,
36
+ would_fill: wouldFill.length,
37
+ figments: wouldFill,
38
+ }, null, 2));
39
+ }
40
+ else {
41
+ console.log(`backfill --dry-run ${scan.vaultName}: ${wouldFill.length}/${scan.scanned} figment(s) would be filled (nothing written).`);
42
+ for (const f of wouldFill.slice(0, 20)) {
43
+ console.log(` ${f.relPath} — missing: ${f.missing.join(", ")}`);
44
+ }
45
+ if (wouldFill.length > 20) {
46
+ console.log(` … and ${wouldFill.length - 20} more`);
47
+ }
48
+ }
49
+ return;
50
+ }
51
+ let result;
52
+ try {
53
+ result = await runAutomator({
54
+ automator: "metadata-filler",
55
+ vault: name,
56
+ ...(opts.push !== true ? { noPush: true } : {}),
57
+ });
58
+ }
59
+ catch (err) {
60
+ reportError(opts, name, err);
61
+ process.exit(1);
62
+ }
63
+ const outcome = asOutcome(result.body);
64
+ const payload = {
65
+ ok: result.ok,
66
+ vault: { name: result.plan.vaultName, path: result.plan.vaultPath },
67
+ automator_version: result.automatorVersion,
68
+ status: result.status,
69
+ error_summary: result.errorSummary,
70
+ pushed: opts.push === true,
71
+ files_scanned: outcome.filesScanned,
72
+ files_mutated: outcome.filesMutated,
73
+ fields_filled_total: outcome.fieldsFilledTotal,
74
+ files_written: outcome.filesWritten,
75
+ };
76
+ if (opts.json === true) {
77
+ console.log(JSON.stringify(payload, null, 2));
78
+ }
79
+ else {
80
+ console.log(`${result.ok ? "✓" : "✗"} backfill ${payload.vault.name}: ` +
81
+ `${outcome.filesMutated}/${outcome.filesScanned} figment(s) filled ` +
82
+ `(${outcome.fieldsFilledTotal} field(s))${opts.push === true ? " [pushed]" : " [local — run `lyt sync` to publish]"}` +
83
+ `${payload.error_summary !== null ? ` — ${payload.error_summary}` : ""}`);
84
+ if (outcome.filesMutated === 0 && result.ok) {
85
+ console.log(" all figments already carry contract-valid frontmatter (nothing to fill).");
86
+ }
87
+ }
88
+ if (!result.ok)
89
+ process.exit(1);
90
+ });
91
+ }
92
+ function reportError(opts, name, err) {
93
+ const msg = err instanceof Error ? err.message : String(err);
94
+ if (opts.json === true) {
95
+ console.log(JSON.stringify({ ok: false, vault: name, error: msg }, null, 2));
96
+ }
97
+ else {
98
+ console.error(`✗ backfill ${name}: ${msg}`);
99
+ }
100
+ }
101
+ //# sourceMappingURL=backfill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backfill.js","sourceRoot":"","sources":["../../src/commands/backfill.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,18 @@
1
1
  import { Command } from "commander";
2
2
  export declare function buildCaptureCommand(): Command;
3
+ export type TopicPick = {
4
+ kind: "reprompt";
5
+ } | {
6
+ kind: "existing";
7
+ index: number;
8
+ } | {
9
+ kind: "new";
10
+ } | {
11
+ kind: "typed";
12
+ value: string;
13
+ };
14
+ export declare function interpretTopicPick(answer: string, count: number): TopicPick;
15
+ export declare function resolveTopicFolderDir(explicitDir: string | undefined, topicFolder: boolean | undefined, topic: string | undefined): string | undefined;
16
+ export declare function topicToFolderName(topic: string): string;
3
17
  export declare function parseTagsOpt(raw: string | undefined): string | undefined;
4
18
  //# sourceMappingURL=capture.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../src/commands/capture.ts"],"names":[],"mappings":"AAkCA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiCpC,wBAAgB,mBAAmB,IAAI,OAAO,CA+C7C;AA2LD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAYxE"}
1
+ {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../src/commands/capture.ts"],"names":[],"mappings":"AAkCA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqCpC,wBAAgB,mBAAmB,IAAI,OAAO,CAuD7C;AA+ND,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GACf;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAErC,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAU3E;AAmDD,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,WAAW,EAAE,OAAO,GAAG,SAAS,EAChC,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,MAAM,GAAG,SAAS,CAMpB;AAQD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAYvD;AA8BD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAYxE"}
@@ -1,6 +1,6 @@
1
1
  import { Command } from "commander";
2
2
  import { createInterface } from "node:readline/promises";
3
- import { captureIndexFlow, closeRegistry, getVaultByName, listVaults, openRegistry, patternRunFlow, } from "@younndai/lyt-vault";
3
+ import { captureIndexFlow, closeRegistry, getVaultByName, listVaults, rankVaultTopicsFlow, openRegistry, patternRunFlow, } from "@younndai/lyt-vault";
4
4
  const CAPTURE_PATTERN = "knowledge-capture";
5
5
  const CAPTURE_VERB = "capture";
6
6
  const POD_MAP_VAULT_NAME = "lyt-pod-map";
@@ -16,6 +16,8 @@ export function buildCaptureCommand() {
16
16
  .option("--weight <n>", "Importance 1-5 (default 3)")
17
17
  .option("--mesh-visibility <v>", "local | parent | public (default local)")
18
18
  .option("--slug <slug>", "Filename slug (default: derived from the title)")
19
+ .option("--dir <vault-relative>", "Destination directory inside the vault (default: notes/). Fail-closed: rejects '..', absolute paths, and the reserved .lyt/.obsidian/.git trees.")
20
+ .option("--topic-folder", "Route the capture into a topic-named folder (topics/<topic-slug>/) instead of notes/. Opt-in; ignored when --dir is given (explicit wins). The topic still sets the `topic:` field either way.")
19
21
  .option("--vars <kv>", "Repeatable key=value override (advanced)", collectVars, {})
20
22
  .option("--index-only <relpath>", "Index an already-written figment (the /lyt-capture skill uses this after its inline Write); requires --vault. Does NOT write.")
21
23
  .option("--json", "Emit JSON")
@@ -76,7 +78,7 @@ async function runCapture(text, opts) {
76
78
  }
77
79
  const slug = opts.slug ?? slugify(title);
78
80
  const purpose = opts.purpose ?? opts.vars["purpose"] ?? (await promptIfTty("Why keep this? (purpose): "));
79
- const topic = opts.topic ?? opts.vars["topic"] ?? (await promptIfTty("Topic (semantic category): "));
81
+ const topic = opts.topic ?? opts.vars["topic"] ?? (await resolveTopicInteractive(vaultName, `${title}\n${text ?? ""}`));
80
82
  const tags = parseTagsOpt(opts.tags);
81
83
  const vars = {
82
84
  title,
@@ -87,11 +89,13 @@ async function runCapture(text, opts) {
87
89
  ...(opts.meshVisibility !== undefined ? { "mesh-visibility": opts.meshVisibility } : {}),
88
90
  ...opts.vars,
89
91
  };
92
+ const dir = resolveTopicFolderDir(opts.dir, opts.topicFolder, topic);
90
93
  const r = await patternRunFlow({
91
94
  patternName: CAPTURE_PATTERN,
92
95
  verbId: CAPTURE_VERB,
93
96
  vaultName,
94
97
  slug,
98
+ ...(dir !== undefined ? { dir } : {}),
95
99
  vars,
96
100
  });
97
101
  if (opts.json === true) {
@@ -138,6 +142,88 @@ async function promptIfTty(question) {
138
142
  rl.close();
139
143
  }
140
144
  }
145
+ async function resolveTopicInteractive(vaultName, figmentText) {
146
+ if (process.stdin.isTTY !== true)
147
+ return undefined;
148
+ let topics = [];
149
+ let recommendedTopic = null;
150
+ try {
151
+ const ranked = await rankVaultTopicsFlow({
152
+ vaultName,
153
+ ...(figmentText !== undefined ? { figmentText } : {}),
154
+ });
155
+ topics = ranked.topics;
156
+ recommendedTopic = ranked.recommendedTopic;
157
+ }
158
+ catch {
159
+ topics = [];
160
+ recommendedTopic = null;
161
+ }
162
+ if (topics.length === 0) {
163
+ return promptIfTty("Topic (semantic category): ");
164
+ }
165
+ return pickTopicTty(topics, recommendedTopic);
166
+ }
167
+ export function interpretTopicPick(answer, count) {
168
+ const ans = answer.trim();
169
+ if (ans.length === 0)
170
+ return { kind: "reprompt" };
171
+ const n = Number(ans);
172
+ if (Number.isInteger(n)) {
173
+ if (n >= 1 && n <= count)
174
+ return { kind: "existing", index: n - 1 };
175
+ if (n === count + 1)
176
+ return { kind: "new" };
177
+ return { kind: "reprompt" };
178
+ }
179
+ return { kind: "typed", value: ans };
180
+ }
181
+ async function pickTopicTty(topics, recommendedTopic = null) {
182
+ const top = topics.slice(0, 9);
183
+ const otherIdx = top.length + 1;
184
+ const recommendedShown = recommendedTopic !== null && top.some((t) => t.topic === recommendedTopic);
185
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
186
+ try {
187
+ console.log("Topic (semantic category) — existing topics in this vault:");
188
+ top.forEach((t, i) => {
189
+ const mark = recommendedShown && t.topic === recommendedTopic ? " ★ recommended" : "";
190
+ console.log(` ${i + 1}. ${t.topic} (${t.figmentCount})${mark}`);
191
+ });
192
+ console.log(` ${otherIdx}. (other — type a new topic)`);
193
+ for (let attempt = 0; attempt < 5; attempt++) {
194
+ const pick = interpretTopicPick(await rl.question("Pick a number, or type a new topic: "), top.length);
195
+ if (pick.kind === "existing")
196
+ return top[pick.index].topic;
197
+ if (pick.kind === "typed")
198
+ return pick.value;
199
+ if (pick.kind === "new") {
200
+ const free = (await rl.question("New topic: ")).trim();
201
+ if (free.length > 0)
202
+ return free;
203
+ }
204
+ }
205
+ return undefined;
206
+ }
207
+ finally {
208
+ rl.close();
209
+ }
210
+ }
211
+ export function resolveTopicFolderDir(explicitDir, topicFolder, topic) {
212
+ if (explicitDir !== undefined)
213
+ return explicitDir;
214
+ if (topicFolder === true && topic !== undefined && topic.trim().length > 0) {
215
+ return `topics/${topicToFolderName(topic)}`;
216
+ }
217
+ return undefined;
218
+ }
219
+ export function topicToFolderName(topic) {
220
+ return (topic
221
+ .toLowerCase()
222
+ .replace(/[^a-z0-9]+/g, "-")
223
+ .replace(/^-+|-+$/g, "")
224
+ .slice(0, 60)
225
+ .replace(/-+$/g, "") || "untitled-topic");
226
+ }
141
227
  function slugify(title) {
142
228
  return (title
143
229
  .toLowerCase()
@@ -1 +1 @@
1
- {"version":3,"file":"capture.js","sourceRoot":"","sources":["../../src/commands/capture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capture.js","sourceRoot":"","sources":["../../src/commands/capture.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { Command } from "commander";
2
+ import { type FrontmatterContractField } from "@younndai/lyt-vault";
3
+ export interface FrontmatterContractJson {
4
+ contractVersion: number;
5
+ fields: readonly FrontmatterContractField[];
6
+ mandatoryTokens: readonly string[];
7
+ defaults: {
8
+ "mesh-visibility": string;
9
+ weight: string;
10
+ };
11
+ }
12
+ export declare function buildContractJson(): FrontmatterContractJson;
13
+ export declare function renderContractExplain(): string;
14
+ export declare function buildContractCommand(): Command;
15
+ //# sourceMappingURL=contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/commands/contract.ts"],"names":[],"mappings":"AA+BA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAML,KAAK,wBAAwB,EAC9B,MAAM,qBAAqB,CAAC;AAQ7B,MAAM,WAAW,uBAAuB;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC5C,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,EAAE;QACR,iBAAiB,EAAE,MAAM,CAAC;QAC1B,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAGD,wBAAgB,iBAAiB,IAAI,uBAAuB,CAU3D;AAGD,wBAAgB,qBAAqB,IAAI,MAAM,CA6C9C;AAMD,wBAAgB,oBAAoB,IAAI,OAAO,CAkB9C"}
@@ -0,0 +1,58 @@
1
+ import { Command } from "commander";
2
+ import { FRONTMATTER_CONTRACT, FRONTMATTER_CONTRACT_VERSION, DEFAULT_MESH_VISIBILITY, DEFAULT_WEIGHT, MANDATORY_FRONTMATTER_TOKENS, } from "@younndai/lyt-vault";
3
+ export function buildContractJson() {
4
+ return {
5
+ contractVersion: FRONTMATTER_CONTRACT_VERSION,
6
+ fields: FRONTMATTER_CONTRACT,
7
+ mandatoryTokens: MANDATORY_FRONTMATTER_TOKENS,
8
+ defaults: {
9
+ "mesh-visibility": DEFAULT_MESH_VISIBILITY,
10
+ weight: DEFAULT_WEIGHT,
11
+ },
12
+ };
13
+ }
14
+ export function renderContractExplain() {
15
+ const lines = [];
16
+ lines.push(`yai.lyt frontmatter contract — v${FRONTMATTER_CONTRACT_VERSION}`);
17
+ lines.push("The single Source-of-Truth for user Figment frontmatter (8 fields + meta).");
18
+ lines.push("");
19
+ const header = { name: "field", source: "source", def: "default", mand: "mandatory" };
20
+ const nameW = Math.max(header.name.length, ...FRONTMATTER_CONTRACT.map((f) => f.name.length));
21
+ const srcW = Math.max(header.source.length, ...FRONTMATTER_CONTRACT.map((f) => f.source.length));
22
+ const defW = Math.max(header.def.length, ...FRONTMATTER_CONTRACT.map((f) => (f.defaultValue ?? "—").length));
23
+ const pad = (s, w) => s.padEnd(w);
24
+ lines.push(` ${pad(header.name, nameW)} ${pad(header.source, srcW)} ${pad(header.def, defW)} ${header.mand}`);
25
+ lines.push(` ${"-".repeat(nameW)} ${"-".repeat(srcW)} ${"-".repeat(defW)} ${"-".repeat(9)}`);
26
+ for (const f of [...FRONTMATTER_CONTRACT].sort((a, b) => a.order - b.order)) {
27
+ const def = f.defaultValue ?? "—";
28
+ const mand = f.mandatory ? "yes" : "no";
29
+ lines.push(` ${pad(f.name, nameW)} ${pad(f.source, srcW)} ${pad(def, defW)} ${mand}`);
30
+ }
31
+ lines.push("");
32
+ lines.push("Descriptions:");
33
+ for (const f of [...FRONTMATTER_CONTRACT].sort((a, b) => a.order - b.order)) {
34
+ lines.push(` ${f.name}: ${f.description}`);
35
+ }
36
+ lines.push("");
37
+ lines.push("Rules:");
38
+ const authorFields = FRONTMATTER_CONTRACT.filter((f) => f.source === "author").map((f) => f.name);
39
+ lines.push(` - Author-supplied (prompted if absent, no default): ${authorFields.join(", ")}.`);
40
+ lines.push(` - Defaults: mesh-visibility → "${DEFAULT_MESH_VISIBILITY}", weight → "${DEFAULT_WEIGHT}".`);
41
+ lines.push(` - Mandatory tokens (validated non-empty): ${MANDATORY_FRONTMATTER_TOKENS.join(", ")}.`);
42
+ lines.push(" - meta is optional structural overflow for fields the 8 don't cover.");
43
+ return lines.join("\n");
44
+ }
45
+ export function buildContractCommand() {
46
+ return new Command("contract")
47
+ .description("Print the yai.lyt v1 figment frontmatter contract (the machine-readable Source-of-Truth). --json emits the FRONTMATTER_CONTRACT descriptor as a versioned envelope; --explain (default) prints a readable field table + the author-supplied / default / mandatory rules.")
48
+ .option("--json", "Emit the machine-readable FRONTMATTER_CONTRACT descriptor as JSON")
49
+ .option("--explain", "Print the readable field table + rules (default human mode)")
50
+ .action((opts) => {
51
+ if (opts.json === true) {
52
+ console.log(JSON.stringify(buildContractJson(), null, 2));
53
+ return;
54
+ }
55
+ console.log(renderContractExplain());
56
+ });
57
+ }
58
+ //# sourceMappingURL=contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/commands/contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function buildReconcileCommand(): Command;
3
+ //# sourceMappingURL=reconcile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reconcile.d.ts","sourceRoot":"","sources":["../../src/commands/reconcile.ts"],"names":[],"mappings":"AAqDA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,wBAAgB,qBAAqB,IAAI,OAAO,CAyD/C"}
@@ -0,0 +1,102 @@
1
+ import { Command } from "commander";
2
+ import { reconcileVaultScan, reindexFlow } from "@younndai/lyt-vault";
3
+ import { runAutomator } from "../automator-run.js";
4
+ function driftCount(scan) {
5
+ return scan.missingFrontmatter.length + scan.unindexed.length;
6
+ }
7
+ export function buildReconcileCommand() {
8
+ return new Command("reconcile")
9
+ .description("Detect (and with --apply, heal) drift between a vault's markdown on disk and its search index: figments with missing frontmatter (→ backfilled) and figments not yet indexed (→ reindexed). Detect-only by default. NOT `lyt repair`.")
10
+ .argument("<name>", "Vault name to reconcile (must be registered)")
11
+ .option("--apply", "Heal the detected drift (backfill missing frontmatter, then reindex)")
12
+ .option("--push", "With --apply, also git-commit + push the backfilled frontmatter (default: local only)")
13
+ .option("--json", "Emit a JSON result instead of the human-readable summary")
14
+ .action(async (name, opts) => {
15
+ const before = await reconcileVaultScan(name);
16
+ let healed;
17
+ let after;
18
+ if (opts.apply === true && driftCount(before) > 0) {
19
+ let backfilled = false;
20
+ if (before.missingFrontmatter.length > 0) {
21
+ let fill;
22
+ try {
23
+ fill = await runAutomator({
24
+ automator: "metadata-filler",
25
+ vault: name,
26
+ ...(opts.push !== true ? { noPush: true } : {}),
27
+ });
28
+ }
29
+ catch (err) {
30
+ emit(opts, before, healed, after, `backfill errored: ${err instanceof Error ? err.message : String(err)}`);
31
+ process.exit(1);
32
+ }
33
+ if (!fill.ok) {
34
+ emit(opts, before, healed, after, `backfill failed: ${fill.errorSummary ?? "unknown"}`);
35
+ process.exit(1);
36
+ }
37
+ backfilled = true;
38
+ }
39
+ await reindexFlow({ scope: "vault", target: name });
40
+ healed = { backfilled, reindexed: true };
41
+ after = await reconcileVaultScan(name);
42
+ }
43
+ emit(opts, before, healed, after, null);
44
+ });
45
+ }
46
+ function emit(opts, before, healed, after, errorNote) {
47
+ const final = after ?? before;
48
+ const payload = {
49
+ vault: { name: before.vaultName, path: before.vaultPath },
50
+ applied: healed !== undefined,
51
+ index_present: before.indexPresent,
52
+ before: {
53
+ scanned: before.scanned,
54
+ missing_frontmatter: before.missingFrontmatter.length,
55
+ unindexed: before.unindexed.length,
56
+ missing_frontmatter_samples: before.missingFrontmatter.slice(0, 20),
57
+ unindexed_samples: before.unindexed.slice(0, 20),
58
+ },
59
+ ...(healed !== undefined
60
+ ? {
61
+ healed,
62
+ after: {
63
+ missing_frontmatter: final.missingFrontmatter.length,
64
+ unindexed: final.unindexed.length,
65
+ },
66
+ }
67
+ : {}),
68
+ ...(errorNote !== null ? { error: errorNote } : {}),
69
+ };
70
+ if (opts.json === true) {
71
+ console.log(JSON.stringify(payload, null, 2));
72
+ return;
73
+ }
74
+ const lines = [];
75
+ lines.push(`reconcile ${before.vaultName} (${before.scanned} figment(s) on disk):`);
76
+ lines.push(` missing frontmatter: ${before.missingFrontmatter.length}` +
77
+ (before.missingFrontmatter.length > 0
78
+ ? ` — ${before.missingFrontmatter
79
+ .slice(0, 10)
80
+ .map((i) => i.relPath)
81
+ .join(", ")}${before.missingFrontmatter.length > 10 ? " …" : ""}`
82
+ : ""));
83
+ lines.push(` not indexed: ${before.unindexed.length}` +
84
+ (before.indexPresent ? "" : " (index not built yet)") +
85
+ (before.unindexed.length > 0
86
+ ? ` — ${before.unindexed.slice(0, 10).join(", ")}${before.unindexed.length > 10 ? " …" : ""}`
87
+ : ""));
88
+ if (healed !== undefined && after !== undefined) {
89
+ lines.push(` → healed: ${healed.backfilled ? "backfilled frontmatter, " : ""}reindexed. ` +
90
+ `Now: ${after.missingFrontmatter.length} missing frontmatter, ${after.unindexed.length} unindexed.`);
91
+ }
92
+ else if (driftCount(before) > 0) {
93
+ lines.push(` → run \`lyt vault reconcile '${before.vaultName}' --apply\` to backfill + reindex.`);
94
+ }
95
+ else {
96
+ lines.push(" → disk and index are in sync (nothing to do).");
97
+ }
98
+ if (errorNote !== null)
99
+ lines.push(` ✗ ${errorNote}`);
100
+ console.log(lines.join("\n"));
101
+ }
102
+ //# sourceMappingURL=reconcile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reconcile.js","sourceRoot":"","sources":["../../src/commands/reconcile.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@younndai/lyt",
3
- "version": "0.9.9",
3
+ "version": "0.10.0",
4
4
  "description": "Lyt — federated markdown-vault mesh CLI. Meta package: pulls in @younndai/lyt-vault + @younndai/lyt-mesh + @younndai/lyt-skills, and ships a unified `lyt` binary.",
5
5
  "homepage": "https://linkyourthink.com",
6
6
  "repository": {
@@ -52,11 +52,11 @@
52
52
  },
53
53
  "dependencies": {
54
54
  "@libsql/client": "^0.15.15",
55
- "@younndai/lyt-mcp": "^0.9.9",
56
- "@younndai/lyt-mesh": "^0.9.9",
57
- "@younndai/lyt-runner": "^0.9.9",
58
- "@younndai/lyt-skills": "^0.9.9",
59
- "@younndai/lyt-vault": "^0.9.9",
55
+ "@younndai/lyt-mcp": "^0.10.0",
56
+ "@younndai/lyt-mesh": "^0.10.0",
57
+ "@younndai/lyt-runner": "^0.10.0",
58
+ "@younndai/lyt-skills": "^0.10.0",
59
+ "@younndai/lyt-vault": "^0.10.0",
60
60
  "commander": "^12.1.0"
61
61
  },
62
62
  "devDependencies": {