@lore-co/cli 0.2.25 → 0.2.27
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 +69 -18
- package/dist/agents.d.ts +9 -0
- package/dist/agents.d.ts.map +1 -1
- package/dist/agents.js +19 -6
- package/dist/agents.js.map +1 -1
- package/dist/api.d.ts +2 -1
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +15 -2
- package/dist/api.js.map +1 -1
- package/dist/approach-guidance.d.ts +8 -1
- package/dist/approach-guidance.d.ts.map +1 -1
- package/dist/approach-guidance.js +13 -3
- package/dist/approach-guidance.js.map +1 -1
- package/dist/approach.d.ts.map +1 -1
- package/dist/approach.js +2 -2
- package/dist/approach.js.map +1 -1
- package/dist/ask.d.ts.map +1 -1
- package/dist/ask.js +2 -2
- package/dist/ask.js.map +1 -1
- package/dist/capture-scope.d.ts.map +1 -1
- package/dist/capture-scope.js +2 -1
- package/dist/capture-scope.js.map +1 -1
- package/dist/chat.d.ts.map +1 -1
- package/dist/chat.js +2 -2
- package/dist/chat.js.map +1 -1
- package/dist/cli.d.ts +66 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +547 -91
- package/dist/cli.js.map +1 -1
- package/dist/codex-hook-approval.d.ts.map +1 -1
- package/dist/codex-hook-approval.js +9 -2
- package/dist/codex-hook-approval.js.map +1 -1
- package/dist/command-help.d.ts.map +1 -1
- package/dist/command-help.js +7 -3
- package/dist/command-help.js.map +1 -1
- package/dist/config-command.js +2 -2
- package/dist/config-command.js.map +1 -1
- package/dist/connect-project.d.ts.map +1 -1
- package/dist/connect-project.js +2 -1
- package/dist/connect-project.js.map +1 -1
- package/dist/console-keys.d.ts +11 -0
- package/dist/console-keys.d.ts.map +1 -0
- package/dist/console-keys.js +24 -0
- package/dist/console-keys.js.map +1 -0
- package/dist/cursor-mcp.d.ts.map +1 -1
- package/dist/cursor-mcp.js +4 -0
- package/dist/cursor-mcp.js.map +1 -1
- package/dist/demo-process.js +3 -3
- package/dist/demo-process.js.map +1 -1
- package/dist/devin-capture.d.ts.map +1 -1
- package/dist/devin-capture.js +2 -2
- package/dist/devin-capture.js.map +1 -1
- package/dist/devin-cli.d.ts.map +1 -1
- package/dist/devin-cli.js +23 -13
- package/dist/devin-cli.js.map +1 -1
- package/dist/devin-client.d.ts +3 -0
- package/dist/devin-client.d.ts.map +1 -1
- package/dist/devin-client.js +5 -0
- package/dist/devin-client.js.map +1 -1
- package/dist/devin.d.ts.map +1 -1
- package/dist/devin.js +29 -9
- package/dist/devin.js.map +1 -1
- package/dist/generated-assets.d.ts +8 -8
- package/dist/generated-assets.d.ts.map +1 -1
- package/dist/generated-assets.js +8 -8
- package/dist/generated-assets.js.map +1 -1
- package/dist/github.d.ts.map +1 -1
- package/dist/github.js +38 -7
- package/dist/github.js.map +1 -1
- package/dist/guard.d.ts +1 -1
- package/dist/guard.d.ts.map +1 -1
- package/dist/guard.js +42 -14
- package/dist/guard.js.map +1 -1
- package/dist/handoff.js +2 -2
- package/dist/handoff.js.map +1 -1
- package/dist/host.js +4 -4
- package/dist/host.js.map +1 -1
- package/dist/image-capture.d.ts.map +1 -1
- package/dist/image-capture.js +5 -4
- package/dist/image-capture.js.map +1 -1
- package/dist/learnings.d.ts.map +1 -1
- package/dist/learnings.js +3 -3
- package/dist/learnings.js.map +1 -1
- package/dist/live.d.ts +7 -0
- package/dist/live.d.ts.map +1 -1
- package/dist/live.js +11 -6
- package/dist/live.js.map +1 -1
- package/dist/lore-agent.d.ts +8 -1
- package/dist/lore-agent.d.ts.map +1 -1
- package/dist/lore-agent.js +33 -11
- package/dist/lore-agent.js.map +1 -1
- package/dist/mcp-config.d.ts +7 -0
- package/dist/mcp-config.d.ts.map +1 -1
- package/dist/mcp-config.js +19 -3
- package/dist/mcp-config.js.map +1 -1
- package/dist/npm-installation.d.ts +30 -0
- package/dist/npm-installation.d.ts.map +1 -0
- package/dist/npm-installation.js +46 -0
- package/dist/npm-installation.js.map +1 -0
- package/dist/owned-files.d.ts +14 -4
- package/dist/owned-files.d.ts.map +1 -1
- package/dist/owned-files.js +24 -9
- package/dist/owned-files.js.map +1 -1
- package/dist/platform.d.ts +26 -3
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +87 -20
- package/dist/platform.js.map +1 -1
- package/dist/pty.d.ts +2 -1
- package/dist/pty.d.ts.map +1 -1
- package/dist/pty.js +20 -7
- package/dist/pty.js.map +1 -1
- package/dist/recovery-cloud-receipt.d.ts.map +1 -1
- package/dist/recovery-cloud-receipt.js +2 -1
- package/dist/recovery-cloud-receipt.js.map +1 -1
- package/dist/recovery-cloud-workspace.d.ts.map +1 -1
- package/dist/recovery-cloud-workspace.js +2 -1
- package/dist/recovery-cloud-workspace.js.map +1 -1
- package/dist/recovery-cloud.d.ts.map +1 -1
- package/dist/recovery-cloud.js +8 -9
- package/dist/recovery-cloud.js.map +1 -1
- package/dist/recovery-copilot.d.ts.map +1 -1
- package/dist/recovery-copilot.js +3 -2
- package/dist/recovery-copilot.js.map +1 -1
- package/dist/recovery-desktop.d.ts.map +1 -1
- package/dist/recovery-desktop.js +3 -2
- package/dist/recovery-desktop.js.map +1 -1
- package/dist/recovery-hooks.js +2 -2
- package/dist/recovery-hooks.js.map +1 -1
- package/dist/recovery-hosts.d.ts.map +1 -1
- package/dist/recovery-hosts.js +53 -6
- package/dist/recovery-hosts.js.map +1 -1
- package/dist/recovery-polytoken.d.ts +2 -2
- package/dist/recovery-polytoken.d.ts.map +1 -1
- package/dist/recovery-polytoken.js +13 -8
- package/dist/recovery-polytoken.js.map +1 -1
- package/dist/recovery-remote.js +3 -3
- package/dist/recovery-remote.js.map +1 -1
- package/dist/recovery-state.d.ts +22 -1
- package/dist/recovery-state.d.ts.map +1 -1
- package/dist/recovery-state.js +167 -31
- package/dist/recovery-state.js.map +1 -1
- package/dist/recovery-transfer.d.ts.map +1 -1
- package/dist/recovery-transfer.js +8 -4
- package/dist/recovery-transfer.js.map +1 -1
- package/dist/recovery.d.ts.map +1 -1
- package/dist/recovery.js +30 -11
- package/dist/recovery.js.map +1 -1
- package/dist/reliability-store.d.ts +13 -0
- package/dist/reliability-store.d.ts.map +1 -1
- package/dist/reliability-store.js +110 -8
- package/dist/reliability-store.js.map +1 -1
- package/dist/remember.d.ts.map +1 -1
- package/dist/remember.js +2 -2
- package/dist/remember.js.map +1 -1
- package/dist/retained-context.d.ts.map +1 -1
- package/dist/retained-context.js +3 -2
- package/dist/retained-context.js.map +1 -1
- package/dist/retrieval-task.d.ts +30 -0
- package/dist/retrieval-task.d.ts.map +1 -1
- package/dist/retrieval-task.js +98 -2
- package/dist/retrieval-task.js.map +1 -1
- package/dist/review.d.ts +1 -1
- package/dist/review.d.ts.map +1 -1
- package/dist/review.js +5 -2
- package/dist/review.js.map +1 -1
- package/dist/runtime.d.ts +4 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +138 -91
- package/dist/runtime.js.map +1 -1
- package/dist/self-host.d.ts +1 -1
- package/dist/self-host.d.ts.map +1 -1
- package/dist/self-host.js +105 -23
- package/dist/self-host.js.map +1 -1
- package/dist/share.d.ts.map +1 -1
- package/dist/share.js +2 -1
- package/dist/share.js.map +1 -1
- package/dist/signed-snapshot.d.ts +7 -0
- package/dist/signed-snapshot.d.ts.map +1 -1
- package/dist/signed-snapshot.js +27 -0
- package/dist/signed-snapshot.js.map +1 -1
- package/dist/skill-command.d.ts +5 -2
- package/dist/skill-command.d.ts.map +1 -1
- package/dist/skill-command.js +73 -10
- package/dist/skill-command.js.map +1 -1
- package/dist/skill-guidance.js +1 -1
- package/dist/skill-guidance.js.map +1 -1
- package/dist/skills.d.ts +2 -0
- package/dist/skills.d.ts.map +1 -1
- package/dist/skills.js +16 -11
- package/dist/skills.js.map +1 -1
- package/dist/status-health.d.ts +26 -0
- package/dist/status-health.d.ts.map +1 -0
- package/dist/status-health.js +49 -0
- package/dist/status-health.js.map +1 -0
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +2 -2
- package/dist/telemetry.js.map +1 -1
- package/dist/terminal-output.d.ts +76 -0
- package/dist/terminal-output.d.ts.map +1 -0
- package/dist/terminal-output.js +151 -0
- package/dist/terminal-output.js.map +1 -0
- package/dist/uninstall.d.ts.map +1 -1
- package/dist/uninstall.js +14 -32
- package/dist/uninstall.js.map +1 -1
- package/dist/update.d.ts +17 -1
- package/dist/update.d.ts.map +1 -1
- package/dist/update.js +150 -51
- package/dist/update.js.map +1 -1
- package/dist/windows-permissions.d.ts +6 -0
- package/dist/windows-permissions.d.ts.map +1 -1
- package/dist/windows-permissions.js +22 -2
- package/dist/windows-permissions.js.map +1 -1
- package/dist/windows-pty.d.ts.map +1 -1
- package/dist/windows-pty.js +4 -3
- package/dist/windows-pty.js.map +1 -1
- package/package.json +4 -4
package/dist/skill-command.js
CHANGED
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
import { constants } from "node:fs";
|
|
2
|
-
import { lstat,
|
|
2
|
+
import { lstat, readdir, realpath } from "node:fs/promises";
|
|
3
3
|
import { homedir } from "node:os";
|
|
4
|
-
import { basename, isAbsolute, relative, resolve, sep } from "node:path";
|
|
5
|
-
import { LoreClient, MAX_SKILL_BYTES, parseSkillMarkdown } from "@lore-co/sdk";
|
|
4
|
+
import { basename, dirname, isAbsolute, relative, resolve, sep } from "node:path";
|
|
5
|
+
import { LoreClient, MAX_SKILL_BYTES, parseSkillMarkdown, readSkillFolder, selectSkillFolder, skippedSkillPath, } from "@lore-co/sdk";
|
|
6
6
|
import { repositoryScopeFromDirectory } from "@lore-co/core/repository-location";
|
|
7
|
+
import { writeSkillFolder } from "@lore-co/core/skill-folder";
|
|
8
|
+
import { openNoFollow } from "@lore-co/core/no-follow";
|
|
7
9
|
export const SKILL_HELP = `lore skill — find, review, and share agent skills
|
|
8
10
|
|
|
9
11
|
Usage:
|
|
10
12
|
lore skill list [--repo owner/repository] [--offset 0]
|
|
11
13
|
lore skill show <name> [--repo owner/repository]
|
|
14
|
+
lore skill files <name> [--repo owner/repository]
|
|
12
15
|
lore skill discover [--folder path]
|
|
13
16
|
lore skill import --file path/to/SKILL.md [--repo owner/repository]
|
|
14
|
-
lore skill import --url https://github.com/owner/repo/
|
|
17
|
+
lore skill import --url https://github.com/owner/repo/tree/ref/path [--repo owner/repository]
|
|
15
18
|
lore skill import --file path/to/SKILL.md --all-repositories
|
|
16
19
|
|
|
17
20
|
List returns enabled skill descriptions. Read a matching skill before using it.
|
|
@@ -19,17 +22,23 @@ Check the current enabled state for each new task; do not reuse a disabled copy.
|
|
|
19
22
|
Skills guide your work under the current user's request and normal permissions.
|
|
20
23
|
They do not grant tools, install dependencies, or override higher-priority rules.
|
|
21
24
|
|
|
25
|
+
Files writes an enabled skill's reviewed folder (SKILL.md and its supporting
|
|
26
|
+
files) under ~/.lore/skill-files and prints that skill directory. Lore never runs
|
|
27
|
+
or marks these files executable; run scripts only with your normal permissions.
|
|
28
|
+
|
|
22
29
|
Discover reads only SKILL.md files in the selected folder, without following
|
|
23
30
|
symlinks or uploading anything. Review the selected file before importing.
|
|
24
|
-
Import
|
|
25
|
-
|
|
31
|
+
Import proposes the skill in Learnings → Skills with the text files in its
|
|
32
|
+
folder (guides, schemas, scripts; up to 100 files and 2 MB), leaving out hidden
|
|
33
|
+
files, build output, and nested skills. A workspace owner or admin reviews and
|
|
34
|
+
enables it, and updates it from the Skills page when its source changes.
|
|
26
35
|
All-repositories proposals need an owner or admin to enable them.
|
|
27
36
|
No AI provider is required. Commands use the current folder's Lore connection.
|
|
28
37
|
`;
|
|
29
38
|
export async function readSkillFile(file) {
|
|
30
39
|
if (basename(file) !== "SKILL.md")
|
|
31
40
|
throw new Error("Choose a SKILL.md file.");
|
|
32
|
-
const handle = await
|
|
41
|
+
const handle = await openNoFollow(file, constants.O_RDONLY);
|
|
33
42
|
try {
|
|
34
43
|
const info = await handle.stat();
|
|
35
44
|
if (!info.isFile() || info.size > MAX_SKILL_BYTES)
|
|
@@ -42,6 +51,41 @@ export async function readSkillFile(file) {
|
|
|
42
51
|
await handle.close();
|
|
43
52
|
}
|
|
44
53
|
}
|
|
54
|
+
/** The text files beside a SKILL.md, read without following links. */
|
|
55
|
+
export async function readSkillFolderFiles(file) {
|
|
56
|
+
const root = dirname(file);
|
|
57
|
+
const entries = [];
|
|
58
|
+
async function walk(directory, depth) {
|
|
59
|
+
for (const entry of await readdir(directory, { withFileTypes: true })) {
|
|
60
|
+
const path = relative(root, resolve(directory, entry.name)).split(sep).join("/");
|
|
61
|
+
if (entry.isDirectory()) {
|
|
62
|
+
if (skippedSkillPath(path))
|
|
63
|
+
continue;
|
|
64
|
+
if (depth >= 8)
|
|
65
|
+
throw new Error("Keep the skill folder within 8 levels of folders.");
|
|
66
|
+
await walk(resolve(directory, entry.name), depth + 1);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
if (entries.length >= 1000)
|
|
70
|
+
throw new Error("Keep a skill to 100 supporting files.");
|
|
71
|
+
const info = entry.isFile() ? await lstat(resolve(directory, entry.name)) : null;
|
|
72
|
+
entries.push({ path, size: info?.size ?? 0, link: !info?.isFile() });
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
await walk(root, 0);
|
|
77
|
+
const files = [];
|
|
78
|
+
for (const path of selectSkillFolder(entries)) {
|
|
79
|
+
const handle = await openNoFollow(resolve(root, ...path.split("/")), constants.O_RDONLY);
|
|
80
|
+
try {
|
|
81
|
+
files.push({ path, bytes: await handle.readFile() });
|
|
82
|
+
}
|
|
83
|
+
finally {
|
|
84
|
+
await handle.close();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return readSkillFolder(files);
|
|
88
|
+
}
|
|
45
89
|
/** Bounded local discovery. No network and no automatic import or activation. */
|
|
46
90
|
export async function discoverSkills(folder) {
|
|
47
91
|
const root = await realpath(folder);
|
|
@@ -125,7 +169,7 @@ export async function discoverSkills(folder) {
|
|
|
125
169
|
await walk(root, 0);
|
|
126
170
|
return { folder: root, skills, errors, limited };
|
|
127
171
|
}
|
|
128
|
-
export async function runSkillCommand(args, config) {
|
|
172
|
+
export async function runSkillCommand(args, config, loreDirectory = resolve(process.env.LORE_HOME ?? process.env.HOME ?? process.env.USERPROFILE ?? homedir(), ".lore")) {
|
|
129
173
|
if (args.includes("--help") || args.includes("-h")) {
|
|
130
174
|
process.stdout.write(SKILL_HELP);
|
|
131
175
|
return;
|
|
@@ -141,7 +185,7 @@ export async function runSkillCommand(args, config) {
|
|
|
141
185
|
values.set(key, "true");
|
|
142
186
|
continue;
|
|
143
187
|
}
|
|
144
|
-
if (operation === "show" && i === 1 && !key.startsWith("--")) {
|
|
188
|
+
if ((operation === "show" || operation === "files") && i === 1 && !key.startsWith("--")) {
|
|
145
189
|
name = key;
|
|
146
190
|
continue;
|
|
147
191
|
}
|
|
@@ -156,6 +200,7 @@ export async function runSkillCommand(args, config) {
|
|
|
156
200
|
discover: ["--folder"],
|
|
157
201
|
list: ["--repo", "--offset"],
|
|
158
202
|
show: ["--repo"],
|
|
203
|
+
files: ["--repo"],
|
|
159
204
|
import: ["--repo", "--file", "--url", "--all-repositories"],
|
|
160
205
|
};
|
|
161
206
|
if (!operation ||
|
|
@@ -193,22 +238,40 @@ export async function runSkillCommand(args, config) {
|
|
|
193
238
|
throw new Error("Choose a skill name. Run lore skill list.");
|
|
194
239
|
result = await client.getSkill(name, repo);
|
|
195
240
|
}
|
|
241
|
+
else if (operation === "files") {
|
|
242
|
+
if (!name)
|
|
243
|
+
throw new Error("Choose a skill name. Run lore skill list.");
|
|
244
|
+
const bundle = await client.getSkillFiles(name, repo);
|
|
245
|
+
result = {
|
|
246
|
+
name: bundle.name,
|
|
247
|
+
version: bundle.version,
|
|
248
|
+
directory: await writeSkillFolder(loreDirectory, bundle),
|
|
249
|
+
files: bundle.files.map(({ path, bytes, script }) => ({ path, bytes, script })),
|
|
250
|
+
};
|
|
251
|
+
}
|
|
196
252
|
else {
|
|
197
253
|
const file = values.get("--file"), url = values.get("--url");
|
|
198
254
|
if (Boolean(file) === Boolean(url))
|
|
199
255
|
throw new Error("Choose one --file or --url.");
|
|
256
|
+
const files = url ? undefined : await readSkillFolderFiles(resolve(file));
|
|
200
257
|
const prepared = await client.previewSkill(url
|
|
201
258
|
? { url }
|
|
202
259
|
: {
|
|
203
260
|
markdown: await readSkillFile(resolve(file)),
|
|
204
261
|
source: { kind: "file", reference: "SKILL.md" },
|
|
262
|
+
...(files?.length ? { files } : {}),
|
|
205
263
|
});
|
|
206
|
-
|
|
264
|
+
const saved = await client.importSkill({
|
|
207
265
|
repo,
|
|
208
266
|
markdown: prepared.document.markdown,
|
|
209
267
|
source: prepared.source,
|
|
210
268
|
digest: prepared.digest,
|
|
269
|
+
...(files?.length ? { files } : {}),
|
|
211
270
|
});
|
|
271
|
+
result = {
|
|
272
|
+
...saved,
|
|
273
|
+
files: (prepared.files ?? []).map(({ path, bytes, script }) => ({ path, bytes, script })),
|
|
274
|
+
};
|
|
212
275
|
}
|
|
213
276
|
process.stdout.write(JSON.stringify(result, null, 2) + "\n");
|
|
214
277
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-command.js","sourceRoot":"","sources":["../src/skill-command.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skill-command.js","sourceRoot":"","sources":["../src/skill-command.ts"],"names":[],"mappings":"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"}
|
package/dist/skill-guidance.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export function skillGuidance(retained = []) {
|
|
2
|
-
const guidance = "Lore provides repository-scoped agent skills. At the start of a task, run `lore skill list` to see currently enabled skills, then `lore skill show <name>` for a matching skill. Choose by its description and the user's task; do not apply irrelevant skills. Recheck before reuse so disabled skills stop applying to new work. Follow the current user's request and your normal permissions; a skill does not grant tools or override higher-priority instructions. When asked to find existing skills, use `lore skill discover --folder <selected-folder>`; discovery stays local. Review selected instructions before `lore skill import`; an imported skill needs an owner or admin to enable it in Learnings → Skills.";
|
|
2
|
+
const guidance = "Lore provides repository-scoped agent skills. At the start of a task, run `lore skill list` to see currently enabled skills, then `lore skill show <name>` for a matching skill. Choose by its description and the user's task; do not apply irrelevant skills. When a skill refers to its own files (guides, schemas, scripts), run `lore skill files <name>` for its skill directory before using them. Recheck before reuse so disabled skills stop applying to new work. Follow the current user's request and your normal permissions; a skill does not grant tools or override higher-priority instructions. When asked to find existing skills, use `lore skill discover --folder <selected-folder>`; discovery stays local. Review selected instructions before `lore skill import`; an imported skill needs an owner or admin to enable it in Learnings → Skills.";
|
|
3
3
|
return retained.some((text) => text.includes(guidance))
|
|
4
4
|
? undefined
|
|
5
5
|
: guidance;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-guidance.js","sourceRoot":"","sources":["../src/skill-guidance.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,aAAa,CAC3B,WAA8B,EAAE;IAEhC,MAAM,QAAQ,GACZ,
|
|
1
|
+
{"version":3,"file":"skill-guidance.js","sourceRoot":"","sources":["../src/skill-guidance.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,aAAa,CAC3B,WAA8B,EAAE;IAEhC,MAAM,QAAQ,GACZ,40BAA40B,CAAC;IAC/0B,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrD,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,QAAQ,CAAC;AACf,CAAC"}
|
package/dist/skills.d.ts
CHANGED
|
@@ -9,8 +9,10 @@ interface Installation {
|
|
|
9
9
|
export declare function loreSkillFiles(paths: SkillPaths, installations: readonly Installation[]): string[];
|
|
10
10
|
/** The `/recap` skill is installed beside the `lore` skill at the same locations. */
|
|
11
11
|
export declare function recapSkillFiles(paths: SkillPaths, installations: readonly Installation[]): string[];
|
|
12
|
+
/** `files` are the skill files now at this version; `changed` are the ones this call rewrote. */
|
|
12
13
|
export declare function installLoreSkill(paths: SkillPaths, installations: readonly Installation[]): Promise<{
|
|
13
14
|
files: string[];
|
|
15
|
+
changed: string[];
|
|
14
16
|
warnings: string[];
|
|
15
17
|
}>;
|
|
16
18
|
export declare function removeLoreSkill(paths: SkillPaths, installations: readonly Installation[]): Promise<void>;
|
package/dist/skills.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"AAKA,UAAU,UAAU;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE;AAC5D,UAAU,YAAY;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE;AAiB5D,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,YAAY,EAAE,GAAG,MAAM,EAAE,CAElG;AAED,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,YAAY,EAAE,GAAG,MAAM,EAAE,CAEnG;
|
|
1
|
+
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"AAKA,UAAU,UAAU;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE;AAC5D,UAAU,YAAY;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE;AAiB5D,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,YAAY,EAAE,GAAG,MAAM,EAAE,CAElG;AAED,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,YAAY,EAAE,GAAG,MAAM,EAAE,CAEnG;AAWD,iGAAiG;AACjG,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,YAAY,EAAE,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA6CrK;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAO9G"}
|
package/dist/skills.js
CHANGED
|
@@ -23,13 +23,16 @@ export function loreSkillFiles(paths, installations) {
|
|
|
23
23
|
export function recapSkillFiles(paths, installations) {
|
|
24
24
|
return skillFiles(paths, installations, "recap");
|
|
25
25
|
}
|
|
26
|
-
|
|
27
|
-
const
|
|
26
|
+
/** Skill files sit at `<agent folder>/skills/<name>/SKILL.md`; the agent folder itself is still checked for links. */
|
|
27
|
+
const skillFolder = (file) => dirname(dirname(dirname(file)));
|
|
28
|
+
const readManifest = (paths) => readOwnedManifest(resolve(paths.loreDirectory, "skills.json"), "Skill", paths.home);
|
|
29
|
+
const removeOwnedSkill = (file, manifest, home) => removeOwnedFile(file, manifest, home, true, skillFolder(file));
|
|
28
30
|
function skillHint(subject, file, error) {
|
|
29
31
|
return ownedFileHint(subject, file, error, "Recording still works without the skill.");
|
|
30
32
|
}
|
|
33
|
+
/** `files` are the skill files now at this version; `changed` are the ones this call rewrote. */
|
|
31
34
|
export async function installLoreSkill(paths, installations) {
|
|
32
|
-
const files = [], warnings = [];
|
|
35
|
+
const files = [], changed = [], warnings = [];
|
|
33
36
|
const manifestFile = resolve(paths.loreDirectory, "skills.json");
|
|
34
37
|
let manifest;
|
|
35
38
|
try {
|
|
@@ -37,14 +40,14 @@ export async function installLoreSkill(paths, installations) {
|
|
|
37
40
|
}
|
|
38
41
|
catch (error) {
|
|
39
42
|
warnings.push(skillHint("Lore skill not installed: cannot read", manifestFile, error));
|
|
40
|
-
return { files, warnings };
|
|
43
|
+
return { files, changed, warnings };
|
|
41
44
|
}
|
|
42
45
|
// Installation is best-effort per file: an unwritable skill directory
|
|
43
46
|
// (for example a root-owned ~/.agents) must not fail the connection.
|
|
44
47
|
for (const skill of SHIPPED_SKILLS) {
|
|
45
48
|
for (const file of skillFiles(paths, installations, skill.name)) {
|
|
46
49
|
try {
|
|
47
|
-
if (!await regularPath(file)) {
|
|
50
|
+
if (!await regularPath(file, paths.home, skillFolder(file))) {
|
|
48
51
|
warnings.push(`${skill.subject} left unchanged because its path is symlinked: ${file}`);
|
|
49
52
|
continue;
|
|
50
53
|
}
|
|
@@ -53,8 +56,10 @@ export async function installLoreSkill(paths, installations) {
|
|
|
53
56
|
warnings.push(`${skill.subject} left unchanged to preserve your edits: ${file}`);
|
|
54
57
|
continue;
|
|
55
58
|
}
|
|
56
|
-
if (existing !== skill.asset)
|
|
59
|
+
if (existing !== skill.asset) {
|
|
57
60
|
await atomicWrite(file, skill.asset);
|
|
61
|
+
changed.push(file);
|
|
62
|
+
}
|
|
58
63
|
manifest[file] = digest(skill.asset);
|
|
59
64
|
files.push(file);
|
|
60
65
|
// Retire the old name only after its replacement is installed, using
|
|
@@ -62,10 +67,10 @@ export async function installLoreSkill(paths, installations) {
|
|
|
62
67
|
if (skill.name !== "lore")
|
|
63
68
|
continue;
|
|
64
69
|
const legacy = resolve(dirname(dirname(file)), "lore-remember/SKILL.md");
|
|
65
|
-
if (!await regularPath(legacy)) {
|
|
70
|
+
if (!await regularPath(legacy, paths.home, skillFolder(legacy))) {
|
|
66
71
|
warnings.push(`Previous lore-remember skill left unchanged because its path is symlinked: ${legacy}`);
|
|
67
72
|
}
|
|
68
|
-
else if (!await removeOwnedSkill(legacy, manifest) && await lstat(legacy).catch((error) => { if (error.code !== "ENOENT")
|
|
73
|
+
else if (!await removeOwnedSkill(legacy, manifest, paths.home) && await lstat(legacy).catch((error) => { if (error.code !== "ENOENT")
|
|
69
74
|
throw error; return null; })) {
|
|
70
75
|
warnings.push(`Previous lore-remember skill left unchanged to preserve your edits: ${legacy}`);
|
|
71
76
|
}
|
|
@@ -81,15 +86,15 @@ export async function installLoreSkill(paths, installations) {
|
|
|
81
86
|
catch (error) {
|
|
82
87
|
warnings.push(skillHint("Lore skill ownership not recorded in", manifestFile, error));
|
|
83
88
|
}
|
|
84
|
-
return { files, warnings };
|
|
89
|
+
return { files, changed, warnings };
|
|
85
90
|
}
|
|
86
91
|
export async function removeLoreSkill(paths, installations) {
|
|
87
92
|
const manifest = await readManifest(paths).catch(() => ({}));
|
|
88
93
|
// Manifest entries never select deletion targets; only known agent locations do.
|
|
89
94
|
for (const file of [...loreSkillFiles(paths, installations), ...recapSkillFiles(paths, installations), ...skillFiles(paths, installations, "lore-remember")]) {
|
|
90
|
-
await removeOwnedSkill(file, manifest);
|
|
95
|
+
await removeOwnedSkill(file, manifest, paths.home);
|
|
91
96
|
}
|
|
92
|
-
if (await regularPath(resolve(paths.loreDirectory, "skills.json")))
|
|
97
|
+
if (await regularPath(resolve(paths.loreDirectory, "skills.json"), paths.home))
|
|
93
98
|
await rm(resolve(paths.loreDirectory, "skills.json"), { force: true });
|
|
94
99
|
}
|
|
95
100
|
//# sourceMappingURL=skills.js.map
|
package/dist/skills.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAMtI,iFAAiF;AACjF,MAAM,cAAc,GAA0E;IAC5F,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,YAAY,EAAE;IAChE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,kBAAkB,EAAE;CACzE,CAAC;AAEF,SAAS,UAAU,CAAC,KAAiB,EAAE,aAAsC,EAAE,IAAe;IAC5F,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;YACtD,IAAI,YAAY,CAAC,KAAK,KAAK,QAAQ;gBAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,UAAU,IAAI,WAAW,CAAC,CAAC,CAAC;YACnH,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC;gBAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,kBAAkB,IAAI,WAAW,CAAC,CAAC,CAAC;YAC9K,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAiB,EAAE,aAAsC;IACtF,OAAO,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,eAAe,CAAC,KAAiB,EAAE,aAAsC;IACvF,OAAO,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,KAAiB,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,aAAa,CAAC,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The plain health lines at the top of `lore status`: how often context
|
|
3
|
+
* reached this machine's prompts lately, then one line each for a server
|
|
4
|
+
* behind this CLI and for out-of-date Lore files, only when true.
|
|
5
|
+
*/
|
|
6
|
+
/** At or above this share of prompts with live context, no hint is shown. */
|
|
7
|
+
export declare const CONTEXT_HEALTHY_RATE = 0.95;
|
|
8
|
+
/** Below this many prompts the line shows counts, not a percentage. */
|
|
9
|
+
export declare const CONTEXT_MIN_PROMPTS_FOR_RATE = 10;
|
|
10
|
+
export interface RecentContext {
|
|
11
|
+
days: number;
|
|
12
|
+
prompts: number;
|
|
13
|
+
live: number;
|
|
14
|
+
}
|
|
15
|
+
/** `null` when this machine sent no prompts in the window. */
|
|
16
|
+
export declare function contextHealthLine(recent: RecentContext | undefined): string | null;
|
|
17
|
+
/** True when `version` is an older release than `than` (pre-release tags ignored). */
|
|
18
|
+
export declare function olderRelease(version: string, than: string): boolean;
|
|
19
|
+
export declare function serverBehindLine(serverVersion: string | null, cliVersion: string): string | null;
|
|
20
|
+
export interface StaleLoreFile {
|
|
21
|
+
/** Customer-facing name, for example "OpenCode plugin". */
|
|
22
|
+
name: string;
|
|
23
|
+
version: string | null;
|
|
24
|
+
}
|
|
25
|
+
export declare function staleFilesLine(stale: readonly StaleLoreFile[]): string | null;
|
|
26
|
+
//# sourceMappingURL=status-health.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-health.d.ts","sourceRoot":"","sources":["../src/status-health.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,6EAA6E;AAC7E,eAAO,MAAM,oBAAoB,OAAO,CAAC;AACzC,uEAAuE;AACvE,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAE/C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,8DAA8D;AAC9D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CASlF;AAOD,sFAAsF;AACtF,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAQnE;AAED,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIhG;AAED,MAAM,WAAW,aAAa;IAC5B,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,GAAG,MAAM,GAAG,IAAI,CAK7E"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The plain health lines at the top of `lore status`: how often context
|
|
3
|
+
* reached this machine's prompts lately, then one line each for a server
|
|
4
|
+
* behind this CLI and for out-of-date Lore files, only when true.
|
|
5
|
+
*/
|
|
6
|
+
/** At or above this share of prompts with live context, no hint is shown. */
|
|
7
|
+
export const CONTEXT_HEALTHY_RATE = 0.95;
|
|
8
|
+
/** Below this many prompts the line shows counts, not a percentage. */
|
|
9
|
+
export const CONTEXT_MIN_PROMPTS_FOR_RATE = 10;
|
|
10
|
+
/** `null` when this machine sent no prompts in the window. */
|
|
11
|
+
export function contextHealthLine(recent) {
|
|
12
|
+
if (recent === undefined || recent.prompts === 0)
|
|
13
|
+
return null;
|
|
14
|
+
const share = recent.prompts < CONTEXT_MIN_PROMPTS_FOR_RATE
|
|
15
|
+
? `${recent.live} of ${recent.prompts} prompts`
|
|
16
|
+
: // Round down so a rate just under the threshold never reads as healthy.
|
|
17
|
+
`${Math.floor((recent.live / recent.prompts) * 100)}% of prompts`;
|
|
18
|
+
const hint = recent.live / recent.prompts < CONTEXT_HEALTHY_RATE ? " Run lore doctor to see why." : "";
|
|
19
|
+
return `Context live on ${share} in the last ${recent.days} days.${hint}`;
|
|
20
|
+
}
|
|
21
|
+
function release(version) {
|
|
22
|
+
const match = /^(\d+)\.(\d+)\.(\d+)/u.exec(version.trim());
|
|
23
|
+
return match === null ? null : [Number(match[1]), Number(match[2]), Number(match[3])];
|
|
24
|
+
}
|
|
25
|
+
/** True when `version` is an older release than `than` (pre-release tags ignored). */
|
|
26
|
+
export function olderRelease(version, than) {
|
|
27
|
+
const a = release(version);
|
|
28
|
+
const b = release(than);
|
|
29
|
+
if (a === null || b === null)
|
|
30
|
+
return false;
|
|
31
|
+
for (let index = 0; index < 3; index += 1) {
|
|
32
|
+
if (a[index] !== b[index])
|
|
33
|
+
return a[index] < b[index];
|
|
34
|
+
}
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
export function serverBehindLine(serverVersion, cliVersion) {
|
|
38
|
+
return serverVersion !== null && olderRelease(serverVersion, cliVersion)
|
|
39
|
+
? `Lore server ${serverVersion} is behind this CLI (${cliVersion}). Update the server.`
|
|
40
|
+
: null;
|
|
41
|
+
}
|
|
42
|
+
export function staleFilesLine(stale) {
|
|
43
|
+
if (stale.length === 0)
|
|
44
|
+
return null;
|
|
45
|
+
const names = stale.map((file) => (file.version === null ? file.name : `${file.name} (${file.version})`));
|
|
46
|
+
const list = names.length === 1 ? names[0] : `${names.slice(0, -1).join(", ")} and ${names.at(-1)}`;
|
|
47
|
+
return `${list} ${stale.length === 1 ? "is" : "are"} out of date. Run lore update.`;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=status-health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-health.js","sourceRoot":"","sources":["../src/status-health.ts"],"names":[],"mappings":"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"}
|
package/dist/telemetry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAiC,MAAM,eAAe,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGhD,eAAO,MAAM,cAAc,stBAc1B,CAAC;AAEF,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAAC,OAAO,CAAC,CAMhH;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAanG;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,CAM5F;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,cAAc,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,OAAO,KAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB/L"}
|
package/dist/telemetry.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
2
|
import { mkdir, readFile, rename, rm, writeFile } from "node:fs/promises";
|
|
3
3
|
import { join } from "node:path";
|
|
4
|
-
import { USAGE_COMMANDS } from "@lore-co/core";
|
|
4
|
+
import { USAGE_COMMANDS, loreDisabled } from "@lore-co/core";
|
|
5
5
|
import { LORE_VERSION } from "./version.js";
|
|
6
6
|
export const TELEMETRY_HELP = `Usage: lore telemetry [on|off|status]
|
|
7
7
|
|
|
@@ -19,7 +19,7 @@ enables it for a process. CI runs do not report. Self-hosted connections
|
|
|
19
19
|
report only to their own server, never to Lore's hosted service.
|
|
20
20
|
`;
|
|
21
21
|
export async function telemetryEnabled(directory, env = process.env) {
|
|
22
|
-
if (env.DO_NOT_TRACK === "1" || env.LORE_TELEMETRY === "0" || (env.CI && env.CI !== "false" && env.CI !== "0"))
|
|
22
|
+
if (env.DO_NOT_TRACK === "1" || env.LORE_TELEMETRY === "0" || loreDisabled(env) || (env.CI && env.CI !== "false" && env.CI !== "0"))
|
|
23
23
|
return false;
|
|
24
24
|
if (env.LORE_TELEMETRY === "1")
|
|
25
25
|
return true;
|
package/dist/telemetry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,cAAc,EAAmB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How human-facing command output is drawn. Rich output (marks, dim and bold)
|
|
3
|
+
* is only for an interactive terminal; anything else gets plain ASCII text
|
|
4
|
+
* that reads the same in logs and support tickets.
|
|
5
|
+
*/
|
|
6
|
+
export interface OutputStyle {
|
|
7
|
+
/** Colors and Unicode marks. False prints plain ASCII. */
|
|
8
|
+
rich: boolean;
|
|
9
|
+
/** Columns to wrap at; Infinity when stdout is not a terminal. */
|
|
10
|
+
width: number;
|
|
11
|
+
/** Show paths and per-file detail. */
|
|
12
|
+
verbose: boolean;
|
|
13
|
+
/** Shown as `~` in displayed paths. */
|
|
14
|
+
home: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Set by `lore update` for the refresh it runs in the installed binary, whose
|
|
18
|
+
* stdout is a pipe: the parent's terminal decides how the child draws.
|
|
19
|
+
*/
|
|
20
|
+
export declare const OUTPUT_STYLE_ENV = "LORE_OUTPUT_STYLE";
|
|
21
|
+
export declare const OUTPUT_COLUMNS_ENV = "LORE_OUTPUT_COLUMNS";
|
|
22
|
+
export declare const OUTPUT_VERBOSE_ENV = "LORE_OUTPUT_VERBOSE";
|
|
23
|
+
export declare const PLAIN_OUTPUT: OutputStyle;
|
|
24
|
+
interface OutputStream {
|
|
25
|
+
isTTY?: boolean;
|
|
26
|
+
columns?: number;
|
|
27
|
+
}
|
|
28
|
+
export declare function detectOutputStyle(options?: {
|
|
29
|
+
stream?: OutputStream;
|
|
30
|
+
environment?: NodeJS.ProcessEnv;
|
|
31
|
+
verbose?: boolean;
|
|
32
|
+
home?: string;
|
|
33
|
+
}): OutputStyle;
|
|
34
|
+
/** The environment that makes a child Lore process draw like this one. */
|
|
35
|
+
export declare function outputStyleEnvironment(style: OutputStyle): Record<string, string>;
|
|
36
|
+
/** `~/x` for a path inside the home folder; other paths unchanged. */
|
|
37
|
+
export declare function displayPath(path: string, home: string): string;
|
|
38
|
+
/** "A", "A and B", "A, B and C". */
|
|
39
|
+
export declare function listText(items: readonly string[]): string;
|
|
40
|
+
/**
|
|
41
|
+
* Word-wrap `text` to `width`, starting with `prefix` and indenting the lines
|
|
42
|
+
* after it to the same column. Never breaks inside a word or a kept span.
|
|
43
|
+
*/
|
|
44
|
+
export declare function wrap(text: string, width: number, prefix?: string, indent?: string): string[];
|
|
45
|
+
/** Builds the lines of one command's output in a given style. */
|
|
46
|
+
export declare class Output {
|
|
47
|
+
readonly style: OutputStyle;
|
|
48
|
+
private readonly lines;
|
|
49
|
+
constructor(style: OutputStyle);
|
|
50
|
+
private paint;
|
|
51
|
+
bold(text: string): string;
|
|
52
|
+
dim(text: string): string;
|
|
53
|
+
/** A command or other text the reader types: bold, and never wrapped apart. */
|
|
54
|
+
code(text: string): string;
|
|
55
|
+
path(path: string): string;
|
|
56
|
+
/** " · " between short facts on one line. */
|
|
57
|
+
get separator(): string;
|
|
58
|
+
mark(kind: "ok" | "warning" | "error"): string;
|
|
59
|
+
/** An outcome line, flush left: "✓ Lore 0.2.27 is installed". */
|
|
60
|
+
outcome(kind: "ok" | "warning" | "error", text: string): this;
|
|
61
|
+
/** A secondary line under an outcome, indented and dim. */
|
|
62
|
+
note(text: string, indent?: number): this;
|
|
63
|
+
/** An indented line in normal weight. */
|
|
64
|
+
text(text: string, indent?: number): this;
|
|
65
|
+
/** Two columns: a padded label and wrapped text that hangs under itself, after any mark. */
|
|
66
|
+
row(label: string, labelWidth: number, text: string, mark?: string, indent?: number): this;
|
|
67
|
+
/** A bold heading and its numbered steps; nothing when there are no steps. */
|
|
68
|
+
steps(heading: string, items: readonly string[]): this;
|
|
69
|
+
/** Lines printed exactly, for blocks the reader copies. */
|
|
70
|
+
verbatim(text: string): this;
|
|
71
|
+
blank(): this;
|
|
72
|
+
get empty(): boolean;
|
|
73
|
+
toString(): string;
|
|
74
|
+
}
|
|
75
|
+
export {};
|
|
76
|
+
//# sourceMappingURL=terminal-output.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-output.d.ts","sourceRoot":"","sources":["../src/terminal-output.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,IAAI,EAAE,OAAO,CAAC;IACd,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,sBAAsB,CAAC;AACpD,eAAO,MAAM,kBAAkB,wBAAwB,CAAC;AACxD,eAAO,MAAM,kBAAkB,wBAAwB,CAAC;AAKxD,eAAO,MAAM,YAAY,EAAE,WAA+E,CAAC;AAE3G,UAAU,YAAY;IAAG,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE;AAE5D,wBAAgB,iBAAiB,CAAC,OAAO,GAAE;IACzC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACV,GAAG,WAAW,CAgBnB;AAED,0EAA0E;AAC1E,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMjF;AAQD,sEAAsE;AACtE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAK9D;AAED,oCAAoC;AACpC,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAGzD;AAED;;;GAGG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,SAAK,EAAE,MAAM,SAAoC,GAAG,MAAM,EAAE,CAgBnH;AAED,iEAAiE;AACjE,qBAAa,MAAM;IAGL,QAAQ,CAAC,KAAK,EAAE,WAAW;IAFvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;gBAEjB,KAAK,EAAE,WAAW;IAEvC,OAAO,CAAC,KAAK;IAIb,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAC1B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAEzB,+EAA+E;IAC/E,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAE1B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAE1B,6CAA6C;IAC7C,IAAI,SAAS,IAAI,MAAM,CAA2C;IAElE,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM;IAK9C,iEAAiE;IACjE,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAO7D,2DAA2D;IAC3D,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,IAAI;IAMpC,yCAAyC;IACzC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,IAAI;IAKpC,4FAA4F;IAC5F,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,SAAK,EAAE,MAAM,SAAI,GAAG,IAAI;IAMjF,8EAA8E;IAC9E,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAQtD,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK5B,KAAK,IAAI,IAAI;IAKb,IAAI,KAAK,IAAI,OAAO,CAAoC;IAExD,QAAQ,IAAI,MAAM;CAInB"}
|