@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.
- package/README.md +13 -0
- package/dist/automator-bodies/metadata-filler.d.ts +21 -2
- package/dist/automator-bodies/metadata-filler.d.ts.map +1 -1
- package/dist/automator-bodies/metadata-filler.js +244 -40
- package/dist/automator-bodies/metadata-filler.js.map +1 -1
- package/dist/build-program.d.ts +3 -0
- package/dist/build-program.d.ts.map +1 -0
- package/dist/build-program.js +66 -0
- package/dist/build-program.js.map +1 -0
- package/dist/capability-manifest.d.ts +12 -0
- package/dist/capability-manifest.d.ts.map +1 -0
- package/dist/capability-manifest.js +20 -0
- package/dist/capability-manifest.js.map +1 -0
- package/dist/cli.js +4 -48
- package/dist/cli.js.map +1 -1
- package/dist/commands/backfill.d.ts +3 -0
- package/dist/commands/backfill.d.ts.map +1 -0
- package/dist/commands/backfill.js +101 -0
- package/dist/commands/backfill.js.map +1 -0
- package/dist/commands/capture.d.ts +14 -0
- package/dist/commands/capture.d.ts.map +1 -1
- package/dist/commands/capture.js +135 -9
- package/dist/commands/capture.js.map +1 -1
- package/dist/commands/contract.d.ts +15 -0
- package/dist/commands/contract.d.ts.map +1 -0
- package/dist/commands/contract.js +58 -0
- package/dist/commands/contract.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +5 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/outdated.d.ts +3 -0
- package/dist/commands/outdated.d.ts.map +1 -0
- package/dist/commands/outdated.js +18 -0
- package/dist/commands/outdated.js.map +1 -0
- package/dist/commands/reconcile.d.ts +3 -0
- package/dist/commands/reconcile.d.ts.map +1 -0
- package/dist/commands/reconcile.js +112 -0
- package/dist/commands/reconcile.js.map +1 -0
- package/dist/commands/undo.d.ts +3 -0
- package/dist/commands/undo.d.ts.map +1 -0
- package/dist/commands/undo.js +24 -0
- package/dist/commands/undo.js.map +1 -0
- package/dist/commands/update.d.ts +18 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +77 -0
- package/dist/commands/update.js.map +1 -0
- 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
|
|
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 {
|
|
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":"
|
|
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 {
|
|
2
|
-
import {
|
|
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
|
|
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:
|
|
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: {
|
|
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
|
|
189
|
+
const line = lines[i];
|
|
190
|
+
if (/^\s/.test(line))
|
|
191
|
+
continue;
|
|
83
192
|
for (const f of MANDATORY_FIELDS) {
|
|
84
|
-
if (
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
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 {
|
|
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 @@
|
|
|
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":"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"}
|
|
@@ -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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"}
|