@design-intelligence/ghost 0.20.0 → 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -33
- package/dist/commands/checks-command.d.ts.map +1 -1
- package/dist/commands/checks-command.js +8 -1
- package/dist/commands/checks-command.js.map +1 -1
- package/dist/commands/fingerprint-commands.d.ts.map +1 -1
- package/dist/commands/fingerprint-commands.js +1 -6
- package/dist/commands/fingerprint-commands.js.map +1 -1
- package/dist/commands/gather-command.d.ts.map +1 -1
- package/dist/commands/gather-command.js +26 -30
- package/dist/commands/gather-command.js.map +1 -1
- package/dist/commands/init-command.d.ts.map +1 -1
- package/dist/commands/init-command.js +23 -13
- package/dist/commands/init-command.js.map +1 -1
- package/dist/commands/pull-command.d.ts.map +1 -1
- package/dist/commands/pull-command.js +12 -19
- package/dist/commands/pull-command.js.map +1 -1
- package/dist/commands/pulse-command.js +1 -10
- package/dist/commands/pulse-command.js.map +1 -1
- package/dist/commands/review-command.d.ts.map +1 -1
- package/dist/commands/review-command.js +1 -0
- package/dist/commands/review-command.js.map +1 -1
- package/dist/ghost-core/catalog/assemble.d.ts +0 -4
- package/dist/ghost-core/catalog/assemble.d.ts.map +1 -1
- package/dist/ghost-core/catalog/assemble.js +0 -10
- package/dist/ghost-core/catalog/assemble.js.map +1 -1
- package/dist/ghost-core/catalog/index.d.ts +1 -1
- package/dist/ghost-core/catalog/index.d.ts.map +1 -1
- package/dist/ghost-core/catalog/index.js +1 -1
- package/dist/ghost-core/catalog/index.js.map +1 -1
- package/dist/ghost-core/catalog/menu.d.ts +1 -11
- package/dist/ghost-core/catalog/menu.d.ts.map +1 -1
- package/dist/ghost-core/catalog/menu.js +1 -6
- package/dist/ghost-core/catalog/menu.js.map +1 -1
- package/dist/ghost-core/catalog/types.d.ts +0 -6
- package/dist/ghost-core/catalog/types.d.ts.map +1 -1
- package/dist/ghost-core/glossary.d.ts +0 -13
- package/dist/ghost-core/glossary.d.ts.map +1 -1
- package/dist/ghost-core/glossary.js +0 -7
- package/dist/ghost-core/glossary.js.map +1 -1
- package/dist/ghost-core/index.d.ts +2 -2
- package/dist/ghost-core/index.d.ts.map +1 -1
- package/dist/ghost-core/index.js +1 -1
- package/dist/ghost-core/index.js.map +1 -1
- package/dist/ghost-core/package-manifest.d.ts +7 -0
- package/dist/ghost-core/package-manifest.d.ts.map +1 -1
- package/dist/ghost-core/package-manifest.js +10 -0
- package/dist/ghost-core/package-manifest.js.map +1 -1
- package/dist/init-payloads/median/cliche.median.md +86 -0
- package/dist/init-payloads/median/median-tells.md +117 -0
- package/dist/init-payloads/skeleton/brand.md +22 -0
- package/dist/init-payloads/skeleton/context.conversation.md +24 -0
- package/dist/init-payloads/skeleton/foundation.color.md +39 -0
- package/dist/init-payloads/skeleton/foundation.composition.md +30 -0
- package/dist/init-payloads/skeleton/foundation.controls.md +29 -0
- package/dist/init-payloads/skeleton/foundation.layout.md +45 -0
- package/dist/init-payloads/skeleton/foundation.motion.md +34 -0
- package/dist/init-payloads/skeleton/foundation.type.md +44 -0
- package/dist/init-payloads/skeleton/foundation.voice.md +29 -0
- package/dist/init-payloads/skeleton/glossary.md +39 -0
- package/dist/init-payloads/vessel-light/anti-goal.median.md +86 -0
- package/dist/init-payloads/vessel-light/anti-goal.tells.md +38 -0
- package/dist/init-payloads/vessel-light/checks/conversation-grammar.md +20 -0
- package/dist/init-payloads/vessel-light/checks/median-tells.md +103 -0
- package/dist/init-payloads/vessel-light/checks/motion-restraint.md +20 -0
- package/dist/init-payloads/vessel-light/checks/relationships.md +33 -0
- package/dist/init-payloads/vessel-light/checks/shape-matches-job.md +43 -0
- package/dist/init-payloads/vessel-light/checks/values.md +51 -0
- package/dist/init-payloads/vessel-light/glossary.md +44 -0
- package/dist/init-payloads/vessel-light/grammar.color-roles.md +30 -0
- package/dist/init-payloads/vessel-light/grammar.conversation.md +30 -0
- package/dist/init-payloads/vessel-light/grammar.deletion.md +35 -0
- package/dist/init-payloads/vessel-light/grammar.hierarchy.md +58 -0
- package/dist/init-payloads/vessel-light/grammar.job.md +54 -0
- package/dist/init-payloads/vessel-light/grammar.motion.md +27 -0
- package/dist/init-payloads/vessel-light/grammar.rhythm.md +27 -0
- package/dist/init-payloads/vessel-light/grammar.surfaces.md +35 -0
- package/dist/init-payloads/vessel-light/index.md +33 -0
- package/dist/init-payloads/vessel-light/manifest.yml +3 -0
- package/dist/init-payloads/vessel-light/materials/fonts/HKGrotesk-Black.woff2 +0 -0
- package/dist/init-payloads/vessel-light/materials/fonts/HKGrotesk-Bold.woff2 +0 -0
- package/dist/init-payloads/vessel-light/materials/fonts/HKGrotesk-ExtraBold.woff2 +0 -0
- package/dist/init-payloads/vessel-light/materials/fonts/HKGrotesk-Light.woff2 +0 -0
- package/dist/init-payloads/vessel-light/materials/fonts/HKGrotesk-Medium.woff2 +0 -0
- package/dist/init-payloads/vessel-light/materials/fonts/HKGrotesk-Regular.woff2 +0 -0
- package/dist/init-payloads/vessel-light/materials/fonts/HKGrotesk-SemiBold.woff2 +0 -0
- package/dist/init-payloads/vessel-light/materials/primitives.css +351 -0
- package/dist/init-payloads/vessel-light/materials/ref/composition.conversation.html +63 -0
- package/dist/init-payloads/vessel-light/materials/ref/composition.editorial.html +74 -0
- package/dist/init-payloads/vessel-light/materials/ref/composition.form.html +89 -0
- package/dist/init-payloads/vessel-light/materials/ref/composition.overlay.html +66 -0
- package/dist/init-payloads/vessel-light/materials/ref/composition.table.html +104 -0
- package/dist/init-payloads/vessel-light/materials/ref/email.html +80 -0
- package/dist/init-payloads/vessel-light/materials/tokens.css +191 -0
- package/dist/init-payloads/vessel-light/register.data-density.md +39 -0
- package/dist/init-payloads/vessel-light/register.editorial.md +41 -0
- package/dist/init-payloads/vessel-light/register.email.md +43 -0
- package/dist/init-payloads/vessel-light/signature.palette.md +45 -0
- package/dist/init-payloads/vessel-light/signature.shape.md +27 -0
- package/dist/init-payloads/vessel-light/signature.temperature.md +44 -0
- package/dist/init-payloads/vessel-light/signature.type.md +37 -0
- package/dist/observability-events.d.ts +0 -3
- package/dist/observability-events.d.ts.map +1 -1
- package/dist/observability-events.js.map +1 -1
- package/dist/review/resolve.d.ts +3 -4
- package/dist/review/resolve.d.ts.map +1 -1
- package/dist/review/resolve.js +12 -9
- package/dist/review/resolve.js.map +1 -1
- package/dist/review/review-packet.d.ts +2 -1
- package/dist/review/review-packet.d.ts.map +1 -1
- package/dist/review/review-packet.js +9 -20
- package/dist/review/review-packet.js.map +1 -1
- package/dist/scan/check-files.d.ts.map +1 -1
- package/dist/scan/check-files.js +0 -15
- package/dist/scan/check-files.js.map +1 -1
- package/dist/scan/check-scaffold.d.ts +1 -0
- package/dist/scan/check-scaffold.d.ts.map +1 -1
- package/dist/scan/check-scaffold.js +17 -1
- package/dist/scan/check-scaffold.js.map +1 -1
- package/dist/scan/fingerprint-package-lint.d.ts +8 -0
- package/dist/scan/fingerprint-package-lint.d.ts.map +1 -0
- package/dist/scan/fingerprint-package-lint.js +284 -0
- package/dist/scan/fingerprint-package-lint.js.map +1 -0
- package/dist/scan/fingerprint-package-loader.d.ts.map +1 -1
- package/dist/scan/fingerprint-package-loader.js +2 -29
- package/dist/scan/fingerprint-package-loader.js.map +1 -1
- package/dist/scan/fingerprint-package.d.ts +16 -8
- package/dist/scan/fingerprint-package.d.ts.map +1 -1
- package/dist/scan/fingerprint-package.js +41 -241
- package/dist/scan/fingerprint-package.js.map +1 -1
- package/dist/scan/node-files.d.ts.map +1 -1
- package/dist/scan/node-files.js +1 -3
- package/dist/scan/node-files.js.map +1 -1
- package/dist/scan/packed-payloads.d.ts +4 -0
- package/dist/scan/packed-payloads.d.ts.map +1 -0
- package/dist/scan/packed-payloads.js +55 -0
- package/dist/scan/packed-payloads.js.map +1 -0
- package/dist/scan/templates.d.ts +20 -2
- package/dist/scan/templates.d.ts.map +1 -1
- package/dist/scan/templates.js +106 -26
- package/dist/scan/templates.js.map +1 -1
- package/dist/skill-bundle/SKILL.md +16 -13
- package/dist/skill-bundle/references/adapting-a-starter.md +104 -0
- package/dist/skill-bundle/references/authoring-scenarios.md +42 -5
- package/dist/skill-bundle/references/blocks.md +1 -1
- package/dist/skill-bundle/references/brief.md +5 -6
- package/dist/skill-bundle/references/capture.md +52 -41
- package/dist/skill-bundle/references/concrete-tiers.md +95 -0
- package/dist/skill-bundle/references/recall.md +6 -12
- package/dist/skill-bundle/references/schema.md +15 -24
- package/dist/skill-bundle/references/self-check.md +2 -2
- package/dist/skill-bundle/references/steering-audit.md +7 -10
- package/package.json +2 -2
- package/dist/scan/steering-template.d.ts +0 -8
- package/dist/scan/steering-template.d.ts.map +0 -1
- package/dist/scan/steering-template.js +0 -266
- package/dist/scan/steering-template.js.map +0 -1
- package/dist/skill-bundle/references/wild.md +0 -30
|
@@ -1,14 +1,25 @@
|
|
|
1
|
-
import { access, mkdir,
|
|
2
|
-
import { dirname, join,
|
|
3
|
-
import {
|
|
1
|
+
import { access, mkdir, writeFile } from "node:fs/promises";
|
|
2
|
+
import { dirname, join, resolve } from "node:path";
|
|
3
|
+
import { UsageError, } from "#ghost-core";
|
|
4
4
|
import { isExistingPathError, isMissingPathError } from "../internal/fs.js";
|
|
5
|
-
import { FINGERPRINT_COMPOSITION_FILENAME, FINGERPRINT_INTENT_FILENAME, FINGERPRINT_INVENTORY_FILENAME, FINGERPRINT_MANIFEST_FILENAME,
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { DEFAULT_TEMPLATE_NAME, getInitTemplate, listInitTemplates, } from "./templates.js";
|
|
5
|
+
import { FINGERPRINT_COMPOSITION_FILENAME, FINGERPRINT_INTENT_FILENAME, FINGERPRINT_INVENTORY_FILENAME, FINGERPRINT_MANIFEST_FILENAME, GHOST_GLOSSARY_FILENAME, } from "./constants.js";
|
|
6
|
+
import { loadFingerprintPackage } from "./fingerprint-package-loader.js";
|
|
7
|
+
import { resolveGhostDirDefault } from "./package-paths.js";
|
|
8
|
+
import { DEFAULT_TEMPLATE_NAME, getInitBody, getInitTemplate, listInitBodies, listInitTemplates, } from "./templates.js";
|
|
9
|
+
// The lint pass lives beside this module; re-export it so `validate` callers
|
|
10
|
+
// keep a single import site for package loading and linting.
|
|
11
|
+
export { lintFingerprintPackage } from "./fingerprint-package-lint.js";
|
|
9
12
|
export { loadFingerprintPackage };
|
|
13
|
+
/**
|
|
14
|
+
* Resolve the fingerprint package directory. `dirArg` (an explicit
|
|
15
|
+
* `--package <dir>`) always wins and is used exactly as given — it may be
|
|
16
|
+
* absolute or relative, unlike `GHOST_PACKAGE_DIR`. When `dirArg` is
|
|
17
|
+
* omitted, `GHOST_PACKAGE_DIR` is honored so every command — not just `init`
|
|
18
|
+
* and `validate` — respects a host-configured package location. Falls back
|
|
19
|
+
* to the default `.ghost` when neither is set.
|
|
20
|
+
*/
|
|
10
21
|
export function resolveFingerprintPackage(dirArg, cwd = process.cwd()) {
|
|
11
|
-
const dir = resolve(cwd, dirArg ??
|
|
22
|
+
const dir = resolve(cwd, dirArg ?? resolveGhostDirDefault());
|
|
12
23
|
const packageDir = dir;
|
|
13
24
|
return {
|
|
14
25
|
dir,
|
|
@@ -21,14 +32,28 @@ export function resolveFingerprintPackage(dirArg, cwd = process.cwd()) {
|
|
|
21
32
|
};
|
|
22
33
|
}
|
|
23
34
|
export async function initFingerprintPackage(dirArg, cwd = process.cwd(), options = {}) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
35
|
+
if (options.body !== undefined && options.template !== undefined) {
|
|
36
|
+
throw new UsageError("--body and --template are mutually exclusive. A template is a shape of emptiness; a body is a full inhabited package — pick one.");
|
|
37
|
+
}
|
|
38
|
+
let source;
|
|
39
|
+
if (options.body !== undefined) {
|
|
40
|
+
const body = getInitBody(options.body);
|
|
41
|
+
if (!body) {
|
|
42
|
+
throw new UsageError(`Unknown init body '${options.body}'. Available: ${listInitBodies().join(", ")}.`);
|
|
43
|
+
}
|
|
44
|
+
source = body;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
const templateName = options.template ?? DEFAULT_TEMPLATE_NAME;
|
|
48
|
+
const template = getInitTemplate(templateName);
|
|
49
|
+
if (!template) {
|
|
50
|
+
throw new UsageError(`Unknown init template '${templateName}'. Available: ${listInitTemplates().join(", ")}.`);
|
|
51
|
+
}
|
|
52
|
+
source = template;
|
|
28
53
|
}
|
|
29
54
|
const paths = resolveFingerprintPackage(dirArg, cwd);
|
|
30
55
|
await mkdir(paths.packageDir, { recursive: true });
|
|
31
|
-
const files =
|
|
56
|
+
const files = (await source.files()).map((file) => ({
|
|
32
57
|
relativePath: file.relativePath,
|
|
33
58
|
path: join(paths.packageDir, file.relativePath),
|
|
34
59
|
content: file.content,
|
|
@@ -44,10 +69,9 @@ export async function initFingerprintPackage(dirArg, cwd = process.cwd(), option
|
|
|
44
69
|
}
|
|
45
70
|
async function writeInitFile(path, content, force = false) {
|
|
46
71
|
try {
|
|
47
|
-
await writeFile(path, content,
|
|
48
|
-
encoding: "utf-8",
|
|
49
|
-
flag: force ? "w" : "wx"
|
|
50
|
-
});
|
|
72
|
+
await writeFile(path, content, typeof content === "string"
|
|
73
|
+
? { encoding: "utf-8", flag: force ? "w" : "wx" }
|
|
74
|
+
: { flag: force ? "w" : "wx" });
|
|
51
75
|
}
|
|
52
76
|
catch (err) {
|
|
53
77
|
if (!force && isExistingPathError(err)) {
|
|
@@ -74,228 +98,4 @@ async function assertInitDoesNotOverwrite(paths) {
|
|
|
74
98
|
throw new UsageError(`Refusing to overwrite existing Ghost fingerprint file(s):\n${formatted}\nPass --force to overwrite.`);
|
|
75
99
|
}
|
|
76
100
|
}
|
|
77
|
-
/**
|
|
78
|
-
* `validate` for a package: artifact shape, per-node validity, and the
|
|
79
|
-
* deterministic kind-prefix lint enabled by glossary.md. The catalog is flat;
|
|
80
|
-
* loading collects malformed nodes so they can be surfaced as structured issues.
|
|
81
|
-
*/
|
|
82
|
-
export async function lintFingerprintPackage(dirArg, cwd = process.cwd()) {
|
|
83
|
-
const paths = resolveFingerprintPackage(dirArg, cwd);
|
|
84
|
-
const issues = [];
|
|
85
|
-
const manifestRaw = await readRequired(paths.manifest, "manifest.yml", issues);
|
|
86
|
-
if (manifestRaw !== undefined) {
|
|
87
|
-
// shape pass: manifest well-formed.
|
|
88
|
-
const beforeManifestErrors = issues.filter((issue) => issue.severity === "error").length;
|
|
89
|
-
lintFingerprintPackageManifest(manifestRaw, issues);
|
|
90
|
-
const manifestHasErrors = issues.filter((issue) => issue.severity === "error").length >
|
|
91
|
-
beforeManifestErrors;
|
|
92
|
-
if (manifestHasErrors)
|
|
93
|
-
return finalize(issues);
|
|
94
|
-
// catalog pass: load + validate the node catalog.
|
|
95
|
-
try {
|
|
96
|
-
const { catalog, checks, invalid, invalidChecks } = await loadFingerprintPackage(paths);
|
|
97
|
-
// node pass: a node that failed its own schema was skipped while loading
|
|
98
|
-
// the catalog; surface it here so a malformed node is loud, not silent.
|
|
99
|
-
issues.push(...invalid.map((entry) => ({
|
|
100
|
-
severity: "error",
|
|
101
|
-
rule: "node-invalid",
|
|
102
|
-
message: entry.message,
|
|
103
|
-
path: entry.file,
|
|
104
|
-
})));
|
|
105
|
-
issues.push(...invalidChecks.map((entry) => ({
|
|
106
|
-
severity: "error",
|
|
107
|
-
rule: "check-invalid",
|
|
108
|
-
message: entry.message,
|
|
109
|
-
path: entry.file,
|
|
110
|
-
})));
|
|
111
|
-
await lintGlossary(paths.glossary, issues);
|
|
112
|
-
await lintKindPrefixes(paths, catalog, issues);
|
|
113
|
-
lintSkeletonSections(catalog, issues);
|
|
114
|
-
await lintMaterialLocators(paths, catalog, issues, cwd);
|
|
115
|
-
lintCheckReferences(catalog, checks, issues);
|
|
116
|
-
}
|
|
117
|
-
catch (err) {
|
|
118
|
-
issues.push({
|
|
119
|
-
severity: "error",
|
|
120
|
-
rule: "package-catalog-invalid",
|
|
121
|
-
message: err instanceof Error ? err.message : String(err),
|
|
122
|
-
path: ".ghost",
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
return finalize(issues);
|
|
127
|
-
}
|
|
128
|
-
async function lintGlossary(glossaryPath, issues) {
|
|
129
|
-
let raw;
|
|
130
|
-
try {
|
|
131
|
-
raw = await readFile(glossaryPath, "utf-8");
|
|
132
|
-
}
|
|
133
|
-
catch (err) {
|
|
134
|
-
if (isMissingPathError(err))
|
|
135
|
-
return;
|
|
136
|
-
throw err;
|
|
137
|
-
}
|
|
138
|
-
const result = parseGlossary(raw);
|
|
139
|
-
if (result.glossary !== null)
|
|
140
|
-
return;
|
|
141
|
-
issues.push(...result.errors.map((message) => ({
|
|
142
|
-
severity: "error",
|
|
143
|
-
rule: "glossary-invalid",
|
|
144
|
-
message,
|
|
145
|
-
path: GHOST_GLOSSARY_FILENAME,
|
|
146
|
-
})));
|
|
147
|
-
}
|
|
148
|
-
async function lintKindPrefixes(paths, catalog, issues) {
|
|
149
|
-
const declaredKinds = await readDeclaredGlossaryKinds(paths.glossary);
|
|
150
|
-
if (declaredKinds === undefined)
|
|
151
|
-
return;
|
|
152
|
-
const declared = new Set(declaredKinds);
|
|
153
|
-
for (const node of catalog.nodes.values()) {
|
|
154
|
-
if (node.kind === undefined || declared.has(node.kind))
|
|
155
|
-
continue;
|
|
156
|
-
const suggestions = closestIds(node.kind, declaredKinds, 1);
|
|
157
|
-
const suggestion = suggestions[0];
|
|
158
|
-
issues.push({
|
|
159
|
-
severity: "warning",
|
|
160
|
-
rule: "kind-undeclared",
|
|
161
|
-
message: `Kind prefix \`${node.kind}\` is not declared in ${GHOST_GLOSSARY_FILENAME}.` +
|
|
162
|
-
(suggestion === undefined
|
|
163
|
-
? " Drop the prefix if this node has no kind."
|
|
164
|
-
: ` Did you mean \`${suggestion}\`? Drop the prefix if this node has no kind.`),
|
|
165
|
-
path: `${node.id}.md`,
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
function lintSkeletonSections(catalog, issues) {
|
|
170
|
-
for (const node of catalog.nodes.values()) {
|
|
171
|
-
const sections = extractSkeletonSections(node.body);
|
|
172
|
-
for (const section of sections) {
|
|
173
|
-
if (section.fences.length === 1)
|
|
174
|
-
continue;
|
|
175
|
-
issues.push({
|
|
176
|
-
severity: "warning",
|
|
177
|
-
rule: "skeleton-fence-count",
|
|
178
|
-
message: "## Skeleton section should contain exactly one fenced block; pull will emit all found skeleton fences",
|
|
179
|
-
path: `${node.id}.md`,
|
|
180
|
-
});
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
async function lintMaterialLocators(paths, catalog, issues, cwd) {
|
|
185
|
-
const repoRoot = await resolveGitRoot(cwd);
|
|
186
|
-
const options = {
|
|
187
|
-
repoRoot,
|
|
188
|
-
packageDir: paths.packageDir,
|
|
189
|
-
materialsDir: GHOST_MATERIALS_DIR,
|
|
190
|
-
};
|
|
191
|
-
const claimedLocators = [];
|
|
192
|
-
for (const node of catalog.nodes.values()) {
|
|
193
|
-
for (const locator of node.materials ?? []) {
|
|
194
|
-
if (classifyMaterialLocator(locator).kind === "url")
|
|
195
|
-
continue;
|
|
196
|
-
claimedLocators.push(locator);
|
|
197
|
-
const expanded = await expandLocalMaterialLocator(locator, options, {
|
|
198
|
-
cap: Number.POSITIVE_INFINITY,
|
|
199
|
-
});
|
|
200
|
-
if (expanded.matches.length > 0)
|
|
201
|
-
continue;
|
|
202
|
-
issues.push({
|
|
203
|
-
severity: "warning",
|
|
204
|
-
rule: "material-locator-dead",
|
|
205
|
-
message: `material locator '${locator}' matches no local files`,
|
|
206
|
-
path: `${node.id}.md.materials`,
|
|
207
|
-
});
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
const bundledFiles = await listBundledMaterialFiles(options);
|
|
211
|
-
for (const file of bundledFiles) {
|
|
212
|
-
const claimed = claimedLocators.some((locator) => materialLocatorClaimsPath(locator, file, options));
|
|
213
|
-
if (claimed)
|
|
214
|
-
continue;
|
|
215
|
-
issues.push({
|
|
216
|
-
severity: "warning",
|
|
217
|
-
rule: "material-orphaned",
|
|
218
|
-
message: "bundled material is not claimed by any node `materials` locator",
|
|
219
|
-
path: toPackageRelative(file, repoRoot, paths.packageDir),
|
|
220
|
-
});
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
function toPackageRelative(repoRelativePath, repoRoot, packageDir) {
|
|
224
|
-
const packageRelative = relative(packageDir, resolve(repoRoot, repoRelativePath))
|
|
225
|
-
.replace(/\\/g, "/")
|
|
226
|
-
.replace(/^\.\//, "");
|
|
227
|
-
return packageRelative.startsWith("../") ? repoRelativePath : packageRelative;
|
|
228
|
-
}
|
|
229
|
-
function lintCheckReferences(catalog, checks, issues) {
|
|
230
|
-
for (const check of checks.values()) {
|
|
231
|
-
for (const raw of check.references) {
|
|
232
|
-
const parsed = parseSourceRef(raw);
|
|
233
|
-
if (parsed === null) {
|
|
234
|
-
issues.push({
|
|
235
|
-
severity: "error",
|
|
236
|
-
rule: "check-reference-malformed",
|
|
237
|
-
message: `check reference '${raw}' is not a node id with optional '> Heading' anchor`,
|
|
238
|
-
path: `checks/${check.id}.md.references`,
|
|
239
|
-
});
|
|
240
|
-
continue;
|
|
241
|
-
}
|
|
242
|
-
const node = catalog.nodes.get(parsed.nodeId);
|
|
243
|
-
if (node === undefined) {
|
|
244
|
-
issues.push({
|
|
245
|
-
severity: "warning",
|
|
246
|
-
rule: "check-reference-unresolved",
|
|
247
|
-
message: `check reference '${raw}' does not resolve to a fingerprint node`,
|
|
248
|
-
path: `checks/${check.id}.md.references`,
|
|
249
|
-
});
|
|
250
|
-
continue;
|
|
251
|
-
}
|
|
252
|
-
if (parsed.heading !== undefined &&
|
|
253
|
-
sliceNodeSection(node.body, parsed.heading) === null) {
|
|
254
|
-
issues.push({
|
|
255
|
-
severity: "warning",
|
|
256
|
-
rule: "check-reference-heading-missing",
|
|
257
|
-
message: `check reference '${raw}' names a heading that was not found`,
|
|
258
|
-
path: `checks/${check.id}.md.references`,
|
|
259
|
-
});
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
async function readDeclaredGlossaryKinds(glossaryPath) {
|
|
265
|
-
let raw;
|
|
266
|
-
try {
|
|
267
|
-
raw = await readFile(glossaryPath, "utf-8");
|
|
268
|
-
}
|
|
269
|
-
catch (err) {
|
|
270
|
-
if (isMissingPathError(err))
|
|
271
|
-
return undefined;
|
|
272
|
-
throw err;
|
|
273
|
-
}
|
|
274
|
-
const result = parseGlossary(raw);
|
|
275
|
-
if (result.glossary === null)
|
|
276
|
-
return [];
|
|
277
|
-
return result.glossary.frontmatter.kinds.map((kind) => kind.name);
|
|
278
|
-
}
|
|
279
|
-
async function readRequired(path, label, issues) {
|
|
280
|
-
try {
|
|
281
|
-
return await readFile(path, "utf-8");
|
|
282
|
-
}
|
|
283
|
-
catch {
|
|
284
|
-
issues.push({
|
|
285
|
-
severity: "error",
|
|
286
|
-
rule: "package-artifact-missing",
|
|
287
|
-
message: `Fingerprint package is missing ${label}.`,
|
|
288
|
-
path: label,
|
|
289
|
-
});
|
|
290
|
-
return undefined;
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
function finalize(issues) {
|
|
294
|
-
return {
|
|
295
|
-
issues,
|
|
296
|
-
errors: issues.filter((issue) => issue.severity === "error").length,
|
|
297
|
-
warnings: issues.filter((issue) => issue.severity === "warning").length,
|
|
298
|
-
info: issues.filter((issue) => issue.severity === "info").length,
|
|
299
|
-
};
|
|
300
|
-
}
|
|
301
101
|
//# sourceMappingURL=fingerprint-package.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fingerprint-package.js","sourceRoot":"","sources":["../../src/scan/fingerprint-package.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fingerprint-package.js","sourceRoot":"","sources":["../../src/scan/fingerprint-package.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-files.d.ts","sourceRoot":"","sources":["../../src/scan/node-files.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAa,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"node-files.d.ts","sourceRoot":"","sources":["../../src/scan/node-files.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAa,MAAM,aAAa,CAAC;AAqBzD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,iFAAiF;IACjF,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,eAAe,CAAC,CAU1B"}
|
package/dist/scan/node-files.js
CHANGED
|
@@ -6,8 +6,7 @@ import { FINGERPRINT_MANIFEST_FILENAME, GHOST_GLOSSARY_FILENAME, GHOST_MATERIALS
|
|
|
6
6
|
* Reserved package-root entries that are never nodes: the manifest (the
|
|
7
7
|
* package anchor), the glossary, `materials/` (bundled materials), and
|
|
8
8
|
* `checks/` (review checks — feed-back only, never generation context). The
|
|
9
|
-
* list is closed.
|
|
10
|
-
* reserved so stale packages do not misload its contents as nodes.
|
|
9
|
+
* list is closed.
|
|
11
10
|
*/
|
|
12
11
|
const RESERVED_ROOT_ENTRIES = new Set([
|
|
13
12
|
FINGERPRINT_MANIFEST_FILENAME,
|
|
@@ -15,7 +14,6 @@ const RESERVED_ROOT_ENTRIES = new Set([
|
|
|
15
14
|
GHOST_GLOSSARY_FILENAME,
|
|
16
15
|
GHOST_MATERIALS_DIR,
|
|
17
16
|
"checks",
|
|
18
|
-
"haunts",
|
|
19
17
|
]);
|
|
20
18
|
/**
|
|
21
19
|
* Load authored prose nodes from the package directory. The corpus is flat:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-files.js","sourceRoot":"","sources":["../../src/scan/node-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAmB,SAAS,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EACL,6BAA6B,EAC7B,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB
|
|
1
|
+
{"version":3,"file":"node-files.js","sourceRoot":"","sources":["../../src/scan/node-files.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { TemplateFile } from "./templates.js";
|
|
2
|
+
export declare function loadPackedPayload(name: string): Promise<TemplateFile[]>;
|
|
3
|
+
export declare function loadPayloadFile(payload: string, relativePath: string): Promise<string>;
|
|
4
|
+
//# sourceMappingURL=packed-payloads.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packed-payloads.d.ts","sourceRoot":"","sources":["../../src/scan/packed-payloads.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAgBnD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAU7E;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CAEjB"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { readdir, readFile } from "node:fs/promises";
|
|
3
|
+
import { join, relative } from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
/**
|
|
6
|
+
* Payload roots, first match wins. At runtime this module lives in
|
|
7
|
+
* `dist/scan/`, so `../init-payloads` is the packed payload dir. Under
|
|
8
|
+
* vitest it runs from `src/scan/`, where only committed payloads (skeleton)
|
|
9
|
+
* exist — synced payloads (vessel-light) resolve through the built
|
|
10
|
+
* `dist/init-payloads` sibling.
|
|
11
|
+
*/
|
|
12
|
+
const INIT_PAYLOAD_ROOTS = [
|
|
13
|
+
fileURLToPath(new URL("../init-payloads", import.meta.url)),
|
|
14
|
+
fileURLToPath(new URL("../../dist/init-payloads", import.meta.url)),
|
|
15
|
+
];
|
|
16
|
+
const BINARY_EXTENSIONS = new Set([".woff", ".woff2"]);
|
|
17
|
+
export async function loadPackedPayload(name) {
|
|
18
|
+
const payloadDir = resolvePayloadDir(name);
|
|
19
|
+
const files = await listPayloadFiles(payloadDir);
|
|
20
|
+
return Promise.all(files.map(async (path) => ({
|
|
21
|
+
relativePath: relative(payloadDir, path),
|
|
22
|
+
content: await readPayloadFile(path),
|
|
23
|
+
})));
|
|
24
|
+
}
|
|
25
|
+
export async function loadPayloadFile(payload, relativePath) {
|
|
26
|
+
return readFile(join(resolvePayloadDir(payload), relativePath), "utf-8");
|
|
27
|
+
}
|
|
28
|
+
function resolvePayloadDir(name) {
|
|
29
|
+
return (INIT_PAYLOAD_ROOTS.map((root) => join(root, name)).find((dir) => existsSync(dir)) ?? join(INIT_PAYLOAD_ROOTS[0], name));
|
|
30
|
+
}
|
|
31
|
+
async function listPayloadFiles(dir) {
|
|
32
|
+
const entries = await readdir(dir, { withFileTypes: true });
|
|
33
|
+
const files = await Promise.all(entries.map(async (entry) => {
|
|
34
|
+
const path = join(dir, entry.name);
|
|
35
|
+
if (entry.isDirectory())
|
|
36
|
+
return listPayloadFiles(path);
|
|
37
|
+
if (entry.isFile())
|
|
38
|
+
return [path];
|
|
39
|
+
return [];
|
|
40
|
+
}));
|
|
41
|
+
return files.flat().sort((a, b) => a.localeCompare(b));
|
|
42
|
+
}
|
|
43
|
+
async function readPayloadFile(path) {
|
|
44
|
+
const bytes = await readFile(path);
|
|
45
|
+
if (isBinaryPayloadPath(path))
|
|
46
|
+
return bytes;
|
|
47
|
+
return bytes.toString("utf-8");
|
|
48
|
+
}
|
|
49
|
+
function isBinaryPayloadPath(path) {
|
|
50
|
+
const dot = path.lastIndexOf(".");
|
|
51
|
+
if (dot === -1)
|
|
52
|
+
return false;
|
|
53
|
+
return BINARY_EXTENSIONS.has(path.slice(dot).toLowerCase());
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=packed-payloads.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packed-payloads.js","sourceRoot":"","sources":["../../src/scan/packed-payloads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC;;;;;;GAMG;AACH,MAAM,kBAAkB,GAAG;IACzB,aAAa,CAAC,IAAI,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3D,aAAa,CAAC,IAAI,GAAG,CAAC,0BAA0B,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CACpE,CAAC;AAEF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEvD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAY;IAClD,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAEjD,OAAO,OAAO,CAAC,GAAG,CAChB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACzB,YAAY,EAAE,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;QACxC,OAAO,EAAE,MAAM,eAAe,CAAC,IAAI,CAAC;KACrC,CAAC,CAAC,CACJ,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAe,EACf,YAAoB;IAEpB,OAAO,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,OAAO,CACL,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAC9D,UAAU,CAAC,GAAG,CAAC,CAChB,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CACvC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,GAAW;IACzC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,KAAK,CAAC,WAAW,EAAE;YAAE,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,KAAK,CAAC,MAAM,EAAE;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,IAAY;IACzC,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,mBAAmB,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY;IACvC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,GAAG,KAAK,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7B,OAAO,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC9D,CAAC"}
|
package/dist/scan/templates.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
export interface TemplateFile {
|
|
5
5
|
/** Path relative to the package directory (e.g. "principle.voice.md"). */
|
|
6
6
|
relativePath: string;
|
|
7
|
-
content: string;
|
|
7
|
+
content: string | Uint8Array;
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
10
|
* An `init` template: a pure description of the seed files a fresh node package
|
|
@@ -15,8 +15,26 @@ export interface TemplateFile {
|
|
|
15
15
|
export interface GhostInitTemplate {
|
|
16
16
|
name: string;
|
|
17
17
|
description: string;
|
|
18
|
-
files(): TemplateFile[]
|
|
18
|
+
files(): TemplateFile[] | Promise<TemplateFile[]>;
|
|
19
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* An init body: a full inhabited fingerprint package — answered signature
|
|
22
|
+
* dials, materials, refs, and its own checks. Templates are shapes of
|
|
23
|
+
* emptiness awaiting the owner's truths; a body is the same anatomy with a
|
|
24
|
+
* real brand's values plugged in. Bodies keep their own manifest id (e.g.
|
|
25
|
+
* `vessel-light`) so an unadapted install stays honestly labeled — changing
|
|
26
|
+
* the id is step one of adapting the starter, an explicit human act.
|
|
27
|
+
*/
|
|
28
|
+
export interface GhostInitBody {
|
|
29
|
+
name: string;
|
|
30
|
+
description: string;
|
|
31
|
+
/** Whether the body payload ships its own `checks/` directory. */
|
|
32
|
+
includesChecks: boolean;
|
|
33
|
+
files(): Promise<TemplateFile[]>;
|
|
34
|
+
}
|
|
35
|
+
/** Look up a registered init body by name. */
|
|
36
|
+
export declare function getInitBody(name: string): GhostInitBody | undefined;
|
|
37
|
+
export declare function listInitBodies(): string[];
|
|
20
38
|
export declare const DEFAULT_TEMPLATE_NAME: string;
|
|
21
39
|
/** Look up a registered init template by name. */
|
|
22
40
|
export declare function getInitTemplate(name: string): GhostInitTemplate | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/scan/templates.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,0EAA0E;IAC1E,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/scan/templates.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,0EAA0E;IAC1E,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC;CAC9B;AACD;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,IAAI,YAAY,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;CACnD;AA0VD;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,cAAc,EAAE,OAAO,CAAC;IACxB,KAAK,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;CAClC;AAgCD,8CAA8C;AAC9C,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAEnE;AAED,wBAAgB,cAAc,IAAI,MAAM,EAAE,CAEzC;AAED,eAAO,MAAM,qBAAqB,QAAyB,CAAC;AAE5D,kDAAkD;AAClD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAM3E;AAED,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAE5C"}
|