@nanisoft/prism-llms 0.4.0 → 0.5.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.
Files changed (175) hide show
  1. package/README.md +88 -0
  2. package/THIRD-PARTY-NOTICES.md +48 -0
  3. package/dist/data.json +4037 -386
  4. package/dist/demo-graph.d.ts +21 -12
  5. package/dist/demo-graph.js +37 -21
  6. package/dist/extractor.d.ts +24 -17
  7. package/dist/extractor.js +299 -156
  8. package/dist/index.d.ts +12 -7
  9. package/dist/index.js +9 -7
  10. package/dist/llms-full.txt +8248 -2013
  11. package/dist/llms.txt +98 -93
  12. package/dist/markdown.d.ts +69 -23
  13. package/dist/markdown.js +131 -72
  14. package/dist/md/blocks/app-shell-01.md +135 -0
  15. package/dist/md/blocks/auth-form-01.md +135 -0
  16. package/dist/md/blocks/cta-01.md +88 -0
  17. package/dist/md/blocks/data-table-01.md +196 -0
  18. package/dist/md/blocks/feature-grid-01.md +92 -0
  19. package/dist/md/blocks/hero-01.md +90 -0
  20. package/dist/md/blocks/instrument-panel-01.md +109 -0
  21. package/dist/md/blocks/logo-strip-01.md +97 -0
  22. package/dist/md/blocks/note-grid-01.md +98 -0
  23. package/dist/md/blocks/page-header-01.md +97 -0
  24. package/dist/md/blocks/pricing-01.md +91 -0
  25. package/dist/md/blocks/process-rail-01.md +106 -0
  26. package/dist/md/blocks/product-grid-01.md +107 -0
  27. package/dist/md/blocks/settings-panel-01.md +146 -0
  28. package/dist/md/blocks/site-footer.md +103 -11
  29. package/dist/md/blocks/site-header.md +107 -11
  30. package/dist/md/blocks/stack-grid-01.md +108 -0
  31. package/dist/md/blocks/stats-01.md +89 -0
  32. package/dist/md/blocks/status-ledger-01.md +121 -0
  33. package/dist/md/changelogs/prism-llms.md +244 -0
  34. package/dist/md/changelogs/prism-mcp-server.md +95 -0
  35. package/dist/md/changelogs/prism-tokens.md +126 -0
  36. package/dist/md/changelogs/prism-ui.md +467 -0
  37. package/dist/md/components/accordion.md +108 -0
  38. package/dist/md/components/alert.md +90 -7
  39. package/dist/md/components/avatar.md +89 -7
  40. package/dist/md/components/badge.md +74 -7
  41. package/dist/md/components/breadcrumb.md +84 -7
  42. package/dist/md/components/button.md +90 -7
  43. package/dist/md/components/card.md +90 -7
  44. package/dist/md/components/checkbox.md +101 -7
  45. package/dist/md/components/cta-link.md +98 -0
  46. package/dist/md/components/diagram.md +124 -0
  47. package/dist/md/components/dialog.md +128 -0
  48. package/dist/md/components/dropdown-menu.md +125 -0
  49. package/dist/md/components/fact-list.md +85 -0
  50. package/dist/md/components/field.md +116 -0
  51. package/dist/md/components/input.md +86 -7
  52. package/dist/md/components/kbd.md +77 -0
  53. package/dist/md/components/pagination.md +95 -7
  54. package/dist/md/components/popover.md +95 -7
  55. package/dist/md/components/product-mark.md +114 -0
  56. package/dist/md/components/product-switcher.md +88 -0
  57. package/dist/md/components/progress.md +88 -7
  58. package/dist/md/components/prose.md +91 -0
  59. package/dist/md/components/radio-group.md +111 -0
  60. package/dist/md/components/section.md +91 -0
  61. package/dist/md/components/select.md +143 -7
  62. package/dist/md/components/separator.md +77 -0
  63. package/dist/md/components/skeleton.md +71 -7
  64. package/dist/md/components/slider.md +90 -7
  65. package/dist/md/components/switch.md +104 -7
  66. package/dist/md/components/table.md +104 -7
  67. package/dist/md/components/tabs.md +105 -7
  68. package/dist/md/components/textarea.md +101 -0
  69. package/dist/md/components/tooltip.md +95 -7
  70. package/dist/md/components/typography.md +82 -7
  71. package/dist/md/content/about-content.md +36 -0
  72. package/dist/md/content/audience.md +43 -0
  73. package/dist/md/content/glossary.md +69 -0
  74. package/dist/md/content/product-vocabulary.md +53 -0
  75. package/dist/md/content/voice.md +52 -0
  76. package/dist/md/content/writing-mechanics.md +58 -0
  77. package/dist/md/foundation/colors.md +10 -0
  78. package/dist/md/foundation/iconography.md +14 -0
  79. package/dist/md/foundation/motion.md +10 -0
  80. package/dist/md/foundation/radii.md +9 -0
  81. package/dist/md/foundation/shadows.md +9 -0
  82. package/dist/md/foundation/spacings.md +8 -0
  83. package/dist/md/foundation/typography.md +9 -0
  84. package/dist/md/foundation/variables.md +9 -0
  85. package/dist/md/overview/architecture.md +76 -0
  86. package/dist/md/overview/brand.md +41 -0
  87. package/dist/md/overview/composition.md +77 -0
  88. package/dist/md/overview/quickstart.md +97 -0
  89. package/dist/md/overview/theming.md +89 -0
  90. package/dist/md/overview/using-llms.md +83 -0
  91. package/dist/md/pages/auth-page.md +149 -0
  92. package/dist/md/pages/blog-post-page.md +136 -0
  93. package/dist/md/pages/dashboard-page.md +241 -0
  94. package/dist/md/pages/docs-shell.md +210 -15
  95. package/dist/md/pages/marketing-page.md +199 -0
  96. package/dist/md/pages/not-found-page.md +105 -0
  97. package/dist/md/pages/settings-page.md +206 -0
  98. package/dist/prism-skill.md +50 -0
  99. package/dist/store.d.ts +203 -0
  100. package/dist/store.js +317 -0
  101. package/package.json +29 -26
  102. package/dist/demo-graph.d.ts.map +0 -1
  103. package/dist/demo-graph.js.map +0 -1
  104. package/dist/extractor.d.ts.map +0 -1
  105. package/dist/extractor.js.map +0 -1
  106. package/dist/index.d.ts.map +0 -1
  107. package/dist/index.js.map +0 -1
  108. package/dist/markdown.d.ts.map +0 -1
  109. package/dist/markdown.js.map +0 -1
  110. package/dist/md/blocks/component-demo.md +0 -19
  111. package/dist/md/blocks/page-header.md +0 -19
  112. package/dist/md/components/affix.md +0 -14
  113. package/dist/md/components/anchor.md +0 -14
  114. package/dist/md/components/auto-complete.md +0 -14
  115. package/dist/md/components/back-top.md +0 -14
  116. package/dist/md/components/border-beam.md +0 -14
  117. package/dist/md/components/calendar.md +0 -14
  118. package/dist/md/components/carousel.md +0 -14
  119. package/dist/md/components/cascader.md +0 -14
  120. package/dist/md/components/col.md +0 -14
  121. package/dist/md/components/collapse.md +0 -14
  122. package/dist/md/components/color-picker.md +0 -14
  123. package/dist/md/components/date-picker.md +0 -14
  124. package/dist/md/components/descriptions.md +0 -14
  125. package/dist/md/components/display-title.md +0 -20
  126. package/dist/md/components/divider.md +0 -14
  127. package/dist/md/components/drawer.md +0 -14
  128. package/dist/md/components/dropdown.md +0 -14
  129. package/dist/md/components/empty.md +0 -14
  130. package/dist/md/components/flex.md +0 -14
  131. package/dist/md/components/float-button.md +0 -14
  132. package/dist/md/components/form.md +0 -14
  133. package/dist/md/components/grid.md +0 -14
  134. package/dist/md/components/image.md +0 -14
  135. package/dist/md/components/input-number.md +0 -14
  136. package/dist/md/components/layout.md +0 -14
  137. package/dist/md/components/list.md +0 -14
  138. package/dist/md/components/listy.md +0 -14
  139. package/dist/md/components/masonry.md +0 -14
  140. package/dist/md/components/mentions.md +0 -14
  141. package/dist/md/components/menu.md +0 -14
  142. package/dist/md/components/modal.md +0 -14
  143. package/dist/md/components/popconfirm.md +0 -14
  144. package/dist/md/components/qrcode.md +0 -14
  145. package/dist/md/components/radio.md +0 -14
  146. package/dist/md/components/rate.md +0 -14
  147. package/dist/md/components/result.md +0 -14
  148. package/dist/md/components/row.md +0 -14
  149. package/dist/md/components/segmented.md +0 -14
  150. package/dist/md/components/space.md +0 -14
  151. package/dist/md/components/spin.md +0 -14
  152. package/dist/md/components/splitter.md +0 -14
  153. package/dist/md/components/statistic.md +0 -14
  154. package/dist/md/components/steps.md +0 -14
  155. package/dist/md/components/tag.md +0 -14
  156. package/dist/md/components/time-picker.md +0 -14
  157. package/dist/md/components/timeline.md +0 -14
  158. package/dist/md/components/tour.md +0 -14
  159. package/dist/md/components/transfer.md +0 -14
  160. package/dist/md/components/tree-select.md +0 -14
  161. package/dist/md/components/tree.md +0 -14
  162. package/dist/md/components/upload.md +0 -14
  163. package/dist/md/components/watermark.md +0 -14
  164. package/dist/md/docs/brand.md +0 -41
  165. package/dist/md/pages/blog-layout.md +0 -19
  166. package/dist/md/theme/blue-dark.md +0 -127
  167. package/dist/md/theme/blue-light.md +0 -129
  168. package/dist/md/theme/green-dark.md +0 -127
  169. package/dist/md/theme/green-light.md +0 -129
  170. package/dist/md/theme/lavender-dark.md +0 -127
  171. package/dist/md/theme/lavender-light.md +0 -129
  172. package/dist/md/theme/peach-dark.md +0 -127
  173. package/dist/md/theme/peach-light.md +0 -129
  174. package/dist/md/theme/rose-dark.md +0 -127
  175. package/dist/md/theme/rose-light.md +0 -129
@@ -0,0 +1,203 @@
1
+ /**
2
+ * The `PrismDocsStore` contract: the one type the MCP server validates at
3
+ * runtime, and the one runtime guard that produces it.
4
+ *
5
+ * Ticket 12 section 7 makes this file the canonical home. The store is a
6
+ * build-time projection of the catalogue, the authored pages and the token
7
+ * cascade; the MCP server imports both the type and `parsePrismDocsStore` and
8
+ * never redeclares either.
9
+ *
10
+ * `kind` is ticket 09's closed union. The JSON arrives as `unknown`, the guard
11
+ * narrows it structurally, and `kind` is validated through a local list that is
12
+ * tied to the catalogue's type with `satisfies` plus a type-equality assertion.
13
+ * A widened `kind: string` is rejected at runtime and at compile time, which is
14
+ * the bug the old package recorded.
15
+ */
16
+ import type { CatalogKind, ComponentCategory } from '@nanisoft/prism-ui/catalog';
17
+ export declare const STORE_KINDS: readonly ["component", "block", "page"];
18
+ export declare const STORE_CATEGORIES: readonly ["Call to action", "Forms and inputs", "Feedback", "Layout", "Data display", "Typography", "Miscellaneous"];
19
+ export declare const STORE_STATUSES: readonly ["stable", "deprecated"];
20
+ /**
21
+ * The content Sections, in the reading order the site publishes them, and the
22
+ * same order `llms.txt` groups them in.
23
+ *
24
+ * These are the Section *directories*, so the list is the walk the corpus builder
25
+ * takes and the set of directories the site's gate checks. The three catalogue
26
+ * Sections are not here: an Item is a catalogue entry with a `kind`, and its page
27
+ * is emitted from the Catalogue rather than walked out of the content tree, so
28
+ * adding `components` to this list would make the walk look for a directory that
29
+ * is not one.
30
+ *
31
+ * **A Section's route is its directory, and the two were renames.** `docs` is
32
+ * `overview` and `foundations` is `foundation`, which is the rule that a prose
33
+ * Section is one body of knowledge and takes a singular route while a catalogue
34
+ * Section is a collection of many Items and takes a plural one. An agent holding
35
+ * a cached `llms.txt` from before the move still resolves every URL it names,
36
+ * because the site Worker redirects each of these routes permanently, and the
37
+ * corpus is rebuilt per release and points at the new ones. Nothing here is
38
+ * aliased: a page's `section` is the directory it is filed in, which is what
39
+ * `get_page` matches on, and a `Record<StoreSection, string>` over a list that
40
+ * had to be edited in the same commit as the rename is a second list that can be
41
+ * half done.
42
+ */
43
+ export declare const STORE_SECTIONS: readonly ["overview", "foundation", "content", "changelogs"];
44
+ /**
45
+ * The label each content Section is read under, in every artifact that groups
46
+ * pages by Section.
47
+ *
48
+ * `Record<StoreSection, string>` rather than a separate list, because a Section
49
+ * added to `STORE_SECTIONS` with no label is a compile error here rather than a
50
+ * Section that `llms.txt`, `list_pages` and the Corpus each spell their own way.
51
+ * The keys are the Section directories themselves, so the label cannot be filed
52
+ * under a Section that does not exist.
53
+ *
54
+ * The label is the Section's name rather than its directory, which is the whole
55
+ * point of the pair: the directory is what the tree is called, and the name is
56
+ * what a reader and an agent are told. `llms.txt` groups under these headings and
57
+ * `list_pages` counts them, so a Section renamed without its label renamed here
58
+ * would be advertised under two names in two artifacts.
59
+ */
60
+ export declare const STORE_SECTION_TITLES: Record<StoreSection, string>;
61
+ export declare const STORE_PACKS: readonly ["default", "blush", "mint", "lavender", "sky", "peach"];
62
+ export declare const STORE_MODES: readonly ["light", "dark"];
63
+ export declare const STORE_SCALE_GROUPS: readonly ["motion", "typography", "spacing", "shadow", "breakpoint", "container"];
64
+ export type StoreKind = (typeof STORE_KINDS)[number];
65
+ export type StoreStatus = (typeof STORE_STATUSES)[number];
66
+ export type StoreSection = (typeof STORE_SECTIONS)[number];
67
+ export type PackId = (typeof STORE_PACKS)[number];
68
+ export type Mode = (typeof STORE_MODES)[number];
69
+ export type PrismScaleGroup = (typeof STORE_SCALE_GROUPS)[number];
70
+ /** `'doc'` is a non-item page (a guide, a Foundation, a Content page). */
71
+ export type TokenGroup = 'semantic' | PrismScaleGroup;
72
+ export interface PrismDocsExample {
73
+ readonly title: string;
74
+ readonly code: string;
75
+ }
76
+ export interface PrismDocsStoreEntry {
77
+ readonly id: string;
78
+ readonly slug: string;
79
+ readonly kind: CatalogKind;
80
+ readonly name: string;
81
+ readonly category: ComponentCategory | null;
82
+ readonly status: StoreStatus;
83
+ readonly description: string;
84
+ /** The item's canonical site path, for example `/components/button`. */
85
+ readonly url: string;
86
+ /** The canonical path plus `.md`, for example `/components/button.md`. */
87
+ readonly mirror: string;
88
+ readonly source: string;
89
+ readonly exports: readonly string[];
90
+ /** The public import line ticket 11 section 9 fixes. */
91
+ readonly importLine: string;
92
+ /** The full per-item spec, byte-identical to the mirror file. */
93
+ readonly doc: string;
94
+ /** The `## Props` section body, for a Component. */
95
+ readonly props?: string;
96
+ /** The `## Composition` section body, for a Block or a Page. */
97
+ readonly composition?: string;
98
+ /** The verbatim demo plus its title, when a demo exists. */
99
+ readonly example?: PrismDocsExample;
100
+ readonly references: {
101
+ readonly blocks: readonly string[];
102
+ readonly pages: readonly string[];
103
+ };
104
+ }
105
+ export interface PrismDocsPage {
106
+ readonly id: string;
107
+ /** The page's path below its Section, without the extension: `tokens/colors`. */
108
+ readonly slug: string;
109
+ /** The top-level Section directory the page sits in. */
110
+ readonly section: StoreSection;
111
+ readonly title: string;
112
+ readonly description: string;
113
+ /** The page's canonical site path, for example `/overview/quickstart`. */
114
+ readonly url: string;
115
+ readonly markdown: string;
116
+ readonly mirror: string;
117
+ }
118
+ /**
119
+ * One version entry of a published package's changelog.
120
+ *
121
+ * `body` is the text under the version's own `## <version>` heading, sliced by
122
+ * the shared changelog rule and never re-levelled: the file is published whole
123
+ * and re-levelling a heading would be another transformation between the
124
+ * package's bytes and the agent's.
125
+ */
126
+ export interface PrismChangelogRelease {
127
+ readonly version: string;
128
+ readonly body: string;
129
+ }
130
+ /**
131
+ * One published package's changelog, projected from the generated file the site
132
+ * renders.
133
+ *
134
+ * This is the field the ninth read-only tool answers from, and it exists so that
135
+ * a breaking change in a published package is discoverable by an agent. The
136
+ * reference design system shipped a breaking module-system change that no agent
137
+ * using it could find, because its corpus had no changelog field and no tool
138
+ * could return one.
139
+ *
140
+ * `text` is the generated file verbatim, which is a byte-for-byte copy of the
141
+ * package's own `CHANGELOG.md`. `releases` is the shared rule's reading of those
142
+ * same bytes, and the two cannot disagree because the rule is the only thing
143
+ * that produces either.
144
+ */
145
+ export interface PrismChangelog {
146
+ /** The published npm name, which is what an agent asks for. */
147
+ readonly package: string;
148
+ /** The route segment the changelog is published at: the unscoped name. */
149
+ readonly slug: string;
150
+ /** The site's route for it, and the mirror an agent can fetch instead. */
151
+ readonly route: string;
152
+ /** The file's own first heading, which names the package. */
153
+ readonly title: string;
154
+ /** Every version the file records, newest first as the generator writes it. */
155
+ readonly versions: readonly string[];
156
+ readonly releases: readonly PrismChangelogRelease[];
157
+ /** The generated file, byte for byte. */
158
+ readonly text: string;
159
+ }
160
+ export interface PrismSemanticToken {
161
+ readonly token: string;
162
+ readonly value: string;
163
+ }
164
+ export interface PrismScaleToken {
165
+ readonly token: string;
166
+ readonly value: string;
167
+ /** The Tailwind binding, when the token has a mirror custom property. */
168
+ readonly binding?: string;
169
+ }
170
+ export interface PrismThemeTokens {
171
+ readonly pack: PackId;
172
+ readonly mode: Mode;
173
+ readonly semantic: readonly PrismSemanticToken[];
174
+ }
175
+ export interface PrismTokensProjection {
176
+ readonly packs: readonly PackId[];
177
+ readonly modes: readonly Mode[];
178
+ readonly themes: readonly PrismThemeTokens[];
179
+ readonly scales: Record<PrismScaleGroup, readonly PrismScaleToken[]>;
180
+ }
181
+ export interface PrismDocsStore {
182
+ readonly version: string;
183
+ readonly items: readonly PrismDocsStoreEntry[];
184
+ readonly pages: readonly PrismDocsPage[];
185
+ /**
186
+ * One entry per published package that ships a changelog. Required rather than
187
+ * optional: the field is what makes a published breaking change discoverable
188
+ * by an agent, and a store that quietly omitted it would leave the tool that
189
+ * reads it answering for nothing while every other gate stayed green.
190
+ */
191
+ readonly changelogs: readonly PrismChangelog[];
192
+ readonly tokens: PrismTokensProjection;
193
+ }
194
+ /**
195
+ * Narrow an `unknown` JSON payload to a `PrismDocsStore`, or throw with the
196
+ * offending path. This is the only place a `PrismDocsStore` is produced from
197
+ * JSON: nothing is assigned with `as`, and `kind` is never widened to `string`.
198
+ *
199
+ * The order of the fields is the order of the layers that have to have carried
200
+ * the change. `items` before `changelogs`, so a document with a widened `kind`
201
+ * reports the path a reader is more likely to be looking at.
202
+ */
203
+ export declare function parsePrismDocsStore(raw: unknown): PrismDocsStore;
package/dist/store.js ADDED
@@ -0,0 +1,317 @@
1
+ /* -------------------------------------------------------------------------- */
2
+ /* Closed vocabularies */
3
+ /* -------------------------------------------------------------------------- */
4
+ // The runtime list is a projection of the catalogue's type, tied to it at
5
+ // compile time so the two cannot drift.
6
+ export const STORE_KINDS = ['component', 'block', 'page'];
7
+ const _kindsAssert = true;
8
+ void _kindsAssert;
9
+ export const STORE_CATEGORIES = [
10
+ 'Call to action',
11
+ 'Forms and inputs',
12
+ 'Feedback',
13
+ 'Layout',
14
+ 'Data display',
15
+ 'Typography',
16
+ 'Miscellaneous',
17
+ ];
18
+ const _categoriesAssert = true;
19
+ void _categoriesAssert;
20
+ export const STORE_STATUSES = ['stable', 'deprecated'];
21
+ /**
22
+ * The content Sections, in the reading order the site publishes them, and the
23
+ * same order `llms.txt` groups them in.
24
+ *
25
+ * These are the Section *directories*, so the list is the walk the corpus builder
26
+ * takes and the set of directories the site's gate checks. The three catalogue
27
+ * Sections are not here: an Item is a catalogue entry with a `kind`, and its page
28
+ * is emitted from the Catalogue rather than walked out of the content tree, so
29
+ * adding `components` to this list would make the walk look for a directory that
30
+ * is not one.
31
+ *
32
+ * **A Section's route is its directory, and the two were renames.** `docs` is
33
+ * `overview` and `foundations` is `foundation`, which is the rule that a prose
34
+ * Section is one body of knowledge and takes a singular route while a catalogue
35
+ * Section is a collection of many Items and takes a plural one. An agent holding
36
+ * a cached `llms.txt` from before the move still resolves every URL it names,
37
+ * because the site Worker redirects each of these routes permanently, and the
38
+ * corpus is rebuilt per release and points at the new ones. Nothing here is
39
+ * aliased: a page's `section` is the directory it is filed in, which is what
40
+ * `get_page` matches on, and a `Record<StoreSection, string>` over a list that
41
+ * had to be edited in the same commit as the rename is a second list that can be
42
+ * half done.
43
+ */
44
+ export const STORE_SECTIONS = ['overview', 'foundation', 'content', 'changelogs'];
45
+ /**
46
+ * The label each content Section is read under, in every artifact that groups
47
+ * pages by Section.
48
+ *
49
+ * `Record<StoreSection, string>` rather than a separate list, because a Section
50
+ * added to `STORE_SECTIONS` with no label is a compile error here rather than a
51
+ * Section that `llms.txt`, `list_pages` and the Corpus each spell their own way.
52
+ * The keys are the Section directories themselves, so the label cannot be filed
53
+ * under a Section that does not exist.
54
+ *
55
+ * The label is the Section's name rather than its directory, which is the whole
56
+ * point of the pair: the directory is what the tree is called, and the name is
57
+ * what a reader and an agent are told. `llms.txt` groups under these headings and
58
+ * `list_pages` counts them, so a Section renamed without its label renamed here
59
+ * would be advertised under two names in two artifacts.
60
+ */
61
+ export const STORE_SECTION_TITLES = {
62
+ overview: 'Overview',
63
+ foundation: 'Foundation',
64
+ content: 'Content',
65
+ changelogs: 'Changelogs',
66
+ };
67
+ export const STORE_PACKS = ['default', 'blush', 'mint', 'lavender', 'sky', 'peach'];
68
+ export const STORE_MODES = ['light', 'dark'];
69
+ export const STORE_SCALE_GROUPS = [
70
+ 'motion',
71
+ 'typography',
72
+ 'spacing',
73
+ 'shadow',
74
+ 'breakpoint',
75
+ 'container',
76
+ ];
77
+ function isCatalogKind(value) {
78
+ return STORE_KINDS.some((kind) => kind === value);
79
+ }
80
+ function isCategory(value) {
81
+ return STORE_CATEGORIES.some((category) => category === value);
82
+ }
83
+ function isStatus(value) {
84
+ return STORE_STATUSES.some((status) => status === value);
85
+ }
86
+ function isSection(value) {
87
+ return STORE_SECTIONS.some((section) => section === value);
88
+ }
89
+ function isPack(value) {
90
+ return STORE_PACKS.some((pack) => pack === value);
91
+ }
92
+ function isMode(value) {
93
+ return STORE_MODES.some((mode) => mode === value);
94
+ }
95
+ /* -------------------------------------------------------------------------- */
96
+ /* The narrowing guard */
97
+ /* -------------------------------------------------------------------------- */
98
+ function fail(path, detail) {
99
+ throw new Error(`prism-llms: data.json ${path} ${detail}`);
100
+ }
101
+ function isRecord(value) {
102
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
103
+ }
104
+ function asString(value, path) {
105
+ if (typeof value !== 'string')
106
+ fail(path, `is not a string`);
107
+ return value;
108
+ }
109
+ function asOptionalString(value, path) {
110
+ if (value === undefined)
111
+ return undefined;
112
+ return asString(value, path);
113
+ }
114
+ function asRecord(value, path) {
115
+ if (!isRecord(value))
116
+ fail(path, `is not an object`);
117
+ return value;
118
+ }
119
+ function asList(value, path) {
120
+ if (!Array.isArray(value))
121
+ fail(path, `is not an array`);
122
+ return value;
123
+ }
124
+ function asStringList(value, path) {
125
+ return asList(value, path).map((entry, index) => asString(entry, `${path}[${index}]`));
126
+ }
127
+ function asKind(value, path) {
128
+ if (!isCatalogKind(value)) {
129
+ fail(path, `= ${JSON.stringify(value)} is not a CatalogKind`);
130
+ }
131
+ return value;
132
+ }
133
+ function parseCategory(value, path) {
134
+ if (value === null)
135
+ return null;
136
+ if (!isCategory(value)) {
137
+ fail(path, `= ${JSON.stringify(value)} is not a ComponentCategory or null`);
138
+ }
139
+ return value;
140
+ }
141
+ function parseStatus(value, path) {
142
+ if (!isStatus(value))
143
+ fail(path, `= ${JSON.stringify(value)} is not a status`);
144
+ return value;
145
+ }
146
+ function parseSection(value, path) {
147
+ if (!isSection(value))
148
+ fail(path, `= ${JSON.stringify(value)} is not a section`);
149
+ return value;
150
+ }
151
+ function parseExample(value, path) {
152
+ if (value === undefined)
153
+ return undefined;
154
+ const record = asRecord(value, path);
155
+ return {
156
+ title: asString(record['title'], `${path}.title`),
157
+ code: asString(record['code'], `${path}.code`),
158
+ };
159
+ }
160
+ function parseReferences(value, path) {
161
+ const record = asRecord(value, path);
162
+ return {
163
+ blocks: asStringList(record['blocks'], `${path}.blocks`),
164
+ pages: asStringList(record['pages'], `${path}.pages`),
165
+ };
166
+ }
167
+ function parseItem(value, path) {
168
+ const record = asRecord(value, path);
169
+ const kind = asKind(record['kind'], `${path}.kind`);
170
+ const props = asOptionalString(record['props'], `${path}.props`);
171
+ const composition = asOptionalString(record['composition'], `${path}.composition`);
172
+ const example = parseExample(record['example'], `${path}.example`);
173
+ return {
174
+ id: asString(record['id'], `${path}.id`),
175
+ slug: asString(record['slug'], `${path}.slug`),
176
+ kind,
177
+ name: asString(record['name'], `${path}.name`),
178
+ category: parseCategory(record['category'], `${path}.category`),
179
+ status: parseStatus(record['status'], `${path}.status`),
180
+ description: asString(record['description'], `${path}.description`),
181
+ url: asString(record['url'], `${path}.url`),
182
+ mirror: asString(record['mirror'], `${path}.mirror`),
183
+ source: asString(record['source'], `${path}.source`),
184
+ exports: asStringList(record['exports'], `${path}.exports`),
185
+ importLine: asString(record['importLine'], `${path}.importLine`),
186
+ doc: asString(record['doc'], `${path}.doc`),
187
+ ...(props !== undefined ? { props } : {}),
188
+ ...(composition !== undefined ? { composition } : {}),
189
+ ...(example !== undefined ? { example } : {}),
190
+ references: parseReferences(record['references'], `${path}.references`),
191
+ };
192
+ }
193
+ function parsePage(value, path) {
194
+ const record = asRecord(value, path);
195
+ return {
196
+ id: asString(record['id'], `${path}.id`),
197
+ slug: asString(record['slug'], `${path}.slug`),
198
+ section: parseSection(record['section'], `${path}.section`),
199
+ title: asString(record['title'], `${path}.title`),
200
+ description: asString(record['description'], `${path}.description`),
201
+ url: asString(record['url'], `${path}.url`),
202
+ markdown: asString(record['markdown'], `${path}.markdown`),
203
+ mirror: asString(record['mirror'], `${path}.mirror`),
204
+ };
205
+ }
206
+ function parseChangelogRelease(value, path) {
207
+ const record = asRecord(value, path);
208
+ return {
209
+ version: asString(record['version'], `${path}.version`),
210
+ body: asString(record['body'], `${path}.body`),
211
+ };
212
+ }
213
+ function parseChangelog(value, path) {
214
+ const record = asRecord(value, path);
215
+ const releases = asList(record['releases'], `${path}.releases`).map((entry, index) => parseChangelogRelease(entry, `${path}.releases[${index}]`));
216
+ const versions = asStringList(record['versions'], `${path}.versions`);
217
+ // The version list and the entries are two views of one reading, so a store
218
+ // that carried them out of step would answer `get_changelog` with a version
219
+ // the tool cannot hand back. It is checked here rather than at the call site,
220
+ // because the call site is the only place that would not notice.
221
+ const fromReleases = releases.map((release) => release.version);
222
+ if (versions.join('\n') !== fromReleases.join('\n')) {
223
+ fail(`${path}.versions`, `= ${JSON.stringify(versions)} is not the version list its own entries record, ` +
224
+ `which is ${JSON.stringify(fromReleases)}`);
225
+ }
226
+ return {
227
+ package: asString(record['package'], `${path}.package`),
228
+ slug: asString(record['slug'], `${path}.slug`),
229
+ route: asString(record['route'], `${path}.route`),
230
+ title: asString(record['title'], `${path}.title`),
231
+ versions,
232
+ releases,
233
+ text: asString(record['text'], `${path}.text`),
234
+ };
235
+ }
236
+ function parseSemantic(value, path) {
237
+ const record = asRecord(value, path);
238
+ return {
239
+ token: asString(record['token'], `${path}.token`),
240
+ value: asString(record['value'], `${path}.value`),
241
+ };
242
+ }
243
+ function parseScaleToken(value, path) {
244
+ const record = asRecord(value, path);
245
+ const binding = asOptionalString(record['binding'], `${path}.binding`);
246
+ return {
247
+ token: asString(record['token'], `${path}.token`),
248
+ value: asString(record['value'], `${path}.value`),
249
+ ...(binding !== undefined ? { binding } : {}),
250
+ };
251
+ }
252
+ function parseScaleTokens(value, path) {
253
+ return asList(value, path).map((entry, index) => parseScaleToken(entry, `${path}[${index}]`));
254
+ }
255
+ function parseTheme(value, path) {
256
+ const record = asRecord(value, path);
257
+ const pack = asString(record['pack'], `${path}.pack`);
258
+ const mode = asString(record['mode'], `${path}.mode`);
259
+ if (!isPack(pack))
260
+ fail(`${path}.pack`, `= ${JSON.stringify(pack)} is not a PackId`);
261
+ if (!isMode(mode))
262
+ fail(`${path}.mode`, `= ${JSON.stringify(mode)} is not a Mode`);
263
+ return {
264
+ pack,
265
+ mode,
266
+ semantic: asList(record['semantic'], `${path}.semantic`).map((entry, index) => parseSemantic(entry, `${path}.semantic[${index}]`)),
267
+ };
268
+ }
269
+ function parsePack(value, path) {
270
+ const pack = asString(value, path);
271
+ if (!isPack(pack))
272
+ fail(path, `= ${JSON.stringify(pack)} is not a PackId`);
273
+ return pack;
274
+ }
275
+ function parseMode(value, path) {
276
+ const mode = asString(value, path);
277
+ if (!isMode(mode))
278
+ fail(path, `= ${JSON.stringify(mode)} is not a Mode`);
279
+ return mode;
280
+ }
281
+ function parseTokens(value, path) {
282
+ const record = asRecord(value, path);
283
+ const scalesRecord = asRecord(record['scales'], `${path}.scales`);
284
+ const scales = {
285
+ motion: parseScaleTokens(scalesRecord['motion'], `${path}.scales.motion`),
286
+ typography: parseScaleTokens(scalesRecord['typography'], `${path}.scales.typography`),
287
+ spacing: parseScaleTokens(scalesRecord['spacing'], `${path}.scales.spacing`),
288
+ shadow: parseScaleTokens(scalesRecord['shadow'], `${path}.scales.shadow`),
289
+ breakpoint: parseScaleTokens(scalesRecord['breakpoint'], `${path}.scales.breakpoint`),
290
+ container: parseScaleTokens(scalesRecord['container'], `${path}.scales.container`),
291
+ };
292
+ return {
293
+ packs: asList(record['packs'], `${path}.packs`).map((entry, index) => parsePack(entry, `${path}.packs[${index}]`)),
294
+ modes: asList(record['modes'], `${path}.modes`).map((entry, index) => parseMode(entry, `${path}.modes[${index}]`)),
295
+ themes: asList(record['themes'], `${path}.themes`).map((entry, index) => parseTheme(entry, `${path}.themes[${index}]`)),
296
+ scales,
297
+ };
298
+ }
299
+ /**
300
+ * Narrow an `unknown` JSON payload to a `PrismDocsStore`, or throw with the
301
+ * offending path. This is the only place a `PrismDocsStore` is produced from
302
+ * JSON: nothing is assigned with `as`, and `kind` is never widened to `string`.
303
+ *
304
+ * The order of the fields is the order of the layers that have to have carried
305
+ * the change. `items` before `changelogs`, so a document with a widened `kind`
306
+ * reports the path a reader is more likely to be looking at.
307
+ */
308
+ export function parsePrismDocsStore(raw) {
309
+ const root = asRecord(raw, 'root');
310
+ return {
311
+ version: asString(root['version'], 'version'),
312
+ items: asList(root['items'], 'items').map((entry, index) => parseItem(entry, `items[${index}]`)),
313
+ pages: asList(root['pages'], 'pages').map((entry, index) => parsePage(entry, `pages[${index}]`)),
314
+ changelogs: asList(root['changelogs'], 'changelogs').map((entry, index) => parseChangelog(entry, `changelogs[${index}]`)),
315
+ tokens: parseTokens(root['tokens'], 'tokens'),
316
+ };
317
+ }
package/package.json CHANGED
@@ -1,48 +1,51 @@
1
1
  {
2
2
  "name": "@nanisoft/prism-llms",
3
- "version": "0.4.0",
4
- "description": "Prism's LLM surface — generated llms.txt, per-item Markdown, and the PrismDocsStore projection. Data-only; one dist/ serves npm, the site, and the MCP server.",
5
- "license": "MIT",
3
+ "version": "0.5.1",
6
4
  "type": "module",
7
- "engines": {
8
- "node": ">=22"
5
+ "description": "Prism's agent-facing corpus: llms.txt, the Markdown mirror, prism-skill.md and the PrismDocsStore projection. One build-fresh dist/ serves npm, the site and the MCP server.",
6
+ "license": "MIT",
7
+ "author": "NaniSoft",
8
+ "homepage": "https://prism.nanisoft.com",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/NaniSoft/prism.git",
12
+ "directory": "packages/llms"
9
13
  },
14
+ "sideEffects": false,
10
15
  "exports": {
11
16
  ".": {
12
17
  "types": "./dist/index.d.ts",
13
- "import": "./dist/index.js"
18
+ "default": "./dist/index.js"
14
19
  },
15
20
  "./extractor": {
16
21
  "types": "./dist/extractor.d.ts",
17
- "import": "./dist/extractor.js"
22
+ "default": "./dist/extractor.js"
18
23
  },
19
24
  "./data.json": "./dist/data.json",
20
25
  "./package.json": "./package.json"
21
26
  },
22
27
  "files": [
23
- "dist"
28
+ "dist",
29
+ "THIRD-PARTY-NOTICES.md"
24
30
  ],
25
- "devDependencies": {
26
- "@types/node": "^26.5.1",
27
- "publint": "^0.3.24",
28
- "typescript": "^7.0.2",
29
- "vitest": "^5.0.0",
30
- "@nanisoft/prism-mcp-server": "0.3.0",
31
- "@nanisoft/prism-tokens": "0.3.0",
32
- "@nanisoft/prism-ui": "0.4.0"
31
+ "engines": {
32
+ "node": ">=22.14.0"
33
33
  },
34
- "author": "NaniSoft",
35
- "homepage": "https://prism.nanisoft.com",
36
- "repository": {
37
- "type": "git",
38
- "url": "git+https://github.com/NaniSoft/prism.git",
39
- "directory": "packages/llms"
34
+ "publishConfig": {
35
+ "access": "public"
36
+ },
37
+ "devDependencies": {
38
+ "@types/node": "^22.0.0",
39
+ "typescript": "^5.7.0",
40
+ "vitest": "^3.2.4",
41
+ "@nanisoft/prism-tokens": "0.6.0",
42
+ "@nanisoft/prism-ui": "0.7.0"
40
43
  },
41
44
  "scripts": {
42
- "build": "tsc -p tsconfig.json && node scripts/build.mjs",
45
+ "build": "node scripts/build.mjs",
43
46
  "check": "node scripts/check.mjs",
44
- "generate-content": "node scripts/generate-content.mjs",
45
- "lint": "oxlint .",
46
- "test": "vitest run"
47
+ "pretest": "pnpm build",
48
+ "test": "vitest run",
49
+ "typecheck": "tsc -p tsconfig.json"
47
50
  }
48
51
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"demo-graph.d.ts","sourceRoot":"","sources":["../src/demo-graph.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAKD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE,CAmBlE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAazD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"demo-graph.js","sourceRoot":"","sources":["../src/demo-graph.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,+EAA+E;AAC/E,MAAM,eAAe,GAAG,CAAE,mCAAmC,EAAE,SAAS,CAAE,CAAC;AAE3E;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,MAAM,UAAU,GAAoB,EAAE,CAAC;IACvC,MAAM,aAAa,GAAG,kEAAkE,CAAC;IACzF,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACrD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAAE,SAAS;QACzE,UAAU,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,EAAE;YACR,MAAM,EACJ,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC;gBACvB,CAAC,CAAC,oBAAoB,SAAS,kCAAkC;gBACjE,CAAC,CAAC,gBAAgB,SAAS,+DAA+D;SAC/F,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACrC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,qEAAqE,EAAE,CAAC,CAAC;IAC/G,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,MAAM,aAAa,GAAG,yFAAyF,CAAC;IAChH,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACrD,KAAK,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;gBAAE,SAAS;YACtD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YAClD,IAAI,IAAI;gBAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AAC3B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../src/extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,iDAAiD;IACjD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,8CAA8C;IAC9C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,0EAA0E;IAC1E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;CAC1C;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAgBjE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"extractor.js","sourceRoot":"","sources":["../src/extractor.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,QAAQ,EACR,KAAK,EACL,oBAAoB,EACpB,iBAAiB,EACjB,WAAW,EACX,kBAAkB,EAClB,KAAK,OAAO,EACZ,KAAK,SAAS,GACf,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,QAAQ,EACR,KAAK,EACL,oBAAoB,EACpB,iBAAiB,EACjB,WAAW,EACX,kBAAkB,GAGnB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAsB,MAAM,iBAAiB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../src/markdown.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,+EAA+E;AAC/E,MAAM,WAAW,OAAO;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,iGAAiG;AACjG,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAc/C;AAED,kDAAkD;AAClD,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GAAG,MAAM,CA4BvG;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CActD;AAED,qEAAqE;AACrE,wBAAgB,WAAW,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,CAMpG;AAID;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,SAAS,kBAAkB,EAAE,GAAG,MAAM,CAgBpF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../src/markdown.ts"],"names":[],"mappings":"AAmBA,iGAAiG;AACjG,MAAM,UAAU,QAAQ,CAAC,GAAW;IAClC,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAC3E,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC7C,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IACxD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACzC,MAAM,IAAI,GAAY,EAAE,CAAC;IACzB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAC3D,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,aAAa;YAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACjF,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;AACzE,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,KAAK,CAAC,IAAY,EAAE,QAAgB;IAClD,OAAO,SAAS,QAAQ,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC;AACxF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY,EAAE,QAA4C;IAC7F,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,OAAO,GAAG,CAAC,OAAO,CAAC;YACnB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACf,SAAS;QACX,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACZ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACf,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,sCAAsC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACf,SAAS;QACX,CAAC;QACD,MAAM,EAAE,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1F,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC1B,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,EAAE,GAAG,CAAC,CAAC;QAC/F,MAAM,KAAK,GAAG,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClE,IAAI,KAAK;YAAE,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;QACpC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3D,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,GAAG,CAAC,OAAO,CAAC;QAC7C,IAAI,CAAC,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS;QACpD,IAAI,CAAC,OAAO,IAAI,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS;QACnE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,IAAI;SACR,IAAI,CAAC,IAAI,CAAC;SACV,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;SAC1B,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;SACnB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACzB,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,WAAW,CAAC,OAA0B,EAAE,IAAoC;IAC1F,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACxF,MAAM,IAAI,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACtD,MAAM,IAAI,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,mBAAmB,GAAG,uDAAuD,CAAC;AAEpF;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAyC;IAC1E,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACvE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,eAAe,mBAAmB,EAAE,CAAC;IAExE,MAAM,KAAK,GAAa,CAAC,UAAU,CAAC,CAAC;IACrC,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9D,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACrC,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE;YACvD,IAAI,CAAC,QAAQ;YACb,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,GAAG;YACpD,IAAI,CAAC,WAAW,IAAI,GAAG;SACxB,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC"}