@design-intelligence/ghost 0.22.1 → 0.24.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 +35 -29
- package/dist/commands/checks-command.js +3 -3
- package/dist/commands/checks-command.js.map +1 -1
- package/dist/commands/command-discovery.d.ts.map +1 -1
- package/dist/commands/command-discovery.js +5 -5
- package/dist/commands/command-discovery.js.map +1 -1
- package/dist/commands/export-command.d.ts.map +1 -1
- package/dist/commands/export-command.js +10 -10
- package/dist/commands/export-command.js.map +1 -1
- package/dist/commands/fingerprint-commands.d.ts +2 -2
- package/dist/commands/fingerprint-commands.d.ts.map +1 -1
- package/dist/commands/fingerprint-commands.js +7 -7
- 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 +86 -20
- 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 +6 -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 +22 -9
- package/dist/commands/pull-command.js.map +1 -1
- package/dist/commands/pulse-command.js +6 -6
- package/dist/commands/pulse-command.js.map +1 -1
- package/dist/commands/review-command.js +7 -7
- package/dist/commands/review-command.js.map +1 -1
- package/dist/commands/skill-command.js +2 -2
- package/dist/fingerprint.d.ts +2 -1
- package/dist/fingerprint.d.ts.map +1 -1
- package/dist/fingerprint.js +1 -0
- package/dist/fingerprint.js.map +1 -1
- package/dist/ghost-core/catalog/assemble.d.ts.map +1 -1
- package/dist/ghost-core/catalog/assemble.js +2 -1
- package/dist/ghost-core/catalog/assemble.js.map +1 -1
- package/dist/ghost-core/catalog/menu.d.ts +6 -4
- package/dist/ghost-core/catalog/menu.d.ts.map +1 -1
- package/dist/ghost-core/catalog/menu.js +1 -0
- package/dist/ghost-core/catalog/menu.js.map +1 -1
- package/dist/ghost-core/catalog/types.d.ts +4 -2
- package/dist/ghost-core/catalog/types.d.ts.map +1 -1
- package/dist/ghost-core/check/index.d.ts +1 -1
- package/dist/ghost-core/check/index.js +1 -1
- package/dist/ghost-core/check/lint.d.ts +2 -2
- package/dist/ghost-core/check/lint.js +2 -2
- package/dist/ghost-core/check/load.d.ts +1 -1
- package/dist/ghost-core/check/load.js +3 -3
- package/dist/ghost-core/check/types.d.ts +3 -3
- package/dist/ghost-core/index.d.ts +9 -3
- package/dist/ghost-core/index.d.ts.map +1 -1
- package/dist/ghost-core/index.js +6 -2
- package/dist/ghost-core/index.js.map +1 -1
- package/dist/ghost-core/markdown.d.ts +1 -1
- package/dist/ghost-core/markdown.js +1 -1
- package/dist/ghost-core/node/index.d.ts +1 -1
- package/dist/ghost-core/node/index.d.ts.map +1 -1
- package/dist/ghost-core/node/index.js +1 -1
- package/dist/ghost-core/node/index.js.map +1 -1
- package/dist/ghost-core/node/schema.js +1 -1
- package/dist/ghost-core/node/serialize.d.ts +6 -5
- package/dist/ghost-core/node/serialize.d.ts.map +1 -1
- package/dist/ghost-core/node/serialize.js +25 -9
- package/dist/ghost-core/node/serialize.js.map +1 -1
- package/dist/ghost-core/node/steering.d.ts +1 -0
- package/dist/ghost-core/node/steering.d.ts.map +1 -1
- package/dist/ghost-core/node/steering.js +4 -1
- package/dist/ghost-core/node/steering.js.map +1 -1
- package/dist/ghost-core/node/types.d.ts +6 -5
- package/dist/ghost-core/node/types.d.ts.map +1 -1
- package/dist/ghost-core/package-manifest.d.ts +23 -13
- package/dist/ghost-core/package-manifest.d.ts.map +1 -1
- package/dist/ghost-core/package-manifest.js +20 -7
- package/dist/ghost-core/package-manifest.js.map +1 -1
- package/dist/ghost-core/skill-bundle-loader.d.ts +1 -1
- package/dist/ghost-core/skill-bundle-loader.js +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/init-payloads/median/cliche.median.md +6 -6
- package/dist/init-payloads/median/median-tells.md +1 -1
- package/dist/init-payloads/skeleton/brand.md +4 -3
- package/dist/init-payloads/skeleton/glossary.md +1 -1
- package/dist/init-payloads/vessel-light/anti-goal.median.md +6 -6
- package/dist/init-payloads/vessel-light/checks/motion-restraint.md +1 -1
- package/dist/init-payloads/vessel-light/manifest.yml +1 -1
- package/dist/init-payloads/vessel-light/materials/ref/composition.form.html +2 -2
- package/dist/init-payloads/vessel-light/materials/ref/composition.overlay.html +3 -3
- package/dist/observability-events.d.ts +10 -0
- package/dist/observability-events.d.ts.map +1 -1
- package/dist/observability-events.js +12 -0
- package/dist/observability-events.js.map +1 -1
- package/dist/package.d.ts +7 -0
- package/dist/package.d.ts.map +1 -0
- package/dist/package.js +4 -0
- package/dist/package.js.map +1 -0
- package/dist/review/resolve.js +1 -1
- package/dist/review/resolve.js.map +1 -1
- package/dist/review/review-packet.d.ts +5 -3
- package/dist/review/review-packet.d.ts.map +1 -1
- package/dist/review/review-packet.js +12 -11
- package/dist/review/review-packet.js.map +1 -1
- package/dist/scan/constants.d.ts +6 -2
- package/dist/scan/constants.d.ts.map +1 -1
- package/dist/scan/constants.js +8 -4
- package/dist/scan/constants.js.map +1 -1
- package/dist/scan/file-kind.d.ts +1 -1
- package/dist/scan/file-kind.d.ts.map +1 -1
- package/dist/scan/file-kind.js +11 -11
- package/dist/scan/file-kind.js.map +1 -1
- package/dist/scan/fingerprint-package-lint.d.ts +3 -1
- package/dist/scan/fingerprint-package-lint.d.ts.map +1 -1
- package/dist/scan/fingerprint-package-lint.js +14 -12
- package/dist/scan/fingerprint-package-lint.js.map +1 -1
- package/dist/scan/fingerprint-package-loader.d.ts +7 -3
- package/dist/scan/fingerprint-package-loader.d.ts.map +1 -1
- package/dist/scan/fingerprint-package-loader.js +10 -6
- package/dist/scan/fingerprint-package-loader.js.map +1 -1
- package/dist/scan/fingerprint-package.d.ts +30 -14
- package/dist/scan/fingerprint-package.d.ts.map +1 -1
- package/dist/scan/fingerprint-package.js +17 -9
- package/dist/scan/fingerprint-package.js.map +1 -1
- package/dist/scan/index.d.ts +3 -1
- package/dist/scan/index.d.ts.map +1 -1
- package/dist/scan/index.js +3 -1
- package/dist/scan/index.js.map +1 -1
- package/dist/scan/tarball.d.ts +2 -2
- package/dist/scan/tarball.js +3 -3
- package/dist/scan/tarball.js.map +1 -1
- package/dist/scan/templates.d.ts +1 -1
- package/dist/scan/templates.d.ts.map +1 -1
- package/dist/scan/templates.js +15 -11
- package/dist/scan/templates.js.map +1 -1
- package/dist/skill-bundle/SKILL.md +39 -31
- package/dist/skill-bundle/references/adapting-a-starter.md +11 -11
- package/dist/skill-bundle/references/authoring-scenarios.md +33 -30
- package/dist/skill-bundle/references/blocks.md +19 -20
- package/dist/skill-bundle/references/brief.md +13 -11
- package/dist/skill-bundle/references/capture.md +65 -37
- package/dist/skill-bundle/references/concrete-tiers.md +7 -7
- package/dist/skill-bundle/references/distill.md +204 -0
- package/dist/skill-bundle/references/making.md +113 -0
- package/dist/skill-bundle/references/recall.md +11 -7
- package/dist/skill-bundle/references/schema.md +16 -12
- package/dist/skill-bundle/references/self-check.md +12 -12
- package/dist/skill-bundle/references/steering-audit.md +19 -9
- package/package.json +7 -3
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { parseCheckMarkdown } from "./parse.js";
|
|
2
2
|
/**
|
|
3
|
-
* Parse a well-formed
|
|
3
|
+
* Parse a well-formed ghost check into a typed document. Assumes the input has
|
|
4
4
|
* already passed `lintGhostCheck` (throws on missing required frontmatter).
|
|
5
5
|
*/
|
|
6
6
|
export function loadGhostCheck(raw) {
|
|
7
7
|
const { frontmatter, body } = parseCheckMarkdown(raw);
|
|
8
8
|
if (frontmatter === null) {
|
|
9
|
-
throw new Error("
|
|
9
|
+
throw new Error("ghost check is missing a YAML frontmatter block.");
|
|
10
10
|
}
|
|
11
11
|
const name = frontmatter.name;
|
|
12
12
|
const description = frontmatter.description;
|
|
13
13
|
const severity = frontmatter.severity;
|
|
14
14
|
if (typeof name !== "string" || typeof description !== "string") {
|
|
15
|
-
throw new Error("
|
|
15
|
+
throw new Error("ghost check frontmatter is missing name or description.");
|
|
16
16
|
}
|
|
17
17
|
const tools = Array.isArray(frontmatter.tools)
|
|
18
18
|
? frontmatter.tools.filter((tool) => typeof tool === "string")
|
|
@@ -3,9 +3,9 @@ export declare const GHOST_CHECK_SCHEMA: "ghost.check/v1";
|
|
|
3
3
|
export declare const GHOST_CHECK_SEVERITIES: readonly ["high", "medium", "low"];
|
|
4
4
|
export type GhostCheckMarkdownSeverity = (typeof GHOST_CHECK_SEVERITIES)[number];
|
|
5
5
|
/**
|
|
6
|
-
* A
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* A ghost check: markdown + frontmatter, evaluated by an agent — never run by
|
|
7
|
+
* ghost. Shape-compatible with the established `.agents/checks` format, plus the
|
|
8
|
+
* ghost addition `source:` (the fingerprint prose the check enforces). Every
|
|
9
9
|
* check is offered to the reviewer; the agent judges relevance.
|
|
10
10
|
*/
|
|
11
11
|
export interface GhostCheckFrontmatter {
|
|
@@ -5,9 +5,15 @@ export { hasGlobMagic, matchesGlob, normalizeGlobPath } from "./glob.js";
|
|
|
5
5
|
export { type GhostGlossaryDocument, GhostGlossaryFrontmatterSchema, type GhostGlossaryKind, type GhostGlossaryParseResult, parseGlossary, } from "./glossary.js";
|
|
6
6
|
export { type ExpandedLocalMaterialLocator, expandLocalMaterialLocator, listBundledMaterialFiles, type MaterialTransportOptions, type MaterialTransportResult, materialLocatorClaimsPath, resolveLocalMaterialLocator, type TransportedMaterial, type TransportedMaterialTier, transportMaterials, } from "./material-transport.js";
|
|
7
7
|
export { type ClassifiedGhostMaterialLocator, classifyMaterialLocator, type GhostMaterialLocatorKind, validateMaterialLocator, } from "./materials.js";
|
|
8
|
-
export { carriesConcreteMaterial, extractSkeletonFences, extractSkeletonSections, type FencedBlock, GHOST_NODE_SCHEMA, type GhostNodeDocument, type GhostNodeFrontmatter, GhostNodeFrontmatterSchema, type GhostNodeLintIssue, type GhostNodeLintReport, type GhostNodeLintSeverity, lintGhostNode, NodeIdSchema, NodeRefSchema, type ParseNodeResult, parseNode, type SkeletonSection, serializeNode, stripSkeletonSections, } from "./node/index.js";
|
|
9
|
-
export type {
|
|
10
|
-
|
|
8
|
+
export { carriesConcreteMaterial, extractSkeletonFences, extractSkeletonSections, type FencedBlock, GHOST_NODE_SCHEMA, type GhostNodeDocument, type GhostNodeFrontmatter, GhostNodeFrontmatterSchema, type GhostNodeLintIssue, type GhostNodeLintReport, type GhostNodeLintSeverity, hasSubstantialFencedExample, lintGhostNode, NodeIdSchema, NodeRefSchema, type ParseNodeResult, parseNode, type SkeletonSection, serializeNode, stripSkeletonSections, } from "./node/index.js";
|
|
9
|
+
export type {
|
|
10
|
+
/** @deprecated Use `GhostPackageManifest`. */
|
|
11
|
+
GhostFingerprintPackageManifest, GhostPackageManifest, } from "./package-manifest.js";
|
|
12
|
+
export {
|
|
13
|
+
/** @deprecated Use `GHOST_PACKAGE_SCHEMA`. */
|
|
14
|
+
GHOST_FINGERPRINT_PACKAGE_SCHEMA, GHOST_PACKAGE_SCHEMA,
|
|
15
|
+
/** @deprecated Use `GhostPackageManifestSchema`. */
|
|
16
|
+
GhostFingerprintPackageManifestSchema, GhostPackageManifestSchema, } from "./package-manifest.js";
|
|
11
17
|
export type { SkillBundleFile } from "./skill-bundle-loader.js";
|
|
12
18
|
export { loadSkillBundle } from "./skill-bundle-loader.js";
|
|
13
19
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ghost-core/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,oBAAoB,EACzB,eAAe,EACf,gBAAgB,EAChB,KAAK,gBAAgB,EACrB,UAAU,EACV,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,UAAU,GAChB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,cAAc,EACd,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEzE,OAAO,EACL,KAAK,qBAAqB,EAC1B,8BAA8B,EAC9B,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,KAAK,4BAA4B,EACjC,0BAA0B,EAC1B,wBAAwB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,yBAAyB,EACzB,2BAA2B,EAC3B,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,KAAK,8BAA8B,EACnC,uBAAuB,EACvB,KAAK,wBAAwB,EAC7B,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,WAAW,EAChB,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,0BAA0B,EAC1B,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,aAAa,EACb,YAAY,EACZ,aAAa,EACb,KAAK,eAAe,EACpB,SAAS,EACT,KAAK,eAAe,EACpB,aAAa,EACb,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ghost-core/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,oBAAoB,EACzB,eAAe,EACf,gBAAgB,EAChB,KAAK,gBAAgB,EACrB,UAAU,EACV,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,UAAU,GAChB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,cAAc,EACd,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEzE,OAAO,EACL,KAAK,qBAAqB,EAC1B,8BAA8B,EAC9B,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,KAAK,4BAA4B,EACjC,0BAA0B,EAC1B,wBAAwB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,yBAAyB,EACzB,2BAA2B,EAC3B,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,KAAK,8BAA8B,EACnC,uBAAuB,EACvB,KAAK,wBAAwB,EAC7B,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,WAAW,EAChB,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,0BAA0B,EAC1B,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,2BAA2B,EAC3B,aAAa,EACb,YAAY,EACZ,aAAa,EACb,KAAK,eAAe,EACpB,SAAS,EACT,KAAK,eAAe,EACpB,aAAa,EACb,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,YAAY;AACV,8CAA8C;AAC9C,+BAA+B,EAC/B,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO;AACL,8CAA8C;AAC9C,gCAAgC,EAChC,oBAAoB;AACpB,oDAAoD;AACpD,qCAAqC,EACrC,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC"}
|
package/dist/ghost-core/index.js
CHANGED
|
@@ -13,7 +13,11 @@ export { expandLocalMaterialLocator, listBundledMaterialFiles, materialLocatorCl
|
|
|
13
13
|
// --- Materials (node locators) ---
|
|
14
14
|
export { classifyMaterialLocator, validateMaterialLocator, } from "./materials.js";
|
|
15
15
|
// --- Node (ghost.node/v1) — the markdown node artifact ---
|
|
16
|
-
export { carriesConcreteMaterial, extractSkeletonFences, extractSkeletonSections, GHOST_NODE_SCHEMA, GhostNodeFrontmatterSchema, lintGhostNode, NodeIdSchema, NodeRefSchema, parseNode, serializeNode, stripSkeletonSections, } from "./node/index.js";
|
|
17
|
-
export {
|
|
16
|
+
export { carriesConcreteMaterial, extractSkeletonFences, extractSkeletonSections, GHOST_NODE_SCHEMA, GhostNodeFrontmatterSchema, hasSubstantialFencedExample, lintGhostNode, NodeIdSchema, NodeRefSchema, parseNode, serializeNode, stripSkeletonSections, } from "./node/index.js";
|
|
17
|
+
export {
|
|
18
|
+
/** @deprecated Use `GHOST_PACKAGE_SCHEMA`. */
|
|
19
|
+
GHOST_FINGERPRINT_PACKAGE_SCHEMA, GHOST_PACKAGE_SCHEMA,
|
|
20
|
+
/** @deprecated Use `GhostPackageManifestSchema`. */
|
|
21
|
+
GhostFingerprintPackageManifestSchema, GhostPackageManifestSchema, } from "./package-manifest.js";
|
|
18
22
|
export { loadSkillBundle } from "./skill-bundle-loader.js";
|
|
19
23
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ghost-core/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAE/B,wDAAwD;AACxD,OAAO,EAEL,eAAe,EACf,gBAAgB,EAEhB,UAAU,GAIX,MAAM,oBAAoB,CAAC;AAC5B,oEAAoE;AACpE,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EAOtB,cAAc,EACd,cAAc,EAGd,kBAAkB,EAClB,cAAc,EACd,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,iCAAiC;AACjC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC/C,iDAAiD;AACjD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACzE,0DAA0D;AAC1D,OAAO,EAEL,8BAA8B,EAG9B,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAEL,0BAA0B,EAC1B,wBAAwB,EAGxB,yBAAyB,EACzB,2BAA2B,EAG3B,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,oCAAoC;AACpC,OAAO,EAEL,uBAAuB,EAEvB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AACxB,4DAA4D;AAC5D,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EAEvB,iBAAiB,EAGjB,0BAA0B,EAI1B,aAAa,EACb,YAAY,EACZ,aAAa,EAEb,SAAS,EAET,aAAa,EACb,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ghost-core/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAE/B,wDAAwD;AACxD,OAAO,EAEL,eAAe,EACf,gBAAgB,EAEhB,UAAU,GAIX,MAAM,oBAAoB,CAAC;AAC5B,oEAAoE;AACpE,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EAOtB,cAAc,EACd,cAAc,EAGd,kBAAkB,EAClB,cAAc,EACd,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,iCAAiC;AACjC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC/C,iDAAiD;AACjD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACzE,0DAA0D;AAC1D,OAAO,EAEL,8BAA8B,EAG9B,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAEL,0BAA0B,EAC1B,wBAAwB,EAGxB,yBAAyB,EACzB,2BAA2B,EAG3B,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,oCAAoC;AACpC,OAAO,EAEL,uBAAuB,EAEvB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AACxB,4DAA4D;AAC5D,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EAEvB,iBAAiB,EAGjB,0BAA0B,EAI1B,2BAA2B,EAC3B,aAAa,EACb,YAAY,EACZ,aAAa,EAEb,SAAS,EAET,aAAa,EACb,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAOzB,OAAO;AACL,8CAA8C;AAC9C,gCAAgC,EAChC,oBAAoB;AACpB,oDAAoD;AACpD,qCAAqC,EACrC,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -8,7 +8,7 @@ export interface ParsedMarkdown {
|
|
|
8
8
|
* `---\n<yaml>\n---\n<body>`. Returns `frontmatter: null` when there is no
|
|
9
9
|
* leading frontmatter block (callers report it as an error).
|
|
10
10
|
*
|
|
11
|
-
* Shared by every
|
|
11
|
+
* Shared by every ghost markdown+frontmatter artifact (checks, nodes): one
|
|
12
12
|
* envelope, one splitter.
|
|
13
13
|
*/
|
|
14
14
|
export declare function splitMarkdownFrontmatter(raw: string): ParsedMarkdown;
|
|
@@ -4,7 +4,7 @@ import { parse as parseYaml } from "yaml";
|
|
|
4
4
|
* `---\n<yaml>\n---\n<body>`. Returns `frontmatter: null` when there is no
|
|
5
5
|
* leading frontmatter block (callers report it as an error).
|
|
6
6
|
*
|
|
7
|
-
* Shared by every
|
|
7
|
+
* Shared by every ghost markdown+frontmatter artifact (checks, nodes): one
|
|
8
8
|
* envelope, one splitter.
|
|
9
9
|
*/
|
|
10
10
|
export function splitMarkdownFrontmatter(raw) {
|
|
@@ -6,6 +6,6 @@
|
|
|
6
6
|
export { lintGhostNode, type ParseNodeResult, parseNode } from "./parse.js";
|
|
7
7
|
export { GhostNodeFrontmatterSchema, NodeIdSchema, NodeRefSchema, } from "./schema.js";
|
|
8
8
|
export { serializeNode } from "./serialize.js";
|
|
9
|
-
export { carriesConcreteMaterial, extractSkeletonFences, extractSkeletonSections, type FencedBlock, hasThreeLineFence, type SkeletonSection, stripSkeletonSections, } from "./steering.js";
|
|
9
|
+
export { carriesConcreteMaterial, extractSkeletonFences, extractSkeletonSections, type FencedBlock, hasSubstantialFencedExample, hasThreeLineFence, type SkeletonSection, stripSkeletonSections, } from "./steering.js";
|
|
10
10
|
export { GHOST_NODE_SCHEMA, type GhostNodeDocument, type GhostNodeFrontmatter, type GhostNodeLintIssue, type GhostNodeLintReport, type GhostNodeLintSeverity, } from "./types.js";
|
|
11
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ghost-core/node/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,KAAK,eAAe,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,EACL,0BAA0B,EAC1B,YAAY,EACZ,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,WAAW,EAChB,iBAAiB,EACjB,KAAK,eAAe,EACpB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,GAC3B,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ghost-core/node/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,KAAK,eAAe,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,EACL,0BAA0B,EAC1B,YAAY,EACZ,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,WAAW,EAChB,2BAA2B,EAC3B,iBAAiB,EACjB,KAAK,eAAe,EACpB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,GAC3B,MAAM,YAAY,CAAC"}
|
|
@@ -6,6 +6,6 @@
|
|
|
6
6
|
export { lintGhostNode, parseNode } from "./parse.js";
|
|
7
7
|
export { GhostNodeFrontmatterSchema, NodeIdSchema, NodeRefSchema, } from "./schema.js";
|
|
8
8
|
export { serializeNode } from "./serialize.js";
|
|
9
|
-
export { carriesConcreteMaterial, extractSkeletonFences, extractSkeletonSections, hasThreeLineFence, stripSkeletonSections, } from "./steering.js";
|
|
9
|
+
export { carriesConcreteMaterial, extractSkeletonFences, extractSkeletonSections, hasSubstantialFencedExample, hasThreeLineFence, stripSkeletonSections, } from "./steering.js";
|
|
10
10
|
export { GHOST_NODE_SCHEMA, } from "./types.js";
|
|
11
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ghost-core/node/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAwB,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,EACL,0BAA0B,EAC1B,YAAY,EACZ,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EAEvB,iBAAiB,EAEjB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,iBAAiB,GAMlB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ghost-core/node/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAwB,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,EACL,0BAA0B,EAC1B,YAAY,EACZ,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EAEvB,2BAA2B,EAC3B,iBAAiB,EAEjB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,iBAAiB,GAMlB,MAAM,YAAY,CAAC"}
|
|
@@ -42,7 +42,7 @@ export const GhostNodeFrontmatterSchema = z
|
|
|
42
42
|
.optional(),
|
|
43
43
|
})
|
|
44
44
|
// Passthrough, not strict: authors may add free-form descriptive keys
|
|
45
|
-
// (e.g. `audience`, `stage`) that describe what the node is.
|
|
45
|
+
// (e.g. `audience`, `stage`) that describe what the node is. ghost does not
|
|
46
46
|
// gate on them — they ride along as part of the node's descriptive surface.
|
|
47
47
|
.passthrough();
|
|
48
48
|
export { NodeIdSchema, NodeRefSchema };
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { GhostNodeDocument, GhostNodeFrontmatter } from "./types.js";
|
|
2
2
|
/**
|
|
3
|
-
* Serialize a node back to its `---\n<yaml>\n---\n<body>` markdown form.
|
|
4
|
-
* are emitted in a stable order (description, materials)
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
3
|
+
* Serialize a node back to its `---\n<yaml>\n---\n<body>` markdown form. Known
|
|
4
|
+
* keys are emitted first in a stable order (description, materials), followed
|
|
5
|
+
* by any free-form descriptive keys in alphabetical order so round-trips and
|
|
6
|
+
* diffs are deterministic. Identity and kind are not serialized — they come
|
|
7
|
+
* from the node's file path and optional filename prefix. Undefined fields are
|
|
8
|
+
* omitted; a node with no frontmatter fields emits an empty block.
|
|
8
9
|
*/
|
|
9
10
|
export declare function serializeNode(node: GhostNodeDocument): string;
|
|
10
11
|
export type { GhostNodeFrontmatter };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../../src/ghost-core/node/serialize.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../../src/ghost-core/node/serialize.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAQ1E;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CA0B7D;AAED,YAAY,EAAE,oBAAoB,EAAE,CAAC"}
|
|
@@ -1,18 +1,34 @@
|
|
|
1
1
|
import { stringify as stringifyYaml } from "yaml";
|
|
2
|
+
const FRONTMATTER_KEY_ORDER = ["description", "materials"];
|
|
3
|
+
function shouldSerializeFrontmatterValue(value) {
|
|
4
|
+
return value !== undefined;
|
|
5
|
+
}
|
|
2
6
|
/**
|
|
3
|
-
* Serialize a node back to its `---\n<yaml>\n---\n<body>` markdown form.
|
|
4
|
-
* are emitted in a stable order (description, materials)
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
7
|
+
* Serialize a node back to its `---\n<yaml>\n---\n<body>` markdown form. Known
|
|
8
|
+
* keys are emitted first in a stable order (description, materials), followed
|
|
9
|
+
* by any free-form descriptive keys in alphabetical order so round-trips and
|
|
10
|
+
* diffs are deterministic. Identity and kind are not serialized — they come
|
|
11
|
+
* from the node's file path and optional filename prefix. Undefined fields are
|
|
12
|
+
* omitted; a node with no frontmatter fields emits an empty block.
|
|
8
13
|
*/
|
|
9
14
|
export function serializeNode(node) {
|
|
10
15
|
const fm = node.frontmatter;
|
|
11
16
|
const ordered = {};
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
17
|
+
const emitted = new Set();
|
|
18
|
+
for (const key of FRONTMATTER_KEY_ORDER) {
|
|
19
|
+
const value = fm[key];
|
|
20
|
+
if (shouldSerializeFrontmatterValue(value)) {
|
|
21
|
+
ordered[key] = value;
|
|
22
|
+
emitted.add(key);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
for (const key of Object.keys(fm).sort()) {
|
|
26
|
+
if (emitted.has(key))
|
|
27
|
+
continue;
|
|
28
|
+
const value = fm[key];
|
|
29
|
+
if (shouldSerializeFrontmatterValue(value))
|
|
30
|
+
ordered[key] = value;
|
|
31
|
+
}
|
|
16
32
|
// An empty frontmatter object stringifies to "{}"; emit a bare block instead.
|
|
17
33
|
const yaml = Object.keys(ordered).length === 0
|
|
18
34
|
? ""
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../../src/ghost-core/node/serialize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AAGlD
|
|
1
|
+
{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../../src/ghost-core/node/serialize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AAGlD,MAAM,qBAAqB,GAAG,CAAC,aAAa,EAAE,WAAW,CAAU,CAAC;AAEpE,SAAS,+BAA+B,CAAC,KAAc;IACrD,OAAO,KAAK,KAAK,SAAS,CAAC;AAC7B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,IAAuB;IACnD,MAAM,EAAE,GAAG,IAAI,CAAC,WAAsC,CAAC;IACvD,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,KAAK,MAAM,GAAG,IAAI,qBAAqB,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QACtB,IAAI,+BAA+B,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACzC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAC/B,MAAM,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QACtB,IAAI,+BAA+B,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACnE,CAAC;IAED,8EAA8E;IAC9E,MAAM,IAAI,GACR,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC;QAC/B,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC;IAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC3C,OAAO,QAAQ,IAAI,QAAQ,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAClE,CAAC"}
|
|
@@ -11,6 +11,7 @@ export declare function carriesConcreteMaterial(input: {
|
|
|
11
11
|
materials?: string[];
|
|
12
12
|
body: string;
|
|
13
13
|
}): boolean;
|
|
14
|
+
export declare function hasSubstantialFencedExample(body: string): boolean;
|
|
14
15
|
export declare function hasThreeLineFence(body: string): boolean;
|
|
15
16
|
export declare function extractSkeletonSections(body: string): SkeletonSection[];
|
|
16
17
|
export declare function extractSkeletonFences(body: string): FencedBlock[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"steering.d.ts","sourceRoot":"","sources":["../../../src/ghost-core/node/steering.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAMV;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKvD;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE,CASvE;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAEjE;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAc1D"}
|
|
1
|
+
{"version":3,"file":"steering.d.ts","sourceRoot":"","sources":["../../../src/ghost-core/node/steering.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAMV;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKvD;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE,CASvE;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAEjE;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAc1D"}
|
|
@@ -2,9 +2,12 @@ const FENCED_BLOCK_PATTERN = /(^|\n)(`{3,}|~{3,})[^\n]*\n([\s\S]*?)\n\2[ \t]*(?=
|
|
|
2
2
|
const SKELETON_HEADING_PATTERN = /^##[ \t]+Skeleton[ \t]*$/gim;
|
|
3
3
|
export function carriesConcreteMaterial(input) {
|
|
4
4
|
return ((input.materials?.length ?? 0) > 0 ||
|
|
5
|
-
|
|
5
|
+
hasSubstantialFencedExample(input.body) ||
|
|
6
6
|
extractSkeletonSections(input.body).length > 0);
|
|
7
7
|
}
|
|
8
|
+
export function hasSubstantialFencedExample(body) {
|
|
9
|
+
return hasThreeLineFence(stripSkeletonSections(body));
|
|
10
|
+
}
|
|
8
11
|
export function hasThreeLineFence(body) {
|
|
9
12
|
for (const block of extractFencedBlocks(body)) {
|
|
10
13
|
if (block.content.split(/\r?\n/).length >= 3)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"steering.js","sourceRoot":"","sources":["../../../src/ghost-core/node/steering.ts"],"names":[],"mappings":"AAAA,MAAM,oBAAoB,GACxB,0DAA0D,CAAC;AAC7D,MAAM,wBAAwB,GAAG,6BAA6B,CAAC;AAa/D,MAAM,UAAU,uBAAuB,CAAC,KAGvC;IACC,OAAO,CACL,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;QAClC,
|
|
1
|
+
{"version":3,"file":"steering.js","sourceRoot":"","sources":["../../../src/ghost-core/node/steering.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,16 +6,17 @@ export declare const GHOST_NODE_SCHEMA: "ghost.node/v1";
|
|
|
6
6
|
* why / with-what / how-assembled are drafting prompts, never fields.
|
|
7
7
|
*/
|
|
8
8
|
export interface GhostNodeFrontmatter {
|
|
9
|
+
/** Free-form descriptive properties parsed from node frontmatter. */
|
|
10
|
+
[key: string]: unknown;
|
|
9
11
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* the node's "implementation"; the description is what makes it discoverable.
|
|
12
|
+
* Retrieval payload shown by gather: what the node governs, the observable
|
|
13
|
+
* condition under which it applies, and what it contributes where useful.
|
|
14
|
+
* Together with the node's id, it is how an agent decides applicability.
|
|
14
15
|
* Optional, but strongly encouraged on any node worth anchoring a task at.
|
|
15
16
|
*/
|
|
16
17
|
description?: string;
|
|
17
18
|
/**
|
|
18
|
-
* Optional locators for the concrete materials this
|
|
19
|
+
* Optional locators for the concrete materials this guidance is about: repo-relative
|
|
19
20
|
* paths/globs and absolute https URLs. Guidance stays in prose; this list is
|
|
20
21
|
* only where the agent or review harness can find the material.
|
|
21
22
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ghost-core/node/types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,EAAG,eAAwB,CAAC;AAE1D;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ghost-core/node/types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,EAAG,eAAwB,CAAC;AAE1D;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,qEAAqE;IACrE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,oBAAoB,CAAC;IAClC,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEjE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,qBAAqB,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd"}
|
|
@@ -1,19 +1,29 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
/** Schema emitted for newly initialized `.ghost/` packages. */
|
|
3
|
+
export declare const GHOST_PACKAGE_SCHEMA: "ghost.package/v1";
|
|
4
|
+
/** @deprecated Accepted for packages created before `ghost.package/v1`. */
|
|
2
5
|
export declare const GHOST_FINGERPRINT_PACKAGE_SCHEMA: "ghost.fingerprint-package/v1";
|
|
3
|
-
/** `manifest.yml`
|
|
4
|
-
export declare const
|
|
6
|
+
/** `manifest.yml` schema for a `.ghost/` package, including the legacy id. */
|
|
7
|
+
export declare const GhostPackageManifestSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
8
|
+
id: z.ZodString;
|
|
9
|
+
cover: z.ZodOptional<z.ZodString>;
|
|
10
|
+
schema: z.ZodLiteral<"ghost.package/v1">;
|
|
11
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
12
|
+
id: z.ZodString;
|
|
13
|
+
cover: z.ZodOptional<z.ZodString>;
|
|
5
14
|
schema: z.ZodLiteral<"ghost.fingerprint-package/v1">;
|
|
15
|
+
}, z.core.$strict>], "schema">;
|
|
16
|
+
export type GhostPackageManifest = z.infer<typeof GhostPackageManifestSchema>;
|
|
17
|
+
/** @deprecated Use `GhostPackageManifestSchema`. */
|
|
18
|
+
export declare const GhostFingerprintPackageManifestSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
6
19
|
id: z.ZodString;
|
|
7
20
|
cover: z.ZodOptional<z.ZodString>;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
*/
|
|
17
|
-
cover?: string;
|
|
18
|
-
}
|
|
21
|
+
schema: z.ZodLiteral<"ghost.package/v1">;
|
|
22
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
23
|
+
id: z.ZodString;
|
|
24
|
+
cover: z.ZodOptional<z.ZodString>;
|
|
25
|
+
schema: z.ZodLiteral<"ghost.fingerprint-package/v1">;
|
|
26
|
+
}, z.core.$strict>], "schema">;
|
|
27
|
+
/** @deprecated Use `GhostPackageManifest`. */
|
|
28
|
+
export type GhostFingerprintPackageManifest = GhostPackageManifest;
|
|
19
29
|
//# sourceMappingURL=package-manifest.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-manifest.d.ts","sourceRoot":"","sources":["../../src/ghost-core/package-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,gCAAgC,EAC3C,8BAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"package-manifest.d.ts","sourceRoot":"","sources":["../../src/ghost-core/package-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,+DAA+D;AAC/D,eAAO,MAAM,oBAAoB,EAAG,kBAA2B,CAAC;AAEhE,2EAA2E;AAC3E,eAAO,MAAM,gCAAgC,EAC3C,8BAAuC,CAAC;AAyB1C,8EAA8E;AAC9E,eAAO,MAAM,0BAA0B;;;;;;;;8BAUrC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,oDAAoD;AACpD,eAAO,MAAM,qCAAqC;;;;;;;;8BAA6B,CAAC;AAEhF,8CAA8C;AAC9C,MAAM,MAAM,+BAA+B,GAAG,oBAAoB,CAAC"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
/** Schema emitted for newly initialized `.ghost/` packages. */
|
|
3
|
+
export const GHOST_PACKAGE_SCHEMA = "ghost.package/v1";
|
|
4
|
+
/** @deprecated Accepted for packages created before `ghost.package/v1`. */
|
|
2
5
|
export const GHOST_FINGERPRINT_PACKAGE_SCHEMA = "ghost.fingerprint-package/v1";
|
|
3
6
|
const SlugIdSchema = z
|
|
4
7
|
.string()
|
|
@@ -8,17 +11,27 @@ const NodeIdSchema = z
|
|
|
8
11
|
.string()
|
|
9
12
|
.min(1)
|
|
10
13
|
.regex(/^[a-z0-9][a-z0-9./_-]*$/, "cover must be a node id");
|
|
11
|
-
|
|
12
|
-
export const GhostFingerprintPackageManifestSchema = z
|
|
13
|
-
.object({
|
|
14
|
-
schema: z.literal(GHOST_FINGERPRINT_PACKAGE_SCHEMA),
|
|
14
|
+
const ManifestFields = {
|
|
15
15
|
id: SlugIdSchema,
|
|
16
16
|
/**
|
|
17
17
|
* Optional id of the cover node: the one node gather inlines above the menu
|
|
18
18
|
* on every invocation. Guaranteed presence for content selection cannot
|
|
19
|
-
* retrieve
|
|
19
|
+
* retrieve: essence, temperature, and brand-level refusals.
|
|
20
20
|
*/
|
|
21
21
|
cover: NodeIdSchema.optional(),
|
|
22
|
-
}
|
|
23
|
-
|
|
22
|
+
};
|
|
23
|
+
/** `manifest.yml` schema for a `.ghost/` package, including the legacy id. */
|
|
24
|
+
export const GhostPackageManifestSchema = z.discriminatedUnion("schema", [
|
|
25
|
+
z
|
|
26
|
+
.object({ schema: z.literal(GHOST_PACKAGE_SCHEMA), ...ManifestFields })
|
|
27
|
+
.strict(),
|
|
28
|
+
z
|
|
29
|
+
.object({
|
|
30
|
+
schema: z.literal(GHOST_FINGERPRINT_PACKAGE_SCHEMA),
|
|
31
|
+
...ManifestFields,
|
|
32
|
+
})
|
|
33
|
+
.strict(),
|
|
34
|
+
]);
|
|
35
|
+
/** @deprecated Use `GhostPackageManifestSchema`. */
|
|
36
|
+
export const GhostFingerprintPackageManifestSchema = GhostPackageManifestSchema;
|
|
24
37
|
//# sourceMappingURL=package-manifest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-manifest.js","sourceRoot":"","sources":["../../src/ghost-core/package-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,gCAAgC,GAC3C,8BAAuC,CAAC;AAE1C,MAAM,YAAY,GAAG,CAAC;KACnB,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,KAAK,CACJ,wBAAwB,EACxB,uDAAuD,CACxD,CAAC;AAEJ,MAAM,YAAY,GAAG,CAAC;KACnB,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,KAAK,CAAC,yBAAyB,EAAE,yBAAyB,CAAC,CAAC;AAE/D,
|
|
1
|
+
{"version":3,"file":"package-manifest.js","sourceRoot":"","sources":["../../src/ghost-core/package-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,+DAA+D;AAC/D,MAAM,CAAC,MAAM,oBAAoB,GAAG,kBAA2B,CAAC;AAEhE,2EAA2E;AAC3E,MAAM,CAAC,MAAM,gCAAgC,GAC3C,8BAAuC,CAAC;AAE1C,MAAM,YAAY,GAAG,CAAC;KACnB,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,KAAK,CACJ,wBAAwB,EACxB,uDAAuD,CACxD,CAAC;AAEJ,MAAM,YAAY,GAAG,CAAC;KACnB,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,KAAK,CAAC,yBAAyB,EAAE,yBAAyB,CAAC,CAAC;AAE/D,MAAM,cAAc,GAAG;IACrB,EAAE,EAAE,YAAY;IAChB;;;;OAIG;IACH,KAAK,EAAE,YAAY,CAAC,QAAQ,EAAE;CAC/B,CAAC;AAEF,8EAA8E;AAC9E,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,kBAAkB,CAAC,QAAQ,EAAE;IACvE,CAAC;SACE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC;SACtE,MAAM,EAAE;IACX,CAAC;SACE,MAAM,CAAC;QACN,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,gCAAgC,CAAC;QACnD,GAAG,cAAc;KAClB,CAAC;SACD,MAAM,EAAE;CACZ,CAAC,CAAC;AAIH,oDAAoD;AACpD,MAAM,CAAC,MAAM,qCAAqC,GAAG,0BAA0B,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Generic loader for an agentskills.io-compatible skill bundle.
|
|
3
3
|
*
|
|
4
|
-
* Each tool in the
|
|
4
|
+
* Each tool in the ghost monorepo (`ghost`, `ghost`, …) ships
|
|
5
5
|
* its own skill bundle as real markdown under `src/skill-bundle/` and copies
|
|
6
6
|
* it verbatim to `dist/skill-bundle/` at build time. This loader walks any
|
|
7
7
|
* given root directory and returns a flat, deterministically ordered list of
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Generic loader for an agentskills.io-compatible skill bundle.
|
|
3
3
|
*
|
|
4
|
-
* Each tool in the
|
|
4
|
+
* Each tool in the ghost monorepo (`ghost`, `ghost`, …) ships
|
|
5
5
|
* its own skill bundle as real markdown under `src/skill-bundle/` and copies
|
|
6
6
|
* it verbatim to `dist/skill-bundle/` at build time. This loader walks any
|
|
7
7
|
* given root directory and returns a flat, deterministically ordered list of
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
/** @deprecated Use `ghostPackage` or `@design-intelligence/ghost/package`. */
|
|
1
2
|
export * as fingerprint from "./fingerprint.js";
|
|
2
3
|
export * as core from "./ghost-core/index.js";
|
|
3
|
-
|
|
4
|
+
export * as ghostPackage from "./package.js";
|
|
5
|
+
/** @deprecated Use `ghostPackage` or `@design-intelligence/ghost/package`. */
|
|
4
6
|
export * as scan from "./scan/index.js";
|
|
5
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAC9C,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAC9C,OAAO,KAAK,YAAY,MAAM,cAAc,CAAC;AAC7C,8EAA8E;AAC9E,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
/** @deprecated Use `ghostPackage` or `@design-intelligence/ghost/package`. */
|
|
1
2
|
export * as fingerprint from "./fingerprint.js";
|
|
2
3
|
export * as core from "./ghost-core/index.js";
|
|
3
|
-
|
|
4
|
+
export * as ghostPackage from "./package.js";
|
|
5
|
+
/** @deprecated Use `ghostPackage` or `@design-intelligence/ghost/package`. */
|
|
4
6
|
export * as scan from "./scan/index.js";
|
|
5
7
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAC9C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAC9C,OAAO,KAAK,YAAY,MAAM,cAAc,CAAC;AAC7C,8EAA8E;AAC9E,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "The model's median defaults this
|
|
2
|
+
description: "The model's median defaults this package refuses — gather for any greenfield visual surface or first-draft copy. Each rule is reject→replace; delete lines your brand legitimately violates."
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
This is the model's median, not your brand. Each rule is reject→replace.
|
|
@@ -17,16 +17,16 @@ verified at review, never steered in prose.
|
|
|
17
17
|
|
|
18
18
|
### Hover-lift
|
|
19
19
|
Reject hover-lift (`translateY` + growing shadow) as the default interaction
|
|
20
|
-
→ confirm with color and background change at the
|
|
20
|
+
→ confirm with color and background change at the package's fast
|
|
21
21
|
duration. (measured: 341)
|
|
22
22
|
|
|
23
23
|
### Indigo accent
|
|
24
24
|
Reject the indigo/blue/purple default accent (`#4f46e5`, `#2563eb`,
|
|
25
|
-
`#8b5cf6` family; purple/violet hue 260–310) → the
|
|
25
|
+
`#8b5cf6` family; purple/violet hue 260–310) → the package's declared
|
|
26
26
|
palette; absent one, monochrome plus a single functional accent.
|
|
27
27
|
|
|
28
28
|
### Dark theme
|
|
29
|
-
Reject unprompted dark theme → the
|
|
29
|
+
Reject unprompted dark theme → the package's declared surface.
|
|
30
30
|
Dark-to-look-cool and light-to-be-safe are the same retreat from a decision.
|
|
31
31
|
(measured: 271)
|
|
32
32
|
|
|
@@ -47,7 +47,7 @@ the ground.
|
|
|
47
47
|
|
|
48
48
|
### Glassmorphism
|
|
49
49
|
Reject glassmorphism (decorative backdrop blur) → flat surfaces with real
|
|
50
|
-
borders and the
|
|
50
|
+
borders and the package's elevation tiers.
|
|
51
51
|
|
|
52
52
|
### Chat bubbles
|
|
53
53
|
Reject chat bubbles with initials-circle avatars for assistant turns →
|
|
@@ -73,7 +73,7 @@ prominent metric showing real user data is fine.
|
|
|
73
73
|
|
|
74
74
|
### Every button primary
|
|
75
75
|
Reject every button a primary button → one primary per view; the rest step
|
|
76
|
-
down the
|
|
76
|
+
down the package's emphasis ladder.
|
|
77
77
|
|
|
78
78
|
### Eyebrow kicker
|
|
79
79
|
Reject an eyebrow kicker on every section → at most one, where the register
|
|
@@ -25,7 +25,7 @@ Pruning a rule from `cliche.median` orphans its paired reference here —
|
|
|
25
25
|
|
|
26
26
|
Flag `transform` with `translateY` inside a `:hover` rule on cards,
|
|
27
27
|
buttons, or list items, especially paired with a shadow increase. Hover
|
|
28
|
-
confirmation in this
|
|
28
|
+
confirmation in this package is color and background change, not lift.
|
|
29
29
|
(`cliche.median > Hover-lift`)
|
|
30
30
|
|
|
31
31
|
Flag accent values in the indigo/blue/purple default family (`#4f46e5`,
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "The brand on one page
|
|
2
|
+
description: "The brand on one page; what this brand is, how it feels, and what only it refuses."
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
This cover is unwritten.
|
|
6
|
-
|
|
5
|
+
This cover is unwritten. ghost gather always places this page in an agent's
|
|
6
|
+
context; that is delivery status, not a claim that every sentence applies to
|
|
7
|
+
every task. Use it for what cannot be retrieved by task: what this brand is about,
|
|
7
8
|
in one paragraph, in the brand's own voice. The temperature its words and
|
|
8
9
|
motion share. And the refusals only this brand makes — not generic don'ts
|
|
9
10
|
(those live in each foundation's misuse list, and the model's cliches live
|
|
@@ -34,6 +34,6 @@ checks at review.
|
|
|
34
34
|
The cover node (`brand.md`, declared in the manifest) is the one page always
|
|
35
35
|
in context: what the brand is, its temperature, and the refusals only it
|
|
36
36
|
makes. The ghost skill's `adapting-a-starter` recipe is the procedure for
|
|
37
|
-
growing this skeleton into a real
|
|
37
|
+
growing this skeleton into a real ghost package: write the cover, answer each
|
|
38
38
|
chapter's open question, prune the cliches your chapters absorb, then add
|
|
39
39
|
materials and refs.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "The model's median defaults this
|
|
2
|
+
description: "The model's median defaults this ghost package refuses — gather for any greenfield visual surface or first-draft copy. Each rule is reject→replace; delete lines your brand legitimately violates."
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
This is the model's median, not your brand. Each rule is reject→replace.
|
|
@@ -17,16 +17,16 @@ verified at review, never steered in prose.
|
|
|
17
17
|
|
|
18
18
|
### Hover-lift
|
|
19
19
|
Reject hover-lift (`translateY` + growing shadow) as the default interaction
|
|
20
|
-
→ confirm with color and background change at the
|
|
20
|
+
→ confirm with color and background change at the package's fast
|
|
21
21
|
duration. (measured: 341)
|
|
22
22
|
|
|
23
23
|
### Indigo accent
|
|
24
24
|
Reject the indigo/blue/purple default accent (`#4f46e5`, `#2563eb`,
|
|
25
|
-
`#8b5cf6` family; purple/violet hue 260–310) → the
|
|
25
|
+
`#8b5cf6` family; purple/violet hue 260–310) → the package's declared
|
|
26
26
|
palette; absent one, monochrome plus a single functional accent.
|
|
27
27
|
|
|
28
28
|
### Dark theme
|
|
29
|
-
Reject unprompted dark theme → the
|
|
29
|
+
Reject unprompted dark theme → the package's declared surface.
|
|
30
30
|
Dark-to-look-cool and light-to-be-safe are the same retreat from a decision.
|
|
31
31
|
(measured: 271)
|
|
32
32
|
|
|
@@ -47,7 +47,7 @@ the ground.
|
|
|
47
47
|
|
|
48
48
|
### Glassmorphism
|
|
49
49
|
Reject glassmorphism (decorative backdrop blur) → flat surfaces with real
|
|
50
|
-
borders and the
|
|
50
|
+
borders and the package's elevation tiers.
|
|
51
51
|
|
|
52
52
|
### Chat bubbles
|
|
53
53
|
Reject chat bubbles with initials-circle avatars for assistant turns →
|
|
@@ -73,7 +73,7 @@ prominent metric showing real user data is fine.
|
|
|
73
73
|
|
|
74
74
|
### Every button primary
|
|
75
75
|
Reject every button a primary button → one primary per view; the rest step
|
|
76
|
-
down the
|
|
76
|
+
down the package's emphasis ladder.
|
|
77
77
|
|
|
78
78
|
### Eyebrow kicker
|
|
79
79
|
Reject an eyebrow kicker on every section → at most one, where the register
|