@younndai/lyt 0.9.9 → 0.11.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.
Files changed (47) hide show
  1. package/README.md +13 -0
  2. package/dist/automator-bodies/metadata-filler.d.ts +21 -2
  3. package/dist/automator-bodies/metadata-filler.d.ts.map +1 -1
  4. package/dist/automator-bodies/metadata-filler.js +244 -40
  5. package/dist/automator-bodies/metadata-filler.js.map +1 -1
  6. package/dist/build-program.d.ts +3 -0
  7. package/dist/build-program.d.ts.map +1 -0
  8. package/dist/build-program.js +66 -0
  9. package/dist/build-program.js.map +1 -0
  10. package/dist/capability-manifest.d.ts +12 -0
  11. package/dist/capability-manifest.d.ts.map +1 -0
  12. package/dist/capability-manifest.js +20 -0
  13. package/dist/capability-manifest.js.map +1 -0
  14. package/dist/cli.js +4 -48
  15. package/dist/cli.js.map +1 -1
  16. package/dist/commands/backfill.d.ts +3 -0
  17. package/dist/commands/backfill.d.ts.map +1 -0
  18. package/dist/commands/backfill.js +101 -0
  19. package/dist/commands/backfill.js.map +1 -0
  20. package/dist/commands/capture.d.ts +14 -0
  21. package/dist/commands/capture.d.ts.map +1 -1
  22. package/dist/commands/capture.js +135 -9
  23. package/dist/commands/capture.js.map +1 -1
  24. package/dist/commands/contract.d.ts +15 -0
  25. package/dist/commands/contract.d.ts.map +1 -0
  26. package/dist/commands/contract.js +58 -0
  27. package/dist/commands/contract.js.map +1 -0
  28. package/dist/commands/init.d.ts.map +1 -1
  29. package/dist/commands/init.js +5 -1
  30. package/dist/commands/init.js.map +1 -1
  31. package/dist/commands/outdated.d.ts +3 -0
  32. package/dist/commands/outdated.d.ts.map +1 -0
  33. package/dist/commands/outdated.js +18 -0
  34. package/dist/commands/outdated.js.map +1 -0
  35. package/dist/commands/reconcile.d.ts +3 -0
  36. package/dist/commands/reconcile.d.ts.map +1 -0
  37. package/dist/commands/reconcile.js +112 -0
  38. package/dist/commands/reconcile.js.map +1 -0
  39. package/dist/commands/undo.d.ts +3 -0
  40. package/dist/commands/undo.d.ts.map +1 -0
  41. package/dist/commands/undo.js +24 -0
  42. package/dist/commands/undo.js.map +1 -0
  43. package/dist/commands/update.d.ts +18 -0
  44. package/dist/commands/update.d.ts.map +1 -0
  45. package/dist/commands/update.js +77 -0
  46. package/dist/commands/update.js.map +1 -0
  47. package/package.json +6 -6
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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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function buildProgram(): Command;
3
+ //# sourceMappingURL=build-program.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-program.d.ts","sourceRoot":"","sources":["../src/build-program.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsCpC,wBAAgB,YAAY,IAAI,OAAO,CAiGtC"}
@@ -0,0 +1,66 @@
1
+ import { createRequire } from "node:module";
2
+ import { Command } from "commander";
3
+ import { buildMcpSubcommand } from "@younndai/lyt-mcp";
4
+ import { buildCloneAllCommand, buildPodStatusCommand, buildSourceCommand, buildStatusCommand, buildSyncCommand, } from "@younndai/lyt-mesh";
5
+ import { buildSkillsCommand } from "@younndai/lyt-skills";
6
+ import { registerVaultVerbs, buildAgentManualCommand, buildDiscoverCommand, buildRepairCommand, } from "@younndai/lyt-vault";
7
+ import { buildAutomatorRunSubcommand } from "./cli-automator-run.js";
8
+ import { buildBackfillCommand } from "./commands/backfill.js";
9
+ import { buildBenchCommand } from "./commands/bench.js";
10
+ import { buildCaptureCommand } from "./commands/capture.js";
11
+ import { buildContractCommand } from "./commands/contract.js";
12
+ import { buildLytInitCommand } from "./commands/init.js";
13
+ import { buildModelCommand } from "./commands/model.js";
14
+ import { buildOutdatedCommand } from "./commands/outdated.js";
15
+ import { buildPrimerCommand } from "./commands/primer.js";
16
+ import { buildReconcileCommand } from "./commands/reconcile.js";
17
+ import { buildReindexCommand } from "./commands/reindex.js";
18
+ import { buildSearchCommand } from "./commands/search.js";
19
+ import { buildUndoCommand } from "./commands/undo.js";
20
+ import { buildUpdateCommand } from "./commands/update.js";
21
+ export function buildProgram() {
22
+ const program = new Command();
23
+ program
24
+ .name("lyt")
25
+ .description("Lyt — federated markdown-vault mesh CLI (vault + mesh + sync + mcp + help + doctor + pattern + machine + identity + audit + provenance + capture-metric + automator)")
26
+ .version(createRequire(import.meta.url)("../package.json").version);
27
+ registerVaultVerbs(program);
28
+ const meshCmd = program.commands.find((c) => c.name() === "mesh");
29
+ if (meshCmd === undefined) {
30
+ throw new Error("@younndai/lyt meta CLI: expected registerVaultVerbs to register a 'mesh' command but none was found.");
31
+ }
32
+ meshCmd.addCommand(buildCloneAllCommand());
33
+ meshCmd.addCommand(buildSourceCommand());
34
+ meshCmd.addCommand(buildStatusCommand());
35
+ const automatorCmd = program.commands.find((c) => c.name() === "automator");
36
+ if (automatorCmd === undefined) {
37
+ throw new Error("@younndai/lyt meta CLI: expected registerVaultVerbs to register an 'automator' command but none was found.");
38
+ }
39
+ automatorCmd.addCommand(buildAutomatorRunSubcommand());
40
+ const vaultCmd = program.commands.find((c) => c.name() === "vault");
41
+ if (vaultCmd === undefined) {
42
+ throw new Error("@younndai/lyt meta CLI: expected registerVaultVerbs to register a 'vault' command but none was found.");
43
+ }
44
+ vaultCmd.addCommand(buildBackfillCommand());
45
+ vaultCmd.addCommand(buildReconcileCommand());
46
+ program.addCommand(buildSyncCommand());
47
+ program.addCommand(buildPodStatusCommand());
48
+ program.addCommand(buildMcpSubcommand());
49
+ program.addCommand(buildSearchCommand());
50
+ program.addCommand(buildCaptureCommand());
51
+ program.addCommand(buildUndoCommand());
52
+ program.addCommand(buildContractCommand());
53
+ program.addCommand(buildPrimerCommand());
54
+ program.addCommand(buildReindexCommand());
55
+ program.addCommand(buildModelCommand());
56
+ program.addCommand(buildBenchCommand());
57
+ program.addCommand(buildOutdatedCommand());
58
+ program.addCommand(buildUpdateCommand());
59
+ program.addCommand(buildLytInitCommand());
60
+ program.addCommand(buildDiscoverCommand());
61
+ program.addCommand(buildRepairCommand());
62
+ program.addCommand(buildSkillsCommand());
63
+ program.addCommand(buildAgentManualCommand());
64
+ return program;
65
+ }
66
+ //# sourceMappingURL=build-program.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-program.js","sourceRoot":"","sources":["../src/build-program.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAO1D,MAAM,UAAU,YAAY;IAC1B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,KAAK,CAAC;SACX,WAAW,CACV,sKAAsK,CACvK;SACA,OAAO,CAAE,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAyB,CAAC,OAAO,CAAC,CAAC;IAe/F,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,MAAM,CAAC,CAAC;IAClE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,sGAAsG,CACvG,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAEzC,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,WAAW,CAAC,CAAC;IAC5E,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,4GAA4G,CAC7G,CAAC;IACJ,CAAC;IACD,YAAY,CAAC,UAAU,CAAC,2BAA2B,EAAE,CAAC,CAAC;IAOvD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC,CAAC;IACpE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,uGAAuG,CACxG,CAAC;IACJ,CAAC;IACD,QAAQ,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC5C,QAAQ,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAE7C,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAGvC,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAMzC,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAG1C,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACvC,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAKxC,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAKzC,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAKzC,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,UAAU,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAE9C,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,12 @@
1
+ export type OpAccess = "read" | "write";
2
+ export interface CapabilityOp {
3
+ id: string;
4
+ mcp: string;
5
+ cli: string;
6
+ access: OpAccess;
7
+ handlerGated: boolean;
8
+ sideEffects: string;
9
+ note?: string;
10
+ }
11
+ export declare const CAPABILITY_MANIFEST: readonly CapabilityOp[];
12
+ //# sourceMappingURL=capability-manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-manifest.d.ts","sourceRoot":"","sources":["../src/capability-manifest.ts"],"names":[],"mappings":"AAyCA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAGxC,MAAM,WAAW,YAAY;IAE3B,EAAE,EAAE,MAAM,CAAC;IAEX,GAAG,EAAE,MAAM,CAAC;IAEZ,GAAG,EAAE,MAAM,CAAC;IAEZ,MAAM,EAAE,QAAQ,CAAC;IAEjB,YAAY,EAAE,OAAO,CAAC;IAEtB,WAAW,EAAE,MAAM,CAAC;IAEpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,mBAAmB,EAAE,SAAS,YAAY,EAkB7C,CAAC"}
@@ -0,0 +1,20 @@
1
+ export const CAPABILITY_MANIFEST = [
2
+ { id: "vault.list", mcp: "vault.list", cli: "vault list", access: "read", handlerGated: false, sideEffects: "none" },
3
+ { id: "vault.info", mcp: "vault.info", cli: "vault info", access: "read", handlerGated: false, sideEffects: "none" },
4
+ { id: "vault.verify", mcp: "vault.verify", cli: "vault verify", access: "read", handlerGated: false, sideEffects: "flips missing/tombstoned status in the registry (no file writes)" },
5
+ { id: "vault.reconnect", mcp: "vault.reconnect", cli: "vault reconnect", access: "write", handlerGated: false, sideEffects: "repoints a registry row to a new path" },
6
+ { id: "mesh.source.list", mcp: "mesh.source.list", cli: "mesh source list", access: "read", handlerGated: false, sideEffects: "none" },
7
+ { id: "mesh.source.add", mcp: "mesh.source.add", cli: "mesh source add", access: "write", handlerGated: false, sideEffects: "registers a vault source" },
8
+ { id: "mesh.source.remove", mcp: "mesh.source.remove", cli: "mesh source remove", access: "write", handlerGated: false, sideEffects: "removes a vault source" },
9
+ { id: "capture", mcp: "capture", cli: "capture", access: "write", handlerGated: false, sideEffects: "writes a Figment + indexes it" },
10
+ { id: "search", mcp: "search", cli: "search", access: "read", handlerGated: false, sideEffects: "none" },
11
+ { id: "sync", mcp: "sync", cli: "sync", access: "write", handlerGated: false, sideEffects: "writes GitHub repo metadata + regenerates agents.md (on --apply)" },
12
+ { id: "primer", mcp: "primer", cli: "primer", access: "read", handlerGated: false, sideEffects: "writes a primer file unless --dry-run" },
13
+ { id: "vault.share", mcp: "vault.share", cli: "vault share", access: "write", handlerGated: true, sideEffects: "grants a gh repo-collaborator" },
14
+ { id: "vault.unshare", mcp: "vault.unshare", cli: "vault unshare", access: "write", handlerGated: true, sideEffects: "revokes a gh repo-collaborator" },
15
+ { id: "vault.access", mcp: "vault.access", cli: "vault access", access: "read", handlerGated: false, sideEffects: "none" },
16
+ { id: "vault.invites", mcp: "vault.invites", cli: "vault invites", access: "read", handlerGated: false, sideEffects: "none" },
17
+ { id: "vault.invites.accept", mcp: "vault.invites.accept", cli: "vault invites", access: "write", handlerGated: true, sideEffects: "accepts a gh repo invitation", note: "CLI folds accept into `vault invites` (an --accept flag), not a distinct subcommand; MCP splits list vs accept into two tools." },
18
+ { id: "vault.abandon", mcp: "vault.abandon", cli: "vault abandon", access: "write", handlerGated: true, sideEffects: "removes local .lyt/ adoption state + deregisters" },
19
+ ];
20
+ //# sourceMappingURL=capability-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-manifest.js","sourceRoot":"","sources":["../src/capability-manifest.ts"],"names":[],"mappings":"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"}