@wix/web5-core 1.63.11 → 1.63.12

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.
@@ -6,7 +6,6 @@ exports.CalloutSectionDefinition = void 0;
6
6
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
7
  var _parseUtils = require("./parse-utils");
8
8
  var _parts = require("../../parts/parts");
9
- var _callout = require("../../types/callout");
10
9
  var _sectionDefinition = require("../section-definition");
11
10
  /**
12
11
  * Callout — the page's dialog layer, written by the orchestrator itself rather
@@ -148,16 +147,22 @@ class CalloutSectionDefinition {
148
147
  /**
149
148
  * `semantic:tip` → `{ kind: 'TIP' }`. Uppercased so the new form lands on the
150
149
  * same vocabulary the legacy `[!TIP]` marker produced, which is what any
151
- * kind-aware renderer already switches on. An unrecognised value carries no
152
- * kind rather than an invented one.
150
+ * kind-aware renderer already switches on.
151
+ *
152
+ * Deliberately NOT validated against a list. The prompts own this vocabulary,
153
+ * and they live in the prompt catalog precisely so it can change without
154
+ * shipping code — an allowlist here would mean every new semantic needs a
155
+ * release before it resolves, which is backwards. Nothing gates on `kind`
156
+ * either: it is metadata for a renderer that wants to vary by it, and the one
157
+ * renderer that does falls back when it sees a value it doesn't know.
158
+ *
159
+ * `CALLOUT_SEMANTICS` therefore documents what the prompts emit today; it is
160
+ * not a filter.
153
161
  */
154
162
  exports.CalloutSectionDefinition = CalloutSectionDefinition;
155
163
  function semanticToKind(semantic) {
156
- const value = semantic == null ? void 0 : semantic.trim().toLowerCase();
157
- if (!value) {
158
- return undefined;
159
- }
160
- return _callout.CALLOUT_SEMANTICS.includes(value) ? {
164
+ const value = semantic == null ? void 0 : semantic.trim();
165
+ return value ? {
161
166
  kind: value.toUpperCase()
162
167
  } : undefined;
163
168
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_parseUtils","require","_parts","_callout","_sectionDefinition","CalloutSectionDefinition","constructor","_defineProperty2","default","callouts","text","markdown","expected","kind","parse","parts","calloutParts","getPartsByType","length","parseBlockquote","parseProse","_parts$find","descriptor","find","p","type","meta","section","inlinePartsToMarkdown","filter","trim","DROP_SECTION","semanticToKind","semantic","relatedLinks","seenUrls","Set","c","_c$meta","_c$content","content","parsed","parseCalloutTag","push","link","getLinks","_link$meta","_link$content","href","has","add","url","undefined","exports","value","toLowerCase","CALLOUT_SEMANTICS","includes","toUpperCase"],"sources":["../../../../src/component/componentDefinitions/CalloutSectionDefinition.ts"],"sourcesContent":["import { inlinePartsToMarkdown, parseCalloutTag } from './parse-utils';\nimport { getPartsByType, getLinks, type Part } from '../../parts/parts';\nimport { CALLOUT_SEMANTICS, type Callout } from '../../types/callout';\nimport type {\n CalloutCompProps,\n CalloutSectionComponent,\n SectionFixture,\n} from '../types';\nimport {\n DROP_SECTION,\n type DropSection,\n type SectionDefinition,\n} from '../section-definition';\n\n/**\n * Callout — the page's dialog layer, written by the orchestrator itself rather\n * than by a per-section model.\n *\n * Two markdown forms reach this definition, and both must keep working:\n *\n * 1. **Descriptor + plain prose** (current). `semantic` carries the kind:\n *\n * <!-- section:callout, semantic:tip -->\n * Prefer a gentle daily ritual? The 4 oz size is the one to sample with.\n *\n * 2. **GFM alert blockquote** (legacy). Still emitted by sites pinned to an\n * older prompt, and present in every historical page, so it is parsed\n * verbatim rather than migrated:\n *\n * <!-- section:callout -->\n * > [!TIP] Prefer a gentle daily ritual? …\n *\n * The two forms differ in one way that matters. A blockquote collapses to a\n * single `callout` part carrying the whole line in `meta.markdown`, so inline\n * ask links survive for free and `getLinks` finds nothing to harvest. A\n * paragraph is *unwrapped* into its inline children (`markdownBlocks.ts`), so\n * prose with a link arrives as `t + link + t` — separate parts. Reading only\n * the `t` parts would delete the link's url and label (DL #134's list bug) and\n * `getLinks` would then re-surface it as a footer link, showing the visitor the\n * same link twice. `inlinePartsToMarkdown` is what keeps the link inline, and\n * the prose path deliberately harvests no `relatedLinks` at all.\n */\nexport class CalloutSectionDefinition\n implements SectionDefinition<CalloutSectionComponent>\n{\n sectionType = 'callout' as const;\n patterns = [\n // Descriptor-led prose. `link` must be in the alternation or a callout\n // carrying an ask link fails to match and falls through to the fallback.\n 'html_comment[section=\"callout\"] > (t | link)+',\n // Legacy blockquote.\n 'html_comment? > callout+',\n ];\n\n defaults: CalloutCompProps = {\n callouts: [{ text: 'This is a callout.' }],\n };\n\n fixtures: SectionFixture<CalloutCompProps>[] = [\n {\n markdown:\n '<!-- section:callout, semantic:tip -->\\nThis is a callout paragraph.',\n expected: {\n callouts: [{ text: 'This is a callout paragraph.', kind: 'TIP' }],\n },\n },\n {\n markdown: '> This is a callout blockquote.',\n expected: {\n callouts: [{ text: 'This is a callout blockquote.' }],\n },\n },\n ];\n\n parse(parts: Part[]): CalloutCompProps | null | DropSection {\n const calloutParts = getPartsByType<Part>(parts, 'callout');\n\n return calloutParts.length > 0\n ? this.parseBlockquote(calloutParts, parts)\n : this.parseProse(parts);\n }\n\n /**\n * Descriptor + plain prose. The kind comes from the descriptor's `semantic`,\n * and every link in the body is inline prose — never a `relatedLinks` footer.\n */\n private parseProse(parts: Part[]): CalloutCompProps | null | DropSection {\n const descriptor = parts.find((p) => p.type === 'htmlComment' && p.meta)\n ?.meta as Record<string, string> | undefined;\n\n // The pattern already gates on this; re-checking keeps a direct\n // `parse()` call (and any future pattern edit) from mislabelling a\n // different section's prose as a callout.\n if (descriptor?.section !== 'callout') {\n return null;\n }\n\n const text = inlinePartsToMarkdown(\n parts.filter((p) => p.type !== 'htmlComment'),\n ).trim();\n\n // Matched, but there is nothing to say. DROP_SECTION consumes the nodes\n // and renders nothing; returning null would hand the descriptor to the\n // fallback, which renders it as stray text.\n if (!text) {\n return DROP_SECTION;\n }\n\n return {\n callouts: [{ text, ...(semanticToKind(descriptor.semantic) ?? {}) }],\n };\n }\n\n /** Legacy GFM alert blockquote. */\n private parseBlockquote(\n calloutParts: Part[],\n parts: Part[],\n ): CalloutCompProps | null | DropSection {\n const callouts: Callout[] = [];\n const relatedLinks: { text: string; url: string }[] = [];\n const seenUrls = new Set<string>();\n\n for (const c of calloutParts) {\n const text = (c.meta?.markdown as string)?.trim() || c.content?.trim();\n if (text) {\n const parsed = parseCalloutTag(text);\n if (parsed.text) {\n callouts.push({ text: parsed.text, kind: parsed.kind });\n }\n }\n }\n\n if (callouts.length === 0) {\n return DROP_SECTION;\n }\n\n // A blockquote yields no sibling link parts, so anything found here arrived\n // alongside the quote and is a genuine footer link.\n for (const link of getLinks(parts)) {\n const href = link.meta?.href;\n const text = link.content?.trim();\n if (text && href && !seenUrls.has(href)) {\n seenUrls.add(href);\n relatedLinks.push({ text, url: href });\n }\n }\n\n return {\n callouts,\n relatedLinks: relatedLinks.length > 0 ? relatedLinks : undefined,\n };\n }\n}\n\n/**\n * `semantic:tip` → `{ kind: 'TIP' }`. Uppercased so the new form lands on the\n * same vocabulary the legacy `[!TIP]` marker produced, which is what any\n * kind-aware renderer already switches on. An unrecognised value carries no\n * kind rather than an invented one.\n */\nfunction semanticToKind(semantic?: string): { kind: string } | undefined {\n const value = semantic?.trim().toLowerCase();\n if (!value) {\n return undefined;\n }\n return (CALLOUT_SEMANTICS as readonly string[]).includes(value)\n ? { kind: value.toUpperCase() }\n : undefined;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_parseUtils","require","_parts","_sectionDefinition","CalloutSectionDefinition","constructor","_defineProperty2","default","callouts","text","markdown","expected","kind","parse","parts","calloutParts","getPartsByType","length","parseBlockquote","parseProse","_parts$find","descriptor","find","p","type","meta","section","inlinePartsToMarkdown","filter","trim","DROP_SECTION","semanticToKind","semantic","relatedLinks","seenUrls","Set","c","_c$meta","_c$content","content","parsed","parseCalloutTag","push","link","getLinks","_link$meta","_link$content","href","has","add","url","undefined","exports","value","toUpperCase"],"sources":["../../../../src/component/componentDefinitions/CalloutSectionDefinition.ts"],"sourcesContent":["import { inlinePartsToMarkdown, parseCalloutTag } from './parse-utils';\nimport { getPartsByType, getLinks, type Part } from '../../parts/parts';\nimport type { Callout } from '../../types/callout';\nimport type {\n CalloutCompProps,\n CalloutSectionComponent,\n SectionFixture,\n} from '../types';\nimport {\n DROP_SECTION,\n type DropSection,\n type SectionDefinition,\n} from '../section-definition';\n\n/**\n * Callout — the page's dialog layer, written by the orchestrator itself rather\n * than by a per-section model.\n *\n * Two markdown forms reach this definition, and both must keep working:\n *\n * 1. **Descriptor + plain prose** (current). `semantic` carries the kind:\n *\n * <!-- section:callout, semantic:tip -->\n * Prefer a gentle daily ritual? The 4 oz size is the one to sample with.\n *\n * 2. **GFM alert blockquote** (legacy). Still emitted by sites pinned to an\n * older prompt, and present in every historical page, so it is parsed\n * verbatim rather than migrated:\n *\n * <!-- section:callout -->\n * > [!TIP] Prefer a gentle daily ritual? …\n *\n * The two forms differ in one way that matters. A blockquote collapses to a\n * single `callout` part carrying the whole line in `meta.markdown`, so inline\n * ask links survive for free and `getLinks` finds nothing to harvest. A\n * paragraph is *unwrapped* into its inline children (`markdownBlocks.ts`), so\n * prose with a link arrives as `t + link + t` — separate parts. Reading only\n * the `t` parts would delete the link's url and label (DL #134's list bug) and\n * `getLinks` would then re-surface it as a footer link, showing the visitor the\n * same link twice. `inlinePartsToMarkdown` is what keeps the link inline, and\n * the prose path deliberately harvests no `relatedLinks` at all.\n */\nexport class CalloutSectionDefinition\n implements SectionDefinition<CalloutSectionComponent>\n{\n sectionType = 'callout' as const;\n patterns = [\n // Descriptor-led prose. `link` must be in the alternation or a callout\n // carrying an ask link fails to match and falls through to the fallback.\n 'html_comment[section=\"callout\"] > (t | link)+',\n // Legacy blockquote.\n 'html_comment? > callout+',\n ];\n\n defaults: CalloutCompProps = {\n callouts: [{ text: 'This is a callout.' }],\n };\n\n fixtures: SectionFixture<CalloutCompProps>[] = [\n {\n markdown:\n '<!-- section:callout, semantic:tip -->\\nThis is a callout paragraph.',\n expected: {\n callouts: [{ text: 'This is a callout paragraph.', kind: 'TIP' }],\n },\n },\n {\n markdown: '> This is a callout blockquote.',\n expected: {\n callouts: [{ text: 'This is a callout blockquote.' }],\n },\n },\n ];\n\n parse(parts: Part[]): CalloutCompProps | null | DropSection {\n const calloutParts = getPartsByType<Part>(parts, 'callout');\n\n return calloutParts.length > 0\n ? this.parseBlockquote(calloutParts, parts)\n : this.parseProse(parts);\n }\n\n /**\n * Descriptor + plain prose. The kind comes from the descriptor's `semantic`,\n * and every link in the body is inline prose — never a `relatedLinks` footer.\n */\n private parseProse(parts: Part[]): CalloutCompProps | null | DropSection {\n const descriptor = parts.find((p) => p.type === 'htmlComment' && p.meta)\n ?.meta as Record<string, string> | undefined;\n\n // The pattern already gates on this; re-checking keeps a direct\n // `parse()` call (and any future pattern edit) from mislabelling a\n // different section's prose as a callout.\n if (descriptor?.section !== 'callout') {\n return null;\n }\n\n const text = inlinePartsToMarkdown(\n parts.filter((p) => p.type !== 'htmlComment'),\n ).trim();\n\n // Matched, but there is nothing to say. DROP_SECTION consumes the nodes\n // and renders nothing; returning null would hand the descriptor to the\n // fallback, which renders it as stray text.\n if (!text) {\n return DROP_SECTION;\n }\n\n return {\n callouts: [{ text, ...(semanticToKind(descriptor.semantic) ?? {}) }],\n };\n }\n\n /** Legacy GFM alert blockquote. */\n private parseBlockquote(\n calloutParts: Part[],\n parts: Part[],\n ): CalloutCompProps | null | DropSection {\n const callouts: Callout[] = [];\n const relatedLinks: { text: string; url: string }[] = [];\n const seenUrls = new Set<string>();\n\n for (const c of calloutParts) {\n const text = (c.meta?.markdown as string)?.trim() || c.content?.trim();\n if (text) {\n const parsed = parseCalloutTag(text);\n if (parsed.text) {\n callouts.push({ text: parsed.text, kind: parsed.kind });\n }\n }\n }\n\n if (callouts.length === 0) {\n return DROP_SECTION;\n }\n\n // A blockquote yields no sibling link parts, so anything found here arrived\n // alongside the quote and is a genuine footer link.\n for (const link of getLinks(parts)) {\n const href = link.meta?.href;\n const text = link.content?.trim();\n if (text && href && !seenUrls.has(href)) {\n seenUrls.add(href);\n relatedLinks.push({ text, url: href });\n }\n }\n\n return {\n callouts,\n relatedLinks: relatedLinks.length > 0 ? relatedLinks : undefined,\n };\n }\n}\n\n/**\n * `semantic:tip` → `{ kind: 'TIP' }`. Uppercased so the new form lands on the\n * same vocabulary the legacy `[!TIP]` marker produced, which is what any\n * kind-aware renderer already switches on.\n *\n * Deliberately NOT validated against a list. The prompts own this vocabulary,\n * and they live in the prompt catalog precisely so it can change without\n * shipping code — an allowlist here would mean every new semantic needs a\n * release before it resolves, which is backwards. Nothing gates on `kind`\n * either: it is metadata for a renderer that wants to vary by it, and the one\n * renderer that does falls back when it sees a value it doesn't know.\n *\n * `CALLOUT_SEMANTICS` therefore documents what the prompts emit today; it is\n * not a filter.\n */\nfunction semanticToKind(semantic?: string): { kind: string } | undefined {\n const value = semantic?.trim();\n return value ? { kind: value.toUpperCase() } : undefined;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -11,6 +11,16 @@ const CALLOUT_KINDS = exports.CALLOUT_KINDS = ['NOTE', 'TIP', 'IMPORTANT', 'WARN
11
11
  * the legacy `> [!TYPE]` blockquote marker and has to keep every value it ever
12
12
  * accepted, because historical pages and sites pinned to an older prompt still
13
13
  * carry them. This list is what the current prompts are allowed to emit.
14
+ *
15
+ * **Documentation, not a filter.** Nothing validates against this list: the
16
+ * prompts own the vocabulary and live in the prompt catalog so it can change
17
+ * without a release. Adding a semantic here is a docs change, not a gate.
18
+ *
19
+ * `clarification` is the one whose meaning is load-bearing rather than
20
+ * cosmetic: the prompts define it as a callout that offers the visitor a branch,
21
+ * and therefore one that carries at least one `web5://ask/` link. Naming the
22
+ * intent in the descriptor is what makes that obligation checkable — a callout
23
+ * labelled `clarification` with nothing linked is wrong output.
14
24
  */
15
- const CALLOUT_SEMANTICS = exports.CALLOUT_SEMANTICS = ['note', 'tip'];
25
+ const CALLOUT_SEMANTICS = exports.CALLOUT_SEMANTICS = ['note', 'tip', 'clarification'];
16
26
  //# sourceMappingURL=callout.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["CALLOUT_KINDS","exports","CALLOUT_SEMANTICS"],"sources":["../../../src/types/callout.ts"],"sourcesContent":["export const CALLOUT_KINDS = [\n 'NOTE',\n 'TIP',\n 'IMPORTANT',\n 'WARNING',\n 'CAUTION',\n 'ECHO',\n] as const;\n\nexport type CalloutKind = (typeof CALLOUT_KINDS)[number];\n\n/**\n * The kinds a callout descriptor may declare as `semantic:`, lowercase, as the\n * orchestrator writes them: `<!-- section:callout, semantic:tip -->`.\n *\n * Deliberately narrower than `CALLOUT_KINDS`. That list is the vocabulary of\n * the legacy `> [!TYPE]` blockquote marker and has to keep every value it ever\n * accepted, because historical pages and sites pinned to an older prompt still\n * carry them. This list is what the current prompts are allowed to emit.\n */\nexport const CALLOUT_SEMANTICS = ['note', 'tip'] as const;\n\nexport type CalloutSemantic = (typeof CALLOUT_SEMANTICS)[number];\n\nexport interface Callout {\n text: string;\n kind?: string;\n}\n"],"mappings":";;;;AAAO,MAAMA,aAAa,GAAAC,OAAA,CAAAD,aAAA,GAAG,CAC3B,MAAM,EACN,KAAK,EACL,WAAW,EACX,SAAS,EACT,SAAS,EACT,MAAM,CACE;AAIV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAME,iBAAiB,GAAAD,OAAA,CAAAC,iBAAA,GAAG,CAAC,MAAM,EAAE,KAAK,CAAU","ignoreList":[]}
1
+ {"version":3,"names":["CALLOUT_KINDS","exports","CALLOUT_SEMANTICS"],"sources":["../../../src/types/callout.ts"],"sourcesContent":["export const CALLOUT_KINDS = [\n 'NOTE',\n 'TIP',\n 'IMPORTANT',\n 'WARNING',\n 'CAUTION',\n 'ECHO',\n] as const;\n\nexport type CalloutKind = (typeof CALLOUT_KINDS)[number];\n\n/**\n * The kinds a callout descriptor may declare as `semantic:`, lowercase, as the\n * orchestrator writes them: `<!-- section:callout, semantic:tip -->`.\n *\n * Deliberately narrower than `CALLOUT_KINDS`. That list is the vocabulary of\n * the legacy `> [!TYPE]` blockquote marker and has to keep every value it ever\n * accepted, because historical pages and sites pinned to an older prompt still\n * carry them. This list is what the current prompts are allowed to emit.\n *\n * **Documentation, not a filter.** Nothing validates against this list: the\n * prompts own the vocabulary and live in the prompt catalog so it can change\n * without a release. Adding a semantic here is a docs change, not a gate.\n *\n * `clarification` is the one whose meaning is load-bearing rather than\n * cosmetic: the prompts define it as a callout that offers the visitor a branch,\n * and therefore one that carries at least one `web5://ask/` link. Naming the\n * intent in the descriptor is what makes that obligation checkable — a callout\n * labelled `clarification` with nothing linked is wrong output.\n */\nexport const CALLOUT_SEMANTICS = ['note', 'tip', 'clarification'] as const;\n\nexport type CalloutSemantic = (typeof CALLOUT_SEMANTICS)[number];\n\nexport interface Callout {\n text: string;\n kind?: string;\n}\n"],"mappings":";;;;AAAO,MAAMA,aAAa,GAAAC,OAAA,CAAAD,aAAA,GAAG,CAC3B,MAAM,EACN,KAAK,EACL,WAAW,EACX,SAAS,EACT,SAAS,EACT,MAAM,CACE;AAIV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAME,iBAAiB,GAAAD,OAAA,CAAAC,iBAAA,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,eAAe,CAAU","ignoreList":[]}
@@ -1,7 +1,6 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import { inlinePartsToMarkdown, parseCalloutTag } from './parse-utils.js';
3
3
  import { getPartsByType, getLinks } from '../../parts/parts.js';
4
- import { CALLOUT_SEMANTICS } from '../../types/callout.js';
5
4
  import { DROP_SECTION } from '../section-definition.js';
6
5
 
7
6
  /**
@@ -144,15 +143,21 @@ export class CalloutSectionDefinition {
144
143
  /**
145
144
  * `semantic:tip` → `{ kind: 'TIP' }`. Uppercased so the new form lands on the
146
145
  * same vocabulary the legacy `[!TIP]` marker produced, which is what any
147
- * kind-aware renderer already switches on. An unrecognised value carries no
148
- * kind rather than an invented one.
146
+ * kind-aware renderer already switches on.
147
+ *
148
+ * Deliberately NOT validated against a list. The prompts own this vocabulary,
149
+ * and they live in the prompt catalog precisely so it can change without
150
+ * shipping code — an allowlist here would mean every new semantic needs a
151
+ * release before it resolves, which is backwards. Nothing gates on `kind`
152
+ * either: it is metadata for a renderer that wants to vary by it, and the one
153
+ * renderer that does falls back when it sees a value it doesn't know.
154
+ *
155
+ * `CALLOUT_SEMANTICS` therefore documents what the prompts emit today; it is
156
+ * not a filter.
149
157
  */
150
158
  function semanticToKind(semantic) {
151
- const value = semantic == null ? void 0 : semantic.trim().toLowerCase();
152
- if (!value) {
153
- return undefined;
154
- }
155
- return CALLOUT_SEMANTICS.includes(value) ? {
159
+ const value = semantic == null ? void 0 : semantic.trim();
160
+ return value ? {
156
161
  kind: value.toUpperCase()
157
162
  } : undefined;
158
163
  }
@@ -1 +1 @@
1
- {"version":3,"names":["inlinePartsToMarkdown","parseCalloutTag","getPartsByType","getLinks","CALLOUT_SEMANTICS","DROP_SECTION","CalloutSectionDefinition","constructor","_defineProperty","callouts","text","markdown","expected","kind","parse","parts","calloutParts","length","parseBlockquote","parseProse","_parts$find","descriptor","find","p","type","meta","section","filter","trim","semanticToKind","semantic","relatedLinks","seenUrls","Set","c","_c$meta","_c$content","content","parsed","push","link","_link$meta","_link$content","href","has","add","url","undefined","value","toLowerCase","includes","toUpperCase"],"sources":["../../../../src/component/componentDefinitions/CalloutSectionDefinition.ts"],"sourcesContent":["import { inlinePartsToMarkdown, parseCalloutTag } from './parse-utils';\nimport { getPartsByType, getLinks, type Part } from '../../parts/parts';\nimport { CALLOUT_SEMANTICS, type Callout } from '../../types/callout';\nimport type {\n CalloutCompProps,\n CalloutSectionComponent,\n SectionFixture,\n} from '../types';\nimport {\n DROP_SECTION,\n type DropSection,\n type SectionDefinition,\n} from '../section-definition';\n\n/**\n * Callout — the page's dialog layer, written by the orchestrator itself rather\n * than by a per-section model.\n *\n * Two markdown forms reach this definition, and both must keep working:\n *\n * 1. **Descriptor + plain prose** (current). `semantic` carries the kind:\n *\n * <!-- section:callout, semantic:tip -->\n * Prefer a gentle daily ritual? The 4 oz size is the one to sample with.\n *\n * 2. **GFM alert blockquote** (legacy). Still emitted by sites pinned to an\n * older prompt, and present in every historical page, so it is parsed\n * verbatim rather than migrated:\n *\n * <!-- section:callout -->\n * > [!TIP] Prefer a gentle daily ritual? …\n *\n * The two forms differ in one way that matters. A blockquote collapses to a\n * single `callout` part carrying the whole line in `meta.markdown`, so inline\n * ask links survive for free and `getLinks` finds nothing to harvest. A\n * paragraph is *unwrapped* into its inline children (`markdownBlocks.ts`), so\n * prose with a link arrives as `t + link + t` — separate parts. Reading only\n * the `t` parts would delete the link's url and label (DL #134's list bug) and\n * `getLinks` would then re-surface it as a footer link, showing the visitor the\n * same link twice. `inlinePartsToMarkdown` is what keeps the link inline, and\n * the prose path deliberately harvests no `relatedLinks` at all.\n */\nexport class CalloutSectionDefinition\n implements SectionDefinition<CalloutSectionComponent>\n{\n sectionType = 'callout' as const;\n patterns = [\n // Descriptor-led prose. `link` must be in the alternation or a callout\n // carrying an ask link fails to match and falls through to the fallback.\n 'html_comment[section=\"callout\"] > (t | link)+',\n // Legacy blockquote.\n 'html_comment? > callout+',\n ];\n\n defaults: CalloutCompProps = {\n callouts: [{ text: 'This is a callout.' }],\n };\n\n fixtures: SectionFixture<CalloutCompProps>[] = [\n {\n markdown:\n '<!-- section:callout, semantic:tip -->\\nThis is a callout paragraph.',\n expected: {\n callouts: [{ text: 'This is a callout paragraph.', kind: 'TIP' }],\n },\n },\n {\n markdown: '> This is a callout blockquote.',\n expected: {\n callouts: [{ text: 'This is a callout blockquote.' }],\n },\n },\n ];\n\n parse(parts: Part[]): CalloutCompProps | null | DropSection {\n const calloutParts = getPartsByType<Part>(parts, 'callout');\n\n return calloutParts.length > 0\n ? this.parseBlockquote(calloutParts, parts)\n : this.parseProse(parts);\n }\n\n /**\n * Descriptor + plain prose. The kind comes from the descriptor's `semantic`,\n * and every link in the body is inline prose — never a `relatedLinks` footer.\n */\n private parseProse(parts: Part[]): CalloutCompProps | null | DropSection {\n const descriptor = parts.find((p) => p.type === 'htmlComment' && p.meta)\n ?.meta as Record<string, string> | undefined;\n\n // The pattern already gates on this; re-checking keeps a direct\n // `parse()` call (and any future pattern edit) from mislabelling a\n // different section's prose as a callout.\n if (descriptor?.section !== 'callout') {\n return null;\n }\n\n const text = inlinePartsToMarkdown(\n parts.filter((p) => p.type !== 'htmlComment'),\n ).trim();\n\n // Matched, but there is nothing to say. DROP_SECTION consumes the nodes\n // and renders nothing; returning null would hand the descriptor to the\n // fallback, which renders it as stray text.\n if (!text) {\n return DROP_SECTION;\n }\n\n return {\n callouts: [{ text, ...(semanticToKind(descriptor.semantic) ?? {}) }],\n };\n }\n\n /** Legacy GFM alert blockquote. */\n private parseBlockquote(\n calloutParts: Part[],\n parts: Part[],\n ): CalloutCompProps | null | DropSection {\n const callouts: Callout[] = [];\n const relatedLinks: { text: string; url: string }[] = [];\n const seenUrls = new Set<string>();\n\n for (const c of calloutParts) {\n const text = (c.meta?.markdown as string)?.trim() || c.content?.trim();\n if (text) {\n const parsed = parseCalloutTag(text);\n if (parsed.text) {\n callouts.push({ text: parsed.text, kind: parsed.kind });\n }\n }\n }\n\n if (callouts.length === 0) {\n return DROP_SECTION;\n }\n\n // A blockquote yields no sibling link parts, so anything found here arrived\n // alongside the quote and is a genuine footer link.\n for (const link of getLinks(parts)) {\n const href = link.meta?.href;\n const text = link.content?.trim();\n if (text && href && !seenUrls.has(href)) {\n seenUrls.add(href);\n relatedLinks.push({ text, url: href });\n }\n }\n\n return {\n callouts,\n relatedLinks: relatedLinks.length > 0 ? relatedLinks : undefined,\n };\n }\n}\n\n/**\n * `semantic:tip` → `{ kind: 'TIP' }`. Uppercased so the new form lands on the\n * same vocabulary the legacy `[!TIP]` marker produced, which is what any\n * kind-aware renderer already switches on. An unrecognised value carries no\n * kind rather than an invented one.\n */\nfunction semanticToKind(semantic?: string): { kind: string } | undefined {\n const value = semantic?.trim().toLowerCase();\n if (!value) {\n return undefined;\n }\n return (CALLOUT_SEMANTICS as readonly string[]).includes(value)\n ? { kind: value.toUpperCase() }\n : undefined;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["inlinePartsToMarkdown","parseCalloutTag","getPartsByType","getLinks","DROP_SECTION","CalloutSectionDefinition","constructor","_defineProperty","callouts","text","markdown","expected","kind","parse","parts","calloutParts","length","parseBlockquote","parseProse","_parts$find","descriptor","find","p","type","meta","section","filter","trim","semanticToKind","semantic","relatedLinks","seenUrls","Set","c","_c$meta","_c$content","content","parsed","push","link","_link$meta","_link$content","href","has","add","url","undefined","value","toUpperCase"],"sources":["../../../../src/component/componentDefinitions/CalloutSectionDefinition.ts"],"sourcesContent":["import { inlinePartsToMarkdown, parseCalloutTag } from './parse-utils';\nimport { getPartsByType, getLinks, type Part } from '../../parts/parts';\nimport type { Callout } from '../../types/callout';\nimport type {\n CalloutCompProps,\n CalloutSectionComponent,\n SectionFixture,\n} from '../types';\nimport {\n DROP_SECTION,\n type DropSection,\n type SectionDefinition,\n} from '../section-definition';\n\n/**\n * Callout — the page's dialog layer, written by the orchestrator itself rather\n * than by a per-section model.\n *\n * Two markdown forms reach this definition, and both must keep working:\n *\n * 1. **Descriptor + plain prose** (current). `semantic` carries the kind:\n *\n * <!-- section:callout, semantic:tip -->\n * Prefer a gentle daily ritual? The 4 oz size is the one to sample with.\n *\n * 2. **GFM alert blockquote** (legacy). Still emitted by sites pinned to an\n * older prompt, and present in every historical page, so it is parsed\n * verbatim rather than migrated:\n *\n * <!-- section:callout -->\n * > [!TIP] Prefer a gentle daily ritual? …\n *\n * The two forms differ in one way that matters. A blockquote collapses to a\n * single `callout` part carrying the whole line in `meta.markdown`, so inline\n * ask links survive for free and `getLinks` finds nothing to harvest. A\n * paragraph is *unwrapped* into its inline children (`markdownBlocks.ts`), so\n * prose with a link arrives as `t + link + t` — separate parts. Reading only\n * the `t` parts would delete the link's url and label (DL #134's list bug) and\n * `getLinks` would then re-surface it as a footer link, showing the visitor the\n * same link twice. `inlinePartsToMarkdown` is what keeps the link inline, and\n * the prose path deliberately harvests no `relatedLinks` at all.\n */\nexport class CalloutSectionDefinition\n implements SectionDefinition<CalloutSectionComponent>\n{\n sectionType = 'callout' as const;\n patterns = [\n // Descriptor-led prose. `link` must be in the alternation or a callout\n // carrying an ask link fails to match and falls through to the fallback.\n 'html_comment[section=\"callout\"] > (t | link)+',\n // Legacy blockquote.\n 'html_comment? > callout+',\n ];\n\n defaults: CalloutCompProps = {\n callouts: [{ text: 'This is a callout.' }],\n };\n\n fixtures: SectionFixture<CalloutCompProps>[] = [\n {\n markdown:\n '<!-- section:callout, semantic:tip -->\\nThis is a callout paragraph.',\n expected: {\n callouts: [{ text: 'This is a callout paragraph.', kind: 'TIP' }],\n },\n },\n {\n markdown: '> This is a callout blockquote.',\n expected: {\n callouts: [{ text: 'This is a callout blockquote.' }],\n },\n },\n ];\n\n parse(parts: Part[]): CalloutCompProps | null | DropSection {\n const calloutParts = getPartsByType<Part>(parts, 'callout');\n\n return calloutParts.length > 0\n ? this.parseBlockquote(calloutParts, parts)\n : this.parseProse(parts);\n }\n\n /**\n * Descriptor + plain prose. The kind comes from the descriptor's `semantic`,\n * and every link in the body is inline prose — never a `relatedLinks` footer.\n */\n private parseProse(parts: Part[]): CalloutCompProps | null | DropSection {\n const descriptor = parts.find((p) => p.type === 'htmlComment' && p.meta)\n ?.meta as Record<string, string> | undefined;\n\n // The pattern already gates on this; re-checking keeps a direct\n // `parse()` call (and any future pattern edit) from mislabelling a\n // different section's prose as a callout.\n if (descriptor?.section !== 'callout') {\n return null;\n }\n\n const text = inlinePartsToMarkdown(\n parts.filter((p) => p.type !== 'htmlComment'),\n ).trim();\n\n // Matched, but there is nothing to say. DROP_SECTION consumes the nodes\n // and renders nothing; returning null would hand the descriptor to the\n // fallback, which renders it as stray text.\n if (!text) {\n return DROP_SECTION;\n }\n\n return {\n callouts: [{ text, ...(semanticToKind(descriptor.semantic) ?? {}) }],\n };\n }\n\n /** Legacy GFM alert blockquote. */\n private parseBlockquote(\n calloutParts: Part[],\n parts: Part[],\n ): CalloutCompProps | null | DropSection {\n const callouts: Callout[] = [];\n const relatedLinks: { text: string; url: string }[] = [];\n const seenUrls = new Set<string>();\n\n for (const c of calloutParts) {\n const text = (c.meta?.markdown as string)?.trim() || c.content?.trim();\n if (text) {\n const parsed = parseCalloutTag(text);\n if (parsed.text) {\n callouts.push({ text: parsed.text, kind: parsed.kind });\n }\n }\n }\n\n if (callouts.length === 0) {\n return DROP_SECTION;\n }\n\n // A blockquote yields no sibling link parts, so anything found here arrived\n // alongside the quote and is a genuine footer link.\n for (const link of getLinks(parts)) {\n const href = link.meta?.href;\n const text = link.content?.trim();\n if (text && href && !seenUrls.has(href)) {\n seenUrls.add(href);\n relatedLinks.push({ text, url: href });\n }\n }\n\n return {\n callouts,\n relatedLinks: relatedLinks.length > 0 ? relatedLinks : undefined,\n };\n }\n}\n\n/**\n * `semantic:tip` → `{ kind: 'TIP' }`. Uppercased so the new form lands on the\n * same vocabulary the legacy `[!TIP]` marker produced, which is what any\n * kind-aware renderer already switches on.\n *\n * Deliberately NOT validated against a list. The prompts own this vocabulary,\n * and they live in the prompt catalog precisely so it can change without\n * shipping code — an allowlist here would mean every new semantic needs a\n * release before it resolves, which is backwards. Nothing gates on `kind`\n * either: it is metadata for a renderer that wants to vary by it, and the one\n * renderer that does falls back when it sees a value it doesn't know.\n *\n * `CALLOUT_SEMANTICS` therefore documents what the prompts emit today; it is\n * not a filter.\n */\nfunction semanticToKind(semantic?: string): { kind: string } | undefined {\n const value = semantic?.trim();\n return value ? { kind: value.toUpperCase() } : undefined;\n}\n"],"mappings":";AAAA,SAASA,qBAAqB,EAAEC,eAAe,QAAQ,eAAe;AACtE,SAASC,cAAc,EAAEC,QAAQ,QAAmB,mBAAmB;AAOvE,SACEC,YAAY,QAGP,uBAAuB;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,wBAAwB,CAErC;EAAAC,YAAA;IAAAC,eAAA,sBACgB,SAAS;IAAAA,eAAA,mBACZ;IACT;IACA;IACA,+CAA+C;IAC/C;IACA,0BAA0B,CAC3B;IAAAA,eAAA,mBAE4B;MAC3BC,QAAQ,EAAE,CAAC;QAAEC,IAAI,EAAE;MAAqB,CAAC;IAC3C,CAAC;IAAAF,eAAA,mBAE8C,CAC7C;MACEG,QAAQ,EACN,sEAAsE;MACxEC,QAAQ,EAAE;QACRH,QAAQ,EAAE,CAAC;UAAEC,IAAI,EAAE,8BAA8B;UAAEG,IAAI,EAAE;QAAM,CAAC;MAClE;IACF,CAAC,EACD;MACEF,QAAQ,EAAE,iCAAiC;MAC3CC,QAAQ,EAAE;QACRH,QAAQ,EAAE,CAAC;UAAEC,IAAI,EAAE;QAAgC,CAAC;MACtD;IACF,CAAC,CACF;EAAA;EAEDI,KAAKA,CAACC,KAAa,EAAyC;IAC1D,MAAMC,YAAY,GAAGb,cAAc,CAAOY,KAAK,EAAE,SAAS,CAAC;IAE3D,OAAOC,YAAY,CAACC,MAAM,GAAG,CAAC,GAC1B,IAAI,CAACC,eAAe,CAACF,YAAY,EAAED,KAAK,CAAC,GACzC,IAAI,CAACI,UAAU,CAACJ,KAAK,CAAC;EAC5B;;EAEA;AACF;AACA;AACA;EACUI,UAAUA,CAACJ,KAAa,EAAyC;IAAA,IAAAK,WAAA;IACvE,MAAMC,UAAU,IAAAD,WAAA,GAAGL,KAAK,CAACO,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACC,IAAI,KAAK,aAAa,IAAID,CAAC,CAACE,IAAI,CAAC,qBAArDL,WAAA,CACfK,IAA0C;;IAE9C;IACA;IACA;IACA,IAAI,CAAAJ,UAAU,oBAAVA,UAAU,CAAEK,OAAO,MAAK,SAAS,EAAE;MACrC,OAAO,IAAI;IACb;IAEA,MAAMhB,IAAI,GAAGT,qBAAqB,CAChCc,KAAK,CAACY,MAAM,CAAEJ,CAAC,IAAKA,CAAC,CAACC,IAAI,KAAK,aAAa,CAC9C,CAAC,CAACI,IAAI,CAAC,CAAC;;IAER;IACA;IACA;IACA,IAAI,CAAClB,IAAI,EAAE;MACT,OAAOL,YAAY;IACrB;IAEA,OAAO;MACLI,QAAQ,EAAE,CAAC;QAAEC,IAAI;QAAE,IAAImB,cAAc,CAACR,UAAU,CAACS,QAAQ,CAAC,IAAI,CAAC,CAAC;MAAE,CAAC;IACrE,CAAC;EACH;;EAEA;EACQZ,eAAeA,CACrBF,YAAoB,EACpBD,KAAa,EAC0B;IACvC,MAAMN,QAAmB,GAAG,EAAE;IAC9B,MAAMsB,YAA6C,GAAG,EAAE;IACxD,MAAMC,QAAQ,GAAG,IAAIC,GAAG,CAAS,CAAC;IAElC,KAAK,MAAMC,CAAC,IAAIlB,YAAY,EAAE;MAAA,IAAAmB,OAAA,EAAAC,UAAA;MAC5B,MAAM1B,IAAI,GAAG,EAAAyB,OAAA,GAACD,CAAC,CAACT,IAAI,cAAAU,OAAA,GAANA,OAAA,CAAQxB,QAAQ,qBAAjBwB,OAAA,CAA8BP,IAAI,CAAC,CAAC,OAAAQ,UAAA,GAAIF,CAAC,CAACG,OAAO,qBAATD,UAAA,CAAWR,IAAI,CAAC,CAAC;MACtE,IAAIlB,IAAI,EAAE;QACR,MAAM4B,MAAM,GAAGpC,eAAe,CAACQ,IAAI,CAAC;QACpC,IAAI4B,MAAM,CAAC5B,IAAI,EAAE;UACfD,QAAQ,CAAC8B,IAAI,CAAC;YAAE7B,IAAI,EAAE4B,MAAM,CAAC5B,IAAI;YAAEG,IAAI,EAAEyB,MAAM,CAACzB;UAAK,CAAC,CAAC;QACzD;MACF;IACF;IAEA,IAAIJ,QAAQ,CAACQ,MAAM,KAAK,CAAC,EAAE;MACzB,OAAOZ,YAAY;IACrB;;IAEA;IACA;IACA,KAAK,MAAMmC,IAAI,IAAIpC,QAAQ,CAACW,KAAK,CAAC,EAAE;MAAA,IAAA0B,UAAA,EAAAC,aAAA;MAClC,MAAMC,IAAI,IAAAF,UAAA,GAAGD,IAAI,CAACf,IAAI,qBAATgB,UAAA,CAAWE,IAAI;MAC5B,MAAMjC,IAAI,IAAAgC,aAAA,GAAGF,IAAI,CAACH,OAAO,qBAAZK,aAAA,CAAcd,IAAI,CAAC,CAAC;MACjC,IAAIlB,IAAI,IAAIiC,IAAI,IAAI,CAACX,QAAQ,CAACY,GAAG,CAACD,IAAI,CAAC,EAAE;QACvCX,QAAQ,CAACa,GAAG,CAACF,IAAI,CAAC;QAClBZ,YAAY,CAACQ,IAAI,CAAC;UAAE7B,IAAI;UAAEoC,GAAG,EAAEH;QAAK,CAAC,CAAC;MACxC;IACF;IAEA,OAAO;MACLlC,QAAQ;MACRsB,YAAY,EAAEA,YAAY,CAACd,MAAM,GAAG,CAAC,GAAGc,YAAY,GAAGgB;IACzD,CAAC;EACH;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASlB,cAAcA,CAACC,QAAiB,EAAgC;EACvE,MAAMkB,KAAK,GAAGlB,QAAQ,oBAARA,QAAQ,CAAEF,IAAI,CAAC,CAAC;EAC9B,OAAOoB,KAAK,GAAG;IAAEnC,IAAI,EAAEmC,KAAK,CAACC,WAAW,CAAC;EAAE,CAAC,GAAGF,SAAS;AAC1D","ignoreList":[]}
@@ -7,6 +7,16 @@ export const CALLOUT_KINDS = ['NOTE', 'TIP', 'IMPORTANT', 'WARNING', 'CAUTION',
7
7
  * the legacy `> [!TYPE]` blockquote marker and has to keep every value it ever
8
8
  * accepted, because historical pages and sites pinned to an older prompt still
9
9
  * carry them. This list is what the current prompts are allowed to emit.
10
+ *
11
+ * **Documentation, not a filter.** Nothing validates against this list: the
12
+ * prompts own the vocabulary and live in the prompt catalog so it can change
13
+ * without a release. Adding a semantic here is a docs change, not a gate.
14
+ *
15
+ * `clarification` is the one whose meaning is load-bearing rather than
16
+ * cosmetic: the prompts define it as a callout that offers the visitor a branch,
17
+ * and therefore one that carries at least one `web5://ask/` link. Naming the
18
+ * intent in the descriptor is what makes that obligation checkable — a callout
19
+ * labelled `clarification` with nothing linked is wrong output.
10
20
  */
11
- export const CALLOUT_SEMANTICS = ['note', 'tip'];
21
+ export const CALLOUT_SEMANTICS = ['note', 'tip', 'clarification'];
12
22
  //# sourceMappingURL=callout.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["CALLOUT_KINDS","CALLOUT_SEMANTICS"],"sources":["../../../src/types/callout.ts"],"sourcesContent":["export const CALLOUT_KINDS = [\n 'NOTE',\n 'TIP',\n 'IMPORTANT',\n 'WARNING',\n 'CAUTION',\n 'ECHO',\n] as const;\n\nexport type CalloutKind = (typeof CALLOUT_KINDS)[number];\n\n/**\n * The kinds a callout descriptor may declare as `semantic:`, lowercase, as the\n * orchestrator writes them: `<!-- section:callout, semantic:tip -->`.\n *\n * Deliberately narrower than `CALLOUT_KINDS`. That list is the vocabulary of\n * the legacy `> [!TYPE]` blockquote marker and has to keep every value it ever\n * accepted, because historical pages and sites pinned to an older prompt still\n * carry them. This list is what the current prompts are allowed to emit.\n */\nexport const CALLOUT_SEMANTICS = ['note', 'tip'] as const;\n\nexport type CalloutSemantic = (typeof CALLOUT_SEMANTICS)[number];\n\nexport interface Callout {\n text: string;\n kind?: string;\n}\n"],"mappings":"AAAA,OAAO,MAAMA,aAAa,GAAG,CAC3B,MAAM,EACN,KAAK,EACL,WAAW,EACX,SAAS,EACT,SAAS,EACT,MAAM,CACE;AAIV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,iBAAiB,GAAG,CAAC,MAAM,EAAE,KAAK,CAAU","ignoreList":[]}
1
+ {"version":3,"names":["CALLOUT_KINDS","CALLOUT_SEMANTICS"],"sources":["../../../src/types/callout.ts"],"sourcesContent":["export const CALLOUT_KINDS = [\n 'NOTE',\n 'TIP',\n 'IMPORTANT',\n 'WARNING',\n 'CAUTION',\n 'ECHO',\n] as const;\n\nexport type CalloutKind = (typeof CALLOUT_KINDS)[number];\n\n/**\n * The kinds a callout descriptor may declare as `semantic:`, lowercase, as the\n * orchestrator writes them: `<!-- section:callout, semantic:tip -->`.\n *\n * Deliberately narrower than `CALLOUT_KINDS`. That list is the vocabulary of\n * the legacy `> [!TYPE]` blockquote marker and has to keep every value it ever\n * accepted, because historical pages and sites pinned to an older prompt still\n * carry them. This list is what the current prompts are allowed to emit.\n *\n * **Documentation, not a filter.** Nothing validates against this list: the\n * prompts own the vocabulary and live in the prompt catalog so it can change\n * without a release. Adding a semantic here is a docs change, not a gate.\n *\n * `clarification` is the one whose meaning is load-bearing rather than\n * cosmetic: the prompts define it as a callout that offers the visitor a branch,\n * and therefore one that carries at least one `web5://ask/` link. Naming the\n * intent in the descriptor is what makes that obligation checkable — a callout\n * labelled `clarification` with nothing linked is wrong output.\n */\nexport const CALLOUT_SEMANTICS = ['note', 'tip', 'clarification'] as const;\n\nexport type CalloutSemantic = (typeof CALLOUT_SEMANTICS)[number];\n\nexport interface Callout {\n text: string;\n kind?: string;\n}\n"],"mappings":"AAAA,OAAO,MAAMA,aAAa,GAAG,CAC3B,MAAM,EACN,KAAK,EACL,WAAW,EACX,SAAS,EACT,SAAS,EACT,MAAM,CACE;AAIV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,iBAAiB,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,eAAe,CAAU","ignoreList":[]}
@@ -8,8 +8,18 @@ export type CalloutKind = (typeof CALLOUT_KINDS)[number];
8
8
  * the legacy `> [!TYPE]` blockquote marker and has to keep every value it ever
9
9
  * accepted, because historical pages and sites pinned to an older prompt still
10
10
  * carry them. This list is what the current prompts are allowed to emit.
11
+ *
12
+ * **Documentation, not a filter.** Nothing validates against this list: the
13
+ * prompts own the vocabulary and live in the prompt catalog so it can change
14
+ * without a release. Adding a semantic here is a docs change, not a gate.
15
+ *
16
+ * `clarification` is the one whose meaning is load-bearing rather than
17
+ * cosmetic: the prompts define it as a callout that offers the visitor a branch,
18
+ * and therefore one that carries at least one `web5://ask/` link. Naming the
19
+ * intent in the descriptor is what makes that obligation checkable — a callout
20
+ * labelled `clarification` with nothing linked is wrong output.
11
21
  */
12
- export declare const CALLOUT_SEMANTICS: readonly ["note", "tip"];
22
+ export declare const CALLOUT_SEMANTICS: readonly ["note", "tip", "clarification"];
13
23
  export type CalloutSemantic = (typeof CALLOUT_SEMANTICS)[number];
14
24
  export interface Callout {
15
25
  text: string;
@@ -1 +1 @@
1
- {"version":3,"file":"callout.d.ts","sourceRoot":"","sources":["../../../src/types/callout.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,qEAOhB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,0BAA2B,CAAC;AAE1D,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjE,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
1
+ {"version":3,"file":"callout.d.ts","sourceRoot":"","sources":["../../../src/types/callout.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,qEAOhB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,iBAAiB,2CAA4C,CAAC;AAE3E,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjE,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@wix/web5-core",
3
3
  "license": "MIT",
4
- "version": "1.63.11",
4
+ "version": "1.63.12",
5
5
  "author": {
6
6
  "name": "tsachis",
7
7
  "email": "tsachis@wix.com"
@@ -100,5 +100,5 @@
100
100
  "wallaby": {
101
101
  "autoDetect": true
102
102
  },
103
- "falconPackageHash": "5624f385b4d446f9ce8a2da74606b0ec745093254c7883b13d738c59"
103
+ "falconPackageHash": "6b01893e8269b950e055637f00fe1cf24331e6e921020bc34895535b"
104
104
  }