···11+# Pinecone
22+33+Cooking in the wilderness.
44+55+## Setup
66+77+1. Install postgres 18 and tap locally
88+99+```
1010+brew install postgresql@18
1111+go install github.com/bluesky-social/indigo/cmd/tap
1212+```
1313+1414+2. Copy `api/.example.env` to `.env`
1515+3. Run `pnpm dev`. Done! You'll start backfilling all of tangled :P.
···11+CREATE DOMAIN uuidv7 AS uuid CHECK (uuid_extract_version(VALUE) = 7);--> statement-breakpoint
22+CREATE TYPE "public"."raw_action" AS ENUM('create', 'update', 'delete');--> statement-breakpoint
33+CREATE TABLE "raw_records" (
44+ "id" uuidv7 PRIMARY KEY NOT NULL,
55+ "tap_id" bigint NOT NULL,
66+ "received_at" timestamp with time zone DEFAULT now() NOT NULL,
77+ "did" text NOT NULL,
88+ "rev" text NOT NULL,
99+ "collection" text NOT NULL,
1010+ "rkey" text NOT NULL,
1111+ "action" "raw_action" NOT NULL,
1212+ "cid" text,
1313+ "record" jsonb,
1414+ CONSTRAINT "raw_records_tap_id_unique" UNIQUE("tap_id"),
1515+ CONSTRAINT "raw_records_not_null_unless_delete" CHECK (("raw_records"."action" = 'delete' or ("raw_records"."cid" is not null and "raw_records"."record" is not null)))
1616+);
1717+--> statement-breakpoint
1818+CREATE INDEX "raw_records_collection_index" ON "raw_records" USING btree ("collection");--> statement-breakpoint
1919+CREATE INDEX "raw_records_did_collection_rkey_index" ON "raw_records" USING btree ("did","collection","rkey");
+1
api/src/db/drizzle/meta/0000_snapshot.json
···11+{"id":"b6f04a1d-2900-4afb-9cb8-f555e332159b","prevId":"00000000-0000-0000-0000-000000000000","version":"7","dialect":"postgresql","tables":{"public.raw_records":{"name":"raw_records","schema":"","columns":{"id":{"name":"id","type":"uuidv7","primaryKey":true,"notNull":true},"tap_id":{"name":"tap_id","type":"bigint","primaryKey":false,"notNull":true},"received_at":{"name":"received_at","type":"timestamp with time zone","primaryKey":false,"notNull":true,"default":"now()"},"did":{"name":"did","type":"text","primaryKey":false,"notNull":true},"rev":{"name":"rev","type":"text","primaryKey":false,"notNull":true},"collection":{"name":"collection","type":"text","primaryKey":false,"notNull":true},"rkey":{"name":"rkey","type":"text","primaryKey":false,"notNull":true},"action":{"name":"action","type":"raw_action","typeSchema":"public","primaryKey":false,"notNull":true},"cid":{"name":"cid","type":"text","primaryKey":false,"notNull":false},"record":{"name":"record","type":"jsonb","primaryKey":false,"notNull":false}},"indexes":{"raw_records_collection_index":{"name":"raw_records_collection_index","columns":[{"expression":"collection","isExpression":false,"asc":true,"nulls":"last"}],"isUnique":false,"concurrently":false,"method":"btree","with":{}},"raw_records_did_collection_rkey_index":{"name":"raw_records_did_collection_rkey_index","columns":[{"expression":"did","isExpression":false,"asc":true,"nulls":"last"},{"expression":"collection","isExpression":false,"asc":true,"nulls":"last"},{"expression":"rkey","isExpression":false,"asc":true,"nulls":"last"}],"isUnique":false,"concurrently":false,"method":"btree","with":{}}},"foreignKeys":{},"compositePrimaryKeys":{},"uniqueConstraints":{"raw_records_tap_id_unique":{"name":"raw_records_tap_id_unique","nullsNotDistinct":false,"columns":["tap_id"]}},"policies":{},"checkConstraints":{"raw_records_not_null_unless_delete":{"name":"raw_records_not_null_unless_delete","value":"(\"raw_records\".\"action\" = 'delete' or (\"raw_records\".\"cid\" is not null and \"raw_records\".\"record\" is not null))"}},"isRLSEnabled":false}},"enums":{"public.raw_action":{"name":"raw_action","schema":"public","values":["create","update","delete"]}},"schemas":{},"sequences":{},"roles":{},"policies":{},"views":{},"_meta":{"columns":{},"schemas":{},"tables":{}}}
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * as tangled from './sh/tangled.js'
+17
api/src/lexicons/sh/tangled.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * as actor from './tangled/actor.js'
66+export * as feed from './tangled/feed.js'
77+export * as git from './tangled/git.js'
88+export * as graph from './tangled/graph.js'
99+export * as repo from './tangled/repo.js'
1010+export * as knot from './tangled/knot.js'
1111+export * as label from './tangled/label.js'
1212+export * as owner from './tangled/owner.js'
1313+export * as pipeline from './tangled/pipeline.js'
1414+export * as publicKey from './tangled/publicKey.js'
1515+export * as spindle from './tangled/spindle.js'
1616+export * as string from './tangled/string.js'
1717+export * as sync from './tangled/sync.js'
+5
api/src/lexicons/sh/tangled/actor.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * as profile from './actor/profile.js'
+112
api/src/lexicons/sh/tangled/actor/profile.defs.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.actor.profile'
88+99+export { $nsid }
1010+1111+/** A declaration of a Tangled account profile. */
1212+type Main = {
1313+ $type: 'sh.tangled.actor.profile'
1414+1515+ /**
1616+ * Small image to be displayed next to posts from account. AKA, 'profile picture'
1717+ */
1818+ avatar?: l.BlobRef
1919+2020+ /**
2121+ * Free-form profile description text.
2222+ */
2323+ description?: string
2424+ links?: l.UriString[]
2525+ stats?: (
2626+ | 'merged-pull-request-count'
2727+ | 'closed-pull-request-count'
2828+ | 'open-pull-request-count'
2929+ | 'open-issue-count'
3030+ | 'closed-issue-count'
3131+ | 'repository-count'
3232+ | 'star-count'
3333+ )[]
3434+3535+ /**
3636+ * Include link to this account on Bluesky.
3737+ */
3838+ bluesky: boolean
3939+4040+ /**
4141+ * Free-form location text.
4242+ */
4343+ location?: string
4444+4545+ /**
4646+ * Pinned repositories. Values are repo DIDs for repos that have them, or AT-URIs for legacy repos.
4747+ */
4848+ pinnedRepositories?: string[]
4949+5050+ /**
5151+ * Preferred gender pronouns.
5252+ */
5353+ pronouns?: string
5454+5555+ /**
5656+ * A handle the user prefers to be displayed as.
5757+ */
5858+ preferredHandle?: l.HandleString
5959+}
6060+6161+export type { Main }
6262+6363+/** A declaration of a Tangled account profile. */
6464+const main = l.record<'literal:self', Main>(
6565+ 'literal:self',
6666+ $nsid,
6767+ l.object({
6868+ avatar: l.optional(
6969+ l.blob({ accept: ['image/png', 'image/jpeg'], maxSize: 1000000 }),
7070+ ),
7171+ description: l.optional(l.string({ maxGraphemes: 256, maxLength: 2560 })),
7272+ links: l.optional(
7373+ l.array(l.string({ format: 'uri' }), { minLength: 0, maxLength: 5 }),
7474+ ),
7575+ stats: l.optional(
7676+ l.array(
7777+ l.enum([
7878+ 'merged-pull-request-count',
7979+ 'closed-pull-request-count',
8080+ 'open-pull-request-count',
8181+ 'open-issue-count',
8282+ 'closed-issue-count',
8383+ 'repository-count',
8484+ 'star-count',
8585+ ]),
8686+ { minLength: 0, maxLength: 2 },
8787+ ),
8888+ ),
8989+ bluesky: l.boolean(),
9090+ location: l.optional(l.string({ maxGraphemes: 40, maxLength: 400 })),
9191+ pinnedRepositories: l.optional(
9292+ l.array(l.string(), { minLength: 0, maxLength: 6 }),
9393+ ),
9494+ pronouns: l.optional(l.string({ maxLength: 40 })),
9595+ preferredHandle: l.optional(l.string({ format: 'handle', maxLength: 253 })),
9696+ }),
9797+)
9898+9999+export { main }
100100+101101+export const $isTypeOf = /*#__PURE__*/ main.isTypeOf.bind(main),
102102+ $build = /*#__PURE__*/ main.build.bind(main),
103103+ $type = /*#__PURE__*/ main.$type
104104+export const $assert = /*#__PURE__*/ main.assert.bind(main),
105105+ $check = /*#__PURE__*/ main.check.bind(main),
106106+ $cast = /*#__PURE__*/ main.cast.bind(main),
107107+ $ifMatches = /*#__PURE__*/ main.ifMatches.bind(main),
108108+ $matches = /*#__PURE__*/ main.matches.bind(main),
109109+ $parse = /*#__PURE__*/ main.parse.bind(main),
110110+ $safeParse = /*#__PURE__*/ main.safeParse.bind(main),
111111+ $validate = /*#__PURE__*/ main.validate.bind(main),
112112+ $safeValidate = /*#__PURE__*/ main.safeValidate.bind(main)
+6
api/src/lexicons/sh/tangled/actor/profile.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './profile.defs.js'
66+export * as $defs from './profile.defs.js'
+6
api/src/lexicons/sh/tangled/feed.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * as reaction from './feed/reaction.js'
66+export * as star from './feed/star.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './reaction.defs.js'
66+export * as $defs from './reaction.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './star.defs.js'
66+export * as $defs from './star.defs.js'
+6
api/src/lexicons/sh/tangled/git.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * as refUpdate from './git/refUpdate.js'
66+export * as temp from './git/temp.js'
+184
api/src/lexicons/sh/tangled/git/refUpdate.defs.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.git.refUpdate'
88+99+export { $nsid }
1010+1111+/** An update to a git repository, emitted by knots. */
1212+type Main = {
1313+ $type: 'sh.tangled.git.refUpdate'
1414+1515+ /**
1616+ * Ref being updated
1717+ */
1818+ ref: string
1919+2020+ /**
2121+ * did of the user that pushed this ref
2222+ */
2323+ committerDid: l.DidString
2424+2525+ /**
2626+ * did of the owner of the repo
2727+ */
2828+ ownerDid?: l.DidString
2929+3030+ /**
3131+ * DID of the repo itself
3232+ */
3333+ repoDid?: l.DidString
3434+3535+ /**
3636+ * name of the repo
3737+ */
3838+ repoName: string
3939+4040+ /**
4141+ * old SHA of this ref
4242+ */
4343+ oldSha: string
4444+4545+ /**
4646+ * new SHA of this ref
4747+ */
4848+ newSha: string
4949+ meta: Meta
5050+}
5151+5252+export type { Main }
5353+5454+/** An update to a git repository, emitted by knots. */
5555+const main = l.record<'tid', Main>(
5656+ 'tid',
5757+ $nsid,
5858+ l.object({
5959+ ref: l.string({ maxGraphemes: 256, maxLength: 2560 }),
6060+ committerDid: l.string({ format: 'did' }),
6161+ ownerDid: l.optional(l.string({ format: 'did' })),
6262+ repoDid: l.optional(l.string({ format: 'did' })),
6363+ repoName: l.string(),
6464+ oldSha: l.string({ minLength: 40, maxLength: 40 }),
6565+ newSha: l.string({ minLength: 40, maxLength: 40 }),
6666+ meta: l.ref<Meta>((() => meta) as any),
6767+ }),
6868+)
6969+7070+export { main }
7171+7272+export const $isTypeOf = /*#__PURE__*/ main.isTypeOf.bind(main),
7373+ $build = /*#__PURE__*/ main.build.bind(main),
7474+ $type = /*#__PURE__*/ main.$type
7575+export const $assert = /*#__PURE__*/ main.assert.bind(main),
7676+ $check = /*#__PURE__*/ main.check.bind(main),
7777+ $cast = /*#__PURE__*/ main.cast.bind(main),
7878+ $ifMatches = /*#__PURE__*/ main.ifMatches.bind(main),
7979+ $matches = /*#__PURE__*/ main.matches.bind(main),
8080+ $parse = /*#__PURE__*/ main.parse.bind(main),
8181+ $safeParse = /*#__PURE__*/ main.safeParse.bind(main),
8282+ $validate = /*#__PURE__*/ main.validate.bind(main),
8383+ $safeValidate = /*#__PURE__*/ main.safeValidate.bind(main)
8484+8585+type Meta = {
8686+ $type?: 'sh.tangled.git.refUpdate#meta'
8787+ isDefaultRef: boolean
8888+ langBreakdown?: LangBreakdown
8989+ commitCount: CommitCountBreakdown
9090+}
9191+9292+export type { Meta }
9393+9494+const meta = l.typedObject<Meta>(
9595+ $nsid,
9696+ 'meta',
9797+ l.object({
9898+ isDefaultRef: l.withDefault(l.boolean(), false),
9999+ langBreakdown: l.optional(
100100+ l.ref<LangBreakdown>((() => langBreakdown) as any),
101101+ ),
102102+ commitCount: l.ref<CommitCountBreakdown>(
103103+ (() => commitCountBreakdown) as any,
104104+ ),
105105+ }),
106106+)
107107+108108+export { meta }
109109+110110+type LangBreakdown = {
111111+ $type?: 'sh.tangled.git.refUpdate#langBreakdown'
112112+ inputs?: IndividualLanguageSize[]
113113+}
114114+115115+export type { LangBreakdown }
116116+117117+const langBreakdown = l.typedObject<LangBreakdown>(
118118+ $nsid,
119119+ 'langBreakdown',
120120+ l.object({
121121+ inputs: l.optional(
122122+ l.array(
123123+ l.ref<IndividualLanguageSize>((() => individualLanguageSize) as any),
124124+ ),
125125+ ),
126126+ }),
127127+)
128128+129129+export { langBreakdown }
130130+131131+type IndividualLanguageSize = {
132132+ $type?: 'sh.tangled.git.refUpdate#individualLanguageSize'
133133+ lang: string
134134+ size: number
135135+}
136136+137137+export type { IndividualLanguageSize }
138138+139139+const individualLanguageSize = l.typedObject<IndividualLanguageSize>(
140140+ $nsid,
141141+ 'individualLanguageSize',
142142+ l.object({ lang: l.string(), size: l.integer() }),
143143+)
144144+145145+export { individualLanguageSize }
146146+147147+type CommitCountBreakdown = {
148148+ $type?: 'sh.tangled.git.refUpdate#commitCountBreakdown'
149149+ byEmail?: IndividualEmailCommitCount[]
150150+}
151151+152152+export type { CommitCountBreakdown }
153153+154154+const commitCountBreakdown = l.typedObject<CommitCountBreakdown>(
155155+ $nsid,
156156+ 'commitCountBreakdown',
157157+ l.object({
158158+ byEmail: l.optional(
159159+ l.array(
160160+ l.ref<IndividualEmailCommitCount>(
161161+ (() => individualEmailCommitCount) as any,
162162+ ),
163163+ ),
164164+ ),
165165+ }),
166166+)
167167+168168+export { commitCountBreakdown }
169169+170170+type IndividualEmailCommitCount = {
171171+ $type?: 'sh.tangled.git.refUpdate#individualEmailCommitCount'
172172+ email: string
173173+ count: number
174174+}
175175+176176+export type { IndividualEmailCommitCount }
177177+178178+const individualEmailCommitCount = l.typedObject<IndividualEmailCommitCount>(
179179+ $nsid,
180180+ 'individualEmailCommitCount',
181181+ l.object({ email: l.string(), count: l.integer() }),
182182+)
183183+184184+export { individualEmailCommitCount }
+6
api/src/lexicons/sh/tangled/git/refUpdate.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './refUpdate.defs.js'
66+export * as $defs from './refUpdate.defs.js'
+19
api/src/lexicons/sh/tangled/git/temp.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * as analyzeMerge from './temp/analyzeMerge.js'
66+export * as defs from './temp/defs.js'
77+export * as getArchive from './temp/getArchive.js'
88+export * as getBlob from './temp/getBlob.js'
99+export * as getBranch from './temp/getBranch.js'
1010+export * as getCommit from './temp/getCommit.js'
1111+export * as getDiff from './temp/getDiff.js'
1212+export * as getEntity from './temp/getEntity.js'
1313+export * as getHead from './temp/getHead.js'
1414+export * as getTag from './temp/getTag.js'
1515+export * as getTree from './temp/getTree.js'
1616+export * as listBranches from './temp/listBranches.js'
1717+export * as listCommits from './temp/listCommits.js'
1818+export * as listLanguages from './temp/listLanguages.js'
1919+export * as listTags from './temp/listTags.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './analyzeMerge.defs.js'
66+export * as $defs from './analyzeMerge.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './defs.defs.js'
66+export * as $defs from './defs.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './getArchive.defs.js'
66+export * as $defs from './getArchive.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.git.temp.getBlob'
88+99+export { $nsid }
1010+1111+const main = l.query(
1212+ $nsid,
1313+ l.params({
1414+ repo: l.string({ format: 'at-uri' }),
1515+ ref: l.optional(l.withDefault(l.string(), 'HEAD')),
1616+ path: l.string(),
1717+ }),
1818+ l.payload('*/*'),
1919+ ['RepoNotFound', 'BlobNotFound', 'InvalidRequest'],
2020+)
2121+export { main }
2222+2323+export type $Params = l.InferMethodParams<typeof main>
2424+/** raw blob served in octet-stream */
2525+export type $Output<B = l.BinaryData> = l.InferMethodOutput<typeof main, B>
2626+/** raw blob served in octet-stream */
2727+export type $OutputBody<B = l.BinaryData> = l.InferMethodOutputBody<
2828+ typeof main,
2929+ B
3030+>
3131+3232+export const $lxm = main.nsid,
3333+ $params = main.parameters,
3434+ $output = main.output
+6
api/src/lexicons/sh/tangled/git/temp/getBlob.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './getBlob.defs.js'
66+export * as $defs from './getBlob.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+import * as TempDefs from './defs.defs.js'
77+88+const $nsid = 'sh.tangled.git.temp.getBranch'
99+1010+export { $nsid }
1111+1212+const main = l.query(
1313+ $nsid,
1414+ l.params({ repo: l.string({ format: 'at-uri' }), name: l.string() }),
1515+ l.jsonPayload({
1616+ name: l.string(),
1717+ hash: l.string(),
1818+ when: l.string({ format: 'datetime' }),
1919+ message: l.optional(l.string()),
2020+ author: l.optional(
2121+ l.ref<TempDefs.Signature>((() => TempDefs.signature) as any),
2222+ ),
2323+ }),
2424+ ['RepoNotFound', 'BranchNotFound', 'InvalidRequest'],
2525+)
2626+export { main }
2727+2828+export type $Params = l.InferMethodParams<typeof main>
2929+export type $Output<B = l.BinaryData> = l.InferMethodOutput<typeof main, B>
3030+export type $OutputBody<B = l.BinaryData> = l.InferMethodOutputBody<
3131+ typeof main,
3232+ B
3333+>
3434+3535+export const $lxm = main.nsid,
3636+ $params = main.parameters,
3737+ $output = main.output
+6
api/src/lexicons/sh/tangled/git/temp/getBranch.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './getBranch.defs.js'
66+export * as $defs from './getBranch.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+import * as TempDefs from './defs.defs.js'
77+88+const $nsid = 'sh.tangled.git.temp.getCommit'
99+1010+export { $nsid }
1111+1212+/** resolve commit from given ref */
1313+const main = l.query(
1414+ $nsid,
1515+ l.params({ repo: l.string({ format: 'at-uri' }), ref: l.string() }),
1616+ l.payload(
1717+ 'application/json',
1818+ l.ref<TempDefs.Commit>((() => TempDefs.commit) as any),
1919+ ),
2020+ ['RepoNotFound', 'CommitNotFound', 'InvalidRequest'],
2121+)
2222+export { main }
2323+2424+export type $Params = l.InferMethodParams<typeof main>
2525+export type $Output<B = l.BinaryData> = l.InferMethodOutput<typeof main, B>
2626+export type $OutputBody<B = l.BinaryData> = l.InferMethodOutputBody<
2727+ typeof main,
2828+ B
2929+>
3030+3131+export const $lxm = main.nsid,
3232+ $params = main.parameters,
3333+ $output = main.output
+6
api/src/lexicons/sh/tangled/git/temp/getCommit.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './getCommit.defs.js'
66+export * as $defs from './getCommit.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.git.temp.getDiff'
88+99+export { $nsid }
1010+1111+const main = l.query(
1212+ $nsid,
1313+ l.params({
1414+ repo: l.string({ format: 'at-uri' }),
1515+ rev1: l.string(),
1616+ rev2: l.string(),
1717+ }),
1818+ l.payload('*/*'),
1919+ ['RepoNotFound', 'RevisionNotFound', 'InvalidRequest', 'CompareError'],
2020+)
2121+export { main }
2222+2323+export type $Params = l.InferMethodParams<typeof main>
2424+/** Compare output in application/json */
2525+export type $Output<B = l.BinaryData> = l.InferMethodOutput<typeof main, B>
2626+/** Compare output in application/json */
2727+export type $OutputBody<B = l.BinaryData> = l.InferMethodOutputBody<
2828+ typeof main,
2929+ B
3030+>
3131+3232+export const $lxm = main.nsid,
3333+ $params = main.parameters,
3434+ $output = main.output
+6
api/src/lexicons/sh/tangled/git/temp/getDiff.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './getDiff.defs.js'
66+export * as $defs from './getDiff.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+import * as TempDefs from './defs.defs.js'
77+88+const $nsid = 'sh.tangled.git.temp.getEntity'
99+1010+export { $nsid }
1111+1212+/** get metadata of blob by ref and path */
1313+const main = l.query(
1414+ $nsid,
1515+ l.params({
1616+ repo: l.string({ format: 'at-uri' }),
1717+ ref: l.optional(l.withDefault(l.string(), 'HEAD')),
1818+ path: l.string(),
1919+ }),
2020+ l.payload(
2121+ 'application/json',
2222+ l.ref<TempDefs.Blob>((() => TempDefs.blob) as any),
2323+ ),
2424+ ['RepoNotFound', 'BlobNotFound', 'InvalidRequest'],
2525+)
2626+export { main }
2727+2828+export type $Params = l.InferMethodParams<typeof main>
2929+export type $Output<B = l.BinaryData> = l.InferMethodOutput<typeof main, B>
3030+export type $OutputBody<B = l.BinaryData> = l.InferMethodOutputBody<
3131+ typeof main,
3232+ B
3333+>
3434+3535+export const $lxm = main.nsid,
3636+ $params = main.parameters,
3737+ $output = main.output
+6
api/src/lexicons/sh/tangled/git/temp/getEntity.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './getEntity.defs.js'
66+export * as $defs from './getEntity.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+import * as TempDefs from './defs.defs.js'
77+88+const $nsid = 'sh.tangled.git.temp.getHead'
99+1010+export { $nsid }
1111+1212+const main = l.query(
1313+ $nsid,
1414+ l.params({ repo: l.string({ format: 'at-uri' }) }),
1515+ l.payload(
1616+ 'application/json',
1717+ l.ref<TempDefs.Branch>((() => TempDefs.branch) as any),
1818+ ),
1919+ ['RepoNotFound', 'InvalidRequest'],
2020+)
2121+export { main }
2222+2323+export type $Params = l.InferMethodParams<typeof main>
2424+export type $Output<B = l.BinaryData> = l.InferMethodOutput<typeof main, B>
2525+export type $OutputBody<B = l.BinaryData> = l.InferMethodOutputBody<
2626+ typeof main,
2727+ B
2828+>
2929+3030+export const $lxm = main.nsid,
3131+ $params = main.parameters,
3232+ $output = main.output
+6
api/src/lexicons/sh/tangled/git/temp/getHead.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './getHead.defs.js'
66+export * as $defs from './getHead.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.git.temp.getTag'
88+99+export { $nsid }
1010+1111+const main = l.query(
1212+ $nsid,
1313+ l.params({ repo: l.string({ format: 'at-uri' }), tag: l.string() }),
1414+ l.payload('*/*'),
1515+ ['RepoNotFound', 'TagNotFound', 'InvalidRequest'],
1616+)
1717+export { main }
1818+1919+export type $Params = l.InferMethodParams<typeof main>
2020+export type $Output<B = l.BinaryData> = l.InferMethodOutput<typeof main, B>
2121+export type $OutputBody<B = l.BinaryData> = l.InferMethodOutputBody<
2222+ typeof main,
2323+ B
2424+>
2525+2626+export const $lxm = main.nsid,
2727+ $params = main.parameters,
2828+ $output = main.output
+6
api/src/lexicons/sh/tangled/git/temp/getTag.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './getTag.defs.js'
66+export * as $defs from './getTag.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './getTree.defs.js'
66+export * as $defs from './getTree.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './listBranches.defs.js'
66+export * as $defs from './listBranches.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './listCommits.defs.js'
66+export * as $defs from './listCommits.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './listLanguages.defs.js'
66+export * as $defs from './listLanguages.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.git.temp.listTags'
88+99+export { $nsid }
1010+1111+const main = l.query(
1212+ $nsid,
1313+ l.params({
1414+ repo: l.string({ format: 'at-uri' }),
1515+ limit: l.optional(
1616+ l.withDefault(l.integer({ minimum: 1, maximum: 100 }), 50),
1717+ ),
1818+ cursor: l.optional(l.string()),
1919+ }),
2020+ l.payload('*/*'),
2121+ ['RepoNotFound', 'InvalidRequest'],
2222+)
2323+export { main }
2424+2525+export type $Params = l.InferMethodParams<typeof main>
2626+export type $Output<B = l.BinaryData> = l.InferMethodOutput<typeof main, B>
2727+export type $OutputBody<B = l.BinaryData> = l.InferMethodOutputBody<
2828+ typeof main,
2929+ B
3030+>
3131+3232+export const $lxm = main.nsid,
3333+ $params = main.parameters,
3434+ $output = main.output
+6
api/src/lexicons/sh/tangled/git/temp/listTags.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './listTags.defs.js'
66+export * as $defs from './listTags.defs.js'
+6
api/src/lexicons/sh/tangled/graph.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * as follow from './graph/follow.js'
66+export * as vouch from './graph/vouch.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './follow.defs.js'
66+export * as $defs from './follow.defs.js'
+51
api/src/lexicons/sh/tangled/graph/vouch.defs.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.graph.vouch'
88+99+export { $nsid }
1010+1111+type Main = {
1212+ $type: 'sh.tangled.graph.vouch'
1313+1414+ /**
1515+ * Whether this user is being vouched for or denounced
1616+ */
1717+ kind: 'vouch' | 'denounce'
1818+1919+ /**
2020+ * The reason for this vouch/denouncement
2121+ */
2222+ reason?: string
2323+ createdAt: l.DatetimeString
2424+}
2525+2626+export type { Main }
2727+2828+const main = l.record<'any', Main>(
2929+ 'any',
3030+ $nsid,
3131+ l.object({
3232+ kind: l.withDefault(l.enum(['vouch', 'denounce']), 'vouch'),
3333+ reason: l.optional(l.string({ maxGraphemes: 256, maxLength: 2560 })),
3434+ createdAt: l.string({ format: 'datetime' }),
3535+ }),
3636+)
3737+3838+export { main }
3939+4040+export const $isTypeOf = /*#__PURE__*/ main.isTypeOf.bind(main),
4141+ $build = /*#__PURE__*/ main.build.bind(main),
4242+ $type = /*#__PURE__*/ main.$type
4343+export const $assert = /*#__PURE__*/ main.assert.bind(main),
4444+ $check = /*#__PURE__*/ main.check.bind(main),
4545+ $cast = /*#__PURE__*/ main.cast.bind(main),
4646+ $ifMatches = /*#__PURE__*/ main.ifMatches.bind(main),
4747+ $matches = /*#__PURE__*/ main.matches.bind(main),
4848+ $parse = /*#__PURE__*/ main.parse.bind(main),
4949+ $safeParse = /*#__PURE__*/ main.safeParse.bind(main),
5050+ $validate = /*#__PURE__*/ main.validate.bind(main),
5151+ $safeValidate = /*#__PURE__*/ main.safeValidate.bind(main)
+6
api/src/lexicons/sh/tangled/graph/vouch.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './vouch.defs.js'
66+export * as $defs from './vouch.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './knot.defs.js'
66+export * as $defs from './knot.defs.js'
77+export * as listKeys from './knot/listKeys.js'
88+export * as member from './knot/member.js'
99+export * as subscribeRepos from './knot/subscribeRepos.js'
1010+export * as version from './knot/version.js'
+70
api/src/lexicons/sh/tangled/knot/listKeys.defs.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.knot.listKeys'
88+99+export { $nsid }
1010+1111+/** List all public keys stored in the knot server */
1212+const main = l.query(
1313+ $nsid,
1414+ l.params({
1515+ limit: l.optional(
1616+ l.withDefault(l.integer({ minimum: 1, maximum: 1000 }), 100),
1717+ ),
1818+ cursor: l.optional(l.string()),
1919+ }),
2020+ l.jsonPayload({
2121+ keys: l.array(l.ref<PublicKey>((() => publicKey) as any)),
2222+ cursor: l.optional(l.string()),
2323+ }),
2424+ ['InternalServerError'],
2525+)
2626+export { main }
2727+2828+export type $Params = l.InferMethodParams<typeof main>
2929+export type $Output<B = l.BinaryData> = l.InferMethodOutput<typeof main, B>
3030+export type $OutputBody<B = l.BinaryData> = l.InferMethodOutputBody<
3131+ typeof main,
3232+ B
3333+>
3434+3535+export const $lxm = main.nsid,
3636+ $params = main.parameters,
3737+ $output = main.output
3838+3939+type PublicKey = {
4040+ $type?: 'sh.tangled.knot.listKeys#publicKey'
4141+4242+ /**
4343+ * DID associated with the public key
4444+ */
4545+ did: l.DidString
4646+4747+ /**
4848+ * Public key contents
4949+ */
5050+ key: string
5151+5252+ /**
5353+ * Key upload timestamp
5454+ */
5555+ createdAt: l.DatetimeString
5656+}
5757+5858+export type { PublicKey }
5959+6060+const publicKey = l.typedObject<PublicKey>(
6161+ $nsid,
6262+ 'publicKey',
6363+ l.object({
6464+ did: l.string({ format: 'did' }),
6565+ key: l.string({ maxLength: 4096 }),
6666+ createdAt: l.string({ format: 'datetime' }),
6767+ }),
6868+)
6969+7070+export { publicKey }
+6
api/src/lexicons/sh/tangled/knot/listKeys.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './listKeys.defs.js'
66+export * as $defs from './listKeys.defs.js'
+47
api/src/lexicons/sh/tangled/knot/member.defs.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.knot.member'
88+99+export { $nsid }
1010+1111+type Main = {
1212+ $type: 'sh.tangled.knot.member'
1313+ subject: l.DidString
1414+1515+ /**
1616+ * domain that this member now belongs to
1717+ */
1818+ domain: string
1919+ createdAt: l.DatetimeString
2020+}
2121+2222+export type { Main }
2323+2424+const main = l.record<'tid', Main>(
2525+ 'tid',
2626+ $nsid,
2727+ l.object({
2828+ subject: l.string({ format: 'did' }),
2929+ domain: l.string(),
3030+ createdAt: l.string({ format: 'datetime' }),
3131+ }),
3232+)
3333+3434+export { main }
3535+3636+export const $isTypeOf = /*#__PURE__*/ main.isTypeOf.bind(main),
3737+ $build = /*#__PURE__*/ main.build.bind(main),
3838+ $type = /*#__PURE__*/ main.$type
3939+export const $assert = /*#__PURE__*/ main.assert.bind(main),
4040+ $check = /*#__PURE__*/ main.check.bind(main),
4141+ $cast = /*#__PURE__*/ main.cast.bind(main),
4242+ $ifMatches = /*#__PURE__*/ main.ifMatches.bind(main),
4343+ $matches = /*#__PURE__*/ main.matches.bind(main),
4444+ $parse = /*#__PURE__*/ main.parse.bind(main),
4545+ $safeParse = /*#__PURE__*/ main.safeParse.bind(main),
4646+ $validate = /*#__PURE__*/ main.validate.bind(main),
4747+ $safeValidate = /*#__PURE__*/ main.safeValidate.bind(main)
+6
api/src/lexicons/sh/tangled/knot/member.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './member.defs.js'
66+export * as $defs from './member.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './subscribeRepos.defs.js'
66+export * as $defs from './subscribeRepos.defs.js'
+24
api/src/lexicons/sh/tangled/knot/version.defs.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.knot.version'
88+99+export { $nsid }
1010+1111+/** Get the version of a knot */
1212+const main = l.query($nsid, l.params(), l.jsonPayload({ version: l.string() }))
1313+export { main }
1414+1515+export type $Params = l.InferMethodParams<typeof main>
1616+export type $Output<B = l.BinaryData> = l.InferMethodOutput<typeof main, B>
1717+export type $OutputBody<B = l.BinaryData> = l.InferMethodOutputBody<
1818+ typeof main,
1919+ B
2020+>
2121+2222+export const $lxm = main.nsid,
2323+ $params = main.parameters,
2424+ $output = main.output
+6
api/src/lexicons/sh/tangled/knot/version.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './version.defs.js'
66+export * as $defs from './version.defs.js'
+6
api/src/lexicons/sh/tangled/label.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * as definition from './label/definition.js'
66+export * as op from './label/op.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.label.definition'
88+99+export { $nsid }
1010+1111+type Main = {
1212+ $type: 'sh.tangled.label.definition'
1313+1414+ /**
1515+ * The display name of this label.
1616+ */
1717+ name: string
1818+1919+ /**
2020+ * The type definition of this label. Appviews may allow sorting for certain types.
2121+ */
2222+ valueType: ValueType
2323+2424+ /**
2525+ * The areas of the repo this label may apply to, eg.: sh.tangled.repo.issue. Appviews may choose to respect this.
2626+ */
2727+ scope: l.NsidString[]
2828+2929+ /**
3030+ * The hex value for the background color for the label. Appviews may choose to respect this.
3131+ */
3232+ color?: string
3333+ createdAt: l.DatetimeString
3434+3535+ /**
3636+ * Whether this label can be repeated for a given entity, eg.: [reviewer:foo, reviewer:bar]
3737+ */
3838+ multiple?: boolean
3939+}
4040+4141+export type { Main }
4242+4343+const main = l.record<'any', Main>(
4444+ 'any',
4545+ $nsid,
4646+ l.object({
4747+ name: l.string({ minGraphemes: 1, maxGraphemes: 40 }),
4848+ valueType: l.ref<ValueType>((() => valueType) as any),
4949+ scope: l.array(l.string({ format: 'nsid' })),
5050+ color: l.optional(l.string()),
5151+ createdAt: l.string({ format: 'datetime' }),
5252+ multiple: l.optional(l.boolean()),
5353+ }),
5454+)
5555+5656+export { main }
5757+5858+export const $isTypeOf = /*#__PURE__*/ main.isTypeOf.bind(main),
5959+ $build = /*#__PURE__*/ main.build.bind(main),
6060+ $type = /*#__PURE__*/ main.$type
6161+export const $assert = /*#__PURE__*/ main.assert.bind(main),
6262+ $check = /*#__PURE__*/ main.check.bind(main),
6363+ $cast = /*#__PURE__*/ main.cast.bind(main),
6464+ $ifMatches = /*#__PURE__*/ main.ifMatches.bind(main),
6565+ $matches = /*#__PURE__*/ main.matches.bind(main),
6666+ $parse = /*#__PURE__*/ main.parse.bind(main),
6767+ $safeParse = /*#__PURE__*/ main.safeParse.bind(main),
6868+ $validate = /*#__PURE__*/ main.validate.bind(main),
6969+ $safeValidate = /*#__PURE__*/ main.safeValidate.bind(main)
7070+7171+type ValueType = {
7272+ $type?: 'sh.tangled.label.definition#valueType'
7373+7474+ /**
7575+ * The concrete type of this label's value.
7676+ */
7777+ type: 'null' | 'boolean' | 'integer' | 'string'
7878+7979+ /**
8080+ * An optional constraint that can be applied on string concrete types.
8181+ */
8282+ format: 'any' | 'did' | 'nsid'
8383+8484+ /**
8585+ * Closed set of values that this label can take.
8686+ */
8787+ enum?: string[]
8888+}
8989+9090+export type { ValueType }
9191+9292+const valueType = l.typedObject<ValueType>(
9393+ $nsid,
9494+ 'valueType',
9595+ l.object({
9696+ type: l.enum(['null', 'boolean', 'integer', 'string']),
9797+ format: l.enum(['any', 'did', 'nsid']),
9898+ enum: l.optional(l.array(l.string())),
9999+ }),
100100+)
101101+102102+export { valueType }
+6
api/src/lexicons/sh/tangled/label/definition.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './definition.defs.js'
66+export * as $defs from './definition.defs.js'
+73
api/src/lexicons/sh/tangled/label/op.defs.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.label.op'
88+99+export { $nsid }
1010+1111+type Main = {
1212+ $type: 'sh.tangled.label.op'
1313+1414+ /**
1515+ * The subject (task, pull or discussion) of this label. Appviews may apply a `scope` check and refuse this op.
1616+ */
1717+ subject: l.AtUriString
1818+ performedAt: l.DatetimeString
1919+ add: Operand[]
2020+ delete: Operand[]
2121+}
2222+2323+export type { Main }
2424+2525+const main = l.record<'tid', Main>(
2626+ 'tid',
2727+ $nsid,
2828+ l.object({
2929+ subject: l.string({ format: 'at-uri' }),
3030+ performedAt: l.string({ format: 'datetime' }),
3131+ add: l.array(l.ref<Operand>((() => operand) as any)),
3232+ delete: l.array(l.ref<Operand>((() => operand) as any)),
3333+ }),
3434+)
3535+3636+export { main }
3737+3838+export const $isTypeOf = /*#__PURE__*/ main.isTypeOf.bind(main),
3939+ $build = /*#__PURE__*/ main.build.bind(main),
4040+ $type = /*#__PURE__*/ main.$type
4141+export const $assert = /*#__PURE__*/ main.assert.bind(main),
4242+ $check = /*#__PURE__*/ main.check.bind(main),
4343+ $cast = /*#__PURE__*/ main.cast.bind(main),
4444+ $ifMatches = /*#__PURE__*/ main.ifMatches.bind(main),
4545+ $matches = /*#__PURE__*/ main.matches.bind(main),
4646+ $parse = /*#__PURE__*/ main.parse.bind(main),
4747+ $safeParse = /*#__PURE__*/ main.safeParse.bind(main),
4848+ $validate = /*#__PURE__*/ main.validate.bind(main),
4949+ $safeValidate = /*#__PURE__*/ main.safeValidate.bind(main)
5050+5151+type Operand = {
5252+ $type?: 'sh.tangled.label.op#operand'
5353+5454+ /**
5555+ * ATURI to the label definition
5656+ */
5757+ key: l.AtUriString
5858+5959+ /**
6060+ * Stringified value of the label. This is first unstringed by appviews and then interpreted as a concrete value.
6161+ */
6262+ value: string
6363+}
6464+6565+export type { Operand }
6666+6767+const operand = l.typedObject<Operand>(
6868+ $nsid,
6969+ 'operand',
7070+ l.object({ key: l.string({ format: 'at-uri' }), value: l.string() }),
7171+)
7272+7373+export { operand }
+6
api/src/lexicons/sh/tangled/label/op.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './op.defs.js'
66+export * as $defs from './op.defs.js'
+29
api/src/lexicons/sh/tangled/owner.defs.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.owner'
88+99+export { $nsid }
1010+1111+/** Get the owner of a service */
1212+const main = l.query(
1313+ $nsid,
1414+ l.params(),
1515+ l.jsonPayload({ owner: l.string({ format: 'did' }) }),
1616+ ['OwnerNotFound'],
1717+)
1818+export { main }
1919+2020+export type $Params = l.InferMethodParams<typeof main>
2121+export type $Output<B = l.BinaryData> = l.InferMethodOutput<typeof main, B>
2222+export type $OutputBody<B = l.BinaryData> = l.InferMethodOutputBody<
2323+ typeof main,
2424+ B
2525+>
2626+2727+export const $lxm = main.nsid,
2828+ $params = main.parameters,
2929+ $output = main.output
+6
api/src/lexicons/sh/tangled/owner.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './owner.defs.js'
66+export * as $defs from './owner.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * as cancelPipeline from './pipeline/cancelPipeline.js'
66+export * from './pipeline.defs.js'
77+export * as $defs from './pipeline.defs.js'
88+export * as status from './pipeline/status.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './cancelPipeline.defs.js'
66+export * as $defs from './cancelPipeline.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.pipeline.status'
88+99+export { $nsid }
1010+1111+type Main = {
1212+ $type: 'sh.tangled.pipeline.status'
1313+1414+ /**
1515+ * ATURI of the pipeline
1616+ */
1717+ pipeline: l.AtUriString
1818+1919+ /**
2020+ * name of the workflow within this pipeline
2121+ */
2222+ workflow: l.AtUriString
2323+2424+ /**
2525+ * status of the workflow
2626+ */
2727+ status: 'pending' | 'running' | 'failed' | 'timeout' | 'cancelled' | 'success'
2828+2929+ /**
3030+ * time of creation of this status update
3131+ */
3232+ createdAt: l.DatetimeString
3333+3434+ /**
3535+ * error message if failed
3636+ */
3737+ error?: string
3838+3939+ /**
4040+ * exit code if failed
4141+ */
4242+ exitCode?: number
4343+}
4444+4545+export type { Main }
4646+4747+const main = l.record<'tid', Main>(
4848+ 'tid',
4949+ $nsid,
5050+ l.object({
5151+ pipeline: l.string({ format: 'at-uri' }),
5252+ workflow: l.string({ format: 'at-uri' }),
5353+ status: l.enum([
5454+ 'pending',
5555+ 'running',
5656+ 'failed',
5757+ 'timeout',
5858+ 'cancelled',
5959+ 'success',
6060+ ]),
6161+ createdAt: l.string({ format: 'datetime' }),
6262+ error: l.optional(l.string()),
6363+ exitCode: l.optional(l.integer()),
6464+ }),
6565+)
6666+6767+export { main }
6868+6969+export const $isTypeOf = /*#__PURE__*/ main.isTypeOf.bind(main),
7070+ $build = /*#__PURE__*/ main.build.bind(main),
7171+ $type = /*#__PURE__*/ main.$type
7272+export const $assert = /*#__PURE__*/ main.assert.bind(main),
7373+ $check = /*#__PURE__*/ main.check.bind(main),
7474+ $cast = /*#__PURE__*/ main.cast.bind(main),
7575+ $ifMatches = /*#__PURE__*/ main.ifMatches.bind(main),
7676+ $matches = /*#__PURE__*/ main.matches.bind(main),
7777+ $parse = /*#__PURE__*/ main.parse.bind(main),
7878+ $safeParse = /*#__PURE__*/ main.safeParse.bind(main),
7979+ $validate = /*#__PURE__*/ main.validate.bind(main),
8080+ $safeValidate = /*#__PURE__*/ main.safeValidate.bind(main)
+6
api/src/lexicons/sh/tangled/pipeline/status.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './status.defs.js'
66+export * as $defs from './status.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './publicKey.defs.js'
66+export * as $defs from './publicKey.defs.js'
+91
api/src/lexicons/sh/tangled/repo.defs.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.repo'
88+99+export { $nsid }
1010+1111+type Main = {
1212+ $type: 'sh.tangled.repo'
1313+1414+ /**
1515+ * name of the repo
1616+ */
1717+ name: string
1818+1919+ /**
2020+ * knot where the repo was created
2121+ */
2222+ knot: string
2323+2424+ /**
2525+ * CI runner to send jobs to and receive results from
2626+ */
2727+ spindle?: string
2828+ description?: string
2929+3030+ /**
3131+ * Any URI related to the repo
3232+ */
3333+ website?: l.UriString
3434+3535+ /**
3636+ * Topics related to the repo
3737+ */
3838+ topics?: string[]
3939+4040+ /**
4141+ * source of the repo
4242+ */
4343+ source?: l.UriString
4444+4545+ /**
4646+ * List of labels that this repo subscribes to
4747+ */
4848+ labels?: l.AtUriString[]
4949+5050+ /**
5151+ * DID of the repo itself, if assigned
5252+ */
5353+ repoDid?: l.DidString
5454+ createdAt: l.DatetimeString
5555+}
5656+5757+export type { Main }
5858+5959+const main = l.record<'tid', Main>(
6060+ 'tid',
6161+ $nsid,
6262+ l.object({
6363+ name: l.string(),
6464+ knot: l.string(),
6565+ spindle: l.optional(l.string()),
6666+ description: l.optional(l.string({ minGraphemes: 1, maxGraphemes: 140 })),
6767+ website: l.optional(l.string({ format: 'uri' })),
6868+ topics: l.optional(
6969+ l.array(l.string({ minLength: 1, maxLength: 50 }), { maxLength: 50 }),
7070+ ),
7171+ source: l.optional(l.string({ format: 'uri' })),
7272+ labels: l.optional(l.array(l.string({ format: 'at-uri' }))),
7373+ repoDid: l.optional(l.string({ format: 'did' })),
7474+ createdAt: l.string({ format: 'datetime' }),
7575+ }),
7676+)
7777+7878+export { main }
7979+8080+export const $isTypeOf = /*#__PURE__*/ main.isTypeOf.bind(main),
8181+ $build = /*#__PURE__*/ main.build.bind(main),
8282+ $type = /*#__PURE__*/ main.$type
8383+export const $assert = /*#__PURE__*/ main.assert.bind(main),
8484+ $check = /*#__PURE__*/ main.check.bind(main),
8585+ $cast = /*#__PURE__*/ main.cast.bind(main),
8686+ $ifMatches = /*#__PURE__*/ main.ifMatches.bind(main),
8787+ $matches = /*#__PURE__*/ main.matches.bind(main),
8888+ $parse = /*#__PURE__*/ main.parse.bind(main),
8989+ $safeParse = /*#__PURE__*/ main.safeParse.bind(main),
9090+ $validate = /*#__PURE__*/ main.validate.bind(main),
9191+ $safeValidate = /*#__PURE__*/ main.safeValidate.bind(main)
+34
api/src/lexicons/sh/tangled/repo.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * as issue from './repo/issue.js'
66+export * as pull from './repo/pull.js'
77+export * as addSecret from './repo/addSecret.js'
88+export * as archive from './repo/archive.js'
99+export * as artifact from './repo/artifact.js'
1010+export * as blob from './repo/blob.js'
1111+export * as branch from './repo/branch.js'
1212+export * as branches from './repo/branches.js'
1313+export * as collaborator from './repo/collaborator.js'
1414+export * as compare from './repo/compare.js'
1515+export * as create from './repo/create.js'
1616+export * as setDefaultBranch from './repo/setDefaultBranch.js'
1717+export * as 'delete' from './repo/delete.js'
1818+export * as deleteBranch from './repo/deleteBranch.js'
1919+export * as diff from './repo/diff.js'
2020+export * as forkStatus from './repo/forkStatus.js'
2121+export * as forkSync from './repo/forkSync.js'
2222+export * as getDefaultBranch from './repo/getDefaultBranch.js'
2323+export * as hiddenRef from './repo/hiddenRef.js'
2424+export * as languages from './repo/languages.js'
2525+export * as listSecrets from './repo/listSecrets.js'
2626+export * as log from './repo/log.js'
2727+export * as merge from './repo/merge.js'
2828+export * as mergeCheck from './repo/mergeCheck.js'
2929+export * as removeSecret from './repo/removeSecret.js'
3030+export * from './repo.defs.js'
3131+export * as $defs from './repo.defs.js'
3232+export * as tag from './repo/tag.js'
3333+export * as tags from './repo/tags.js'
3434+export * as tree from './repo/tree.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.repo.addSecret'
88+99+export { $nsid }
1010+1111+/** Add a CI secret */
1212+const main = l.procedure(
1313+ $nsid,
1414+ l.params(),
1515+ l.jsonPayload({
1616+ repo: l.string({ format: 'at-uri' }),
1717+ key: l.string({ maxLength: 50, minLength: 1 }),
1818+ value: l.string({ maxLength: 200, minLength: 1 }),
1919+ }),
2020+ l.payload(),
2121+)
2222+export { main }
2323+2424+export type $Params = l.InferMethodParams<typeof main>
2525+export type $Input<B = l.BinaryData> = l.InferMethodInput<typeof main, B>
2626+export type $InputBody<B = l.BinaryData> = l.InferMethodInputBody<
2727+ typeof main,
2828+ B
2929+>
3030+export type $Output<B = l.BinaryData> = l.InferMethodOutput<typeof main, B>
3131+export type $OutputBody<B = l.BinaryData> = l.InferMethodOutputBody<
3232+ typeof main,
3333+ B
3434+>
3535+3636+export const $lxm = main.nsid,
3737+ $params = main.parameters,
3838+ $input = main.input,
3939+ $output = main.output
+6
api/src/lexicons/sh/tangled/repo/addSecret.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './addSecret.defs.js'
66+export * as $defs from './addSecret.defs.js'
+40
api/src/lexicons/sh/tangled/repo/archive.defs.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.repo.archive'
88+99+export { $nsid }
1010+1111+const main = l.query(
1212+ $nsid,
1313+ l.params({
1414+ repo: l.string(),
1515+ ref: l.string(),
1616+ format: l.optional(
1717+ l.withDefault(
1818+ l.enum(['tar', 'zip', 'tar.gz', 'tar.bz2', 'tar.xz']),
1919+ 'tar.gz',
2020+ ),
2121+ ),
2222+ prefix: l.optional(l.string()),
2323+ }),
2424+ l.payload('*/*'),
2525+ ['RepoNotFound', 'RefNotFound', 'InvalidRequest', 'ArchiveError'],
2626+)
2727+export { main }
2828+2929+export type $Params = l.InferMethodParams<typeof main>
3030+/** Binary archive data */
3131+export type $Output<B = l.BinaryData> = l.InferMethodOutput<typeof main, B>
3232+/** Binary archive data */
3333+export type $OutputBody<B = l.BinaryData> = l.InferMethodOutputBody<
3434+ typeof main,
3535+ B
3636+>
3737+3838+export const $lxm = main.nsid,
3939+ $params = main.parameters,
4040+ $output = main.output
+6
api/src/lexicons/sh/tangled/repo/archive.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './archive.defs.js'
66+export * as $defs from './archive.defs.js'
+69
api/src/lexicons/sh/tangled/repo/artifact.defs.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.repo.artifact'
88+99+export { $nsid }
1010+1111+type Main = {
1212+ $type: 'sh.tangled.repo.artifact'
1313+1414+ /**
1515+ * name of the artifact
1616+ */
1717+ name: string
1818+1919+ /**
2020+ * repo that this artifact is being uploaded to
2121+ */
2222+ repo?: l.AtUriString
2323+ repoDid?: l.DidString
2424+2525+ /**
2626+ * hash of the tag object that this artifact is attached to (only annotated tags are supported)
2727+ */
2828+ tag: Uint8Array
2929+3030+ /**
3131+ * time of creation of this artifact
3232+ */
3333+ createdAt: l.DatetimeString
3434+3535+ /**
3636+ * the artifact
3737+ */
3838+ artifact: l.BlobRef
3939+}
4040+4141+export type { Main }
4242+4343+const main = l.record<'tid', Main>(
4444+ 'tid',
4545+ $nsid,
4646+ l.object({
4747+ name: l.string(),
4848+ repo: l.optional(l.string({ format: 'at-uri' })),
4949+ repoDid: l.optional(l.string({ format: 'did' })),
5050+ tag: l.bytes({ minLength: 20, maxLength: 20 }),
5151+ createdAt: l.string({ format: 'datetime' }),
5252+ artifact: l.blob({ accept: ['*/*'], maxSize: 52428800 }),
5353+ }),
5454+)
5555+5656+export { main }
5757+5858+export const $isTypeOf = /*#__PURE__*/ main.isTypeOf.bind(main),
5959+ $build = /*#__PURE__*/ main.build.bind(main),
6060+ $type = /*#__PURE__*/ main.$type
6161+export const $assert = /*#__PURE__*/ main.assert.bind(main),
6262+ $check = /*#__PURE__*/ main.check.bind(main),
6363+ $cast = /*#__PURE__*/ main.cast.bind(main),
6464+ $ifMatches = /*#__PURE__*/ main.ifMatches.bind(main),
6565+ $matches = /*#__PURE__*/ main.matches.bind(main),
6666+ $parse = /*#__PURE__*/ main.parse.bind(main),
6767+ $safeParse = /*#__PURE__*/ main.safeParse.bind(main),
6868+ $validate = /*#__PURE__*/ main.validate.bind(main),
6969+ $safeValidate = /*#__PURE__*/ main.safeValidate.bind(main)
+6
api/src/lexicons/sh/tangled/repo/artifact.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './artifact.defs.js'
66+export * as $defs from './artifact.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './blob.defs.js'
66+export * as $defs from './blob.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './branch.defs.js'
66+export * as $defs from './branch.defs.js'
+34
api/src/lexicons/sh/tangled/repo/branches.defs.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.repo.branches'
88+99+export { $nsid }
1010+1111+const main = l.query(
1212+ $nsid,
1313+ l.params({
1414+ repo: l.string(),
1515+ limit: l.optional(
1616+ l.withDefault(l.integer({ minimum: 1, maximum: 100 }), 50),
1717+ ),
1818+ cursor: l.optional(l.string()),
1919+ }),
2020+ l.payload('*/*'),
2121+ ['RepoNotFound', 'InvalidRequest'],
2222+)
2323+export { main }
2424+2525+export type $Params = l.InferMethodParams<typeof main>
2626+export type $Output<B = l.BinaryData> = l.InferMethodOutput<typeof main, B>
2727+export type $OutputBody<B = l.BinaryData> = l.InferMethodOutputBody<
2828+ typeof main,
2929+ B
3030+>
3131+3232+export const $lxm = main.nsid,
3333+ $params = main.parameters,
3434+ $output = main.output
+6
api/src/lexicons/sh/tangled/repo/branches.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './branches.defs.js'
66+export * as $defs from './branches.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './collaborator.defs.js'
66+export * as $defs from './collaborator.defs.js'
+30
api/src/lexicons/sh/tangled/repo/compare.defs.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.repo.compare'
88+99+export { $nsid }
1010+1111+const main = l.query(
1212+ $nsid,
1313+ l.params({ repo: l.string(), rev1: l.string(), rev2: l.string() }),
1414+ l.payload('*/*'),
1515+ ['RepoNotFound', 'RevisionNotFound', 'InvalidRequest', 'CompareError'],
1616+)
1717+export { main }
1818+1919+export type $Params = l.InferMethodParams<typeof main>
2020+/** Compare output in application/json */
2121+export type $Output<B = l.BinaryData> = l.InferMethodOutput<typeof main, B>
2222+/** Compare output in application/json */
2323+export type $OutputBody<B = l.BinaryData> = l.InferMethodOutputBody<
2424+ typeof main,
2525+ B
2626+>
2727+2828+export const $lxm = main.nsid,
2929+ $params = main.parameters,
3030+ $output = main.output
+6
api/src/lexicons/sh/tangled/repo/compare.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './compare.defs.js'
66+export * as $defs from './compare.defs.js'
+41
api/src/lexicons/sh/tangled/repo/create.defs.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.repo.create'
88+99+export { $nsid }
1010+1111+/** Create a new repository */
1212+const main = l.procedure(
1313+ $nsid,
1414+ l.params(),
1515+ l.jsonPayload({
1616+ rkey: l.string(),
1717+ name: l.string(),
1818+ defaultBranch: l.optional(l.string()),
1919+ source: l.optional(l.string()),
2020+ repoDid: l.optional(l.string({ format: 'did' })),
2121+ }),
2222+ l.jsonPayload({ repoDid: l.optional(l.string({ format: 'did' })) }),
2323+)
2424+export { main }
2525+2626+export type $Params = l.InferMethodParams<typeof main>
2727+export type $Input<B = l.BinaryData> = l.InferMethodInput<typeof main, B>
2828+export type $InputBody<B = l.BinaryData> = l.InferMethodInputBody<
2929+ typeof main,
3030+ B
3131+>
3232+export type $Output<B = l.BinaryData> = l.InferMethodOutput<typeof main, B>
3333+export type $OutputBody<B = l.BinaryData> = l.InferMethodOutputBody<
3434+ typeof main,
3535+ B
3636+>
3737+3838+export const $lxm = main.nsid,
3939+ $params = main.parameters,
4040+ $input = main.input,
4141+ $output = main.output
+6
api/src/lexicons/sh/tangled/repo/create.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './create.defs.js'
66+export * as $defs from './create.defs.js'
+39
api/src/lexicons/sh/tangled/repo/delete.defs.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.repo.delete'
88+99+export { $nsid }
1010+1111+/** Delete a repository */
1212+const main = l.procedure(
1313+ $nsid,
1414+ l.params(),
1515+ l.jsonPayload({
1616+ did: l.string({ format: 'did' }),
1717+ name: l.string(),
1818+ rkey: l.string(),
1919+ }),
2020+ l.payload(),
2121+)
2222+export { main }
2323+2424+export type $Params = l.InferMethodParams<typeof main>
2525+export type $Input<B = l.BinaryData> = l.InferMethodInput<typeof main, B>
2626+export type $InputBody<B = l.BinaryData> = l.InferMethodInputBody<
2727+ typeof main,
2828+ B
2929+>
3030+export type $Output<B = l.BinaryData> = l.InferMethodOutput<typeof main, B>
3131+export type $OutputBody<B = l.BinaryData> = l.InferMethodOutputBody<
3232+ typeof main,
3333+ B
3434+>
3535+3636+export const $lxm = main.nsid,
3737+ $params = main.parameters,
3838+ $input = main.input,
3939+ $output = main.output
+6
api/src/lexicons/sh/tangled/repo/delete.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './delete.defs.js'
66+export * as $defs from './delete.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.repo.deleteBranch'
88+99+export { $nsid }
1010+1111+/** Delete a branch on this repository */
1212+const main = l.procedure(
1313+ $nsid,
1414+ l.params(),
1515+ l.jsonPayload({ repo: l.string({ format: 'at-uri' }), branch: l.string() }),
1616+ l.payload(),
1717+)
1818+export { main }
1919+2020+export type $Params = l.InferMethodParams<typeof main>
2121+export type $Input<B = l.BinaryData> = l.InferMethodInput<typeof main, B>
2222+export type $InputBody<B = l.BinaryData> = l.InferMethodInputBody<
2323+ typeof main,
2424+ B
2525+>
2626+export type $Output<B = l.BinaryData> = l.InferMethodOutput<typeof main, B>
2727+export type $OutputBody<B = l.BinaryData> = l.InferMethodOutputBody<
2828+ typeof main,
2929+ B
3030+>
3131+3232+export const $lxm = main.nsid,
3333+ $params = main.parameters,
3434+ $input = main.input,
3535+ $output = main.output
+6
api/src/lexicons/sh/tangled/repo/deleteBranch.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './deleteBranch.defs.js'
66+export * as $defs from './deleteBranch.defs.js'
+28
api/src/lexicons/sh/tangled/repo/diff.defs.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.repo.diff'
88+99+export { $nsid }
1010+1111+const main = l.query(
1212+ $nsid,
1313+ l.params({ repo: l.string(), ref: l.string() }),
1414+ l.payload('*/*'),
1515+ ['RepoNotFound', 'RefNotFound', 'InvalidRequest'],
1616+)
1717+export { main }
1818+1919+export type $Params = l.InferMethodParams<typeof main>
2020+export type $Output<B = l.BinaryData> = l.InferMethodOutput<typeof main, B>
2121+export type $OutputBody<B = l.BinaryData> = l.InferMethodOutputBody<
2222+ typeof main,
2323+ B
2424+>
2525+2626+export const $lxm = main.nsid,
2727+ $params = main.parameters,
2828+ $output = main.output
+6
api/src/lexicons/sh/tangled/repo/diff.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './diff.defs.js'
66+export * as $defs from './diff.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.repo.forkStatus'
88+99+export { $nsid }
1010+1111+/** Check fork status relative to upstream source */
1212+const main = l.procedure(
1313+ $nsid,
1414+ l.params(),
1515+ l.jsonPayload({
1616+ did: l.string({ format: 'did' }),
1717+ name: l.string(),
1818+ source: l.string(),
1919+ branch: l.string(),
2020+ hiddenRef: l.string(),
2121+ }),
2222+ l.jsonPayload({ status: l.integer() }),
2323+)
2424+export { main }
2525+2626+export type $Params = l.InferMethodParams<typeof main>
2727+export type $Input<B = l.BinaryData> = l.InferMethodInput<typeof main, B>
2828+export type $InputBody<B = l.BinaryData> = l.InferMethodInputBody<
2929+ typeof main,
3030+ B
3131+>
3232+export type $Output<B = l.BinaryData> = l.InferMethodOutput<typeof main, B>
3333+export type $OutputBody<B = l.BinaryData> = l.InferMethodOutputBody<
3434+ typeof main,
3535+ B
3636+>
3737+3838+export const $lxm = main.nsid,
3939+ $params = main.parameters,
4040+ $input = main.input,
4141+ $output = main.output
+6
api/src/lexicons/sh/tangled/repo/forkStatus.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './forkStatus.defs.js'
66+export * as $defs from './forkStatus.defs.js'
+40
api/src/lexicons/sh/tangled/repo/forkSync.defs.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.repo.forkSync'
88+99+export { $nsid }
1010+1111+/** Sync a forked repository with its upstream source */
1212+const main = l.procedure(
1313+ $nsid,
1414+ l.params(),
1515+ l.jsonPayload({
1616+ did: l.string({ format: 'did' }),
1717+ source: l.string({ format: 'at-uri' }),
1818+ name: l.string(),
1919+ branch: l.string(),
2020+ }),
2121+ l.payload(),
2222+)
2323+export { main }
2424+2525+export type $Params = l.InferMethodParams<typeof main>
2626+export type $Input<B = l.BinaryData> = l.InferMethodInput<typeof main, B>
2727+export type $InputBody<B = l.BinaryData> = l.InferMethodInputBody<
2828+ typeof main,
2929+ B
3030+>
3131+export type $Output<B = l.BinaryData> = l.InferMethodOutput<typeof main, B>
3232+export type $OutputBody<B = l.BinaryData> = l.InferMethodOutputBody<
3333+ typeof main,
3434+ B
3535+>
3636+3737+export const $lxm = main.nsid,
3838+ $params = main.parameters,
3939+ $input = main.input,
4040+ $output = main.output
+6
api/src/lexicons/sh/tangled/repo/forkSync.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './forkSync.defs.js'
66+export * as $defs from './forkSync.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './getDefaultBranch.defs.js'
66+export * as $defs from './getDefaultBranch.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.repo.hiddenRef'
88+99+export { $nsid }
1010+1111+/** Create a hidden ref in a repository */
1212+const main = l.procedure(
1313+ $nsid,
1414+ l.params(),
1515+ l.jsonPayload({
1616+ repo: l.string({ format: 'at-uri' }),
1717+ forkRef: l.string(),
1818+ remoteRef: l.string(),
1919+ }),
2020+ l.jsonPayload({
2121+ success: l.boolean(),
2222+ ref: l.optional(l.string()),
2323+ error: l.optional(l.string()),
2424+ }),
2525+)
2626+export { main }
2727+2828+export type $Params = l.InferMethodParams<typeof main>
2929+export type $Input<B = l.BinaryData> = l.InferMethodInput<typeof main, B>
3030+export type $InputBody<B = l.BinaryData> = l.InferMethodInputBody<
3131+ typeof main,
3232+ B
3333+>
3434+export type $Output<B = l.BinaryData> = l.InferMethodOutput<typeof main, B>
3535+export type $OutputBody<B = l.BinaryData> = l.InferMethodOutputBody<
3636+ typeof main,
3737+ B
3838+>
3939+4040+export const $lxm = main.nsid,
4141+ $params = main.parameters,
4242+ $input = main.input,
4343+ $output = main.output
+6
api/src/lexicons/sh/tangled/repo/hiddenRef.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './hiddenRef.defs.js'
66+export * as $defs from './hiddenRef.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * as state from './issue/state.js'
66+export * as comment from './issue/comment.js'
77+export * from './issue.defs.js'
88+export * as $defs from './issue.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './comment.defs.js'
66+export * as $defs from './comment.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * as closed from './state/closed.js'
66+export * as open from './state/open.js'
77+export * from './state.defs.js'
88+export * as $defs from './state.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './closed.defs.js'
66+export * as $defs from './closed.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './open.defs.js'
66+export * as $defs from './open.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.repo.languages'
88+99+export { $nsid }
1010+1111+const main = l.query(
1212+ $nsid,
1313+ l.params({
1414+ repo: l.string(),
1515+ ref: l.optional(l.withDefault(l.string(), 'HEAD')),
1616+ }),
1717+ l.jsonPayload({
1818+ ref: l.string(),
1919+ languages: l.array(l.ref<Language>((() => language) as any)),
2020+ totalSize: l.optional(l.integer()),
2121+ totalFiles: l.optional(l.integer()),
2222+ }),
2323+ ['RepoNotFound', 'RefNotFound', 'InvalidRequest'],
2424+)
2525+export { main }
2626+2727+export type $Params = l.InferMethodParams<typeof main>
2828+export type $Output<B = l.BinaryData> = l.InferMethodOutput<typeof main, B>
2929+export type $OutputBody<B = l.BinaryData> = l.InferMethodOutputBody<
3030+ typeof main,
3131+ B
3232+>
3333+3434+export const $lxm = main.nsid,
3535+ $params = main.parameters,
3636+ $output = main.output
3737+3838+type Language = {
3939+ $type?: 'sh.tangled.repo.languages#language'
4040+4141+ /**
4242+ * Programming language name
4343+ */
4444+ name: string
4545+4646+ /**
4747+ * Total size of files in this language (bytes)
4848+ */
4949+ size: number
5050+5151+ /**
5252+ * Percentage of total codebase (0-100)
5353+ */
5454+ percentage: number
5555+5656+ /**
5757+ * Number of files in this language
5858+ */
5959+ fileCount?: number
6060+6161+ /**
6262+ * Hex color code for this language
6363+ */
6464+ color?: string
6565+6666+ /**
6767+ * File extensions associated with this language
6868+ */
6969+ extensions?: string[]
7070+}
7171+7272+export type { Language }
7373+7474+const language = l.typedObject<Language>(
7575+ $nsid,
7676+ 'language',
7777+ l.object({
7878+ name: l.string(),
7979+ size: l.integer(),
8080+ percentage: l.integer(),
8181+ fileCount: l.optional(l.integer()),
8282+ color: l.optional(l.string()),
8383+ extensions: l.optional(l.array(l.string())),
8484+ }),
8585+)
8686+8787+export { language }
+6
api/src/lexicons/sh/tangled/repo/languages.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './languages.defs.js'
66+export * as $defs from './languages.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './listSecrets.defs.js'
66+export * as $defs from './listSecrets.defs.js'
+36
api/src/lexicons/sh/tangled/repo/log.defs.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.repo.log'
88+99+export { $nsid }
1010+1111+const main = l.query(
1212+ $nsid,
1313+ l.params({
1414+ repo: l.string(),
1515+ ref: l.string(),
1616+ path: l.optional(l.withDefault(l.string(), '')),
1717+ limit: l.optional(
1818+ l.withDefault(l.integer({ minimum: 1, maximum: 100 }), 50),
1919+ ),
2020+ cursor: l.optional(l.string()),
2121+ }),
2222+ l.payload('*/*'),
2323+ ['RepoNotFound', 'RefNotFound', 'PathNotFound', 'InvalidRequest'],
2424+)
2525+export { main }
2626+2727+export type $Params = l.InferMethodParams<typeof main>
2828+export type $Output<B = l.BinaryData> = l.InferMethodOutput<typeof main, B>
2929+export type $OutputBody<B = l.BinaryData> = l.InferMethodOutputBody<
3030+ typeof main,
3131+ B
3232+>
3333+3434+export const $lxm = main.nsid,
3535+ $params = main.parameters,
3636+ $output = main.output
+6
api/src/lexicons/sh/tangled/repo/log.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './log.defs.js'
66+export * as $defs from './log.defs.js'
+44
api/src/lexicons/sh/tangled/repo/merge.defs.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.repo.merge'
88+99+export { $nsid }
1010+1111+/** Merge a patch into a repository branch */
1212+const main = l.procedure(
1313+ $nsid,
1414+ l.params(),
1515+ l.jsonPayload({
1616+ did: l.string({ format: 'did' }),
1717+ name: l.string(),
1818+ patch: l.string(),
1919+ branch: l.string(),
2020+ authorName: l.optional(l.string()),
2121+ authorEmail: l.optional(l.string()),
2222+ commitBody: l.optional(l.string()),
2323+ commitMessage: l.optional(l.string()),
2424+ }),
2525+ l.payload(),
2626+)
2727+export { main }
2828+2929+export type $Params = l.InferMethodParams<typeof main>
3030+export type $Input<B = l.BinaryData> = l.InferMethodInput<typeof main, B>
3131+export type $InputBody<B = l.BinaryData> = l.InferMethodInputBody<
3232+ typeof main,
3333+ B
3434+>
3535+export type $Output<B = l.BinaryData> = l.InferMethodOutput<typeof main, B>
3636+export type $OutputBody<B = l.BinaryData> = l.InferMethodOutputBody<
3737+ typeof main,
3838+ B
3939+>
4040+4141+export const $lxm = main.nsid,
4242+ $params = main.parameters,
4343+ $input = main.input,
4444+ $output = main.output
+6
api/src/lexicons/sh/tangled/repo/merge.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './merge.defs.js'
66+export * as $defs from './merge.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.repo.mergeCheck'
88+99+export { $nsid }
1010+1111+/** Check if a merge is possible between two branches */
1212+const main = l.procedure(
1313+ $nsid,
1414+ l.params(),
1515+ l.jsonPayload({
1616+ did: l.string({ format: 'did' }),
1717+ name: l.string(),
1818+ patch: l.string(),
1919+ branch: l.string(),
2020+ }),
2121+ l.jsonPayload({
2222+ is_conflicted: l.boolean(),
2323+ conflicts: l.optional(
2424+ l.array(l.ref<ConflictInfo>((() => conflictInfo) as any)),
2525+ ),
2626+ message: l.optional(l.string()),
2727+ error: l.optional(l.string()),
2828+ }),
2929+)
3030+export { main }
3131+3232+export type $Params = l.InferMethodParams<typeof main>
3333+export type $Input<B = l.BinaryData> = l.InferMethodInput<typeof main, B>
3434+export type $InputBody<B = l.BinaryData> = l.InferMethodInputBody<
3535+ typeof main,
3636+ B
3737+>
3838+export type $Output<B = l.BinaryData> = l.InferMethodOutput<typeof main, B>
3939+export type $OutputBody<B = l.BinaryData> = l.InferMethodOutputBody<
4040+ typeof main,
4141+ B
4242+>
4343+4444+export const $lxm = main.nsid,
4545+ $params = main.parameters,
4646+ $input = main.input,
4747+ $output = main.output
4848+4949+type ConflictInfo = {
5050+ $type?: 'sh.tangled.repo.mergeCheck#conflictInfo'
5151+5252+ /**
5353+ * Name of the conflicted file
5454+ */
5555+ filename: string
5656+5757+ /**
5858+ * Reason for the conflict
5959+ */
6060+ reason: string
6161+}
6262+6363+export type { ConflictInfo }
6464+6565+const conflictInfo = l.typedObject<ConflictInfo>(
6666+ $nsid,
6767+ 'conflictInfo',
6868+ l.object({ filename: l.string(), reason: l.string() }),
6969+)
7070+7171+export { conflictInfo }
+6
api/src/lexicons/sh/tangled/repo/mergeCheck.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './mergeCheck.defs.js'
66+export * as $defs from './mergeCheck.defs.js'
+118
api/src/lexicons/sh/tangled/repo/pull.defs.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.repo.pull'
88+99+export { $nsid }
1010+1111+type Main = {
1212+ $type: 'sh.tangled.repo.pull'
1313+ title: string
1414+ body?: string
1515+ rounds: Round[]
1616+ source?: Source
1717+ target: Target
1818+ createdAt: l.DatetimeString
1919+ mentions?: l.DidString[]
2020+ references?: l.AtUriString[]
2121+ dependentOn?: l.AtUriString
2222+}
2323+2424+export type { Main }
2525+2626+const main = l.record<'tid', Main>(
2727+ 'tid',
2828+ $nsid,
2929+ l.object({
3030+ title: l.string(),
3131+ body: l.optional(l.string()),
3232+ rounds: l.array(l.ref<Round>((() => round) as any)),
3333+ source: l.optional(l.ref<Source>((() => source) as any)),
3434+ target: l.ref<Target>((() => target) as any),
3535+ createdAt: l.string({ format: 'datetime' }),
3636+ mentions: l.optional(l.array(l.string({ format: 'did' }))),
3737+ references: l.optional(l.array(l.string({ format: 'at-uri' }))),
3838+ dependentOn: l.optional(l.string({ format: 'at-uri' })),
3939+ }),
4040+)
4141+4242+export { main }
4343+4444+export const $isTypeOf = /*#__PURE__*/ main.isTypeOf.bind(main),
4545+ $build = /*#__PURE__*/ main.build.bind(main),
4646+ $type = /*#__PURE__*/ main.$type
4747+export const $assert = /*#__PURE__*/ main.assert.bind(main),
4848+ $check = /*#__PURE__*/ main.check.bind(main),
4949+ $cast = /*#__PURE__*/ main.cast.bind(main),
5050+ $ifMatches = /*#__PURE__*/ main.ifMatches.bind(main),
5151+ $matches = /*#__PURE__*/ main.matches.bind(main),
5252+ $parse = /*#__PURE__*/ main.parse.bind(main),
5353+ $safeParse = /*#__PURE__*/ main.safeParse.bind(main),
5454+ $validate = /*#__PURE__*/ main.validate.bind(main),
5555+ $safeValidate = /*#__PURE__*/ main.safeValidate.bind(main)
5656+5757+type Target = {
5858+ $type?: 'sh.tangled.repo.pull#target'
5959+ repo?: l.AtUriString
6060+ repoDid?: l.DidString
6161+ branch: string
6262+}
6363+6464+export type { Target }
6565+6666+const target = l.typedObject<Target>(
6767+ $nsid,
6868+ 'target',
6969+ l.object({
7070+ repo: l.optional(l.string({ format: 'at-uri' })),
7171+ repoDid: l.optional(l.string({ format: 'did' })),
7272+ branch: l.string(),
7373+ }),
7474+)
7575+7676+export { target }
7777+7878+type Source = {
7979+ $type?: 'sh.tangled.repo.pull#source'
8080+ branch: string
8181+ repo?: l.AtUriString
8282+ repoDid?: l.DidString
8383+}
8484+8585+export type { Source }
8686+8787+const source = l.typedObject<Source>(
8888+ $nsid,
8989+ 'source',
9090+ l.object({
9191+ branch: l.string(),
9292+ repo: l.optional(l.string({ format: 'at-uri' })),
9393+ repoDid: l.optional(l.string({ format: 'did' })),
9494+ }),
9595+)
9696+9797+export { source }
9898+9999+/** 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. */
100100+type Round = {
101101+ $type?: 'sh.tangled.repo.pull#round'
102102+ createdAt: l.DatetimeString
103103+ patchBlob: l.BlobRef
104104+}
105105+106106+export type { Round }
107107+108108+/** 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. */
109109+const round = l.typedObject<Round>(
110110+ $nsid,
111111+ 'round',
112112+ l.object({
113113+ createdAt: l.string({ format: 'datetime' }),
114114+ patchBlob: l.blob({ accept: ['application/gzip'] }),
115115+ }),
116116+)
117117+118118+export { round }
+8
api/src/lexicons/sh/tangled/repo/pull.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * as status from './pull/status.js'
66+export * as comment from './pull/comment.js'
77+export * from './pull.defs.js'
88+export * as $defs from './pull.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './comment.defs.js'
66+export * as $defs from './comment.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * as closed from './status/closed.js'
66+export * as merged from './status/merged.js'
77+export * as open from './status/open.js'
88+export * from './status.defs.js'
99+export * as $defs from './status.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './closed.defs.js'
66+export * as $defs from './closed.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './merged.defs.js'
66+export * as $defs from './merged.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './open.defs.js'
66+export * as $defs from './open.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.repo.removeSecret'
88+99+export { $nsid }
1010+1111+/** Remove a CI secret */
1212+const main = l.procedure(
1313+ $nsid,
1414+ l.params(),
1515+ l.jsonPayload({
1616+ repo: l.string({ format: 'at-uri' }),
1717+ key: l.string({ maxLength: 50, minLength: 1 }),
1818+ }),
1919+ l.payload(),
2020+)
2121+export { main }
2222+2323+export type $Params = l.InferMethodParams<typeof main>
2424+export type $Input<B = l.BinaryData> = l.InferMethodInput<typeof main, B>
2525+export type $InputBody<B = l.BinaryData> = l.InferMethodInputBody<
2626+ typeof main,
2727+ B
2828+>
2929+export type $Output<B = l.BinaryData> = l.InferMethodOutput<typeof main, B>
3030+export type $OutputBody<B = l.BinaryData> = l.InferMethodOutputBody<
3131+ typeof main,
3232+ B
3333+>
3434+3535+export const $lxm = main.nsid,
3636+ $params = main.parameters,
3737+ $input = main.input,
3838+ $output = main.output
+6
api/src/lexicons/sh/tangled/repo/removeSecret.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './removeSecret.defs.js'
66+export * as $defs from './removeSecret.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './setDefaultBranch.defs.js'
66+export * as $defs from './setDefaultBranch.defs.js'
+28
api/src/lexicons/sh/tangled/repo/tag.defs.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.repo.tag'
88+99+export { $nsid }
1010+1111+const main = l.query(
1212+ $nsid,
1313+ l.params({ repo: l.string(), tag: l.string() }),
1414+ l.payload('*/*'),
1515+ ['RepoNotFound', 'TagNotFound', 'InvalidRequest'],
1616+)
1717+export { main }
1818+1919+export type $Params = l.InferMethodParams<typeof main>
2020+export type $Output<B = l.BinaryData> = l.InferMethodOutput<typeof main, B>
2121+export type $OutputBody<B = l.BinaryData> = l.InferMethodOutputBody<
2222+ typeof main,
2323+ B
2424+>
2525+2626+export const $lxm = main.nsid,
2727+ $params = main.parameters,
2828+ $output = main.output
+6
api/src/lexicons/sh/tangled/repo/tag.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './tag.defs.js'
66+export * as $defs from './tag.defs.js'
+34
api/src/lexicons/sh/tangled/repo/tags.defs.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.repo.tags'
88+99+export { $nsid }
1010+1111+const main = l.query(
1212+ $nsid,
1313+ l.params({
1414+ repo: l.string(),
1515+ limit: l.optional(
1616+ l.withDefault(l.integer({ minimum: 1, maximum: 100 }), 50),
1717+ ),
1818+ cursor: l.optional(l.string()),
1919+ }),
2020+ l.payload('*/*'),
2121+ ['RepoNotFound', 'InvalidRequest'],
2222+)
2323+export { main }
2424+2525+export type $Params = l.InferMethodParams<typeof main>
2626+export type $Output<B = l.BinaryData> = l.InferMethodOutput<typeof main, B>
2727+export type $OutputBody<B = l.BinaryData> = l.InferMethodOutputBody<
2828+ typeof main,
2929+ B
3030+>
3131+3232+export const $lxm = main.nsid,
3333+ $params = main.parameters,
3434+ $output = main.output
+6
api/src/lexicons/sh/tangled/repo/tags.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './tags.defs.js'
66+export * as $defs from './tags.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './tree.defs.js'
66+export * as $defs from './tree.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * as member from './spindle/member.js'
66+export * from './spindle.defs.js'
77+export * as $defs from './spindle.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.spindle.member'
88+99+export { $nsid }
1010+1111+type Main = {
1212+ $type: 'sh.tangled.spindle.member'
1313+ subject: l.DidString
1414+1515+ /**
1616+ * spindle instance that the subject is now a member of
1717+ */
1818+ instance: string
1919+ createdAt: l.DatetimeString
2020+}
2121+2222+export type { Main }
2323+2424+const main = l.record<'tid', Main>(
2525+ 'tid',
2626+ $nsid,
2727+ l.object({
2828+ subject: l.string({ format: 'did' }),
2929+ instance: l.string(),
3030+ createdAt: l.string({ format: 'datetime' }),
3131+ }),
3232+)
3333+3434+export { main }
3535+3636+export const $isTypeOf = /*#__PURE__*/ main.isTypeOf.bind(main),
3737+ $build = /*#__PURE__*/ main.build.bind(main),
3838+ $type = /*#__PURE__*/ main.$type
3939+export const $assert = /*#__PURE__*/ main.assert.bind(main),
4040+ $check = /*#__PURE__*/ main.check.bind(main),
4141+ $cast = /*#__PURE__*/ main.cast.bind(main),
4242+ $ifMatches = /*#__PURE__*/ main.ifMatches.bind(main),
4343+ $matches = /*#__PURE__*/ main.matches.bind(main),
4444+ $parse = /*#__PURE__*/ main.parse.bind(main),
4545+ $safeParse = /*#__PURE__*/ main.safeParse.bind(main),
4646+ $validate = /*#__PURE__*/ main.validate.bind(main),
4747+ $safeValidate = /*#__PURE__*/ main.safeValidate.bind(main)
+6
api/src/lexicons/sh/tangled/spindle/member.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './member.defs.js'
66+export * as $defs from './member.defs.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './string.defs.js'
66+export * as $defs from './string.defs.js'
+5
api/src/lexicons/sh/tangled/sync.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * as requestCrawl from './sync/requestCrawl.js'
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+import { l } from '@atproto/lex'
66+77+const $nsid = 'sh.tangled.sync.requestCrawl'
88+99+export { $nsid }
1010+1111+/** Request a service to persistently crawl hosted repos. Does not require auth. */
1212+const main = l.procedure(
1313+ $nsid,
1414+ l.params(),
1515+ l.jsonPayload({
1616+ hostname: l.string(),
1717+ ensureRepo: l.optional(l.string({ format: 'at-uri' })),
1818+ }),
1919+ l.payload(),
2020+ ['HostBanned'],
2121+)
2222+export { main }
2323+2424+export type $Params = l.InferMethodParams<typeof main>
2525+export type $Input<B = l.BinaryData> = l.InferMethodInput<typeof main, B>
2626+export type $InputBody<B = l.BinaryData> = l.InferMethodInputBody<
2727+ typeof main,
2828+ B
2929+>
3030+export type $Output<B = l.BinaryData> = l.InferMethodOutput<typeof main, B>
3131+export type $OutputBody<B = l.BinaryData> = l.InferMethodOutputBody<
3232+ typeof main,
3333+ B
3434+>
3535+3636+export const $lxm = main.nsid,
3737+ $params = main.parameters,
3838+ $input = main.input,
3939+ $output = main.output
+6
api/src/lexicons/sh/tangled/sync/requestCrawl.ts
···11+/*
22+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
33+ */
44+55+export * from './requestCrawl.defs.js'
66+export * as $defs from './requestCrawl.defs.js'
···11+import { validate } from "@std/uuid/v7";
22+import type { BRAND } from "zod";
33+44+export type UuidString = `${string}-${string}-7${string}-${string}-${string}`;
55+export type Id<For extends string> = UuidString & BRAND<`${For}.id`>;
66+77+88+export function parseId<T extends Id<string>>(value: string): T {
99+ if (!validate(value)) {
1010+ throw new Error(`Invalid UUIDv7: ${value}`);
1111+ }
1212+ return value as T;
1313+}