@nebutra/contracts 0.1.2 → 3.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,30 @@
1
+ import {
2
+ ADMIN_CONTRACT_VERSION,
3
+ ADMIN_ERROR_STATUS,
4
+ ActionPlanSchema,
5
+ ActionRequestSchema,
6
+ ActionResultSchema,
7
+ AdminActionSchema,
8
+ AdminColumnSchema,
9
+ AdminDomainIdSchema,
10
+ AdminDomainSchema,
11
+ AdminErrorSchema,
12
+ AdminManifestSchema,
13
+ AdminPolicySchema,
14
+ AdminResourceSchema,
15
+ AdminSeveritySchema,
16
+ AdminSignalSchema,
17
+ AdminStatusSchema,
18
+ PlanDiffEntrySchema,
19
+ ResourceListSchema,
20
+ STAFF_ROLE_RANK,
21
+ SignalReadingSchema,
22
+ StaffRoleSchema,
23
+ assertApplyAllowed,
24
+ cdnSafeStatus,
25
+ resolveContractUrl,
26
+ roleAtLeast
27
+ } from "./chunk-G65TWQGE.js";
1
28
  import {
2
29
  PricingCatalogVersionSchema,
3
30
  UsageLedgerEntryInputSchema,
@@ -32,14 +59,62 @@ import {
32
59
  NotificationSettingsUpdateRequestContractSchema,
33
60
  NotificationSettingsUpdateResponseContractSchema,
34
61
  NotificationUnreadCountResponseContractSchema
35
- } from "./chunk-F4BR76CX.js";
62
+ } from "./chunk-BX2ZIODN.js";
63
+ import {
64
+ DEFAULT_RESUME_MARGINS,
65
+ ExperienceKindSchema,
66
+ RESUME_CONTENT_VERSION,
67
+ RESUME_SKILL_CATEGORIES,
68
+ ResumeAchievementSchema,
69
+ ResumeBasicSchema,
70
+ ResumeCertificateSchema,
71
+ ResumeContentV1Schema,
72
+ ResumeDerivedSchema,
73
+ ResumeEducationSchema,
74
+ ResumeExperienceSchema,
75
+ ResumeFundingSchema,
76
+ ResumeLangSchema,
77
+ ResumeLinksSchema,
78
+ ResumeMarginsSchema,
79
+ ResumeObjectiveSchema,
80
+ ResumeOpenSourceSchema,
81
+ ResumePatentSchema,
82
+ ResumePeriodSchema,
83
+ ResumePreferencesSchema,
84
+ ResumePressSchema,
85
+ ResumeProjectSchema,
86
+ ResumePublicationSchema,
87
+ ResumeSkillsSchema,
88
+ ResumeVentureSchema,
89
+ ResumeVolunteeringSchema,
90
+ ResumeWriteSchema,
91
+ VentureStageSchema
92
+ } from "./chunk-PU65L2HQ.js";
36
93
  export {
94
+ ADMIN_CONTRACT_VERSION,
95
+ ADMIN_ERROR_STATUS,
96
+ ActionPlanSchema,
97
+ ActionRequestSchema,
98
+ ActionResultSchema,
99
+ AdminActionSchema,
100
+ AdminColumnSchema,
101
+ AdminDomainIdSchema,
102
+ AdminDomainSchema,
103
+ AdminErrorSchema,
104
+ AdminManifestSchema,
105
+ AdminPolicySchema,
106
+ AdminResourceSchema,
107
+ AdminSeveritySchema,
108
+ AdminSignalSchema,
109
+ AdminStatusSchema,
37
110
  AuthProviderSchema,
38
111
  CanonicalIdentitySchema,
39
112
  CanonicalPlanSchema,
40
113
  CanonicalRoleSchema,
114
+ DEFAULT_RESUME_MARGINS,
41
115
  EventContextSchema,
42
116
  EventEnvelopeSchema,
117
+ ExperienceKindSchema,
43
118
  ExternalAccountLinkSchema,
44
119
  NebutraOAuthScopeSchema,
45
120
  NotificationChannelContractSchema,
@@ -56,10 +131,45 @@ export {
56
131
  NotificationUnreadCountResponseContractSchema,
57
132
  OAuthClientRegistrationSchema,
58
133
  OAuthClientTypeSchema,
134
+ PlanDiffEntrySchema,
59
135
  PricingCatalogVersionSchema,
136
+ RESUME_CONTENT_VERSION,
137
+ RESUME_SKILL_CATEGORIES,
138
+ ResourceListSchema,
139
+ ResumeAchievementSchema,
140
+ ResumeBasicSchema,
141
+ ResumeCertificateSchema,
142
+ ResumeContentV1Schema,
143
+ ResumeDerivedSchema,
144
+ ResumeEducationSchema,
145
+ ResumeExperienceSchema,
146
+ ResumeFundingSchema,
147
+ ResumeLangSchema,
148
+ ResumeLinksSchema,
149
+ ResumeMarginsSchema,
150
+ ResumeObjectiveSchema,
151
+ ResumeOpenSourceSchema,
152
+ ResumePatentSchema,
153
+ ResumePeriodSchema,
154
+ ResumePreferencesSchema,
155
+ ResumePressSchema,
156
+ ResumeProjectSchema,
157
+ ResumePublicationSchema,
158
+ ResumeSkillsSchema,
159
+ ResumeVentureSchema,
160
+ ResumeVolunteeringSchema,
161
+ ResumeWriteSchema,
162
+ STAFF_ROLE_RANK,
163
+ SignalReadingSchema,
164
+ StaffRoleSchema,
60
165
  TenantHeaderContractSchema,
61
166
  UsageLedgerEntryInputSchema,
62
167
  UsageLedgerSourceContractSchema,
63
- UsageTypeContractSchema
168
+ UsageTypeContractSchema,
169
+ VentureStageSchema,
170
+ assertApplyAllowed,
171
+ cdnSafeStatus,
172
+ resolveContractUrl,
173
+ roleAtLeast
64
174
  };
65
175
  //# sourceMappingURL=index.js.map
@@ -17,15 +17,12 @@ declare const NotificationFrequencyContractSchema: z.ZodEnum<{
17
17
  type NotificationFrequencyContract = z.infer<typeof NotificationFrequencyContractSchema>;
18
18
  declare const NotificationRuntimeStatusContractSchema: z.ZodObject<{
19
19
  provider: z.ZodEnum<{
20
- novu: "novu";
21
20
  direct: "direct";
22
21
  }>;
23
22
  providerLabel: z.ZodString;
24
23
  mode: z.ZodEnum<{
25
- managed: "managed";
26
24
  self_hosted: "self_hosted";
27
25
  preview: "preview";
28
- degraded: "degraded";
29
26
  }>;
30
27
  canManagePreferences: z.ZodBoolean;
31
28
  canViewInbox: z.ZodBoolean;
@@ -11,7 +11,7 @@ import {
11
11
  NotificationSettingsUpdateRequestContractSchema,
12
12
  NotificationSettingsUpdateResponseContractSchema,
13
13
  NotificationUnreadCountResponseContractSchema
14
- } from "./chunk-F4BR76CX.js";
14
+ } from "./chunk-BX2ZIODN.js";
15
15
  export {
16
16
  NotificationChannelContractSchema,
17
17
  NotificationFrequencyContractSchema,
@@ -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 };