@atproto/bsky 0.3.4 → 0.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/data-plane/server/routes/moderation.js +4 -0
  3. package/dist/data-plane/server/routes/moderation.js.map +1 -1
  4. package/dist/hydration/hydrator.d.ts +1 -0
  5. package/dist/hydration/hydrator.d.ts.map +1 -1
  6. package/dist/hydration/hydrator.js +1 -1
  7. package/dist/hydration/hydrator.js.map +1 -1
  8. package/dist/hydration/label.d.ts +2 -1
  9. package/dist/hydration/label.d.ts.map +1 -1
  10. package/dist/hydration/label.js +38 -5
  11. package/dist/hydration/label.js.map +1 -1
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +1 -0
  14. package/dist/index.js.map +1 -1
  15. package/dist/lexicons/tools/ozone/queue/createQueue.defs.d.ts +2 -0
  16. package/dist/lexicons/tools/ozone/queue/createQueue.defs.d.ts.map +1 -1
  17. package/dist/lexicons/tools/ozone/queue/createQueue.defs.js +1 -1
  18. package/dist/lexicons/tools/ozone/queue/createQueue.defs.js.map +1 -1
  19. package/dist/lexicons/tools/ozone/queue/defs.defs.d.ts +4 -0
  20. package/dist/lexicons/tools/ozone/queue/defs.defs.d.ts.map +1 -1
  21. package/dist/lexicons/tools/ozone/queue/defs.defs.js +1 -1
  22. package/dist/lexicons/tools/ozone/queue/defs.defs.js.map +1 -1
  23. package/dist/lexicons/tools/ozone/queue/updateQueue.defs.d.ts +2 -0
  24. package/dist/lexicons/tools/ozone/queue/updateQueue.defs.d.ts.map +1 -1
  25. package/dist/lexicons/tools/ozone/queue/updateQueue.defs.js +1 -1
  26. package/dist/lexicons/tools/ozone/queue/updateQueue.defs.js.map +1 -1
  27. package/dist/lexicons/tools/ozone/safelink/queryRules.defs.d.ts +6 -0
  28. package/dist/lexicons/tools/ozone/safelink/queryRules.defs.d.ts.map +1 -1
  29. package/dist/lexicons/tools/ozone/safelink/queryRules.defs.js +1 -1
  30. package/dist/lexicons/tools/ozone/safelink/queryRules.defs.js.map +1 -1
  31. package/dist/proto/bsky_connect.d.ts +12 -1
  32. package/dist/proto/bsky_connect.d.ts.map +1 -1
  33. package/dist/proto/bsky_connect.js +12 -1
  34. package/dist/proto/bsky_connect.js.map +1 -1
  35. package/dist/proto/bsky_pb.d.ts +130 -0
  36. package/dist/proto/bsky_pb.d.ts.map +1 -1
  37. package/dist/proto/bsky_pb.js +168 -0
  38. package/dist/proto/bsky_pb.js.map +1 -1
  39. package/package.json +9 -9
@@ -27,7 +27,8 @@ export type LabelerViewerState = {
27
27
  export type LabelerViewerStates = HydrationMap<DidString, LabelerViewerState>;
28
28
  export declare class LabelHydrator {
29
29
  dataplane: DataPlaneClient;
30
- constructor(dataplane: DataPlaneClient);
30
+ private needsReviewTagSources;
31
+ constructor(dataplane: DataPlaneClient, needsReviewTagSources?: readonly DidString[]);
31
32
  getLabelsForSubjects(subjects: UriString[], labelers: ParsedLabelers): Promise<Labels>;
32
33
  getLabelers(dids: DidString[], includeTakedowns?: boolean): Promise<Labelers>;
33
34
  getLabelerViewerStates(dids: DidString[], viewer: DidString): Promise<LabelerViewerStates>;
@@ -1 +1 @@
1
- {"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../src/hydration/label.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,SAAS,EAEf,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAC7D,OAAO,EACL,YAAY,EACZ,KAAK,MAAM,EACX,KAAK,UAAU,EAIhB,MAAM,WAAW,CAAA;AAElB,YAAY,EAAE,KAAK,EAAE,CAAA;AAErB,MAAM,MAAM,aAAa,GAAG;IAC1B,eAAe,EAAE,OAAO,CAAA;IACxB,WAAW,EAAE,OAAO,CAAA;IACpB,WAAW,EAAE,OAAO,CAAA;IACpB,MAAM,EAAE,YAAY,CAAC,GAAG,MAAM,KAAK,MAAM,EAAE,EAAE,KAAK,CAAC,CAAA;CACpD,CAAA;AAED,qBAAa,MACX,SAAQ,YAAY,CAAC,SAAS,EAAE,aAAa,CAC7C,YAAW,MAAM;IAEjB,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,MAAM,KAAK,MAAM,EAAE,CAE/C;IACD,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAYvB;IACD,YAAY,CAAC,GAAG,EAAE,SAAS,GAAG,KAAK,EAAE,CAQpC;CACF;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;AAE7D,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC,CAAA;AAC/C,MAAM,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;AAEvD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,CAAC,EAAE,WAAW,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,YAAY,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAA;AAE7E,qBAAa,aAAa;IACL,SAAS,EAAE,eAAe;IAA7C,YAAmB,SAAS,EAAE,eAAe,EAAI;IAE3C,oBAAoB,CACxB,QAAQ,EAAE,SAAS,EAAE,EACrB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,MAAM,CAAC,CAuDjB;IAEK,WAAW,CACf,IAAI,EAAE,SAAS,EAAE,EACjB,gBAAgB,UAAQ,GACvB,OAAO,CAAC,QAAQ,CAAC,CAkBnB;IAEK,sBAAsB,CAC1B,IAAI,EAAE,SAAS,EAAE,EACjB,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,mBAAmB,CAAC,CAiB9B;IAEK,oBAAoB,CACxB,IAAI,EAAE,SAAS,EAAE,EACjB,MAAM,EAAE,SAAS,GAAG,IAAI,GACvB,OAAO,CAAC,WAAW,CAAC,CAiBtB;CACF"}
1
+ {"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../src/hydration/label.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,SAAS,EAEf,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAC7D,OAAO,EACL,YAAY,EACZ,KAAK,MAAM,EACX,KAAK,UAAU,EAIhB,MAAM,WAAW,CAAA;AAElB,YAAY,EAAE,KAAK,EAAE,CAAA;AAErB,MAAM,MAAM,aAAa,GAAG;IAC1B,eAAe,EAAE,OAAO,CAAA;IACxB,WAAW,EAAE,OAAO,CAAA;IACpB,WAAW,EAAE,OAAO,CAAA;IACpB,MAAM,EAAE,YAAY,CAAC,GAAG,MAAM,KAAK,MAAM,EAAE,EAAE,KAAK,CAAC,CAAA;CACpD,CAAA;AAED,qBAAa,MACX,SAAQ,YAAY,CAAC,SAAS,EAAE,aAAa,CAC7C,YAAW,MAAM;IAEjB,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,MAAM,KAAK,MAAM,EAAE,CAE/C;IACD,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAcvB;IACD,YAAY,CAAC,GAAG,EAAE,SAAS,GAAG,KAAK,EAAE,CAQpC;CACF;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;AAE7D,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC,CAAA;AAC/C,MAAM,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;AAEvD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,CAAC,EAAE,WAAW,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,YAAY,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAA;AAE7E,qBAAa,aAAa;IAEf,SAAS,EAAE,eAAe;IACjC,OAAO,CAAC,qBAAqB;IAF/B,YACS,SAAS,EAAE,eAAe,EACzB,qBAAqB,GAAE,SAAS,SAAS,EAAO,EACtD;IAEE,oBAAoB,CACxB,QAAQ,EAAE,SAAS,EAAE,EACrB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,MAAM,CAAC,CAyFjB;IAEK,WAAW,CACf,IAAI,EAAE,SAAS,EAAE,EACjB,gBAAgB,UAAQ,GACvB,OAAO,CAAC,QAAQ,CAAC,CAkBnB;IAEK,sBAAsB,CAC1B,IAAI,EAAE,SAAS,EAAE,EACjB,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC,mBAAmB,CAAC,CAiB9B;IAEK,oBAAoB,CACxB,IAAI,EAAE,SAAS,EAAE,EACjB,MAAM,EAAE,SAAS,GAAG,IAAI,GACvB,OAAO,CAAC,WAAW,CAAC,CAiBtB;CACF"}
@@ -11,7 +11,9 @@ export class Labels extends HydrationMap {
11
11
  continue;
12
12
  const mine = this.get(key);
13
13
  if (mine) {
14
+ mine.isImpersonation = mine.isImpersonation || theirs.isImpersonation;
14
15
  mine.isTakendown = mine.isTakendown || theirs.isTakendown;
16
+ mine.needsReview = mine.needsReview || theirs.needsReview;
15
17
  mine.labels = mine.labels.merge(theirs.labels);
16
18
  }
17
19
  else {
@@ -33,17 +35,21 @@ export class Labels extends HydrationMap {
33
35
  }
34
36
  }
35
37
  export class LabelHydrator {
36
- constructor(dataplane) {
38
+ constructor(dataplane, needsReviewTagSources = []) {
37
39
  this.dataplane = dataplane;
40
+ this.needsReviewTagSources = needsReviewTagSources;
38
41
  }
39
42
  async getLabelsForSubjects(subjects, labelers) {
40
43
  const map = new Labels();
41
44
  if (!subjects.length || !labelers.dids.length)
42
45
  return map;
43
- const res = await this.dataplane.getLabels({
44
- subjects,
45
- issuers: labelers.dids,
46
- });
46
+ const sources = this.needsReviewTagSources.filter((source) => labelers.dids.includes(source) && labelers.redact.has(source));
47
+ const [res, tagRes] = await Promise.all([
48
+ this.dataplane.getLabels({ subjects, issuers: labelers.dids }),
49
+ sources.length
50
+ ? this.dataplane.getTagsForSubjects({ subjects, sources })
51
+ : undefined,
52
+ ]);
47
53
  for (const cur of res.labels) {
48
54
  const parsed = parseJsonBytes(com.atproto.label.defs.label, cur);
49
55
  if (!parsed || parsed.neg)
@@ -80,6 +86,33 @@ export class LabelHydrator {
80
86
  entry.isImpersonation = true;
81
87
  }
82
88
  }
89
+ if (tagRes) {
90
+ const requestedSubjects = new Set(subjects);
91
+ const now = Date.now();
92
+ for (const tag of tagRes.tags) {
93
+ if (tag.value !== NEEDS_REVIEW_LABEL ||
94
+ tag.removed ||
95
+ !tag.event ||
96
+ !sources.includes(tag.event.source) ||
97
+ !requestedSubjects.has(tag.subject) ||
98
+ (tag.expiresAt && tag.expiresAt.toDate().getTime() <= now)) {
99
+ continue;
100
+ }
101
+ const subject = tag.subject;
102
+ const entry = map.get(subject);
103
+ if (entry) {
104
+ entry.needsReview = true;
105
+ }
106
+ else {
107
+ map.set(subject, {
108
+ isImpersonation: false,
109
+ isTakendown: false,
110
+ needsReview: true,
111
+ labels: new HydrationMap(),
112
+ });
113
+ }
114
+ }
115
+ }
83
116
  return map;
84
117
  }
85
118
  async getLabelers(dids, includeTakedowns = false) {
@@ -1 +1 @@
1
- {"version":3,"file":"label.js","sourceRoot":"","sources":["../../src/hydration/label.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type AtUriString,\n type DidString,\n type UriString,\n atUri,\n} from '@atproto/lex'\nimport type { DataPlaneClient } from '../data-plane/client/index.js'\nimport { app, com } from '../lexicons/index.js'\nimport type { ParsedLabelers } from '../util.js'\nimport type { Label, LabelerRecord } from '../views/types.js'\nimport {\n HydrationMap,\n type Merges,\n type RecordInfo,\n parseJsonBytes,\n parseRecord,\n parseString,\n} from './util.js'\n\nexport type { Label }\n\nexport type SubjectLabels = {\n isImpersonation: boolean\n isTakendown: boolean\n needsReview: boolean\n labels: HydrationMap<`${string}::${string}`, Label> // src + val -> label\n}\n\nexport class Labels\n extends HydrationMap<UriString, SubjectLabels>\n implements Merges\n{\n static key(label: Label): `${string}::${string}` {\n return `${label.src}::${label.val}`\n }\n merge(map: Labels): this {\n for (const [key, theirs] of map) {\n if (!theirs) continue\n const mine = this.get(key)\n if (mine) {\n mine.isTakendown = mine.isTakendown || theirs.isTakendown\n mine.labels = mine.labels.merge(theirs.labels)\n } else {\n this.set(key, theirs)\n }\n }\n return this\n }\n getBySubject(sub: UriString): Label[] {\n const it = this.get(sub)?.labels.values()\n if (!it) return []\n const labels: Label[] = []\n for (const label of it) {\n if (label) labels.push(label)\n }\n return labels\n }\n}\n\nexport type LabelerAgg = {\n likes: number\n}\n\nexport type LabelerAggs = HydrationMap<DidString, LabelerAgg>\n\nexport type Labeler = RecordInfo<LabelerRecord>\nexport type Labelers = HydrationMap<DidString, Labeler>\n\nexport type LabelerViewerState = {\n like?: AtUriString\n}\n\nexport type LabelerViewerStates = HydrationMap<DidString, LabelerViewerState>\n\nexport class LabelHydrator {\n constructor(public dataplane: DataPlaneClient) {}\n\n async getLabelsForSubjects(\n subjects: UriString[],\n labelers: ParsedLabelers,\n ): Promise<Labels> {\n const map = new Labels()\n\n if (!subjects.length || !labelers.dids.length) return map\n\n const res = await this.dataplane.getLabels({\n subjects,\n issuers: labelers.dids,\n })\n\n for (const cur of res.labels) {\n const parsed = parseJsonBytes(com.atproto.label.defs.label, cur)\n if (!parsed || parsed.neg) continue\n const { sig: _, ...label } = parsed\n let entry = map.get(label.uri)\n if (!entry) {\n entry = {\n isImpersonation: false,\n isTakendown: false,\n needsReview: false,\n labels: new HydrationMap(),\n }\n map.set(label.uri, entry)\n }\n\n const isActionableNeedsReview =\n label.val === NEEDS_REVIEW_LABEL &&\n !label.neg &&\n labelers.redact.has(label.src)\n\n // we action needs review labels on backend for now so don't send to client until client has proper logic for them\n if (!isActionableNeedsReview) {\n entry.labels.set(Labels.key(label), label)\n }\n\n if (\n TAKEDOWN_LABELS.includes(label.val) &&\n !label.neg &&\n labelers.redact.has(label.src)\n ) {\n entry.isTakendown = true\n }\n if (isActionableNeedsReview) {\n entry.needsReview = true\n }\n if (\n label.val === IMPERSONATION_LABEL &&\n !label.neg &&\n labelers.redact.has(label.src)\n ) {\n entry.isImpersonation = true\n }\n }\n\n return map\n }\n\n async getLabelers(\n dids: DidString[],\n includeTakedowns = false,\n ): Promise<Labelers> {\n const map: Labelers = new HydrationMap()\n if (!dids.length) return map\n\n const res = await this.dataplane.getLabelerRecords({\n uris: dids.map(labelerDidToUri),\n })\n for (let i = 0; i < dids.length; i++) {\n const did = dids[i]\n const record = parseRecord(\n app.bsky.labeler.service.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(did, record ?? null)\n }\n\n return map\n }\n\n async getLabelerViewerStates(\n dids: DidString[],\n viewer: DidString,\n ): Promise<LabelerViewerStates> {\n const map: LabelerViewerStates = new HydrationMap()\n if (!dids.length) return map\n\n const likes = await this.dataplane.getLikesByActorAndSubjects({\n actorDid: viewer,\n refs: dids.map((did) => ({ uri: labelerDidToUri(did) })),\n })\n\n for (let i = 0; i < dids.length; i++) {\n const did = dids[i]\n map.set(did, {\n like: parseString(likes.uris[i]),\n })\n }\n\n return map\n }\n\n async getLabelerAggregates(\n dids: DidString[],\n viewer: DidString | null,\n ): Promise<LabelerAggs> {\n const map: LabelerAggs = new HydrationMap()\n if (!dids.length) return map\n\n const refs = dids.map((did) => ({ uri: labelerDidToUri(did) }))\n const counts = await this.dataplane.getInteractionCounts({\n refs,\n skipCacheForDids: viewer ? [viewer] : undefined,\n })\n for (let i = 0; i < dids.length; i++) {\n const did = dids[i]\n map.set(did, {\n likes: counts.likes[i] ?? 0,\n })\n }\n\n return map\n }\n}\n\nfunction labelerDidToUri<T extends DidString>(did: T) {\n return atUri(did, app.bsky.labeler.service)\n}\n\nconst IMPERSONATION_LABEL = 'impersonation'\nconst TAKEDOWN_LABELS = ['!takedown', '!suspend']\nconst NEEDS_REVIEW_LABEL = 'needs-review'\n"]}
1
+ {"version":3,"file":"label.js","sourceRoot":"","sources":["../../src/hydration/label.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type AtUriString,\n type DidString,\n type UriString,\n atUri,\n} from '@atproto/lex'\nimport type { DataPlaneClient } from '../data-plane/client/index.js'\nimport { app, com } from '../lexicons/index.js'\nimport type { ParsedLabelers } from '../util.js'\nimport type { Label, LabelerRecord } from '../views/types.js'\nimport {\n HydrationMap,\n type Merges,\n type RecordInfo,\n parseJsonBytes,\n parseRecord,\n parseString,\n} from './util.js'\n\nexport type { Label }\n\nexport type SubjectLabels = {\n isImpersonation: boolean\n isTakendown: boolean\n needsReview: boolean\n labels: HydrationMap<`${string}::${string}`, Label> // src + val -> label\n}\n\nexport class Labels\n extends HydrationMap<UriString, SubjectLabels>\n implements Merges\n{\n static key(label: Label): `${string}::${string}` {\n return `${label.src}::${label.val}`\n }\n merge(map: Labels): this {\n for (const [key, theirs] of map) {\n if (!theirs) continue\n const mine = this.get(key)\n if (mine) {\n mine.isImpersonation = mine.isImpersonation || theirs.isImpersonation\n mine.isTakendown = mine.isTakendown || theirs.isTakendown\n mine.needsReview = mine.needsReview || theirs.needsReview\n mine.labels = mine.labels.merge(theirs.labels)\n } else {\n this.set(key, theirs)\n }\n }\n return this\n }\n getBySubject(sub: UriString): Label[] {\n const it = this.get(sub)?.labels.values()\n if (!it) return []\n const labels: Label[] = []\n for (const label of it) {\n if (label) labels.push(label)\n }\n return labels\n }\n}\n\nexport type LabelerAgg = {\n likes: number\n}\n\nexport type LabelerAggs = HydrationMap<DidString, LabelerAgg>\n\nexport type Labeler = RecordInfo<LabelerRecord>\nexport type Labelers = HydrationMap<DidString, Labeler>\n\nexport type LabelerViewerState = {\n like?: AtUriString\n}\n\nexport type LabelerViewerStates = HydrationMap<DidString, LabelerViewerState>\n\nexport class LabelHydrator {\n constructor(\n public dataplane: DataPlaneClient,\n private needsReviewTagSources: readonly DidString[] = [],\n ) {}\n\n async getLabelsForSubjects(\n subjects: UriString[],\n labelers: ParsedLabelers,\n ): Promise<Labels> {\n const map = new Labels()\n\n if (!subjects.length || !labelers.dids.length) return map\n\n const sources = this.needsReviewTagSources.filter(\n (source) => labelers.dids.includes(source) && labelers.redact.has(source),\n )\n const [res, tagRes] = await Promise.all([\n this.dataplane.getLabels({ subjects, issuers: labelers.dids }),\n sources.length\n ? this.dataplane.getTagsForSubjects({ subjects, sources })\n : undefined,\n ])\n\n for (const cur of res.labels) {\n const parsed = parseJsonBytes(com.atproto.label.defs.label, cur)\n if (!parsed || parsed.neg) continue\n const { sig: _, ...label } = parsed\n let entry = map.get(label.uri)\n if (!entry) {\n entry = {\n isImpersonation: false,\n isTakendown: false,\n needsReview: false,\n labels: new HydrationMap(),\n }\n map.set(label.uri, entry)\n }\n\n const isActionableNeedsReview =\n label.val === NEEDS_REVIEW_LABEL &&\n !label.neg &&\n labelers.redact.has(label.src)\n\n // we action needs review labels on backend for now so don't send to client until client has proper logic for them\n if (!isActionableNeedsReview) {\n entry.labels.set(Labels.key(label), label)\n }\n\n if (\n TAKEDOWN_LABELS.includes(label.val) &&\n !label.neg &&\n labelers.redact.has(label.src)\n ) {\n entry.isTakendown = true\n }\n if (isActionableNeedsReview) {\n entry.needsReview = true\n }\n if (\n label.val === IMPERSONATION_LABEL &&\n !label.neg &&\n labelers.redact.has(label.src)\n ) {\n entry.isImpersonation = true\n }\n }\n\n if (tagRes) {\n const requestedSubjects = new Set<string>(subjects)\n const now = Date.now()\n for (const tag of tagRes.tags) {\n if (\n tag.value !== NEEDS_REVIEW_LABEL ||\n tag.removed ||\n !tag.event ||\n !sources.includes(tag.event.source as DidString) ||\n !requestedSubjects.has(tag.subject) ||\n (tag.expiresAt && tag.expiresAt.toDate().getTime() <= now)\n ) {\n continue\n }\n const subject = tag.subject as UriString\n const entry = map.get(subject)\n if (entry) {\n entry.needsReview = true\n } else {\n map.set(subject, {\n isImpersonation: false,\n isTakendown: false,\n needsReview: true,\n labels: new HydrationMap(),\n })\n }\n }\n }\n\n return map\n }\n\n async getLabelers(\n dids: DidString[],\n includeTakedowns = false,\n ): Promise<Labelers> {\n const map: Labelers = new HydrationMap()\n if (!dids.length) return map\n\n const res = await this.dataplane.getLabelerRecords({\n uris: dids.map(labelerDidToUri),\n })\n for (let i = 0; i < dids.length; i++) {\n const did = dids[i]\n const record = parseRecord(\n app.bsky.labeler.service.main,\n res.records[i],\n includeTakedowns,\n )\n map.set(did, record ?? null)\n }\n\n return map\n }\n\n async getLabelerViewerStates(\n dids: DidString[],\n viewer: DidString,\n ): Promise<LabelerViewerStates> {\n const map: LabelerViewerStates = new HydrationMap()\n if (!dids.length) return map\n\n const likes = await this.dataplane.getLikesByActorAndSubjects({\n actorDid: viewer,\n refs: dids.map((did) => ({ uri: labelerDidToUri(did) })),\n })\n\n for (let i = 0; i < dids.length; i++) {\n const did = dids[i]\n map.set(did, {\n like: parseString(likes.uris[i]),\n })\n }\n\n return map\n }\n\n async getLabelerAggregates(\n dids: DidString[],\n viewer: DidString | null,\n ): Promise<LabelerAggs> {\n const map: LabelerAggs = new HydrationMap()\n if (!dids.length) return map\n\n const refs = dids.map((did) => ({ uri: labelerDidToUri(did) }))\n const counts = await this.dataplane.getInteractionCounts({\n refs,\n skipCacheForDids: viewer ? [viewer] : undefined,\n })\n for (let i = 0; i < dids.length; i++) {\n const did = dids[i]\n map.set(did, {\n likes: counts.likes[i] ?? 0,\n })\n }\n\n return map\n }\n}\n\nfunction labelerDidToUri<T extends DidString>(did: T) {\n return atUri(did, app.bsky.labeler.service)\n}\n\nconst IMPERSONATION_LABEL = 'impersonation'\nconst TAKEDOWN_LABELS = ['!takedown', '!suspend']\nconst NEEDS_REVIEW_LABEL = 'needs-review'\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAKjC,OAAO,OAAO,MAAM,SAAS,CAAA;AAG7B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAc9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAsBzC,OAAO,EACL,KAAK,WAAW,EAGjB,MAAM,aAAa,CAAA;AAIpB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAElC,qBAAa,WAAW;IACf,GAAG,EAAE,UAAU,CAAA;IACf,GAAG,EAAE,OAAO,CAAC,WAAW,CAAA;IACxB,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAA;IAC3B,OAAO,CAAC,UAAU,CAAC,CAAgB;IACnC,OAAO,CAAC,WAAW,CAAe;IAElC,YAAY,IAAI,EAAE;QAChB,GAAG,EAAE,UAAU,CAAA;QACf,GAAG,EAAE,OAAO,CAAC,WAAW,CAAA;QACxB,WAAW,CAAC,EAAE,WAAW,EAAE,CAAA;KAC5B,EAIA;IAED,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;QAClB,MAAM,EAAE,YAAY,CAAA;QACpB,UAAU,EAAE,OAAO,CAAA;KACpB,GAAG,WAAW,CAgPd;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAalC;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAc7B;IAEK,CAAC,MAAM,CAAC,YAAY,CAAC,kBAE1B;CACF;eAEc,WAAW"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAKjC,OAAO,OAAO,MAAM,SAAS,CAAA;AAG7B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAc9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAsBzC,OAAO,EACL,KAAK,WAAW,EAGjB,MAAM,aAAa,CAAA;AAIpB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,cAAc,uBAAuB,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAElC,qBAAa,WAAW;IACf,GAAG,EAAE,UAAU,CAAA;IACf,GAAG,EAAE,OAAO,CAAC,WAAW,CAAA;IACxB,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAA;IAC3B,OAAO,CAAC,UAAU,CAAC,CAAgB;IACnC,OAAO,CAAC,WAAW,CAAe;IAElC,YAAY,IAAI,EAAE;QAChB,GAAG,EAAE,UAAU,CAAA;QACf,GAAG,EAAE,OAAO,CAAC,WAAW,CAAA;QACxB,WAAW,CAAC,EAAE,WAAW,EAAE,CAAA;KAC5B,EAIA;IAED,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;QAClB,MAAM,EAAE,YAAY,CAAA;QACpB,UAAU,EAAE,OAAO,CAAA;KACpB,GAAG,WAAW,CAiPd;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAalC;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAc7B;IAEK,CAAC,MAAM,CAAC,YAAY,CAAC,kBAE1B;CACF;eAEc,WAAW"}
package/dist/index.js CHANGED
@@ -135,6 +135,7 @@ export class BskyAppView {
135
135
  const hydrator = new Hydrator(dataplane, config.labelsFromIssuerDids, {
136
136
  debugFieldAllowedDids: config.debugFieldAllowedDids,
137
137
  featureGatesClient,
138
+ needsReviewTagSources: [config.modServiceDid],
138
139
  });
139
140
  const views = new Views({
140
141
  imgUriBuilder: imgUriBuilder,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import events from 'node:events'\nimport type http from 'node:http'\nimport type { AddressInfo } from 'node:net'\nimport compression from 'compression'\nimport cors from 'cors'\nimport { Etcd3 } from 'etcd3'\nimport express from 'express'\nimport { type HttpTerminator, createHttpTerminator } from 'http-terminator'\nimport { DAY, SECOND } from '@atproto/common'\nimport type { Keypair } from '@atproto/crypto'\nimport { IdResolver } from '@atproto/identity'\nimport { Client } from '@atproto/lex'\nimport { createServer } from '@atproto/xrpc-server'\nimport { createBlobDispatcher } from './api/blob-dispatcher.js'\nimport API, {\n blobResolver,\n external,\n health,\n sitemap,\n wellKnown,\n} from './api/index.js'\nimport { AuthVerifier, createPublicKeyObject } from './auth-verifier.js'\nimport { authWithApiKey as bsyncAuth, createBsyncClient } from './bsync.js'\nimport type { ServerConfig } from './config.js'\nimport { AppContext } from './context.js'\nimport {\n authWithApiKey as courierAuth,\n createCourierClient,\n} from './courier.js'\nimport {\n BasicHostList,\n EtcdHostList,\n createDataPlaneClient,\n} from './data-plane/client/index.js'\nimport * as error from './error.js'\nimport { FeatureGatesClient } from './feature-gates/index.js'\nimport { Hydrator } from './hydration/hydrator.js'\nimport * as imageServer from './image/server.js'\nimport { ImageUriBuilder } from './image/uri.js'\nimport { createKwsClient } from './kws.js'\nimport { loggerMiddleware } from './logger.js'\nimport {\n authWithApiKey as rolodexAuth,\n createRolodexClient,\n} from './rolodex.js'\nimport { createStashClient } from './stash.js'\nimport {\n type UndiciAgent,\n createUndiciAgent,\n dispatcherFetch,\n} from './undici.js'\nimport { Views } from './views/index.js'\nimport { VideoUriBuilder } from './views/util.js'\n\nexport { ServerConfig } from './config.js'\nexport type { ServerConfigValues } from './config.js'\nexport { AppContext } from './context.js'\nexport * from './data-plane/index.js'\nexport { BackgroundQueue } from './data-plane/server/background.js'\nexport { Database } from './data-plane/server/db/index.js'\nexport { Redis } from './redis.js'\n\nexport class BskyAppView {\n public ctx: AppContext\n public app: express.Application\n public server?: http.Server\n private terminator?: HttpTerminator\n private dispatchers: UndiciAgent[]\n\n constructor(opts: {\n ctx: AppContext\n app: express.Application\n dispatchers?: UndiciAgent[]\n }) {\n this.ctx = opts.ctx\n this.app = opts.app\n this.dispatchers = opts.dispatchers ?? []\n }\n\n static create(opts: {\n config: ServerConfig\n signingKey: Keypair\n }): BskyAppView {\n const { config, signingKey } = opts\n const app = express()\n app.set('trust proxy', true)\n app.use(cors({ maxAge: DAY / SECOND }))\n app.use(loggerMiddleware)\n app.use(compression())\n\n // used solely for handle resolution: identity lookups occur on dataplane\n const idResolver = new IdResolver({\n plcUrl: config.didPlcUrl,\n backupNameservers: config.handleResolveNameservers,\n fetch: config.disableSsrfProtection ? globalThis.fetch : undefined,\n })\n\n const imgUriBuilderUrl =\n config.cdnUrl ||\n (config.publicUrl ? `${config.publicUrl}/img` : undefined)\n if (!imgUriBuilderUrl) {\n throw new Error('No image URI builder URL could be determined')\n }\n const imgUriBuilder = new ImageUriBuilder(imgUriBuilderUrl)\n const videoUriBuilder = new VideoUriBuilder({\n playlistUrlPattern:\n config.videoPlaylistUrlPattern ||\n `${config.publicUrl}/vid/%s/%s/playlist.m3u8`,\n thumbnailUrlPattern:\n config.videoThumbnailUrlPattern ||\n `${config.publicUrl}/vid/%s/%s/thumbnail.jpg`,\n })\n\n const searchClient = config.searchUrl\n ? new Client(\n {\n service: config.searchUrl,\n },\n {\n // Trust internal services to send us well-formed responses\n strictResponseProcessing: false,\n validateResponse: config.debugMode,\n },\n )\n : undefined\n\n const suggestionsClient = config.suggestionsUrl\n ? new Client(\n {\n service: config.suggestionsUrl,\n headers: config.suggestionsApiKey\n ? { authorization: `Bearer ${config.suggestionsApiKey}` }\n : undefined,\n },\n {\n // Trust internal services to send us well-formed responses\n strictResponseProcessing: false,\n validateResponse: config.debugMode,\n },\n )\n : undefined\n\n // @NOTE These bound the connection phase (TCP + TLS) only; once connected,\n // the request is not bounded here. They are kept for the lifetime of the\n // service (pooling connections), and closed on `destroy()`.\n // An unused agent holds no socket, so they can be built unconditionally.\n const topicsDispatcher = createUndiciAgent({ connectTimeout: SECOND })\n const irisDispatcher = createUndiciAgent({ connectTimeout: SECOND })\n\n const topicsClient = config.topicsUrl\n ? new Client(\n {\n service: config.topicsUrl,\n headers: config.topicsApiKey\n ? { authorization: `Bearer ${config.topicsApiKey}` }\n : undefined,\n fetch: dispatcherFetch(topicsDispatcher),\n },\n {\n // Trust internal services to send us well-formed responses\n strictResponseProcessing: false,\n validateResponse: config.debugMode,\n },\n )\n : undefined\n\n const irisClient = config.irisUrl\n ? new Client(\n {\n service: config.irisUrl,\n headers: config.irisApiKey\n ? { authorization: `Bearer ${config.irisApiKey}` }\n : undefined,\n fetch: dispatcherFetch(irisDispatcher),\n },\n {\n // Trust internal services to send us well-formed responses\n strictResponseProcessing: false,\n validateResponse: config.debugMode,\n },\n )\n : undefined\n\n const etcd = config.etcdHosts.length\n ? new Etcd3({ hosts: config.etcdHosts })\n : undefined\n\n const dataplaneHostList =\n etcd && config.dataplaneUrlsEtcdKeyPrefix\n ? new EtcdHostList(\n etcd,\n config.dataplaneUrlsEtcdKeyPrefix,\n config.dataplaneUrls,\n )\n : new BasicHostList(config.dataplaneUrls)\n\n const featureGatesClient = new FeatureGatesClient({\n growthBookApiHost: config.growthBookApiHost,\n growthBookClientKey: config.growthBookClientKey,\n eventProxyTrackingEndpoint: config.eventProxyTrackingEndpoint,\n })\n\n const dataplane = createDataPlaneClient(dataplaneHostList, {\n httpVersion: config.dataplaneHttpVersion,\n rejectUnauthorized: !config.dataplaneIgnoreBadTls,\n })\n const hydrator = new Hydrator(dataplane, config.labelsFromIssuerDids, {\n debugFieldAllowedDids: config.debugFieldAllowedDids,\n featureGatesClient,\n })\n const views = new Views({\n imgUriBuilder: imgUriBuilder,\n videoUriBuilder: videoUriBuilder,\n indexedAtEpoch: config.indexedAtEpoch,\n threadTagsBumpDown: [...config.threadTagsBumpDown],\n threadTagsHide: [...config.threadTagsHide],\n visibilityTagHide: config.visibilityTagHide,\n visibilityTagRankPrefix: config.visibilityTagRankPrefix,\n })\n\n const bsyncClient = createBsyncClient({\n baseUrl: config.bsyncUrl,\n httpVersion: config.bsyncHttpVersion ?? '2',\n nodeOptions: { rejectUnauthorized: !config.bsyncIgnoreBadTls },\n interceptors: config.bsyncApiKey ? [bsyncAuth(config.bsyncApiKey)] : [],\n })\n\n const stashClient = createStashClient(bsyncClient)\n\n const courierClient = config.courierUrl\n ? createCourierClient({\n baseUrl: config.courierUrl,\n httpVersion: config.courierHttpVersion ?? '2',\n nodeOptions: { rejectUnauthorized: !config.courierIgnoreBadTls },\n interceptors: config.courierApiKey\n ? [courierAuth(config.courierApiKey)]\n : [],\n })\n : undefined\n\n const rolodexClient = config.rolodexUrl\n ? createRolodexClient({\n baseUrl: config.rolodexUrl,\n httpVersion: config.rolodexHttpVersion ?? '2',\n nodeOptions: { rejectUnauthorized: !config.rolodexIgnoreBadTls },\n interceptors: config.rolodexApiKey\n ? [rolodexAuth(config.rolodexApiKey)]\n : [],\n })\n : undefined\n\n const kwsClient = config.kws ? createKwsClient(config.kws) : undefined\n\n const entrywayJwtPublicKey = config.entrywayJwtPublicKeyHex\n ? createPublicKeyObject(config.entrywayJwtPublicKeyHex)\n : undefined\n const bffJwtSecret = config.bffJwtSecret\n ? Buffer.from(config.bffJwtSecret, 'utf8')\n : undefined\n const authVerifier = new AuthVerifier(dataplane, {\n ownDid: config.serverDid,\n alternateAudienceDids: config.alternateAudienceDids,\n modServiceDid: config.modServiceDid,\n adminPasses: config.adminPasswords,\n entrywayJwtPublicKey,\n bffJwtSecret,\n })\n\n const blobDispatcher = createBlobDispatcher(config)\n\n const ctx = new AppContext({\n cfg: config,\n etcd,\n dataplane,\n dataplaneHostList,\n searchClient,\n suggestionsClient,\n topicsClient,\n irisClient,\n hydrator,\n views,\n signingKey,\n idResolver,\n bsyncClient,\n stashClient,\n courierClient,\n rolodexClient,\n authVerifier,\n featureGatesClient,\n blobDispatcher,\n kwsClient,\n })\n\n const server = createServer([], {\n validateResponse: config.debugMode,\n payload: {\n jsonLimit: 100 * 1024, // 100kb\n textLimit: 100 * 1024, // 100kb\n blobLimit: 5 * 1024 * 1024, // 5mb\n },\n })\n\n API(server, ctx)\n\n app.use(health.createRouter(ctx))\n app.use(wellKnown.createRouter(ctx))\n app.use(blobResolver.createMiddleware(ctx))\n app.use(imageServer.createMiddleware(ctx, { prefix: '/img/' }))\n\n if (config.dataplaneUrls.length > 0 || config.dataplaneUrlsEtcdKeyPrefix) {\n app.use(sitemap.createRouter(ctx))\n }\n\n app.use(server.router)\n app.use(error.handler)\n app.use('/external', external.createRouter(ctx))\n\n return new BskyAppView({\n ctx,\n app,\n dispatchers: [topicsDispatcher, irisDispatcher],\n })\n }\n\n async start(): Promise<http.Server> {\n if (this.ctx.dataplaneHostList instanceof EtcdHostList) {\n await this.ctx.dataplaneHostList.connect()\n }\n this.ctx.featureGatesClient.start() // lazy, no await\n const server = this.app.listen(this.ctx.cfg.port)\n this.server = server\n server.keepAliveTimeout = 90000\n this.terminator = createHttpTerminator({ server })\n await events.once(server, 'listening')\n const { port } = server.address() as AddressInfo\n this.ctx.cfg.assignPort(port)\n return server\n }\n\n async destroy(): Promise<void> {\n try {\n await this.ctx.featureGatesClient.destroy()\n } finally {\n try {\n await this.terminator?.terminate()\n } finally {\n try {\n await this.ctx.etcd?.close()\n } finally {\n await Promise.all(this.dispatchers.map((d) => d.close()))\n }\n }\n }\n }\n\n async [Symbol.asyncDispose]() {\n await this.destroy()\n }\n}\n\nexport default BskyAppView\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import events from 'node:events'\nimport type http from 'node:http'\nimport type { AddressInfo } from 'node:net'\nimport compression from 'compression'\nimport cors from 'cors'\nimport { Etcd3 } from 'etcd3'\nimport express from 'express'\nimport { type HttpTerminator, createHttpTerminator } from 'http-terminator'\nimport { DAY, SECOND } from '@atproto/common'\nimport type { Keypair } from '@atproto/crypto'\nimport { IdResolver } from '@atproto/identity'\nimport { Client } from '@atproto/lex'\nimport { createServer } from '@atproto/xrpc-server'\nimport { createBlobDispatcher } from './api/blob-dispatcher.js'\nimport API, {\n blobResolver,\n external,\n health,\n sitemap,\n wellKnown,\n} from './api/index.js'\nimport { AuthVerifier, createPublicKeyObject } from './auth-verifier.js'\nimport { authWithApiKey as bsyncAuth, createBsyncClient } from './bsync.js'\nimport type { ServerConfig } from './config.js'\nimport { AppContext } from './context.js'\nimport {\n authWithApiKey as courierAuth,\n createCourierClient,\n} from './courier.js'\nimport {\n BasicHostList,\n EtcdHostList,\n createDataPlaneClient,\n} from './data-plane/client/index.js'\nimport * as error from './error.js'\nimport { FeatureGatesClient } from './feature-gates/index.js'\nimport { Hydrator } from './hydration/hydrator.js'\nimport * as imageServer from './image/server.js'\nimport { ImageUriBuilder } from './image/uri.js'\nimport { createKwsClient } from './kws.js'\nimport { loggerMiddleware } from './logger.js'\nimport {\n authWithApiKey as rolodexAuth,\n createRolodexClient,\n} from './rolodex.js'\nimport { createStashClient } from './stash.js'\nimport {\n type UndiciAgent,\n createUndiciAgent,\n dispatcherFetch,\n} from './undici.js'\nimport { Views } from './views/index.js'\nimport { VideoUriBuilder } from './views/util.js'\n\nexport { ServerConfig } from './config.js'\nexport type { ServerConfigValues } from './config.js'\nexport { AppContext } from './context.js'\nexport * from './data-plane/index.js'\nexport { BackgroundQueue } from './data-plane/server/background.js'\nexport { Database } from './data-plane/server/db/index.js'\nexport { Redis } from './redis.js'\n\nexport class BskyAppView {\n public ctx: AppContext\n public app: express.Application\n public server?: http.Server\n private terminator?: HttpTerminator\n private dispatchers: UndiciAgent[]\n\n constructor(opts: {\n ctx: AppContext\n app: express.Application\n dispatchers?: UndiciAgent[]\n }) {\n this.ctx = opts.ctx\n this.app = opts.app\n this.dispatchers = opts.dispatchers ?? []\n }\n\n static create(opts: {\n config: ServerConfig\n signingKey: Keypair\n }): BskyAppView {\n const { config, signingKey } = opts\n const app = express()\n app.set('trust proxy', true)\n app.use(cors({ maxAge: DAY / SECOND }))\n app.use(loggerMiddleware)\n app.use(compression())\n\n // used solely for handle resolution: identity lookups occur on dataplane\n const idResolver = new IdResolver({\n plcUrl: config.didPlcUrl,\n backupNameservers: config.handleResolveNameservers,\n fetch: config.disableSsrfProtection ? globalThis.fetch : undefined,\n })\n\n const imgUriBuilderUrl =\n config.cdnUrl ||\n (config.publicUrl ? `${config.publicUrl}/img` : undefined)\n if (!imgUriBuilderUrl) {\n throw new Error('No image URI builder URL could be determined')\n }\n const imgUriBuilder = new ImageUriBuilder(imgUriBuilderUrl)\n const videoUriBuilder = new VideoUriBuilder({\n playlistUrlPattern:\n config.videoPlaylistUrlPattern ||\n `${config.publicUrl}/vid/%s/%s/playlist.m3u8`,\n thumbnailUrlPattern:\n config.videoThumbnailUrlPattern ||\n `${config.publicUrl}/vid/%s/%s/thumbnail.jpg`,\n })\n\n const searchClient = config.searchUrl\n ? new Client(\n {\n service: config.searchUrl,\n },\n {\n // Trust internal services to send us well-formed responses\n strictResponseProcessing: false,\n validateResponse: config.debugMode,\n },\n )\n : undefined\n\n const suggestionsClient = config.suggestionsUrl\n ? new Client(\n {\n service: config.suggestionsUrl,\n headers: config.suggestionsApiKey\n ? { authorization: `Bearer ${config.suggestionsApiKey}` }\n : undefined,\n },\n {\n // Trust internal services to send us well-formed responses\n strictResponseProcessing: false,\n validateResponse: config.debugMode,\n },\n )\n : undefined\n\n // @NOTE These bound the connection phase (TCP + TLS) only; once connected,\n // the request is not bounded here. They are kept for the lifetime of the\n // service (pooling connections), and closed on `destroy()`.\n // An unused agent holds no socket, so they can be built unconditionally.\n const topicsDispatcher = createUndiciAgent({ connectTimeout: SECOND })\n const irisDispatcher = createUndiciAgent({ connectTimeout: SECOND })\n\n const topicsClient = config.topicsUrl\n ? new Client(\n {\n service: config.topicsUrl,\n headers: config.topicsApiKey\n ? { authorization: `Bearer ${config.topicsApiKey}` }\n : undefined,\n fetch: dispatcherFetch(topicsDispatcher),\n },\n {\n // Trust internal services to send us well-formed responses\n strictResponseProcessing: false,\n validateResponse: config.debugMode,\n },\n )\n : undefined\n\n const irisClient = config.irisUrl\n ? new Client(\n {\n service: config.irisUrl,\n headers: config.irisApiKey\n ? { authorization: `Bearer ${config.irisApiKey}` }\n : undefined,\n fetch: dispatcherFetch(irisDispatcher),\n },\n {\n // Trust internal services to send us well-formed responses\n strictResponseProcessing: false,\n validateResponse: config.debugMode,\n },\n )\n : undefined\n\n const etcd = config.etcdHosts.length\n ? new Etcd3({ hosts: config.etcdHosts })\n : undefined\n\n const dataplaneHostList =\n etcd && config.dataplaneUrlsEtcdKeyPrefix\n ? new EtcdHostList(\n etcd,\n config.dataplaneUrlsEtcdKeyPrefix,\n config.dataplaneUrls,\n )\n : new BasicHostList(config.dataplaneUrls)\n\n const featureGatesClient = new FeatureGatesClient({\n growthBookApiHost: config.growthBookApiHost,\n growthBookClientKey: config.growthBookClientKey,\n eventProxyTrackingEndpoint: config.eventProxyTrackingEndpoint,\n })\n\n const dataplane = createDataPlaneClient(dataplaneHostList, {\n httpVersion: config.dataplaneHttpVersion,\n rejectUnauthorized: !config.dataplaneIgnoreBadTls,\n })\n const hydrator = new Hydrator(dataplane, config.labelsFromIssuerDids, {\n debugFieldAllowedDids: config.debugFieldAllowedDids,\n featureGatesClient,\n needsReviewTagSources: [config.modServiceDid],\n })\n const views = new Views({\n imgUriBuilder: imgUriBuilder,\n videoUriBuilder: videoUriBuilder,\n indexedAtEpoch: config.indexedAtEpoch,\n threadTagsBumpDown: [...config.threadTagsBumpDown],\n threadTagsHide: [...config.threadTagsHide],\n visibilityTagHide: config.visibilityTagHide,\n visibilityTagRankPrefix: config.visibilityTagRankPrefix,\n })\n\n const bsyncClient = createBsyncClient({\n baseUrl: config.bsyncUrl,\n httpVersion: config.bsyncHttpVersion ?? '2',\n nodeOptions: { rejectUnauthorized: !config.bsyncIgnoreBadTls },\n interceptors: config.bsyncApiKey ? [bsyncAuth(config.bsyncApiKey)] : [],\n })\n\n const stashClient = createStashClient(bsyncClient)\n\n const courierClient = config.courierUrl\n ? createCourierClient({\n baseUrl: config.courierUrl,\n httpVersion: config.courierHttpVersion ?? '2',\n nodeOptions: { rejectUnauthorized: !config.courierIgnoreBadTls },\n interceptors: config.courierApiKey\n ? [courierAuth(config.courierApiKey)]\n : [],\n })\n : undefined\n\n const rolodexClient = config.rolodexUrl\n ? createRolodexClient({\n baseUrl: config.rolodexUrl,\n httpVersion: config.rolodexHttpVersion ?? '2',\n nodeOptions: { rejectUnauthorized: !config.rolodexIgnoreBadTls },\n interceptors: config.rolodexApiKey\n ? [rolodexAuth(config.rolodexApiKey)]\n : [],\n })\n : undefined\n\n const kwsClient = config.kws ? createKwsClient(config.kws) : undefined\n\n const entrywayJwtPublicKey = config.entrywayJwtPublicKeyHex\n ? createPublicKeyObject(config.entrywayJwtPublicKeyHex)\n : undefined\n const bffJwtSecret = config.bffJwtSecret\n ? Buffer.from(config.bffJwtSecret, 'utf8')\n : undefined\n const authVerifier = new AuthVerifier(dataplane, {\n ownDid: config.serverDid,\n alternateAudienceDids: config.alternateAudienceDids,\n modServiceDid: config.modServiceDid,\n adminPasses: config.adminPasswords,\n entrywayJwtPublicKey,\n bffJwtSecret,\n })\n\n const blobDispatcher = createBlobDispatcher(config)\n\n const ctx = new AppContext({\n cfg: config,\n etcd,\n dataplane,\n dataplaneHostList,\n searchClient,\n suggestionsClient,\n topicsClient,\n irisClient,\n hydrator,\n views,\n signingKey,\n idResolver,\n bsyncClient,\n stashClient,\n courierClient,\n rolodexClient,\n authVerifier,\n featureGatesClient,\n blobDispatcher,\n kwsClient,\n })\n\n const server = createServer([], {\n validateResponse: config.debugMode,\n payload: {\n jsonLimit: 100 * 1024, // 100kb\n textLimit: 100 * 1024, // 100kb\n blobLimit: 5 * 1024 * 1024, // 5mb\n },\n })\n\n API(server, ctx)\n\n app.use(health.createRouter(ctx))\n app.use(wellKnown.createRouter(ctx))\n app.use(blobResolver.createMiddleware(ctx))\n app.use(imageServer.createMiddleware(ctx, { prefix: '/img/' }))\n\n if (config.dataplaneUrls.length > 0 || config.dataplaneUrlsEtcdKeyPrefix) {\n app.use(sitemap.createRouter(ctx))\n }\n\n app.use(server.router)\n app.use(error.handler)\n app.use('/external', external.createRouter(ctx))\n\n return new BskyAppView({\n ctx,\n app,\n dispatchers: [topicsDispatcher, irisDispatcher],\n })\n }\n\n async start(): Promise<http.Server> {\n if (this.ctx.dataplaneHostList instanceof EtcdHostList) {\n await this.ctx.dataplaneHostList.connect()\n }\n this.ctx.featureGatesClient.start() // lazy, no await\n const server = this.app.listen(this.ctx.cfg.port)\n this.server = server\n server.keepAliveTimeout = 90000\n this.terminator = createHttpTerminator({ server })\n await events.once(server, 'listening')\n const { port } = server.address() as AddressInfo\n this.ctx.cfg.assignPort(port)\n return server\n }\n\n async destroy(): Promise<void> {\n try {\n await this.ctx.featureGatesClient.destroy()\n } finally {\n try {\n await this.terminator?.terminate()\n } finally {\n try {\n await this.ctx.etcd?.close()\n } finally {\n await Promise.all(this.dispatchers.map((d) => d.close()))\n }\n }\n }\n }\n\n async [Symbol.asyncDispose]() {\n await this.destroy()\n }\n}\n\nexport default BskyAppView\n"]}
@@ -23,6 +23,7 @@ export declare const $input: l.Payload<"application/json", l.ObjectSchema<{
23
23
  description: l.OptionalSchema<l.StringSchema<{}>>;
24
24
  recommendedPolicies: l.OptionalSchema<l.ArraySchema<l.StringSchema<{}>>>;
25
25
  recommendedLabels: l.OptionalSchema<l.ArraySchema<l.StringSchema<{}>>>;
26
+ strictAccess: l.OptionalSchema<l.BooleanSchema>;
26
27
  }>>;
27
28
  export type $Input<B = l.BinaryData> = l.InferPayload<typeof $input, B>;
28
29
  export type $InputBody<B = l.BinaryData> = l.InferPayloadBody<typeof $input, B>;
@@ -50,6 +51,7 @@ declare const main: l.Procedure<"tools.ozone.queue.createQueue", l.ParamsSchema<
50
51
  description: l.OptionalSchema<l.StringSchema<{}>>;
51
52
  recommendedPolicies: l.OptionalSchema<l.ArraySchema<l.StringSchema<{}>>>;
52
53
  recommendedLabels: l.OptionalSchema<l.ArraySchema<l.StringSchema<{}>>>;
54
+ strictAccess: l.OptionalSchema<l.BooleanSchema>;
53
55
  }>>, l.Payload<"application/json", l.ObjectSchema<{
54
56
  queue: l.RefSchema<l.Validator<QueueDefs.QueueView, QueueDefs.QueueView>>;
55
57
  }>>, readonly ["InvalidRecommendedPolicies", "ConflictingQueue"]>;
@@ -1 +1 @@
1
- {"version":3,"file":"createQueue.defs.d.ts","sourceRoot":"","sources":["../../../../../src/lexicons/tools/ozone/queue/createQueue.defs.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAE5C,QAAA,MAAM,KAAK,kCAAkC,CAAC;AAE9C,KAAK,KAAK,GAAG,OAAO,KAAK,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,eAAO,MAAM,OAAO,oBAA2B,CAAC;AAEhD,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,OAAO,CAAC,CAAC;AAEpD,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;GAA43B,CAAC;AAEh5B,MAAM,MAAM,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC;AACxE,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,gBAAgB,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC;AAEhF,eAAO,MAAM,OAAO;;GAAsH,CAAC;AAE3I,MAAM,MAAM,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;AAC1E,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,gBAAgB,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;AAElF,yPAAyP;AACzP,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;iEAAgH,CAAC;AAE3H,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhB,QAAA,MAAM,IAAI,kCAAQ,CAAC;AAEnB,KAAK,IAAI,GAAG,OAAO,IAAI,CAAC;AAExB,OAAO,EAAE,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"createQueue.defs.d.ts","sourceRoot":"","sources":["../../../../../src/lexicons/tools/ozone/queue/createQueue.defs.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAE5C,QAAA,MAAM,KAAK,kCAAkC,CAAC;AAE9C,KAAK,KAAK,GAAG,OAAO,KAAK,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,eAAO,MAAM,OAAO,oBAA2B,CAAC;AAEhD,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,OAAO,CAAC,CAAC;AAEpD,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;GAA+7B,CAAC;AAEn9B,MAAM,MAAM,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC;AACxE,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,gBAAgB,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC;AAEhF,eAAO,MAAM,OAAO;;GAAsH,CAAC;AAE3I,MAAM,MAAM,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;AAC1E,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,gBAAgB,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;AAElF,yPAAyP;AACzP,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;iEAAgH,CAAC;AAE3H,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhB,QAAA,MAAM,IAAI,kCAAQ,CAAC;AAEnB,KAAK,IAAI,GAAG,OAAO,IAAI,CAAC;AAExB,OAAO,EAAE,IAAI,EAAE,CAAC"}
@@ -6,7 +6,7 @@ import * as QueueDefs from "./defs.defs.js";
6
6
  const $nsid = "tools.ozone.queue.createQueue";
7
7
  export { $nsid };
8
8
  export const $params = /*#__PURE__*/ l.params();
9
- export const $input = /*#__PURE__*/ l.jsonPayload({ "name": /*#__PURE__*/ l.string(), "subjectTypes": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "collection": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({ "format": "nsid" })), "reportTypes": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "reporterTags": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string({ "minLength": 1 }), { "maxLength": 25 })), "accountTags": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string({ "minLength": 1 }), { "maxLength": 25 })), "description": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()), "recommendedPolicies": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "recommendedLabels": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())) });
9
+ export const $input = /*#__PURE__*/ l.jsonPayload({ "name": /*#__PURE__*/ l.string(), "subjectTypes": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "collection": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({ "format": "nsid" })), "reportTypes": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "reporterTags": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string({ "minLength": 1 }), { "maxLength": 25 })), "accountTags": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string({ "minLength": 1 }), { "maxLength": 25 })), "description": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()), "recommendedPolicies": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "recommendedLabels": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "strictAccess": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.boolean()) });
10
10
  export const $output = /*#__PURE__*/ l.jsonPayload({ "queue": /*#__PURE__*/ l.ref((() => QueueDefs.queueView)) });
11
11
  /** Create a new moderation queue. A queue with omitted or empty subjectTypes or reportTypes must have reports assigned to it manually via (1) `modTool.meta.queueId` in `tools.ozone.moderation.emitEvent` or (2) `tools.ozone.report.reassignQueue`. */
12
12
  const main = /*#__PURE__*/ l.procedure($nsid, $params, $input, $output, ["InvalidRecommendedPolicies", "ConflictingQueue"]);
@@ -1 +1 @@
1
- {"version":3,"file":"createQueue.defs.js","sourceRoot":"","sources":["../../../../../src/lexicons/tools/ozone/queue/createQueue.defs.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAE5C,MAAM,KAAK,GAAG,+BAA+B,CAAC;AAI9C,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAIhD,MAAM,CAAC,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,EAAC,MAAM,EAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,EAAC,cAAc,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAiE,CAAG,CAAC,EAAC,YAAY,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,QAAQ,EAAC,MAAM,EAAC,CAAC,CAAC,EAAC,aAAa,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAG,CAAC,EAAC,cAAc,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,WAAW,EAAC,CAAC,EAAC,CAAC,EAAE,EAAC,WAAW,EAAC,EAAE,EAAC,CAAC,CAAC,EAAC,aAAa,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,WAAW,EAAC,CAAC,EAAC,CAAC,EAAE,EAAC,WAAW,EAAC,EAAE,EAAC,CAAC,CAAC,EAAC,aAAa,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAC,qBAAqB,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAG,CAAC,EAAC,mBAAmB,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAG,CAAC,EAAC,CAAC,CAAC;AAKh5B,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,EAAC,OAAO,EAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAsB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAQ,CAAC,EAAC,CAAC,CAAC;AAK3I,yPAAyP;AACzP,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,4BAA4B,EAAC,kBAAkB,CAAC,CAAC,CAAC;AAE3H,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhB,MAAM,IAAI,GAAG,KAAK,CAAC;AAInB,OAAO,EAAE,IAAI,EAAE,CAAC","sourcesContent":["/*\n * THIS FILE WAS GENERATED BY \"@atproto/lex\". DO NOT EDIT.\n */\n\nimport { l } from \"@atproto/lex\";\nimport * as QueueDefs from \"./defs.defs.js\";\n\nconst $nsid = \"tools.ozone.queue.createQueue\";\n\ntype $nsid = typeof $nsid;\n\nexport { $nsid };\n\nexport const $params = /*#__PURE__*/ l.params();\n\nexport type $Params = l.InferOutput<typeof $params>;\n\nexport const $input = /*#__PURE__*/ l.jsonPayload({\"name\":/*#__PURE__*/ l.string(),\"subjectTypes\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string<{\"knownValues\":[\"account\",\"record\",\"message\",\"conversation\"]}>(), )),\"collection\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({\"format\":\"nsid\"})),\"reportTypes\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string(), )),\"reporterTags\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string({\"minLength\":1}), {\"maxLength\":25})),\"accountTags\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string({\"minLength\":1}), {\"maxLength\":25})),\"description\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\"recommendedPolicies\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string(), )),\"recommendedLabels\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string(), ))});\n\nexport type $Input<B = l.BinaryData> = l.InferPayload<typeof $input, B>;\nexport type $InputBody<B = l.BinaryData> = l.InferPayloadBody<typeof $input, B>;\n\nexport const $output = /*#__PURE__*/ l.jsonPayload({\"queue\":/*#__PURE__*/ l.ref<QueueDefs.QueueView>((() => QueueDefs.queueView) as any)});\n\nexport type $Output<B = l.BinaryData> = l.InferPayload<typeof $output, B>;\nexport type $OutputBody<B = l.BinaryData> = l.InferPayloadBody<typeof $output, B>;\n\n/** Create a new moderation queue. A queue with omitted or empty subjectTypes or reportTypes must have reports assigned to it manually via (1) `modTool.meta.queueId` in `tools.ozone.moderation.emitEvent` or (2) `tools.ozone.report.reassignQueue`. */\nconst main = /*#__PURE__*/ l.procedure($nsid, $params, $input, $output, [\"InvalidRecommendedPolicies\",\"ConflictingQueue\"]);\n\nexport { main };\n\nconst $lxm = $nsid;\n\ntype $lxm = typeof $lxm;\n\nexport { $lxm };\n"]}
1
+ {"version":3,"file":"createQueue.defs.js","sourceRoot":"","sources":["../../../../../src/lexicons/tools/ozone/queue/createQueue.defs.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAE5C,MAAM,KAAK,GAAG,+BAA+B,CAAC;AAI9C,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAIhD,MAAM,CAAC,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,EAAC,MAAM,EAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,EAAC,cAAc,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAiE,CAAG,CAAC,EAAC,YAAY,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,QAAQ,EAAC,MAAM,EAAC,CAAC,CAAC,EAAC,aAAa,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAG,CAAC,EAAC,cAAc,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,WAAW,EAAC,CAAC,EAAC,CAAC,EAAE,EAAC,WAAW,EAAC,EAAE,EAAC,CAAC,CAAC,EAAC,aAAa,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,WAAW,EAAC,CAAC,EAAC,CAAC,EAAE,EAAC,WAAW,EAAC,EAAE,EAAC,CAAC,CAAC,EAAC,aAAa,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAC,qBAAqB,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAG,CAAC,EAAC,mBAAmB,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAG,CAAC,EAAC,cAAc,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAC,CAAC,CAAC;AAKn9B,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,EAAC,OAAO,EAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAsB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAQ,CAAC,EAAC,CAAC,CAAC;AAK3I,yPAAyP;AACzP,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,4BAA4B,EAAC,kBAAkB,CAAC,CAAC,CAAC;AAE3H,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhB,MAAM,IAAI,GAAG,KAAK,CAAC;AAInB,OAAO,EAAE,IAAI,EAAE,CAAC","sourcesContent":["/*\n * THIS FILE WAS GENERATED BY \"@atproto/lex\". DO NOT EDIT.\n */\n\nimport { l } from \"@atproto/lex\";\nimport * as QueueDefs from \"./defs.defs.js\";\n\nconst $nsid = \"tools.ozone.queue.createQueue\";\n\ntype $nsid = typeof $nsid;\n\nexport { $nsid };\n\nexport const $params = /*#__PURE__*/ l.params();\n\nexport type $Params = l.InferOutput<typeof $params>;\n\nexport const $input = /*#__PURE__*/ l.jsonPayload({\"name\":/*#__PURE__*/ l.string(),\"subjectTypes\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string<{\"knownValues\":[\"account\",\"record\",\"message\",\"conversation\"]}>(), )),\"collection\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({\"format\":\"nsid\"})),\"reportTypes\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string(), )),\"reporterTags\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string({\"minLength\":1}), {\"maxLength\":25})),\"accountTags\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string({\"minLength\":1}), {\"maxLength\":25})),\"description\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\"recommendedPolicies\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string(), )),\"recommendedLabels\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string(), )),\"strictAccess\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.boolean())});\n\nexport type $Input<B = l.BinaryData> = l.InferPayload<typeof $input, B>;\nexport type $InputBody<B = l.BinaryData> = l.InferPayloadBody<typeof $input, B>;\n\nexport const $output = /*#__PURE__*/ l.jsonPayload({\"queue\":/*#__PURE__*/ l.ref<QueueDefs.QueueView>((() => QueueDefs.queueView) as any)});\n\nexport type $Output<B = l.BinaryData> = l.InferPayload<typeof $output, B>;\nexport type $OutputBody<B = l.BinaryData> = l.InferPayloadBody<typeof $output, B>;\n\n/** Create a new moderation queue. A queue with omitted or empty subjectTypes or reportTypes must have reports assigned to it manually via (1) `modTool.meta.queueId` in `tools.ozone.moderation.emitEvent` or (2) `tools.ozone.report.reassignQueue`. */\nconst main = /*#__PURE__*/ l.procedure($nsid, $params, $input, $output, [\"InvalidRecommendedPolicies\",\"ConflictingQueue\"]);\n\nexport { main };\n\nconst $lxm = $nsid;\n\ntype $lxm = typeof $lxm;\n\nexport { $lxm };\n"]}
@@ -63,6 +63,10 @@ type QueueView = {
63
63
  * Statistics about this queue
64
64
  */
65
65
  "stats": QueueStats;
66
+ /**
67
+ * Admins can always list this queue and browse its reports. Other roles require an active queue assignment. Individual report and moderation event access is unchanged.
68
+ */
69
+ "strictAccess"?: boolean;
66
70
  };
67
71
  export type { QueueView };
68
72
  declare const queueView: l.TypedObjectSchema<"tools.ozone.queue.defs#queueView", l.Validator<QueueView, QueueView>>;
@@ -1 +1 @@
1
- {"version":3,"file":"defs.defs.d.ts","sourceRoot":"","sources":["../../../../../src/lexicons/tools/ozone/queue/defs.defs.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,KAAK,QAAQ,MAAM,sBAAsB,CAAC;AAEjD,QAAA,MAAM,KAAK,2BAA2B,CAAC;AAEvC,KAAK,KAAK,GAAG,OAAO,KAAK,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,KAAK,SAAS,GAAG;IAAE,KAAK,CAAC,EAAE,kCAAkC,CAAC;IAE5D;;OAEG;IACH,IAAI,EAAC,MAAM,CAAC;IAEZ;;OAEG;IACH,MAAM,EAAC,MAAM,CAAC;IAEd;;OAEG;IACH,cAAc,CAAC,EAAC,CAAC,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,cAAc,GAAG,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC;IAExF;;OAEG;IACH,YAAY,CAAC,EAAC,CAAC,CAAC,UAAU,CAAC;IAE3B;;OAEG;IACH,aAAa,CAAC,EAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IAE1B;;OAEG;IACH,cAAc,CAAC,EAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IAE3B;;OAEG;IACH,aAAa,CAAC,EAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IAE1B;;OAEG;IACH,aAAa,CAAC,EAAC,MAAM,CAAC;IAEtB;;OAEG;IACH,qBAAqB,CAAC,EAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IAElC;;OAEG;IACH,mBAAmB,CAAC,EAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IAEhC;;OAEG;IACH,WAAW,EAAC,CAAC,CAAC,SAAS,CAAC;IAAA,WAAW,EAAC,CAAC,CAAC,cAAc,CAAC;IAAA,WAAW,EAAC,CAAC,CAAC,cAAc,CAAC;IAElF;;OAEG;IACH,SAAS,EAAC,OAAO,CAAC;IAElB;;OAEG;IACH,WAAW,CAAC,EAAC,CAAC,CAAC,cAAc,CAAC;IAE9B;;OAEG;IACH,OAAO,EAAC,UAAU,CAAA;CAAE,CAAC;AAEvB,YAAY,EAAE,SAAS,EAAE,CAAC;AAE1B,QAAA,MAAM,SAAS,4FAAszC,CAAC;AAEt0C,OAAO,EAAE,SAAS,EAAE,CAAC;AAErB,KAAK,UAAU,GAAG;IAAE,KAAK,CAAC,EAAE,mCAAmC,CAAC;IAE9D;;OAEG;IACH,cAAc,CAAC,EAAC,MAAM,CAAC;IAEvB;;OAEG;IACH,2BAA2B,CAAC,EAAC,MAAM,CAAC;IAEpC;;OAEG;IACH,uBAAuB,CAAC,EAAC,MAAM,CAAC;IAEhC;;OAEG;IACH,0BAA0B,CAAC,EAAC,MAAM,CAAC;IAEnC;;OAEG;IACH,sBAAsB,CAAC,EAAC,MAAM,CAAC;IAE/B;;OAEG;IACH,aAAa,CAAC,EAAC,MAAM,CAAC;IAEtB;;OAEG;IACH,eAAe,CAAC,EAAC,MAAM,CAAC;IAExB;;OAEG;IACH,mBAAmB,CAAC,EAAC,MAAM,CAAC;IAE5B;;OAEG;IACH,gBAAgB,CAAC,EAAC,MAAM,CAAC;IAEzB;;OAEG;IACH,cAAc,CAAC,EAAC,MAAM,CAAC;IAEvB;;OAEG;IACH,kBAAkB,CAAC,EAAC,MAAM,CAAC;IAE3B;;OAEG;IACH,gBAAgB,CAAC,EAAC,MAAM,CAAC;IAEzB;;OAEG;IACH,qBAAqB,CAAC,EAAC,MAAM,CAAC;IAE9B;;OAEG;IACH,gBAAgB,CAAC,EAAC,MAAM,CAAC;IAEzB;;OAEG;IACH,gBAAgB,CAAC,EAAC,MAAM,CAAC;IAEzB;;OAEG;IACH,uBAAuB,CAAC,EAAC,MAAM,CAAC;IAEhC;;OAEG;IACH,uBAAuB,CAAC,EAAC,MAAM,CAAC;IAEhC;;OAEG;IACH,YAAY,CAAC,EAAC,MAAM,CAAC;IAErB;;OAEG;IACH,oBAAoB,CAAC,EAAC,MAAM,CAAC;IAE7B;;OAEG;IACH,sBAAsB,CAAC,EAAC,MAAM,CAAC;IAE/B;;OAEG;IACH,aAAa,CAAC,EAAC,CAAC,CAAC,cAAc,CAAA;CAAE,CAAC;AAEpC,YAAY,EAAE,UAAU,EAAE,CAAC;AAE3B,QAAA,MAAM,UAAU,+FAA8oD,CAAC;AAE/pD,OAAO,EAAE,UAAU,EAAE,CAAC;AAEtB,KAAK,cAAc,GAAG;IAAE,KAAK,CAAC,EAAE,uCAAuC,CAAC;IAAA,IAAI,EAAC,MAAM,CAAC;IAAA,KAAK,EAAC,CAAC,CAAC,SAAS,CAAC;IAEpG;;OAEG;IACH,WAAW,CAAC,EAAC,QAAQ,CAAC,MAAM,CAAC;IAAA,OAAO,EAAC,SAAS,CAAC;IAAA,SAAS,EAAC,CAAC,CAAC,cAAc,CAAC;IAAA,OAAO,CAAC,EAAC,CAAC,CAAC,cAAc,CAAA;CAAE,CAAC;AAExG,YAAY,EAAE,cAAc,EAAE,CAAC;AAE/B,QAAA,MAAM,cAAc,2GAAoe,CAAC;AAEzf,OAAO,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"defs.defs.d.ts","sourceRoot":"","sources":["../../../../../src/lexicons/tools/ozone/queue/defs.defs.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ import { l } from "@atproto/lex";
5
5
  import * as TeamDefs from "../team/defs.defs.js";
6
6
  const $nsid = "tools.ozone.queue.defs";
7
7
  export { $nsid };
8
- const queueView = /*#__PURE__*/ l.typedObject($nsid, "queueView", /*#__PURE__*/ l.object({ "id": /*#__PURE__*/ l.integer(), "name": /*#__PURE__*/ l.string(), "subjectTypes": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "collection": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({ "format": "nsid" })), "reportTypes": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "reporterTags": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string({ "minLength": 1 }), { "maxLength": 25 })), "accountTags": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string({ "minLength": 1 }), { "maxLength": 25 })), "description": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()), "recommendedPolicies": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "recommendedLabels": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "createdBy": /*#__PURE__*/ l.string({ "format": "did" }), "createdAt": /*#__PURE__*/ l.string({ "format": "datetime" }), "updatedAt": /*#__PURE__*/ l.string({ "format": "datetime" }), "enabled": /*#__PURE__*/ l.boolean(), "deletedAt": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({ "format": "datetime" })), "stats": /*#__PURE__*/ l.ref((() => queueStats)) }));
8
+ const queueView = /*#__PURE__*/ l.typedObject($nsid, "queueView", /*#__PURE__*/ l.object({ "id": /*#__PURE__*/ l.integer(), "name": /*#__PURE__*/ l.string(), "subjectTypes": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "collection": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({ "format": "nsid" })), "reportTypes": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "reporterTags": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string({ "minLength": 1 }), { "maxLength": 25 })), "accountTags": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string({ "minLength": 1 }), { "maxLength": 25 })), "description": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()), "recommendedPolicies": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "recommendedLabels": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "createdBy": /*#__PURE__*/ l.string({ "format": "did" }), "createdAt": /*#__PURE__*/ l.string({ "format": "datetime" }), "updatedAt": /*#__PURE__*/ l.string({ "format": "datetime" }), "enabled": /*#__PURE__*/ l.boolean(), "deletedAt": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({ "format": "datetime" })), "stats": /*#__PURE__*/ l.ref((() => queueStats)), "strictAccess": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.boolean()) }));
9
9
  export { queueView };
10
10
  const queueStats = /*#__PURE__*/ l.typedObject($nsid, "queueStats", /*#__PURE__*/ l.object({ "pendingCount": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()), "closureTargetOverdueCount": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer({ "minimum": 0 })), "closureTargetMetCount": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer({ "minimum": 0 })), "closureTargetMissedCount": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer({ "minimum": 0 })), "closureTargetMetRate": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer({ "minimum": 0, "maximum": 100 })), "closedCount": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()), "actionedCount": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()), "acknowledgedCount": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()), "escalatedCount": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()), "inboundCount": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()), "labelActionCount": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()), "tagActionCount": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()), "takedownActionCount": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()), "ahtDurationSec": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()), "ahtSampleCount": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()), "resolutionDurationSec": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()), "resolutionSampleCount": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()), "actionRate": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()), "avgHandlingTimeSec": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()), "avgResolutionTimeSec": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()), "lastUpdated": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({ "format": "datetime" })) }));
11
11
  export { queueStats };
@@ -1 +1 @@
1
- {"version":3,"file":"defs.defs.js","sourceRoot":"","sources":["../../../../../src/lexicons/tools/ozone/queue/defs.defs.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * THIS FILE WAS GENERATED BY \"@atproto/lex\". DO NOT EDIT.\n */\n\nimport { l } from \"@atproto/lex\";\nimport * as TeamDefs from \"../team/defs.defs.js\";\n\nconst $nsid = \"tools.ozone.queue.defs\";\n\ntype $nsid = typeof $nsid;\n\nexport { $nsid };\n\ntype QueueView = { $type?: \"tools.ozone.queue.defs#queueView\";\n\n /**\n * Queue ID\n */\n \"id\":number;\n\n /**\n * Display name of the queue\n */\n \"name\":string;\n\n /**\n * Subject types this queue accepts.\n */\n \"subjectTypes\"?:(\"account\" | \"record\" | \"message\" | \"conversation\" | l.UnknownString)[];\n\n /**\n * Collection name for record subjects. Omit to accept every collection.\n */\n \"collection\"?:l.NsidString;\n\n /**\n * Report reason types this queue accepts (fully qualified NSIDs)\n */\n \"reportTypes\"?:(string)[];\n\n /**\n * Match any listed tag on the account submitting the report.\n */\n \"reporterTags\"?:(string)[];\n\n /**\n * Match tags on the account that is being reported against. For record subjects, use the author account. Match any listed tag.\n */\n \"accountTags\"?:(string)[];\n\n /**\n * Optional description of the queue\n */\n \"description\"?:string;\n\n /**\n * Policy keys recommended when actioning reports in this queue\n */\n \"recommendedPolicies\"?:(string)[];\n\n /**\n * Labels recommended for this queue and used as a fallback when routing label appeals\n */\n \"recommendedLabels\"?:(string)[];\n\n /**\n * DID of moderator who created this queue\n */\n \"createdBy\":l.DidString;\"createdAt\":l.DatetimeString;\"updatedAt\":l.DatetimeString;\n\n /**\n * Whether this queue is currently active\n */\n \"enabled\":boolean;\n\n /**\n * When the queue was deleted, if applicable\n */\n \"deletedAt\"?:l.DatetimeString;\n\n /**\n * Statistics about this queue\n */\n \"stats\":QueueStats };\n\nexport type { QueueView };\n\nconst queueView = /*#__PURE__*/ l.typedObject<QueueView>($nsid, \"queueView\", /*#__PURE__*/ l.object({\"id\":/*#__PURE__*/ l.integer(),\"name\":/*#__PURE__*/ l.string(),\"subjectTypes\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string<{\"knownValues\":[\"account\",\"record\",\"message\",\"conversation\"]}>(), )),\"collection\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({\"format\":\"nsid\"})),\"reportTypes\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string(), )),\"reporterTags\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string({\"minLength\":1}), {\"maxLength\":25})),\"accountTags\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string({\"minLength\":1}), {\"maxLength\":25})),\"description\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\"recommendedPolicies\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string(), )),\"recommendedLabels\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string(), )),\"createdBy\":/*#__PURE__*/ l.string({\"format\":\"did\"}),\"createdAt\":/*#__PURE__*/ l.string({\"format\":\"datetime\"}),\"updatedAt\":/*#__PURE__*/ l.string({\"format\":\"datetime\"}),\"enabled\":/*#__PURE__*/ l.boolean(),\"deletedAt\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({\"format\":\"datetime\"})),\"stats\":/*#__PURE__*/ l.ref<QueueStats>((() => queueStats) as any)}));\n\nexport { queueView };\n\ntype QueueStats = { $type?: \"tools.ozone.queue.defs#queueStats\";\n\n /**\n * Number of unmuted reports currently not closed.\n */\n \"pendingCount\"?:number;\n\n /**\n * Unmuted pending reports past their closure target.\n */\n \"closureTargetOverdueCount\"?:number;\n\n /**\n * Reports whose closure meets their closure target.\n */\n \"closureTargetMetCount\"?:number;\n\n /**\n * Reports whose closure exceeds their closure target.\n */\n \"closureTargetMissedCount\"?:number;\n\n /**\n * Percent of reports meeting their closure target.\n */\n \"closureTargetMetRate\"?:number;\n\n /**\n * Number of reports whose current closure falls within this UTC calendar day.\n */\n \"closedCount\"?:number;\n\n /**\n * Number of closures whose last report action is label, tag, or takedown.\n */\n \"actionedCount\"?:number;\n\n /**\n * Number of closures whose last report action is not label, tag, or takedown.\n */\n \"acknowledgedCount\"?:number;\n\n /**\n * Number of report escalation events during this UTC calendar day.\n */\n \"escalatedCount\"?:number;\n\n /**\n * Reports received in this queue during this UTC calendar day.\n */\n \"inboundCount\"?:number;\n\n /**\n * Closures whose last report action is a label event.\n */\n \"labelActionCount\"?:number;\n\n /**\n * Closures whose last report action is a tag event.\n */\n \"tagActionCount\"?:number;\n\n /**\n * Closures whose last report action is a takedown event.\n */\n \"takedownActionCount\"?:number;\n\n /**\n * Sum of report assignment-to-close seconds.\n */\n \"ahtDurationSec\"?:number;\n\n /**\n * Number of assigned closed-report samples in ahtDurationSec.\n */\n \"ahtSampleCount\"?:number;\n\n /**\n * Sum of report creation-to-close seconds.\n */\n \"resolutionDurationSec\"?:number;\n\n /**\n * Number of closed-report samples in resolutionDurationSec.\n */\n \"resolutionSampleCount\"?:number;\n\n /**\n * Percentage of closures actioned (actionedCount / closedCount * 100), rounded to nearest integer.\n */\n \"actionRate\"?:number;\n\n /**\n * Average handling time in seconds from report assignment to close.\n */\n \"avgHandlingTimeSec\"?:number;\n\n /**\n * Average resolution time in seconds from report creation to close.\n */\n \"avgResolutionTimeSec\"?:number;\n\n /**\n * When these statistics were last computed.\n */\n \"lastUpdated\"?:l.DatetimeString };\n\nexport type { QueueStats };\n\nconst queueStats = /*#__PURE__*/ l.typedObject<QueueStats>($nsid, \"queueStats\", /*#__PURE__*/ l.object({\"pendingCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"closureTargetOverdueCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer({\"minimum\":0})),\"closureTargetMetCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer({\"minimum\":0})),\"closureTargetMissedCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer({\"minimum\":0})),\"closureTargetMetRate\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer({\"minimum\":0,\"maximum\":100})),\"closedCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"actionedCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"acknowledgedCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"escalatedCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"inboundCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"labelActionCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"tagActionCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"takedownActionCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"ahtDurationSec\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"ahtSampleCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"resolutionDurationSec\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"resolutionSampleCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"actionRate\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"avgHandlingTimeSec\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"avgResolutionTimeSec\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"lastUpdated\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({\"format\":\"datetime\"}))}));\n\nexport { queueStats };\n\ntype AssignmentView = { $type?: \"tools.ozone.queue.defs#assignmentView\";\"id\":number;\"did\":l.DidString;\n\n /**\n * The moderator assigned to this queue\n */\n \"moderator\"?:TeamDefs.Member;\"queue\":QueueView;\"startAt\":l.DatetimeString;\"endAt\"?:l.DatetimeString };\n\nexport type { AssignmentView };\n\nconst assignmentView = /*#__PURE__*/ l.typedObject<AssignmentView>($nsid, \"assignmentView\", /*#__PURE__*/ l.object({\"id\":/*#__PURE__*/ l.integer(),\"did\":/*#__PURE__*/ l.string({\"format\":\"did\"}),\"moderator\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.ref<TeamDefs.Member>((() => TeamDefs.member) as any)),\"queue\":/*#__PURE__*/ l.ref<QueueView>((() => queueView) as any),\"startAt\":/*#__PURE__*/ l.string({\"format\":\"datetime\"}),\"endAt\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({\"format\":\"datetime\"}))}));\n\nexport { assignmentView };\n"]}
1
+ {"version":3,"file":"defs.defs.js","sourceRoot":"","sources":["../../../../../src/lexicons/tools/ozone/queue/defs.defs.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * THIS FILE WAS GENERATED BY \"@atproto/lex\". DO NOT EDIT.\n */\n\nimport { l } from \"@atproto/lex\";\nimport * as TeamDefs from \"../team/defs.defs.js\";\n\nconst $nsid = \"tools.ozone.queue.defs\";\n\ntype $nsid = typeof $nsid;\n\nexport { $nsid };\n\ntype QueueView = { $type?: \"tools.ozone.queue.defs#queueView\";\n\n /**\n * Queue ID\n */\n \"id\":number;\n\n /**\n * Display name of the queue\n */\n \"name\":string;\n\n /**\n * Subject types this queue accepts.\n */\n \"subjectTypes\"?:(\"account\" | \"record\" | \"message\" | \"conversation\" | l.UnknownString)[];\n\n /**\n * Collection name for record subjects. Omit to accept every collection.\n */\n \"collection\"?:l.NsidString;\n\n /**\n * Report reason types this queue accepts (fully qualified NSIDs)\n */\n \"reportTypes\"?:(string)[];\n\n /**\n * Match any listed tag on the account submitting the report.\n */\n \"reporterTags\"?:(string)[];\n\n /**\n * Match tags on the account that is being reported against. For record subjects, use the author account. Match any listed tag.\n */\n \"accountTags\"?:(string)[];\n\n /**\n * Optional description of the queue\n */\n \"description\"?:string;\n\n /**\n * Policy keys recommended when actioning reports in this queue\n */\n \"recommendedPolicies\"?:(string)[];\n\n /**\n * Labels recommended for this queue and used as a fallback when routing label appeals\n */\n \"recommendedLabels\"?:(string)[];\n\n /**\n * DID of moderator who created this queue\n */\n \"createdBy\":l.DidString;\"createdAt\":l.DatetimeString;\"updatedAt\":l.DatetimeString;\n\n /**\n * Whether this queue is currently active\n */\n \"enabled\":boolean;\n\n /**\n * When the queue was deleted, if applicable\n */\n \"deletedAt\"?:l.DatetimeString;\n\n /**\n * Statistics about this queue\n */\n \"stats\":QueueStats;\n\n /**\n * Admins can always list this queue and browse its reports. Other roles require an active queue assignment. Individual report and moderation event access is unchanged.\n */\n \"strictAccess\"?:boolean };\n\nexport type { QueueView };\n\nconst queueView = /*#__PURE__*/ l.typedObject<QueueView>($nsid, \"queueView\", /*#__PURE__*/ l.object({\"id\":/*#__PURE__*/ l.integer(),\"name\":/*#__PURE__*/ l.string(),\"subjectTypes\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string<{\"knownValues\":[\"account\",\"record\",\"message\",\"conversation\"]}>(), )),\"collection\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({\"format\":\"nsid\"})),\"reportTypes\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string(), )),\"reporterTags\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string({\"minLength\":1}), {\"maxLength\":25})),\"accountTags\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string({\"minLength\":1}), {\"maxLength\":25})),\"description\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\"recommendedPolicies\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string(), )),\"recommendedLabels\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string(), )),\"createdBy\":/*#__PURE__*/ l.string({\"format\":\"did\"}),\"createdAt\":/*#__PURE__*/ l.string({\"format\":\"datetime\"}),\"updatedAt\":/*#__PURE__*/ l.string({\"format\":\"datetime\"}),\"enabled\":/*#__PURE__*/ l.boolean(),\"deletedAt\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({\"format\":\"datetime\"})),\"stats\":/*#__PURE__*/ l.ref<QueueStats>((() => queueStats) as any),\"strictAccess\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.boolean())}));\n\nexport { queueView };\n\ntype QueueStats = { $type?: \"tools.ozone.queue.defs#queueStats\";\n\n /**\n * Number of unmuted reports currently not closed.\n */\n \"pendingCount\"?:number;\n\n /**\n * Unmuted pending reports past their closure target.\n */\n \"closureTargetOverdueCount\"?:number;\n\n /**\n * Reports whose closure meets their closure target.\n */\n \"closureTargetMetCount\"?:number;\n\n /**\n * Reports whose closure exceeds their closure target.\n */\n \"closureTargetMissedCount\"?:number;\n\n /**\n * Percent of reports meeting their closure target.\n */\n \"closureTargetMetRate\"?:number;\n\n /**\n * Number of reports whose current closure falls within this UTC calendar day.\n */\n \"closedCount\"?:number;\n\n /**\n * Number of closures whose last report action is label, tag, or takedown.\n */\n \"actionedCount\"?:number;\n\n /**\n * Number of closures whose last report action is not label, tag, or takedown.\n */\n \"acknowledgedCount\"?:number;\n\n /**\n * Number of report escalation events during this UTC calendar day.\n */\n \"escalatedCount\"?:number;\n\n /**\n * Reports received in this queue during this UTC calendar day.\n */\n \"inboundCount\"?:number;\n\n /**\n * Closures whose last report action is a label event.\n */\n \"labelActionCount\"?:number;\n\n /**\n * Closures whose last report action is a tag event.\n */\n \"tagActionCount\"?:number;\n\n /**\n * Closures whose last report action is a takedown event.\n */\n \"takedownActionCount\"?:number;\n\n /**\n * Sum of report assignment-to-close seconds.\n */\n \"ahtDurationSec\"?:number;\n\n /**\n * Number of assigned closed-report samples in ahtDurationSec.\n */\n \"ahtSampleCount\"?:number;\n\n /**\n * Sum of report creation-to-close seconds.\n */\n \"resolutionDurationSec\"?:number;\n\n /**\n * Number of closed-report samples in resolutionDurationSec.\n */\n \"resolutionSampleCount\"?:number;\n\n /**\n * Percentage of closures actioned (actionedCount / closedCount * 100), rounded to nearest integer.\n */\n \"actionRate\"?:number;\n\n /**\n * Average handling time in seconds from report assignment to close.\n */\n \"avgHandlingTimeSec\"?:number;\n\n /**\n * Average resolution time in seconds from report creation to close.\n */\n \"avgResolutionTimeSec\"?:number;\n\n /**\n * When these statistics were last computed.\n */\n \"lastUpdated\"?:l.DatetimeString };\n\nexport type { QueueStats };\n\nconst queueStats = /*#__PURE__*/ l.typedObject<QueueStats>($nsid, \"queueStats\", /*#__PURE__*/ l.object({\"pendingCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"closureTargetOverdueCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer({\"minimum\":0})),\"closureTargetMetCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer({\"minimum\":0})),\"closureTargetMissedCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer({\"minimum\":0})),\"closureTargetMetRate\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer({\"minimum\":0,\"maximum\":100})),\"closedCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"actionedCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"acknowledgedCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"escalatedCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"inboundCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"labelActionCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"tagActionCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"takedownActionCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"ahtDurationSec\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"ahtSampleCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"resolutionDurationSec\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"resolutionSampleCount\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"actionRate\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"avgHandlingTimeSec\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"avgResolutionTimeSec\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.integer()),\"lastUpdated\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({\"format\":\"datetime\"}))}));\n\nexport { queueStats };\n\ntype AssignmentView = { $type?: \"tools.ozone.queue.defs#assignmentView\";\"id\":number;\"did\":l.DidString;\n\n /**\n * The moderator assigned to this queue\n */\n \"moderator\"?:TeamDefs.Member;\"queue\":QueueView;\"startAt\":l.DatetimeString;\"endAt\"?:l.DatetimeString };\n\nexport type { AssignmentView };\n\nconst assignmentView = /*#__PURE__*/ l.typedObject<AssignmentView>($nsid, \"assignmentView\", /*#__PURE__*/ l.object({\"id\":/*#__PURE__*/ l.integer(),\"did\":/*#__PURE__*/ l.string({\"format\":\"did\"}),\"moderator\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.ref<TeamDefs.Member>((() => TeamDefs.member) as any)),\"queue\":/*#__PURE__*/ l.ref<QueueView>((() => queueView) as any),\"startAt\":/*#__PURE__*/ l.string({\"format\":\"datetime\"}),\"endAt\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({\"format\":\"datetime\"}))}));\n\nexport { assignmentView };\n"]}
@@ -12,6 +12,7 @@ export declare const $input: l.Payload<"application/json", l.ObjectSchema<{
12
12
  description: l.OptionalSchema<l.StringSchema<{}>>;
13
13
  recommendedPolicies: l.OptionalSchema<l.ArraySchema<l.StringSchema<{}>>>;
14
14
  recommendedLabels: l.OptionalSchema<l.ArraySchema<l.StringSchema<{}>>>;
15
+ strictAccess: l.OptionalSchema<l.BooleanSchema>;
15
16
  }>>;
16
17
  export type $Input<B = l.BinaryData> = l.InferPayload<typeof $input, B>;
17
18
  export type $InputBody<B = l.BinaryData> = l.InferPayloadBody<typeof $input, B>;
@@ -28,6 +29,7 @@ declare const main: l.Procedure<"tools.ozone.queue.updateQueue", l.ParamsSchema<
28
29
  description: l.OptionalSchema<l.StringSchema<{}>>;
29
30
  recommendedPolicies: l.OptionalSchema<l.ArraySchema<l.StringSchema<{}>>>;
30
31
  recommendedLabels: l.OptionalSchema<l.ArraySchema<l.StringSchema<{}>>>;
32
+ strictAccess: l.OptionalSchema<l.BooleanSchema>;
31
33
  }>>, l.Payload<"application/json", l.ObjectSchema<{
32
34
  queue: l.RefSchema<l.Validator<QueueDefs.QueueView, QueueDefs.QueueView>>;
33
35
  }>>, readonly ["InvalidRecommendedPolicies", "ConflictingQueue"]>;
@@ -1 +1 @@
1
- {"version":3,"file":"updateQueue.defs.d.ts","sourceRoot":"","sources":["../../../../../src/lexicons/tools/ozone/queue/updateQueue.defs.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAE5C,QAAA,MAAM,KAAK,kCAAkC,CAAC;AAE9C,KAAK,KAAK,GAAG,OAAO,KAAK,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,eAAO,MAAM,OAAO,oBAA2B,CAAC;AAEhD,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,OAAO,CAAC,CAAC;AAEpD,eAAO,MAAM,MAAM;;;;;;;GAAgc,CAAC;AAEpd,MAAM,MAAM,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC;AACxE,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,gBAAgB,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC;AAEhF,eAAO,MAAM,OAAO;;GAAsH,CAAC;AAE3I,MAAM,MAAM,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;AAC1E,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,gBAAgB,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;AAElF,+BAA+B;AAC/B,QAAA,MAAM,IAAI;;;;;;;;;iEAAgH,CAAC;AAE3H,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhB,QAAA,MAAM,IAAI,kCAAQ,CAAC;AAEnB,KAAK,IAAI,GAAG,OAAO,IAAI,CAAC;AAExB,OAAO,EAAE,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"updateQueue.defs.d.ts","sourceRoot":"","sources":["../../../../../src/lexicons/tools/ozone/queue/updateQueue.defs.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAE5C,QAAA,MAAM,KAAK,kCAAkC,CAAC;AAE9C,KAAK,KAAK,GAAG,OAAO,KAAK,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,eAAO,MAAM,OAAO,oBAA2B,CAAC;AAEhD,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,OAAO,CAAC,CAAC;AAEpD,eAAO,MAAM,MAAM;;;;;;;;GAAmgB,CAAC;AAEvhB,MAAM,MAAM,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC;AACxE,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,gBAAgB,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC;AAEhF,eAAO,MAAM,OAAO;;GAAsH,CAAC;AAE3I,MAAM,MAAM,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;AAC1E,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,gBAAgB,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;AAElF,+BAA+B;AAC/B,QAAA,MAAM,IAAI;;;;;;;;;;iEAAgH,CAAC;AAE3H,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhB,QAAA,MAAM,IAAI,kCAAQ,CAAC;AAEnB,KAAK,IAAI,GAAG,OAAO,IAAI,CAAC;AAExB,OAAO,EAAE,IAAI,EAAE,CAAC"}
@@ -6,7 +6,7 @@ import * as QueueDefs from "./defs.defs.js";
6
6
  const $nsid = "tools.ozone.queue.updateQueue";
7
7
  export { $nsid };
8
8
  export const $params = /*#__PURE__*/ l.params();
9
- export const $input = /*#__PURE__*/ l.jsonPayload({ "queueId": /*#__PURE__*/ l.integer(), "name": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()), "enabled": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.boolean()), "description": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()), "recommendedPolicies": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "recommendedLabels": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())) });
9
+ export const $input = /*#__PURE__*/ l.jsonPayload({ "queueId": /*#__PURE__*/ l.integer(), "name": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()), "enabled": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.boolean()), "description": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()), "recommendedPolicies": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "recommendedLabels": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "strictAccess": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.boolean()) });
10
10
  export const $output = /*#__PURE__*/ l.jsonPayload({ "queue": /*#__PURE__*/ l.ref((() => QueueDefs.queueView)) });
11
11
  /** Update queue properties. */
12
12
  const main = /*#__PURE__*/ l.procedure($nsid, $params, $input, $output, ["InvalidRecommendedPolicies", "ConflictingQueue"]);
@@ -1 +1 @@
1
- {"version":3,"file":"updateQueue.defs.js","sourceRoot":"","sources":["../../../../../src/lexicons/tools/ozone/queue/updateQueue.defs.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAE5C,MAAM,KAAK,GAAG,+BAA+B,CAAC;AAI9C,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAIhD,MAAM,CAAC,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,EAAC,SAAS,EAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,EAAC,MAAM,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAC,SAAS,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAC,aAAa,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAC,qBAAqB,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAG,CAAC,EAAC,mBAAmB,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAG,CAAC,EAAC,CAAC,CAAC;AAKpd,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,EAAC,OAAO,EAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAsB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAQ,CAAC,EAAC,CAAC,CAAC;AAK3I,+BAA+B;AAC/B,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,4BAA4B,EAAC,kBAAkB,CAAC,CAAC,CAAC;AAE3H,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhB,MAAM,IAAI,GAAG,KAAK,CAAC;AAInB,OAAO,EAAE,IAAI,EAAE,CAAC","sourcesContent":["/*\n * THIS FILE WAS GENERATED BY \"@atproto/lex\". DO NOT EDIT.\n */\n\nimport { l } from \"@atproto/lex\";\nimport * as QueueDefs from \"./defs.defs.js\";\n\nconst $nsid = \"tools.ozone.queue.updateQueue\";\n\ntype $nsid = typeof $nsid;\n\nexport { $nsid };\n\nexport const $params = /*#__PURE__*/ l.params();\n\nexport type $Params = l.InferOutput<typeof $params>;\n\nexport const $input = /*#__PURE__*/ l.jsonPayload({\"queueId\":/*#__PURE__*/ l.integer(),\"name\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\"enabled\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.boolean()),\"description\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\"recommendedPolicies\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string(), )),\"recommendedLabels\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string(), ))});\n\nexport type $Input<B = l.BinaryData> = l.InferPayload<typeof $input, B>;\nexport type $InputBody<B = l.BinaryData> = l.InferPayloadBody<typeof $input, B>;\n\nexport const $output = /*#__PURE__*/ l.jsonPayload({\"queue\":/*#__PURE__*/ l.ref<QueueDefs.QueueView>((() => QueueDefs.queueView) as any)});\n\nexport type $Output<B = l.BinaryData> = l.InferPayload<typeof $output, B>;\nexport type $OutputBody<B = l.BinaryData> = l.InferPayloadBody<typeof $output, B>;\n\n/** Update queue properties. */\nconst main = /*#__PURE__*/ l.procedure($nsid, $params, $input, $output, [\"InvalidRecommendedPolicies\",\"ConflictingQueue\"]);\n\nexport { main };\n\nconst $lxm = $nsid;\n\ntype $lxm = typeof $lxm;\n\nexport { $lxm };\n"]}
1
+ {"version":3,"file":"updateQueue.defs.js","sourceRoot":"","sources":["../../../../../src/lexicons/tools/ozone/queue/updateQueue.defs.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAE5C,MAAM,KAAK,GAAG,+BAA+B,CAAC;AAI9C,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAIhD,MAAM,CAAC,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,EAAC,SAAS,EAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,EAAC,MAAM,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAC,SAAS,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAC,aAAa,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAC,qBAAqB,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAG,CAAC,EAAC,mBAAmB,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAG,CAAC,EAAC,cAAc,EAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAC,CAAC,CAAC;AAKvhB,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,EAAC,OAAO,EAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAsB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAQ,CAAC,EAAC,CAAC,CAAC;AAK3I,+BAA+B;AAC/B,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,4BAA4B,EAAC,kBAAkB,CAAC,CAAC,CAAC;AAE3H,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhB,MAAM,IAAI,GAAG,KAAK,CAAC;AAInB,OAAO,EAAE,IAAI,EAAE,CAAC","sourcesContent":["/*\n * THIS FILE WAS GENERATED BY \"@atproto/lex\". DO NOT EDIT.\n */\n\nimport { l } from \"@atproto/lex\";\nimport * as QueueDefs from \"./defs.defs.js\";\n\nconst $nsid = \"tools.ozone.queue.updateQueue\";\n\ntype $nsid = typeof $nsid;\n\nexport { $nsid };\n\nexport const $params = /*#__PURE__*/ l.params();\n\nexport type $Params = l.InferOutput<typeof $params>;\n\nexport const $input = /*#__PURE__*/ l.jsonPayload({\"queueId\":/*#__PURE__*/ l.integer(),\"name\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\"enabled\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.boolean()),\"description\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()),\"recommendedPolicies\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string(), )),\"recommendedLabels\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string(), )),\"strictAccess\":/*#__PURE__*/ l.optional(/*#__PURE__*/ l.boolean())});\n\nexport type $Input<B = l.BinaryData> = l.InferPayload<typeof $input, B>;\nexport type $InputBody<B = l.BinaryData> = l.InferPayloadBody<typeof $input, B>;\n\nexport const $output = /*#__PURE__*/ l.jsonPayload({\"queue\":/*#__PURE__*/ l.ref<QueueDefs.QueueView>((() => QueueDefs.queueView) as any)});\n\nexport type $Output<B = l.BinaryData> = l.InferPayload<typeof $output, B>;\nexport type $OutputBody<B = l.BinaryData> = l.InferPayloadBody<typeof $output, B>;\n\n/** Update queue properties. */\nconst main = /*#__PURE__*/ l.procedure($nsid, $params, $input, $output, [\"InvalidRecommendedPolicies\",\"ConflictingQueue\"]);\n\nexport { main };\n\nconst $lxm = $nsid;\n\ntype $lxm = typeof $lxm;\n\nexport { $lxm };\n"]}
@@ -12,6 +12,9 @@ export declare const $input: l.Payload<"application/json", l.ObjectSchema<{
12
12
  patternType: l.OptionalSchema<l.StringSchema<{}>>;
13
13
  actions: l.OptionalSchema<l.ArraySchema<l.StringSchema<{}>>>;
14
14
  reason: l.OptionalSchema<l.StringSchema<{}>>;
15
+ source: l.OptionalSchema<l.StringSchema<{
16
+ readonly maxLength: 128;
17
+ }>>;
15
18
  createdBy: l.OptionalSchema<l.StringSchema<{
16
19
  readonly format: "did";
17
20
  }>>;
@@ -35,6 +38,9 @@ declare const main: l.Procedure<"tools.ozone.safelink.queryRules", l.ParamsSchem
35
38
  patternType: l.OptionalSchema<l.StringSchema<{}>>;
36
39
  actions: l.OptionalSchema<l.ArraySchema<l.StringSchema<{}>>>;
37
40
  reason: l.OptionalSchema<l.StringSchema<{}>>;
41
+ source: l.OptionalSchema<l.StringSchema<{
42
+ readonly maxLength: 128;
43
+ }>>;
38
44
  createdBy: l.OptionalSchema<l.StringSchema<{
39
45
  readonly format: "did";
40
46
  }>>;
@@ -1 +1 @@
1
- {"version":3,"file":"queryRules.defs.d.ts","sourceRoot":"","sources":["../../../../../src/lexicons/tools/ozone/safelink/queryRules.defs.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAE/C,QAAA,MAAM,KAAK,oCAAoC,CAAC;AAEhD,KAAK,KAAK,GAAG,OAAO,KAAK,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,eAAO,MAAM,OAAO,oBAA2B,CAAC;AAEhD,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,OAAO,CAAC,CAAC;AAEpD,eAAO,MAAM,MAAM;;;;;;;;;;;;;GAAktB,CAAC;AAEtuB,MAAM,MAAM,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC;AACxE,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,gBAAgB,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC;AAEhF,eAAO,MAAM,OAAO;;;GAA6M,CAAC;AAElO,MAAM,MAAM,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;AAC1E,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,gBAAgB,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;AAElF,6BAA6B;AAC7B,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;eAA6D,CAAC;AAExE,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhB,QAAA,MAAM,IAAI,oCAAQ,CAAC;AAEnB,KAAK,IAAI,GAAG,OAAO,IAAI,CAAC;AAExB,OAAO,EAAE,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"queryRules.defs.d.ts","sourceRoot":"","sources":["../../../../../src/lexicons/tools/ozone/safelink/queryRules.defs.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACjC,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAE/C,QAAA,MAAM,KAAK,oCAAoC,CAAC;AAEhD,KAAK,KAAK,GAAG,OAAO,KAAK,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,eAAO,MAAM,OAAO,oBAA2B,CAAC;AAEhD,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,OAAO,CAAC,CAAC;AAEpD,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;GAA+xB,CAAC;AAEnzB,MAAM,MAAM,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC;AACxE,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,gBAAgB,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC;AAEhF,eAAO,MAAM,OAAO;;;GAA6M,CAAC;AAElO,MAAM,MAAM,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;AAC1E,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,gBAAgB,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;AAElF,6BAA6B;AAC7B,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;eAA6D,CAAC;AAExE,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhB,QAAA,MAAM,IAAI,oCAAQ,CAAC;AAEnB,KAAK,IAAI,GAAG,OAAO,IAAI,CAAC;AAExB,OAAO,EAAE,IAAI,EAAE,CAAC"}
@@ -6,7 +6,7 @@ import * as SafelinkDefs from "./defs.defs.js";
6
6
  const $nsid = "tools.ozone.safelink.queryRules";
7
7
  export { $nsid };
8
8
  export const $params = /*#__PURE__*/ l.params();
9
- export const $input = /*#__PURE__*/ l.jsonPayload({ "cursor": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()), "limit": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.withDefault(/*#__PURE__*/ l.integer({ "minimum": 1, "maximum": 100 }), 50)), "urls": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "patternType": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()), "actions": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "reason": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()), "createdBy": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({ "format": "did" })), "sortDirection": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.withDefault(/*#__PURE__*/ l.string(), "desc")) });
9
+ export const $input = /*#__PURE__*/ l.jsonPayload({ "cursor": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()), "limit": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.withDefault(/*#__PURE__*/ l.integer({ "minimum": 1, "maximum": 100 }), 50)), "urls": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "patternType": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()), "actions": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.array(/*#__PURE__*/ l.string())), "reason": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()), "source": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({ "maxLength": 128 })), "createdBy": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string({ "format": "did" })), "sortDirection": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.withDefault(/*#__PURE__*/ l.string(), "desc")) });
10
10
  export const $output = /*#__PURE__*/ l.jsonPayload({ "cursor": /*#__PURE__*/ l.optional(/*#__PURE__*/ l.string()), "rules": /*#__PURE__*/ l.array(/*#__PURE__*/ l.ref((() => SafelinkDefs.urlRule))) });
11
11
  /** Query URL safety rules */
12
12
  const main = /*#__PURE__*/ l.procedure($nsid, $params, $input, $output);