[READ-ONLY] Mirror of https://github.com/bombshell-dev/rfd.
0

Configure Feed

Select the types of activity you want to include in your feed.

vendor tangled lexicon

Nate Moore (May 9, 2026, 11:07 PM EDT) 1dc4c9d9 76c18895

+489
+11
packages/lexicon/lex.config.ts
··· 1 + import { defineLexiconConfig } from '@atcute/lex-cli'; 2 + 3 + export default defineLexiconConfig({ 4 + generate: { 5 + files: ['lexicons/**/*.json'], 6 + outdir: 'src/lexicons/', 7 + modules: { importSuffix: '.ts' }, 8 + imports: ['@atcute/atproto'], 9 + clean: true, 10 + }, 11 + });
+47
packages/lexicon/lexicons/pulls/comment.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "sh.tangled.repo.pull.comment", 4 + "needsCbor": true, 5 + "needsType": true, 6 + "defs": { 7 + "main": { 8 + "type": "record", 9 + "key": "tid", 10 + "record": { 11 + "type": "object", 12 + "required": [ 13 + "pull", 14 + "body", 15 + "createdAt" 16 + ], 17 + "properties": { 18 + "pull": { 19 + "type": "string", 20 + "format": "at-uri" 21 + }, 22 + "body": { 23 + "type": "string" 24 + }, 25 + "createdAt": { 26 + "type": "string", 27 + "format": "datetime" 28 + }, 29 + "mentions": { 30 + "type": "array", 31 + "items": { 32 + "type": "string", 33 + "format": "did" 34 + } 35 + }, 36 + "references": { 37 + "type": "array", 38 + "items": { 39 + "type": "string", 40 + "format": "at-uri" 41 + } 42 + } 43 + } 44 + } 45 + } 46 + } 47 + }
+124
packages/lexicon/lexicons/pulls/pull.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "sh.tangled.repo.pull", 4 + "needsCbor": true, 5 + "needsType": true, 6 + "defs": { 7 + "main": { 8 + "type": "record", 9 + "key": "tid", 10 + "record": { 11 + "type": "object", 12 + "required": [ 13 + "target", 14 + "title", 15 + "createdAt", 16 + "rounds" 17 + ], 18 + "properties": { 19 + "title": { 20 + "type": "string" 21 + }, 22 + "body": { 23 + "type": "string" 24 + }, 25 + "rounds": { 26 + "type": "array", 27 + "items": { 28 + "type": "ref", 29 + "ref": "#round" 30 + } 31 + }, 32 + "source": { 33 + "type": "ref", 34 + "ref": "#source" 35 + }, 36 + "target": { 37 + "type": "ref", 38 + "ref": "#target" 39 + }, 40 + "createdAt": { 41 + "type": "string", 42 + "format": "datetime" 43 + }, 44 + "mentions": { 45 + "type": "array", 46 + "items": { 47 + "type": "string", 48 + "format": "did" 49 + } 50 + }, 51 + "references": { 52 + "type": "array", 53 + "items": { 54 + "type": "string", 55 + "format": "at-uri" 56 + } 57 + }, 58 + "dependentOn": { 59 + "type": "string", 60 + "format": "at-uri" 61 + } 62 + } 63 + } 64 + }, 65 + "target": { 66 + "type": "object", 67 + "required": [ 68 + "branch" 69 + ], 70 + "properties": { 71 + "repo": { 72 + "type": "string", 73 + "format": "at-uri" 74 + }, 75 + "repoDid": { 76 + "type": "string", 77 + "format": "did" 78 + }, 79 + "branch": { 80 + "type": "string" 81 + } 82 + } 83 + }, 84 + "source": { 85 + "type": "object", 86 + "required": [ 87 + "branch" 88 + ], 89 + "properties": { 90 + "branch": { 91 + "type": "string" 92 + }, 93 + "repo": { 94 + "type": "string", 95 + "format": "at-uri" 96 + }, 97 + "repoDid": { 98 + "type": "string", 99 + "format": "did" 100 + } 101 + } 102 + }, 103 + "round": { 104 + "type": "object", 105 + "required": [ 106 + "patchBlob", 107 + "createdAt" 108 + ], 109 + "description": "revisions of this pull request, newer rounds are appended to this array. appviews may reject records do not treat this field as append-only. the blob format is gzipped text-based git-format-patches.", 110 + "properties": { 111 + "createdAt": { 112 + "type": "string", 113 + "format": "datetime" 114 + }, 115 + "patchBlob": { 116 + "type": "blob", 117 + "accept": [ 118 + "application/gzip" 119 + ] 120 + } 121 + } 122 + } 123 + } 124 + }
+76
packages/lexicon/lexicons/repo/repo.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "sh.tangled.repo", 4 + "needsCbor": true, 5 + "needsType": true, 6 + "defs": { 7 + "main": { 8 + "type": "record", 9 + "key": "tid", 10 + "record": { 11 + "type": "object", 12 + "required": [ 13 + "name", 14 + "knot", 15 + "createdAt" 16 + ], 17 + "properties": { 18 + "name": { 19 + "type": "string", 20 + "description": "name of the repo" 21 + }, 22 + "knot": { 23 + "type": "string", 24 + "description": "knot where the repo was created" 25 + }, 26 + "spindle": { 27 + "type": "string", 28 + "description": "CI runner to send jobs to and receive results from" 29 + }, 30 + "description": { 31 + "type": "string", 32 + "minGraphemes": 1, 33 + "maxGraphemes": 140 34 + }, 35 + "website": { 36 + "type": "string", 37 + "format": "uri", 38 + "description": "Any URI related to the repo" 39 + }, 40 + "topics": { 41 + "type": "array", 42 + "description": "Topics related to the repo", 43 + "items": { 44 + "type": "string", 45 + "minLength": 1, 46 + "maxLength": 50 47 + }, 48 + "maxLength": 50 49 + }, 50 + "source": { 51 + "type": "string", 52 + "format": "uri", 53 + "description": "source of the repo" 54 + }, 55 + "labels": { 56 + "type": "array", 57 + "description": "List of labels that this repo subscribes to", 58 + "items": { 59 + "type": "string", 60 + "format": "at-uri" 61 + } 62 + }, 63 + "repoDid": { 64 + "type": "string", 65 + "format": "did", 66 + "description": "DID of the repo itself, if assigned" 67 + }, 68 + "createdAt": { 69 + "type": "string", 70 + "format": "datetime" 71 + } 72 + } 73 + } 74 + } 75 + } 76 + }
+34
packages/lexicon/package.json
··· 1 + { 2 + "name": "lexicon", 3 + "type": "module", 4 + "version": "0.0.1", 5 + "devEngines": { 6 + "node": ">=24.15.0" 7 + }, 8 + "main": "./src/lexicons/index.ts", 9 + "exports": { 10 + ".": "./src/lexicons/index.ts", 11 + "./types/*": "./src/lexicons/types/sh/tangled/*.ts", 12 + "./lexicons/*": "./lexicons/*.json", 13 + "./package.json": "./package.json" 14 + }, 15 + "atcute:lexicons": { 16 + "mappings": { 17 + "sh.tangled.*": { 18 + "type": "namespace", 19 + "path": "./types/{{nsid_remainder}}" 20 + } 21 + } 22 + }, 23 + "scripts": { 24 + "build": "lex-cli generate", 25 + "dev": "lex-cli generate --watch" 26 + }, 27 + "dependencies": { 28 + "@atcute/lexicons": "^2.0.0" 29 + }, 30 + "devDependencies": { 31 + "@atcute/atproto": "^4.0.0", 32 + "@atcute/lex-cli": "^3.0.0" 33 + } 34 + }
+3
packages/lexicon/src/lexicons/index.ts
··· 1 + export * as ShTangledRepo from "./types/sh/tangled/repo.ts"; 2 + export * as ShTangledRepoPull from "./types/sh/tangled/repo/pull.ts"; 3 + export * as ShTangledRepoPullComment from "./types/sh/tangled/repo/pull/comment.ts";
+78
packages/lexicon/src/lexicons/types/sh/tangled/repo.ts
··· 1 + import type {} from "@atcute/lexicons"; 2 + import * as v from "@atcute/lexicons/validations"; 3 + import type {} from "@atcute/lexicons/ambient"; 4 + 5 + const _mainSchema = /*#__PURE__*/ v.record( 6 + /*#__PURE__*/ v.tidString(), 7 + /*#__PURE__*/ v.object({ 8 + $type: /*#__PURE__*/ v.literal("sh.tangled.repo"), 9 + createdAt: /*#__PURE__*/ v.datetimeString(), 10 + /** 11 + * @minGraphemes 1 12 + * @maxGraphemes 140 13 + */ 14 + description: /*#__PURE__*/ v.optional( 15 + /*#__PURE__*/ v.constrain(/*#__PURE__*/ v.string(), [ 16 + /*#__PURE__*/ v.stringGraphemes(1, 140), 17 + ]), 18 + ), 19 + /** 20 + * knot where the repo was created 21 + */ 22 + knot: /*#__PURE__*/ v.string(), 23 + /** 24 + * List of labels that this repo subscribes to 25 + */ 26 + labels: /*#__PURE__*/ v.optional( 27 + /*#__PURE__*/ v.array(/*#__PURE__*/ v.resourceUriString()), 28 + ), 29 + /** 30 + * name of the repo 31 + */ 32 + name: /*#__PURE__*/ v.string(), 33 + /** 34 + * DID of the repo itself, if assigned 35 + */ 36 + repoDid: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.didString()), 37 + /** 38 + * source of the repo 39 + */ 40 + source: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.genericUriString()), 41 + /** 42 + * CI runner to send jobs to and receive results from 43 + */ 44 + spindle: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.string()), 45 + /** 46 + * Topics related to the repo 47 + * @maxLength 50 48 + */ 49 + topics: /*#__PURE__*/ v.optional( 50 + /*#__PURE__*/ v.constrain( 51 + /*#__PURE__*/ v.array( 52 + /*#__PURE__*/ v.constrain(/*#__PURE__*/ v.string(), [ 53 + /*#__PURE__*/ v.stringLength(1, 50), 54 + ]), 55 + ), 56 + [/*#__PURE__*/ v.arrayLength(0, 50)], 57 + ), 58 + ), 59 + /** 60 + * Any URI related to the repo 61 + */ 62 + website: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.genericUriString()), 63 + }), 64 + ); 65 + 66 + type main$schematype = typeof _mainSchema; 67 + 68 + export interface mainSchema extends main$schematype {} 69 + 70 + export const mainSchema = _mainSchema as mainSchema; 71 + 72 + export interface Main extends v.InferInput<typeof mainSchema> {} 73 + 74 + declare module "@atcute/lexicons/ambient" { 75 + interface Records { 76 + "sh.tangled.repo": mainSchema; 77 + } 78 + }
+83
packages/lexicon/src/lexicons/types/sh/tangled/repo/pull.ts
··· 1 + import type {} from "@atcute/lexicons"; 2 + import * as v from "@atcute/lexicons/validations"; 3 + import type {} from "@atcute/lexicons/ambient"; 4 + 5 + const _mainSchema = /*#__PURE__*/ v.record( 6 + /*#__PURE__*/ v.tidString(), 7 + /*#__PURE__*/ v.object({ 8 + $type: /*#__PURE__*/ v.literal("sh.tangled.repo.pull"), 9 + body: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.string()), 10 + createdAt: /*#__PURE__*/ v.datetimeString(), 11 + dependentOn: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.resourceUriString()), 12 + mentions: /*#__PURE__*/ v.optional( 13 + /*#__PURE__*/ v.array(/*#__PURE__*/ v.didString()), 14 + ), 15 + references: /*#__PURE__*/ v.optional( 16 + /*#__PURE__*/ v.array(/*#__PURE__*/ v.resourceUriString()), 17 + ), 18 + get rounds() { 19 + return /*#__PURE__*/ v.array(roundSchema); 20 + }, 21 + get source() { 22 + return /*#__PURE__*/ v.optional(sourceSchema); 23 + }, 24 + get target() { 25 + return targetSchema; 26 + }, 27 + title: /*#__PURE__*/ v.string(), 28 + }), 29 + ); 30 + const _roundSchema = /*#__PURE__*/ v.object({ 31 + $type: /*#__PURE__*/ v.optional( 32 + /*#__PURE__*/ v.literal("sh.tangled.repo.pull#round"), 33 + ), 34 + createdAt: /*#__PURE__*/ v.datetimeString(), 35 + /** 36 + * @accept application/gzip 37 + */ 38 + patchBlob: /*#__PURE__*/ v.constrain(/*#__PURE__*/ v.blob(), [ 39 + /*#__PURE__*/ v.blobAccept(["application/gzip"]), 40 + ]), 41 + }); 42 + const _sourceSchema = /*#__PURE__*/ v.object({ 43 + $type: /*#__PURE__*/ v.optional( 44 + /*#__PURE__*/ v.literal("sh.tangled.repo.pull#source"), 45 + ), 46 + branch: /*#__PURE__*/ v.string(), 47 + repo: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.resourceUriString()), 48 + repoDid: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.didString()), 49 + }); 50 + const _targetSchema = /*#__PURE__*/ v.object({ 51 + $type: /*#__PURE__*/ v.optional( 52 + /*#__PURE__*/ v.literal("sh.tangled.repo.pull#target"), 53 + ), 54 + branch: /*#__PURE__*/ v.string(), 55 + repo: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.resourceUriString()), 56 + repoDid: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.didString()), 57 + }); 58 + 59 + type main$schematype = typeof _mainSchema; 60 + type round$schematype = typeof _roundSchema; 61 + type source$schematype = typeof _sourceSchema; 62 + type target$schematype = typeof _targetSchema; 63 + 64 + export interface mainSchema extends main$schematype {} 65 + export interface roundSchema extends round$schematype {} 66 + export interface sourceSchema extends source$schematype {} 67 + export interface targetSchema extends target$schematype {} 68 + 69 + export const mainSchema = _mainSchema as mainSchema; 70 + export const roundSchema = _roundSchema as roundSchema; 71 + export const sourceSchema = _sourceSchema as sourceSchema; 72 + export const targetSchema = _targetSchema as targetSchema; 73 + 74 + export interface Main extends v.InferInput<typeof mainSchema> {} 75 + export interface Round extends v.InferInput<typeof roundSchema> {} 76 + export interface Source extends v.InferInput<typeof sourceSchema> {} 77 + export interface Target extends v.InferInput<typeof targetSchema> {} 78 + 79 + declare module "@atcute/lexicons/ambient" { 80 + interface Records { 81 + "sh.tangled.repo.pull": mainSchema; 82 + } 83 + }
+33
packages/lexicon/src/lexicons/types/sh/tangled/repo/pull/comment.ts
··· 1 + import type {} from "@atcute/lexicons"; 2 + import * as v from "@atcute/lexicons/validations"; 3 + import type {} from "@atcute/lexicons/ambient"; 4 + 5 + const _mainSchema = /*#__PURE__*/ v.record( 6 + /*#__PURE__*/ v.tidString(), 7 + /*#__PURE__*/ v.object({ 8 + $type: /*#__PURE__*/ v.literal("sh.tangled.repo.pull.comment"), 9 + body: /*#__PURE__*/ v.string(), 10 + createdAt: /*#__PURE__*/ v.datetimeString(), 11 + mentions: /*#__PURE__*/ v.optional( 12 + /*#__PURE__*/ v.array(/*#__PURE__*/ v.didString()), 13 + ), 14 + pull: /*#__PURE__*/ v.resourceUriString(), 15 + references: /*#__PURE__*/ v.optional( 16 + /*#__PURE__*/ v.array(/*#__PURE__*/ v.resourceUriString()), 17 + ), 18 + }), 19 + ); 20 + 21 + type main$schematype = typeof _mainSchema; 22 + 23 + export interface mainSchema extends main$schematype {} 24 + 25 + export const mainSchema = _mainSchema as mainSchema; 26 + 27 + export interface Main extends v.InferInput<typeof mainSchema> {} 28 + 29 + declare module "@atcute/lexicons/ambient" { 30 + interface Records { 31 + "sh.tangled.repo.pull.comment": mainSchema; 32 + } 33 + }