@hypercerts-org/lexicon 0.10.0 → 0.11.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 (168) hide show
  1. package/CHANGELOG.md +205 -0
  2. package/README.md +371 -388
  3. package/SCHEMAS.md +533 -75
  4. package/dist/exports.d.ts +900 -10
  5. package/dist/exports.d.ts.map +1 -1
  6. package/dist/generated/exports.d.ts +900 -10
  7. package/dist/generated/exports.d.ts.map +1 -1
  8. package/dist/generated/lexicons.d.ts +2683 -1093
  9. package/dist/generated/lexicons.d.ts.map +1 -1
  10. package/dist/generated/types/app/bsky/richtext/facet.d.ts +44 -7
  11. package/dist/generated/types/app/bsky/richtext/facet.d.ts.map +1 -1
  12. package/dist/generated/types/app/certified/badge/award.d.ts +2 -3
  13. package/dist/generated/types/app/certified/badge/award.d.ts.map +1 -1
  14. package/dist/generated/types/app/certified/badge/definition.d.ts +3 -3
  15. package/dist/generated/types/app/certified/badge/definition.d.ts.map +1 -1
  16. package/dist/generated/types/app/certified/badge/response.d.ts +2 -2
  17. package/dist/generated/types/app/certified/badge/response.d.ts.map +1 -1
  18. package/dist/generated/types/app/certified/link/evm.d.ts +45 -0
  19. package/dist/generated/types/app/certified/link/evm.d.ts.map +1 -0
  20. package/dist/generated/types/org/hypercerts/claim/activity.d.ts +6 -3
  21. package/dist/generated/types/org/hypercerts/claim/activity.d.ts.map +1 -1
  22. package/dist/generated/types/org/hypercerts/collection.d.ts +11 -5
  23. package/dist/generated/types/org/hypercerts/collection.d.ts.map +1 -1
  24. package/dist/generated/types/org/hypercerts/context/attachment.d.ts +5 -3
  25. package/dist/generated/types/org/hypercerts/context/attachment.d.ts.map +1 -1
  26. package/dist/generated/types/org/hypercerts/context/evaluation.d.ts +6 -6
  27. package/dist/generated/types/org/hypercerts/context/evaluation.d.ts.map +1 -1
  28. package/dist/generated/types/org/hypercerts/defs.d.ts +11 -0
  29. package/dist/generated/types/org/hypercerts/defs.d.ts.map +1 -1
  30. package/dist/generated/types/org/hypercerts/funding/receipt.d.ts +17 -5
  31. package/dist/generated/types/org/hypercerts/funding/receipt.d.ts.map +1 -1
  32. package/dist/generated/types/pub/leaflet/blocks/blockquote.d.ts +13 -0
  33. package/dist/generated/types/pub/leaflet/blocks/blockquote.d.ts.map +1 -0
  34. package/dist/generated/types/pub/leaflet/blocks/bskyPost.d.ts +13 -0
  35. package/dist/generated/types/pub/leaflet/blocks/bskyPost.d.ts.map +1 -0
  36. package/dist/generated/types/pub/leaflet/blocks/button.d.ts +12 -0
  37. package/dist/generated/types/pub/leaflet/blocks/button.d.ts.map +1 -0
  38. package/dist/generated/types/pub/leaflet/blocks/code.d.ts +13 -0
  39. package/dist/generated/types/pub/leaflet/blocks/code.d.ts.map +1 -0
  40. package/dist/generated/types/pub/leaflet/blocks/header.d.ts +14 -0
  41. package/dist/generated/types/pub/leaflet/blocks/header.d.ts.map +1 -0
  42. package/dist/generated/types/pub/leaflet/blocks/horizontalRule.d.ts +10 -0
  43. package/dist/generated/types/pub/leaflet/blocks/horizontalRule.d.ts.map +1 -0
  44. package/dist/generated/types/pub/leaflet/blocks/iframe.d.ts +12 -0
  45. package/dist/generated/types/pub/leaflet/blocks/iframe.d.ts.map +1 -0
  46. package/dist/generated/types/pub/leaflet/blocks/image.d.ts +21 -0
  47. package/dist/generated/types/pub/leaflet/blocks/image.d.ts.map +1 -0
  48. package/dist/generated/types/pub/leaflet/blocks/math.d.ts +11 -0
  49. package/dist/generated/types/pub/leaflet/blocks/math.d.ts.map +1 -0
  50. package/dist/generated/types/pub/leaflet/blocks/orderedList.d.ts +31 -0
  51. package/dist/generated/types/pub/leaflet/blocks/orderedList.d.ts.map +1 -0
  52. package/dist/generated/types/pub/leaflet/blocks/page.d.ts +11 -0
  53. package/dist/generated/types/pub/leaflet/blocks/page.d.ts.map +1 -0
  54. package/dist/generated/types/pub/leaflet/blocks/poll.d.ts +12 -0
  55. package/dist/generated/types/pub/leaflet/blocks/poll.d.ts.map +1 -0
  56. package/dist/generated/types/pub/leaflet/blocks/text.d.ts +14 -0
  57. package/dist/generated/types/pub/leaflet/blocks/text.d.ts.map +1 -0
  58. package/dist/generated/types/pub/leaflet/blocks/unorderedList.d.ts +29 -0
  59. package/dist/generated/types/pub/leaflet/blocks/unorderedList.d.ts.map +1 -0
  60. package/dist/generated/types/pub/leaflet/blocks/website.d.ts +14 -0
  61. package/dist/generated/types/pub/leaflet/blocks/website.d.ts.map +1 -0
  62. package/dist/generated/types/pub/leaflet/pages/linearDocument.d.ts +54 -1
  63. package/dist/generated/types/pub/leaflet/pages/linearDocument.d.ts.map +1 -1
  64. package/dist/generated/types/pub/leaflet/richtext/facet.d.ts +97 -0
  65. package/dist/generated/types/pub/leaflet/richtext/facet.d.ts.map +1 -0
  66. package/dist/index.cjs +4486 -1807
  67. package/dist/index.cjs.map +1 -1
  68. package/dist/index.mjs +4407 -1804
  69. package/dist/index.mjs.map +1 -1
  70. package/dist/lexicons.cjs +927 -35
  71. package/dist/lexicons.cjs.map +1 -1
  72. package/dist/lexicons.d.ts +2683 -1093
  73. package/dist/lexicons.d.ts.map +1 -1
  74. package/dist/lexicons.mjs +927 -35
  75. package/dist/lexicons.mjs.map +1 -1
  76. package/dist/tests/validate-external-lexicons.test.d.ts +2 -0
  77. package/dist/tests/validate-external-lexicons.test.d.ts.map +1 -0
  78. package/dist/tests/validate-funding-receipt.test.d.ts +2 -0
  79. package/dist/tests/validate-funding-receipt.test.d.ts.map +1 -0
  80. package/dist/tests/validate-link-evm.test.d.ts +2 -0
  81. package/dist/tests/validate-link-evm.test.d.ts.map +1 -0
  82. package/dist/tests/validate-rights.test.d.ts +2 -0
  83. package/dist/tests/validate-rights.test.d.ts.map +1 -0
  84. package/dist/types/app/bsky/richtext/facet.d.ts +44 -7
  85. package/dist/types/app/bsky/richtext/facet.d.ts.map +1 -1
  86. package/dist/types/app/certified/badge/award.d.ts +2 -3
  87. package/dist/types/app/certified/badge/award.d.ts.map +1 -1
  88. package/dist/types/app/certified/badge/definition.d.ts +3 -3
  89. package/dist/types/app/certified/badge/definition.d.ts.map +1 -1
  90. package/dist/types/app/certified/badge/response.d.ts +2 -2
  91. package/dist/types/app/certified/badge/response.d.ts.map +1 -1
  92. package/dist/types/app/certified/link/evm.d.ts +45 -0
  93. package/dist/types/app/certified/link/evm.d.ts.map +1 -0
  94. package/dist/types/org/hypercerts/claim/activity.d.ts +6 -3
  95. package/dist/types/org/hypercerts/claim/activity.d.ts.map +1 -1
  96. package/dist/types/org/hypercerts/collection.d.ts +11 -5
  97. package/dist/types/org/hypercerts/collection.d.ts.map +1 -1
  98. package/dist/types/org/hypercerts/context/attachment.d.ts +5 -3
  99. package/dist/types/org/hypercerts/context/attachment.d.ts.map +1 -1
  100. package/dist/types/org/hypercerts/context/evaluation.d.ts +6 -6
  101. package/dist/types/org/hypercerts/context/evaluation.d.ts.map +1 -1
  102. package/dist/types/org/hypercerts/defs.d.ts +11 -0
  103. package/dist/types/org/hypercerts/defs.d.ts.map +1 -1
  104. package/dist/types/org/hypercerts/funding/receipt.d.ts +17 -5
  105. package/dist/types/org/hypercerts/funding/receipt.d.ts.map +1 -1
  106. package/dist/types/pub/leaflet/blocks/blockquote.d.ts +13 -0
  107. package/dist/types/pub/leaflet/blocks/blockquote.d.ts.map +1 -0
  108. package/dist/types/pub/leaflet/blocks/bskyPost.d.ts +13 -0
  109. package/dist/types/pub/leaflet/blocks/bskyPost.d.ts.map +1 -0
  110. package/dist/types/pub/leaflet/blocks/button.d.ts +12 -0
  111. package/dist/types/pub/leaflet/blocks/button.d.ts.map +1 -0
  112. package/dist/types/pub/leaflet/blocks/code.d.ts +13 -0
  113. package/dist/types/pub/leaflet/blocks/code.d.ts.map +1 -0
  114. package/dist/types/pub/leaflet/blocks/header.d.ts +14 -0
  115. package/dist/types/pub/leaflet/blocks/header.d.ts.map +1 -0
  116. package/dist/types/pub/leaflet/blocks/horizontalRule.d.ts +10 -0
  117. package/dist/types/pub/leaflet/blocks/horizontalRule.d.ts.map +1 -0
  118. package/dist/types/pub/leaflet/blocks/iframe.d.ts +12 -0
  119. package/dist/types/pub/leaflet/blocks/iframe.d.ts.map +1 -0
  120. package/dist/types/pub/leaflet/blocks/image.d.ts +21 -0
  121. package/dist/types/pub/leaflet/blocks/image.d.ts.map +1 -0
  122. package/dist/types/pub/leaflet/blocks/math.d.ts +11 -0
  123. package/dist/types/pub/leaflet/blocks/math.d.ts.map +1 -0
  124. package/dist/types/pub/leaflet/blocks/orderedList.d.ts +31 -0
  125. package/dist/types/pub/leaflet/blocks/orderedList.d.ts.map +1 -0
  126. package/dist/types/pub/leaflet/blocks/page.d.ts +11 -0
  127. package/dist/types/pub/leaflet/blocks/page.d.ts.map +1 -0
  128. package/dist/types/pub/leaflet/blocks/poll.d.ts +12 -0
  129. package/dist/types/pub/leaflet/blocks/poll.d.ts.map +1 -0
  130. package/dist/types/pub/leaflet/blocks/text.d.ts +14 -0
  131. package/dist/types/pub/leaflet/blocks/text.d.ts.map +1 -0
  132. package/dist/types/pub/leaflet/blocks/unorderedList.d.ts +29 -0
  133. package/dist/types/pub/leaflet/blocks/unorderedList.d.ts.map +1 -0
  134. package/dist/types/pub/leaflet/blocks/website.d.ts +14 -0
  135. package/dist/types/pub/leaflet/blocks/website.d.ts.map +1 -0
  136. package/dist/types/pub/leaflet/pages/linearDocument.d.ts +54 -1
  137. package/dist/types/pub/leaflet/pages/linearDocument.d.ts.map +1 -1
  138. package/dist/types/pub/leaflet/richtext/facet.d.ts +97 -0
  139. package/dist/types/pub/leaflet/richtext/facet.d.ts.map +1 -0
  140. package/lexicons/app/bsky/richtext/facet.json +51 -0
  141. package/lexicons/app/certified/badge/award.json +2 -2
  142. package/lexicons/app/certified/badge/definition.json +10 -2
  143. package/lexicons/app/certified/badge/response.json +2 -2
  144. package/lexicons/app/certified/link/evm.json +88 -0
  145. package/lexicons/org/hypercerts/claim/activity.json +8 -4
  146. package/lexicons/org/hypercerts/collection.json +19 -5
  147. package/lexicons/org/hypercerts/context/attachment.json +16 -5
  148. package/lexicons/org/hypercerts/context/evaluation.json +9 -6
  149. package/lexicons/org/hypercerts/defs.json +21 -0
  150. package/lexicons/org/hypercerts/funding/receipt.json +30 -10
  151. package/lexicons/pub/leaflet/blocks/blockquote.json +22 -0
  152. package/lexicons/pub/leaflet/blocks/bskyPost.json +19 -0
  153. package/lexicons/pub/leaflet/blocks/button.json +19 -0
  154. package/lexicons/pub/leaflet/blocks/code.json +21 -0
  155. package/lexicons/pub/leaflet/blocks/header.json +27 -0
  156. package/lexicons/pub/leaflet/blocks/horizontalRule.json +11 -0
  157. package/lexicons/pub/leaflet/blocks/iframe.json +21 -0
  158. package/lexicons/pub/leaflet/blocks/image.json +37 -0
  159. package/lexicons/pub/leaflet/blocks/math.json +15 -0
  160. package/lexicons/pub/leaflet/blocks/orderedList.json +54 -0
  161. package/lexicons/pub/leaflet/blocks/page.json +15 -0
  162. package/lexicons/pub/leaflet/blocks/poll.json +16 -0
  163. package/lexicons/pub/leaflet/blocks/text.json +26 -0
  164. package/lexicons/pub/leaflet/blocks/unorderedList.json +50 -0
  165. package/lexicons/pub/leaflet/blocks/website.json +27 -0
  166. package/lexicons/pub/leaflet/pages/linearDocument.json +98 -0
  167. package/lexicons/pub/leaflet/richtext/facet.json +149 -0
  168. package/package.json +3 -4
package/dist/lexicons.mjs CHANGED
@@ -28,6 +28,83 @@ function maybe$typed(v, id, hash) {
28
28
  * GENERATED CODE - DO NOT MODIFY
29
29
  */
30
30
  const schemaDict = {
31
+ AppBskyRichtextFacet: {
32
+ lexicon: 1,
33
+ id: 'app.bsky.richtext.facet',
34
+ defs: {
35
+ main: {
36
+ type: 'object',
37
+ description: 'Annotation of a sub-string within rich text.',
38
+ required: ['index', 'features'],
39
+ properties: {
40
+ index: {
41
+ type: 'ref',
42
+ ref: 'lex:app.bsky.richtext.facet#byteSlice',
43
+ },
44
+ features: {
45
+ type: 'array',
46
+ items: {
47
+ type: 'union',
48
+ refs: [
49
+ 'lex:app.bsky.richtext.facet#mention',
50
+ 'lex:app.bsky.richtext.facet#link',
51
+ 'lex:app.bsky.richtext.facet#tag',
52
+ ],
53
+ },
54
+ },
55
+ },
56
+ },
57
+ mention: {
58
+ type: 'object',
59
+ description: "Facet feature for mention of another account. The text is usually a handle, including a '@' prefix, but the facet reference is a DID.",
60
+ required: ['did'],
61
+ properties: {
62
+ did: {
63
+ type: 'string',
64
+ format: 'did',
65
+ },
66
+ },
67
+ },
68
+ link: {
69
+ type: 'object',
70
+ description: 'Facet feature for a URL. The text URL may have been simplified or truncated, but the facet reference should be a complete URL.',
71
+ required: ['uri'],
72
+ properties: {
73
+ uri: {
74
+ type: 'string',
75
+ format: 'uri',
76
+ },
77
+ },
78
+ },
79
+ tag: {
80
+ type: 'object',
81
+ description: "Facet feature for a hashtag. The text usually includes a '#' prefix, but the facet reference should not (except in the case of 'double hash tags').",
82
+ required: ['tag'],
83
+ properties: {
84
+ tag: {
85
+ type: 'string',
86
+ maxLength: 640,
87
+ maxGraphemes: 64,
88
+ },
89
+ },
90
+ },
91
+ byteSlice: {
92
+ type: 'object',
93
+ description: 'Specifies the sub-string range a facet feature applies to. Start index is inclusive, end index is exclusive. Indices are zero-indexed, counting bytes of the UTF-8 encoded text. NOTE: some languages, like Javascript, use UTF-16 or Unicode codepoints for string slice indexing; in these languages, convert to byte arrays before working with facets.',
94
+ required: ['byteStart', 'byteEnd'],
95
+ properties: {
96
+ byteStart: {
97
+ type: 'integer',
98
+ minimum: 0,
99
+ },
100
+ byteEnd: {
101
+ type: 'integer',
102
+ minimum: 0,
103
+ },
104
+ },
105
+ },
106
+ },
107
+ },
31
108
  AppCertifiedActorOrganization: {
32
109
  lexicon: 1,
33
110
  id: 'app.certified.actor.organization',
@@ -173,8 +250,8 @@ const schemaDict = {
173
250
  properties: {
174
251
  badge: {
175
252
  type: 'ref',
176
- ref: 'lex:app.certified.badge.definition',
177
- description: 'Reference to the badge definition for this award.',
253
+ ref: 'lex:com.atproto.repo.strongRef',
254
+ description: 'Strong reference to the badge definition at the time of award. The record referenced must conform with the lexicon app.certified.badge.definition.',
178
255
  },
179
256
  subject: {
180
257
  type: 'union',
@@ -215,11 +292,19 @@ const schemaDict = {
215
292
  key: 'tid',
216
293
  record: {
217
294
  type: 'object',
218
- required: ['title', 'badgeType', 'icon', 'createdAt'],
295
+ required: ['title', 'badgeType', 'createdAt'],
219
296
  properties: {
220
297
  badgeType: {
221
298
  type: 'string',
222
- description: 'Category of the badge (e.g. endorsement, participation, affiliation).',
299
+ description: 'Category of the badge. Values beyond the known set are permitted.',
300
+ knownValues: [
301
+ 'endorsement',
302
+ 'verification',
303
+ 'participation',
304
+ 'certification',
305
+ 'affiliation',
306
+ 'recognition',
307
+ ],
223
308
  maxLength: 100,
224
309
  },
225
310
  title: {
@@ -277,8 +362,8 @@ const schemaDict = {
277
362
  properties: {
278
363
  badgeAward: {
279
364
  type: 'ref',
280
- ref: 'lex:app.certified.badge.award',
281
- description: 'Reference to the badge award.',
365
+ ref: 'lex:com.atproto.repo.strongRef',
366
+ description: 'Strong reference to the badge award being responded to. The record referenced must conform with the lexicon app.certified.badge.award.',
282
367
  },
283
368
  response: {
284
369
  type: 'string',
@@ -320,6 +405,94 @@ const schemaDict = {
320
405
  },
321
406
  },
322
407
  },
408
+ AppCertifiedLinkEvm: {
409
+ lexicon: 1,
410
+ id: 'app.certified.link.evm',
411
+ defs: {
412
+ main: {
413
+ type: 'record',
414
+ description: 'A verifiable link between an ATProto DID and an EVM wallet address, proven via a cryptographic signature. Currently supports EOA wallets via EIP-712 typed data signatures; the proof field is an open union to allow future signature methods.',
415
+ key: 'any',
416
+ record: {
417
+ type: 'object',
418
+ required: ['address', 'proof', 'createdAt'],
419
+ properties: {
420
+ address: {
421
+ type: 'string',
422
+ description: 'EVM wallet address (0x-prefixed, with EIP-55 checksum recommended).',
423
+ minLength: 42,
424
+ maxLength: 42,
425
+ },
426
+ proof: {
427
+ type: 'union',
428
+ refs: ['lex:app.certified.link.evm#eip712Proof'],
429
+ description: 'Cryptographic proof of wallet ownership. The union is open to allow future proof methods (e.g. ERC-1271, ERC-6492). Each variant bundles its signature with the corresponding message format.',
430
+ },
431
+ createdAt: {
432
+ type: 'string',
433
+ format: 'datetime',
434
+ description: 'Client-declared timestamp when this record was originally created.',
435
+ },
436
+ },
437
+ },
438
+ },
439
+ eip712Proof: {
440
+ type: 'object',
441
+ description: 'EOA wallet ownership proof via EIP-712 typed data signature. Contains both the structured message that was signed and the resulting signature.',
442
+ required: ['signature', 'message'],
443
+ properties: {
444
+ signature: {
445
+ type: 'string',
446
+ description: 'ECDSA signature over the EIP-712 hash (hex-encoded with 0x prefix, 64 or 65 bytes).',
447
+ minLength: 130,
448
+ maxLength: 132,
449
+ },
450
+ message: {
451
+ type: 'ref',
452
+ ref: 'lex:app.certified.link.evm#eip712Message',
453
+ description: 'The EIP-712 structured message fields that were signed.',
454
+ },
455
+ },
456
+ },
457
+ eip712Message: {
458
+ type: 'object',
459
+ description: 'The EIP-712 typed data message that was signed by the wallet. Contains the fields binding an ATProto DID to an EVM address on a specific chain.',
460
+ required: ['did', 'evmAddress', 'chainId', 'timestamp', 'nonce'],
461
+ properties: {
462
+ did: {
463
+ type: 'string',
464
+ format: 'did',
465
+ description: 'The ATProto DID being linked to the EVM address.',
466
+ maxLength: 256,
467
+ },
468
+ evmAddress: {
469
+ type: 'string',
470
+ description: 'The EVM wallet address (must match the top-level address field).',
471
+ minLength: 42,
472
+ maxLength: 42,
473
+ },
474
+ chainId: {
475
+ type: 'string',
476
+ description: 'EVM chain ID as string (bigint serialized). Identifies which chain was used for signing; for EOA wallets the identity link applies across all EVM-compatible chains.',
477
+ minLength: 1,
478
+ maxLength: 78,
479
+ },
480
+ timestamp: {
481
+ type: 'string',
482
+ description: 'Unix timestamp when the attestation was created (bigint serialized).',
483
+ minLength: 1,
484
+ maxLength: 78,
485
+ },
486
+ nonce: {
487
+ type: 'string',
488
+ description: 'Replay-protection nonce (bigint serialized).',
489
+ minLength: 1,
490
+ maxLength: 78,
491
+ },
492
+ },
493
+ },
494
+ },
495
+ },
323
496
  AppCertifiedLocation: {
324
497
  lexicon: 1,
325
498
  id: 'app.certified.location',
@@ -689,9 +862,13 @@ const schemaDict = {
689
862
  },
690
863
  },
691
864
  description: {
692
- type: 'ref',
693
- ref: 'lex:pub.leaflet.pages.linearDocument#main',
694
- description: 'Rich-text description, represented as a Leaflet linear document.',
865
+ type: 'union',
866
+ refs: [
867
+ 'lex:org.hypercerts.defs#descriptionString',
868
+ 'lex:pub.leaflet.pages.linearDocument',
869
+ 'lex:com.atproto.repo.strongRef',
870
+ ],
871
+ description: 'Long-form description of the activity. An inline string for plain text or markdown, a Leaflet linear document for rich-text content, or a strong reference to an external description record.',
695
872
  },
696
873
  image: {
697
874
  type: 'union',
@@ -704,7 +881,6 @@ const schemaDict = {
704
881
  contributors: {
705
882
  type: 'array',
706
883
  description: 'An array of contributor objects, each containing contributor information, weight, and contribution details.',
707
- maxLength: 1000,
708
884
  items: {
709
885
  type: 'ref',
710
886
  ref: 'lex:org.hypercerts.claim.activity#contributor',
@@ -752,6 +928,7 @@ const schemaDict = {
752
928
  },
753
929
  contributor: {
754
930
  type: 'object',
931
+ description: 'A contributor to the activity, with identity, weight, and contribution details.',
755
932
  required: ['contributorIdentity'],
756
933
  properties: {
757
934
  contributorIdentity: {
@@ -966,7 +1143,8 @@ const schemaDict = {
966
1143
  properties: {
967
1144
  type: {
968
1145
  type: 'string',
969
- description: "The type of this collection. Possible fields can be 'favorites', 'project', or any other type of collection.",
1146
+ description: 'The type of this collection. Values beyond the known set are permitted.',
1147
+ knownValues: ['favorites', 'project', 'portfolio', 'program'],
970
1148
  maxLength: 64,
971
1149
  },
972
1150
  title: {
@@ -979,12 +1157,24 @@ const schemaDict = {
979
1157
  type: 'string',
980
1158
  maxLength: 3000,
981
1159
  maxGraphemes: 300,
982
- description: 'Short summary of this collection, suitable for previews and list views',
1160
+ description: 'Short summary of this collection, suitable for previews and list views. Rich text annotations may be provided via `shortDescriptionFacets`.',
1161
+ },
1162
+ shortDescriptionFacets: {
1163
+ type: 'array',
1164
+ description: 'Rich text annotations for `shortDescription` (mentions, URLs, hashtags, etc).',
1165
+ items: {
1166
+ type: 'ref',
1167
+ ref: 'lex:app.bsky.richtext.facet',
1168
+ },
983
1169
  },
984
1170
  description: {
985
- type: 'ref',
986
- ref: 'lex:pub.leaflet.pages.linearDocument#main',
987
- description: 'Rich-text description, represented as a Leaflet linear document.',
1171
+ type: 'union',
1172
+ refs: [
1173
+ 'lex:org.hypercerts.defs#descriptionString',
1174
+ 'lex:pub.leaflet.pages.linearDocument',
1175
+ 'lex:com.atproto.repo.strongRef',
1176
+ ],
1177
+ description: 'Long-form description of the collection. An inline string for plain text or markdown, a Leaflet linear document for rich-text content, or a strong reference to an external description record.',
988
1178
  },
989
1179
  avatar: {
990
1180
  type: 'union',
@@ -1026,6 +1216,7 @@ const schemaDict = {
1026
1216
  },
1027
1217
  item: {
1028
1218
  type: 'object',
1219
+ description: 'An item in a collection, with an identifier and optional weight.',
1029
1220
  required: ['itemIdentifier'],
1030
1221
  properties: {
1031
1222
  itemIdentifier: {
@@ -1110,8 +1301,15 @@ const schemaDict = {
1110
1301
  },
1111
1302
  contentType: {
1112
1303
  type: 'string',
1304
+ description: 'The type of attachment. Values beyond the known set are permitted.',
1305
+ knownValues: [
1306
+ 'report',
1307
+ 'audit',
1308
+ 'evidence',
1309
+ 'testimonial',
1310
+ 'methodology',
1311
+ ],
1113
1312
  maxLength: 64,
1114
- description: 'The type of attachment, e.g. report, audit, evidence, testimonial, methodology, etc.',
1115
1313
  },
1116
1314
  content: {
1117
1315
  type: 'array',
@@ -1145,9 +1343,13 @@ const schemaDict = {
1145
1343
  },
1146
1344
  },
1147
1345
  description: {
1148
- type: 'ref',
1149
- ref: 'lex:pub.leaflet.pages.linearDocument#main',
1150
- description: 'Rich-text description, represented as a Leaflet linear document.',
1346
+ type: 'union',
1347
+ refs: [
1348
+ 'lex:org.hypercerts.defs#descriptionString',
1349
+ 'lex:pub.leaflet.pages.linearDocument',
1350
+ 'lex:com.atproto.repo.strongRef',
1351
+ ],
1352
+ description: 'Long-form description of the attachment. An inline string for plain text or markdown, a Leaflet linear document for rich-text content, or a strong reference to an external description record.',
1151
1353
  },
1152
1354
  location: {
1153
1355
  type: 'ref',
@@ -1241,16 +1443,19 @@ const schemaDict = {
1241
1443
  required: ['min', 'max', 'value'],
1242
1444
  properties: {
1243
1445
  min: {
1244
- type: 'integer',
1245
- description: 'Minimum value of the scale, e.g. 0 or 1.',
1446
+ type: 'string',
1447
+ description: "Minimum value of the scale as a numeric string (e.g. '0', '1').",
1448
+ maxLength: 50,
1246
1449
  },
1247
1450
  max: {
1248
- type: 'integer',
1249
- description: 'Maximum value of the scale, e.g. 5 or 10.',
1451
+ type: 'string',
1452
+ description: "Maximum value of the scale as a numeric string (e.g. '5', '10').",
1453
+ maxLength: 50,
1250
1454
  },
1251
1455
  value: {
1252
- type: 'integer',
1253
- description: 'Score within the inclusive range [min, max].',
1456
+ type: 'string',
1457
+ description: "Score within the inclusive range [min, max] as a numeric string (e.g. '3.7').",
1458
+ maxLength: 50,
1254
1459
  },
1255
1460
  },
1256
1461
  },
@@ -1368,6 +1573,27 @@ const schemaDict = {
1368
1573
  id: 'org.hypercerts.defs',
1369
1574
  description: 'Common type definitions used across all Hypercerts protocols.',
1370
1575
  defs: {
1576
+ descriptionString: {
1577
+ type: 'object',
1578
+ description: 'An inline long-form description as plain text or markdown, with optional rich-text annotations.',
1579
+ required: ['value'],
1580
+ properties: {
1581
+ value: {
1582
+ type: 'string',
1583
+ description: 'The description text (plain text or markdown).',
1584
+ maxLength: 250000,
1585
+ maxGraphemes: 25000,
1586
+ },
1587
+ facets: {
1588
+ type: 'array',
1589
+ description: 'Rich text annotations for the description (mentions, URLs, hashtags, etc).',
1590
+ items: {
1591
+ type: 'ref',
1592
+ ref: 'lex:app.bsky.richtext.facet',
1593
+ },
1594
+ },
1595
+ },
1596
+ },
1371
1597
  uri: {
1372
1598
  type: 'object',
1373
1599
  required: ['uri'],
@@ -1457,17 +1683,25 @@ const schemaDict = {
1457
1683
  key: 'tid',
1458
1684
  record: {
1459
1685
  type: 'object',
1460
- required: ['from', 'to', 'amount', 'currency', 'createdAt'],
1686
+ required: ['to', 'amount', 'currency', 'createdAt'],
1461
1687
  properties: {
1462
1688
  from: {
1463
- type: 'ref',
1464
- ref: 'lex:app.certified.defs#did',
1465
- description: 'DID of the sender who transferred the funds. Leave empty if sender wants to stay anonymous.',
1689
+ type: 'union',
1690
+ description: 'The sender of the funds (a free-text string, an account DID, or a strong reference to a record). Optional — omit to represent anonymity.',
1691
+ refs: [
1692
+ 'lex:org.hypercerts.funding.receipt#text',
1693
+ 'lex:app.certified.defs#did',
1694
+ 'lex:com.atproto.repo.strongRef',
1695
+ ],
1466
1696
  },
1467
1697
  to: {
1468
- type: 'string',
1469
- description: 'The recipient of the funds. Can be identified by DID or a clear-text name.',
1470
- maxLength: 2048,
1698
+ type: 'union',
1699
+ description: 'The recipient of the funds (a free-text string, an account DID, or a strong reference to a record).',
1700
+ refs: [
1701
+ 'lex:org.hypercerts.funding.receipt#text',
1702
+ 'lex:app.certified.defs#did',
1703
+ 'lex:com.atproto.repo.strongRef',
1704
+ ],
1471
1705
  },
1472
1706
  amount: {
1473
1707
  type: 'string',
@@ -1495,9 +1729,9 @@ const schemaDict = {
1495
1729
  maxLength: 256,
1496
1730
  },
1497
1731
  for: {
1498
- type: 'string',
1499
- format: 'at-uri',
1500
- description: 'Optional reference to the activity, project, or organization this funding relates to.',
1732
+ type: 'ref',
1733
+ ref: 'lex:com.atproto.repo.strongRef',
1734
+ description: 'Optional strong reference to the activity, project, or organization this funding relates to.',
1501
1735
  },
1502
1736
  notes: {
1503
1737
  type: 'string',
@@ -1517,6 +1751,18 @@ const schemaDict = {
1517
1751
  },
1518
1752
  },
1519
1753
  },
1754
+ text: {
1755
+ type: 'object',
1756
+ description: 'A free-text string value (e.g. a display name, wallet address, or other identifier).',
1757
+ required: ['value'],
1758
+ properties: {
1759
+ value: {
1760
+ type: 'string',
1761
+ description: 'The string value.',
1762
+ maxLength: 2048,
1763
+ },
1764
+ },
1765
+ },
1520
1766
  },
1521
1767
  },
1522
1768
  OrgHypercertsWorkscopeCel: {
@@ -1645,6 +1891,633 @@ const schemaDict = {
1645
1891
  },
1646
1892
  },
1647
1893
  },
1894
+ PubLeafletBlocksBlockquote: {
1895
+ lexicon: 1,
1896
+ id: 'pub.leaflet.blocks.blockquote',
1897
+ defs: {
1898
+ main: {
1899
+ type: 'object',
1900
+ required: ['plaintext'],
1901
+ properties: {
1902
+ plaintext: {
1903
+ type: 'string',
1904
+ },
1905
+ facets: {
1906
+ type: 'array',
1907
+ items: {
1908
+ type: 'ref',
1909
+ ref: 'lex:pub.leaflet.richtext.facet',
1910
+ },
1911
+ },
1912
+ },
1913
+ },
1914
+ },
1915
+ },
1916
+ PubLeafletBlocksBskyPost: {
1917
+ lexicon: 1,
1918
+ id: 'pub.leaflet.blocks.bskyPost',
1919
+ defs: {
1920
+ main: {
1921
+ type: 'object',
1922
+ required: ['postRef'],
1923
+ properties: {
1924
+ postRef: {
1925
+ type: 'ref',
1926
+ ref: 'lex:com.atproto.repo.strongRef',
1927
+ },
1928
+ clientHost: {
1929
+ type: 'string',
1930
+ },
1931
+ },
1932
+ },
1933
+ },
1934
+ },
1935
+ PubLeafletBlocksButton: {
1936
+ lexicon: 1,
1937
+ id: 'pub.leaflet.blocks.button',
1938
+ defs: {
1939
+ main: {
1940
+ type: 'object',
1941
+ required: ['text', 'url'],
1942
+ properties: {
1943
+ text: {
1944
+ type: 'string',
1945
+ },
1946
+ url: {
1947
+ type: 'string',
1948
+ format: 'uri',
1949
+ },
1950
+ },
1951
+ },
1952
+ },
1953
+ },
1954
+ PubLeafletBlocksCode: {
1955
+ lexicon: 1,
1956
+ id: 'pub.leaflet.blocks.code',
1957
+ defs: {
1958
+ main: {
1959
+ type: 'object',
1960
+ required: ['plaintext'],
1961
+ properties: {
1962
+ plaintext: {
1963
+ type: 'string',
1964
+ },
1965
+ language: {
1966
+ type: 'string',
1967
+ },
1968
+ syntaxHighlightingTheme: {
1969
+ type: 'string',
1970
+ },
1971
+ },
1972
+ },
1973
+ },
1974
+ },
1975
+ PubLeafletBlocksHeader: {
1976
+ lexicon: 1,
1977
+ id: 'pub.leaflet.blocks.header',
1978
+ defs: {
1979
+ main: {
1980
+ type: 'object',
1981
+ required: ['plaintext'],
1982
+ properties: {
1983
+ level: {
1984
+ type: 'integer',
1985
+ minimum: 1,
1986
+ maximum: 6,
1987
+ },
1988
+ plaintext: {
1989
+ type: 'string',
1990
+ },
1991
+ facets: {
1992
+ type: 'array',
1993
+ items: {
1994
+ type: 'ref',
1995
+ ref: 'lex:pub.leaflet.richtext.facet',
1996
+ },
1997
+ },
1998
+ },
1999
+ },
2000
+ },
2001
+ },
2002
+ PubLeafletBlocksHorizontalRule: {
2003
+ lexicon: 1,
2004
+ id: 'pub.leaflet.blocks.horizontalRule',
2005
+ defs: {
2006
+ main: {
2007
+ type: 'object',
2008
+ required: [],
2009
+ properties: {},
2010
+ },
2011
+ },
2012
+ },
2013
+ PubLeafletBlocksIframe: {
2014
+ lexicon: 1,
2015
+ id: 'pub.leaflet.blocks.iframe',
2016
+ defs: {
2017
+ main: {
2018
+ type: 'object',
2019
+ required: ['url'],
2020
+ properties: {
2021
+ url: {
2022
+ type: 'string',
2023
+ format: 'uri',
2024
+ },
2025
+ height: {
2026
+ type: 'integer',
2027
+ minimum: 16,
2028
+ maximum: 1600,
2029
+ },
2030
+ },
2031
+ },
2032
+ },
2033
+ },
2034
+ PubLeafletBlocksImage: {
2035
+ lexicon: 1,
2036
+ id: 'pub.leaflet.blocks.image',
2037
+ defs: {
2038
+ main: {
2039
+ type: 'object',
2040
+ required: ['image', 'aspectRatio'],
2041
+ properties: {
2042
+ image: {
2043
+ type: 'blob',
2044
+ accept: ['image/*'],
2045
+ maxSize: 1000000,
2046
+ },
2047
+ alt: {
2048
+ type: 'string',
2049
+ description: 'Alt text description of the image, for accessibility.',
2050
+ },
2051
+ aspectRatio: {
2052
+ type: 'ref',
2053
+ ref: 'lex:pub.leaflet.blocks.image#aspectRatio',
2054
+ },
2055
+ },
2056
+ },
2057
+ aspectRatio: {
2058
+ type: 'object',
2059
+ required: ['width', 'height'],
2060
+ properties: {
2061
+ width: {
2062
+ type: 'integer',
2063
+ },
2064
+ height: {
2065
+ type: 'integer',
2066
+ },
2067
+ },
2068
+ },
2069
+ },
2070
+ },
2071
+ PubLeafletBlocksMath: {
2072
+ lexicon: 1,
2073
+ id: 'pub.leaflet.blocks.math',
2074
+ defs: {
2075
+ main: {
2076
+ type: 'object',
2077
+ required: ['tex'],
2078
+ properties: {
2079
+ tex: {
2080
+ type: 'string',
2081
+ },
2082
+ },
2083
+ },
2084
+ },
2085
+ },
2086
+ PubLeafletBlocksOrderedList: {
2087
+ lexicon: 1,
2088
+ id: 'pub.leaflet.blocks.orderedList',
2089
+ defs: {
2090
+ main: {
2091
+ type: 'object',
2092
+ required: ['children'],
2093
+ properties: {
2094
+ startIndex: {
2095
+ type: 'integer',
2096
+ description: 'The starting number for this ordered list. Defaults to 1 if not specified.',
2097
+ },
2098
+ children: {
2099
+ type: 'array',
2100
+ items: {
2101
+ type: 'ref',
2102
+ ref: 'lex:pub.leaflet.blocks.orderedList#listItem',
2103
+ },
2104
+ },
2105
+ },
2106
+ },
2107
+ listItem: {
2108
+ type: 'object',
2109
+ required: ['content'],
2110
+ properties: {
2111
+ checked: {
2112
+ type: 'boolean',
2113
+ description: 'If present, this item is a checklist item. true = checked, false = unchecked. If absent, this is a normal list item.',
2114
+ },
2115
+ content: {
2116
+ type: 'union',
2117
+ refs: [
2118
+ 'lex:pub.leaflet.blocks.text',
2119
+ 'lex:pub.leaflet.blocks.header',
2120
+ 'lex:pub.leaflet.blocks.image',
2121
+ ],
2122
+ },
2123
+ children: {
2124
+ type: 'array',
2125
+ description: 'Nested ordered list items. Mutually exclusive with unorderedListChildren; if both are present, children takes precedence.',
2126
+ items: {
2127
+ type: 'ref',
2128
+ ref: 'lex:pub.leaflet.blocks.orderedList#listItem',
2129
+ },
2130
+ },
2131
+ unorderedListChildren: {
2132
+ type: 'ref',
2133
+ description: 'A nested unordered list. Mutually exclusive with children; if both are present, children takes precedence.',
2134
+ ref: 'lex:pub.leaflet.blocks.unorderedList',
2135
+ },
2136
+ },
2137
+ },
2138
+ },
2139
+ },
2140
+ PubLeafletBlocksPage: {
2141
+ lexicon: 1,
2142
+ id: 'pub.leaflet.blocks.page',
2143
+ defs: {
2144
+ main: {
2145
+ type: 'object',
2146
+ required: ['id'],
2147
+ properties: {
2148
+ id: {
2149
+ type: 'string',
2150
+ },
2151
+ },
2152
+ },
2153
+ },
2154
+ },
2155
+ PubLeafletBlocksPoll: {
2156
+ lexicon: 1,
2157
+ id: 'pub.leaflet.blocks.poll',
2158
+ defs: {
2159
+ main: {
2160
+ type: 'object',
2161
+ required: ['pollRef'],
2162
+ properties: {
2163
+ pollRef: {
2164
+ type: 'ref',
2165
+ ref: 'lex:com.atproto.repo.strongRef',
2166
+ },
2167
+ },
2168
+ },
2169
+ },
2170
+ },
2171
+ PubLeafletBlocksText: {
2172
+ lexicon: 1,
2173
+ id: 'pub.leaflet.blocks.text',
2174
+ defs: {
2175
+ main: {
2176
+ type: 'object',
2177
+ required: ['plaintext'],
2178
+ properties: {
2179
+ plaintext: {
2180
+ type: 'string',
2181
+ },
2182
+ textSize: {
2183
+ type: 'string',
2184
+ enum: ['default', 'small', 'large'],
2185
+ },
2186
+ facets: {
2187
+ type: 'array',
2188
+ items: {
2189
+ type: 'ref',
2190
+ ref: 'lex:pub.leaflet.richtext.facet',
2191
+ },
2192
+ },
2193
+ },
2194
+ },
2195
+ },
2196
+ },
2197
+ PubLeafletBlocksUnorderedList: {
2198
+ lexicon: 1,
2199
+ id: 'pub.leaflet.blocks.unorderedList',
2200
+ defs: {
2201
+ main: {
2202
+ type: 'object',
2203
+ required: ['children'],
2204
+ properties: {
2205
+ children: {
2206
+ type: 'array',
2207
+ items: {
2208
+ type: 'ref',
2209
+ ref: 'lex:pub.leaflet.blocks.unorderedList#listItem',
2210
+ },
2211
+ },
2212
+ },
2213
+ },
2214
+ listItem: {
2215
+ type: 'object',
2216
+ required: ['content'],
2217
+ properties: {
2218
+ checked: {
2219
+ type: 'boolean',
2220
+ description: 'If present, this item is a checklist item. true = checked, false = unchecked. If absent, this is a normal list item.',
2221
+ },
2222
+ content: {
2223
+ type: 'union',
2224
+ refs: [
2225
+ 'lex:pub.leaflet.blocks.text',
2226
+ 'lex:pub.leaflet.blocks.header',
2227
+ 'lex:pub.leaflet.blocks.image',
2228
+ ],
2229
+ },
2230
+ children: {
2231
+ type: 'array',
2232
+ description: 'Nested unordered list items. Mutually exclusive with orderedListChildren; if both are present, children takes precedence.',
2233
+ items: {
2234
+ type: 'ref',
2235
+ ref: 'lex:pub.leaflet.blocks.unorderedList#listItem',
2236
+ },
2237
+ },
2238
+ orderedListChildren: {
2239
+ type: 'ref',
2240
+ description: 'Nested ordered list items. Mutually exclusive with children; if both are present, children takes precedence.',
2241
+ ref: 'lex:pub.leaflet.blocks.orderedList',
2242
+ },
2243
+ },
2244
+ },
2245
+ },
2246
+ },
2247
+ PubLeafletBlocksWebsite: {
2248
+ lexicon: 1,
2249
+ id: 'pub.leaflet.blocks.website',
2250
+ defs: {
2251
+ main: {
2252
+ type: 'object',
2253
+ required: ['src'],
2254
+ properties: {
2255
+ previewImage: {
2256
+ type: 'blob',
2257
+ accept: ['image/*'],
2258
+ maxSize: 1000000,
2259
+ },
2260
+ title: {
2261
+ type: 'string',
2262
+ },
2263
+ description: {
2264
+ type: 'string',
2265
+ },
2266
+ src: {
2267
+ type: 'string',
2268
+ format: 'uri',
2269
+ },
2270
+ },
2271
+ },
2272
+ },
2273
+ },
2274
+ PubLeafletPagesLinearDocument: {
2275
+ lexicon: 1,
2276
+ id: 'pub.leaflet.pages.linearDocument',
2277
+ defs: {
2278
+ main: {
2279
+ type: 'object',
2280
+ required: ['blocks'],
2281
+ properties: {
2282
+ id: {
2283
+ type: 'string',
2284
+ },
2285
+ blocks: {
2286
+ type: 'array',
2287
+ items: {
2288
+ type: 'ref',
2289
+ ref: 'lex:pub.leaflet.pages.linearDocument#block',
2290
+ },
2291
+ },
2292
+ },
2293
+ },
2294
+ block: {
2295
+ type: 'object',
2296
+ required: ['block'],
2297
+ properties: {
2298
+ block: {
2299
+ type: 'union',
2300
+ refs: [
2301
+ 'lex:pub.leaflet.blocks.iframe',
2302
+ 'lex:pub.leaflet.blocks.text',
2303
+ 'lex:pub.leaflet.blocks.blockquote',
2304
+ 'lex:pub.leaflet.blocks.header',
2305
+ 'lex:pub.leaflet.blocks.image',
2306
+ 'lex:pub.leaflet.blocks.unorderedList',
2307
+ 'lex:pub.leaflet.blocks.orderedList',
2308
+ 'lex:pub.leaflet.blocks.website',
2309
+ 'lex:pub.leaflet.blocks.math',
2310
+ 'lex:pub.leaflet.blocks.code',
2311
+ 'lex:pub.leaflet.blocks.horizontalRule',
2312
+ 'lex:pub.leaflet.blocks.bskyPost',
2313
+ 'lex:pub.leaflet.blocks.page',
2314
+ 'lex:pub.leaflet.blocks.poll',
2315
+ 'lex:pub.leaflet.blocks.button',
2316
+ ],
2317
+ },
2318
+ alignment: {
2319
+ type: 'string',
2320
+ knownValues: [
2321
+ 'lex:pub.leaflet.pages.linearDocument#textAlignLeft',
2322
+ 'lex:pub.leaflet.pages.linearDocument#textAlignCenter',
2323
+ 'lex:pub.leaflet.pages.linearDocument#textAlignRight',
2324
+ 'lex:pub.leaflet.pages.linearDocument#textAlignJustify',
2325
+ ],
2326
+ },
2327
+ },
2328
+ },
2329
+ textAlignLeft: {
2330
+ type: 'token',
2331
+ },
2332
+ textAlignCenter: {
2333
+ type: 'token',
2334
+ },
2335
+ textAlignRight: {
2336
+ type: 'token',
2337
+ },
2338
+ textAlignJustify: {
2339
+ type: 'token',
2340
+ },
2341
+ quote: {
2342
+ type: 'object',
2343
+ required: ['start', 'end'],
2344
+ properties: {
2345
+ start: {
2346
+ type: 'ref',
2347
+ ref: 'lex:pub.leaflet.pages.linearDocument#position',
2348
+ },
2349
+ end: {
2350
+ type: 'ref',
2351
+ ref: 'lex:pub.leaflet.pages.linearDocument#position',
2352
+ },
2353
+ },
2354
+ },
2355
+ position: {
2356
+ type: 'object',
2357
+ required: ['block', 'offset'],
2358
+ properties: {
2359
+ block: {
2360
+ type: 'array',
2361
+ items: {
2362
+ type: 'integer',
2363
+ },
2364
+ },
2365
+ offset: {
2366
+ type: 'integer',
2367
+ },
2368
+ },
2369
+ },
2370
+ },
2371
+ },
2372
+ PubLeafletRichtextFacet: {
2373
+ lexicon: 1,
2374
+ id: 'pub.leaflet.richtext.facet',
2375
+ defs: {
2376
+ main: {
2377
+ type: 'object',
2378
+ description: 'Annotation of a sub-string within rich text.',
2379
+ required: ['index', 'features'],
2380
+ properties: {
2381
+ index: {
2382
+ type: 'ref',
2383
+ ref: 'lex:pub.leaflet.richtext.facet#byteSlice',
2384
+ },
2385
+ features: {
2386
+ type: 'array',
2387
+ items: {
2388
+ type: 'union',
2389
+ refs: [
2390
+ 'lex:pub.leaflet.richtext.facet#link',
2391
+ 'lex:pub.leaflet.richtext.facet#didMention',
2392
+ 'lex:pub.leaflet.richtext.facet#atMention',
2393
+ 'lex:pub.leaflet.richtext.facet#code',
2394
+ 'lex:pub.leaflet.richtext.facet#highlight',
2395
+ 'lex:pub.leaflet.richtext.facet#underline',
2396
+ 'lex:pub.leaflet.richtext.facet#strikethrough',
2397
+ 'lex:pub.leaflet.richtext.facet#id',
2398
+ 'lex:pub.leaflet.richtext.facet#bold',
2399
+ 'lex:pub.leaflet.richtext.facet#italic',
2400
+ 'lex:pub.leaflet.richtext.facet#footnote',
2401
+ ],
2402
+ },
2403
+ },
2404
+ },
2405
+ },
2406
+ byteSlice: {
2407
+ type: 'object',
2408
+ description: 'Specifies the sub-string range a facet feature applies to. Start index is inclusive, end index is exclusive. Indices are zero-indexed, counting bytes of the UTF-8 encoded text. NOTE: some languages, like Javascript, use UTF-16 or Unicode codepoints for string slice indexing; in these languages, convert to byte arrays before working with facets.',
2409
+ required: ['byteStart', 'byteEnd'],
2410
+ properties: {
2411
+ byteStart: {
2412
+ type: 'integer',
2413
+ minimum: 0,
2414
+ },
2415
+ byteEnd: {
2416
+ type: 'integer',
2417
+ minimum: 0,
2418
+ },
2419
+ },
2420
+ },
2421
+ link: {
2422
+ type: 'object',
2423
+ description: 'Facet feature for a URL. The text URL may have been simplified or truncated, but the facet reference should be a complete URL.',
2424
+ required: ['uri'],
2425
+ properties: {
2426
+ uri: {
2427
+ type: 'string',
2428
+ },
2429
+ },
2430
+ },
2431
+ didMention: {
2432
+ type: 'object',
2433
+ description: 'Facet feature for mentioning a did.',
2434
+ required: ['did'],
2435
+ properties: {
2436
+ did: {
2437
+ type: 'string',
2438
+ format: 'did',
2439
+ },
2440
+ },
2441
+ },
2442
+ atMention: {
2443
+ type: 'object',
2444
+ description: 'Facet feature for mentioning an AT URI.',
2445
+ required: ['atURI'],
2446
+ properties: {
2447
+ atURI: {
2448
+ type: 'string',
2449
+ format: 'uri',
2450
+ },
2451
+ },
2452
+ },
2453
+ code: {
2454
+ type: 'object',
2455
+ description: 'Facet feature for inline code.',
2456
+ required: [],
2457
+ properties: {},
2458
+ },
2459
+ highlight: {
2460
+ type: 'object',
2461
+ description: 'Facet feature for highlighted text.',
2462
+ required: [],
2463
+ properties: {},
2464
+ },
2465
+ underline: {
2466
+ type: 'object',
2467
+ description: 'Facet feature for underline markup',
2468
+ required: [],
2469
+ properties: {},
2470
+ },
2471
+ strikethrough: {
2472
+ type: 'object',
2473
+ description: 'Facet feature for strikethrough markup',
2474
+ required: [],
2475
+ properties: {},
2476
+ },
2477
+ id: {
2478
+ type: 'object',
2479
+ description: 'Facet feature for an identifier. Used for linking to a segment',
2480
+ required: [],
2481
+ properties: {
2482
+ id: {
2483
+ type: 'string',
2484
+ },
2485
+ },
2486
+ },
2487
+ bold: {
2488
+ type: 'object',
2489
+ description: 'Facet feature for bold text',
2490
+ required: [],
2491
+ properties: {},
2492
+ },
2493
+ italic: {
2494
+ type: 'object',
2495
+ description: 'Facet feature for italic text',
2496
+ required: [],
2497
+ properties: {},
2498
+ },
2499
+ footnote: {
2500
+ type: 'object',
2501
+ description: 'Facet feature for a footnote reference',
2502
+ required: ['footnoteId', 'contentPlaintext'],
2503
+ properties: {
2504
+ footnoteId: {
2505
+ type: 'string',
2506
+ },
2507
+ contentPlaintext: {
2508
+ type: 'string',
2509
+ },
2510
+ contentFacets: {
2511
+ type: 'array',
2512
+ items: {
2513
+ type: 'ref',
2514
+ ref: 'lex:pub.leaflet.richtext.facet#main',
2515
+ },
2516
+ },
2517
+ },
2518
+ },
2519
+ },
2520
+ },
1648
2521
  };
1649
2522
  const schemas = Object.values(schemaDict);
1650
2523
  const lexicons = new Lexicons(schemas);
@@ -1657,12 +2530,14 @@ function validate(v, id, hash, requiredType) {
1657
2530
  };
1658
2531
  }
1659
2532
  const ids = {
2533
+ AppBskyRichtextFacet: 'app.bsky.richtext.facet',
1660
2534
  AppCertifiedActorOrganization: 'app.certified.actor.organization',
1661
2535
  AppCertifiedActorProfile: 'app.certified.actor.profile',
1662
2536
  AppCertifiedBadgeAward: 'app.certified.badge.award',
1663
2537
  AppCertifiedBadgeDefinition: 'app.certified.badge.definition',
1664
2538
  AppCertifiedBadgeResponse: 'app.certified.badge.response',
1665
2539
  AppCertifiedDefs: 'app.certified.defs',
2540
+ AppCertifiedLinkEvm: 'app.certified.link.evm',
1666
2541
  AppCertifiedLocation: 'app.certified.location',
1667
2542
  ComAtprotoRepoStrongRef: 'com.atproto.repo.strongRef',
1668
2543
  OrgHyperboardsBoard: 'org.hyperboards.board',
@@ -1680,6 +2555,23 @@ const ids = {
1680
2555
  OrgHypercertsFundingReceipt: 'org.hypercerts.funding.receipt',
1681
2556
  OrgHypercertsWorkscopeCel: 'org.hypercerts.workscope.cel',
1682
2557
  OrgHypercertsWorkscopeTag: 'org.hypercerts.workscope.tag',
2558
+ PubLeafletBlocksBlockquote: 'pub.leaflet.blocks.blockquote',
2559
+ PubLeafletBlocksBskyPost: 'pub.leaflet.blocks.bskyPost',
2560
+ PubLeafletBlocksButton: 'pub.leaflet.blocks.button',
2561
+ PubLeafletBlocksCode: 'pub.leaflet.blocks.code',
2562
+ PubLeafletBlocksHeader: 'pub.leaflet.blocks.header',
2563
+ PubLeafletBlocksHorizontalRule: 'pub.leaflet.blocks.horizontalRule',
2564
+ PubLeafletBlocksIframe: 'pub.leaflet.blocks.iframe',
2565
+ PubLeafletBlocksImage: 'pub.leaflet.blocks.image',
2566
+ PubLeafletBlocksMath: 'pub.leaflet.blocks.math',
2567
+ PubLeafletBlocksOrderedList: 'pub.leaflet.blocks.orderedList',
2568
+ PubLeafletBlocksPage: 'pub.leaflet.blocks.page',
2569
+ PubLeafletBlocksPoll: 'pub.leaflet.blocks.poll',
2570
+ PubLeafletBlocksText: 'pub.leaflet.blocks.text',
2571
+ PubLeafletBlocksUnorderedList: 'pub.leaflet.blocks.unorderedList',
2572
+ PubLeafletBlocksWebsite: 'pub.leaflet.blocks.website',
2573
+ PubLeafletPagesLinearDocument: 'pub.leaflet.pages.linearDocument',
2574
+ PubLeafletRichtextFacet: 'pub.leaflet.richtext.facet',
1683
2575
  };
1684
2576
 
1685
2577
  export { ids, lexicons, schemaDict, schemas, validate };