@clossys/writer 0.3.9 → 0.5.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.
Files changed (136) hide show
  1. package/README.md +647 -6
  2. package/dist/addressability.d.ts +11 -1
  3. package/dist/addressability.d.ts.map +1 -1
  4. package/dist/addressability.js +169 -3
  5. package/dist/addressability.js.map +1 -1
  6. package/dist/approval-bypass.d.ts +120 -0
  7. package/dist/approval-bypass.d.ts.map +1 -0
  8. package/dist/approval-bypass.js +2318 -0
  9. package/dist/approval-bypass.js.map +1 -0
  10. package/dist/approval.d.ts +62 -0
  11. package/dist/approval.d.ts.map +1 -0
  12. package/dist/approval.js +421 -0
  13. package/dist/approval.js.map +1 -0
  14. package/dist/approve-cli.d.ts +82 -0
  15. package/dist/approve-cli.d.ts.map +1 -0
  16. package/dist/approve-cli.js +430 -0
  17. package/dist/approve-cli.js.map +1 -0
  18. package/dist/cli.d.ts +15 -0
  19. package/dist/cli.d.ts.map +1 -1
  20. package/dist/cli.js +264 -22
  21. package/dist/cli.js.map +1 -1
  22. package/dist/field-options.d.ts +59 -0
  23. package/dist/field-options.d.ts.map +1 -0
  24. package/dist/field-options.js +109 -0
  25. package/dist/field-options.js.map +1 -0
  26. package/dist/fold-wallpaper-gate.d.ts +7 -0
  27. package/dist/fold-wallpaper-gate.d.ts.map +1 -0
  28. package/dist/fold-wallpaper-gate.js +29 -0
  29. package/dist/fold-wallpaper-gate.js.map +1 -0
  30. package/dist/front-door.check.d.ts +2 -0
  31. package/dist/front-door.check.d.ts.map +1 -0
  32. package/dist/front-door.check.js +8 -0
  33. package/dist/front-door.check.js.map +1 -0
  34. package/dist/front-door.d.ts +82 -0
  35. package/dist/front-door.d.ts.map +1 -0
  36. package/dist/front-door.js +271 -0
  37. package/dist/front-door.js.map +1 -0
  38. package/dist/generated/advisor-plan-contract.generated.d.ts +3 -0
  39. package/dist/generated/advisor-plan-contract.generated.d.ts.map +1 -0
  40. package/dist/generated/advisor-plan-contract.generated.js +430 -0
  41. package/dist/generated/advisor-plan-contract.generated.js.map +1 -0
  42. package/dist/generated/contract-schema.generated.d.ts +97 -0
  43. package/dist/generated/contract-schema.generated.d.ts.map +1 -0
  44. package/dist/generated/contract-schema.generated.js +496 -0
  45. package/dist/generated/contract-schema.generated.js.map +1 -0
  46. package/dist/index.d.ts +18 -2
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +26 -0
  49. package/dist/index.js.map +1 -1
  50. package/dist/live-copy-gate.d.ts +16 -0
  51. package/dist/live-copy-gate.d.ts.map +1 -0
  52. package/dist/live-copy-gate.js +135 -0
  53. package/dist/live-copy-gate.js.map +1 -0
  54. package/dist/messaging-kit.d.ts +113 -0
  55. package/dist/messaging-kit.d.ts.map +1 -0
  56. package/dist/messaging-kit.js +121 -0
  57. package/dist/messaging-kit.js.map +1 -0
  58. package/dist/passage.d.ts +2 -1
  59. package/dist/passage.d.ts.map +1 -1
  60. package/dist/passage.js +2 -1
  61. package/dist/passage.js.map +1 -1
  62. package/dist/plan-authority.d.ts +73 -0
  63. package/dist/plan-authority.d.ts.map +1 -0
  64. package/dist/plan-authority.js +126 -0
  65. package/dist/plan-authority.js.map +1 -0
  66. package/dist/plan-contract.d.ts +16 -0
  67. package/dist/plan-contract.d.ts.map +1 -0
  68. package/dist/plan-contract.js +33 -0
  69. package/dist/plan-contract.js.map +1 -0
  70. package/dist/plan-digest.d.ts +23 -0
  71. package/dist/plan-digest.d.ts.map +1 -0
  72. package/dist/plan-digest.js +82 -0
  73. package/dist/plan-digest.js.map +1 -0
  74. package/dist/plan-rules.d.ts +54 -0
  75. package/dist/plan-rules.d.ts.map +1 -0
  76. package/dist/plan-rules.js +145 -0
  77. package/dist/plan-rules.js.map +1 -0
  78. package/dist/render-registry-parity.d.ts +20 -0
  79. package/dist/render-registry-parity.d.ts.map +1 -0
  80. package/dist/render-registry-parity.js +45 -0
  81. package/dist/render-registry-parity.js.map +1 -0
  82. package/dist/resolve.d.ts +40 -6
  83. package/dist/resolve.d.ts.map +1 -1
  84. package/dist/resolve.js +144 -18
  85. package/dist/resolve.js.map +1 -1
  86. package/dist/scan.d.ts +32 -0
  87. package/dist/scan.d.ts.map +1 -1
  88. package/dist/scan.js +67 -6
  89. package/dist/scan.js.map +1 -1
  90. package/dist/schema.d.ts +1 -0
  91. package/dist/schema.d.ts.map +1 -1
  92. package/dist/schema.js +231 -5
  93. package/dist/schema.js.map +1 -1
  94. package/dist/site-identity.d.ts +88 -0
  95. package/dist/site-identity.d.ts.map +1 -0
  96. package/dist/site-identity.js +82 -0
  97. package/dist/site-identity.js.map +1 -0
  98. package/dist/treatment-word-budget.d.ts +31 -0
  99. package/dist/treatment-word-budget.d.ts.map +1 -0
  100. package/dist/treatment-word-budget.js +80 -0
  101. package/dist/treatment-word-budget.js.map +1 -0
  102. package/dist/types.d.ts +76 -7
  103. package/dist/types.d.ts.map +1 -1
  104. package/dist/types.js +9 -7
  105. package/dist/types.js.map +1 -1
  106. package/fit-signals.json +11 -0
  107. package/package.json +201 -11
  108. package/skill/SKILL.md +49 -0
  109. package/src/addressability.ts +186 -4
  110. package/src/approval-bypass.ts +2263 -0
  111. package/src/approval.ts +491 -0
  112. package/src/approve-cli.ts +474 -0
  113. package/src/cli.ts +274 -22
  114. package/src/field-options.ts +134 -0
  115. package/src/fold-wallpaper-gate.ts +29 -0
  116. package/src/front-door.check.ts +10 -0
  117. package/src/front-door.ts +312 -0
  118. package/src/generated/advisor-plan-contract.generated.ts +430 -0
  119. package/src/generated/contract-schema.generated.ts +520 -0
  120. package/src/index.ts +107 -1
  121. package/src/live-copy-gate.ts +150 -0
  122. package/src/messaging-kit.ts +195 -0
  123. package/src/passage.ts +2 -1
  124. package/src/plan-authority.ts +160 -0
  125. package/src/plan-contract.ts +45 -0
  126. package/src/plan-digest.ts +81 -0
  127. package/src/plan-rules.ts +179 -0
  128. package/src/render-registry-parity.ts +65 -0
  129. package/src/resolve.ts +185 -19
  130. package/src/scan.ts +97 -6
  131. package/src/schema.ts +247 -5
  132. package/src/site-identity.ts +125 -0
  133. package/src/treatment-word-budget.ts +100 -0
  134. package/src/types.ts +83 -7
  135. package/templates/front-door.en.json +426 -0
  136. package/CHANGELOG.md +0 -330
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Scans declared live-copy trees for claim-shaped and magnitude-shaped prose
3
+ * that is not accounted for in the voice claims register.
4
+ */
5
+ import { type VoiceFinding, type VoiceRecord } from "./voice/index.js";
6
+ export interface LiveCopyFinding extends VoiceFinding {
7
+ file: string;
8
+ line: number;
9
+ }
10
+ export interface LiveCopyScanResult {
11
+ filesScanned: number;
12
+ findings: LiveCopyFinding[];
13
+ }
14
+ export declare function scanLiveCopyTrees(record: VoiceRecord, roots: string[]): LiveCopyScanResult;
15
+ export declare function liveTreeExists(path: string): boolean;
16
+ //# sourceMappingURL=live-copy-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-copy-gate.d.ts","sourceRoot":"","sources":["../src/live-copy-gate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAa,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAiBlF,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AA+CD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,kBAAkB,CA6D1F;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMpD"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Scans declared live-copy trees for claim-shaped and magnitude-shaped prose
3
+ * that is not accounted for in the voice claims register.
4
+ */
5
+ import { readdirSync, readFileSync, statSync } from "node:fs";
6
+ import { join, resolve } from "node:path";
7
+ import { findFoldWallpaperPhrase } from "./fold-wallpaper-gate.js";
8
+ import { checkCopy } from "./voice/index.js";
9
+ const LIVE_FILE_RE = /\.(tsx?|jsx?|mdx?|md|json)$/i;
10
+ const IGNORE_MARKER_RE = /(?:<!--|\/\*|\{\/\*|\/\/)\s*(?:copy-gate:ignore|voice-gate:ignore)/i;
11
+ const CLAIM_CITATION_RE = /(?:<!--|\/\*|\{\/\*|\/\/)\s*claim:([a-zA-Z][a-zA-Z0-9-]*)/g;
12
+ const NUMERIC_CLAIM_RE = new RegExp([
13
+ String.raw `[$€£]\s?\d[\d,]*(?:\.\d+)?\s?[kKmMbB]?\b`,
14
+ String.raw `\b\d+(?:\.\d+)?\s?%`,
15
+ String.raw `\b\d+(?:\.\d+)?[xX]\b`,
16
+ String.raw `\b\d{1,3}(?:,\d{3})+\b`,
17
+ String.raw `\b\d+(?:\.\d+)?\s?(?:million|billion|thousand)\b`,
18
+ ].join("|"), "gi");
19
+ function walkLiveTree(root) {
20
+ const files = [];
21
+ const stack = [resolve(root)];
22
+ while (stack.length > 0) {
23
+ const dir = stack.pop();
24
+ let entries;
25
+ try {
26
+ entries = readdirSync(dir, { withFileTypes: true });
27
+ }
28
+ catch {
29
+ continue;
30
+ }
31
+ for (const entry of entries) {
32
+ const full = join(dir, entry.name);
33
+ if (entry.isDirectory()) {
34
+ if (entry.name === "node_modules" || entry.name === ".git")
35
+ continue;
36
+ stack.push(full);
37
+ }
38
+ else if (entry.isFile() && LIVE_FILE_RE.test(entry.name)) {
39
+ files.push(full);
40
+ }
41
+ }
42
+ }
43
+ return files;
44
+ }
45
+ function extractStringLiterals(text) {
46
+ const out = [];
47
+ const lines = text.split(/\r?\n/);
48
+ const literalRe = /(["'`])(?:(?!\1)[^\\]|\\.)*\1/g;
49
+ for (let i = 0; i < lines.length; i++) {
50
+ const line = lines[i];
51
+ if (IGNORE_MARKER_RE.test(line))
52
+ continue;
53
+ for (const m of line.matchAll(literalRe)) {
54
+ const raw = m[0];
55
+ const value = raw.slice(1, -1);
56
+ if (value.trim().length > 0)
57
+ out.push({ line: i + 1, value });
58
+ }
59
+ }
60
+ return out;
61
+ }
62
+ function lineHasClaimCitation(line) {
63
+ CLAIM_CITATION_RE.lastIndex = 0;
64
+ return CLAIM_CITATION_RE.test(line);
65
+ }
66
+ export function scanLiveCopyTrees(record, roots) {
67
+ const findings = [];
68
+ let filesScanned = 0;
69
+ for (const root of roots) {
70
+ for (const file of walkLiveTree(root)) {
71
+ let text;
72
+ try {
73
+ text = readFileSync(file, "utf8");
74
+ }
75
+ catch {
76
+ continue;
77
+ }
78
+ filesScanned++;
79
+ const lines = text.split(/\r?\n/);
80
+ for (const { line, value } of extractStringLiterals(text)) {
81
+ const sourceLine = lines[line - 1] ?? "";
82
+ if (lineHasClaimCitation(sourceLine))
83
+ continue;
84
+ const wallpaperPhrase = findFoldWallpaperPhrase(value);
85
+ if (wallpaperPhrase) {
86
+ findings.push({
87
+ rule: "fold-wallpaper",
88
+ severity: "error",
89
+ message: `Fold wallpaper phrase "${wallpaperPhrase}" is generic competitor copy and must not headline the hero.`,
90
+ path: value.slice(0, 80),
91
+ file,
92
+ line,
93
+ });
94
+ }
95
+ const voiceReport = checkCopy(record, value);
96
+ for (const f of voiceReport.findings) {
97
+ if (f.rule === "claim:unsupported") {
98
+ findings.push({ ...f, file, line });
99
+ }
100
+ }
101
+ if (NUMERIC_CLAIM_RE.test(value)) {
102
+ NUMERIC_CLAIM_RE.lastIndex = 0;
103
+ const covered = record.claims.some((claim) => {
104
+ if (!claim.requiresSupport)
105
+ return true;
106
+ if (claim.factRef)
107
+ return true;
108
+ const phrases = claim.matchPhrases.length > 0 ? claim.matchPhrases : [claim.text];
109
+ return phrases.some((p) => value.toLowerCase().includes(p.toLowerCase()));
110
+ });
111
+ if (!covered) {
112
+ findings.push({
113
+ rule: "live:magnitude-unmarked",
114
+ severity: "error",
115
+ message: `Magnitude-shaped copy is not covered by a supported claim in the voice register.`,
116
+ path: value.slice(0, 80),
117
+ file,
118
+ line,
119
+ });
120
+ }
121
+ }
122
+ }
123
+ }
124
+ }
125
+ return { filesScanned, findings };
126
+ }
127
+ export function liveTreeExists(path) {
128
+ try {
129
+ return statSync(resolve(path)).isDirectory();
130
+ }
131
+ catch {
132
+ return false;
133
+ }
134
+ }
135
+ //# sourceMappingURL=live-copy-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-copy-gate.js","sourceRoot":"","sources":["../src/live-copy-gate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * The messaging-kit copy kind: a pitch and a boilerplate, each in three
3
+ * lengths, resolved from a `CopyRegistry` under six reserved entry ids.
4
+ *
5
+ * A consumer reuses the same "about us" text in press, footers and email,
6
+ * and needs it to carry the same approval evidence as any other rendered
7
+ * copy. This module is a reserved copy kind, not a second text store or a
8
+ * second approval path: it asks `resolveCopyRef` for each id, so everything
9
+ * that resolver refuses is refused here for the same reason.
10
+ *
11
+ * Invariants:
12
+ *
13
+ * - K1: every `resolveCopyRef` refusal is reported with its own reason,
14
+ * tagged with the field it belongs to.
15
+ * - K2: `"messaging-placeholder"` when an entry declares placeholders or its
16
+ * text is one the resolver would rewrite; `"messaging-blank"` when the
17
+ * resolved text is empty after trimming. These are literal texts, not
18
+ * templates.
19
+ * - K3: `"messaging-ladder-order"` when `countCopyWords` does not strictly
20
+ * increase within a ladder (pitch: one-liner, elevator, paragraph; then
21
+ * boilerplate: short, medium, long). It is reported on the later field,
22
+ * and only between two fields that both resolved.
23
+ * - K4: all six are attempted on every call. `kit` and `resolutions` exist
24
+ * only when `issues` is empty, so there is no partial kit. `options.now`
25
+ * is fixed once per call. Nothing here throws for any input.
26
+ * - K5: no word targets beyond K3. An FAQ and a tagline are out of scope
27
+ * (`site.tagline` is already a reserved site-identity id).
28
+ *
29
+ * No real copy ships here. The ids are reserved names; the words are the
30
+ * consumer's own.
31
+ */
32
+ import type { CopyResolveIssue, CopyResolveIssueReason, CopyResolveOptions } from "./resolve.js";
33
+ import type { CopyRegistry, CopyResolution } from "./types.js";
34
+ /** Reserved copy id for the shortest pitch. */
35
+ export declare const MESSAGING_PITCH_ONE_LINER_COPY_ID = "messaging.pitch.one-liner";
36
+ /** Reserved copy id for the elevator pitch. */
37
+ export declare const MESSAGING_PITCH_ELEVATOR_COPY_ID = "messaging.pitch.elevator";
38
+ /** Reserved copy id for the paragraph-length pitch. */
39
+ export declare const MESSAGING_PITCH_PARAGRAPH_COPY_ID = "messaging.pitch.paragraph";
40
+ /** Reserved copy id for the short boilerplate. */
41
+ export declare const MESSAGING_BOILERPLATE_SHORT_COPY_ID = "messaging.boilerplate.short";
42
+ /** Reserved copy id for the medium boilerplate. */
43
+ export declare const MESSAGING_BOILERPLATE_MEDIUM_COPY_ID = "messaging.boilerplate.medium";
44
+ /** Reserved copy id for the long boilerplate. */
45
+ export declare const MESSAGING_BOILERPLATE_LONG_COPY_ID = "messaging.boilerplate.long";
46
+ /** All six reserved messaging-kit copy ids: the pitch ladder, then the boilerplate ladder. */
47
+ export declare const MESSAGING_KIT_COPY_IDS: readonly ["messaging.pitch.one-liner", "messaging.pitch.elevator", "messaging.pitch.paragraph", "messaging.boilerplate.short", "messaging.boilerplate.medium", "messaging.boilerplate.long"];
48
+ /** Which entry of the kit an issue is about. */
49
+ export type MessagingKitField = "pitch.oneLiner" | "pitch.elevator" | "pitch.paragraph" | "boilerplate.short" | "boilerplate.medium" | "boilerplate.long";
50
+ /**
51
+ * Every reason `resolveMessagingKit` can report: whatever `resolveCopyRef`
52
+ * refuses, plus the three refusals specific to the kit.
53
+ */
54
+ export type MessagingKitIssueReason = CopyResolveIssueReason | "messaging-blank" | "messaging-placeholder" | "messaging-ladder-order";
55
+ /** One reason the kit could not be resolved, tagged with its field. */
56
+ export interface MessagingKitIssue extends Omit<CopyResolveIssue, "reason"> {
57
+ reason: MessagingKitIssueReason;
58
+ field: MessagingKitField;
59
+ }
60
+ /** The resolved text of the kit, by ladder. */
61
+ export interface MessagingKit {
62
+ pitch: {
63
+ oneLiner: string;
64
+ elevator: string;
65
+ paragraph: string;
66
+ };
67
+ boilerplate: {
68
+ short: string;
69
+ medium: string;
70
+ long: string;
71
+ };
72
+ }
73
+ /** Each entry's `CopyResolution`, shaped like `MessagingKit`. */
74
+ export interface MessagingKitResolutions {
75
+ pitch: {
76
+ oneLiner: CopyResolution;
77
+ elevator: CopyResolution;
78
+ paragraph: CopyResolution;
79
+ };
80
+ boilerplate: {
81
+ short: CopyResolution;
82
+ medium: CopyResolution;
83
+ long: CopyResolution;
84
+ };
85
+ }
86
+ /**
87
+ * The outcome of `resolveMessagingKit`. `kit` and `resolutions` are present
88
+ * only when `complete` is `true`; `issues` is empty exactly then.
89
+ */
90
+ export interface MessagingKitResolution {
91
+ complete: boolean;
92
+ kit?: MessagingKit;
93
+ resolutions?: MessagingKitResolutions;
94
+ issues: MessagingKitIssue[];
95
+ }
96
+ /** `CopyResolveOptions` plus the requested locale, which is a ref field for the underlying resolver. */
97
+ export type MessagingKitOptions = CopyResolveOptions & {
98
+ locale?: string;
99
+ };
100
+ /**
101
+ * Resolves the messaging kit from `registry`, under the six ids in
102
+ * `MESSAGING_KIT_COPY_IDS`. All six are attempted on every call and every
103
+ * issue is reported in id order, tagged with its `field`; `kit` and
104
+ * `resolutions` are returned only when there are no issues.
105
+ *
106
+ * `options` are `resolveCopyRef`'s (`target`, `acceptDelegateInProduction`,
107
+ * `now`) plus an optional `locale`, which is forwarded as the ref's locale
108
+ * rather than as an option. Malformed options produce an `"invalid-options"`
109
+ * issue per field. Pure apart from the clock read that `now` defaults to;
110
+ * the registry is not modified and no input makes this throw.
111
+ */
112
+ export declare function resolveMessagingKit(registry: CopyRegistry | unknown, options?: MessagingKitOptions | unknown): MessagingKitResolution;
113
+ //# sourceMappingURL=messaging-kit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messaging-kit.d.ts","sourceRoot":"","sources":["../src/messaging-kit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEjG,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE/D,+CAA+C;AAC/C,eAAO,MAAM,iCAAiC,8BAA8B,CAAC;AAE7E,+CAA+C;AAC/C,eAAO,MAAM,gCAAgC,6BAA6B,CAAC;AAE3E,uDAAuD;AACvD,eAAO,MAAM,iCAAiC,8BAA8B,CAAC;AAE7E,kDAAkD;AAClD,eAAO,MAAM,mCAAmC,gCAAgC,CAAC;AAEjF,mDAAmD;AACnD,eAAO,MAAM,oCAAoC,iCAAiC,CAAC;AAEnF,iDAAiD;AACjD,eAAO,MAAM,kCAAkC,+BAA+B,CAAC;AAE/E,8FAA8F;AAC9F,eAAO,MAAM,sBAAsB,8LAOzB,CAAC;AAEX,gDAAgD;AAChD,MAAM,MAAM,iBAAiB,GACzB,gBAAgB,GAChB,gBAAgB,GAChB,iBAAiB,GACjB,mBAAmB,GACnB,oBAAoB,GACpB,kBAAkB,CAAC;AAEvB;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAC/B,sBAAsB,GACtB,iBAAiB,GACjB,uBAAuB,GACvB,wBAAwB,CAAC;AAE7B,uEAAuE;AACvE,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC;IACzE,MAAM,EAAE,uBAAuB,CAAC;IAChC,KAAK,EAAE,iBAAiB,CAAC;CAC1B;AAED,+CAA+C;AAC/C,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACjE,WAAW,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9D;AAED,iEAAiE;AACjE,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE;QAAE,QAAQ,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,cAAc,CAAC;QAAC,SAAS,EAAE,cAAc,CAAA;KAAE,CAAC;IACzF,WAAW,EAAE;QAAE,KAAK,EAAE,cAAc,CAAC;QAAC,MAAM,EAAE,cAAc,CAAC;QAAC,IAAI,EAAE,cAAc,CAAA;KAAE,CAAC;CACtF;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,YAAY,CAAC;IACnB,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC,MAAM,EAAE,iBAAiB,EAAE,CAAC;CAC7B;AAED,wGAAwG;AACxG,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAkB3E;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,YAAY,GAAG,OAAO,EAChC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,GACtC,sBAAsB,CA8CxB"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * The messaging-kit copy kind: a pitch and a boilerplate, each in three
3
+ * lengths, resolved from a `CopyRegistry` under six reserved entry ids.
4
+ *
5
+ * A consumer reuses the same "about us" text in press, footers and email,
6
+ * and needs it to carry the same approval evidence as any other rendered
7
+ * copy. This module is a reserved copy kind, not a second text store or a
8
+ * second approval path: it asks `resolveCopyRef` for each id, so everything
9
+ * that resolver refuses is refused here for the same reason.
10
+ *
11
+ * Invariants:
12
+ *
13
+ * - K1: every `resolveCopyRef` refusal is reported with its own reason,
14
+ * tagged with the field it belongs to.
15
+ * - K2: `"messaging-placeholder"` when an entry declares placeholders or its
16
+ * text is one the resolver would rewrite; `"messaging-blank"` when the
17
+ * resolved text is empty after trimming. These are literal texts, not
18
+ * templates.
19
+ * - K3: `"messaging-ladder-order"` when `countCopyWords` does not strictly
20
+ * increase within a ladder (pitch: one-liner, elevator, paragraph; then
21
+ * boilerplate: short, medium, long). It is reported on the later field,
22
+ * and only between two fields that both resolved.
23
+ * - K4: all six are attempted on every call. `kit` and `resolutions` exist
24
+ * only when `issues` is empty, so there is no partial kit. `options.now`
25
+ * is fixed once per call. Nothing here throws for any input.
26
+ * - K5: no word targets beyond K3. An FAQ and a tagline are out of scope
27
+ * (`site.tagline` is already a reserved site-identity id).
28
+ *
29
+ * No real copy ships here. The ids are reserved names; the words are the
30
+ * consumer's own.
31
+ */
32
+ import { prepareOptions, resolveField } from "./field-options.js";
33
+ import { countCopyWords } from "./treatment-word-budget.js";
34
+ /** Reserved copy id for the shortest pitch. */
35
+ export const MESSAGING_PITCH_ONE_LINER_COPY_ID = "messaging.pitch.one-liner";
36
+ /** Reserved copy id for the elevator pitch. */
37
+ export const MESSAGING_PITCH_ELEVATOR_COPY_ID = "messaging.pitch.elevator";
38
+ /** Reserved copy id for the paragraph-length pitch. */
39
+ export const MESSAGING_PITCH_PARAGRAPH_COPY_ID = "messaging.pitch.paragraph";
40
+ /** Reserved copy id for the short boilerplate. */
41
+ export const MESSAGING_BOILERPLATE_SHORT_COPY_ID = "messaging.boilerplate.short";
42
+ /** Reserved copy id for the medium boilerplate. */
43
+ export const MESSAGING_BOILERPLATE_MEDIUM_COPY_ID = "messaging.boilerplate.medium";
44
+ /** Reserved copy id for the long boilerplate. */
45
+ export const MESSAGING_BOILERPLATE_LONG_COPY_ID = "messaging.boilerplate.long";
46
+ /** All six reserved messaging-kit copy ids: the pitch ladder, then the boilerplate ladder. */
47
+ export const MESSAGING_KIT_COPY_IDS = [
48
+ MESSAGING_PITCH_ONE_LINER_COPY_ID,
49
+ MESSAGING_PITCH_ELEVATOR_COPY_ID,
50
+ MESSAGING_PITCH_PARAGRAPH_COPY_ID,
51
+ MESSAGING_BOILERPLATE_SHORT_COPY_ID,
52
+ MESSAGING_BOILERPLATE_MEDIUM_COPY_ID,
53
+ MESSAGING_BOILERPLATE_LONG_COPY_ID,
54
+ ];
55
+ const FIELDS = [
56
+ { field: "pitch.oneLiner", id: MESSAGING_KIT_COPY_IDS[0], ladder: "pitch" },
57
+ { field: "pitch.elevator", id: MESSAGING_KIT_COPY_IDS[1], ladder: "pitch" },
58
+ { field: "pitch.paragraph", id: MESSAGING_KIT_COPY_IDS[2], ladder: "pitch" },
59
+ { field: "boilerplate.short", id: MESSAGING_KIT_COPY_IDS[3], ladder: "boilerplate" },
60
+ { field: "boilerplate.medium", id: MESSAGING_KIT_COPY_IDS[4], ladder: "boilerplate" },
61
+ { field: "boilerplate.long", id: MESSAGING_KIT_COPY_IDS[5], ladder: "boilerplate" },
62
+ ];
63
+ const LABELS = {
64
+ optionsSubject: "Messaging kit",
65
+ entrySubject: (id) => `Messaging kit entry "${id}"`,
66
+ placeholderReason: "messaging-placeholder",
67
+ blankReason: "messaging-blank",
68
+ };
69
+ /**
70
+ * Resolves the messaging kit from `registry`, under the six ids in
71
+ * `MESSAGING_KIT_COPY_IDS`. All six are attempted on every call and every
72
+ * issue is reported in id order, tagged with its `field`; `kit` and
73
+ * `resolutions` are returned only when there are no issues.
74
+ *
75
+ * `options` are `resolveCopyRef`'s (`target`, `acceptDelegateInProduction`,
76
+ * `now`) plus an optional `locale`, which is forwarded as the ref's locale
77
+ * rather than as an option. Malformed options produce an `"invalid-options"`
78
+ * issue per field. Pure apart from the clock read that `now` defaults to;
79
+ * the registry is not modified and no input makes this throw.
80
+ */
81
+ export function resolveMessagingKit(registry, options) {
82
+ const prepared = prepareOptions(options);
83
+ const issues = [];
84
+ const resolved = [];
85
+ const words = [];
86
+ FIELDS.forEach(({ field, id, ladder }, index) => {
87
+ const outcome = resolveField(registry, field, id, prepared, LABELS);
88
+ issues.push(...outcome.issues);
89
+ const resolution = outcome.resolution;
90
+ if (resolution)
91
+ resolved[index] = resolution;
92
+ words[index] = resolution ? countCopyWords(resolution.text) : undefined;
93
+ const previous = index - 1;
94
+ const before = previous >= 0 && FIELDS[previous].ladder === ladder ? words[previous] : undefined;
95
+ const current = words[index];
96
+ if (before !== undefined && current !== undefined && !(current > before)) {
97
+ issues.push({
98
+ reason: "messaging-ladder-order",
99
+ field,
100
+ id,
101
+ message: `Messaging kit entry "${id}" has ${current} words, which is not more than the ${before} of "${FIELDS[previous].id}".`,
102
+ });
103
+ }
104
+ });
105
+ if (issues.length > 0 || resolved.length !== FIELDS.length)
106
+ return { complete: false, issues };
107
+ const [oneLiner, elevator, paragraph, short, medium, long] = resolved;
108
+ return {
109
+ complete: true,
110
+ kit: {
111
+ pitch: { oneLiner: oneLiner.text, elevator: elevator.text, paragraph: paragraph.text },
112
+ boilerplate: { short: short.text, medium: medium.text, long: long.text },
113
+ },
114
+ resolutions: {
115
+ pitch: { oneLiner, elevator, paragraph },
116
+ boilerplate: { short, medium, long },
117
+ },
118
+ issues: [],
119
+ };
120
+ }
121
+ //# sourceMappingURL=messaging-kit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messaging-kit.js","sourceRoot":"","sources":["../src/messaging-kit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAG5D,+CAA+C;AAC/C,MAAM,CAAC,MAAM,iCAAiC,GAAG,2BAA2B,CAAC;AAE7E,+CAA+C;AAC/C,MAAM,CAAC,MAAM,gCAAgC,GAAG,0BAA0B,CAAC;AAE3E,uDAAuD;AACvD,MAAM,CAAC,MAAM,iCAAiC,GAAG,2BAA2B,CAAC;AAE7E,kDAAkD;AAClD,MAAM,CAAC,MAAM,mCAAmC,GAAG,6BAA6B,CAAC;AAEjF,mDAAmD;AACnD,MAAM,CAAC,MAAM,oCAAoC,GAAG,8BAA8B,CAAC;AAEnF,iDAAiD;AACjD,MAAM,CAAC,MAAM,kCAAkC,GAAG,4BAA4B,CAAC;AAE/E,8FAA8F;AAC9F,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,iCAAiC;IACjC,gCAAgC;IAChC,iCAAiC;IACjC,mCAAmC;IACnC,oCAAoC;IACpC,kCAAkC;CAC1B,CAAC;AAqDX,MAAM,MAAM,GAAyF;IACnG,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,EAAE,sBAAsB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE;IAC3E,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,EAAE,sBAAsB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE;IAC3E,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,EAAE,sBAAsB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE;IAC5E,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,EAAE,sBAAsB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE;IACpF,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,EAAE,sBAAsB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE;IACrF,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE,EAAE,sBAAsB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE;CACpF,CAAC;AAEF,MAAM,MAAM,GAA6D;IACvE,cAAc,EAAE,eAAe;IAC/B,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,wBAAwB,EAAE,GAAG;IACnD,iBAAiB,EAAE,uBAAuB;IAC1C,WAAW,EAAE,iBAAiB;CAC/B,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAgC,EAChC,OAAuC;IAEvC,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAqB,EAAE,CAAC;IACtC,MAAM,KAAK,GAA2B,EAAE,CAAC;IACzC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE;QAC9C,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpE,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/B,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACtC,IAAI,UAAU;YAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC;QAC7C,KAAK,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAExE,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,QAAQ,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAE,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAClG,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,MAAM,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC;YACzE,MAAM,CAAC,IAAI,CAAC;gBACV,MAAM,EAAE,wBAAwB;gBAChC,KAAK;gBACL,EAAE;gBACF,OAAO,EAAE,wBAAwB,EAAE,SAAS,OAAO,sCAAsC,MAAM,QAAQ,MAAM,CAAC,QAAQ,CAAE,CAAC,EAAE,IAAI;aAChI,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;QAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC/F,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,QAO5D,CAAC;IACF,OAAO;QACL,QAAQ,EAAE,IAAI;QACd,GAAG,EAAE;YACH,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE;YACtF,WAAW,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;SACzE;QACD,WAAW,EAAE;YACX,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE;YACxC,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;SACrC;QACD,MAAM,EAAE,EAAE;KACX,CAAC;AACJ,CAAC"}
package/dist/passage.d.ts CHANGED
@@ -37,7 +37,8 @@
37
37
  *
38
38
  * This file ships no example content of anyone's real copy — the same
39
39
  * "vocabulary layer, never a source of real words" constraint `types.ts`
40
- * documents for `CopyEntry`/`CopyRecord`. Every fixture in this package's
40
+ * documents for `CopyEntry`/`CopyRecord` (its one exemption is the shipped
41
+ * front-door defaults, which this file does not touch). Every fixture in this package's
41
42
  * own tests is structural placeholder text, never something a product
42
43
  * would actually show a user.
43
44
  *
@@ -1 +1 @@
1
- {"version":3,"file":"passage.d.ts","sourceRoot":"","sources":["../src/passage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"passage.d.ts","sourceRoot":"","sources":["../src/passage.ts"],"names":[],"mappings":"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"}
package/dist/passage.js CHANGED
@@ -37,7 +37,8 @@
37
37
  *
38
38
  * This file ships no example content of anyone's real copy — the same
39
39
  * "vocabulary layer, never a source of real words" constraint `types.ts`
40
- * documents for `CopyEntry`/`CopyRecord`. Every fixture in this package's
40
+ * documents for `CopyEntry`/`CopyRecord` (its one exemption is the shipped
41
+ * front-door defaults, which this file does not touch). Every fixture in this package's
41
42
  * own tests is structural placeholder text, never something a product
42
43
  * would actually show a user.
43
44
  *
@@ -1 +1 @@
1
- {"version":3,"file":"passage.js","sourceRoot":"","sources":["../src/passage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"passage.js","sourceRoot":"","sources":["../src/passage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /** Why a plan's bytes did not authorize delegate-approved copy on production. */
2
+ export type PlanDelegateCopyRefusal =
3
+ /** The argument is not a `Uint8Array` (a Node `Buffer` is one). */
4
+ "plan-not-bytes"
5
+ /** The bytes are not strict JSON: not valid UTF-8, a byte order mark, a syntax error, or a key repeated at any depth. */
6
+ | "plan-unreadable"
7
+ /** The plan does not validate against the plan contract, schema and code rules. */
8
+ | "plan-invalid"
9
+ /** The plan does not declare `delegatedCopyApproval`. */
10
+ | "delegated-copy-approval-absent" | "no-decisions"
11
+ /** Defence in depth: a valid plan's decision times always parse. */
12
+ | "decision-time-unparseable"
13
+ /** A decision at the latest instant has not chosen "approved". */
14
+ | "latest-decision-not-approved"
15
+ /** A decision at the latest instant is an approval that names no sha256 digest. */
16
+ | "approval-without-subject-digest"
17
+ /** Decisions at the latest instant name different digests. */
18
+ | "latest-decisions-disagree"
19
+ /** The latest approval names a digest other than this plan's own. */
20
+ | "subject-digest-mismatch";
21
+ /** What `planDelegateCopyAuthority()` decided. Frozen, and carries no plan text. */
22
+ export type PlanDelegateCopyAuthority = {
23
+ readonly authorized: true;
24
+ /** The plan's canonical digest, which the latest approval names. */
25
+ readonly planDigest: string;
26
+ /** The plan's `delegatedCopyApproval.scopes`, copied; absent when the plan declares none, which covers every entry. */
27
+ readonly scopes?: readonly string[];
28
+ } | {
29
+ readonly authorized: false;
30
+ readonly refusal: PlanDelegateCopyRefusal;
31
+ /** Only with "plan-invalid": each violation's rule and position, never a value. */
32
+ readonly violations?: readonly {
33
+ readonly rule: string;
34
+ readonly path: string;
35
+ }[];
36
+ };
37
+ /**
38
+ * The positions of the decisions made at the latest instant, by `at` and
39
+ * never by array position, in array order. Times are compared as instants
40
+ * (`Date.parse`), so `2026-09-21T00:00:00Z` and `2026-09-21T02:00:00+02:00`
41
+ * tie. Null when there are no decisions, or when any `at` does not parse to a
42
+ * finite time, because then time cannot say which is latest. Exported for
43
+ * tests, not from the package entry point.
44
+ */
45
+ export declare function latestDecisionIndices(decisions: readonly {
46
+ readonly at: string;
47
+ }[]): number[] | null;
48
+ /** True for a real `Uint8Array` (a Node `Buffer` is one), never a `DataView`, another typed array or a proxy. */
49
+ export declare function isPlanBytes(value: unknown): value is Uint8Array;
50
+ /**
51
+ * Whether the bytes of a plan record authorize delegate-approved copy on
52
+ * production. Checks run in this order and the first that fails refuses:
53
+ *
54
+ * 1. the argument is a `Uint8Array` (`plan-not-bytes`);
55
+ * 2. the bytes are strict JSON (`plan-unreadable`);
56
+ * 3. the plan validates against the plan contract, R1-R12 included
57
+ * (`plan-invalid`, with each violation's rule and position);
58
+ * 4. the plan declares `delegatedCopyApproval` (`delegated-copy-approval-absent`);
59
+ * 5-9. the plan's latest decision, found by time and never by array
60
+ * position, has chosen "approved" and names one sha256 `subjectDigest`.
61
+ * When several decisions share the latest instant, every one is examined:
62
+ * the outcome does not depend on their order;
63
+ * 10. that digest equals the plan's own canonical digest, computed here from
64
+ * the same bytes (`subject-digest-mismatch`). The digest covers
65
+ * `delegatedCopyApproval`, so a declaration added, removed or edited after
66
+ * the approval leaves the plan unapproved for this purpose.
67
+ *
68
+ * Never throws for a bad argument and never echoes plan text. The result and
69
+ * everything in it is frozen, and copied from the bytes, which are copied
70
+ * before they are read.
71
+ */
72
+ export declare function planDelegateCopyAuthority(planBytes: Uint8Array | unknown): PlanDelegateCopyAuthority;
73
+ //# sourceMappingURL=plan-authority.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-authority.d.ts","sourceRoot":"","sources":["../src/plan-authority.ts"],"names":[],"mappings":"AAuBA,iFAAiF;AACjF,MAAM,MAAM,uBAAuB;AACjC,mEAAmE;AACjE,gBAAgB;AAClB,yHAAyH;GACvH,iBAAiB;AACnB,mFAAmF;GACjF,cAAc;AAChB,yDAAyD;GACvD,gCAAgC,GAChC,cAAc;AAChB,oEAAoE;GAClE,2BAA2B;AAC7B,kEAAkE;GAChE,8BAA8B;AAChC,mFAAmF;GACjF,iCAAiC;AACnC,8DAA8D;GAC5D,2BAA2B;AAC7B,qEAAqE;GACnE,yBAAyB,CAAC;AAE9B,oFAAoF;AACpF,MAAM,MAAM,yBAAyB,GACjC;IACE,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;IAC1B,oEAAoE;IACpE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,uHAAuH;IACvH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC,GACD;IACE,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC;IAC1C,mFAAmF;IACnF,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACnF,CAAC;AASN;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,SAAS;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,CAWpG;AAED,iHAAiH;AACjH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAM/D;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,GAAG,yBAAyB,CAuCpG"}