@grove-dev/core 0.1.5 → 0.2.5

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.
package/dist/schema.d.ts CHANGED
@@ -1,4 +1,28 @@
1
1
  import { z } from "zod";
2
+ /**
3
+ * A blueprint defines the shape and behavior of a Grove site.
4
+ *
5
+ * V1 ships three fixed blueprints. They are not extensible — no custom
6
+ * blueprint API in V1.
7
+ */
8
+ export declare const blueprintSchema: z.ZodEnum<{
9
+ "project-directory": "project-directory";
10
+ "resource-hub": "resource-hub";
11
+ "ecosystem-map": "ecosystem-map";
12
+ }>;
13
+ export type Blueprint = z.infer<typeof blueprintSchema>;
14
+ /**
15
+ * Each blueprint is bound to a single resource kind. Records are
16
+ * discriminated by `kind`, which must match the blueprint of the site
17
+ * that owns them.
18
+ */
19
+ export declare const resourceKindSchema: z.ZodEnum<{
20
+ project: "project";
21
+ resource: "resource";
22
+ entity: "entity";
23
+ }>;
24
+ export type ResourceKind = z.infer<typeof resourceKindSchema>;
25
+ export declare const blueprintKind: Record<Blueprint, ResourceKind>;
2
26
  export declare const healthStatusSchema: z.ZodEnum<{
3
27
  active: "active";
4
28
  mature: "mature";
@@ -19,6 +43,7 @@ export declare const decisionVisibilitySchema: z.ZodEnum<{
19
43
  hide: "hide";
20
44
  remove: "remove";
21
45
  }>;
46
+ export type DecisionVisibility = z.infer<typeof decisionVisibilitySchema>;
22
47
  export declare const healthTierSchema: z.ZodEnum<{
23
48
  curated: "curated";
24
49
  listed: "listed";
@@ -35,16 +60,31 @@ export declare const projectTypeSchema: z.ZodEnum<{
35
60
  demo: "demo";
36
61
  template: "template";
37
62
  }>;
38
- export declare const difficultySchema: z.ZodEnum<{
39
- beginner: "beginner";
40
- intermediate: "intermediate";
41
- advanced: "advanced";
63
+ export declare const resourceTypeSchema: z.ZodEnum<{
64
+ tool: "tool";
65
+ guide: "guide";
66
+ comparison: "comparison";
67
+ link: "link";
68
+ explainer: "explainer";
69
+ video: "video";
70
+ article: "article";
71
+ course: "course";
72
+ book: "book";
73
+ podcast: "podcast";
74
+ other: "other";
42
75
  }>;
43
- export declare const codebaseSizeSchema: z.ZodEnum<{
44
- small: "small";
45
- medium: "medium";
46
- large: "large";
47
- huge: "huge";
76
+ export declare const entityTypeSchema: z.ZodEnum<{
77
+ other: "other";
78
+ company: "company";
79
+ organization: "organization";
80
+ community: "community";
81
+ school: "school";
82
+ university: "university";
83
+ "research-lab": "research-lab";
84
+ agency: "agency";
85
+ service: "service";
86
+ product: "product";
87
+ person: "person";
48
88
  }>;
49
89
  export declare const appLabelSchema: z.ZodEnum<{
50
90
  mature: "mature";
@@ -60,45 +100,12 @@ export declare const scoreSchema: z.ZodObject<{
60
100
  docs: z.ZodOptional<z.ZodNumber>;
61
101
  overall: z.ZodOptional<z.ZodNumber>;
62
102
  }, z.core.$strip>;
63
- export declare const distributionChannelTypeSchema: z.ZodEnum<{
64
- demo: "demo";
65
- docs: "docs";
66
- "app-store": "app-store";
67
- "play-store": "play-store";
68
- fdroid: "fdroid";
69
- "github-releases": "github-releases";
70
- apk: "apk";
71
- testflight: "testflight";
72
- website: "website";
73
- snapcraft: "snapcraft";
74
- flathub: "flathub";
75
- "microsoft-store": "microsoft-store";
76
- "package-registry": "package-registry";
77
- other: "other";
78
- }>;
79
- export declare const distributionChannelSchema: z.ZodObject<{
80
- type: z.ZodEnum<{
81
- demo: "demo";
82
- docs: "docs";
83
- "app-store": "app-store";
84
- "play-store": "play-store";
85
- fdroid: "fdroid";
86
- "github-releases": "github-releases";
87
- apk: "apk";
88
- testflight: "testflight";
89
- website: "website";
90
- snapcraft: "snapcraft";
91
- flathub: "flathub";
92
- "microsoft-store": "microsoft-store";
93
- "package-registry": "package-registry";
94
- other: "other";
95
- }>;
96
- platform: z.ZodOptional<z.ZodString>;
97
- label: z.ZodOptional<z.ZodString>;
98
- url: z.ZodString;
99
- verified: z.ZodOptional<z.ZodBoolean>;
100
- notes: z.ZodOptional<z.ZodString>;
101
- }, z.core.$strip>;
103
+ export declare const linksSchema: z.ZodDefault<z.ZodObject<{
104
+ github: z.ZodOptional<z.ZodString>;
105
+ website: z.ZodOptional<z.ZodString>;
106
+ docs: z.ZodOptional<z.ZodString>;
107
+ source: z.ZodOptional<z.ZodString>;
108
+ }, z.core.$catchall<z.ZodString>>>;
102
109
  export declare const githubLicenseSchema: z.ZodOptional<z.ZodNullable<z.ZodObject<{
103
110
  key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
104
111
  name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
@@ -140,396 +147,6 @@ export declare const githubRepositorySchema: z.ZodObject<{
140
147
  updated_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
141
148
  pushed_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
142
149
  }, z.core.$loose>;
143
- export declare const stackTechnologySchema: z.ZodObject<{
144
- id: z.ZodString;
145
- role: z.ZodOptional<z.ZodString>;
146
- }, z.core.$loose>;
147
- export declare const stackSchema: z.ZodObject<{
148
- primary: z.ZodString;
149
- families: z.ZodOptional<z.ZodArray<z.ZodString>>;
150
- technologies: z.ZodOptional<z.ZodArray<z.ZodObject<{
151
- id: z.ZodString;
152
- role: z.ZodOptional<z.ZodString>;
153
- }, z.core.$loose>>>;
154
- }, z.core.$loose>;
155
- export declare const stackRefSchema: z.ZodObject<{
156
- id: z.ZodString;
157
- name: z.ZodString;
158
- family: z.ZodOptional<z.ZodString>;
159
- languages: z.ZodOptional<z.ZodArray<z.ZodString>>;
160
- platforms: z.ZodOptional<z.ZodArray<z.ZodString>>;
161
- icon: z.ZodOptional<z.ZodString>;
162
- status: z.ZodOptional<z.ZodEnum<{
163
- live: "live";
164
- expanding: "expanding";
165
- planned: "planned";
166
- }>>;
167
- blurb: z.ZodOptional<z.ZodString>;
168
- }, z.core.$strip>;
169
- export declare const platformRefSchema: z.ZodObject<{
170
- id: z.ZodString;
171
- name: z.ZodString;
172
- icon: z.ZodOptional<z.ZodString>;
173
- }, z.core.$strip>;
174
- export declare const categoryRefSchema: z.ZodObject<{
175
- id: z.ZodString;
176
- name: z.ZodString;
177
- blurb: z.ZodOptional<z.ZodString>;
178
- }, z.core.$strip>;
179
- export declare const distributionChannelRefSchema: z.ZodObject<{
180
- id: z.ZodEnum<{
181
- demo: "demo";
182
- docs: "docs";
183
- "app-store": "app-store";
184
- "play-store": "play-store";
185
- fdroid: "fdroid";
186
- "github-releases": "github-releases";
187
- apk: "apk";
188
- testflight: "testflight";
189
- website: "website";
190
- snapcraft: "snapcraft";
191
- flathub: "flathub";
192
- "microsoft-store": "microsoft-store";
193
- "package-registry": "package-registry";
194
- other: "other";
195
- }>;
196
- name: z.ZodString;
197
- platforms: z.ZodOptional<z.ZodArray<z.ZodString>>;
198
- }, z.core.$strip>;
199
- export declare const itemSchema: z.ZodObject<{
200
- id: z.ZodString;
201
- name: z.ZodString;
202
- description: z.ZodDefault<z.ZodString>;
203
- links: z.ZodDefault<z.ZodObject<{
204
- github: z.ZodOptional<z.ZodString>;
205
- website: z.ZodOptional<z.ZodString>;
206
- docs: z.ZodOptional<z.ZodString>;
207
- source: z.ZodOptional<z.ZodString>;
208
- }, z.core.$catchall<z.ZodString>>>;
209
- source: z.ZodDefault<z.ZodObject<{
210
- type: z.ZodDefault<z.ZodEnum<{
211
- markdown: "markdown";
212
- manual: "manual";
213
- "github-topic": "github-topic";
214
- "awesome-list": "awesome-list";
215
- submit: "submit";
216
- }>>;
217
- file: z.ZodOptional<z.ZodString>;
218
- line: z.ZodOptional<z.ZodNumber>;
219
- url: z.ZodOptional<z.ZodString>;
220
- provider: z.ZodOptional<z.ZodString>;
221
- owner: z.ZodOptional<z.ZodString>;
222
- repo: z.ZodOptional<z.ZodString>;
223
- }, z.core.$strip>>;
224
- taxonomy: z.ZodDefault<z.ZodObject<{
225
- category: z.ZodDefault<z.ZodString>;
226
- tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
227
- language: z.ZodOptional<z.ZodString>;
228
- stack: z.ZodOptional<z.ZodString>;
229
- stacks: z.ZodDefault<z.ZodArray<z.ZodString>>;
230
- platforms: z.ZodDefault<z.ZodArray<z.ZodString>>;
231
- }, z.core.$strip>>;
232
- labels: z.ZodDefault<z.ZodArray<z.ZodEnum<{
233
- mature: "mature";
234
- new: "new";
235
- hot: "hot";
236
- featured: "featured";
237
- }>>>;
238
- lenses: z.ZodDefault<z.ZodArray<z.ZodString>>;
239
- distribution: z.ZodDefault<z.ZodObject<{
240
- channels: z.ZodDefault<z.ZodArray<z.ZodObject<{
241
- type: z.ZodEnum<{
242
- demo: "demo";
243
- docs: "docs";
244
- "app-store": "app-store";
245
- "play-store": "play-store";
246
- fdroid: "fdroid";
247
- "github-releases": "github-releases";
248
- apk: "apk";
249
- testflight: "testflight";
250
- website: "website";
251
- snapcraft: "snapcraft";
252
- flathub: "flathub";
253
- "microsoft-store": "microsoft-store";
254
- "package-registry": "package-registry";
255
- other: "other";
256
- }>;
257
- platform: z.ZodOptional<z.ZodString>;
258
- label: z.ZodOptional<z.ZodString>;
259
- url: z.ZodString;
260
- verified: z.ZodOptional<z.ZodBoolean>;
261
- notes: z.ZodOptional<z.ZodString>;
262
- }, z.core.$strip>>>;
263
- }, z.core.$strip>>;
264
- curation: z.ZodDefault<z.ZodObject<{
265
- projectType: z.ZodOptional<z.ZodEnum<{
266
- historical: "historical";
267
- "real-app": "real-app";
268
- production: "production";
269
- reference: "reference";
270
- library: "library";
271
- tool: "tool";
272
- demo: "demo";
273
- template: "template";
274
- }>>;
275
- difficulty: z.ZodOptional<z.ZodEnum<{
276
- beginner: "beginner";
277
- intermediate: "intermediate";
278
- advanced: "advanced";
279
- }>>;
280
- codebaseSize: z.ZodOptional<z.ZodEnum<{
281
- small: "small";
282
- medium: "medium";
283
- large: "large";
284
- huge: "huge";
285
- }>>;
286
- stateManagement: z.ZodOptional<z.ZodString>;
287
- backend: z.ZodOptional<z.ZodString>;
288
- architecture: z.ZodOptional<z.ZodString>;
289
- bestFor: z.ZodDefault<z.ZodArray<z.ZodString>>;
290
- whyListed: z.ZodDefault<z.ZodArray<z.ZodString>>;
291
- caveats: z.ZodDefault<z.ZodArray<z.ZodString>>;
292
- goodFirstIssues: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
293
- contributionGuide: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
294
- launchedBy: z.ZodOptional<z.ZodString>;
295
- launchAsk: z.ZodDefault<z.ZodArray<z.ZodString>>;
296
- reviewed: z.ZodOptional<z.ZodBoolean>;
297
- reviewedBy: z.ZodOptional<z.ZodString>;
298
- reviewedAt: z.ZodOptional<z.ZodString>;
299
- notes: z.ZodOptional<z.ZodString>;
300
- scores: z.ZodDefault<z.ZodObject<{
301
- activity: z.ZodOptional<z.ZodNumber>;
302
- maturity: z.ZodOptional<z.ZodNumber>;
303
- learning: z.ZodOptional<z.ZodNumber>;
304
- contribution: z.ZodOptional<z.ZodNumber>;
305
- docs: z.ZodOptional<z.ZodNumber>;
306
- overall: z.ZodOptional<z.ZodNumber>;
307
- }, z.core.$strip>>;
308
- }, z.core.$strip>>;
309
- }, z.core.$strip>;
310
- export declare const itemsFileSchema: z.ZodUnion<readonly [z.ZodArray<z.ZodObject<{
311
- id: z.ZodString;
312
- name: z.ZodString;
313
- description: z.ZodDefault<z.ZodString>;
314
- links: z.ZodDefault<z.ZodObject<{
315
- github: z.ZodOptional<z.ZodString>;
316
- website: z.ZodOptional<z.ZodString>;
317
- docs: z.ZodOptional<z.ZodString>;
318
- source: z.ZodOptional<z.ZodString>;
319
- }, z.core.$catchall<z.ZodString>>>;
320
- source: z.ZodDefault<z.ZodObject<{
321
- type: z.ZodDefault<z.ZodEnum<{
322
- markdown: "markdown";
323
- manual: "manual";
324
- "github-topic": "github-topic";
325
- "awesome-list": "awesome-list";
326
- submit: "submit";
327
- }>>;
328
- file: z.ZodOptional<z.ZodString>;
329
- line: z.ZodOptional<z.ZodNumber>;
330
- url: z.ZodOptional<z.ZodString>;
331
- provider: z.ZodOptional<z.ZodString>;
332
- owner: z.ZodOptional<z.ZodString>;
333
- repo: z.ZodOptional<z.ZodString>;
334
- }, z.core.$strip>>;
335
- taxonomy: z.ZodDefault<z.ZodObject<{
336
- category: z.ZodDefault<z.ZodString>;
337
- tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
338
- language: z.ZodOptional<z.ZodString>;
339
- stack: z.ZodOptional<z.ZodString>;
340
- stacks: z.ZodDefault<z.ZodArray<z.ZodString>>;
341
- platforms: z.ZodDefault<z.ZodArray<z.ZodString>>;
342
- }, z.core.$strip>>;
343
- labels: z.ZodDefault<z.ZodArray<z.ZodEnum<{
344
- mature: "mature";
345
- new: "new";
346
- hot: "hot";
347
- featured: "featured";
348
- }>>>;
349
- lenses: z.ZodDefault<z.ZodArray<z.ZodString>>;
350
- distribution: z.ZodDefault<z.ZodObject<{
351
- channels: z.ZodDefault<z.ZodArray<z.ZodObject<{
352
- type: z.ZodEnum<{
353
- demo: "demo";
354
- docs: "docs";
355
- "app-store": "app-store";
356
- "play-store": "play-store";
357
- fdroid: "fdroid";
358
- "github-releases": "github-releases";
359
- apk: "apk";
360
- testflight: "testflight";
361
- website: "website";
362
- snapcraft: "snapcraft";
363
- flathub: "flathub";
364
- "microsoft-store": "microsoft-store";
365
- "package-registry": "package-registry";
366
- other: "other";
367
- }>;
368
- platform: z.ZodOptional<z.ZodString>;
369
- label: z.ZodOptional<z.ZodString>;
370
- url: z.ZodString;
371
- verified: z.ZodOptional<z.ZodBoolean>;
372
- notes: z.ZodOptional<z.ZodString>;
373
- }, z.core.$strip>>>;
374
- }, z.core.$strip>>;
375
- curation: z.ZodDefault<z.ZodObject<{
376
- projectType: z.ZodOptional<z.ZodEnum<{
377
- historical: "historical";
378
- "real-app": "real-app";
379
- production: "production";
380
- reference: "reference";
381
- library: "library";
382
- tool: "tool";
383
- demo: "demo";
384
- template: "template";
385
- }>>;
386
- difficulty: z.ZodOptional<z.ZodEnum<{
387
- beginner: "beginner";
388
- intermediate: "intermediate";
389
- advanced: "advanced";
390
- }>>;
391
- codebaseSize: z.ZodOptional<z.ZodEnum<{
392
- small: "small";
393
- medium: "medium";
394
- large: "large";
395
- huge: "huge";
396
- }>>;
397
- stateManagement: z.ZodOptional<z.ZodString>;
398
- backend: z.ZodOptional<z.ZodString>;
399
- architecture: z.ZodOptional<z.ZodString>;
400
- bestFor: z.ZodDefault<z.ZodArray<z.ZodString>>;
401
- whyListed: z.ZodDefault<z.ZodArray<z.ZodString>>;
402
- caveats: z.ZodDefault<z.ZodArray<z.ZodString>>;
403
- goodFirstIssues: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
404
- contributionGuide: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
405
- launchedBy: z.ZodOptional<z.ZodString>;
406
- launchAsk: z.ZodDefault<z.ZodArray<z.ZodString>>;
407
- reviewed: z.ZodOptional<z.ZodBoolean>;
408
- reviewedBy: z.ZodOptional<z.ZodString>;
409
- reviewedAt: z.ZodOptional<z.ZodString>;
410
- notes: z.ZodOptional<z.ZodString>;
411
- scores: z.ZodDefault<z.ZodObject<{
412
- activity: z.ZodOptional<z.ZodNumber>;
413
- maturity: z.ZodOptional<z.ZodNumber>;
414
- learning: z.ZodOptional<z.ZodNumber>;
415
- contribution: z.ZodOptional<z.ZodNumber>;
416
- docs: z.ZodOptional<z.ZodNumber>;
417
- overall: z.ZodOptional<z.ZodNumber>;
418
- }, z.core.$strip>>;
419
- }, z.core.$strip>>;
420
- }, z.core.$strip>>, z.ZodObject<{
421
- items: z.ZodArray<z.ZodObject<{
422
- id: z.ZodString;
423
- name: z.ZodString;
424
- description: z.ZodDefault<z.ZodString>;
425
- links: z.ZodDefault<z.ZodObject<{
426
- github: z.ZodOptional<z.ZodString>;
427
- website: z.ZodOptional<z.ZodString>;
428
- docs: z.ZodOptional<z.ZodString>;
429
- source: z.ZodOptional<z.ZodString>;
430
- }, z.core.$catchall<z.ZodString>>>;
431
- source: z.ZodDefault<z.ZodObject<{
432
- type: z.ZodDefault<z.ZodEnum<{
433
- markdown: "markdown";
434
- manual: "manual";
435
- "github-topic": "github-topic";
436
- "awesome-list": "awesome-list";
437
- submit: "submit";
438
- }>>;
439
- file: z.ZodOptional<z.ZodString>;
440
- line: z.ZodOptional<z.ZodNumber>;
441
- url: z.ZodOptional<z.ZodString>;
442
- provider: z.ZodOptional<z.ZodString>;
443
- owner: z.ZodOptional<z.ZodString>;
444
- repo: z.ZodOptional<z.ZodString>;
445
- }, z.core.$strip>>;
446
- taxonomy: z.ZodDefault<z.ZodObject<{
447
- category: z.ZodDefault<z.ZodString>;
448
- tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
449
- language: z.ZodOptional<z.ZodString>;
450
- stack: z.ZodOptional<z.ZodString>;
451
- stacks: z.ZodDefault<z.ZodArray<z.ZodString>>;
452
- platforms: z.ZodDefault<z.ZodArray<z.ZodString>>;
453
- }, z.core.$strip>>;
454
- labels: z.ZodDefault<z.ZodArray<z.ZodEnum<{
455
- mature: "mature";
456
- new: "new";
457
- hot: "hot";
458
- featured: "featured";
459
- }>>>;
460
- lenses: z.ZodDefault<z.ZodArray<z.ZodString>>;
461
- distribution: z.ZodDefault<z.ZodObject<{
462
- channels: z.ZodDefault<z.ZodArray<z.ZodObject<{
463
- type: z.ZodEnum<{
464
- demo: "demo";
465
- docs: "docs";
466
- "app-store": "app-store";
467
- "play-store": "play-store";
468
- fdroid: "fdroid";
469
- "github-releases": "github-releases";
470
- apk: "apk";
471
- testflight: "testflight";
472
- website: "website";
473
- snapcraft: "snapcraft";
474
- flathub: "flathub";
475
- "microsoft-store": "microsoft-store";
476
- "package-registry": "package-registry";
477
- other: "other";
478
- }>;
479
- platform: z.ZodOptional<z.ZodString>;
480
- label: z.ZodOptional<z.ZodString>;
481
- url: z.ZodString;
482
- verified: z.ZodOptional<z.ZodBoolean>;
483
- notes: z.ZodOptional<z.ZodString>;
484
- }, z.core.$strip>>>;
485
- }, z.core.$strip>>;
486
- curation: z.ZodDefault<z.ZodObject<{
487
- projectType: z.ZodOptional<z.ZodEnum<{
488
- historical: "historical";
489
- "real-app": "real-app";
490
- production: "production";
491
- reference: "reference";
492
- library: "library";
493
- tool: "tool";
494
- demo: "demo";
495
- template: "template";
496
- }>>;
497
- difficulty: z.ZodOptional<z.ZodEnum<{
498
- beginner: "beginner";
499
- intermediate: "intermediate";
500
- advanced: "advanced";
501
- }>>;
502
- codebaseSize: z.ZodOptional<z.ZodEnum<{
503
- small: "small";
504
- medium: "medium";
505
- large: "large";
506
- huge: "huge";
507
- }>>;
508
- stateManagement: z.ZodOptional<z.ZodString>;
509
- backend: z.ZodOptional<z.ZodString>;
510
- architecture: z.ZodOptional<z.ZodString>;
511
- bestFor: z.ZodDefault<z.ZodArray<z.ZodString>>;
512
- whyListed: z.ZodDefault<z.ZodArray<z.ZodString>>;
513
- caveats: z.ZodDefault<z.ZodArray<z.ZodString>>;
514
- goodFirstIssues: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
515
- contributionGuide: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
516
- launchedBy: z.ZodOptional<z.ZodString>;
517
- launchAsk: z.ZodDefault<z.ZodArray<z.ZodString>>;
518
- reviewed: z.ZodOptional<z.ZodBoolean>;
519
- reviewedBy: z.ZodOptional<z.ZodString>;
520
- reviewedAt: z.ZodOptional<z.ZodString>;
521
- notes: z.ZodOptional<z.ZodString>;
522
- scores: z.ZodDefault<z.ZodObject<{
523
- activity: z.ZodOptional<z.ZodNumber>;
524
- maturity: z.ZodOptional<z.ZodNumber>;
525
- learning: z.ZodOptional<z.ZodNumber>;
526
- contribution: z.ZodOptional<z.ZodNumber>;
527
- docs: z.ZodOptional<z.ZodNumber>;
528
- overall: z.ZodOptional<z.ZodNumber>;
529
- }, z.core.$strip>>;
530
- }, z.core.$strip>>;
531
- }, z.core.$strip>>;
532
- }, z.core.$strip>]>;
533
150
  export declare const githubMetadataSchema: z.ZodObject<{
534
151
  fullName: z.ZodOptional<z.ZodString>;
535
152
  stars: z.ZodDefault<z.ZodNumber>;
@@ -560,6 +177,48 @@ export declare const githubMetadataSchema: z.ZodObject<{
560
177
  commits: z.ZodNumber;
561
178
  }, z.core.$strip>]>>>;
562
179
  }, z.core.$strip>;
180
+ export declare const healthBlockSchema: z.ZodObject<{
181
+ status: z.ZodDefault<z.ZodEnum<{
182
+ active: "active";
183
+ mature: "mature";
184
+ stale: "stale";
185
+ inactive: "inactive";
186
+ archived: "archived";
187
+ unknown: "unknown";
188
+ historical: "historical";
189
+ needs_review: "needs_review";
190
+ quiet: "quiet";
191
+ unavailable: "unavailable";
192
+ }>>;
193
+ maturity: z.ZodDefault<z.ZodEnum<{
194
+ mature: "mature";
195
+ unknown: "unknown";
196
+ experimental: "experimental";
197
+ useful: "useful";
198
+ }>>;
199
+ tier: z.ZodDefault<z.ZodEnum<{
200
+ curated: "curated";
201
+ listed: "listed";
202
+ experimental: "experimental";
203
+ hidden: "hidden";
204
+ }>>;
205
+ visibility: z.ZodDefault<z.ZodEnum<{
206
+ historical: "historical";
207
+ needs_review: "needs_review";
208
+ highlight: "highlight";
209
+ keep: "keep";
210
+ hide: "hide";
211
+ remove: "remove";
212
+ }>>;
213
+ cleanupCandidate: z.ZodDefault<z.ZodBoolean>;
214
+ staleReason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
215
+ confidence: z.ZodDefault<z.ZodEnum<{
216
+ low: "low";
217
+ medium: "medium";
218
+ high: "high";
219
+ }>>;
220
+ reasons: z.ZodDefault<z.ZodArray<z.ZodString>>;
221
+ }, z.core.$strip>;
563
222
  export declare const healthEntrySchema: z.ZodObject<{
564
223
  id: z.ZodString;
565
224
  github: z.ZodOptional<z.ZodObject<{
@@ -593,7 +252,7 @@ export declare const healthEntrySchema: z.ZodObject<{
593
252
  }, z.core.$strip>]>>>;
594
253
  }, z.core.$strip>>;
595
254
  health: z.ZodObject<{
596
- status: z.ZodEnum<{
255
+ status: z.ZodDefault<z.ZodEnum<{
597
256
  active: "active";
598
257
  mature: "mature";
599
258
  stale: "stale";
@@ -604,7 +263,7 @@ export declare const healthEntrySchema: z.ZodObject<{
604
263
  needs_review: "needs_review";
605
264
  quiet: "quiet";
606
265
  unavailable: "unavailable";
607
- }>;
266
+ }>>;
608
267
  maturity: z.ZodDefault<z.ZodEnum<{
609
268
  mature: "mature";
610
269
  unknown: "unknown";
@@ -628,8 +287,8 @@ export declare const healthEntrySchema: z.ZodObject<{
628
287
  cleanupCandidate: z.ZodDefault<z.ZodBoolean>;
629
288
  staleReason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
630
289
  confidence: z.ZodDefault<z.ZodEnum<{
631
- medium: "medium";
632
290
  low: "low";
291
+ medium: "medium";
633
292
  high: "high";
634
293
  }>>;
635
294
  reasons: z.ZodDefault<z.ZodArray<z.ZodString>>;
@@ -668,7 +327,7 @@ export declare const healthFileSchema: z.ZodUnion<readonly [z.ZodArray<z.ZodObje
668
327
  }, z.core.$strip>]>>>;
669
328
  }, z.core.$strip>>;
670
329
  health: z.ZodObject<{
671
- status: z.ZodEnum<{
330
+ status: z.ZodDefault<z.ZodEnum<{
672
331
  active: "active";
673
332
  mature: "mature";
674
333
  stale: "stale";
@@ -679,7 +338,7 @@ export declare const healthFileSchema: z.ZodUnion<readonly [z.ZodArray<z.ZodObje
679
338
  needs_review: "needs_review";
680
339
  quiet: "quiet";
681
340
  unavailable: "unavailable";
682
- }>;
341
+ }>>;
683
342
  maturity: z.ZodDefault<z.ZodEnum<{
684
343
  mature: "mature";
685
344
  unknown: "unknown";
@@ -703,8 +362,8 @@ export declare const healthFileSchema: z.ZodUnion<readonly [z.ZodArray<z.ZodObje
703
362
  cleanupCandidate: z.ZodDefault<z.ZodBoolean>;
704
363
  staleReason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
705
364
  confidence: z.ZodDefault<z.ZodEnum<{
706
- medium: "medium";
707
365
  low: "low";
366
+ medium: "medium";
708
367
  high: "high";
709
368
  }>>;
710
369
  reasons: z.ZodDefault<z.ZodArray<z.ZodString>>;
@@ -743,7 +402,7 @@ export declare const healthFileSchema: z.ZodUnion<readonly [z.ZodArray<z.ZodObje
743
402
  }, z.core.$strip>]>>>;
744
403
  }, z.core.$strip>>;
745
404
  health: z.ZodObject<{
746
- status: z.ZodEnum<{
405
+ status: z.ZodDefault<z.ZodEnum<{
747
406
  active: "active";
748
407
  mature: "mature";
749
408
  stale: "stale";
@@ -754,7 +413,7 @@ export declare const healthFileSchema: z.ZodUnion<readonly [z.ZodArray<z.ZodObje
754
413
  needs_review: "needs_review";
755
414
  quiet: "quiet";
756
415
  unavailable: "unavailable";
757
- }>;
416
+ }>>;
758
417
  maturity: z.ZodDefault<z.ZodEnum<{
759
418
  mature: "mature";
760
419
  unknown: "unknown";
@@ -778,8 +437,8 @@ export declare const healthFileSchema: z.ZodUnion<readonly [z.ZodArray<z.ZodObje
778
437
  cleanupCandidate: z.ZodDefault<z.ZodBoolean>;
779
438
  staleReason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
780
439
  confidence: z.ZodDefault<z.ZodEnum<{
781
- medium: "medium";
782
440
  low: "low";
441
+ medium: "medium";
783
442
  high: "high";
784
443
  }>>;
785
444
  reasons: z.ZodDefault<z.ZodArray<z.ZodString>>;
@@ -848,141 +507,1217 @@ export declare const overridesFileSchema: z.ZodUnion<readonly [z.ZodArray<z.ZodO
848
507
  patch: z.ZodRecord<z.ZodString, z.ZodUnknown>;
849
508
  }, z.core.$strip>>;
850
509
  }, z.core.$strip>]>;
851
- export declare const curatedConfigSchema: z.ZodObject<{
510
+ export declare const projectRecordSchema: z.ZodObject<{
511
+ slug: z.ZodString;
512
+ description: z.ZodDefault<z.ZodString>;
513
+ category: z.ZodDefault<z.ZodString>;
514
+ tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
515
+ links: z.ZodDefault<z.ZodObject<{
516
+ github: z.ZodOptional<z.ZodString>;
517
+ website: z.ZodOptional<z.ZodString>;
518
+ docs: z.ZodOptional<z.ZodString>;
519
+ source: z.ZodOptional<z.ZodString>;
520
+ }, z.core.$catchall<z.ZodString>>>;
521
+ content: z.ZodOptional<z.ZodString>;
522
+ source: z.ZodDefault<z.ZodObject<{
523
+ type: z.ZodDefault<z.ZodEnum<{
524
+ manual: "manual";
525
+ "github-topic": "github-topic";
526
+ "awesome-list": "awesome-list";
527
+ submit: "submit";
528
+ import: "import";
529
+ }>>;
530
+ file: z.ZodOptional<z.ZodString>;
531
+ url: z.ZodOptional<z.ZodString>;
532
+ provider: z.ZodOptional<z.ZodString>;
533
+ owner: z.ZodOptional<z.ZodString>;
534
+ repo: z.ZodOptional<z.ZodString>;
535
+ }, z.core.$strip>>;
536
+ curation: z.ZodDefault<z.ZodObject<{
537
+ reviewed: z.ZodDefault<z.ZodBoolean>;
538
+ reviewedBy: z.ZodOptional<z.ZodString>;
539
+ reviewedAt: z.ZodOptional<z.ZodString>;
540
+ notes: z.ZodOptional<z.ZodString>;
541
+ labels: z.ZodDefault<z.ZodArray<z.ZodEnum<{
542
+ mature: "mature";
543
+ new: "new";
544
+ hot: "hot";
545
+ featured: "featured";
546
+ }>>>;
547
+ lenses: z.ZodDefault<z.ZodArray<z.ZodString>>;
548
+ }, z.core.$strip>>;
549
+ scores: z.ZodDefault<z.ZodObject<{
550
+ activity: z.ZodOptional<z.ZodNumber>;
551
+ maturity: z.ZodOptional<z.ZodNumber>;
552
+ learning: z.ZodOptional<z.ZodNumber>;
553
+ contribution: z.ZodOptional<z.ZodNumber>;
554
+ docs: z.ZodOptional<z.ZodNumber>;
555
+ overall: z.ZodOptional<z.ZodNumber>;
556
+ }, z.core.$strip>>;
557
+ visibility: z.ZodDefault<z.ZodEnum<{
558
+ historical: "historical";
559
+ needs_review: "needs_review";
560
+ highlight: "highlight";
561
+ keep: "keep";
562
+ hide: "hide";
563
+ remove: "remove";
564
+ }>>;
565
+ kind: z.ZodLiteral<"project">;
852
566
  name: z.ZodString;
853
- tagline: z.ZodDefault<z.ZodString>;
854
- description: z.ZodOptional<z.ZodString>;
855
- siteUrl: z.ZodOptional<z.ZodString>;
567
+ projectType: z.ZodOptional<z.ZodEnum<{
568
+ historical: "historical";
569
+ "real-app": "real-app";
570
+ production: "production";
571
+ reference: "reference";
572
+ library: "library";
573
+ tool: "tool";
574
+ demo: "demo";
575
+ template: "template";
576
+ }>>;
577
+ stack: z.ZodOptional<z.ZodString>;
578
+ stacks: z.ZodDefault<z.ZodArray<z.ZodString>>;
579
+ platforms: z.ZodDefault<z.ZodArray<z.ZodString>>;
580
+ difficulty: z.ZodOptional<z.ZodEnum<{
581
+ beginner: "beginner";
582
+ intermediate: "intermediate";
583
+ advanced: "advanced";
584
+ }>>;
585
+ codebaseSize: z.ZodOptional<z.ZodEnum<{
586
+ medium: "medium";
587
+ small: "small";
588
+ large: "large";
589
+ huge: "huge";
590
+ }>>;
856
591
  repoUrl: z.ZodOptional<z.ZodString>;
857
- itemLabel: z.ZodDefault<z.ZodString>;
858
- paths: z.ZodDefault<z.ZodObject<{
859
- sourcesDir: z.ZodDefault<z.ZodString>;
860
- dataDir: z.ZodDefault<z.ZodString>;
861
- contentDir: z.ZodDefault<z.ZodString>;
862
- appsDir: z.ZodDefault<z.ZodString>;
863
- taxonomyDir: z.ZodDefault<z.ZodString>;
864
- generatedDir: z.ZodDefault<z.ZodString>;
865
- items: z.ZodDefault<z.ZodString>;
866
- health: z.ZodDefault<z.ZodString>;
867
- decisions: z.ZodDefault<z.ZodString>;
868
- overrides: z.ZodDefault<z.ZodString>;
592
+ logoUrl: z.ZodOptional<z.ZodString>;
593
+ bestFor: z.ZodDefault<z.ZodArray<z.ZodString>>;
594
+ whyListed: z.ZodDefault<z.ZodArray<z.ZodString>>;
595
+ caveats: z.ZodDefault<z.ZodArray<z.ZodString>>;
596
+ distribution: z.ZodDefault<z.ZodObject<{
597
+ channels: z.ZodDefault<z.ZodArray<z.ZodObject<{
598
+ type: z.ZodString;
599
+ platform: z.ZodOptional<z.ZodString>;
600
+ label: z.ZodOptional<z.ZodString>;
601
+ url: z.ZodString;
602
+ verified: z.ZodOptional<z.ZodBoolean>;
603
+ notes: z.ZodOptional<z.ZodString>;
604
+ }, z.core.$loose>>>;
869
605
  }, z.core.$strip>>;
870
- }, z.core.$strip>;
871
- export type HealthStatus = z.infer<typeof healthStatusSchema>;
872
- export type DecisionVisibility = z.infer<typeof decisionVisibilitySchema>;
873
- export type HealthTier = z.infer<typeof healthTierSchema>;
874
- export type ProjectType = z.infer<typeof projectTypeSchema>;
875
- export type Difficulty = z.infer<typeof difficultySchema>;
876
- export type CodebaseSize = z.infer<typeof codebaseSizeSchema>;
877
- export type AppLabel = z.infer<typeof appLabelSchema>;
878
- export type Score = z.infer<typeof scoreSchema>;
879
- export type DistributionChannelType = z.infer<typeof distributionChannelTypeSchema>;
880
- export type DistributionChannel = z.infer<typeof distributionChannelSchema>;
881
- export type GithubMetadata = z.infer<typeof githubMetadataSchema>;
882
- export type HealthEntry = z.infer<typeof healthEntrySchema>;
883
- export type Decision = z.infer<typeof decisionSchema>;
884
- export type Override = z.infer<typeof overrideSchema>;
885
- export type CuratedItem = z.infer<typeof itemSchema>;
886
- export type ItemsFile = z.infer<typeof itemsFileSchema>;
887
- export type HealthFile = z.infer<typeof healthFileSchema>;
888
- export type DecisionsFile = z.infer<typeof decisionsFileSchema>;
889
- export type OverridesFile = z.infer<typeof overridesFileSchema>;
890
- export type CuratedConfig = z.infer<typeof curatedConfigSchema>;
891
- export type StackRef = z.infer<typeof stackRefSchema>;
892
- export type PlatformRef = z.infer<typeof platformRefSchema>;
893
- export type CategoryRef = z.infer<typeof categoryRefSchema>;
894
- export type DistributionChannelRef = z.infer<typeof distributionChannelRefSchema>;
895
- export declare function unwrapItems(value: ItemsFile): CuratedItem[];
896
- export declare function unwrapHealth(value: HealthFile): HealthEntry[];
897
- export declare function unwrapDecisions(value: DecisionsFile): Decision[];
898
- export declare function unwrapOverrides(value: OverridesFile): Override[];
899
- export interface AppRecord {
900
- slug: string;
901
- schemaVersion: number;
902
- name: string;
903
- description: string;
904
- repoUrl: string;
905
- homepageUrl?: string;
906
- stack: string;
907
- stacks: string[];
908
- platforms: string[];
909
- category: string;
910
- tags: string[];
911
- distribution: {
912
- channels: DistributionChannel[];
913
- };
914
- license?: string;
915
- status: HealthStatus;
916
- tier: HealthTier;
917
- visibility: DecisionVisibility;
918
- cleanupCandidate: boolean;
919
- staleReason: string | null;
920
- stars?: number;
921
- forks?: number;
922
- openIssues?: number;
923
- lastCommitAt?: string | null;
924
- addedAt?: string;
925
- labels: AppLabel[];
926
- lenses: string[];
927
- projectType?: ProjectType;
928
- difficulty?: Difficulty;
929
- codebaseSize?: CodebaseSize;
930
- bestFor: string[];
931
- whyListed: string[];
932
- caveats: string[];
933
- scores: Score;
934
- curation: {
935
- reviewed: boolean;
936
- reviewedBy?: string;
937
- reviewedAt?: string;
938
- notes?: string;
939
- };
940
- github?: {
941
- repository?: z.infer<typeof githubRepositorySchema>;
942
- languages?: Record<string, number>;
943
- latestRelease?: Record<string, unknown> | null;
944
- activity?: {
945
- monthlyCommits?: Array<number | {
946
- month: string;
947
- commits: number;
948
- }>;
949
- totalCommitsKnown?: number;
950
- contributorsKnown?: number;
951
- openPullRequests?: number;
952
- };
953
- files?: Record<string, boolean>;
954
- labels?: Array<Record<string, unknown>>;
955
- sync?: Record<string, unknown>;
956
- };
957
- health: {
958
- status: HealthStatus;
959
- tier: HealthTier;
960
- visibility: DecisionVisibility;
961
- cleanupCandidate: boolean;
962
- staleReason: string | null;
963
- };
964
- }
965
- export declare function healthFromSignals(params: {
966
- repo?: z.infer<typeof githubRepositorySchema>;
967
- monthlyCommits?: Array<number | {
968
- month: string;
969
- commits: number;
970
- }>;
971
- legacyStatus?: HealthStatus;
972
- }): {
973
- status: HealthStatus;
974
- tier: HealthTier;
975
- visibility: DecisionVisibility;
976
- cleanupCandidate: boolean;
977
- staleReason: string | null;
978
- };
979
- export declare function parseAppYaml(text: string, fileSlug: string): Record<string, unknown>;
980
- export declare function stringifyAppYaml(app: Record<string, unknown>): string;
606
+ github: z.ZodOptional<z.ZodObject<{
607
+ repository: z.ZodOptional<z.ZodObject<{
608
+ id: z.ZodOptional<z.ZodNumber>;
609
+ node_id: z.ZodOptional<z.ZodString>;
610
+ name: z.ZodOptional<z.ZodString>;
611
+ full_name: z.ZodOptional<z.ZodString>;
612
+ html_url: z.ZodOptional<z.ZodString>;
613
+ clone_url: z.ZodOptional<z.ZodString>;
614
+ ssh_url: z.ZodOptional<z.ZodString>;
615
+ homepage: z.ZodOptional<z.ZodNullable<z.ZodString>>;
616
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
617
+ fork: z.ZodOptional<z.ZodBoolean>;
618
+ archived: z.ZodOptional<z.ZodBoolean>;
619
+ disabled: z.ZodOptional<z.ZodBoolean>;
620
+ private: z.ZodOptional<z.ZodBoolean>;
621
+ is_template: z.ZodOptional<z.ZodBoolean>;
622
+ visibility: z.ZodOptional<z.ZodString>;
623
+ default_branch: z.ZodOptional<z.ZodString>;
624
+ language: z.ZodOptional<z.ZodNullable<z.ZodString>>;
625
+ topics: z.ZodOptional<z.ZodArray<z.ZodString>>;
626
+ license: z.ZodOptional<z.ZodNullable<z.ZodObject<{
627
+ key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
628
+ name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
629
+ spdx_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
630
+ url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
631
+ }, z.core.$loose>>>;
632
+ stargazers_count: z.ZodOptional<z.ZodNumber>;
633
+ watchers_count: z.ZodOptional<z.ZodNumber>;
634
+ forks_count: z.ZodOptional<z.ZodNumber>;
635
+ open_issues_count: z.ZodOptional<z.ZodNumber>;
636
+ subscribers_count: z.ZodOptional<z.ZodNumber>;
637
+ size: z.ZodOptional<z.ZodNumber>;
638
+ created_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
639
+ updated_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
640
+ pushed_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
641
+ }, z.core.$loose>>;
642
+ languages: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
643
+ latestRelease: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
644
+ activity: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
645
+ files: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
646
+ labels: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
647
+ sync: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
648
+ }, z.core.$loose>>;
649
+ health: z.ZodOptional<z.ZodObject<{
650
+ status: z.ZodDefault<z.ZodEnum<{
651
+ active: "active";
652
+ mature: "mature";
653
+ stale: "stale";
654
+ inactive: "inactive";
655
+ archived: "archived";
656
+ unknown: "unknown";
657
+ historical: "historical";
658
+ needs_review: "needs_review";
659
+ quiet: "quiet";
660
+ unavailable: "unavailable";
661
+ }>>;
662
+ maturity: z.ZodDefault<z.ZodEnum<{
663
+ mature: "mature";
664
+ unknown: "unknown";
665
+ experimental: "experimental";
666
+ useful: "useful";
667
+ }>>;
668
+ tier: z.ZodDefault<z.ZodEnum<{
669
+ curated: "curated";
670
+ listed: "listed";
671
+ experimental: "experimental";
672
+ hidden: "hidden";
673
+ }>>;
674
+ visibility: z.ZodDefault<z.ZodEnum<{
675
+ historical: "historical";
676
+ needs_review: "needs_review";
677
+ highlight: "highlight";
678
+ keep: "keep";
679
+ hide: "hide";
680
+ remove: "remove";
681
+ }>>;
682
+ cleanupCandidate: z.ZodDefault<z.ZodBoolean>;
683
+ staleReason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
684
+ confidence: z.ZodDefault<z.ZodEnum<{
685
+ low: "low";
686
+ medium: "medium";
687
+ high: "high";
688
+ }>>;
689
+ reasons: z.ZodDefault<z.ZodArray<z.ZodString>>;
690
+ }, z.core.$strip>>;
691
+ }, z.core.$strip>;
692
+ export type ProjectRecord = z.infer<typeof projectRecordSchema>;
693
+ export declare const resourceRecordSchema: z.ZodObject<{
694
+ slug: z.ZodString;
695
+ description: z.ZodDefault<z.ZodString>;
696
+ category: z.ZodDefault<z.ZodString>;
697
+ tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
698
+ links: z.ZodDefault<z.ZodObject<{
699
+ github: z.ZodOptional<z.ZodString>;
700
+ website: z.ZodOptional<z.ZodString>;
701
+ docs: z.ZodOptional<z.ZodString>;
702
+ source: z.ZodOptional<z.ZodString>;
703
+ }, z.core.$catchall<z.ZodString>>>;
704
+ content: z.ZodOptional<z.ZodString>;
705
+ source: z.ZodDefault<z.ZodObject<{
706
+ type: z.ZodDefault<z.ZodEnum<{
707
+ manual: "manual";
708
+ "github-topic": "github-topic";
709
+ "awesome-list": "awesome-list";
710
+ submit: "submit";
711
+ import: "import";
712
+ }>>;
713
+ file: z.ZodOptional<z.ZodString>;
714
+ url: z.ZodOptional<z.ZodString>;
715
+ provider: z.ZodOptional<z.ZodString>;
716
+ owner: z.ZodOptional<z.ZodString>;
717
+ repo: z.ZodOptional<z.ZodString>;
718
+ }, z.core.$strip>>;
719
+ curation: z.ZodDefault<z.ZodObject<{
720
+ reviewed: z.ZodDefault<z.ZodBoolean>;
721
+ reviewedBy: z.ZodOptional<z.ZodString>;
722
+ reviewedAt: z.ZodOptional<z.ZodString>;
723
+ notes: z.ZodOptional<z.ZodString>;
724
+ labels: z.ZodDefault<z.ZodArray<z.ZodEnum<{
725
+ mature: "mature";
726
+ new: "new";
727
+ hot: "hot";
728
+ featured: "featured";
729
+ }>>>;
730
+ lenses: z.ZodDefault<z.ZodArray<z.ZodString>>;
731
+ }, z.core.$strip>>;
732
+ scores: z.ZodDefault<z.ZodObject<{
733
+ activity: z.ZodOptional<z.ZodNumber>;
734
+ maturity: z.ZodOptional<z.ZodNumber>;
735
+ learning: z.ZodOptional<z.ZodNumber>;
736
+ contribution: z.ZodOptional<z.ZodNumber>;
737
+ docs: z.ZodOptional<z.ZodNumber>;
738
+ overall: z.ZodOptional<z.ZodNumber>;
739
+ }, z.core.$strip>>;
740
+ visibility: z.ZodDefault<z.ZodEnum<{
741
+ historical: "historical";
742
+ needs_review: "needs_review";
743
+ highlight: "highlight";
744
+ keep: "keep";
745
+ hide: "hide";
746
+ remove: "remove";
747
+ }>>;
748
+ kind: z.ZodLiteral<"resource">;
749
+ title: z.ZodString;
750
+ type: z.ZodEnum<{
751
+ tool: "tool";
752
+ guide: "guide";
753
+ comparison: "comparison";
754
+ link: "link";
755
+ explainer: "explainer";
756
+ video: "video";
757
+ article: "article";
758
+ course: "course";
759
+ book: "book";
760
+ podcast: "podcast";
761
+ other: "other";
762
+ }>;
763
+ topic: z.ZodString;
764
+ related: z.ZodDefault<z.ZodArray<z.ZodString>>;
765
+ publishedAt: z.ZodOptional<z.ZodString>;
766
+ author: z.ZodOptional<z.ZodString>;
767
+ }, z.core.$strip>;
768
+ export type ResourceRecord = z.infer<typeof resourceRecordSchema>;
769
+ export declare const entityRecordSchema: z.ZodObject<{
770
+ slug: z.ZodString;
771
+ description: z.ZodDefault<z.ZodString>;
772
+ category: z.ZodDefault<z.ZodString>;
773
+ tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
774
+ links: z.ZodDefault<z.ZodObject<{
775
+ github: z.ZodOptional<z.ZodString>;
776
+ website: z.ZodOptional<z.ZodString>;
777
+ docs: z.ZodOptional<z.ZodString>;
778
+ source: z.ZodOptional<z.ZodString>;
779
+ }, z.core.$catchall<z.ZodString>>>;
780
+ content: z.ZodOptional<z.ZodString>;
781
+ source: z.ZodDefault<z.ZodObject<{
782
+ type: z.ZodDefault<z.ZodEnum<{
783
+ manual: "manual";
784
+ "github-topic": "github-topic";
785
+ "awesome-list": "awesome-list";
786
+ submit: "submit";
787
+ import: "import";
788
+ }>>;
789
+ file: z.ZodOptional<z.ZodString>;
790
+ url: z.ZodOptional<z.ZodString>;
791
+ provider: z.ZodOptional<z.ZodString>;
792
+ owner: z.ZodOptional<z.ZodString>;
793
+ repo: z.ZodOptional<z.ZodString>;
794
+ }, z.core.$strip>>;
795
+ curation: z.ZodDefault<z.ZodObject<{
796
+ reviewed: z.ZodDefault<z.ZodBoolean>;
797
+ reviewedBy: z.ZodOptional<z.ZodString>;
798
+ reviewedAt: z.ZodOptional<z.ZodString>;
799
+ notes: z.ZodOptional<z.ZodString>;
800
+ labels: z.ZodDefault<z.ZodArray<z.ZodEnum<{
801
+ mature: "mature";
802
+ new: "new";
803
+ hot: "hot";
804
+ featured: "featured";
805
+ }>>>;
806
+ lenses: z.ZodDefault<z.ZodArray<z.ZodString>>;
807
+ }, z.core.$strip>>;
808
+ scores: z.ZodDefault<z.ZodObject<{
809
+ activity: z.ZodOptional<z.ZodNumber>;
810
+ maturity: z.ZodOptional<z.ZodNumber>;
811
+ learning: z.ZodOptional<z.ZodNumber>;
812
+ contribution: z.ZodOptional<z.ZodNumber>;
813
+ docs: z.ZodOptional<z.ZodNumber>;
814
+ overall: z.ZodOptional<z.ZodNumber>;
815
+ }, z.core.$strip>>;
816
+ visibility: z.ZodDefault<z.ZodEnum<{
817
+ historical: "historical";
818
+ needs_review: "needs_review";
819
+ highlight: "highlight";
820
+ keep: "keep";
821
+ hide: "hide";
822
+ remove: "remove";
823
+ }>>;
824
+ kind: z.ZodLiteral<"entity">;
825
+ name: z.ZodString;
826
+ type: z.ZodEnum<{
827
+ other: "other";
828
+ company: "company";
829
+ organization: "organization";
830
+ community: "community";
831
+ school: "school";
832
+ university: "university";
833
+ "research-lab": "research-lab";
834
+ agency: "agency";
835
+ service: "service";
836
+ product: "product";
837
+ person: "person";
838
+ }>;
839
+ founded: z.ZodOptional<z.ZodString>;
840
+ location: z.ZodOptional<z.ZodString>;
841
+ members: z.ZodOptional<z.ZodNumber>;
842
+ parent: z.ZodOptional<z.ZodString>;
843
+ }, z.core.$strip>;
844
+ export type EntityRecord = z.infer<typeof entityRecordSchema>;
845
+ export declare const resourceSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
846
+ slug: z.ZodString;
847
+ description: z.ZodDefault<z.ZodString>;
848
+ category: z.ZodDefault<z.ZodString>;
849
+ tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
850
+ links: z.ZodDefault<z.ZodObject<{
851
+ github: z.ZodOptional<z.ZodString>;
852
+ website: z.ZodOptional<z.ZodString>;
853
+ docs: z.ZodOptional<z.ZodString>;
854
+ source: z.ZodOptional<z.ZodString>;
855
+ }, z.core.$catchall<z.ZodString>>>;
856
+ content: z.ZodOptional<z.ZodString>;
857
+ source: z.ZodDefault<z.ZodObject<{
858
+ type: z.ZodDefault<z.ZodEnum<{
859
+ manual: "manual";
860
+ "github-topic": "github-topic";
861
+ "awesome-list": "awesome-list";
862
+ submit: "submit";
863
+ import: "import";
864
+ }>>;
865
+ file: z.ZodOptional<z.ZodString>;
866
+ url: z.ZodOptional<z.ZodString>;
867
+ provider: z.ZodOptional<z.ZodString>;
868
+ owner: z.ZodOptional<z.ZodString>;
869
+ repo: z.ZodOptional<z.ZodString>;
870
+ }, z.core.$strip>>;
871
+ curation: z.ZodDefault<z.ZodObject<{
872
+ reviewed: z.ZodDefault<z.ZodBoolean>;
873
+ reviewedBy: z.ZodOptional<z.ZodString>;
874
+ reviewedAt: z.ZodOptional<z.ZodString>;
875
+ notes: z.ZodOptional<z.ZodString>;
876
+ labels: z.ZodDefault<z.ZodArray<z.ZodEnum<{
877
+ mature: "mature";
878
+ new: "new";
879
+ hot: "hot";
880
+ featured: "featured";
881
+ }>>>;
882
+ lenses: z.ZodDefault<z.ZodArray<z.ZodString>>;
883
+ }, z.core.$strip>>;
884
+ scores: z.ZodDefault<z.ZodObject<{
885
+ activity: z.ZodOptional<z.ZodNumber>;
886
+ maturity: z.ZodOptional<z.ZodNumber>;
887
+ learning: z.ZodOptional<z.ZodNumber>;
888
+ contribution: z.ZodOptional<z.ZodNumber>;
889
+ docs: z.ZodOptional<z.ZodNumber>;
890
+ overall: z.ZodOptional<z.ZodNumber>;
891
+ }, z.core.$strip>>;
892
+ visibility: z.ZodDefault<z.ZodEnum<{
893
+ historical: "historical";
894
+ needs_review: "needs_review";
895
+ highlight: "highlight";
896
+ keep: "keep";
897
+ hide: "hide";
898
+ remove: "remove";
899
+ }>>;
900
+ kind: z.ZodLiteral<"project">;
901
+ name: z.ZodString;
902
+ projectType: z.ZodOptional<z.ZodEnum<{
903
+ historical: "historical";
904
+ "real-app": "real-app";
905
+ production: "production";
906
+ reference: "reference";
907
+ library: "library";
908
+ tool: "tool";
909
+ demo: "demo";
910
+ template: "template";
911
+ }>>;
912
+ stack: z.ZodOptional<z.ZodString>;
913
+ stacks: z.ZodDefault<z.ZodArray<z.ZodString>>;
914
+ platforms: z.ZodDefault<z.ZodArray<z.ZodString>>;
915
+ difficulty: z.ZodOptional<z.ZodEnum<{
916
+ beginner: "beginner";
917
+ intermediate: "intermediate";
918
+ advanced: "advanced";
919
+ }>>;
920
+ codebaseSize: z.ZodOptional<z.ZodEnum<{
921
+ medium: "medium";
922
+ small: "small";
923
+ large: "large";
924
+ huge: "huge";
925
+ }>>;
926
+ repoUrl: z.ZodOptional<z.ZodString>;
927
+ logoUrl: z.ZodOptional<z.ZodString>;
928
+ bestFor: z.ZodDefault<z.ZodArray<z.ZodString>>;
929
+ whyListed: z.ZodDefault<z.ZodArray<z.ZodString>>;
930
+ caveats: z.ZodDefault<z.ZodArray<z.ZodString>>;
931
+ distribution: z.ZodDefault<z.ZodObject<{
932
+ channels: z.ZodDefault<z.ZodArray<z.ZodObject<{
933
+ type: z.ZodString;
934
+ platform: z.ZodOptional<z.ZodString>;
935
+ label: z.ZodOptional<z.ZodString>;
936
+ url: z.ZodString;
937
+ verified: z.ZodOptional<z.ZodBoolean>;
938
+ notes: z.ZodOptional<z.ZodString>;
939
+ }, z.core.$loose>>>;
940
+ }, z.core.$strip>>;
941
+ github: z.ZodOptional<z.ZodObject<{
942
+ repository: z.ZodOptional<z.ZodObject<{
943
+ id: z.ZodOptional<z.ZodNumber>;
944
+ node_id: z.ZodOptional<z.ZodString>;
945
+ name: z.ZodOptional<z.ZodString>;
946
+ full_name: z.ZodOptional<z.ZodString>;
947
+ html_url: z.ZodOptional<z.ZodString>;
948
+ clone_url: z.ZodOptional<z.ZodString>;
949
+ ssh_url: z.ZodOptional<z.ZodString>;
950
+ homepage: z.ZodOptional<z.ZodNullable<z.ZodString>>;
951
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
952
+ fork: z.ZodOptional<z.ZodBoolean>;
953
+ archived: z.ZodOptional<z.ZodBoolean>;
954
+ disabled: z.ZodOptional<z.ZodBoolean>;
955
+ private: z.ZodOptional<z.ZodBoolean>;
956
+ is_template: z.ZodOptional<z.ZodBoolean>;
957
+ visibility: z.ZodOptional<z.ZodString>;
958
+ default_branch: z.ZodOptional<z.ZodString>;
959
+ language: z.ZodOptional<z.ZodNullable<z.ZodString>>;
960
+ topics: z.ZodOptional<z.ZodArray<z.ZodString>>;
961
+ license: z.ZodOptional<z.ZodNullable<z.ZodObject<{
962
+ key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
963
+ name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
964
+ spdx_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
965
+ url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
966
+ }, z.core.$loose>>>;
967
+ stargazers_count: z.ZodOptional<z.ZodNumber>;
968
+ watchers_count: z.ZodOptional<z.ZodNumber>;
969
+ forks_count: z.ZodOptional<z.ZodNumber>;
970
+ open_issues_count: z.ZodOptional<z.ZodNumber>;
971
+ subscribers_count: z.ZodOptional<z.ZodNumber>;
972
+ size: z.ZodOptional<z.ZodNumber>;
973
+ created_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
974
+ updated_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
975
+ pushed_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
976
+ }, z.core.$loose>>;
977
+ languages: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
978
+ latestRelease: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
979
+ activity: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
980
+ files: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
981
+ labels: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
982
+ sync: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
983
+ }, z.core.$loose>>;
984
+ health: z.ZodOptional<z.ZodObject<{
985
+ status: z.ZodDefault<z.ZodEnum<{
986
+ active: "active";
987
+ mature: "mature";
988
+ stale: "stale";
989
+ inactive: "inactive";
990
+ archived: "archived";
991
+ unknown: "unknown";
992
+ historical: "historical";
993
+ needs_review: "needs_review";
994
+ quiet: "quiet";
995
+ unavailable: "unavailable";
996
+ }>>;
997
+ maturity: z.ZodDefault<z.ZodEnum<{
998
+ mature: "mature";
999
+ unknown: "unknown";
1000
+ experimental: "experimental";
1001
+ useful: "useful";
1002
+ }>>;
1003
+ tier: z.ZodDefault<z.ZodEnum<{
1004
+ curated: "curated";
1005
+ listed: "listed";
1006
+ experimental: "experimental";
1007
+ hidden: "hidden";
1008
+ }>>;
1009
+ visibility: z.ZodDefault<z.ZodEnum<{
1010
+ historical: "historical";
1011
+ needs_review: "needs_review";
1012
+ highlight: "highlight";
1013
+ keep: "keep";
1014
+ hide: "hide";
1015
+ remove: "remove";
1016
+ }>>;
1017
+ cleanupCandidate: z.ZodDefault<z.ZodBoolean>;
1018
+ staleReason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1019
+ confidence: z.ZodDefault<z.ZodEnum<{
1020
+ low: "low";
1021
+ medium: "medium";
1022
+ high: "high";
1023
+ }>>;
1024
+ reasons: z.ZodDefault<z.ZodArray<z.ZodString>>;
1025
+ }, z.core.$strip>>;
1026
+ }, z.core.$strip>, z.ZodObject<{
1027
+ slug: z.ZodString;
1028
+ description: z.ZodDefault<z.ZodString>;
1029
+ category: z.ZodDefault<z.ZodString>;
1030
+ tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
1031
+ links: z.ZodDefault<z.ZodObject<{
1032
+ github: z.ZodOptional<z.ZodString>;
1033
+ website: z.ZodOptional<z.ZodString>;
1034
+ docs: z.ZodOptional<z.ZodString>;
1035
+ source: z.ZodOptional<z.ZodString>;
1036
+ }, z.core.$catchall<z.ZodString>>>;
1037
+ content: z.ZodOptional<z.ZodString>;
1038
+ source: z.ZodDefault<z.ZodObject<{
1039
+ type: z.ZodDefault<z.ZodEnum<{
1040
+ manual: "manual";
1041
+ "github-topic": "github-topic";
1042
+ "awesome-list": "awesome-list";
1043
+ submit: "submit";
1044
+ import: "import";
1045
+ }>>;
1046
+ file: z.ZodOptional<z.ZodString>;
1047
+ url: z.ZodOptional<z.ZodString>;
1048
+ provider: z.ZodOptional<z.ZodString>;
1049
+ owner: z.ZodOptional<z.ZodString>;
1050
+ repo: z.ZodOptional<z.ZodString>;
1051
+ }, z.core.$strip>>;
1052
+ curation: z.ZodDefault<z.ZodObject<{
1053
+ reviewed: z.ZodDefault<z.ZodBoolean>;
1054
+ reviewedBy: z.ZodOptional<z.ZodString>;
1055
+ reviewedAt: z.ZodOptional<z.ZodString>;
1056
+ notes: z.ZodOptional<z.ZodString>;
1057
+ labels: z.ZodDefault<z.ZodArray<z.ZodEnum<{
1058
+ mature: "mature";
1059
+ new: "new";
1060
+ hot: "hot";
1061
+ featured: "featured";
1062
+ }>>>;
1063
+ lenses: z.ZodDefault<z.ZodArray<z.ZodString>>;
1064
+ }, z.core.$strip>>;
1065
+ scores: z.ZodDefault<z.ZodObject<{
1066
+ activity: z.ZodOptional<z.ZodNumber>;
1067
+ maturity: z.ZodOptional<z.ZodNumber>;
1068
+ learning: z.ZodOptional<z.ZodNumber>;
1069
+ contribution: z.ZodOptional<z.ZodNumber>;
1070
+ docs: z.ZodOptional<z.ZodNumber>;
1071
+ overall: z.ZodOptional<z.ZodNumber>;
1072
+ }, z.core.$strip>>;
1073
+ visibility: z.ZodDefault<z.ZodEnum<{
1074
+ historical: "historical";
1075
+ needs_review: "needs_review";
1076
+ highlight: "highlight";
1077
+ keep: "keep";
1078
+ hide: "hide";
1079
+ remove: "remove";
1080
+ }>>;
1081
+ kind: z.ZodLiteral<"resource">;
1082
+ title: z.ZodString;
1083
+ type: z.ZodEnum<{
1084
+ tool: "tool";
1085
+ guide: "guide";
1086
+ comparison: "comparison";
1087
+ link: "link";
1088
+ explainer: "explainer";
1089
+ video: "video";
1090
+ article: "article";
1091
+ course: "course";
1092
+ book: "book";
1093
+ podcast: "podcast";
1094
+ other: "other";
1095
+ }>;
1096
+ topic: z.ZodString;
1097
+ related: z.ZodDefault<z.ZodArray<z.ZodString>>;
1098
+ publishedAt: z.ZodOptional<z.ZodString>;
1099
+ author: z.ZodOptional<z.ZodString>;
1100
+ }, z.core.$strip>, z.ZodObject<{
1101
+ slug: z.ZodString;
1102
+ description: z.ZodDefault<z.ZodString>;
1103
+ category: z.ZodDefault<z.ZodString>;
1104
+ tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
1105
+ links: z.ZodDefault<z.ZodObject<{
1106
+ github: z.ZodOptional<z.ZodString>;
1107
+ website: z.ZodOptional<z.ZodString>;
1108
+ docs: z.ZodOptional<z.ZodString>;
1109
+ source: z.ZodOptional<z.ZodString>;
1110
+ }, z.core.$catchall<z.ZodString>>>;
1111
+ content: z.ZodOptional<z.ZodString>;
1112
+ source: z.ZodDefault<z.ZodObject<{
1113
+ type: z.ZodDefault<z.ZodEnum<{
1114
+ manual: "manual";
1115
+ "github-topic": "github-topic";
1116
+ "awesome-list": "awesome-list";
1117
+ submit: "submit";
1118
+ import: "import";
1119
+ }>>;
1120
+ file: z.ZodOptional<z.ZodString>;
1121
+ url: z.ZodOptional<z.ZodString>;
1122
+ provider: z.ZodOptional<z.ZodString>;
1123
+ owner: z.ZodOptional<z.ZodString>;
1124
+ repo: z.ZodOptional<z.ZodString>;
1125
+ }, z.core.$strip>>;
1126
+ curation: z.ZodDefault<z.ZodObject<{
1127
+ reviewed: z.ZodDefault<z.ZodBoolean>;
1128
+ reviewedBy: z.ZodOptional<z.ZodString>;
1129
+ reviewedAt: z.ZodOptional<z.ZodString>;
1130
+ notes: z.ZodOptional<z.ZodString>;
1131
+ labels: z.ZodDefault<z.ZodArray<z.ZodEnum<{
1132
+ mature: "mature";
1133
+ new: "new";
1134
+ hot: "hot";
1135
+ featured: "featured";
1136
+ }>>>;
1137
+ lenses: z.ZodDefault<z.ZodArray<z.ZodString>>;
1138
+ }, z.core.$strip>>;
1139
+ scores: z.ZodDefault<z.ZodObject<{
1140
+ activity: z.ZodOptional<z.ZodNumber>;
1141
+ maturity: z.ZodOptional<z.ZodNumber>;
1142
+ learning: z.ZodOptional<z.ZodNumber>;
1143
+ contribution: z.ZodOptional<z.ZodNumber>;
1144
+ docs: z.ZodOptional<z.ZodNumber>;
1145
+ overall: z.ZodOptional<z.ZodNumber>;
1146
+ }, z.core.$strip>>;
1147
+ visibility: z.ZodDefault<z.ZodEnum<{
1148
+ historical: "historical";
1149
+ needs_review: "needs_review";
1150
+ highlight: "highlight";
1151
+ keep: "keep";
1152
+ hide: "hide";
1153
+ remove: "remove";
1154
+ }>>;
1155
+ kind: z.ZodLiteral<"entity">;
1156
+ name: z.ZodString;
1157
+ type: z.ZodEnum<{
1158
+ other: "other";
1159
+ company: "company";
1160
+ organization: "organization";
1161
+ community: "community";
1162
+ school: "school";
1163
+ university: "university";
1164
+ "research-lab": "research-lab";
1165
+ agency: "agency";
1166
+ service: "service";
1167
+ product: "product";
1168
+ person: "person";
1169
+ }>;
1170
+ founded: z.ZodOptional<z.ZodString>;
1171
+ location: z.ZodOptional<z.ZodString>;
1172
+ members: z.ZodOptional<z.ZodNumber>;
1173
+ parent: z.ZodOptional<z.ZodString>;
1174
+ }, z.core.$strip>], "kind">;
1175
+ export type Resource = z.infer<typeof resourceSchema>;
1176
+ export declare const recordsFileSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
1177
+ slug: z.ZodString;
1178
+ description: z.ZodDefault<z.ZodString>;
1179
+ category: z.ZodDefault<z.ZodString>;
1180
+ tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
1181
+ links: z.ZodDefault<z.ZodObject<{
1182
+ github: z.ZodOptional<z.ZodString>;
1183
+ website: z.ZodOptional<z.ZodString>;
1184
+ docs: z.ZodOptional<z.ZodString>;
1185
+ source: z.ZodOptional<z.ZodString>;
1186
+ }, z.core.$catchall<z.ZodString>>>;
1187
+ content: z.ZodOptional<z.ZodString>;
1188
+ source: z.ZodDefault<z.ZodObject<{
1189
+ type: z.ZodDefault<z.ZodEnum<{
1190
+ manual: "manual";
1191
+ "github-topic": "github-topic";
1192
+ "awesome-list": "awesome-list";
1193
+ submit: "submit";
1194
+ import: "import";
1195
+ }>>;
1196
+ file: z.ZodOptional<z.ZodString>;
1197
+ url: z.ZodOptional<z.ZodString>;
1198
+ provider: z.ZodOptional<z.ZodString>;
1199
+ owner: z.ZodOptional<z.ZodString>;
1200
+ repo: z.ZodOptional<z.ZodString>;
1201
+ }, z.core.$strip>>;
1202
+ curation: z.ZodDefault<z.ZodObject<{
1203
+ reviewed: z.ZodDefault<z.ZodBoolean>;
1204
+ reviewedBy: z.ZodOptional<z.ZodString>;
1205
+ reviewedAt: z.ZodOptional<z.ZodString>;
1206
+ notes: z.ZodOptional<z.ZodString>;
1207
+ labels: z.ZodDefault<z.ZodArray<z.ZodEnum<{
1208
+ mature: "mature";
1209
+ new: "new";
1210
+ hot: "hot";
1211
+ featured: "featured";
1212
+ }>>>;
1213
+ lenses: z.ZodDefault<z.ZodArray<z.ZodString>>;
1214
+ }, z.core.$strip>>;
1215
+ scores: z.ZodDefault<z.ZodObject<{
1216
+ activity: z.ZodOptional<z.ZodNumber>;
1217
+ maturity: z.ZodOptional<z.ZodNumber>;
1218
+ learning: z.ZodOptional<z.ZodNumber>;
1219
+ contribution: z.ZodOptional<z.ZodNumber>;
1220
+ docs: z.ZodOptional<z.ZodNumber>;
1221
+ overall: z.ZodOptional<z.ZodNumber>;
1222
+ }, z.core.$strip>>;
1223
+ visibility: z.ZodDefault<z.ZodEnum<{
1224
+ historical: "historical";
1225
+ needs_review: "needs_review";
1226
+ highlight: "highlight";
1227
+ keep: "keep";
1228
+ hide: "hide";
1229
+ remove: "remove";
1230
+ }>>;
1231
+ kind: z.ZodLiteral<"project">;
1232
+ name: z.ZodString;
1233
+ projectType: z.ZodOptional<z.ZodEnum<{
1234
+ historical: "historical";
1235
+ "real-app": "real-app";
1236
+ production: "production";
1237
+ reference: "reference";
1238
+ library: "library";
1239
+ tool: "tool";
1240
+ demo: "demo";
1241
+ template: "template";
1242
+ }>>;
1243
+ stack: z.ZodOptional<z.ZodString>;
1244
+ stacks: z.ZodDefault<z.ZodArray<z.ZodString>>;
1245
+ platforms: z.ZodDefault<z.ZodArray<z.ZodString>>;
1246
+ difficulty: z.ZodOptional<z.ZodEnum<{
1247
+ beginner: "beginner";
1248
+ intermediate: "intermediate";
1249
+ advanced: "advanced";
1250
+ }>>;
1251
+ codebaseSize: z.ZodOptional<z.ZodEnum<{
1252
+ medium: "medium";
1253
+ small: "small";
1254
+ large: "large";
1255
+ huge: "huge";
1256
+ }>>;
1257
+ repoUrl: z.ZodOptional<z.ZodString>;
1258
+ logoUrl: z.ZodOptional<z.ZodString>;
1259
+ bestFor: z.ZodDefault<z.ZodArray<z.ZodString>>;
1260
+ whyListed: z.ZodDefault<z.ZodArray<z.ZodString>>;
1261
+ caveats: z.ZodDefault<z.ZodArray<z.ZodString>>;
1262
+ distribution: z.ZodDefault<z.ZodObject<{
1263
+ channels: z.ZodDefault<z.ZodArray<z.ZodObject<{
1264
+ type: z.ZodString;
1265
+ platform: z.ZodOptional<z.ZodString>;
1266
+ label: z.ZodOptional<z.ZodString>;
1267
+ url: z.ZodString;
1268
+ verified: z.ZodOptional<z.ZodBoolean>;
1269
+ notes: z.ZodOptional<z.ZodString>;
1270
+ }, z.core.$loose>>>;
1271
+ }, z.core.$strip>>;
1272
+ github: z.ZodOptional<z.ZodObject<{
1273
+ repository: z.ZodOptional<z.ZodObject<{
1274
+ id: z.ZodOptional<z.ZodNumber>;
1275
+ node_id: z.ZodOptional<z.ZodString>;
1276
+ name: z.ZodOptional<z.ZodString>;
1277
+ full_name: z.ZodOptional<z.ZodString>;
1278
+ html_url: z.ZodOptional<z.ZodString>;
1279
+ clone_url: z.ZodOptional<z.ZodString>;
1280
+ ssh_url: z.ZodOptional<z.ZodString>;
1281
+ homepage: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1282
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1283
+ fork: z.ZodOptional<z.ZodBoolean>;
1284
+ archived: z.ZodOptional<z.ZodBoolean>;
1285
+ disabled: z.ZodOptional<z.ZodBoolean>;
1286
+ private: z.ZodOptional<z.ZodBoolean>;
1287
+ is_template: z.ZodOptional<z.ZodBoolean>;
1288
+ visibility: z.ZodOptional<z.ZodString>;
1289
+ default_branch: z.ZodOptional<z.ZodString>;
1290
+ language: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1291
+ topics: z.ZodOptional<z.ZodArray<z.ZodString>>;
1292
+ license: z.ZodOptional<z.ZodNullable<z.ZodObject<{
1293
+ key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1294
+ name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1295
+ spdx_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1296
+ url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1297
+ }, z.core.$loose>>>;
1298
+ stargazers_count: z.ZodOptional<z.ZodNumber>;
1299
+ watchers_count: z.ZodOptional<z.ZodNumber>;
1300
+ forks_count: z.ZodOptional<z.ZodNumber>;
1301
+ open_issues_count: z.ZodOptional<z.ZodNumber>;
1302
+ subscribers_count: z.ZodOptional<z.ZodNumber>;
1303
+ size: z.ZodOptional<z.ZodNumber>;
1304
+ created_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1305
+ updated_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1306
+ pushed_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1307
+ }, z.core.$loose>>;
1308
+ languages: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
1309
+ latestRelease: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
1310
+ activity: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1311
+ files: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
1312
+ labels: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
1313
+ sync: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1314
+ }, z.core.$loose>>;
1315
+ health: z.ZodOptional<z.ZodObject<{
1316
+ status: z.ZodDefault<z.ZodEnum<{
1317
+ active: "active";
1318
+ mature: "mature";
1319
+ stale: "stale";
1320
+ inactive: "inactive";
1321
+ archived: "archived";
1322
+ unknown: "unknown";
1323
+ historical: "historical";
1324
+ needs_review: "needs_review";
1325
+ quiet: "quiet";
1326
+ unavailable: "unavailable";
1327
+ }>>;
1328
+ maturity: z.ZodDefault<z.ZodEnum<{
1329
+ mature: "mature";
1330
+ unknown: "unknown";
1331
+ experimental: "experimental";
1332
+ useful: "useful";
1333
+ }>>;
1334
+ tier: z.ZodDefault<z.ZodEnum<{
1335
+ curated: "curated";
1336
+ listed: "listed";
1337
+ experimental: "experimental";
1338
+ hidden: "hidden";
1339
+ }>>;
1340
+ visibility: z.ZodDefault<z.ZodEnum<{
1341
+ historical: "historical";
1342
+ needs_review: "needs_review";
1343
+ highlight: "highlight";
1344
+ keep: "keep";
1345
+ hide: "hide";
1346
+ remove: "remove";
1347
+ }>>;
1348
+ cleanupCandidate: z.ZodDefault<z.ZodBoolean>;
1349
+ staleReason: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1350
+ confidence: z.ZodDefault<z.ZodEnum<{
1351
+ low: "low";
1352
+ medium: "medium";
1353
+ high: "high";
1354
+ }>>;
1355
+ reasons: z.ZodDefault<z.ZodArray<z.ZodString>>;
1356
+ }, z.core.$strip>>;
1357
+ }, z.core.$strip>, z.ZodObject<{
1358
+ slug: z.ZodString;
1359
+ description: z.ZodDefault<z.ZodString>;
1360
+ category: z.ZodDefault<z.ZodString>;
1361
+ tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
1362
+ links: z.ZodDefault<z.ZodObject<{
1363
+ github: z.ZodOptional<z.ZodString>;
1364
+ website: z.ZodOptional<z.ZodString>;
1365
+ docs: z.ZodOptional<z.ZodString>;
1366
+ source: z.ZodOptional<z.ZodString>;
1367
+ }, z.core.$catchall<z.ZodString>>>;
1368
+ content: z.ZodOptional<z.ZodString>;
1369
+ source: z.ZodDefault<z.ZodObject<{
1370
+ type: z.ZodDefault<z.ZodEnum<{
1371
+ manual: "manual";
1372
+ "github-topic": "github-topic";
1373
+ "awesome-list": "awesome-list";
1374
+ submit: "submit";
1375
+ import: "import";
1376
+ }>>;
1377
+ file: z.ZodOptional<z.ZodString>;
1378
+ url: z.ZodOptional<z.ZodString>;
1379
+ provider: z.ZodOptional<z.ZodString>;
1380
+ owner: z.ZodOptional<z.ZodString>;
1381
+ repo: z.ZodOptional<z.ZodString>;
1382
+ }, z.core.$strip>>;
1383
+ curation: z.ZodDefault<z.ZodObject<{
1384
+ reviewed: z.ZodDefault<z.ZodBoolean>;
1385
+ reviewedBy: z.ZodOptional<z.ZodString>;
1386
+ reviewedAt: z.ZodOptional<z.ZodString>;
1387
+ notes: z.ZodOptional<z.ZodString>;
1388
+ labels: z.ZodDefault<z.ZodArray<z.ZodEnum<{
1389
+ mature: "mature";
1390
+ new: "new";
1391
+ hot: "hot";
1392
+ featured: "featured";
1393
+ }>>>;
1394
+ lenses: z.ZodDefault<z.ZodArray<z.ZodString>>;
1395
+ }, z.core.$strip>>;
1396
+ scores: z.ZodDefault<z.ZodObject<{
1397
+ activity: z.ZodOptional<z.ZodNumber>;
1398
+ maturity: z.ZodOptional<z.ZodNumber>;
1399
+ learning: z.ZodOptional<z.ZodNumber>;
1400
+ contribution: z.ZodOptional<z.ZodNumber>;
1401
+ docs: z.ZodOptional<z.ZodNumber>;
1402
+ overall: z.ZodOptional<z.ZodNumber>;
1403
+ }, z.core.$strip>>;
1404
+ visibility: z.ZodDefault<z.ZodEnum<{
1405
+ historical: "historical";
1406
+ needs_review: "needs_review";
1407
+ highlight: "highlight";
1408
+ keep: "keep";
1409
+ hide: "hide";
1410
+ remove: "remove";
1411
+ }>>;
1412
+ kind: z.ZodLiteral<"resource">;
1413
+ title: z.ZodString;
1414
+ type: z.ZodEnum<{
1415
+ tool: "tool";
1416
+ guide: "guide";
1417
+ comparison: "comparison";
1418
+ link: "link";
1419
+ explainer: "explainer";
1420
+ video: "video";
1421
+ article: "article";
1422
+ course: "course";
1423
+ book: "book";
1424
+ podcast: "podcast";
1425
+ other: "other";
1426
+ }>;
1427
+ topic: z.ZodString;
1428
+ related: z.ZodDefault<z.ZodArray<z.ZodString>>;
1429
+ publishedAt: z.ZodOptional<z.ZodString>;
1430
+ author: z.ZodOptional<z.ZodString>;
1431
+ }, z.core.$strip>, z.ZodObject<{
1432
+ slug: z.ZodString;
1433
+ description: z.ZodDefault<z.ZodString>;
1434
+ category: z.ZodDefault<z.ZodString>;
1435
+ tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
1436
+ links: z.ZodDefault<z.ZodObject<{
1437
+ github: z.ZodOptional<z.ZodString>;
1438
+ website: z.ZodOptional<z.ZodString>;
1439
+ docs: z.ZodOptional<z.ZodString>;
1440
+ source: z.ZodOptional<z.ZodString>;
1441
+ }, z.core.$catchall<z.ZodString>>>;
1442
+ content: z.ZodOptional<z.ZodString>;
1443
+ source: z.ZodDefault<z.ZodObject<{
1444
+ type: z.ZodDefault<z.ZodEnum<{
1445
+ manual: "manual";
1446
+ "github-topic": "github-topic";
1447
+ "awesome-list": "awesome-list";
1448
+ submit: "submit";
1449
+ import: "import";
1450
+ }>>;
1451
+ file: z.ZodOptional<z.ZodString>;
1452
+ url: z.ZodOptional<z.ZodString>;
1453
+ provider: z.ZodOptional<z.ZodString>;
1454
+ owner: z.ZodOptional<z.ZodString>;
1455
+ repo: z.ZodOptional<z.ZodString>;
1456
+ }, z.core.$strip>>;
1457
+ curation: z.ZodDefault<z.ZodObject<{
1458
+ reviewed: z.ZodDefault<z.ZodBoolean>;
1459
+ reviewedBy: z.ZodOptional<z.ZodString>;
1460
+ reviewedAt: z.ZodOptional<z.ZodString>;
1461
+ notes: z.ZodOptional<z.ZodString>;
1462
+ labels: z.ZodDefault<z.ZodArray<z.ZodEnum<{
1463
+ mature: "mature";
1464
+ new: "new";
1465
+ hot: "hot";
1466
+ featured: "featured";
1467
+ }>>>;
1468
+ lenses: z.ZodDefault<z.ZodArray<z.ZodString>>;
1469
+ }, z.core.$strip>>;
1470
+ scores: z.ZodDefault<z.ZodObject<{
1471
+ activity: z.ZodOptional<z.ZodNumber>;
1472
+ maturity: z.ZodOptional<z.ZodNumber>;
1473
+ learning: z.ZodOptional<z.ZodNumber>;
1474
+ contribution: z.ZodOptional<z.ZodNumber>;
1475
+ docs: z.ZodOptional<z.ZodNumber>;
1476
+ overall: z.ZodOptional<z.ZodNumber>;
1477
+ }, z.core.$strip>>;
1478
+ visibility: z.ZodDefault<z.ZodEnum<{
1479
+ historical: "historical";
1480
+ needs_review: "needs_review";
1481
+ highlight: "highlight";
1482
+ keep: "keep";
1483
+ hide: "hide";
1484
+ remove: "remove";
1485
+ }>>;
1486
+ kind: z.ZodLiteral<"entity">;
1487
+ name: z.ZodString;
1488
+ type: z.ZodEnum<{
1489
+ other: "other";
1490
+ company: "company";
1491
+ organization: "organization";
1492
+ community: "community";
1493
+ school: "school";
1494
+ university: "university";
1495
+ "research-lab": "research-lab";
1496
+ agency: "agency";
1497
+ service: "service";
1498
+ product: "product";
1499
+ person: "person";
1500
+ }>;
1501
+ founded: z.ZodOptional<z.ZodString>;
1502
+ location: z.ZodOptional<z.ZodString>;
1503
+ members: z.ZodOptional<z.ZodNumber>;
1504
+ parent: z.ZodOptional<z.ZodString>;
1505
+ }, z.core.$strip>], "kind">;
1506
+ export type RecordsFile = z.infer<typeof recordsFileSchema>;
1507
+ export declare const navItemSchema: z.ZodObject<{
1508
+ label: z.ZodString;
1509
+ href: z.ZodString;
1510
+ }, z.core.$strip>;
1511
+ export declare const githubIntegrationSchema: z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
1512
+ metadata: z.ZodDefault<z.ZodBoolean>;
1513
+ contributors: z.ZodDefault<z.ZodBoolean>;
1514
+ health: z.ZodDefault<z.ZodBoolean>;
1515
+ }, z.core.$strip>]>;
1516
+ export declare const themeSchema: z.ZodObject<{
1517
+ primaryColor: z.ZodDefault<z.ZodString>;
1518
+ radius: z.ZodDefault<z.ZodEnum<{
1519
+ none: "none";
1520
+ soft: "soft";
1521
+ round: "round";
1522
+ }>>;
1523
+ density: z.ZodDefault<z.ZodEnum<{
1524
+ compact: "compact";
1525
+ comfortable: "comfortable";
1526
+ spacious: "spacious";
1527
+ }>>;
1528
+ containerWidth: z.ZodDefault<z.ZodString>;
1529
+ }, z.core.$strip>;
1530
+ export declare const componentOverrideSchema: z.ZodObject<{
1531
+ Header: z.ZodOptional<z.ZodString>;
1532
+ Footer: z.ZodOptional<z.ZodString>;
1533
+ Hero: z.ZodOptional<z.ZodString>;
1534
+ ItemCard: z.ZodOptional<z.ZodString>;
1535
+ DetailHeader: z.ZodOptional<z.ZodString>;
1536
+ }, z.core.$strip>;
1537
+ export declare const groveConfigSchema: z.ZodObject<{
1538
+ blueprint: z.ZodDefault<z.ZodEnum<{
1539
+ "project-directory": "project-directory";
1540
+ "resource-hub": "resource-hub";
1541
+ "ecosystem-map": "ecosystem-map";
1542
+ }>>;
1543
+ site: z.ZodObject<{
1544
+ name: z.ZodString;
1545
+ tagline: z.ZodDefault<z.ZodString>;
1546
+ description: z.ZodOptional<z.ZodString>;
1547
+ url: z.ZodOptional<z.ZodString>;
1548
+ repoUrl: z.ZodOptional<z.ZodString>;
1549
+ }, z.core.$strip>;
1550
+ nav: z.ZodDefault<z.ZodArray<z.ZodObject<{
1551
+ label: z.ZodString;
1552
+ href: z.ZodString;
1553
+ }, z.core.$strip>>>;
1554
+ facets: z.ZodDefault<z.ZodArray<z.ZodString>>;
1555
+ integrations: z.ZodDefault<z.ZodObject<{
1556
+ github: z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
1557
+ metadata: z.ZodDefault<z.ZodBoolean>;
1558
+ contributors: z.ZodDefault<z.ZodBoolean>;
1559
+ health: z.ZodDefault<z.ZodBoolean>;
1560
+ }, z.core.$strip>]>>;
1561
+ }, z.core.$strip>>;
1562
+ theme: z.ZodDefault<z.ZodObject<{
1563
+ primaryColor: z.ZodDefault<z.ZodString>;
1564
+ radius: z.ZodDefault<z.ZodEnum<{
1565
+ none: "none";
1566
+ soft: "soft";
1567
+ round: "round";
1568
+ }>>;
1569
+ density: z.ZodDefault<z.ZodEnum<{
1570
+ compact: "compact";
1571
+ comfortable: "comfortable";
1572
+ spacious: "spacious";
1573
+ }>>;
1574
+ containerWidth: z.ZodDefault<z.ZodString>;
1575
+ }, z.core.$strip>>;
1576
+ components: z.ZodDefault<z.ZodObject<{
1577
+ Header: z.ZodOptional<z.ZodString>;
1578
+ Footer: z.ZodOptional<z.ZodString>;
1579
+ Hero: z.ZodOptional<z.ZodString>;
1580
+ ItemCard: z.ZodOptional<z.ZodString>;
1581
+ DetailHeader: z.ZodOptional<z.ZodString>;
1582
+ }, z.core.$strip>>;
1583
+ paths: z.ZodDefault<z.ZodObject<{
1584
+ dataDir: z.ZodDefault<z.ZodString>;
1585
+ contentDir: z.ZodDefault<z.ZodString>;
1586
+ recordsDir: z.ZodDefault<z.ZodString>;
1587
+ pagesDir: z.ZodDefault<z.ZodString>;
1588
+ bodiesDir: z.ZodDefault<z.ZodString>;
1589
+ publicDir: z.ZodDefault<z.ZodString>;
1590
+ taxonomyDir: z.ZodDefault<z.ZodString>;
1591
+ generatedDir: z.ZodDefault<z.ZodString>;
1592
+ health: z.ZodDefault<z.ZodString>;
1593
+ decisions: z.ZodDefault<z.ZodString>;
1594
+ overrides: z.ZodDefault<z.ZodString>;
1595
+ }, z.core.$strip>>;
1596
+ }, z.core.$strip>;
1597
+ export type GroveConfig = z.infer<typeof groveConfigSchema>;
1598
+ export type NavItem = z.infer<typeof navItemSchema>;
1599
+ export type GithubIntegration = z.infer<typeof githubIntegrationSchema>;
1600
+ export type Theme = z.infer<typeof themeSchema>;
1601
+ export type ComponentOverride = z.infer<typeof componentOverrideSchema>;
1602
+ export type GithubMetadata = z.infer<typeof githubMetadataSchema>;
1603
+ export type GithubRepository = z.infer<typeof githubRepositorySchema>;
1604
+ export type HealthStatus = z.infer<typeof healthStatusSchema>;
1605
+ export type HealthTier = z.infer<typeof healthTierSchema>;
1606
+ export type HealthFile = z.infer<typeof healthFileSchema>;
1607
+ export type HealthEntry = z.infer<typeof healthEntrySchema>;
1608
+ export type DecisionsFile = z.infer<typeof decisionsFileSchema>;
1609
+ export type Decision = z.infer<typeof decisionSchema>;
1610
+ export type OverridesFile = z.infer<typeof overridesFileSchema>;
1611
+ export type Override = z.infer<typeof overrideSchema>;
1612
+ export type ProjectType = z.infer<typeof projectTypeSchema>;
1613
+ export type ResourceType = z.infer<typeof resourceTypeSchema>;
1614
+ export type EntityType = z.infer<typeof entityTypeSchema>;
1615
+ export type AppLabel = z.infer<typeof appLabelSchema>;
1616
+ export type Score = z.infer<typeof scoreSchema>;
1617
+ export type Links = z.infer<typeof linksSchema>;
1618
+ export declare function unwrapHealth(value: HealthFile): HealthEntry[];
1619
+ export declare function unwrapDecisions(value: DecisionsFile): Decision[];
1620
+ export declare function unwrapOverrides(value: OverridesFile): Override[];
1621
+ /**
1622
+ * Parse a single record YAML mapping into a typed Resource. The
1623
+ * `kind` field on the YAML selects which blueprint schema to apply.
1624
+ */
1625
+ export declare function parseRecordYaml(text: string, fileSlug: string): Record<string, unknown>;
1626
+ export declare function stringifyRecordYaml(record: Record<string, unknown>): string;
981
1627
  export declare function getOwnerRepoFromUrl(repoUrl: string | undefined | null): {
982
1628
  owner: string;
983
1629
  repo: string;
984
1630
  } | null;
985
- export declare function normalizeAppRecord(raw: Record<string, unknown>, fileSlug: string): AppRecord;
986
- export declare function validateAppRecord(raw: Record<string, unknown>, fileSlug: string): string[];
987
- export declare function toIndexApp(app: AppRecord): Record<string, unknown>;
1631
+ export interface IndexBase {
1632
+ slug: string;
1633
+ kind: ResourceKind;
1634
+ category: string;
1635
+ tags: string[];
1636
+ links: Links;
1637
+ description: string;
1638
+ content?: string;
1639
+ curation: ProjectRecord["curation"];
1640
+ }
1641
+ export interface IndexGithubSummary {
1642
+ fullName: string | undefined;
1643
+ stars: number;
1644
+ forks: number;
1645
+ openIssues: number;
1646
+ language: string | null;
1647
+ pushedAt: string | null;
1648
+ archived: boolean;
1649
+ license: string | null;
1650
+ topics: string[];
1651
+ }
1652
+ export interface IndexProjectRecord extends IndexBase {
1653
+ kind: "project";
1654
+ name: string;
1655
+ stack: ProjectRecord["stack"];
1656
+ stacks: string[];
1657
+ platforms: string[];
1658
+ projectType: ProjectRecord["projectType"];
1659
+ repoUrl: ProjectRecord["repoUrl"];
1660
+ logoUrl: ProjectRecord["logoUrl"];
1661
+ difficulty: ProjectRecord["difficulty"];
1662
+ codebaseSize: ProjectRecord["codebaseSize"];
1663
+ bestFor: string[];
1664
+ whyListed: string[];
1665
+ caveats: string[];
1666
+ health: ProjectRecord["health"];
1667
+ /** Effective visibility — decisions.yml overrides win over health. */
1668
+ visibility: DecisionVisibility;
1669
+ github: IndexGithubSummary | undefined;
1670
+ }
1671
+ export interface IndexResourceRecord extends IndexBase {
1672
+ kind: "resource";
1673
+ title: string;
1674
+ type: ResourceRecord["type"];
1675
+ topic: string;
1676
+ related: string[];
1677
+ publishedAt: ResourceRecord["publishedAt"];
1678
+ author: ResourceRecord["author"];
1679
+ /** Effective visibility — decisions.yml overrides win over the record default. */
1680
+ visibility: DecisionVisibility;
1681
+ }
1682
+ export interface IndexEntityRecord extends IndexBase {
1683
+ kind: "entity";
1684
+ name: string;
1685
+ type: EntityRecord["type"];
1686
+ founded: EntityRecord["founded"];
1687
+ location: EntityRecord["location"];
1688
+ members: EntityRecord["members"];
1689
+ parent: EntityRecord["parent"];
1690
+ /** Effective visibility — decisions.yml overrides win over the record default. */
1691
+ visibility: DecisionVisibility;
1692
+ }
1693
+ export type IndexRecord = IndexProjectRecord | IndexResourceRecord | IndexEntityRecord;
1694
+ export declare function isIndexProject(r: IndexRecord): r is IndexProjectRecord;
1695
+ export declare function isIndexResource(r: IndexRecord): r is IndexResourceRecord;
1696
+ export declare function isIndexEntity(r: IndexRecord): r is IndexEntityRecord;
1697
+ /**
1698
+ * Project a Resource to a stable, search-index-friendly summary
1699
+ * object. Strips out blueprint-specific heavy fields and leaves
1700
+ * only what the public list/detail UIs need.
1701
+ *
1702
+ * The return type is the discriminated `IndexRecord` union. The
1703
+ * function body uses a single `kind` literal cast per branch
1704
+ * because the `record.kind` is a `ResourceKind` (the union of
1705
+ * all three) and TypeScript cannot narrow the literal from a
1706
+ * runtime check alone. The casts are safe because each branch
1707
+ * is gated on the literal string compare.
1708
+ */
1709
+ export declare function toIndexRecord(record: Resource): IndexRecord;
1710
+ export declare function healthFromSignals(params: {
1711
+ repo?: z.infer<typeof githubRepositorySchema>;
1712
+ monthlyCommits?: Array<number | {
1713
+ month: string;
1714
+ commits: number;
1715
+ }>;
1716
+ }): {
1717
+ status: z.infer<typeof healthStatusSchema>;
1718
+ tier: z.infer<typeof healthTierSchema>;
1719
+ visibility: z.infer<typeof decisionVisibilitySchema>;
1720
+ cleanupCandidate: boolean;
1721
+ staleReason: string | null;
1722
+ };
988
1723
  //# sourceMappingURL=schema.d.ts.map