@younndai/lyt 0.9.4 → 0.9.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/automator-bodies/arc-builder.js +0 -18
- package/dist/automator-bodies/arc-builder.js.map +1 -1
- package/dist/automator-bodies/index.js +0 -18
- package/dist/automator-bodies/index.js.map +1 -1
- package/dist/automator-bodies/lane-builder.js +0 -19
- package/dist/automator-bodies/lane-builder.js.map +1 -1
- package/dist/automator-bodies/metadata-filler.js +0 -49
- package/dist/automator-bodies/metadata-filler.js.map +1 -1
- package/dist/automator-run.js +0 -50
- package/dist/automator-run.js.map +1 -1
- package/dist/bench/graded-corpus.js +0 -25
- package/dist/bench/graded-corpus.js.map +1 -1
- package/dist/bench/invariant-corpus.js +0 -33
- package/dist/bench/invariant-corpus.js.map +1 -1
- package/dist/bench/ir-metrics.js +0 -17
- package/dist/bench/ir-metrics.js.map +1 -1
- package/dist/bench/latency-bench.js +0 -23
- package/dist/bench/latency-bench.js.map +1 -1
- package/dist/bench/latency-corpus.js +2 -20
- package/dist/bench/latency-corpus.js.map +1 -1
- package/dist/bench/pod-harness.js +0 -48
- package/dist/bench/pod-harness.js.map +1 -1
- package/dist/bench/run-bench.js +0 -23
- package/dist/bench/run-bench.js.map +1 -1
- package/dist/cli-automator-run.js +0 -31
- package/dist/cli-automator-run.js.map +1 -1
- package/dist/cli.js +0 -109
- package/dist/cli.js.map +1 -1
- package/dist/commands/bench.js +0 -27
- package/dist/commands/bench.js.map +1 -1
- package/dist/commands/capture.js +0 -83
- package/dist/commands/capture.js.map +1 -1
- package/dist/commands/init.js +1 -233
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/primer.js +0 -44
- package/dist/commands/primer.js.map +1 -1
- package/dist/commands/reindex.js +0 -33
- package/dist/commands/reindex.js.map +1 -1
- package/dist/commands/search.js +0 -71
- package/dist/commands/search.js.map +1 -1
- package/dist/flows/heal.js +0 -46
- package/dist/flows/heal.js.map +1 -1
- package/dist/flows/init-bootstrap.js +0 -208
- package/dist/flows/init-bootstrap.js.map +1 -1
- package/dist/index.js +0 -18
- package/dist/index.js.map +1 -1
- package/package.json +7 -7
package/dist/commands/capture.js
CHANGED
|
@@ -1,42 +1,8 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2026 MARLINK TRADING SRL (YounndAI)
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
// V-C-1 Phase E / V-C-2 (RATIFIED 2026-06-10) — `lyt capture "<text>"`.
|
|
17
|
-
//
|
|
18
|
-
// A TRUE top-level alias for `lyt pattern run knowledge-capture capture`: the
|
|
19
|
-
// frictionless command the wizard's "Next" steps advertise. It routes through
|
|
20
|
-
// the IDENTICAL capture ceremony — patternRunFlow renders the knowledge-capture
|
|
21
|
-
// template (the v1 8-field frontmatter contract), enforces mandatory
|
|
22
|
-
// purpose+topic (validateMandatoryFrontmatterTokens), and — via the Phase A
|
|
23
|
-
// index-on-write wiring inside patternRunFlow — indexes the figment so it's
|
|
24
|
-
// searchable immediately. It is NOT a lighter bypass: it cannot write a Figment
|
|
25
|
-
// that `pattern run` couldn't, and it cannot skip purpose/topic (it prompts on a
|
|
26
|
-
// TTY, else surfaces the same refusal). The guardrail the V-C-2 decision names.
|
|
27
|
-
//
|
|
28
|
-
// `--index-only <relpath>` is the seam the /lyt-capture skill uses: the skill
|
|
29
|
-
// fills the Figment body INLINE with its Write tool (its established convention),
|
|
30
|
-
// then calls `lyt capture --index-only notes/<file>.md --vault <name>` to index
|
|
31
|
-
// what it just wrote — the same captureIndexFlow the write path uses, so the
|
|
32
|
-
// skill path hits SC1 too without re-routing its body authoring through the CLI.
|
|
33
1
|
import { Command } from "commander";
|
|
34
2
|
import { createInterface } from "node:readline/promises";
|
|
35
3
|
import { captureIndexFlow, closeRegistry, getVaultByName, listVaults, openRegistry, patternRunFlow, } from "@younndai/lyt-vault";
|
|
36
4
|
const CAPTURE_PATTERN = "knowledge-capture";
|
|
37
5
|
const CAPTURE_VERB = "capture";
|
|
38
|
-
// The generated pod-map vault is generator-managed (writable=false) — never a
|
|
39
|
-
// capture target, so it is excluded from single-vault default resolution.
|
|
40
6
|
const POD_MAP_VAULT_NAME = "lyt-pod-map";
|
|
41
7
|
export function buildCaptureCommand() {
|
|
42
8
|
return new Command("capture")
|
|
@@ -64,20 +30,15 @@ export function buildCaptureCommand() {
|
|
|
64
30
|
catch (err) {
|
|
65
31
|
const message = err instanceof Error ? err.message : String(err);
|
|
66
32
|
if (opts.json === true) {
|
|
67
|
-
// eslint-disable-next-line no-console
|
|
68
33
|
console.error(JSON.stringify({ error: "capture-error", message }, null, 2));
|
|
69
34
|
}
|
|
70
35
|
else {
|
|
71
|
-
// eslint-disable-next-line no-console
|
|
72
36
|
console.error(`lyt capture: ${message}`);
|
|
73
37
|
}
|
|
74
38
|
process.exitCode = 1;
|
|
75
39
|
}
|
|
76
40
|
});
|
|
77
41
|
}
|
|
78
|
-
// --index-only: index a figment the caller already wrote (the skill seam). No
|
|
79
|
-
// write, no ceremony (the skill already wrote the contract-compliant figment);
|
|
80
|
-
// this only refreshes the caches so search/recall/primer hit (SC1/SC3).
|
|
81
42
|
async function runIndexOnly(opts) {
|
|
82
43
|
if (opts.vault === undefined) {
|
|
83
44
|
throw new Error("--index-only requires --vault <name> (the vault the figment was written to).");
|
|
@@ -85,7 +46,6 @@ async function runIndexOnly(opts) {
|
|
|
85
46
|
const relPath = opts.indexOnly.replace(/\\/g, "/");
|
|
86
47
|
const res = await captureIndexFlow({ vaultName: opts.vault, relPath });
|
|
87
48
|
if (opts.json === true) {
|
|
88
|
-
// eslint-disable-next-line no-console
|
|
89
49
|
console.log(JSON.stringify({
|
|
90
50
|
indexed: res.ftsIndexed,
|
|
91
51
|
deferred: res.deferred,
|
|
@@ -94,15 +54,10 @@ async function runIndexOnly(opts) {
|
|
|
94
54
|
}, null, 2));
|
|
95
55
|
return;
|
|
96
56
|
}
|
|
97
|
-
// Key the message on whether the figment actually got into the index — covers
|
|
98
|
-
// success, a deferred failure, AND the out-of-notes seam-guard (deferred:false
|
|
99
|
-
// but not indexed), each of which carries an explanatory note.
|
|
100
57
|
if (res.ftsIndexed) {
|
|
101
|
-
// eslint-disable-next-line no-console
|
|
102
58
|
console.log(`Indexed ${relPath} in ${res.vaultName} (searchable now).`);
|
|
103
59
|
}
|
|
104
60
|
else {
|
|
105
|
-
// eslint-disable-next-line no-console
|
|
106
61
|
console.log(`⚠ ${res.note ?? "not indexed"}`);
|
|
107
62
|
}
|
|
108
63
|
}
|
|
@@ -120,17 +75,8 @@ async function runCapture(text, opts) {
|
|
|
120
75
|
throw new Error('provide a thought to capture, e.g. `lyt capture "my first thought"`, or pass --title.');
|
|
121
76
|
}
|
|
122
77
|
const slug = opts.slug ?? slugify(title);
|
|
123
|
-
// Resolve the mandatory ceremony fields. --purpose/--topic (or --vars) win;
|
|
124
|
-
// else prompt on a TTY; else leave empty so patternRunFlow surfaces the same
|
|
125
|
-
// refusal `pattern run` would (ceremony preserved — never silently bypassed).
|
|
126
78
|
const purpose = opts.purpose ?? opts.vars["purpose"] ?? (await promptIfTty("Why keep this? (purpose): "));
|
|
127
79
|
const topic = opts.topic ?? opts.vars["topic"] ?? (await promptIfTty("Topic (semantic category): "));
|
|
128
|
-
// V-C-1 SC3 option-b — `--tags a,b` restored (the knowledge-capture template
|
|
129
|
-
// regained its `tags: [<tags>]` token). Parsed to the inline-array INNER form
|
|
130
|
-
// ("a, b") so the template renders `tags: [a, b]`; omitted → the template
|
|
131
|
-
// default renders `tags: []`. The /lyt-capture skill's inline tag inference
|
|
132
|
-
// stays the primary path; `--tags` is the bare-quick-path affordance that
|
|
133
|
-
// seeds both the primer keyword fallback AND (at ≥2 shared) a real lane.
|
|
134
80
|
const tags = parseTagsOpt(opts.tags);
|
|
135
81
|
const vars = {
|
|
136
82
|
title,
|
|
@@ -139,7 +85,6 @@ async function runCapture(text, opts) {
|
|
|
139
85
|
...(tags !== undefined ? { tags } : {}),
|
|
140
86
|
...(opts.weight !== undefined ? { weight: opts.weight } : {}),
|
|
141
87
|
...(opts.meshVisibility !== undefined ? { "mesh-visibility": opts.meshVisibility } : {}),
|
|
142
|
-
// Explicit --vars win last (advanced override seam, matches `pattern run`).
|
|
143
88
|
...opts.vars,
|
|
144
89
|
};
|
|
145
90
|
const r = await patternRunFlow({
|
|
@@ -150,7 +95,6 @@ async function runCapture(text, opts) {
|
|
|
150
95
|
vars,
|
|
151
96
|
});
|
|
152
97
|
if (opts.json === true) {
|
|
153
|
-
// eslint-disable-next-line no-console
|
|
154
98
|
console.log(JSON.stringify({
|
|
155
99
|
filePath: r.filePath,
|
|
156
100
|
vault: r.vaultName,
|
|
@@ -160,18 +104,11 @@ async function runCapture(text, opts) {
|
|
|
160
104
|
}, null, 2));
|
|
161
105
|
return;
|
|
162
106
|
}
|
|
163
|
-
// eslint-disable-next-line no-console
|
|
164
107
|
console.log(`Captured to ${r.filePath}`);
|
|
165
108
|
if (r.indexDeferred === true && r.indexNote !== undefined) {
|
|
166
|
-
// eslint-disable-next-line no-console
|
|
167
109
|
console.log(` ⚠ ${r.indexNote}`);
|
|
168
110
|
}
|
|
169
111
|
}
|
|
170
|
-
// Default-vault resolution: --vault → the single user vault → require --vault.
|
|
171
|
-
// (LYT_ACTIVE_VAULT is the skill's PATH-based seam; the CLI alias is name-based
|
|
172
|
-
// via the registry, so it resolves the single registered user vault instead —
|
|
173
|
-
// which makes the wizard's no-flag `lyt capture "your first thought"` real on a
|
|
174
|
-
// fresh pod where personal/main is the only user vault.)
|
|
175
112
|
async function resolveCaptureVault(explicit, db) {
|
|
176
113
|
if (explicit !== undefined && explicit.length > 0) {
|
|
177
114
|
const row = await getVaultByName(db, explicit);
|
|
@@ -189,9 +126,6 @@ async function resolveCaptureVault(explicit, db) {
|
|
|
189
126
|
}
|
|
190
127
|
throw new Error(`multiple vaults — pass --vault <name>. Available: ${userVaults.map((v) => v.name).join(", ")}.`);
|
|
191
128
|
}
|
|
192
|
-
// Prompt on an interactive TTY only; return undefined on a non-TTY so the caller
|
|
193
|
-
// leaves the field empty and patternRunFlow surfaces the mandatory-field refusal
|
|
194
|
-
// (never hang a script waiting on stdin).
|
|
195
129
|
async function promptIfTty(question) {
|
|
196
130
|
if (process.stdin.isTTY !== true)
|
|
197
131
|
return undefined;
|
|
@@ -212,23 +146,6 @@ function slugify(title) {
|
|
|
212
146
|
.slice(0, 60)
|
|
213
147
|
.replace(/-+$/g, "") || `untitled-capture`);
|
|
214
148
|
}
|
|
215
|
-
// Parse `--tags a,b , c` → the inline-array inner form "a, b, c" for the
|
|
216
|
-
// template's `tags: [<tags>]` token. Empty/whitespace-only entries are dropped;
|
|
217
|
-
// an all-empty value yields undefined (the template default `[]` then applies).
|
|
218
|
-
// Single-token tags are the supported quick-path form (the inline-array
|
|
219
|
-
// frontmatter parser splits on whitespace, so multi-word tags are not the
|
|
220
|
-
// intent here — the /lyt-capture skill authors richer tags inline).
|
|
221
|
-
//
|
|
222
|
-
// release review (+ committed-state pass C3-M1): per-token sanitize away the
|
|
223
|
-
// glyphs that break or type-drift the inline-array `tags: [<tags>]` flow scalar
|
|
224
|
-
// under a strict YAML reader (Obsidian properties), then collapse internal
|
|
225
|
-
// whitespace. Stripped: `[ ] " backtick` (structure/quote) AND `: { } & *`
|
|
226
|
-
// (flow-mapping / anchor / alias indicators — e.g. `--tags "a: b"` would else
|
|
227
|
-
// emit `tags: [a: b]`, a flow MAPPING not a string). lyt's own read-back
|
|
228
|
-
// (extractFrontmatterTags) is tolerant and never breaks the index regardless;
|
|
229
|
-
// this keeps the on-disk Figment well-formed for EXTERNAL strict readers too.
|
|
230
|
-
// NOTE: the `--vars tags=…` advanced seam bypasses this (matches --vars
|
|
231
|
-
// purpose=/topic=, unsanitized by design). Exported for unit test.
|
|
232
149
|
export function parseTagsOpt(raw) {
|
|
233
150
|
if (raw === undefined)
|
|
234
151
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture.js","sourceRoot":"","sources":["../../src/commands/capture.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"capture.js","sourceRoot":"","sources":["../../src/commands/capture.ts"],"names":[],"mappings":"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"}
|