@refrakt-md/runes 0.9.8 → 0.10.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/dist/attribute-presets.d.ts +47 -0
- package/dist/attribute-presets.d.ts.map +1 -0
- package/dist/attribute-presets.js +53 -0
- package/dist/attribute-presets.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -14
- package/dist/config.js.map +1 -1
- package/dist/examples.js +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -32
- package/dist/index.js.map +1 -1
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +6 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/packages.d.ts.map +1 -1
- package/dist/packages.js +1 -2
- package/dist/packages.js.map +1 -1
- package/dist/props.d.ts +0 -2
- package/dist/props.d.ts.map +1 -1
- package/dist/reference.d.ts +220 -0
- package/dist/reference.d.ts.map +1 -0
- package/dist/reference.js +551 -0
- package/dist/reference.js.map +1 -0
- package/dist/rune.d.ts +7 -6
- package/dist/rune.d.ts.map +1 -1
- package/dist/rune.js +1 -2
- package/dist/rune.js.map +1 -1
- package/dist/tags/budget.d.ts.map +1 -1
- package/dist/tags/budget.js +3 -9
- package/dist/tags/budget.js.map +1 -1
- package/dist/tags/common.d.ts.map +1 -1
- package/dist/tags/common.js +5 -0
- package/dist/tags/common.js.map +1 -1
- package/dist/tags/nav.js +1 -1
- package/dist/tags/nav.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared rune-reference infrastructure used by both the AI prompt builder
|
|
3
|
+
* and the editor/CLI for serializing rune metadata. Lives in @refrakt-md/runes
|
|
4
|
+
* so that callers (`refrakt write`, `refrakt edit`, `refrakt reference`) can
|
|
5
|
+
* use it without pulling in the AI or editor packages.
|
|
6
|
+
*/
|
|
7
|
+
import type { Schema } from '@markdoc/markdoc';
|
|
8
|
+
import type { ContentModel } from '@refrakt-md/types';
|
|
9
|
+
/**
|
|
10
|
+
* Information about an attribute preset inherited by a rune — the set of
|
|
11
|
+
* attribute names contributed by the preset, plus metadata for display.
|
|
12
|
+
*/
|
|
13
|
+
export interface RuneBasePresetInfo {
|
|
14
|
+
/** Short, human-readable preset name (matches `AttributePresetMetadata.name`). */
|
|
15
|
+
name: string;
|
|
16
|
+
/** One-sentence description of the preset. */
|
|
17
|
+
description: string;
|
|
18
|
+
/** Names of the attributes contributed by this preset. */
|
|
19
|
+
attributes: string[];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Rune metadata interface — structurally compatible with Rune from @refrakt-md/runes
|
|
23
|
+
* without requiring a runtime dependency on the full Rune class.
|
|
24
|
+
*/
|
|
25
|
+
export interface RuneInfo {
|
|
26
|
+
name: string;
|
|
27
|
+
aliases: string[];
|
|
28
|
+
description: string;
|
|
29
|
+
schema: {
|
|
30
|
+
attributes?: Record<string, {
|
|
31
|
+
type?: unknown;
|
|
32
|
+
required?: boolean;
|
|
33
|
+
matches?: unknown;
|
|
34
|
+
description?: string;
|
|
35
|
+
}>;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Authoring hints — a short note that reads naturally to both humans browsing
|
|
39
|
+
* the reference and LLMs generating content. Rendered as a dedicated section
|
|
40
|
+
* in `describeRune` output and included in `refrakt write` prompts.
|
|
41
|
+
*/
|
|
42
|
+
authoringHints?: string;
|
|
43
|
+
/** Pre-serialized content model; rendered into the reference output by `describeRune`. */
|
|
44
|
+
contentModel?: SerializedContentModel;
|
|
45
|
+
/** Named preset this rune inherits attributes from, if any (via `base:` in createContentModelSchema). */
|
|
46
|
+
basePreset?: RuneBasePresetInfo;
|
|
47
|
+
/** Example Markdoc snippet, falling back to `RUNE_EXAMPLES[name]` when omitted. */
|
|
48
|
+
example?: string;
|
|
49
|
+
/** Short source identifier (e.g. `"core"`, `"@refrakt-md/marketing"`) for grouping output. */
|
|
50
|
+
package?: string;
|
|
51
|
+
}
|
|
52
|
+
/** Runes that are internal or child-only — excluded from generated reference docs */
|
|
53
|
+
export declare const EXCLUDED_RUNES: Set<string>;
|
|
54
|
+
/** Attributes hidden from generated reference docs (rune.attribute format) */
|
|
55
|
+
export declare const HIDDEN_ATTRIBUTES: Set<string>;
|
|
56
|
+
export interface SerializedContentField {
|
|
57
|
+
name: string;
|
|
58
|
+
match: string;
|
|
59
|
+
optional?: boolean;
|
|
60
|
+
greedy?: boolean;
|
|
61
|
+
template?: string;
|
|
62
|
+
description?: string;
|
|
63
|
+
emitTag?: string;
|
|
64
|
+
}
|
|
65
|
+
export interface SerializedSequenceModel {
|
|
66
|
+
type: 'sequence';
|
|
67
|
+
fields: SerializedContentField[];
|
|
68
|
+
}
|
|
69
|
+
export interface SerializedHeadingExtractField {
|
|
70
|
+
name: string;
|
|
71
|
+
/** Regex source, or the literal string `'remainder'`. */
|
|
72
|
+
pattern: string;
|
|
73
|
+
optional?: boolean;
|
|
74
|
+
}
|
|
75
|
+
export interface SerializedKnownSection {
|
|
76
|
+
alias?: string[];
|
|
77
|
+
/** Whether this section has a specific model override (the actual model is not serialized). */
|
|
78
|
+
hasModel: boolean;
|
|
79
|
+
}
|
|
80
|
+
export interface SerializedSectionsModel {
|
|
81
|
+
type: 'sections';
|
|
82
|
+
sectionHeading: string;
|
|
83
|
+
fields?: SerializedContentField[];
|
|
84
|
+
sectionModel?: SerializedContentModel;
|
|
85
|
+
emitTag?: string;
|
|
86
|
+
headingExtract?: {
|
|
87
|
+
fields: SerializedHeadingExtractField[];
|
|
88
|
+
};
|
|
89
|
+
knownSections?: Record<string, SerializedKnownSection>;
|
|
90
|
+
implicitSection?: {
|
|
91
|
+
attributes?: Record<string, string>;
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
export interface SerializedDelimitedZone {
|
|
95
|
+
name: string;
|
|
96
|
+
type: 'sequence';
|
|
97
|
+
fields: SerializedContentField[];
|
|
98
|
+
}
|
|
99
|
+
export interface SerializedDelimitedModel {
|
|
100
|
+
type: 'delimited';
|
|
101
|
+
delimiter: string;
|
|
102
|
+
zones?: SerializedDelimitedZone[];
|
|
103
|
+
dynamicZones?: boolean;
|
|
104
|
+
zoneModel?: SerializedSequenceModel;
|
|
105
|
+
}
|
|
106
|
+
export interface SerializedCustomModel {
|
|
107
|
+
type: 'custom';
|
|
108
|
+
description: string;
|
|
109
|
+
}
|
|
110
|
+
export type SerializedContentModel = SerializedSequenceModel | SerializedSectionsModel | SerializedDelimitedModel | SerializedCustomModel;
|
|
111
|
+
/**
|
|
112
|
+
* Render a single rune's reference as a markdown block. Used by both the
|
|
113
|
+
* AI prompt builder and the `refrakt reference` CLI.
|
|
114
|
+
*/
|
|
115
|
+
export declare function describeRune(rune: RuneInfo): string;
|
|
116
|
+
/**
|
|
117
|
+
* Serialize a content model for JSON transport.
|
|
118
|
+
* Strips non-serializable fields (functions in `custom` models, RegExp in headingExtract).
|
|
119
|
+
* For function-based conditional models, evaluates with empty attrs to get the default.
|
|
120
|
+
*/
|
|
121
|
+
export declare function serializeContentModel(model: ContentModel | ((attrs: Record<string, any>) => ContentModel)): SerializedContentModel | undefined;
|
|
122
|
+
export declare function stripContentModel(model: ContentModel): SerializedContentModel | undefined;
|
|
123
|
+
/**
|
|
124
|
+
* Render a serialized content model to agent-readable markdown. The output
|
|
125
|
+
* describes the rune's input shape so a coding agent can author content
|
|
126
|
+
* with the right children in the right order.
|
|
127
|
+
*
|
|
128
|
+
* Output is stable: rerunning on the same serialized model produces
|
|
129
|
+
* byte-identical output.
|
|
130
|
+
*/
|
|
131
|
+
export declare function renderContentModel(model: SerializedContentModel): string;
|
|
132
|
+
/**
|
|
133
|
+
* Minimal structural shape of a Rune-like object that `hydrateRuneInfo` accepts.
|
|
134
|
+
* Matches both the `Rune` class and loose objects like the ones produced by
|
|
135
|
+
* `defineRune()`.
|
|
136
|
+
*/
|
|
137
|
+
export interface RuneLike {
|
|
138
|
+
name: string;
|
|
139
|
+
aliases: string[];
|
|
140
|
+
description: string;
|
|
141
|
+
schema: Schema;
|
|
142
|
+
authoringHints?: string;
|
|
143
|
+
}
|
|
144
|
+
export interface HydrateOptions {
|
|
145
|
+
/** Identifier for the source (e.g. `"core"`, `"@refrakt-md/marketing"`). */
|
|
146
|
+
packageName?: string;
|
|
147
|
+
/** Optional per-rune fixture string, overriding `RUNE_EXAMPLES[name]`. */
|
|
148
|
+
example?: string;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Hydrate a `Rune`-like object into a fully-populated `RuneInfo` for the
|
|
152
|
+
* reference surface. Resolves the content model via the shared
|
|
153
|
+
* `schemaContentModels` WeakMap and the base preset via
|
|
154
|
+
* `schemaBasePresets` + `lookupAttributePreset`.
|
|
155
|
+
*/
|
|
156
|
+
export declare function hydrateRuneInfo(rune: RuneLike, options?: HydrateOptions): RuneInfo;
|
|
157
|
+
/** Minimal source view for reference rendering — the merged rune set + metadata. */
|
|
158
|
+
export interface ReferenceContext {
|
|
159
|
+
/** All Rune-like objects keyed by primary name. */
|
|
160
|
+
runes: Record<string, RuneLike>;
|
|
161
|
+
/** Package fixtures (keyed by rune name). Falls back to `RUNE_EXAMPLES[name]`. */
|
|
162
|
+
fixtures: Record<string, string>;
|
|
163
|
+
/** Per-rune source identifier (e.g. `"core"` or `"@refrakt-md/marketing"`). */
|
|
164
|
+
source: Record<string, string>;
|
|
165
|
+
}
|
|
166
|
+
/** Hydrate every non-excluded rune in a context, sorted alphabetically by name. */
|
|
167
|
+
export declare function hydrateAllRuneInfos(ctx: ReferenceContext): RuneInfo[];
|
|
168
|
+
/** Hydrate a single rune by primary name or alias. Returns `undefined` if absent. */
|
|
169
|
+
export declare function hydrateRuneByName(ctx: ReferenceContext, name: string): RuneInfo | undefined;
|
|
170
|
+
export interface SerializedAttribute {
|
|
171
|
+
type: string;
|
|
172
|
+
required: boolean;
|
|
173
|
+
matches?: string[];
|
|
174
|
+
description?: string;
|
|
175
|
+
}
|
|
176
|
+
export interface SerializedRune {
|
|
177
|
+
name: string;
|
|
178
|
+
package: string;
|
|
179
|
+
aliases: string[];
|
|
180
|
+
description: string;
|
|
181
|
+
authoringHints?: string;
|
|
182
|
+
attributes: {
|
|
183
|
+
own: Record<string, SerializedAttribute>;
|
|
184
|
+
base?: {
|
|
185
|
+
name: string;
|
|
186
|
+
description: string;
|
|
187
|
+
attributes: Record<string, SerializedAttribute>;
|
|
188
|
+
};
|
|
189
|
+
universal: string[];
|
|
190
|
+
};
|
|
191
|
+
contentModel?: SerializedContentModel;
|
|
192
|
+
example?: string;
|
|
193
|
+
}
|
|
194
|
+
/** Serialize a hydrated RuneInfo into the stable JSON shape used by the reference command. */
|
|
195
|
+
export declare function serializeRune(info: RuneInfo, packageName?: string): SerializedRune;
|
|
196
|
+
export interface ReferenceGroup {
|
|
197
|
+
/** Package short identifier (`"core"`, `"@refrakt-md/marketing"`, …). */
|
|
198
|
+
packageName: string;
|
|
199
|
+
/** Human-readable label used as the group heading in rendered output. */
|
|
200
|
+
label: string;
|
|
201
|
+
/** Sorted list of rune summaries. */
|
|
202
|
+
runes: Array<{
|
|
203
|
+
name: string;
|
|
204
|
+
description: string;
|
|
205
|
+
aliases: string[];
|
|
206
|
+
}>;
|
|
207
|
+
}
|
|
208
|
+
/** Group hydrated rune infos by source package, core first then alphabetical. */
|
|
209
|
+
export declare function groupReferenceInfos(infos: RuneInfo[]): ReferenceGroup[];
|
|
210
|
+
export interface RenderReferenceOptions {
|
|
211
|
+
/** Optional preamble inserted between the `# Available Runes` heading and the TOC. */
|
|
212
|
+
preamble?: string;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Render the full reference document as markdown. Pure — rerunning on the same
|
|
216
|
+
* context produces byte-identical output, so callers can diff it against a
|
|
217
|
+
* checked-in AGENTS.md to detect drift.
|
|
218
|
+
*/
|
|
219
|
+
export declare function renderReferenceMarkdown(ctx: ReferenceContext, options?: RenderReferenceOptions): string;
|
|
220
|
+
//# sourceMappingURL=reference.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../src/reference.ts"],"names":[],"mappings":"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"}
|