@nebutra/contracts 0.1.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,3 +1,28 @@
1
+ import {
2
+ ADMIN_CONTRACT_VERSION,
3
+ ActionPlanSchema,
4
+ ActionRequestSchema,
5
+ ActionResultSchema,
6
+ AdminActionSchema,
7
+ AdminColumnSchema,
8
+ AdminDomainIdSchema,
9
+ AdminDomainSchema,
10
+ AdminErrorSchema,
11
+ AdminManifestSchema,
12
+ AdminPolicySchema,
13
+ AdminResourceSchema,
14
+ AdminSeveritySchema,
15
+ AdminSignalSchema,
16
+ AdminStatusSchema,
17
+ PlanDiffEntrySchema,
18
+ ResourceListSchema,
19
+ STAFF_ROLE_RANK,
20
+ SignalReadingSchema,
21
+ StaffRoleSchema,
22
+ assertApplyAllowed,
23
+ resolveContractUrl,
24
+ roleAtLeast
25
+ } from "./chunk-ERZTZ3PW.js";
1
26
  import {
2
27
  PricingCatalogVersionSchema,
3
28
  UsageLedgerEntryInputSchema,
@@ -33,13 +58,60 @@ import {
33
58
  NotificationSettingsUpdateResponseContractSchema,
34
59
  NotificationUnreadCountResponseContractSchema
35
60
  } from "./chunk-F4BR76CX.js";
61
+ import {
62
+ DEFAULT_RESUME_MARGINS,
63
+ ExperienceKindSchema,
64
+ RESUME_CONTENT_VERSION,
65
+ RESUME_SKILL_CATEGORIES,
66
+ ResumeAchievementSchema,
67
+ ResumeBasicSchema,
68
+ ResumeCertificateSchema,
69
+ ResumeContentV1Schema,
70
+ ResumeDerivedSchema,
71
+ ResumeEducationSchema,
72
+ ResumeExperienceSchema,
73
+ ResumeFundingSchema,
74
+ ResumeLangSchema,
75
+ ResumeLinksSchema,
76
+ ResumeMarginsSchema,
77
+ ResumeObjectiveSchema,
78
+ ResumeOpenSourceSchema,
79
+ ResumePatentSchema,
80
+ ResumePeriodSchema,
81
+ ResumePreferencesSchema,
82
+ ResumePressSchema,
83
+ ResumeProjectSchema,
84
+ ResumePublicationSchema,
85
+ ResumeSkillsSchema,
86
+ ResumeVentureSchema,
87
+ ResumeVolunteeringSchema,
88
+ ResumeWriteSchema,
89
+ VentureStageSchema
90
+ } from "./chunk-PU65L2HQ.js";
36
91
  export {
92
+ ADMIN_CONTRACT_VERSION,
93
+ ActionPlanSchema,
94
+ ActionRequestSchema,
95
+ ActionResultSchema,
96
+ AdminActionSchema,
97
+ AdminColumnSchema,
98
+ AdminDomainIdSchema,
99
+ AdminDomainSchema,
100
+ AdminErrorSchema,
101
+ AdminManifestSchema,
102
+ AdminPolicySchema,
103
+ AdminResourceSchema,
104
+ AdminSeveritySchema,
105
+ AdminSignalSchema,
106
+ AdminStatusSchema,
37
107
  AuthProviderSchema,
38
108
  CanonicalIdentitySchema,
39
109
  CanonicalPlanSchema,
40
110
  CanonicalRoleSchema,
111
+ DEFAULT_RESUME_MARGINS,
41
112
  EventContextSchema,
42
113
  EventEnvelopeSchema,
114
+ ExperienceKindSchema,
43
115
  ExternalAccountLinkSchema,
44
116
  NebutraOAuthScopeSchema,
45
117
  NotificationChannelContractSchema,
@@ -56,10 +128,44 @@ export {
56
128
  NotificationUnreadCountResponseContractSchema,
57
129
  OAuthClientRegistrationSchema,
58
130
  OAuthClientTypeSchema,
131
+ PlanDiffEntrySchema,
59
132
  PricingCatalogVersionSchema,
133
+ RESUME_CONTENT_VERSION,
134
+ RESUME_SKILL_CATEGORIES,
135
+ ResourceListSchema,
136
+ ResumeAchievementSchema,
137
+ ResumeBasicSchema,
138
+ ResumeCertificateSchema,
139
+ ResumeContentV1Schema,
140
+ ResumeDerivedSchema,
141
+ ResumeEducationSchema,
142
+ ResumeExperienceSchema,
143
+ ResumeFundingSchema,
144
+ ResumeLangSchema,
145
+ ResumeLinksSchema,
146
+ ResumeMarginsSchema,
147
+ ResumeObjectiveSchema,
148
+ ResumeOpenSourceSchema,
149
+ ResumePatentSchema,
150
+ ResumePeriodSchema,
151
+ ResumePreferencesSchema,
152
+ ResumePressSchema,
153
+ ResumeProjectSchema,
154
+ ResumePublicationSchema,
155
+ ResumeSkillsSchema,
156
+ ResumeVentureSchema,
157
+ ResumeVolunteeringSchema,
158
+ ResumeWriteSchema,
159
+ STAFF_ROLE_RANK,
160
+ SignalReadingSchema,
161
+ StaffRoleSchema,
60
162
  TenantHeaderContractSchema,
61
163
  UsageLedgerEntryInputSchema,
62
164
  UsageLedgerSourceContractSchema,
63
- UsageTypeContractSchema
165
+ UsageTypeContractSchema,
166
+ VentureStageSchema,
167
+ assertApplyAllowed,
168
+ resolveContractUrl,
169
+ roleAtLeast
64
170
  };
65
171
  //# sourceMappingURL=index.js.map
@@ -22,10 +22,10 @@ declare const NotificationRuntimeStatusContractSchema: z.ZodObject<{
22
22
  }>;
23
23
  providerLabel: z.ZodString;
24
24
  mode: z.ZodEnum<{
25
+ degraded: "degraded";
25
26
  managed: "managed";
26
27
  self_hosted: "self_hosted";
27
28
  preview: "preview";
28
- degraded: "degraded";
29
29
  }>;
30
30
  canManagePreferences: z.ZodBoolean;
31
31
  canViewInbox: z.ZodBoolean;
@@ -0,0 +1,510 @@
1
+ import { z } from 'zod';
2
+
3
+ /**
4
+ * Sleptons résumé content contract (v1).
5
+ *
6
+ * The résumé is the structured "track record" attached 1:1 to a Sleptons member
7
+ * profile. It is stored as a JSON document (`sleptons_resumes.content`) and
8
+ * validated against this schema on every write. Derived/query columns are
9
+ * computed by the consumer (apps/sleptons), never stored inside `content`.
10
+ *
11
+ * Design source: docs/superpowers/specs/2026-09-07-sleptons-resume-system-design.md §3.
12
+ * Lineage: adapted from the CVise `Profile` Zod model (legacy, archived 2026-09-07).
13
+ */
14
+ declare const RESUME_CONTENT_VERSION: 1;
15
+ declare const ResumeLangSchema: z.ZodEnum<{
16
+ ZH: "ZH";
17
+ EN: "EN";
18
+ MIX: "MIX";
19
+ }>;
20
+ type ResumeLang = z.infer<typeof ResumeLangSchema>;
21
+ declare const ResumePeriodSchema: z.ZodString;
22
+ declare const ResumeLinksSchema: z.ZodObject<{
23
+ github: z.ZodOptional<z.ZodOptional<z.ZodString>>;
24
+ linkedin: z.ZodOptional<z.ZodOptional<z.ZodString>>;
25
+ twitter: z.ZodOptional<z.ZodOptional<z.ZodString>>;
26
+ personal: z.ZodOptional<z.ZodOptional<z.ZodString>>;
27
+ }, z.core.$strip>;
28
+ declare const ResumeBasicSchema: z.ZodObject<{
29
+ name: z.ZodString;
30
+ name_en: z.ZodOptional<z.ZodString>;
31
+ email: z.ZodOptional<z.ZodEmail>;
32
+ phone: z.ZodOptional<z.ZodString>;
33
+ location: z.ZodOptional<z.ZodString>;
34
+ website: z.ZodOptional<z.ZodURL>;
35
+ links: z.ZodOptional<z.ZodObject<{
36
+ github: z.ZodOptional<z.ZodOptional<z.ZodString>>;
37
+ linkedin: z.ZodOptional<z.ZodOptional<z.ZodString>>;
38
+ twitter: z.ZodOptional<z.ZodOptional<z.ZodString>>;
39
+ personal: z.ZodOptional<z.ZodOptional<z.ZodString>>;
40
+ }, z.core.$strip>>;
41
+ }, z.core.$strip>;
42
+ declare const ResumeObjectiveSchema: z.ZodObject<{
43
+ summary: z.ZodOptional<z.ZodString>;
44
+ advantage_tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
45
+ }, z.core.$strip>;
46
+ declare const VentureStageSchema: z.ZodEnum<{
47
+ idea: "idea";
48
+ building: "building";
49
+ launched: "launched";
50
+ scaling: "scaling";
51
+ exited: "exited";
52
+ closed: "closed";
53
+ }>;
54
+ type VentureStage = z.infer<typeof VentureStageSchema>;
55
+ declare const ResumeVentureSchema: z.ZodObject<{
56
+ name: z.ZodString;
57
+ role: z.ZodOptional<z.ZodString>;
58
+ period: z.ZodOptional<z.ZodString>;
59
+ stage: z.ZodOptional<z.ZodEnum<{
60
+ idea: "idea";
61
+ building: "building";
62
+ launched: "launched";
63
+ scaling: "scaling";
64
+ exited: "exited";
65
+ closed: "closed";
66
+ }>>;
67
+ outcome: z.ZodOptional<z.ZodString>;
68
+ url: z.ZodOptional<z.ZodURL>;
69
+ details: z.ZodOptional<z.ZodArray<z.ZodString>>;
70
+ }, z.core.$strip>;
71
+ declare const ExperienceKindSchema: z.ZodEnum<{
72
+ work: "work";
73
+ campus: "campus";
74
+ founder: "founder";
75
+ }>;
76
+ type ExperienceKind = z.infer<typeof ExperienceKindSchema>;
77
+ declare const ResumeExperienceSchema: z.ZodObject<{
78
+ kind: z.ZodDefault<z.ZodEnum<{
79
+ work: "work";
80
+ campus: "campus";
81
+ founder: "founder";
82
+ }>>;
83
+ period: z.ZodString;
84
+ org: z.ZodString;
85
+ title: z.ZodString;
86
+ details: z.ZodOptional<z.ZodArray<z.ZodString>>;
87
+ rich: z.ZodOptional<z.ZodString>;
88
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
89
+ }, z.core.$strip>;
90
+ declare const ResumeEducationSchema: z.ZodObject<{
91
+ school: z.ZodString;
92
+ school_en: z.ZodOptional<z.ZodString>;
93
+ major: z.ZodOptional<z.ZodString>;
94
+ degree: z.ZodOptional<z.ZodString>;
95
+ period: z.ZodOptional<z.ZodString>;
96
+ gpa: z.ZodOptional<z.ZodString>;
97
+ courses: z.ZodOptional<z.ZodArray<z.ZodString>>;
98
+ }, z.core.$strip>;
99
+ declare const ResumeProjectSchema: z.ZodObject<{
100
+ name: z.ZodString;
101
+ role: z.ZodOptional<z.ZodString>;
102
+ period: z.ZodOptional<z.ZodString>;
103
+ stack: z.ZodOptional<z.ZodArray<z.ZodString>>;
104
+ details: z.ZodOptional<z.ZodArray<z.ZodString>>;
105
+ links: z.ZodOptional<z.ZodArray<z.ZodString>>;
106
+ }, z.core.$strip>;
107
+ declare const ResumeAchievementSchema: z.ZodObject<{
108
+ title: z.ZodString;
109
+ level: z.ZodOptional<z.ZodString>;
110
+ year: z.ZodOptional<z.ZodString>;
111
+ }, z.core.$strip>;
112
+ declare const ResumeCertificateSchema: z.ZodObject<{
113
+ name: z.ZodString;
114
+ issuer: z.ZodOptional<z.ZodString>;
115
+ year: z.ZodOptional<z.ZodString>;
116
+ }, z.core.$strip>;
117
+ declare const RESUME_SKILL_CATEGORIES: readonly ["programming", "ai_engineering", "ai_theory", "data", "product", "finance", "tools", "ai_tools", "languages"];
118
+ type ResumeSkillCategory = (typeof RESUME_SKILL_CATEGORIES)[number];
119
+ declare const ResumeSkillsSchema: z.ZodObject<{
120
+ product: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
121
+ data: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
122
+ programming: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
123
+ ai_engineering: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
124
+ ai_theory: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
125
+ finance: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
126
+ tools: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
127
+ ai_tools: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
128
+ languages: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
129
+ }, z.core.$strip>;
130
+ declare const ResumePublicationSchema: z.ZodObject<{
131
+ title: z.ZodString;
132
+ venue: z.ZodOptional<z.ZodString>;
133
+ year: z.ZodOptional<z.ZodString>;
134
+ url: z.ZodOptional<z.ZodString>;
135
+ }, z.core.$strip>;
136
+ declare const ResumePatentSchema: z.ZodObject<{
137
+ title: z.ZodString;
138
+ id: z.ZodOptional<z.ZodString>;
139
+ year: z.ZodOptional<z.ZodString>;
140
+ status: z.ZodOptional<z.ZodString>;
141
+ }, z.core.$strip>;
142
+ declare const ResumeOpenSourceSchema: z.ZodObject<{
143
+ repo: z.ZodString;
144
+ stars: z.ZodOptional<z.ZodNumber>;
145
+ role: z.ZodOptional<z.ZodString>;
146
+ highlights: z.ZodOptional<z.ZodArray<z.ZodString>>;
147
+ }, z.core.$strip>;
148
+ declare const ResumeFundingSchema: z.ZodObject<{
149
+ round: z.ZodString;
150
+ amount: z.ZodOptional<z.ZodString>;
151
+ date: z.ZodOptional<z.ZodString>;
152
+ investors: z.ZodOptional<z.ZodArray<z.ZodString>>;
153
+ }, z.core.$strip>;
154
+ declare const ResumePressSchema: z.ZodObject<{
155
+ title: z.ZodString;
156
+ outlet: z.ZodOptional<z.ZodString>;
157
+ url: z.ZodOptional<z.ZodURL>;
158
+ date: z.ZodOptional<z.ZodString>;
159
+ }, z.core.$strip>;
160
+ declare const ResumeVolunteeringSchema: z.ZodObject<{
161
+ org: z.ZodString;
162
+ role: z.ZodOptional<z.ZodString>;
163
+ period: z.ZodOptional<z.ZodString>;
164
+ details: z.ZodOptional<z.ZodArray<z.ZodString>>;
165
+ }, z.core.$strip>;
166
+ declare const ResumeMarginsSchema: z.ZodObject<{
167
+ top: z.ZodString;
168
+ right: z.ZodString;
169
+ bottom: z.ZodString;
170
+ left: z.ZodString;
171
+ }, z.core.$strip>;
172
+ declare const DEFAULT_RESUME_MARGINS: {
173
+ readonly top: "12mm";
174
+ readonly right: "12mm";
175
+ readonly bottom: "12mm";
176
+ readonly left: "12mm";
177
+ };
178
+ declare const ResumePreferencesSchema: z.ZodObject<{
179
+ length: z.ZodDefault<z.ZodEnum<{
180
+ "1page": "1page";
181
+ "2pages": "2pages";
182
+ }>>;
183
+ show_icons: z.ZodDefault<z.ZodBoolean>;
184
+ show_contact_public: z.ZodDefault<z.ZodBoolean>;
185
+ paper: z.ZodDefault<z.ZodEnum<{
186
+ A4: "A4";
187
+ Letter: "Letter";
188
+ }>>;
189
+ margins: z.ZodDefault<z.ZodObject<{
190
+ top: z.ZodString;
191
+ right: z.ZodString;
192
+ bottom: z.ZodString;
193
+ left: z.ZodString;
194
+ }, z.core.$strip>>;
195
+ max_bullets_per_entry: z.ZodDefault<z.ZodNumber>;
196
+ section_order: z.ZodOptional<z.ZodArray<z.ZodString>>;
197
+ }, z.core.$strip>;
198
+ declare const ResumeContentV1Schema: z.ZodObject<{
199
+ version: z.ZodDefault<z.ZodLiteral<1>>;
200
+ basic: z.ZodObject<{
201
+ name: z.ZodString;
202
+ name_en: z.ZodOptional<z.ZodString>;
203
+ email: z.ZodOptional<z.ZodEmail>;
204
+ phone: z.ZodOptional<z.ZodString>;
205
+ location: z.ZodOptional<z.ZodString>;
206
+ website: z.ZodOptional<z.ZodURL>;
207
+ links: z.ZodOptional<z.ZodObject<{
208
+ github: z.ZodOptional<z.ZodOptional<z.ZodString>>;
209
+ linkedin: z.ZodOptional<z.ZodOptional<z.ZodString>>;
210
+ twitter: z.ZodOptional<z.ZodOptional<z.ZodString>>;
211
+ personal: z.ZodOptional<z.ZodOptional<z.ZodString>>;
212
+ }, z.core.$strip>>;
213
+ }, z.core.$strip>;
214
+ objective: z.ZodDefault<z.ZodObject<{
215
+ summary: z.ZodOptional<z.ZodString>;
216
+ advantage_tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
217
+ }, z.core.$strip>>;
218
+ ventures: z.ZodOptional<z.ZodArray<z.ZodObject<{
219
+ name: z.ZodString;
220
+ role: z.ZodOptional<z.ZodString>;
221
+ period: z.ZodOptional<z.ZodString>;
222
+ stage: z.ZodOptional<z.ZodEnum<{
223
+ idea: "idea";
224
+ building: "building";
225
+ launched: "launched";
226
+ scaling: "scaling";
227
+ exited: "exited";
228
+ closed: "closed";
229
+ }>>;
230
+ outcome: z.ZodOptional<z.ZodString>;
231
+ url: z.ZodOptional<z.ZodURL>;
232
+ details: z.ZodOptional<z.ZodArray<z.ZodString>>;
233
+ }, z.core.$strip>>>;
234
+ experiences: z.ZodOptional<z.ZodArray<z.ZodObject<{
235
+ kind: z.ZodDefault<z.ZodEnum<{
236
+ work: "work";
237
+ campus: "campus";
238
+ founder: "founder";
239
+ }>>;
240
+ period: z.ZodString;
241
+ org: z.ZodString;
242
+ title: z.ZodString;
243
+ details: z.ZodOptional<z.ZodArray<z.ZodString>>;
244
+ rich: z.ZodOptional<z.ZodString>;
245
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
246
+ }, z.core.$strip>>>;
247
+ education: z.ZodOptional<z.ZodArray<z.ZodObject<{
248
+ school: z.ZodString;
249
+ school_en: z.ZodOptional<z.ZodString>;
250
+ major: z.ZodOptional<z.ZodString>;
251
+ degree: z.ZodOptional<z.ZodString>;
252
+ period: z.ZodOptional<z.ZodString>;
253
+ gpa: z.ZodOptional<z.ZodString>;
254
+ courses: z.ZodOptional<z.ZodArray<z.ZodString>>;
255
+ }, z.core.$strip>>>;
256
+ projects: z.ZodOptional<z.ZodArray<z.ZodObject<{
257
+ name: z.ZodString;
258
+ role: z.ZodOptional<z.ZodString>;
259
+ period: z.ZodOptional<z.ZodString>;
260
+ stack: z.ZodOptional<z.ZodArray<z.ZodString>>;
261
+ details: z.ZodOptional<z.ZodArray<z.ZodString>>;
262
+ links: z.ZodOptional<z.ZodArray<z.ZodString>>;
263
+ }, z.core.$strip>>>;
264
+ achievements: z.ZodOptional<z.ZodArray<z.ZodObject<{
265
+ title: z.ZodString;
266
+ level: z.ZodOptional<z.ZodString>;
267
+ year: z.ZodOptional<z.ZodString>;
268
+ }, z.core.$strip>>>;
269
+ certificates: z.ZodOptional<z.ZodArray<z.ZodObject<{
270
+ name: z.ZodString;
271
+ issuer: z.ZodOptional<z.ZodString>;
272
+ year: z.ZodOptional<z.ZodString>;
273
+ }, z.core.$strip>>>;
274
+ skills: z.ZodOptional<z.ZodObject<{
275
+ product: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
276
+ data: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
277
+ programming: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
278
+ ai_engineering: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
279
+ ai_theory: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
280
+ finance: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
281
+ tools: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
282
+ ai_tools: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
283
+ languages: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
284
+ }, z.core.$strip>>;
285
+ publications: z.ZodOptional<z.ZodArray<z.ZodObject<{
286
+ title: z.ZodString;
287
+ venue: z.ZodOptional<z.ZodString>;
288
+ year: z.ZodOptional<z.ZodString>;
289
+ url: z.ZodOptional<z.ZodString>;
290
+ }, z.core.$strip>>>;
291
+ patents: z.ZodOptional<z.ZodArray<z.ZodObject<{
292
+ title: z.ZodString;
293
+ id: z.ZodOptional<z.ZodString>;
294
+ year: z.ZodOptional<z.ZodString>;
295
+ status: z.ZodOptional<z.ZodString>;
296
+ }, z.core.$strip>>>;
297
+ opensource: z.ZodOptional<z.ZodArray<z.ZodObject<{
298
+ repo: z.ZodString;
299
+ stars: z.ZodOptional<z.ZodNumber>;
300
+ role: z.ZodOptional<z.ZodString>;
301
+ highlights: z.ZodOptional<z.ZodArray<z.ZodString>>;
302
+ }, z.core.$strip>>>;
303
+ funding: z.ZodOptional<z.ZodArray<z.ZodObject<{
304
+ round: z.ZodString;
305
+ amount: z.ZodOptional<z.ZodString>;
306
+ date: z.ZodOptional<z.ZodString>;
307
+ investors: z.ZodOptional<z.ZodArray<z.ZodString>>;
308
+ }, z.core.$strip>>>;
309
+ press: z.ZodOptional<z.ZodArray<z.ZodObject<{
310
+ title: z.ZodString;
311
+ outlet: z.ZodOptional<z.ZodString>;
312
+ url: z.ZodOptional<z.ZodURL>;
313
+ date: z.ZodOptional<z.ZodString>;
314
+ }, z.core.$strip>>>;
315
+ volunteering: z.ZodOptional<z.ZodArray<z.ZodObject<{
316
+ org: z.ZodString;
317
+ role: z.ZodOptional<z.ZodString>;
318
+ period: z.ZodOptional<z.ZodString>;
319
+ details: z.ZodOptional<z.ZodArray<z.ZodString>>;
320
+ }, z.core.$strip>>>;
321
+ interests: z.ZodOptional<z.ZodArray<z.ZodString>>;
322
+ preferences: z.ZodPrefault<z.ZodObject<{
323
+ length: z.ZodDefault<z.ZodEnum<{
324
+ "1page": "1page";
325
+ "2pages": "2pages";
326
+ }>>;
327
+ show_icons: z.ZodDefault<z.ZodBoolean>;
328
+ show_contact_public: z.ZodDefault<z.ZodBoolean>;
329
+ paper: z.ZodDefault<z.ZodEnum<{
330
+ A4: "A4";
331
+ Letter: "Letter";
332
+ }>>;
333
+ margins: z.ZodDefault<z.ZodObject<{
334
+ top: z.ZodString;
335
+ right: z.ZodString;
336
+ bottom: z.ZodString;
337
+ left: z.ZodString;
338
+ }, z.core.$strip>>;
339
+ max_bullets_per_entry: z.ZodDefault<z.ZodNumber>;
340
+ section_order: z.ZodOptional<z.ZodArray<z.ZodString>>;
341
+ }, z.core.$strip>>;
342
+ }, z.core.$strip>;
343
+ type ResumeContentV1 = z.infer<typeof ResumeContentV1Schema>;
344
+ type ResumeContentV1Input = z.input<typeof ResumeContentV1Schema>;
345
+ /** Write payload accepted by `PUT /api/resume`. */
346
+ declare const ResumeWriteSchema: z.ZodObject<{
347
+ content: z.ZodObject<{
348
+ version: z.ZodDefault<z.ZodLiteral<1>>;
349
+ basic: z.ZodObject<{
350
+ name: z.ZodString;
351
+ name_en: z.ZodOptional<z.ZodString>;
352
+ email: z.ZodOptional<z.ZodEmail>;
353
+ phone: z.ZodOptional<z.ZodString>;
354
+ location: z.ZodOptional<z.ZodString>;
355
+ website: z.ZodOptional<z.ZodURL>;
356
+ links: z.ZodOptional<z.ZodObject<{
357
+ github: z.ZodOptional<z.ZodOptional<z.ZodString>>;
358
+ linkedin: z.ZodOptional<z.ZodOptional<z.ZodString>>;
359
+ twitter: z.ZodOptional<z.ZodOptional<z.ZodString>>;
360
+ personal: z.ZodOptional<z.ZodOptional<z.ZodString>>;
361
+ }, z.core.$strip>>;
362
+ }, z.core.$strip>;
363
+ objective: z.ZodDefault<z.ZodObject<{
364
+ summary: z.ZodOptional<z.ZodString>;
365
+ advantage_tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
366
+ }, z.core.$strip>>;
367
+ ventures: z.ZodOptional<z.ZodArray<z.ZodObject<{
368
+ name: z.ZodString;
369
+ role: z.ZodOptional<z.ZodString>;
370
+ period: z.ZodOptional<z.ZodString>;
371
+ stage: z.ZodOptional<z.ZodEnum<{
372
+ idea: "idea";
373
+ building: "building";
374
+ launched: "launched";
375
+ scaling: "scaling";
376
+ exited: "exited";
377
+ closed: "closed";
378
+ }>>;
379
+ outcome: z.ZodOptional<z.ZodString>;
380
+ url: z.ZodOptional<z.ZodURL>;
381
+ details: z.ZodOptional<z.ZodArray<z.ZodString>>;
382
+ }, z.core.$strip>>>;
383
+ experiences: z.ZodOptional<z.ZodArray<z.ZodObject<{
384
+ kind: z.ZodDefault<z.ZodEnum<{
385
+ work: "work";
386
+ campus: "campus";
387
+ founder: "founder";
388
+ }>>;
389
+ period: z.ZodString;
390
+ org: z.ZodString;
391
+ title: z.ZodString;
392
+ details: z.ZodOptional<z.ZodArray<z.ZodString>>;
393
+ rich: z.ZodOptional<z.ZodString>;
394
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
395
+ }, z.core.$strip>>>;
396
+ education: z.ZodOptional<z.ZodArray<z.ZodObject<{
397
+ school: z.ZodString;
398
+ school_en: z.ZodOptional<z.ZodString>;
399
+ major: z.ZodOptional<z.ZodString>;
400
+ degree: z.ZodOptional<z.ZodString>;
401
+ period: z.ZodOptional<z.ZodString>;
402
+ gpa: z.ZodOptional<z.ZodString>;
403
+ courses: z.ZodOptional<z.ZodArray<z.ZodString>>;
404
+ }, z.core.$strip>>>;
405
+ projects: z.ZodOptional<z.ZodArray<z.ZodObject<{
406
+ name: z.ZodString;
407
+ role: z.ZodOptional<z.ZodString>;
408
+ period: z.ZodOptional<z.ZodString>;
409
+ stack: z.ZodOptional<z.ZodArray<z.ZodString>>;
410
+ details: z.ZodOptional<z.ZodArray<z.ZodString>>;
411
+ links: z.ZodOptional<z.ZodArray<z.ZodString>>;
412
+ }, z.core.$strip>>>;
413
+ achievements: z.ZodOptional<z.ZodArray<z.ZodObject<{
414
+ title: z.ZodString;
415
+ level: z.ZodOptional<z.ZodString>;
416
+ year: z.ZodOptional<z.ZodString>;
417
+ }, z.core.$strip>>>;
418
+ certificates: z.ZodOptional<z.ZodArray<z.ZodObject<{
419
+ name: z.ZodString;
420
+ issuer: z.ZodOptional<z.ZodString>;
421
+ year: z.ZodOptional<z.ZodString>;
422
+ }, z.core.$strip>>>;
423
+ skills: z.ZodOptional<z.ZodObject<{
424
+ product: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
425
+ data: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
426
+ programming: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
427
+ ai_engineering: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
428
+ ai_theory: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
429
+ finance: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
430
+ tools: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
431
+ ai_tools: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
432
+ languages: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
433
+ }, z.core.$strip>>;
434
+ publications: z.ZodOptional<z.ZodArray<z.ZodObject<{
435
+ title: z.ZodString;
436
+ venue: z.ZodOptional<z.ZodString>;
437
+ year: z.ZodOptional<z.ZodString>;
438
+ url: z.ZodOptional<z.ZodString>;
439
+ }, z.core.$strip>>>;
440
+ patents: z.ZodOptional<z.ZodArray<z.ZodObject<{
441
+ title: z.ZodString;
442
+ id: z.ZodOptional<z.ZodString>;
443
+ year: z.ZodOptional<z.ZodString>;
444
+ status: z.ZodOptional<z.ZodString>;
445
+ }, z.core.$strip>>>;
446
+ opensource: z.ZodOptional<z.ZodArray<z.ZodObject<{
447
+ repo: z.ZodString;
448
+ stars: z.ZodOptional<z.ZodNumber>;
449
+ role: z.ZodOptional<z.ZodString>;
450
+ highlights: z.ZodOptional<z.ZodArray<z.ZodString>>;
451
+ }, z.core.$strip>>>;
452
+ funding: z.ZodOptional<z.ZodArray<z.ZodObject<{
453
+ round: z.ZodString;
454
+ amount: z.ZodOptional<z.ZodString>;
455
+ date: z.ZodOptional<z.ZodString>;
456
+ investors: z.ZodOptional<z.ZodArray<z.ZodString>>;
457
+ }, z.core.$strip>>>;
458
+ press: z.ZodOptional<z.ZodArray<z.ZodObject<{
459
+ title: z.ZodString;
460
+ outlet: z.ZodOptional<z.ZodString>;
461
+ url: z.ZodOptional<z.ZodURL>;
462
+ date: z.ZodOptional<z.ZodString>;
463
+ }, z.core.$strip>>>;
464
+ volunteering: z.ZodOptional<z.ZodArray<z.ZodObject<{
465
+ org: z.ZodString;
466
+ role: z.ZodOptional<z.ZodString>;
467
+ period: z.ZodOptional<z.ZodString>;
468
+ details: z.ZodOptional<z.ZodArray<z.ZodString>>;
469
+ }, z.core.$strip>>>;
470
+ interests: z.ZodOptional<z.ZodArray<z.ZodString>>;
471
+ preferences: z.ZodPrefault<z.ZodObject<{
472
+ length: z.ZodDefault<z.ZodEnum<{
473
+ "1page": "1page";
474
+ "2pages": "2pages";
475
+ }>>;
476
+ show_icons: z.ZodDefault<z.ZodBoolean>;
477
+ show_contact_public: z.ZodDefault<z.ZodBoolean>;
478
+ paper: z.ZodDefault<z.ZodEnum<{
479
+ A4: "A4";
480
+ Letter: "Letter";
481
+ }>>;
482
+ margins: z.ZodDefault<z.ZodObject<{
483
+ top: z.ZodString;
484
+ right: z.ZodString;
485
+ bottom: z.ZodString;
486
+ left: z.ZodString;
487
+ }, z.core.$strip>>;
488
+ max_bullets_per_entry: z.ZodDefault<z.ZodNumber>;
489
+ section_order: z.ZodOptional<z.ZodArray<z.ZodString>>;
490
+ }, z.core.$strip>>;
491
+ }, z.core.$strip>;
492
+ is_public: z.ZodOptional<z.ZodBoolean>;
493
+ language: z.ZodOptional<z.ZodEnum<{
494
+ ZH: "ZH";
495
+ EN: "EN";
496
+ MIX: "MIX";
497
+ }>>;
498
+ }, z.core.$strip>;
499
+ type ResumeWrite = z.infer<typeof ResumeWriteSchema>;
500
+ /** Columns derived from `content` on every save; see apps/sleptons/src/lib/resume/derive.ts. */
501
+ declare const ResumeDerivedSchema: z.ZodObject<{
502
+ headline: z.ZodNullable<z.ZodString>;
503
+ skills_flat: z.ZodArray<z.ZodString>;
504
+ highlights: z.ZodArray<z.ZodString>;
505
+ years_active: z.ZodNullable<z.ZodNumber>;
506
+ completeness: z.ZodNumber;
507
+ }, z.core.$strip>;
508
+ type ResumeDerived = z.infer<typeof ResumeDerivedSchema>;
509
+
510
+ export { DEFAULT_RESUME_MARGINS, type ExperienceKind, ExperienceKindSchema, RESUME_CONTENT_VERSION, RESUME_SKILL_CATEGORIES, ResumeAchievementSchema, ResumeBasicSchema, ResumeCertificateSchema, type ResumeContentV1, type ResumeContentV1Input, ResumeContentV1Schema, type ResumeDerived, ResumeDerivedSchema, ResumeEducationSchema, ResumeExperienceSchema, ResumeFundingSchema, type ResumeLang, ResumeLangSchema, ResumeLinksSchema, ResumeMarginsSchema, ResumeObjectiveSchema, ResumeOpenSourceSchema, ResumePatentSchema, ResumePeriodSchema, ResumePreferencesSchema, ResumePressSchema, ResumeProjectSchema, ResumePublicationSchema, type ResumeSkillCategory, ResumeSkillsSchema, ResumeVentureSchema, ResumeVolunteeringSchema, type ResumeWrite, ResumeWriteSchema, type VentureStage, VentureStageSchema };