@kiwidata/grimoire 0.1.3 → 0.1.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/AGENTS.md +56 -4
- package/README.md +107 -59
- package/dist/cli/index.js +7 -7
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/check.js +1 -1
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/configure.d.ts +3 -0
- package/dist/commands/configure.d.ts.map +1 -0
- package/dist/commands/configure.js +19 -0
- package/dist/commands/configure.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +2 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/core/check.d.ts.map +1 -1
- package/dist/core/check.js +165 -111
- package/dist/core/check.js.map +1 -1
- package/dist/core/ci.d.ts.map +1 -1
- package/dist/core/ci.js +50 -69
- package/dist/core/ci.js.map +1 -1
- package/dist/core/configure.d.ts +14 -0
- package/dist/core/configure.d.ts.map +1 -0
- package/dist/core/configure.js +434 -0
- package/dist/core/configure.js.map +1 -0
- package/dist/core/detect.d.ts.map +1 -1
- package/dist/core/detect.js +153 -26
- package/dist/core/detect.js.map +1 -1
- package/dist/core/diff.d.ts.map +1 -1
- package/dist/core/diff.js +62 -93
- package/dist/core/diff.js.map +1 -1
- package/dist/core/doc-style.d.ts +0 -4
- package/dist/core/doc-style.d.ts.map +1 -1
- package/dist/core/doc-style.js +103 -22
- package/dist/core/doc-style.js.map +1 -1
- package/dist/core/docs.js +202 -170
- package/dist/core/docs.js.map +1 -1
- package/dist/core/health.d.ts +6 -0
- package/dist/core/health.d.ts.map +1 -1
- package/dist/core/health.js +133 -96
- package/dist/core/health.js.map +1 -1
- package/dist/core/hooks.d.ts +0 -3
- package/dist/core/hooks.d.ts.map +1 -1
- package/dist/core/hooks.js +11 -16
- package/dist/core/hooks.js.map +1 -1
- package/dist/core/init.d.ts +2 -0
- package/dist/core/init.d.ts.map +1 -1
- package/dist/core/init.js +230 -406
- package/dist/core/init.js.map +1 -1
- package/dist/core/list.d.ts.map +1 -1
- package/dist/core/list.js +55 -65
- package/dist/core/list.js.map +1 -1
- package/dist/core/risk-register.d.ts +17 -0
- package/dist/core/risk-register.d.ts.map +1 -0
- package/dist/core/risk-register.js +73 -0
- package/dist/core/risk-register.js.map +1 -0
- package/dist/core/shared-setup.d.ts +0 -40
- package/dist/core/shared-setup.d.ts.map +1 -1
- package/dist/core/shared-setup.js +92 -56
- package/dist/core/shared-setup.js.map +1 -1
- package/dist/core/status.d.ts.map +1 -1
- package/dist/core/status.js +42 -52
- package/dist/core/status.js.map +1 -1
- package/dist/core/test-quality.d.ts +0 -8
- package/dist/core/test-quality.d.ts.map +1 -1
- package/dist/core/test-quality.js +24 -30
- package/dist/core/test-quality.js.map +1 -1
- package/dist/core/trace.d.ts.map +1 -1
- package/dist/core/trace.js +67 -75
- package/dist/core/trace.js.map +1 -1
- package/dist/core/update.d.ts.map +1 -1
- package/dist/core/update.js +61 -11
- package/dist/core/update.js.map +1 -1
- package/dist/core/validate.d.ts +1 -4
- package/dist/core/validate.d.ts.map +1 -1
- package/dist/core/validate.js +126 -148
- package/dist/core/validate.js.map +1 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -3
- package/dist/index.js.map +1 -1
- package/dist/utils/config.d.ts +15 -5
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +63 -42
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/fs.d.ts +0 -12
- package/dist/utils/fs.d.ts.map +1 -1
- package/dist/utils/fs.js +0 -12
- package/dist/utils/fs.js.map +1 -1
- package/dist/utils/paths.d.ts +0 -6
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +0 -6
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/spawn.d.ts +0 -3
- package/dist/utils/spawn.d.ts.map +1 -1
- package/dist/utils/spawn.js +0 -3
- package/dist/utils/spawn.js.map +1 -1
- package/package.json +1 -1
- package/skills/grimoire-apply/SKILL.md +89 -25
- package/skills/grimoire-audit/SKILL.md +21 -1
- package/skills/grimoire-bug/SKILL.md +48 -9
- package/skills/grimoire-commit/SKILL.md +3 -2
- package/skills/grimoire-design/SKILL.md +259 -0
- package/skills/grimoire-design-consult/SKILL.md +200 -0
- package/skills/grimoire-discover/SKILL.md +139 -109
- package/skills/grimoire-draft/SKILL.md +131 -15
- package/skills/grimoire-plan/SKILL.md +119 -46
- package/skills/grimoire-pr/SKILL.md +7 -10
- package/skills/grimoire-pr-review/SKILL.md +46 -115
- package/skills/grimoire-precommit-review/SKILL.md +205 -0
- package/skills/grimoire-refactor/SKILL.md +6 -6
- package/skills/grimoire-review/SKILL.md +95 -156
- package/skills/grimoire-verify/SKILL.md +40 -7
- package/skills/grimoire-vuln-remediate/SKILL.md +107 -0
- package/skills/grimoire-vuln-triage/SKILL.md +109 -0
- package/skills/references/adversarial-personas.md +225 -0
- package/skills/references/brand-tokens-format.md +186 -0
- package/skills/references/code-quality.md +172 -0
- package/skills/references/container-scan-triage.md +102 -0
- package/skills/references/dependency-vuln-triage.md +236 -0
- package/skills/references/design-heuristics.md +138 -0
- package/skills/references/design-input-formats.md +190 -0
- package/skills/references/pattern-guard.md +180 -0
- package/skills/references/principles.md +82 -0
- package/skills/references/refactor-scan-categories.md +154 -2
- package/skills/references/review-personas.md +406 -0
- package/skills/references/security-compliance.md +22 -1
- package/skills/references/testing-contracts.md +1 -1
- package/skills/references/visual-fidelity.md +206 -0
- package/templates/accepted-risks.yml +47 -0
- package/templates/brand-tokens-example.json +13 -0
- package/templates/brand-voice-example.md +22 -0
- package/templates/constraints.md +25 -0
- package/templates/design-tool-setup-stub.md +59 -0
- package/dist/commands/archive.d.ts +0 -3
- package/dist/commands/archive.d.ts.map +0 -1
- package/dist/commands/archive.js +0 -22
- package/dist/commands/archive.js.map +0 -1
- package/dist/commands/log.d.ts +0 -3
- package/dist/commands/log.d.ts.map +0 -1
- package/dist/commands/log.js +0 -15
- package/dist/commands/log.js.map +0 -1
- package/dist/commands/map.d.ts +0 -3
- package/dist/commands/map.d.ts.map +0 -1
- package/dist/commands/map.js +0 -17
- package/dist/commands/map.js.map +0 -1
- package/dist/core/archive.d.ts +0 -9
- package/dist/core/archive.d.ts.map +0 -1
- package/dist/core/archive.js +0 -92
- package/dist/core/archive.js.map +0 -1
- package/dist/core/log.d.ts +0 -8
- package/dist/core/log.d.ts.map +0 -1
- package/dist/core/log.js +0 -150
- package/dist/core/log.js.map +0 -1
- package/dist/core/map.d.ts +0 -9
- package/dist/core/map.d.ts.map +0 -1
- package/dist/core/map.js +0 -302
- package/dist/core/map.js.map +0 -1
- package/templates/dupignore +0 -93
- package/templates/mapignore +0 -58
- package/templates/mapkeys +0 -65
package/dist/core/trace.js
CHANGED
|
@@ -1,69 +1,59 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
2
|
import { join, relative } from "node:path";
|
|
3
3
|
import chalk from "chalk";
|
|
4
4
|
import { simpleGit } from "simple-git";
|
|
5
5
|
import { findProjectRoot } from "../utils/paths.js";
|
|
6
|
+
function printChangeEntry(ch) {
|
|
7
|
+
const status = ch.status === "merged" ? chalk.green("merged") : chalk.yellow("active");
|
|
8
|
+
console.log(` ${chalk.cyan(ch.changeId)} ${chalk.dim(ch.date)} ${status}`);
|
|
9
|
+
console.log(` ${ch.summary}`);
|
|
10
|
+
if (ch.why)
|
|
11
|
+
console.log(` ${chalk.dim("Why:")} ${ch.why}`);
|
|
12
|
+
if (ch.features.length > 0)
|
|
13
|
+
console.log(` ${chalk.dim("Features:")} ${ch.features.join(", ")}`);
|
|
14
|
+
if (ch.decisions.length > 0)
|
|
15
|
+
console.log(` ${chalk.dim("Decisions:")} ${ch.decisions.join(", ")}`);
|
|
16
|
+
console.log();
|
|
17
|
+
}
|
|
18
|
+
function printTraceOutput(relFile, line, commits, changes, changeIds) {
|
|
19
|
+
console.log(chalk.bold(`\nTrace: ${relFile}${line ? `:${line}` : ""}\n`));
|
|
20
|
+
console.log(chalk.bold.underline("Commits\n"));
|
|
21
|
+
for (const c of commits.slice(0, 20)) {
|
|
22
|
+
const changeTag = c.changeId ? chalk.cyan(` [${c.changeId}]`) : "";
|
|
23
|
+
console.log(` ${chalk.dim(c.hash.slice(0, 8))} ${chalk.dim(c.date)} ${c.subject}${changeTag}`);
|
|
24
|
+
}
|
|
25
|
+
if (commits.length > 20)
|
|
26
|
+
console.log(chalk.dim(` ... and ${commits.length - 20} more`));
|
|
27
|
+
if (changes.length > 0) {
|
|
28
|
+
console.log(chalk.bold.underline("\nLinked Changes\n"));
|
|
29
|
+
for (const ch of changes)
|
|
30
|
+
printChangeEntry(ch);
|
|
31
|
+
}
|
|
32
|
+
else if (changeIds.size === 0) {
|
|
33
|
+
console.log(chalk.dim("\nNo grimoire change IDs found in commit trailers.\nCommits without a Change: trailer are not linked to grimoire changes.\n"));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
6
36
|
export async function traceFile(target, options) {
|
|
7
37
|
const root = await findProjectRoot();
|
|
8
|
-
// Parse target: could be "file.ts", "file.ts:42", or "file.ts:10-20"
|
|
9
38
|
const { file, line } = parseTarget(target);
|
|
10
39
|
const relFile = relative(root, join(process.cwd(), file));
|
|
11
|
-
// Step 1: Get commits that touched this file/line
|
|
12
40
|
const commits = await getCommits(root, relFile, line);
|
|
13
41
|
if (commits.length === 0) {
|
|
14
42
|
console.log(chalk.dim(`No git history found for ${relFile}`));
|
|
15
43
|
return;
|
|
16
44
|
}
|
|
17
|
-
// Step 2: Extract change IDs from commit trailers
|
|
18
45
|
const changeIds = new Set();
|
|
19
46
|
for (const c of commits) {
|
|
20
47
|
if (c.changeId)
|
|
21
48
|
changeIds.add(c.changeId);
|
|
22
49
|
}
|
|
23
|
-
// Step 3: Look up change details from archive and active changes
|
|
24
50
|
const changes = await lookupChanges(root, changeIds);
|
|
25
51
|
const result = { file: relFile, line, commits, changes };
|
|
26
52
|
if (options.json) {
|
|
27
53
|
console.log(JSON.stringify(result, null, 2));
|
|
28
54
|
return;
|
|
29
55
|
}
|
|
30
|
-
|
|
31
|
-
console.log(chalk.bold(`\nTrace: ${relFile}${line ? `:${line}` : ""}\n`));
|
|
32
|
-
// Show commits
|
|
33
|
-
console.log(chalk.bold.underline("Commits\n"));
|
|
34
|
-
for (const c of commits.slice(0, 20)) {
|
|
35
|
-
const changeTag = c.changeId
|
|
36
|
-
? chalk.cyan(` [${c.changeId}]`)
|
|
37
|
-
: "";
|
|
38
|
-
console.log(` ${chalk.dim(c.hash.slice(0, 8))} ${chalk.dim(c.date)} ${c.subject}${changeTag}`);
|
|
39
|
-
}
|
|
40
|
-
if (commits.length > 20) {
|
|
41
|
-
console.log(chalk.dim(` ... and ${commits.length - 20} more`));
|
|
42
|
-
}
|
|
43
|
-
// Show linked changes
|
|
44
|
-
if (changes.length > 0) {
|
|
45
|
-
console.log(chalk.bold.underline("\nLinked Changes\n"));
|
|
46
|
-
for (const ch of changes) {
|
|
47
|
-
const status = ch.archived
|
|
48
|
-
? chalk.green("archived")
|
|
49
|
-
: chalk.yellow("active");
|
|
50
|
-
console.log(` ${chalk.cyan(ch.changeId)} ${chalk.dim(ch.date)} ${status}`);
|
|
51
|
-
console.log(` ${ch.summary}`);
|
|
52
|
-
if (ch.why) {
|
|
53
|
-
console.log(` ${chalk.dim("Why:")} ${ch.why}`);
|
|
54
|
-
}
|
|
55
|
-
if (ch.features.length > 0) {
|
|
56
|
-
console.log(` ${chalk.dim("Features:")} ${ch.features.join(", ")}`);
|
|
57
|
-
}
|
|
58
|
-
if (ch.decisions.length > 0) {
|
|
59
|
-
console.log(` ${chalk.dim("Decisions:")} ${ch.decisions.join(", ")}`);
|
|
60
|
-
}
|
|
61
|
-
console.log();
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
else if (changeIds.size === 0) {
|
|
65
|
-
console.log(chalk.dim("\nNo grimoire change IDs found in commit trailers.\nCommits without a Change: trailer are not linked to grimoire changes.\n"));
|
|
66
|
-
}
|
|
56
|
+
printTraceOutput(relFile, line, commits, changes, changeIds);
|
|
67
57
|
}
|
|
68
58
|
function parseTarget(target) {
|
|
69
59
|
// Match file.ts:42 or file.ts:10-20 (use start line)
|
|
@@ -128,62 +118,64 @@ async function getCommits(root, relFile, line) {
|
|
|
128
118
|
async function lookupChanges(root, changeIds) {
|
|
129
119
|
const changes = [];
|
|
130
120
|
for (const changeId of changeIds) {
|
|
131
|
-
//
|
|
132
|
-
const archiveEntry = await findInArchive(root, changeId);
|
|
133
|
-
if (archiveEntry) {
|
|
134
|
-
changes.push(archiveEntry);
|
|
135
|
-
continue;
|
|
136
|
-
}
|
|
137
|
-
// Check active changes
|
|
121
|
+
// An active change still has its manifest in .grimoire/changes/.
|
|
138
122
|
const activeEntry = await findInActive(root, changeId);
|
|
139
123
|
if (activeEntry) {
|
|
140
124
|
changes.push(activeEntry);
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
// Otherwise the change is finalized/merged — its record is git history,
|
|
128
|
+
// not an archive tree. Reconstruct from the Change: commit trailer.
|
|
129
|
+
const mergedEntry = await findInGit(root, changeId);
|
|
130
|
+
if (mergedEntry) {
|
|
131
|
+
changes.push(mergedEntry);
|
|
141
132
|
}
|
|
142
133
|
}
|
|
143
134
|
// Sort by date, newest first
|
|
144
135
|
changes.sort((a, b) => b.date.localeCompare(a.date));
|
|
145
136
|
return changes;
|
|
146
137
|
}
|
|
147
|
-
async function
|
|
148
|
-
const
|
|
149
|
-
let dirs;
|
|
150
|
-
try {
|
|
151
|
-
const entries = await readdir(archiveDir);
|
|
152
|
-
dirs = entries.filter((d) => d.endsWith(`-${changeId}`));
|
|
153
|
-
}
|
|
154
|
-
catch {
|
|
155
|
-
return null;
|
|
156
|
-
}
|
|
157
|
-
if (dirs.length === 0)
|
|
158
|
-
return null;
|
|
159
|
-
const dir = dirs[0];
|
|
160
|
-
const match = dir.match(/^(\d{4}-\d{2}-\d{2})-/);
|
|
161
|
-
const date = match ? match[1] : "";
|
|
162
|
-
const manifestPath = join(archiveDir, dir, "manifest.md");
|
|
138
|
+
async function findInActive(root, changeId) {
|
|
139
|
+
const manifestPath = join(root, ".grimoire", "changes", changeId, "manifest.md");
|
|
163
140
|
try {
|
|
164
141
|
const manifest = await readFile(manifestPath, "utf-8");
|
|
165
142
|
const parsed = parseManifest(manifest);
|
|
166
143
|
return {
|
|
167
144
|
changeId,
|
|
168
|
-
date,
|
|
169
|
-
|
|
145
|
+
date: "(active)",
|
|
146
|
+
status: "active",
|
|
170
147
|
...parsed,
|
|
171
148
|
};
|
|
172
149
|
}
|
|
173
150
|
catch {
|
|
174
|
-
return
|
|
151
|
+
return null;
|
|
175
152
|
}
|
|
176
153
|
}
|
|
177
|
-
async function
|
|
178
|
-
const
|
|
154
|
+
async function findInGit(root, changeId) {
|
|
155
|
+
const git = simpleGit(root);
|
|
179
156
|
try {
|
|
180
|
-
const
|
|
181
|
-
|
|
157
|
+
const stdout = await git.raw([
|
|
158
|
+
"log",
|
|
159
|
+
"--format=%as%x1f%s",
|
|
160
|
+
`--grep=Change: ${changeId}`,
|
|
161
|
+
"--fixed-strings",
|
|
162
|
+
]);
|
|
163
|
+
const rows = stdout
|
|
164
|
+
.trim()
|
|
165
|
+
.split("\n")
|
|
166
|
+
.filter(Boolean)
|
|
167
|
+
.map((l) => l.split("\x1f"));
|
|
168
|
+
if (rows.length === 0)
|
|
169
|
+
return null;
|
|
170
|
+
const [date, subject] = rows[0];
|
|
182
171
|
return {
|
|
183
172
|
changeId,
|
|
184
|
-
date: "
|
|
185
|
-
|
|
186
|
-
|
|
173
|
+
date: date ?? "",
|
|
174
|
+
status: "merged",
|
|
175
|
+
summary: subject ?? `(merged change ${changeId})`,
|
|
176
|
+
why: "",
|
|
177
|
+
features: [],
|
|
178
|
+
decisions: [],
|
|
187
179
|
};
|
|
188
180
|
}
|
|
189
181
|
catch {
|
package/dist/core/trace.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace.js","sourceRoot":"","sources":["../../src/core/trace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"trace.js","sourceRoot":"","sources":["../../src/core/trace.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/core/update.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/core/update.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CAsDf"}
|
package/dist/core/update.js
CHANGED
|
@@ -16,6 +16,7 @@ export async function updateProject(projectPath, options) {
|
|
|
16
16
|
throw new Error("No .grimoire/ directory found. Run grimoire init first.");
|
|
17
17
|
}
|
|
18
18
|
console.log(chalk.bold("Updating grimoire...\n"));
|
|
19
|
+
await printUpgradeBanner();
|
|
19
20
|
// 1. Migrate config if needed
|
|
20
21
|
if (!options.skipConfig) {
|
|
21
22
|
await migrateConfig(root);
|
|
@@ -32,10 +33,7 @@ export async function updateProject(projectPath, options) {
|
|
|
32
33
|
}
|
|
33
34
|
// 5. Determine agents from config (fallback to auto-detect for legacy projects)
|
|
34
35
|
const config = await loadConfig(root);
|
|
35
|
-
const
|
|
36
|
-
const agents = configAgents.length > 0 ? configAgents : await detectAgentFiles(root);
|
|
37
|
-
const instructionAgents = agents.filter((a) => ["cursor", "copilot"].includes(a));
|
|
38
|
-
const skillAgents = agents.filter((a) => ["claude", "opencode", "codex"].includes(a));
|
|
36
|
+
const { instructionAgents, skillAgents } = await resolveTargetAgents(config, root);
|
|
39
37
|
// 6. Update agent-specific instruction files (cursor, copilot)
|
|
40
38
|
if (!options.skipAgents && instructionAgents.length > 0) {
|
|
41
39
|
await generateAgentFiles(root, PACKAGE_ROOT, instructionAgents, "updated");
|
|
@@ -53,6 +51,14 @@ export async function updateProject(projectPath, options) {
|
|
|
53
51
|
await writeVersionStamp(root);
|
|
54
52
|
console.log(`\n${chalk.bold.green("Done!")} Grimoire updated.`);
|
|
55
53
|
}
|
|
54
|
+
async function resolveTargetAgents(config, root) {
|
|
55
|
+
const configAgents = config.project.agents ?? [];
|
|
56
|
+
const agents = configAgents.length > 0 ? configAgents : await detectAgentFiles(root);
|
|
57
|
+
return {
|
|
58
|
+
instructionAgents: agents.filter((a) => ["cursor", "copilot"].includes(a)),
|
|
59
|
+
skillAgents: agents.filter((a) => ["claude", "opencode", "codex"].includes(a)),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
56
62
|
async function updateAgentsFile(root) {
|
|
57
63
|
const config = await loadConfig(root);
|
|
58
64
|
const caveman = config.project.caveman ?? "none";
|
|
@@ -61,10 +67,6 @@ async function updateAgentsFile(root) {
|
|
|
61
67
|
async function updateSkills(root, agents) {
|
|
62
68
|
await installSkillFiles(root, PACKAGE_ROOT, SKILL_NAMES, "updated", agents);
|
|
63
69
|
}
|
|
64
|
-
/**
|
|
65
|
-
* Migrate config.yaml to the current schema version.
|
|
66
|
-
* Additive only — never removes user keys.
|
|
67
|
-
*/
|
|
68
70
|
async function migrateConfig(root) {
|
|
69
71
|
const configPath = join(root, ".grimoire", "config.yaml");
|
|
70
72
|
if (!(await fileExists(configPath))) {
|
|
@@ -132,9 +134,6 @@ const MIGRATIONS = [
|
|
|
132
134
|
},
|
|
133
135
|
},
|
|
134
136
|
];
|
|
135
|
-
/**
|
|
136
|
-
* Write a version stamp so future updates know what version was last installed.
|
|
137
|
-
*/
|
|
138
137
|
async function writeVersionStamp(root) {
|
|
139
138
|
try {
|
|
140
139
|
const pkgJson = await readFile(join(PACKAGE_ROOT, "package.json"), "utf-8");
|
|
@@ -146,4 +145,55 @@ async function writeVersionStamp(root) {
|
|
|
146
145
|
// Non-critical — don't fail the update
|
|
147
146
|
}
|
|
148
147
|
}
|
|
148
|
+
async function readPackageJson() {
|
|
149
|
+
try {
|
|
150
|
+
const raw = await readFile(join(PACKAGE_ROOT, "package.json"), "utf-8");
|
|
151
|
+
return JSON.parse(raw);
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
function isNewer(a, b) {
|
|
158
|
+
const parse = (v) => v.replace(/[^\d.].*$/, "").split(".").map((n) => Number(n) || 0);
|
|
159
|
+
const [aMajor, aMinor, aPatch] = parse(a);
|
|
160
|
+
const [bMajor, bMinor, bPatch] = parse(b);
|
|
161
|
+
if (aMajor !== bMajor)
|
|
162
|
+
return aMajor > bMajor;
|
|
163
|
+
if (aMinor !== bMinor)
|
|
164
|
+
return aMinor > bMinor;
|
|
165
|
+
return aPatch > bPatch;
|
|
166
|
+
}
|
|
167
|
+
async function fetchLatestVersion(name) {
|
|
168
|
+
const url = `https://registry.npmjs.org/${name}/latest`;
|
|
169
|
+
const controller = new AbortController();
|
|
170
|
+
const timer = setTimeout(() => controller.abort(), 1500);
|
|
171
|
+
try {
|
|
172
|
+
const res = await fetch(url, {
|
|
173
|
+
signal: controller.signal,
|
|
174
|
+
headers: { accept: "application/json" },
|
|
175
|
+
});
|
|
176
|
+
if (!res.ok)
|
|
177
|
+
return null;
|
|
178
|
+
const body = (await res.json());
|
|
179
|
+
return body.version ?? null;
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
return null;
|
|
183
|
+
}
|
|
184
|
+
finally {
|
|
185
|
+
clearTimeout(timer);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
async function printUpgradeBanner() {
|
|
189
|
+
if (process.env.GRIMOIRE_NO_UPDATE_CHECK)
|
|
190
|
+
return;
|
|
191
|
+
const pkg = await readPackageJson();
|
|
192
|
+
if (!pkg?.name || !pkg.version)
|
|
193
|
+
return;
|
|
194
|
+
const latest = await fetchLatestVersion(pkg.name);
|
|
195
|
+
if (!latest || !isNewer(latest, pkg.version))
|
|
196
|
+
return;
|
|
197
|
+
console.log(chalk.yellow(` Update available: ${pkg.version} → ${latest}. Run: npm i -g ${pkg.name}@latest\n`));
|
|
198
|
+
}
|
|
149
199
|
//# sourceMappingURL=update.js.map
|
package/dist/core/update.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/core/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AACtE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAWjD,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,WAAmB,EACnB,OAAsB;IAEtB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;IAE9C,oCAAoC;IACpC,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAElD,8BAA8B;IAC9B,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACxB,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,kCAAkC;IAClC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAE9B,mEAAmE;IACnE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QAC3B,MAAM,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACrE,CAAC;IAED,sBAAsB;IACtB,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACxB,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,gFAAgF;IAChF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/core/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AACtE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAWjD,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,WAAmB,EACnB,OAAsB;IAEtB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;IAE9C,oCAAoC;IACpC,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAElD,MAAM,kBAAkB,EAAE,CAAC;IAE3B,8BAA8B;IAC9B,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACxB,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,kCAAkC;IAClC,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAE9B,mEAAmE;IACnE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QAC3B,MAAM,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACrE,CAAC;IAED,sBAAsB;IACtB,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACxB,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,gFAAgF;IAChF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAEnF,+DAA+D;IAC/D,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxD,MAAM,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE,iBAAiB,EAAE,SAAS,CAAC,CAAC;IAC7E,CAAC;IAED,iEAAiE;IACjE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAClE,MAAM,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,kBAAkB;IAClB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACvB,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,yBAAyB;IACzB,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAE9B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAClE,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,MAA8C,EAC9C,IAAY;IAEZ,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;IACjD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACrF,OAAO;QACL,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1E,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC/E,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,IAAY;IAC1C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC;IACjD,MAAM,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACjE,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,MAAgB;IACxD,MAAM,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAC9E,CAAC;AAGD,KAAK,UAAU,aAAa,CAAC,IAAY;IACvC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;IAE1D,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,oCAAoC,CAAC,CAAC;QAC9E,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACpD,IAAI,GAA4B,CAAC;IACjC,IAAI,CAAC;QACH,GAAG,GAAI,SAAS,CAAC,OAAO,CAA6B,IAAI,EAAE,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;QAC5E,OAAO;IACT,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAChD,IAAI,cAAc,IAAI,sBAAsB,EAAE,CAAC;QAC7C,OAAO,CAAC,qBAAqB;IAC/B,CAAC;IAED,4BAA4B;IAC5B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,cAAc,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;YACrC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,GAAG,CAAC,OAAO,GAAG,sBAAsB,CAAC;IACrC,MAAM,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,kBAAkB,cAAc,OAAO,sBAAsB,GAAG,CAC5F,CAAC;AACJ,CAAC;AAQD,SAAS,YAAY,CAAC,GAA4B,EAAE,QAAkB;IACpE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO;IACvC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAkB,CAAC;IACtC,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,GAA4B;IACnD,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ;QAAE,OAAO;IACpD,MAAM,GAAG,GAAG,GAAG,CAAC,GAA8B,CAAC;IAC/C,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChC,GAAG,CAAC,QAAQ,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;QAChC,GAAG,CAAC,MAAM,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;QAC9B,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,GAAgB;IAC9B;QACE,IAAI,EAAE,CAAC;QACP,EAAE,EAAE,CAAC;QACL,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;YACb,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACpD,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC;YACnB,CAAC;YACD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAkC,CAAC;YACvD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACrB,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;YAC3B,CAAC;YACD,YAAY,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC;YAC9D,eAAe,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;KACF;CACF,CAAC;AAGF,KAAK,UAAU,iBAAiB,CAAC,IAAY;IAC3C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC;QAC5E,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAwB,CAAC;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QACtD,MAAM,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,uCAAuC;IACzC,CAAC;AACH,CAAC;AAOD,KAAK,UAAU,eAAe;IAC5B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgB,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAGD,SAAS,OAAO,CAAC,CAAS,EAAE,CAAS;IACnC,MAAM,KAAK,GAAG,CAAC,CAAS,EAAY,EAAE,CACpC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACnE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1C,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1C,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,MAAM,GAAG,MAAM,CAAC;IAC9C,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,MAAM,GAAG,MAAM,CAAC;IAC9C,OAAO,MAAM,GAAG,MAAM,CAAC;AACzB,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,IAAY;IAC5C,MAAM,GAAG,GAAG,8BAA8B,IAAI,SAAS,CAAC;IACxD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;IACzD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC3B,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;SACxC,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QACzB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAyB,CAAC;QACxD,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAGD,KAAK,UAAU,kBAAkB;IAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB;QAAE,OAAO;IACjD,MAAM,GAAG,GAAG,MAAM,eAAe,EAAE,CAAC;IACpC,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO;QAAE,OAAO;IACvC,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC;QAAE,OAAO;IACrD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,uBAAuB,GAAG,CAAC,OAAO,MAAM,MAAM,mBAAmB,GAAG,CAAC,IAAI,WAAW,CACrF,CACF,CAAC;AACJ,CAAC"}
|
package/dist/core/validate.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ interface ValidateOptions {
|
|
|
2
2
|
strict: boolean;
|
|
3
3
|
json: boolean;
|
|
4
4
|
}
|
|
5
|
-
|
|
5
|
+
interface ValidationResult {
|
|
6
6
|
file: string;
|
|
7
7
|
errors: string[];
|
|
8
8
|
warnings: string[];
|
|
@@ -13,8 +13,5 @@ export interface ValidateResult {
|
|
|
13
13
|
warnCount: number;
|
|
14
14
|
}
|
|
15
15
|
export declare function validateChange(changeId: string | undefined, options: ValidateOptions): Promise<ValidateResult>;
|
|
16
|
-
export declare function validateFeatureFile(filePath: string, content: string, strict: boolean): ValidationResult;
|
|
17
|
-
export declare function validateDecisionFile(filePath: string, content: string, strict: boolean): ValidationResult;
|
|
18
|
-
export declare function validateManifest(filePath: string, content: string, strict: boolean): ValidationResult;
|
|
19
16
|
export {};
|
|
20
17
|
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/core/validate.ts"],"names":[],"mappings":"AAcA,UAAU,eAAe;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/core/validate.ts"],"names":[],"mappings":"AAcA,UAAU,eAAe;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAqBD,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC,CAmCzB"}
|