@duyquangnvx/agent-cli 0.6.0 → 0.8.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/CHANGELOG.md +19 -0
- package/dist/built-ins/doctor-rows.d.ts +14 -2
- package/dist/built-ins/doctor-rows.js +27 -18
- package/dist/built-ins/doctor-rows.js.map +1 -1
- package/dist/built-ins/doctor.js +23 -12
- package/dist/built-ins/doctor.js.map +1 -1
- package/dist/built-ins/update.js +9 -4
- package/dist/built-ins/update.js.map +1 -1
- package/dist/built-ins/upgrades.d.ts +15 -0
- package/dist/built-ins/upgrades.js +76 -0
- package/dist/built-ins/upgrades.js.map +1 -0
- package/dist/context.d.ts +1 -1
- package/dist/define.d.ts +5 -1
- package/dist/define.js.map +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/errors.js +2 -2
- package/dist/errors.js.map +1 -1
- package/dist/exit-classes.d.ts +1 -0
- package/dist/exit-classes.js +3 -3
- package/dist/exit-classes.js.map +1 -1
- package/dist/index.d.ts +12 -2
- package/dist/index.js +12 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/built-ins/upgrade-notes.d.ts +0 -9
- package/dist/built-ins/upgrade-notes.js +0 -41
- package/dist/built-ins/upgrade-notes.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,25 @@ What changed in each release of `@duyquangnvx/agent-cli` (the Runtime) and `@duy
|
|
|
4
4
|
|
|
5
5
|
## Unreleased
|
|
6
6
|
|
|
7
|
+
## v0.8.0 (2026-10-20)
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- **Breaking:** `update` shows only the Upgrade steps of a skipped release whose CHANGELOG section lists them under `### Upgrade from v<version>`, under `upgrade steps for <version>:`. A release whose only step is `Nothing to do.` is left out, and one without the heading still shows its whole section under `changes in <version>:`.
|
|
12
|
+
- **Breaking:** each entry of `upgrades` in `update --json` is `{ version, steps }` or `{ version, notes }`.
|
|
13
|
+
- The scaffolded template's CHANGELOG asks each release from the second on to hold `### Upgrade from v<the release below>`, and its setup reference tells the agent to do the steps `update` prints. The agent-cli skill's shipping reference explains the convention.
|
|
14
|
+
|
|
15
|
+
## v0.7.0 (2026-10-20)
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- Every Runtime code is exported under its name: `OUTPUT_EXISTS`, `PROJECT_INVALID`, `INVALID_INPUT`, `UNKNOWN_OPTION`, `UNKNOWN_COMMAND`, `UNKNOWN_FIELD`, `CONFIRMATION_REQUIRED`, `CONFIRMATION_MISMATCH`, `NOT_CONFIRMED`, `TOOL_FAILED`, `TOOL_MISSING`, `DOCTOR_PROBLEMS`, `INTERNAL`, `NOT_GLOBAL_INSTALL`, `REGISTRY_UNREACHABLE`, `REGISTRY_AUTH`, `INSTALL_FAILED`, `NPM_FAILED` and `NO_LATEST`. The agent-cli skill says which of them a Command may throw, and asserts codes through them.
|
|
20
|
+
- A CLI's `doctor` rows read the Project file as `ctx.project`, which was always `undefined` there. `doctor` reads the file once for all its rows; a row that reads `ctx.project` while the file is unusable is skipped, since the `project` row reports it. See `DoctorCheck.run`. The agent-cli skill's example adds a `tag` row that reads it.
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
|
|
24
|
+
- **Breaking:** `doctor`'s `project` row carries the code of the failed read, so a Project file its schema rejects fails `doctor` with `PROJECT_INVALID` instead of `DOCTOR_PROBLEMS` (still exit 2), the code a Command fails with on the same file. The row's message adds the error's hint.
|
|
25
|
+
|
|
7
26
|
## v0.6.0 (2026-10-20)
|
|
8
27
|
|
|
9
28
|
### Changed
|
|
@@ -1,4 +1,16 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Context, Project, ProjectFile } from "../context.js";
|
|
2
|
+
import type { CommandTreeCli, DoctorCheck, DoctorFinding } from "../define.js";
|
|
2
3
|
import type { Launch } from "./commands.js";
|
|
4
|
+
/** A row's thrown error as its problem: a `CliError` with its hint and code, anything else a bug. */
|
|
5
|
+
export declare function problemOfError(name: string, error: unknown): DoctorFinding;
|
|
6
|
+
/** The one read of the Project file a `doctor` run makes, shared by every row. */
|
|
7
|
+
export type ProjectRead = {
|
|
8
|
+
readonly ok: true;
|
|
9
|
+
readonly project: Project | undefined;
|
|
10
|
+
} | {
|
|
11
|
+
readonly ok: false;
|
|
12
|
+
readonly error: unknown;
|
|
13
|
+
};
|
|
14
|
+
export declare function readProject(projectFile: ProjectFile | undefined, ctx: Context): ProjectRead;
|
|
3
15
|
/** Every row `doctor` reports, in order: the fixed rows around the CLI's own and its tools'. */
|
|
4
|
-
export declare function doctorChecks(cli: CommandTreeCli, launch: Launch): DoctorCheck[];
|
|
16
|
+
export declare function doctorChecks(cli: CommandTreeCli, launch: Launch, read: ProjectRead): DoctorCheck[];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { join } from "node:path";
|
|
2
|
-
import { CliError } from "../errors.js";
|
|
3
|
-
import {
|
|
2
|
+
import { CliError, messageOf } from "../errors.js";
|
|
3
|
+
import { projectOf } from "../project.js";
|
|
4
4
|
import { toolRows } from "../tools.js";
|
|
5
5
|
import { versionLine } from "../version.js";
|
|
6
6
|
import { globalInstallOf, NOT_GLOBAL_INSTALL } from "./global-install.js";
|
|
@@ -41,24 +41,33 @@ function nodeRow(cli) {
|
|
|
41
41
|
},
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
/** A row's thrown error as its problem: a `CliError` with its hint and code, anything else a bug. */
|
|
45
|
+
export function problemOfError(name, error) {
|
|
46
|
+
if (error instanceof CliError) {
|
|
47
|
+
return { state: "problem", message: `${error.message}; ${error.hint}`, code: error.code };
|
|
48
|
+
}
|
|
49
|
+
return { state: "problem", message: `the ${name} row hit a bug: ${messageOf(error)}` };
|
|
50
|
+
}
|
|
51
|
+
// The error is kept, not thrown: `doctor` reports it in the `project` row and rethrows it to a row reading `ctx.project`.
|
|
52
|
+
export function readProject(projectFile, ctx) {
|
|
53
|
+
if (projectFile === undefined)
|
|
54
|
+
return { ok: true, project: undefined };
|
|
55
|
+
try {
|
|
56
|
+
return { ok: true, project: projectOf(projectFile, ctx.cwd, ctx.fileError) };
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
return { ok: false, error };
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function projectRow({ file }, read) {
|
|
46
63
|
return {
|
|
47
64
|
name: "project",
|
|
48
65
|
run: (ctx) => {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
catch (error) {
|
|
54
|
-
if (error instanceof CliError && error.code === PROJECT_INVALID) {
|
|
55
|
-
return { state: "problem", message: error.message };
|
|
56
|
-
}
|
|
57
|
-
throw error;
|
|
58
|
-
}
|
|
59
|
-
return ok(project === undefined
|
|
66
|
+
if (!read.ok)
|
|
67
|
+
return problemOfError("project", read.error);
|
|
68
|
+
return ok(read.project === undefined
|
|
60
69
|
? `none found: no ${file} at or above ${ctx.cwd}`
|
|
61
|
-
: join(project.root, file));
|
|
70
|
+
: join(read.project.root, file));
|
|
62
71
|
},
|
|
63
72
|
};
|
|
64
73
|
}
|
|
@@ -132,11 +141,11 @@ function skillRow(cli) {
|
|
|
132
141
|
};
|
|
133
142
|
}
|
|
134
143
|
/** Every row `doctor` reports, in order: the fixed rows around the CLI's own and its tools'. */
|
|
135
|
-
export function doctorChecks(cli, launch) {
|
|
144
|
+
export function doctorChecks(cli, launch, read) {
|
|
136
145
|
return [
|
|
137
146
|
buildRow(cli),
|
|
138
147
|
nodeRow(cli),
|
|
139
|
-
...(cli.project === undefined ? [] : [projectRow(cli.project)]),
|
|
148
|
+
...(cli.project === undefined ? [] : [projectRow(cli.project, read)]),
|
|
140
149
|
...(cli.doctor ?? []),
|
|
141
150
|
...toolRows(cli.tools ?? [], cli.commands),
|
|
142
151
|
installRow(cli, launch),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-rows.js","sourceRoot":"","sources":["../../src/built-ins/doctor-rows.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor-rows.js","sourceRoot":"","sources":["../../src/built-ins/doctor-rows.ts"],"names":[],"mappings":"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"}
|
package/dist/built-ins/doctor.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as z from "zod";
|
|
2
2
|
import { untilAborted } from "../abort.js";
|
|
3
3
|
import { defineCommand, } from "../define.js";
|
|
4
|
-
import { CliError
|
|
5
|
-
import { doctorChecks } from "./doctor-rows.js";
|
|
4
|
+
import { CliError } from "../errors.js";
|
|
5
|
+
import { doctorChecks, problemOfError, readProject } from "./doctor-rows.js";
|
|
6
6
|
export const DOCTOR_PROBLEMS = "DOCTOR_PROBLEMS";
|
|
7
7
|
const DEFAULT_DEADLINE_MS = 10_000;
|
|
8
8
|
const MS_PER_SECOND = 1000;
|
|
@@ -25,31 +25,41 @@ function problemOf(check, error, { signal, deadline, ms }) {
|
|
|
25
25
|
message: `${check.name} did not answer within ${ms / MS_PER_SECOND} s`,
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
|
-
|
|
29
|
-
return { state: "problem", message: `${error.message}; ${error.hint}`, code: error.code };
|
|
30
|
-
}
|
|
31
|
-
return { state: "problem", message: `the ${check.name} row hit a bug: ${messageOf(error)}` };
|
|
28
|
+
return problemOfError(check.name, error);
|
|
32
29
|
}
|
|
33
30
|
// Not a spread, which would read the lazy `ctx.ports` for every row.
|
|
34
|
-
function
|
|
35
|
-
return Object.create(ctx, {
|
|
31
|
+
function rowContext(ctx, signal, read) {
|
|
32
|
+
return Object.create(ctx, {
|
|
33
|
+
signal: { value: signal },
|
|
34
|
+
project: {
|
|
35
|
+
get: () => {
|
|
36
|
+
if (!read.ok)
|
|
37
|
+
throw read.error;
|
|
38
|
+
return read.project;
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
});
|
|
36
42
|
}
|
|
37
43
|
// Racing the deadline ends a row whose check ignores its signal. A row cut short by an interrupt
|
|
38
44
|
// has no finding, since the interrupt is no problem of the row's.
|
|
39
|
-
async function rowOf(check, ctx) {
|
|
45
|
+
async function rowOf(check, ctx, read) {
|
|
40
46
|
const ms = check.deadlineMs ?? DEFAULT_DEADLINE_MS;
|
|
41
47
|
const signal = ctx.deadline(ms);
|
|
42
48
|
let finding;
|
|
43
49
|
try {
|
|
44
50
|
finding = await Promise.race([
|
|
45
|
-
Promise.resolve().then(() => check.run(
|
|
51
|
+
Promise.resolve().then(() => check.run(rowContext(ctx, signal, read))),
|
|
46
52
|
untilAborted(signal),
|
|
47
53
|
]);
|
|
48
54
|
}
|
|
49
55
|
catch (error) {
|
|
50
56
|
if (ctx.signal.aborted)
|
|
51
57
|
return undefined;
|
|
52
|
-
|
|
58
|
+
// The `project` row already reports the unusable file, so a row that read it is not checked.
|
|
59
|
+
finding =
|
|
60
|
+
!read.ok && error === read.error
|
|
61
|
+
? { state: "skipped", message: "the Project file is unusable; the project row says why" }
|
|
62
|
+
: problemOf(check, error, { signal: ctx.signal, deadline: signal, ms });
|
|
53
63
|
}
|
|
54
64
|
return { row: { check: check.name, ...finding }, advisory: check.advisory === true };
|
|
55
65
|
}
|
|
@@ -86,7 +96,8 @@ export function doctorCommand(cli, launch) {
|
|
|
86
96
|
effect: "read",
|
|
87
97
|
output: reportSchema,
|
|
88
98
|
run: async (_input, ctx) => {
|
|
89
|
-
const
|
|
99
|
+
const read = readProject(cli.project, ctx);
|
|
100
|
+
const settled = await Promise.all(doctorChecks(cli, launch, read).map((check) => rowOf(check, ctx, read)));
|
|
90
101
|
const checked = settled.filter((row) => row !== undefined);
|
|
91
102
|
const rows = checked.map(({ row }) => row);
|
|
92
103
|
const report = { rows, next: nextOf(rows) };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/built-ins/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAKL,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/built-ins/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/built-ins/update.js
CHANGED
|
@@ -6,12 +6,12 @@ import { globalInstallOf } from "./global-install.js";
|
|
|
6
6
|
import { installGlobally, latestVersion, npmContext } from "./npm.js";
|
|
7
7
|
import { standingOf } from "./semver.js";
|
|
8
8
|
import { skillReport } from "./skills.js";
|
|
9
|
-
import {
|
|
9
|
+
import { upgradeSchema, upgradesOf } from "./upgrades.js";
|
|
10
10
|
const updateSchema = z.object({
|
|
11
11
|
from: z.string(),
|
|
12
12
|
latest: z.string(),
|
|
13
13
|
installed: z.object({ version: z.string(), prefix: z.string() }).nullable(),
|
|
14
|
-
upgrades: z.array(
|
|
14
|
+
upgrades: z.array(upgradeSchema),
|
|
15
15
|
next: z.array(z.string()),
|
|
16
16
|
});
|
|
17
17
|
function nothingToInstall({ from, latest }) {
|
|
@@ -19,13 +19,18 @@ function nothingToInstall({ from, latest }) {
|
|
|
19
19
|
? `already on ${from}, the latest release: nothing to install`
|
|
20
20
|
: `${from} is newer than the latest release ${latest}: nothing to install`;
|
|
21
21
|
}
|
|
22
|
+
function renderUpgrade(upgrade) {
|
|
23
|
+
return "steps" in upgrade
|
|
24
|
+
? [`\nupgrade steps for ${upgrade.version}:`, ...upgrade.steps.map((step) => `- ${step}`)].join("\n")
|
|
25
|
+
: `\nchanges in ${upgrade.version}:\n${upgrade.notes}`;
|
|
26
|
+
}
|
|
22
27
|
function renderUpdate(cli, install, update) {
|
|
23
28
|
const { installed } = update;
|
|
24
29
|
const head = installed === null
|
|
25
30
|
? [nothingToInstall(update)]
|
|
26
31
|
: [
|
|
27
32
|
`installed ${install.package}@${installed.version} with the npm under ${installed.prefix}, replacing ${update.from}`,
|
|
28
|
-
...update.upgrades.map(
|
|
33
|
+
...update.upgrades.map(renderUpgrade),
|
|
29
34
|
];
|
|
30
35
|
const next = update.next.map((command) => `next: ${command}, so the ${cli.name} skill describes ${update.latest}`);
|
|
31
36
|
return (next.length === 0 ? head : [...head, "", ...next]).join("\n");
|
|
@@ -83,7 +88,7 @@ export function updateCommand(cli, install, { bin, node }) {
|
|
|
83
88
|
from,
|
|
84
89
|
latest,
|
|
85
90
|
installed: { version: latest, prefix },
|
|
86
|
-
upgrades: await
|
|
91
|
+
upgrades: await upgradesOf(plan.packageDir, from, latest),
|
|
87
92
|
next: await skillNext(cli, latest, ctx),
|
|
88
93
|
};
|
|
89
94
|
if (ctx.signal.aborted) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/built-ins/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,EAAqC,aAAa,EAAsB,MAAM,cAAc,CAAC;AACpG,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/built-ins/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as z from "zod";
|
|
2
|
+
/** A skipped release's Upgrade steps, or its whole section when it lists none. */
|
|
3
|
+
export declare const upgradeSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
4
|
+
version: z.ZodString;
|
|
5
|
+
steps: z.ZodArray<z.ZodString>;
|
|
6
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
7
|
+
version: z.ZodString;
|
|
8
|
+
notes: z.ZodString;
|
|
9
|
+
}, z.core.$strip>]>;
|
|
10
|
+
export type Upgrade = z.infer<typeof upgradeSchema>;
|
|
11
|
+
/**
|
|
12
|
+
* What each release after `from` up to `to` asks of the operator, oldest first, from the
|
|
13
|
+
* CHANGELOG.md in `packageDir`; none when the package ships no CHANGELOG.
|
|
14
|
+
*/
|
|
15
|
+
export declare function upgradesOf(packageDir: string, from: string, to: string): Promise<Upgrade[]>;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import * as z from "zod";
|
|
4
|
+
import { isMissingFile } from "../errors.js";
|
|
5
|
+
import { compareVersions, isVersion } from "./semver.js";
|
|
6
|
+
/** A skipped release's Upgrade steps, or its whole section when it lists none. */
|
|
7
|
+
export const upgradeSchema = z.union([
|
|
8
|
+
z.object({ version: z.string(), steps: z.array(z.string()) }),
|
|
9
|
+
z.object({ version: z.string(), notes: z.string() }),
|
|
10
|
+
]);
|
|
11
|
+
const RELEASE_HEADING = /^## v?(\S+)/;
|
|
12
|
+
const UPGRADE_HEADING = /^### Upgrade from v\S+$/;
|
|
13
|
+
const HEADING = /^#{1,6} /;
|
|
14
|
+
// Only an item at the margin starts a step; an indented one continues the step above it.
|
|
15
|
+
const ITEM = /^[-*] /;
|
|
16
|
+
const NOTHING_TO_DO = /^nothing to do\.?$/i;
|
|
17
|
+
function releasesIn(changelog) {
|
|
18
|
+
const releases = [];
|
|
19
|
+
let current;
|
|
20
|
+
for (const line of changelog.split(/\r?\n/)) {
|
|
21
|
+
const heading = RELEASE_HEADING.exec(line);
|
|
22
|
+
if (heading !== null) {
|
|
23
|
+
const version = heading[1] ?? "";
|
|
24
|
+
current = isVersion(version) ? { version, lines: [] } : undefined;
|
|
25
|
+
if (current !== undefined)
|
|
26
|
+
releases.push(current);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
current?.lines.push(line);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return releases;
|
|
33
|
+
}
|
|
34
|
+
// A heading that lists no item is read as no heading, so a misformatted list never hides the section.
|
|
35
|
+
function listedSteps(lines) {
|
|
36
|
+
const start = lines.findIndex((line) => UPGRADE_HEADING.test(line.trimEnd()));
|
|
37
|
+
if (start === -1)
|
|
38
|
+
return [];
|
|
39
|
+
const end = lines.findIndex((line, i) => i > start && HEADING.test(line));
|
|
40
|
+
const body = lines
|
|
41
|
+
.slice(start + 1, end === -1 ? undefined : end)
|
|
42
|
+
.filter((line) => line.trim() !== "");
|
|
43
|
+
const starts = body.flatMap((line, i) => (ITEM.test(line) ? [i] : []));
|
|
44
|
+
return starts.map((first, i) => body
|
|
45
|
+
.slice(first, starts[i + 1])
|
|
46
|
+
.map((line) => line.trim())
|
|
47
|
+
.join(" ")
|
|
48
|
+
.replace(ITEM, ""));
|
|
49
|
+
}
|
|
50
|
+
function upgradeOf({ version, lines }) {
|
|
51
|
+
const listed = listedSteps(lines);
|
|
52
|
+
if (listed.length === 0)
|
|
53
|
+
return [{ version, notes: lines.join("\n").trim() }];
|
|
54
|
+
const todo = listed.filter((step) => !NOTHING_TO_DO.test(step));
|
|
55
|
+
return todo.length === 0 ? [] : [{ version, steps: todo }];
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* What each release after `from` up to `to` asks of the operator, oldest first, from the
|
|
59
|
+
* CHANGELOG.md in `packageDir`; none when the package ships no CHANGELOG.
|
|
60
|
+
*/
|
|
61
|
+
export async function upgradesOf(packageDir, from, to) {
|
|
62
|
+
let changelog;
|
|
63
|
+
try {
|
|
64
|
+
changelog = await readFile(join(packageDir, "CHANGELOG.md"), "utf8");
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
if (isMissingFile(error))
|
|
68
|
+
return [];
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
71
|
+
return releasesIn(changelog)
|
|
72
|
+
.filter(({ version }) => compareVersions(version, from) > 0 && compareVersions(version, to) <= 0)
|
|
73
|
+
.sort((a, b) => compareVersions(a.version, b.version))
|
|
74
|
+
.flatMap(upgradeOf);
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=upgrades.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrades.js","sourceRoot":"","sources":["../../src/built-ins/upgrades.ts"],"names":[],"mappings":"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"}
|
package/dist/context.d.ts
CHANGED
|
@@ -94,7 +94,7 @@ export interface Context<Ports = unknown, Settings = unknown> {
|
|
|
94
94
|
/**
|
|
95
95
|
* The Project file found by walking up from `cwd`, parsed by the CLI's schema, or `undefined`
|
|
96
96
|
* when there is none. A file the schema rejects fails the run with `PROJECT_INVALID` (exit 2)
|
|
97
|
-
* before the Command runs
|
|
97
|
+
* before the Command runs. Of the built-in Commands only `doctor` reads it, for its rows.
|
|
98
98
|
*/
|
|
99
99
|
readonly project: Project<Settings> | undefined;
|
|
100
100
|
/**
|
package/dist/define.d.ts
CHANGED
|
@@ -212,7 +212,11 @@ export interface DoctorCheck<Ports = unknown, Settings = unknown> {
|
|
|
212
212
|
readonly deadlineMs?: number;
|
|
213
213
|
/** A problem in an advisory row shows but never fails `doctor`. */
|
|
214
214
|
readonly advisory?: boolean;
|
|
215
|
-
/**
|
|
215
|
+
/**
|
|
216
|
+
* `ctx.signal` aborts at the row's deadline. A thrown error is reported as this row's problem.
|
|
217
|
+
* `ctx.project` is the Project file as a Command sees it, `undefined` when there is none;
|
|
218
|
+
* reading it when the file is unusable skips the row, since the `project` row reports the file.
|
|
219
|
+
*/
|
|
216
220
|
run(ctx: Context<Ports, Settings>): DoctorFinding | Promise<DoctorFinding>;
|
|
217
221
|
}
|
|
218
222
|
/** An Agent CLI whose Commands are reached by name, as in `tool voices list`. */
|
package/dist/define.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define.js","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAyB,MAAM,YAAY,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"define.js","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAyB,MAAM,YAAY,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAsW5F,SAAS,cAAc,CAA2B,OAAiB;IACjE,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,UAAU,CAAC,OAAO,CAAC,CAAC;IACpB,iBAAiB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9D,yBAAyB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACzD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAA2B,gBAAgB,EAAE,CAAC;AAExE,0FAA0F;AAC1F,MAAM,UAAU,SAAS,CAAC,IAAwB;IAChD,OAAO,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC;AACzC,CAAC"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ export type UsageErrorFields = Pick<CliErrorFields, "code" | "message" | "hint">
|
|
|
21
21
|
export declare class UsageError extends CliError {
|
|
22
22
|
constructor(fields: UsageErrorFields);
|
|
23
23
|
}
|
|
24
|
-
export declare const
|
|
24
|
+
export declare const INTERNAL = "INTERNAL";
|
|
25
25
|
export interface ErrorFormat {
|
|
26
26
|
readonly cliName: string;
|
|
27
27
|
readonly json: boolean;
|
package/dist/errors.js
CHANGED
|
@@ -19,7 +19,7 @@ export class UsageError extends CliError {
|
|
|
19
19
|
this.name = "UsageError";
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
export const
|
|
22
|
+
export const INTERNAL = "INTERNAL";
|
|
23
23
|
export function errnoOf(error) {
|
|
24
24
|
return error instanceof Error && "code" in error && typeof error.code === "string"
|
|
25
25
|
? error.code
|
|
@@ -55,7 +55,7 @@ function fieldsOf(error, format) {
|
|
|
55
55
|
const { code, message, hint, details, retryAt } = error;
|
|
56
56
|
return { code, message, hint: format.isBug(error) ? bugHint(format) : hint, details, retryAt };
|
|
57
57
|
}
|
|
58
|
-
return { code:
|
|
58
|
+
return { code: INTERNAL, message: messageOf(error), hint: bugHint(format) };
|
|
59
59
|
}
|
|
60
60
|
export function causesOf(error) {
|
|
61
61
|
return error instanceof Error && error.cause !== undefined
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAaA,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,IAAI,CAAS;IACb,IAAI,CAAS;IACb,OAAO,CAAU;IACjB,OAAO,CAAqB;IAErC,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAkB,EAAE,OAAsB;QAC3F,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAID,0EAA0E;AAC1E,MAAM,OAAO,UAAW,SAAQ,QAAQ;IACtC,YAAY,MAAwB;QAClC,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/exit-classes.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export declare const EXIT_CODES: {
|
|
|
14
14
|
readonly wait: 75;
|
|
15
15
|
readonly bug: 70;
|
|
16
16
|
};
|
|
17
|
+
export declare const RUNTIME_EXIT_CLASSES: Readonly<Record<string, ExitClass>>;
|
|
17
18
|
/** The codes of `errors` that the Runtime already declares, which a CLI cannot redeclare. */
|
|
18
19
|
export declare function runtimeCodesIn(errors: ErrorTable): string[];
|
|
19
20
|
export declare function isBug(error: unknown, errors: ErrorTable): boolean;
|
package/dist/exit-classes.js
CHANGED
|
@@ -4,7 +4,7 @@ import { INSTALL_FAILED, NO_LATEST, NPM_FAILED, REGISTRY_AUTH, REGISTRY_UNREACHA
|
|
|
4
4
|
import { CONFIRMATION_MISMATCH, CONFIRMATION_REQUIRED } from "./confirm.js";
|
|
5
5
|
import { NOT_CONFIRMED } from "./cost.js";
|
|
6
6
|
import { ALREADY_EXISTS, DISK_FULL, NOT_A_FILE, NOT_FOUND, PERMISSION_DENIED } from "./errno.js";
|
|
7
|
-
import { CliError, errorsOf,
|
|
7
|
+
import { CliError, errorsOf, INTERNAL, UsageError } from "./errors.js";
|
|
8
8
|
import { DEADLINE_EXCEEDED, INTERRUPTED } from "./interrupts.js";
|
|
9
9
|
import { UNKNOWN_FIELD } from "./list.js";
|
|
10
10
|
import { NEEDS_OPERATOR } from "./operator.js";
|
|
@@ -22,7 +22,7 @@ export const EXIT_CODES = {
|
|
|
22
22
|
wait: 75,
|
|
23
23
|
bug: 70,
|
|
24
24
|
};
|
|
25
|
-
const RUNTIME_EXIT_CLASSES = {
|
|
25
|
+
export const RUNTIME_EXIT_CLASSES = {
|
|
26
26
|
[INVALID_INPUT]: "caller",
|
|
27
27
|
[UNKNOWN_OPTION]: "caller",
|
|
28
28
|
[UNKNOWN_COMMAND]: "caller",
|
|
@@ -35,7 +35,7 @@ const RUNTIME_EXIT_CLASSES = {
|
|
|
35
35
|
[STDIN_STALLED]: "caller",
|
|
36
36
|
[INTERRUPTED]: "interrupted",
|
|
37
37
|
[DEADLINE_EXCEEDED]: "wait",
|
|
38
|
-
[
|
|
38
|
+
[INTERNAL]: "bug",
|
|
39
39
|
[PERMISSION_DENIED]: "operator",
|
|
40
40
|
[DISK_FULL]: "operator",
|
|
41
41
|
[NOT_FOUND]: "caller",
|
package/dist/exit-classes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exit-classes.js","sourceRoot":"","sources":["../src/exit-classes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EACL,cAAc,EACd,SAAS,EACT,UAAU,EACV,aAAa,EACb,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEjG,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"exit-classes.js","sourceRoot":"","sources":["../src/exit-classes.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,19 +1,26 @@
|
|
|
1
1
|
export type { AgentCli } from "./agent-cli.js";
|
|
2
2
|
export { agentCli } from "./agent-cli.js";
|
|
3
|
+
export { DOCTOR_PROBLEMS } from "./built-ins/doctor.js";
|
|
4
|
+
export { NOT_GLOBAL_INSTALL } from "./built-ins/global-install.js";
|
|
5
|
+
export { INSTALL_FAILED, NO_LATEST, NPM_FAILED, REGISTRY_AUTH, REGISTRY_UNREACHABLE, } from "./built-ins/npm.js";
|
|
3
6
|
export type { Clock } from "./clock.js";
|
|
7
|
+
export { CONFIRMATION_MISMATCH, CONFIRMATION_REQUIRED } from "./confirm.js";
|
|
4
8
|
export type { BuildStamp, Context, Env, PollOptions, PortsBase, Project, ProjectFile, } from "./context.js";
|
|
9
|
+
export { NOT_CONFIRMED } from "./cost.js";
|
|
5
10
|
export type { Cli, Command, Commands, DefineCommand, DestructiveCommand, DoctorCheck, DoctorFinding, Example, GlobalInstall, ListCommand, NoPorts, ReadCommand, RunDeadline, ServeCommand, Tool, WriteCommand, } from "./define.js";
|
|
6
11
|
export { ALREADY_EXISTS, DISK_FULL, type FileAccess, NOT_A_FILE, NOT_FOUND, PERMISSION_DENIED, } from "./errno.js";
|
|
7
12
|
export type { CliErrorInit, DeclaredExitClass, ErrorDeclaration, ErrorTable, } from "./error-table.js";
|
|
8
13
|
export { cliError, defineErrors } from "./error-table.js";
|
|
9
14
|
export type { CliErrorFields, UsageErrorFields } from "./errors.js";
|
|
10
|
-
export { CliError, debugVariable, UsageError } from "./errors.js";
|
|
15
|
+
export { CliError, debugVariable, INTERNAL, UsageError } from "./errors.js";
|
|
11
16
|
export type { FileStat, Files, MkdirOptions, WriteOptions } from "./files.js";
|
|
12
17
|
export { DEADLINE_EXCEEDED, INTERRUPTED } from "./interrupts.js";
|
|
13
18
|
export type { Page, PageInput } from "./list.js";
|
|
14
|
-
export { page, paginate } from "./list.js";
|
|
19
|
+
export { page, paginate, UNKNOWN_FIELD } from "./list.js";
|
|
15
20
|
export { NEEDS_OPERATOR } from "./operator.js";
|
|
16
21
|
export type { RunResult } from "./output.js";
|
|
22
|
+
export { OUTPUT_EXISTS } from "./outputs.js";
|
|
23
|
+
export { PROJECT_INVALID } from "./project.js";
|
|
17
24
|
export { runCli } from "./run-cli.js";
|
|
18
25
|
export type { RunOptions } from "./run-options.js";
|
|
19
26
|
export { runProcess } from "./run-process.js";
|
|
@@ -21,6 +28,9 @@ export type { Secret, SecretOrigin } from "./secrets.js";
|
|
|
21
28
|
export type { SideTaskRun } from "./side-task.js";
|
|
22
29
|
export { SIDE_TASK_WAIT_MS } from "./side-task.js";
|
|
23
30
|
export type { Spawn, SpawnOptions, SpawnResult } from "./spawn.js";
|
|
31
|
+
export { TOOL_FAILED } from "./spawn.js";
|
|
24
32
|
export type { StdinSource } from "./stdin.js";
|
|
25
33
|
export { orStdin, STDIN_IDLE_MS, STDIN_STALLED } from "./stdin.js";
|
|
26
34
|
export type { Style } from "./style.js";
|
|
35
|
+
export { TOOL_MISSING } from "./tools.js";
|
|
36
|
+
export { INVALID_INPUT, UNKNOWN_COMMAND, UNKNOWN_OPTION } from "./usage.js";
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
export { agentCli } from "./agent-cli.js";
|
|
2
|
+
export { DOCTOR_PROBLEMS } from "./built-ins/doctor.js";
|
|
3
|
+
export { NOT_GLOBAL_INSTALL } from "./built-ins/global-install.js";
|
|
4
|
+
export { INSTALL_FAILED, NO_LATEST, NPM_FAILED, REGISTRY_AUTH, REGISTRY_UNREACHABLE, } from "./built-ins/npm.js";
|
|
5
|
+
export { CONFIRMATION_MISMATCH, CONFIRMATION_REQUIRED } from "./confirm.js";
|
|
6
|
+
export { NOT_CONFIRMED } from "./cost.js";
|
|
2
7
|
export { ALREADY_EXISTS, DISK_FULL, NOT_A_FILE, NOT_FOUND, PERMISSION_DENIED, } from "./errno.js";
|
|
3
8
|
export { cliError, defineErrors } from "./error-table.js";
|
|
4
|
-
export { CliError, debugVariable, UsageError } from "./errors.js";
|
|
9
|
+
export { CliError, debugVariable, INTERNAL, UsageError } from "./errors.js";
|
|
5
10
|
export { DEADLINE_EXCEEDED, INTERRUPTED } from "./interrupts.js";
|
|
6
|
-
export { page, paginate } from "./list.js";
|
|
11
|
+
export { page, paginate, UNKNOWN_FIELD } from "./list.js";
|
|
7
12
|
export { NEEDS_OPERATOR } from "./operator.js";
|
|
13
|
+
export { OUTPUT_EXISTS } from "./outputs.js";
|
|
14
|
+
export { PROJECT_INVALID } from "./project.js";
|
|
8
15
|
export { runCli } from "./run-cli.js";
|
|
9
16
|
export { runProcess } from "./run-process.js";
|
|
10
17
|
export { SIDE_TASK_WAIT_MS } from "./side-task.js";
|
|
18
|
+
export { TOOL_FAILED } from "./spawn.js";
|
|
11
19
|
export { orStdin, STDIN_IDLE_MS, STDIN_STALLED } from "./stdin.js";
|
|
20
|
+
export { TOOL_MISSING } from "./tools.js";
|
|
21
|
+
export { INVALID_INPUT, UNKNOWN_COMMAND, UNKNOWN_OPTION } from "./usage.js";
|
|
12
22
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EACL,cAAc,EACd,SAAS,EACT,UAAU,EACV,aAAa,EACb,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAU5E,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAmB1C,OAAO,EACL,cAAc,EACd,SAAS,EAET,UAAU,EACV,SAAS,EACT,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAOpB,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE5E,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEjE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export interface UpgradeNotes {
|
|
2
|
-
readonly version: string;
|
|
3
|
-
readonly notes: string;
|
|
4
|
-
}
|
|
5
|
-
/**
|
|
6
|
-
* What changed in each release after `from` up to `to`, oldest first, from the CHANGELOG.md in
|
|
7
|
-
* `packageDir`; none when the package ships no CHANGELOG.
|
|
8
|
-
*/
|
|
9
|
-
export declare function upgradeNotes(packageDir: string, from: string, to: string): Promise<UpgradeNotes[]>;
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { readFile } from "node:fs/promises";
|
|
2
|
-
import { join } from "node:path";
|
|
3
|
-
import { isMissingFile } from "../errors.js";
|
|
4
|
-
import { compareVersions, isVersion } from "./semver.js";
|
|
5
|
-
const RELEASE_HEADING = /^## v?(\S+)/;
|
|
6
|
-
function releasesIn(changelog) {
|
|
7
|
-
const releases = [];
|
|
8
|
-
let current;
|
|
9
|
-
for (const line of changelog.split(/\r?\n/)) {
|
|
10
|
-
const heading = RELEASE_HEADING.exec(line);
|
|
11
|
-
if (heading !== null) {
|
|
12
|
-
const version = heading[1] ?? "";
|
|
13
|
-
current = isVersion(version) ? { version, lines: [] } : undefined;
|
|
14
|
-
if (current !== undefined)
|
|
15
|
-
releases.push(current);
|
|
16
|
-
}
|
|
17
|
-
else {
|
|
18
|
-
current?.lines.push(line);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
return releases.map(({ version, lines }) => ({ version, notes: lines.join("\n").trim() }));
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* What changed in each release after `from` up to `to`, oldest first, from the CHANGELOG.md in
|
|
25
|
-
* `packageDir`; none when the package ships no CHANGELOG.
|
|
26
|
-
*/
|
|
27
|
-
export async function upgradeNotes(packageDir, from, to) {
|
|
28
|
-
let changelog;
|
|
29
|
-
try {
|
|
30
|
-
changelog = await readFile(join(packageDir, "CHANGELOG.md"), "utf8");
|
|
31
|
-
}
|
|
32
|
-
catch (error) {
|
|
33
|
-
if (isMissingFile(error))
|
|
34
|
-
return [];
|
|
35
|
-
throw error;
|
|
36
|
-
}
|
|
37
|
-
return releasesIn(changelog)
|
|
38
|
-
.filter(({ version }) => compareVersions(version, from) > 0 && compareVersions(version, to) <= 0)
|
|
39
|
-
.sort((a, b) => compareVersions(a.version, b.version));
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=upgrade-notes.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade-notes.js","sourceRoot":"","sources":["../../src/built-ins/upgrade-notes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAOzD,MAAM,eAAe,GAAG,aAAa,CAAC;AAEtC,SAAS,UAAU,CAAC,SAAiB;IACnC,MAAM,QAAQ,GAA2C,EAAE,CAAC;IAC5D,IAAI,OAAyD,CAAC;IAC9D,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACjC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YAClE,IAAI,OAAO,KAAK,SAAS;gBAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;AAC7F,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,UAAkB,EAClB,IAAY,EACZ,EAAU;IAEV,IAAI,SAAiB,CAAC;IACtB,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;IACvE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,aAAa,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACpC,MAAM,KAAK,CAAC;IACd,CAAC;IACD,OAAO,UAAU,CAAC,SAAS,CAAC;SACzB,MAAM,CACL,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,CACzF;SACA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3D,CAAC"}
|