@design-intelligence/ghost 0.21.0 → 0.22.1
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/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 +1 -6
- 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/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/node/serialize.d.ts +2 -2
- package/dist/ghost-core/node/serialize.d.ts.map +1 -1
- package/dist/ghost-core/node/serialize.js +4 -2
- package/dist/ghost-core/node/serialize.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/median-tells.md +25 -25
- 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 +27 -32
- package/dist/init-payloads/vessel-light/anti-goal.tells.md +5 -4
- package/dist/init-payloads/vessel-light/checks/shape-matches-job.md +43 -0
- package/dist/init-payloads/vessel-light/glossary.md +0 -1
- package/dist/init-payloads/vessel-light/grammar.color-roles.md +2 -2
- package/dist/init-payloads/vessel-light/grammar.deletion.md +35 -0
- package/dist/init-payloads/vessel-light/grammar.hierarchy.md +13 -3
- package/dist/init-payloads/vessel-light/grammar.job.md +54 -0
- package/dist/init-payloads/vessel-light/index.md +20 -24
- package/dist/init-payloads/vessel-light/manifest.yml +1 -0
- package/dist/init-payloads/vessel-light/materials/primitives.css +15 -52
- package/dist/init-payloads/vessel-light/materials/ref/composition.editorial.html +12 -7
- package/dist/init-payloads/vessel-light/materials/ref/composition.overlay.html +8 -2
- package/dist/init-payloads/vessel-light/materials/ref/composition.table.html +3 -3
- package/dist/init-payloads/vessel-light/materials/tokens.css +27 -78
- package/dist/init-payloads/vessel-light/signature.temperature.md +7 -0
- package/dist/init-payloads/vessel-light/signature.type.md +6 -5
- 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 +1 -2
- package/dist/review/resolve.d.ts.map +1 -1
- package/dist/review/resolve.js +4 -5
- package/dist/review/resolve.js.map +1 -1
- package/dist/review/review-packet.d.ts +0 -1
- package/dist/review/review-packet.d.ts.map +1 -1
- package/dist/review/review-packet.js +0 -19
- 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.js +2 -2
- 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 +9 -7
- package/dist/scan/fingerprint-package.d.ts.map +1 -1
- package/dist/scan/fingerprint-package.js +18 -231
- 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/templates.d.ts.map +1 -1
- package/dist/scan/templates.js +43 -35
- package/dist/scan/templates.js.map +1 -1
- package/dist/skill-bundle/SKILL.md +15 -13
- package/dist/skill-bundle/references/adapting-a-starter.md +62 -60
- package/dist/skill-bundle/references/authoring-scenarios.md +6 -8
- package/dist/skill-bundle/references/brief.md +5 -6
- package/dist/skill-bundle/references/capture.md +47 -36
- 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 +1 -1
- package/dist/init-payloads/skeleton/grammar.color-roles.md +0 -26
- package/dist/init-payloads/skeleton/grammar.conversation.md +0 -23
- package/dist/init-payloads/skeleton/grammar.hierarchy.md +0 -39
- package/dist/init-payloads/skeleton/grammar.motion.md +0 -24
- package/dist/init-payloads/skeleton/grammar.rhythm.md +0 -23
- package/dist/init-payloads/skeleton/grammar.surfaces.md +0 -26
- package/dist/init-payloads/skeleton/index.md +0 -27
- package/dist/init-payloads/skeleton/signature.palette.md +0 -24
- package/dist/init-payloads/skeleton/signature.shape.md +0 -19
- package/dist/init-payloads/skeleton/signature.temperature.md +0 -20
- package/dist/init-payloads/skeleton/signature.type.md +0 -22
- package/dist/skill-bundle/references/wild.md +0 -30
- /package/dist/init-payloads/median/{anti-goal.median.md → cliche.median.md} +0 -0
|
@@ -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 {
|
|
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
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,
|
|
@@ -87,228 +98,4 @@ async function assertInitDoesNotOverwrite(paths) {
|
|
|
87
98
|
throw new UsageError(`Refusing to overwrite existing Ghost fingerprint file(s):\n${formatted}\nPass --force to overwrite.`);
|
|
88
99
|
}
|
|
89
100
|
}
|
|
90
|
-
/**
|
|
91
|
-
* `validate` for a package: artifact shape, per-node validity, and the
|
|
92
|
-
* deterministic kind-prefix lint enabled by glossary.md. The catalog is flat;
|
|
93
|
-
* loading collects malformed nodes so they can be surfaced as structured issues.
|
|
94
|
-
*/
|
|
95
|
-
export async function lintFingerprintPackage(dirArg, cwd = process.cwd()) {
|
|
96
|
-
const paths = resolveFingerprintPackage(dirArg, cwd);
|
|
97
|
-
const issues = [];
|
|
98
|
-
const manifestRaw = await readRequired(paths.manifest, "manifest.yml", issues);
|
|
99
|
-
if (manifestRaw !== undefined) {
|
|
100
|
-
// shape pass: manifest well-formed.
|
|
101
|
-
const beforeManifestErrors = issues.filter((issue) => issue.severity === "error").length;
|
|
102
|
-
lintFingerprintPackageManifest(manifestRaw, issues);
|
|
103
|
-
const manifestHasErrors = issues.filter((issue) => issue.severity === "error").length >
|
|
104
|
-
beforeManifestErrors;
|
|
105
|
-
if (manifestHasErrors)
|
|
106
|
-
return finalize(issues);
|
|
107
|
-
// catalog pass: load + validate the node catalog.
|
|
108
|
-
try {
|
|
109
|
-
const { catalog, checks, invalid, invalidChecks } = await loadFingerprintPackage(paths);
|
|
110
|
-
// node pass: a node that failed its own schema was skipped while loading
|
|
111
|
-
// the catalog; surface it here so a malformed node is loud, not silent.
|
|
112
|
-
issues.push(...invalid.map((entry) => ({
|
|
113
|
-
severity: "error",
|
|
114
|
-
rule: "node-invalid",
|
|
115
|
-
message: entry.message,
|
|
116
|
-
path: entry.file,
|
|
117
|
-
})));
|
|
118
|
-
issues.push(...invalidChecks.map((entry) => ({
|
|
119
|
-
severity: "error",
|
|
120
|
-
rule: "check-invalid",
|
|
121
|
-
message: entry.message,
|
|
122
|
-
path: entry.file,
|
|
123
|
-
})));
|
|
124
|
-
await lintGlossary(paths.glossary, issues);
|
|
125
|
-
await lintKindPrefixes(paths, catalog, issues);
|
|
126
|
-
lintSkeletonSections(catalog, issues);
|
|
127
|
-
await lintMaterialLocators(paths, catalog, issues, cwd);
|
|
128
|
-
lintCheckReferences(catalog, checks, issues);
|
|
129
|
-
}
|
|
130
|
-
catch (err) {
|
|
131
|
-
issues.push({
|
|
132
|
-
severity: "error",
|
|
133
|
-
rule: "package-catalog-invalid",
|
|
134
|
-
message: err instanceof Error ? err.message : String(err),
|
|
135
|
-
path: ".ghost",
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
return finalize(issues);
|
|
140
|
-
}
|
|
141
|
-
async function lintGlossary(glossaryPath, issues) {
|
|
142
|
-
let raw;
|
|
143
|
-
try {
|
|
144
|
-
raw = await readFile(glossaryPath, "utf-8");
|
|
145
|
-
}
|
|
146
|
-
catch (err) {
|
|
147
|
-
if (isMissingPathError(err))
|
|
148
|
-
return;
|
|
149
|
-
throw err;
|
|
150
|
-
}
|
|
151
|
-
const result = parseGlossary(raw);
|
|
152
|
-
if (result.glossary !== null)
|
|
153
|
-
return;
|
|
154
|
-
issues.push(...result.errors.map((message) => ({
|
|
155
|
-
severity: "error",
|
|
156
|
-
rule: "glossary-invalid",
|
|
157
|
-
message,
|
|
158
|
-
path: GHOST_GLOSSARY_FILENAME,
|
|
159
|
-
})));
|
|
160
|
-
}
|
|
161
|
-
async function lintKindPrefixes(paths, catalog, issues) {
|
|
162
|
-
const declaredKinds = await readDeclaredGlossaryKinds(paths.glossary);
|
|
163
|
-
if (declaredKinds === undefined)
|
|
164
|
-
return;
|
|
165
|
-
const declared = new Set(declaredKinds);
|
|
166
|
-
for (const node of catalog.nodes.values()) {
|
|
167
|
-
if (node.kind === undefined || declared.has(node.kind))
|
|
168
|
-
continue;
|
|
169
|
-
const suggestions = closestIds(node.kind, declaredKinds, 1);
|
|
170
|
-
const suggestion = suggestions[0];
|
|
171
|
-
issues.push({
|
|
172
|
-
severity: "warning",
|
|
173
|
-
rule: "kind-undeclared",
|
|
174
|
-
message: `Kind prefix \`${node.kind}\` is not declared in ${GHOST_GLOSSARY_FILENAME}.` +
|
|
175
|
-
(suggestion === undefined
|
|
176
|
-
? " Drop the prefix if this node has no kind."
|
|
177
|
-
: ` Did you mean \`${suggestion}\`? Drop the prefix if this node has no kind.`),
|
|
178
|
-
path: `${node.id}.md`,
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
function lintSkeletonSections(catalog, issues) {
|
|
183
|
-
for (const node of catalog.nodes.values()) {
|
|
184
|
-
const sections = extractSkeletonSections(node.body);
|
|
185
|
-
for (const section of sections) {
|
|
186
|
-
if (section.fences.length === 1)
|
|
187
|
-
continue;
|
|
188
|
-
issues.push({
|
|
189
|
-
severity: "warning",
|
|
190
|
-
rule: "skeleton-fence-count",
|
|
191
|
-
message: "## Skeleton section should contain exactly one fenced block; pull will emit all found skeleton fences",
|
|
192
|
-
path: `${node.id}.md`,
|
|
193
|
-
});
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
async function lintMaterialLocators(paths, catalog, issues, cwd) {
|
|
198
|
-
const repoRoot = await resolveGitRoot(cwd);
|
|
199
|
-
const options = {
|
|
200
|
-
repoRoot,
|
|
201
|
-
packageDir: paths.packageDir,
|
|
202
|
-
materialsDir: GHOST_MATERIALS_DIR,
|
|
203
|
-
};
|
|
204
|
-
const claimedLocators = [];
|
|
205
|
-
for (const node of catalog.nodes.values()) {
|
|
206
|
-
for (const locator of node.materials ?? []) {
|
|
207
|
-
if (classifyMaterialLocator(locator).kind === "url")
|
|
208
|
-
continue;
|
|
209
|
-
claimedLocators.push(locator);
|
|
210
|
-
const expanded = await expandLocalMaterialLocator(locator, options, {
|
|
211
|
-
cap: Number.POSITIVE_INFINITY,
|
|
212
|
-
});
|
|
213
|
-
if (expanded.matches.length > 0)
|
|
214
|
-
continue;
|
|
215
|
-
issues.push({
|
|
216
|
-
severity: "warning",
|
|
217
|
-
rule: "material-locator-dead",
|
|
218
|
-
message: `material locator '${locator}' matches no local files`,
|
|
219
|
-
path: `${node.id}.md.materials`,
|
|
220
|
-
});
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
const bundledFiles = await listBundledMaterialFiles(options);
|
|
224
|
-
for (const file of bundledFiles) {
|
|
225
|
-
const claimed = claimedLocators.some((locator) => materialLocatorClaimsPath(locator, file, options));
|
|
226
|
-
if (claimed)
|
|
227
|
-
continue;
|
|
228
|
-
issues.push({
|
|
229
|
-
severity: "warning",
|
|
230
|
-
rule: "material-orphaned",
|
|
231
|
-
message: "bundled material is not claimed by any node `materials` locator",
|
|
232
|
-
path: toPackageRelative(file, repoRoot, paths.packageDir),
|
|
233
|
-
});
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
function toPackageRelative(repoRelativePath, repoRoot, packageDir) {
|
|
237
|
-
const packageRelative = relative(packageDir, resolve(repoRoot, repoRelativePath))
|
|
238
|
-
.replace(/\\/g, "/")
|
|
239
|
-
.replace(/^\.\//, "");
|
|
240
|
-
return packageRelative.startsWith("../") ? repoRelativePath : packageRelative;
|
|
241
|
-
}
|
|
242
|
-
function lintCheckReferences(catalog, checks, issues) {
|
|
243
|
-
for (const check of checks.values()) {
|
|
244
|
-
for (const raw of check.references) {
|
|
245
|
-
const parsed = parseSourceRef(raw);
|
|
246
|
-
if (parsed === null) {
|
|
247
|
-
issues.push({
|
|
248
|
-
severity: "error",
|
|
249
|
-
rule: "check-reference-malformed",
|
|
250
|
-
message: `check reference '${raw}' is not a node id with optional '> Heading' anchor`,
|
|
251
|
-
path: `checks/${check.id}.md.references`,
|
|
252
|
-
});
|
|
253
|
-
continue;
|
|
254
|
-
}
|
|
255
|
-
const node = catalog.nodes.get(parsed.nodeId);
|
|
256
|
-
if (node === undefined) {
|
|
257
|
-
issues.push({
|
|
258
|
-
severity: "warning",
|
|
259
|
-
rule: "check-reference-unresolved",
|
|
260
|
-
message: `check reference '${raw}' does not resolve to a fingerprint node — if you pruned this rule from the node, delete its paired flag in the check too`,
|
|
261
|
-
path: `checks/${check.id}.md.references`,
|
|
262
|
-
});
|
|
263
|
-
continue;
|
|
264
|
-
}
|
|
265
|
-
if (parsed.heading !== undefined &&
|
|
266
|
-
sliceNodeSection(node.body, parsed.heading) === null) {
|
|
267
|
-
issues.push({
|
|
268
|
-
severity: "warning",
|
|
269
|
-
rule: "check-reference-heading-missing",
|
|
270
|
-
message: `check reference '${raw}' names a heading that was not found — if you pruned this rule from the node, delete its paired flag in the check too`,
|
|
271
|
-
path: `checks/${check.id}.md.references`,
|
|
272
|
-
});
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
async function readDeclaredGlossaryKinds(glossaryPath) {
|
|
278
|
-
let raw;
|
|
279
|
-
try {
|
|
280
|
-
raw = await readFile(glossaryPath, "utf-8");
|
|
281
|
-
}
|
|
282
|
-
catch (err) {
|
|
283
|
-
if (isMissingPathError(err))
|
|
284
|
-
return undefined;
|
|
285
|
-
throw err;
|
|
286
|
-
}
|
|
287
|
-
const result = parseGlossary(raw);
|
|
288
|
-
if (result.glossary === null)
|
|
289
|
-
return [];
|
|
290
|
-
return result.glossary.frontmatter.kinds.map((kind) => kind.name);
|
|
291
|
-
}
|
|
292
|
-
async function readRequired(path, label, issues) {
|
|
293
|
-
try {
|
|
294
|
-
return await readFile(path, "utf-8");
|
|
295
|
-
}
|
|
296
|
-
catch {
|
|
297
|
-
issues.push({
|
|
298
|
-
severity: "error",
|
|
299
|
-
rule: "package-artifact-missing",
|
|
300
|
-
message: `Fingerprint package is missing ${label}.`,
|
|
301
|
-
path: label,
|
|
302
|
-
});
|
|
303
|
-
return undefined;
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
function finalize(issues) {
|
|
307
|
-
return {
|
|
308
|
-
issues,
|
|
309
|
-
errors: issues.filter((issue) => issue.severity === "error").length,
|
|
310
|
-
warnings: issues.filter((issue) => issue.severity === "warning").length,
|
|
311
|
-
info: issues.filter((issue) => issue.severity === "info").length,
|
|
312
|
-
};
|
|
313
|
-
}
|
|
314
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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"}
|
|
@@ -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,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;
|
|
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"}
|
package/dist/scan/templates.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { GHOST_FINGERPRINT_PACKAGE_SCHEMA } from "#ghost-core";
|
|
2
2
|
import { GHOST_EVENTS_FILENAME, LEGACY_PULL_HISTORY_FILENAME, } from "./constants.js";
|
|
3
3
|
import { loadPackedPayload, loadPayloadFile } from "./packed-payloads.js";
|
|
4
|
-
function manifestFile() {
|
|
4
|
+
function manifestFile(cover) {
|
|
5
5
|
return {
|
|
6
6
|
relativePath: "manifest.yml",
|
|
7
|
-
content: `schema: ${GHOST_FINGERPRINT_PACKAGE_SCHEMA}\nid: local\n`,
|
|
7
|
+
content: `schema: ${GHOST_FINGERPRINT_PACKAGE_SCHEMA}\nid: local\n${cover ? `cover: ${cover}\n` : ""}`,
|
|
8
8
|
};
|
|
9
9
|
}
|
|
10
10
|
/**
|
|
@@ -20,17 +20,17 @@ function gitignoreFile() {
|
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
22
|
* The minimal starter: a manifest, a package-level glossary declaring the
|
|
23
|
-
* starter kind vocabulary, and a package-root `index.md`
|
|
23
|
+
* starter kind vocabulary, and a package-root `index.md` cover. Additional
|
|
24
24
|
* truths are plain markdown nodes; optional material locators live on the node
|
|
25
25
|
* that explains them. Checks are opt-in via `ghost checks init`.
|
|
26
26
|
*/
|
|
27
27
|
const MINIMAL_TEMPLATE = {
|
|
28
28
|
name: "minimal",
|
|
29
|
-
description: "Minimal node package: manifest + glossary + a starter
|
|
29
|
+
description: "Minimal node package: manifest + glossary + a starter cover node.",
|
|
30
30
|
async files() {
|
|
31
31
|
const medianFile = await medianTemplateFile();
|
|
32
32
|
return [
|
|
33
|
-
manifestFile(),
|
|
33
|
+
manifestFile("index"),
|
|
34
34
|
gitignoreFile(),
|
|
35
35
|
{
|
|
36
36
|
relativePath: "glossary.md",
|
|
@@ -40,9 +40,9 @@ kinds:
|
|
|
40
40
|
- name: condition
|
|
41
41
|
- name: exemplar
|
|
42
42
|
- name: anti-goal
|
|
43
|
+
- name: cliche
|
|
43
44
|
- name: asset
|
|
44
45
|
- name: pattern
|
|
45
|
-
# - { name: provocation, posture: wild, purpose: a deliberate provocation past the fingerprint — surfaced only on request }
|
|
46
46
|
---
|
|
47
47
|
|
|
48
48
|
# principle
|
|
@@ -63,8 +63,13 @@ evidence unless the node says the sample itself is normative.
|
|
|
63
63
|
What this brand must never look, sound, or feel like — named generic patterns
|
|
64
64
|
and rejected neighbors. Always-on, like a principle, but stated as the thing
|
|
65
65
|
to steer away from.
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
|
|
67
|
+
# cliche
|
|
68
|
+
|
|
69
|
+
The defaults a generative model falls back on when no brand is steering it.
|
|
70
|
+
These are nobody's brand. Each entry pairs the tired move with the honest
|
|
71
|
+
replacement. Gather before styling anything greenfield; enforced by paired
|
|
72
|
+
checks at review.
|
|
68
73
|
|
|
69
74
|
# asset
|
|
70
75
|
|
|
@@ -85,18 +90,18 @@ Replace this placeholder prose with two things:
|
|
|
85
90
|
|
|
86
91
|
**The non-negotiables.** The handful of truths that apply to every task, every
|
|
87
92
|
medium, no matter what else is gathered — hard invariants, the anti-goals, the
|
|
88
|
-
one-sentence stance.
|
|
89
|
-
|
|
90
|
-
the full node by id for depth).
|
|
93
|
+
one-sentence stance. Anything that must never be missed belongs here, stated
|
|
94
|
+
briefly; link out to the full node by id for depth.
|
|
91
95
|
|
|
92
96
|
**How to read the rest.** What this fingerprint covers, how its kinds organize
|
|
93
97
|
the corpus, and where the fingerprint deliberately stays silent — including, if
|
|
94
98
|
you want one, a stricter silence posture ("when this fingerprint is silent on X,
|
|
95
99
|
ask a human") that overrides the default proceed-provisionally behavior.
|
|
96
100
|
|
|
97
|
-
\`index\` is
|
|
98
|
-
|
|
99
|
-
|
|
101
|
+
\`index\` is this package's manifest-declared cover: \`ghost gather\` inlines its
|
|
102
|
+
body before the menu and excludes it from selection. Its privilege comes from
|
|
103
|
+
\`cover: index\` in \`manifest.yml\`, not from the filename. You may rename it;
|
|
104
|
+
update the manifest's \`cover\` id at the same time.
|
|
100
105
|
|
|
101
106
|
The glossary declares the kind vocabulary. A node's kind comes from its
|
|
102
107
|
filename prefix: \`principle.density.md\` has kind \`principle\` and slug
|
|
@@ -112,7 +117,7 @@ it applies — never a filing destination.
|
|
|
112
117
|
/**
|
|
113
118
|
* The composition starter: everything in `minimal`, plus a worked composition
|
|
114
119
|
* ladder — an invariants floor (`principle.composition`), one bound/open
|
|
115
|
-
* pattern, and
|
|
120
|
+
* pattern, and a cover that teaches the convention. For teams whose
|
|
116
121
|
* fingerprint must steer *what agents build*, not only what they say.
|
|
117
122
|
*
|
|
118
123
|
* The ladder is an authoring convention, not a schema: patterns state what is
|
|
@@ -126,7 +131,7 @@ const COMPOSITION_TEMPLATE = {
|
|
|
126
131
|
async files() {
|
|
127
132
|
const medianFile = await medianTemplateFile();
|
|
128
133
|
return [
|
|
129
|
-
manifestFile(),
|
|
134
|
+
manifestFile("index"),
|
|
130
135
|
gitignoreFile(),
|
|
131
136
|
{
|
|
132
137
|
relativePath: "glossary.md",
|
|
@@ -136,9 +141,9 @@ kinds:
|
|
|
136
141
|
- name: condition
|
|
137
142
|
- name: exemplar
|
|
138
143
|
- name: anti-goal
|
|
144
|
+
- name: cliche
|
|
139
145
|
- name: asset
|
|
140
146
|
- name: pattern
|
|
141
|
-
# - { name: provocation, posture: wild, purpose: a deliberate provocation past the fingerprint — surfaced only on request }
|
|
142
147
|
---
|
|
143
148
|
|
|
144
149
|
# principle
|
|
@@ -163,8 +168,13 @@ render travels with the prose.
|
|
|
163
168
|
What this brand must never look, sound, or feel like — named generic patterns
|
|
164
169
|
and rejected neighbors. Always-on, like a principle, but stated as the thing
|
|
165
170
|
to steer away from.
|
|
166
|
-
|
|
167
|
-
|
|
171
|
+
|
|
172
|
+
# cliche
|
|
173
|
+
|
|
174
|
+
The defaults a generative model falls back on when no brand is steering it.
|
|
175
|
+
These are nobody's brand. Each entry pairs the tired move with the honest
|
|
176
|
+
replacement. Gather before styling anything greenfield; enforced by paired
|
|
177
|
+
checks at review.
|
|
168
178
|
|
|
169
179
|
# asset
|
|
170
180
|
|
|
@@ -283,22 +293,20 @@ When a blessed render of this pattern exists, add an \`exemplar.*\` node with
|
|
|
283
293
|
};
|
|
284
294
|
const SKELETON_FILE_ORDER = new Map([
|
|
285
295
|
"glossary.md",
|
|
286
|
-
"
|
|
287
|
-
"
|
|
288
|
-
"
|
|
289
|
-
"
|
|
290
|
-
"
|
|
291
|
-
"
|
|
292
|
-
"
|
|
293
|
-
"
|
|
294
|
-
"
|
|
295
|
-
"
|
|
296
|
-
"signature.type.md",
|
|
297
|
-
"signature.temperature.md",
|
|
296
|
+
"brand.md",
|
|
297
|
+
"cliche.median.md",
|
|
298
|
+
"foundation.composition.md",
|
|
299
|
+
"foundation.color.md",
|
|
300
|
+
"foundation.type.md",
|
|
301
|
+
"foundation.controls.md",
|
|
302
|
+
"foundation.layout.md",
|
|
303
|
+
"foundation.motion.md",
|
|
304
|
+
"foundation.voice.md",
|
|
305
|
+
"context.conversation.md",
|
|
298
306
|
].map((path, index) => [path, index]));
|
|
299
307
|
const SKELETON_TEMPLATE = {
|
|
300
308
|
name: "skeleton",
|
|
301
|
-
description: "Naked skeleton:
|
|
309
|
+
description: "Naked skeleton: a brand cover, foundation chapters with open questions, and the cliche floor.",
|
|
302
310
|
async files() {
|
|
303
311
|
const skeletonFiles = [
|
|
304
312
|
...(await loadPackedPayload("skeleton")),
|
|
@@ -308,13 +316,13 @@ const SKELETON_TEMPLATE = {
|
|
|
308
316
|
(SKELETON_FILE_ORDER.get(b.relativePath) ??
|
|
309
317
|
Number.MAX_SAFE_INTEGER) ||
|
|
310
318
|
a.relativePath.localeCompare(b.relativePath));
|
|
311
|
-
return [manifestFile(), gitignoreFile(), ...skeletonFiles];
|
|
319
|
+
return [manifestFile("brand"), gitignoreFile(), ...skeletonFiles];
|
|
312
320
|
},
|
|
313
321
|
};
|
|
314
322
|
async function medianTemplateFile() {
|
|
315
323
|
return {
|
|
316
|
-
relativePath: "
|
|
317
|
-
content: await loadPayloadFile("median", "
|
|
324
|
+
relativePath: "cliche.median.md",
|
|
325
|
+
content: await loadPayloadFile("median", "cliche.median.md"),
|
|
318
326
|
};
|
|
319
327
|
}
|
|
320
328
|
const TEMPLATES = new Map([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/scan/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EACL,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAoB1E,SAAS,YAAY;
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/scan/templates.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,10 +34,12 @@ true, and an agent reads the relevant truths before building.
|
|
|
34
34
|
Guidance stays in prose.
|
|
35
35
|
- A node's **kind** comes from its filename prefix (`principle.density.md` →
|
|
36
36
|
kind `principle`). A bare name (`voice.md`) has no kind.
|
|
37
|
-
- The **glossary** declares the kind vocabulary
|
|
38
|
-
- The
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
- The **glossary** declares the kind vocabulary and what each kind means.
|
|
38
|
+
- The manifest's `cover` names the node `gather` inlines above the menu every
|
|
39
|
+
time. It carries essence, temperature, and brand-only refusals. Admission
|
|
40
|
+
test: a violation visible in one element belongs in that element's chapter;
|
|
41
|
+
visible in one view, in the composition chapter; visible only across the
|
|
42
|
+
whole body of work, on the cover.
|
|
41
43
|
- There is **no hierarchy, no inheritance, no edges**. Directories are for browsing
|
|
42
44
|
only; the model reads a flat menu.
|
|
43
45
|
- **Checks** are optional review assertions in a flat `.ghost/checks/*.md`
|
|
@@ -62,27 +64,27 @@ ghost pulse # summarize local gather/pull events while tuning
|
|
|
62
64
|
|
|
63
65
|
`gather` does no selection. It emits the menu and you read the ask against it,
|
|
64
66
|
then pull the truths you judge relevant. Its header includes a coverage line —
|
|
65
|
-
total nodes
|
|
66
|
-
|
|
67
|
+
total nodes and nodes carrying concrete material — so an all-prose
|
|
68
|
+
fingerprint is visible before generation.
|
|
67
69
|
|
|
68
70
|
Prefer `ghost pull` over reading files directly: it emits the same prose,
|
|
69
71
|
inlines small local materials by default, turns binary materials into
|
|
70
|
-
inspect-pointers, orders the packet for steering (
|
|
71
|
-
prose rules
|
|
72
|
+
inspect-pointers, orders the packet for steering (cover when selected, concrete nodes,
|
|
73
|
+
prose rules), extracts Skeletons dead last, and appends structured
|
|
72
74
|
events to `.ghost/.events` for local tuning.
|
|
73
75
|
|
|
74
76
|
`review` does no grading. It assembles an advisory packet: touched files,
|
|
75
|
-
matched material-backed nodes,
|
|
77
|
+
matched material-backed nodes, offered checks, probe
|
|
76
78
|
evidence, coverage gaps, and the diff. The host agent renders findings.
|
|
77
79
|
|
|
78
80
|
## CLI verbs
|
|
79
81
|
|
|
80
82
|
| Verb | Purpose |
|
|
81
83
|
|---|---|
|
|
82
|
-
| `ghost init` | Scaffold `.ghost/` with the
|
|
84
|
+
| `ghost init` | Scaffold `.ghost/` with the skeleton starter: manifest, glossary, a `brand.md` cover, foundation chapters, context nodes, and the cliche floor. `--template minimal` writes a smaller cover-led starter. `--with checks` also adds the checks directory. |
|
|
83
85
|
| `ghost checks init` | Scaffold `.ghost/checks/` with an example review assertion. |
|
|
84
86
|
| `ghost validate [file-or-dir]` | Validate manifest, nodes, material locators, check references, and glossary kind prefixes. |
|
|
85
|
-
| `ghost gather [ask…] [--
|
|
87
|
+
| `ghost gather [ask…] [--format json]` | Emit the node menu for selection plus coverage line; log exposed ids. |
|
|
86
88
|
| `ghost pull <id> [<id>…]` | Emit selected nodes' full bodies and materials in steering order; log selected/missed ids. |
|
|
87
89
|
| `ghost review [--diff <path|->] [--base <ref>] [--format json] [--no-probes]` | Emit an advisory review packet for a diff (requires `.ghost/checks/`). |
|
|
88
90
|
| `ghost export [--out <path>] [--no-checks] [--strict] [--format json]` | Package `.ghost/` as a portable brand artifact and report which material locators will not travel. |
|
|
@@ -109,11 +111,11 @@ against the unpacked package with `--package <dir>`.
|
|
|
109
111
|
|
|
110
112
|
- Author or update the fingerprint: follow [references/capture.md](references/capture.md).
|
|
111
113
|
- Author material-backed nodes: follow [references/blocks.md](references/blocks.md).
|
|
114
|
+
- Choose which concrete code tiers the package carries: follow [references/concrete-tiers.md](references/concrete-tiers.md).
|
|
112
115
|
- Choose the right human-agent authoring workflow: follow [references/authoring-scenarios.md](references/authoring-scenarios.md).
|
|
113
116
|
- Adapt a starter (a body or the skeleton) to your brand: follow [references/adapting-a-starter.md](references/adapting-a-starter.md).
|
|
114
117
|
- Gather applicable truths for a task: follow [references/recall.md](references/recall.md).
|
|
115
118
|
- Shape a pre-generation brief: follow [references/brief.md](references/brief.md).
|
|
116
|
-
- Explore deliberate provocations with wild nodes: follow [references/wild.md](references/wild.md).
|
|
117
119
|
- Probe readiness before generating: follow [references/self-check.md](references/self-check.md).
|
|
118
120
|
- Audit steering coverage: follow [references/steering-audit.md](references/steering-audit.md).
|
|
119
121
|
- Understand the package shape: see [references/schema.md](references/schema.md).
|
|
@@ -128,7 +130,7 @@ conventions, but durable brand truth should be curated by the human.
|
|
|
128
130
|
A silent fingerprint does not require stopping. Proceed from nearby product
|
|
129
131
|
surfaces, local conventions, and ordinary reasoning when safe, and label that
|
|
130
132
|
reasoning as provisional and non-Ghost-backed — unless the fingerprint itself
|
|
131
|
-
declares a stricter silence posture (check the
|
|
133
|
+
declares a stricter silence posture (check the cover), which overrides
|
|
132
134
|
this default. Ask a human before high-risk, irreversible, privacy, security,
|
|
133
135
|
legal, or brand-defining choices.
|
|
134
136
|
|