@contractspec/example.learning-journey-crm-onboarding 3.7.19 → 4.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.
@@ -1,8 +1,12 @@
1
- export declare const CrmOnboardingTrackModel: import("@contractspec/lib.schema").SchemaModel<{
1
+ export declare const CrmJourneyTrackModel: import("@contractspec/lib.schema").SchemaModel<{
2
2
  id: {
3
3
  type: import("@contractspec/lib.schema").FieldType<string, string>;
4
4
  isOptional: false;
5
5
  };
6
+ productId: {
7
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
8
+ isOptional: true;
9
+ };
6
10
  name: {
7
11
  type: import("@contractspec/lib.schema").FieldType<string, string>;
8
12
  isOptional: false;
@@ -11,24 +15,49 @@ export declare const CrmOnboardingTrackModel: import("@contractspec/lib.schema")
11
15
  type: import("@contractspec/lib.schema").FieldType<string, string>;
12
16
  isOptional: true;
13
17
  };
18
+ targetUserSegment: {
19
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
20
+ isOptional: true;
21
+ };
22
+ targetRole: {
23
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
24
+ isOptional: true;
25
+ };
14
26
  totalXp: {
15
27
  type: import("@contractspec/lib.schema").FieldType<number, number>;
16
28
  isOptional: true;
17
29
  };
18
- completionXpBonus: {
19
- type: import("@contractspec/lib.schema").FieldType<number, number>;
30
+ isActive: {
31
+ type: import("@contractspec/lib.schema").FieldType<boolean, boolean>;
20
32
  isOptional: true;
21
33
  };
22
- completionBadgeKey: {
23
- type: import("@contractspec/lib.schema").FieldType<string, string>;
34
+ isRequired: {
35
+ type: import("@contractspec/lib.schema").FieldType<boolean, boolean>;
24
36
  isOptional: true;
25
37
  };
26
- streakHoursWindow: {
27
- type: import("@contractspec/lib.schema").FieldType<number, number>;
38
+ canSkip: {
39
+ type: import("@contractspec/lib.schema").FieldType<boolean, boolean>;
28
40
  isOptional: true;
29
41
  };
30
- streakBonusXp: {
31
- type: import("@contractspec/lib.schema").FieldType<number, number>;
42
+ streakRule: {
43
+ type: import("@contractspec/lib.schema").FieldType<unknown, unknown>;
44
+ isOptional: true;
45
+ };
46
+ completionRewards: {
47
+ type: import("@contractspec/lib.schema").SchemaModel<{
48
+ badgeKey: {
49
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
50
+ isOptional: true;
51
+ };
52
+ xp: {
53
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
54
+ isOptional: true;
55
+ };
56
+ }>;
57
+ isOptional: true;
58
+ };
59
+ metadata: {
60
+ type: import("@contractspec/lib.schema").FieldType<unknown, unknown>;
32
61
  isOptional: true;
33
62
  };
34
63
  steps: {
@@ -45,20 +74,126 @@ export declare const CrmOnboardingTrackModel: import("@contractspec/lib.schema")
45
74
  type: import("@contractspec/lib.schema").FieldType<string, string>;
46
75
  isOptional: true;
47
76
  };
48
- completionEvent: {
77
+ instructions: {
49
78
  type: import("@contractspec/lib.schema").FieldType<string, string>;
79
+ isOptional: true;
80
+ };
81
+ helpUrl: {
82
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
83
+ isOptional: true;
84
+ };
85
+ order: {
86
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
87
+ isOptional: true;
88
+ };
89
+ completion: {
90
+ type: import("@contractspec/lib.schema").SchemaModel<{
91
+ kind: {
92
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
93
+ isOptional: true;
94
+ };
95
+ eventName: {
96
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
97
+ isOptional: false;
98
+ };
99
+ eventVersion: {
100
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
101
+ isOptional: true;
102
+ };
103
+ sourceModule: {
104
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
105
+ isOptional: true;
106
+ };
107
+ payloadFilter: {
108
+ type: import("@contractspec/lib.schema").FieldType<unknown, unknown>;
109
+ isOptional: true;
110
+ };
111
+ atLeast: {
112
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
113
+ isOptional: true;
114
+ };
115
+ withinHours: {
116
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
117
+ isOptional: true;
118
+ };
119
+ withinHoursOfStart: {
120
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
121
+ isOptional: true;
122
+ };
123
+ availableAfterHours: {
124
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
125
+ isOptional: true;
126
+ };
127
+ skillIdField: {
128
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
129
+ isOptional: true;
130
+ };
131
+ masteryField: {
132
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
133
+ isOptional: true;
134
+ };
135
+ minimumMastery: {
136
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
137
+ isOptional: true;
138
+ };
139
+ requiredCount: {
140
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
141
+ isOptional: true;
142
+ };
143
+ }>;
50
144
  isOptional: false;
51
145
  };
52
- sourceModule: {
146
+ availability: {
147
+ type: import("@contractspec/lib.schema").FieldType<unknown, unknown>;
148
+ isOptional: true;
149
+ };
150
+ prerequisites: {
151
+ type: import("@contractspec/lib.schema").FieldType<unknown, unknown>;
152
+ isOptional: true;
153
+ };
154
+ prerequisiteMode: {
53
155
  type: import("@contractspec/lib.schema").FieldType<string, string>;
54
156
  isOptional: true;
55
157
  };
158
+ branches: {
159
+ type: import("@contractspec/lib.schema").FieldType<unknown, unknown>;
160
+ isOptional: true;
161
+ };
162
+ reward: {
163
+ type: import("@contractspec/lib.schema").SchemaModel<{
164
+ badgeKey: {
165
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
166
+ isOptional: true;
167
+ };
168
+ xp: {
169
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
170
+ isOptional: true;
171
+ };
172
+ }>;
173
+ isOptional: true;
174
+ };
56
175
  xpReward: {
57
176
  type: import("@contractspec/lib.schema").FieldType<number, number>;
58
177
  isOptional: true;
59
178
  };
60
- order: {
61
- type: import("@contractspec/lib.schema").FieldType<number, number>;
179
+ isRequired: {
180
+ type: import("@contractspec/lib.schema").FieldType<boolean, boolean>;
181
+ isOptional: true;
182
+ };
183
+ canSkip: {
184
+ type: import("@contractspec/lib.schema").FieldType<boolean, boolean>;
185
+ isOptional: true;
186
+ };
187
+ actionUrl: {
188
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
189
+ isOptional: true;
190
+ };
191
+ actionLabel: {
192
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
193
+ isOptional: true;
194
+ };
195
+ metadata: {
196
+ type: import("@contractspec/lib.schema").FieldType<unknown, unknown>;
62
197
  isOptional: true;
63
198
  };
64
199
  }>;
@@ -73,6 +208,10 @@ export declare const GetCrmOnboardingTrack: import("@contractspec/lib.contracts-
73
208
  type: import("@contractspec/lib.schema").FieldType<string, string>;
74
209
  isOptional: false;
75
210
  };
211
+ productId: {
212
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
213
+ isOptional: true;
214
+ };
76
215
  name: {
77
216
  type: import("@contractspec/lib.schema").FieldType<string, string>;
78
217
  isOptional: false;
@@ -81,24 +220,49 @@ export declare const GetCrmOnboardingTrack: import("@contractspec/lib.contracts-
81
220
  type: import("@contractspec/lib.schema").FieldType<string, string>;
82
221
  isOptional: true;
83
222
  };
223
+ targetUserSegment: {
224
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
225
+ isOptional: true;
226
+ };
227
+ targetRole: {
228
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
229
+ isOptional: true;
230
+ };
84
231
  totalXp: {
85
232
  type: import("@contractspec/lib.schema").FieldType<number, number>;
86
233
  isOptional: true;
87
234
  };
88
- completionXpBonus: {
89
- type: import("@contractspec/lib.schema").FieldType<number, number>;
235
+ isActive: {
236
+ type: import("@contractspec/lib.schema").FieldType<boolean, boolean>;
90
237
  isOptional: true;
91
238
  };
92
- completionBadgeKey: {
93
- type: import("@contractspec/lib.schema").FieldType<string, string>;
239
+ isRequired: {
240
+ type: import("@contractspec/lib.schema").FieldType<boolean, boolean>;
94
241
  isOptional: true;
95
242
  };
96
- streakHoursWindow: {
97
- type: import("@contractspec/lib.schema").FieldType<number, number>;
243
+ canSkip: {
244
+ type: import("@contractspec/lib.schema").FieldType<boolean, boolean>;
98
245
  isOptional: true;
99
246
  };
100
- streakBonusXp: {
101
- type: import("@contractspec/lib.schema").FieldType<number, number>;
247
+ streakRule: {
248
+ type: import("@contractspec/lib.schema").FieldType<unknown, unknown>;
249
+ isOptional: true;
250
+ };
251
+ completionRewards: {
252
+ type: import("@contractspec/lib.schema").SchemaModel<{
253
+ badgeKey: {
254
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
255
+ isOptional: true;
256
+ };
257
+ xp: {
258
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
259
+ isOptional: true;
260
+ };
261
+ }>;
262
+ isOptional: true;
263
+ };
264
+ metadata: {
265
+ type: import("@contractspec/lib.schema").FieldType<unknown, unknown>;
102
266
  isOptional: true;
103
267
  };
104
268
  steps: {
@@ -115,20 +279,126 @@ export declare const GetCrmOnboardingTrack: import("@contractspec/lib.contracts-
115
279
  type: import("@contractspec/lib.schema").FieldType<string, string>;
116
280
  isOptional: true;
117
281
  };
118
- completionEvent: {
282
+ instructions: {
283
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
284
+ isOptional: true;
285
+ };
286
+ helpUrl: {
119
287
  type: import("@contractspec/lib.schema").FieldType<string, string>;
288
+ isOptional: true;
289
+ };
290
+ order: {
291
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
292
+ isOptional: true;
293
+ };
294
+ completion: {
295
+ type: import("@contractspec/lib.schema").SchemaModel<{
296
+ kind: {
297
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
298
+ isOptional: true;
299
+ };
300
+ eventName: {
301
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
302
+ isOptional: false;
303
+ };
304
+ eventVersion: {
305
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
306
+ isOptional: true;
307
+ };
308
+ sourceModule: {
309
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
310
+ isOptional: true;
311
+ };
312
+ payloadFilter: {
313
+ type: import("@contractspec/lib.schema").FieldType<unknown, unknown>;
314
+ isOptional: true;
315
+ };
316
+ atLeast: {
317
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
318
+ isOptional: true;
319
+ };
320
+ withinHours: {
321
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
322
+ isOptional: true;
323
+ };
324
+ withinHoursOfStart: {
325
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
326
+ isOptional: true;
327
+ };
328
+ availableAfterHours: {
329
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
330
+ isOptional: true;
331
+ };
332
+ skillIdField: {
333
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
334
+ isOptional: true;
335
+ };
336
+ masteryField: {
337
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
338
+ isOptional: true;
339
+ };
340
+ minimumMastery: {
341
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
342
+ isOptional: true;
343
+ };
344
+ requiredCount: {
345
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
346
+ isOptional: true;
347
+ };
348
+ }>;
120
349
  isOptional: false;
121
350
  };
122
- sourceModule: {
351
+ availability: {
352
+ type: import("@contractspec/lib.schema").FieldType<unknown, unknown>;
353
+ isOptional: true;
354
+ };
355
+ prerequisites: {
356
+ type: import("@contractspec/lib.schema").FieldType<unknown, unknown>;
357
+ isOptional: true;
358
+ };
359
+ prerequisiteMode: {
123
360
  type: import("@contractspec/lib.schema").FieldType<string, string>;
124
361
  isOptional: true;
125
362
  };
363
+ branches: {
364
+ type: import("@contractspec/lib.schema").FieldType<unknown, unknown>;
365
+ isOptional: true;
366
+ };
367
+ reward: {
368
+ type: import("@contractspec/lib.schema").SchemaModel<{
369
+ badgeKey: {
370
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
371
+ isOptional: true;
372
+ };
373
+ xp: {
374
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
375
+ isOptional: true;
376
+ };
377
+ }>;
378
+ isOptional: true;
379
+ };
126
380
  xpReward: {
127
381
  type: import("@contractspec/lib.schema").FieldType<number, number>;
128
382
  isOptional: true;
129
383
  };
130
- order: {
131
- type: import("@contractspec/lib.schema").FieldType<number, number>;
384
+ isRequired: {
385
+ type: import("@contractspec/lib.schema").FieldType<boolean, boolean>;
386
+ isOptional: true;
387
+ };
388
+ canSkip: {
389
+ type: import("@contractspec/lib.schema").FieldType<boolean, boolean>;
390
+ isOptional: true;
391
+ };
392
+ actionUrl: {
393
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
394
+ isOptional: true;
395
+ };
396
+ actionLabel: {
397
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
398
+ isOptional: true;
399
+ };
400
+ metadata: {
401
+ type: import("@contractspec/lib.schema").FieldType<unknown, unknown>;
132
402
  isOptional: true;
133
403
  };
134
404
  }>;
@@ -170,6 +440,10 @@ export declare const crmOnboardingContracts: {
170
440
  type: import("@contractspec/lib.schema").FieldType<string, string>;
171
441
  isOptional: false;
172
442
  };
443
+ productId: {
444
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
445
+ isOptional: true;
446
+ };
173
447
  name: {
174
448
  type: import("@contractspec/lib.schema").FieldType<string, string>;
175
449
  isOptional: false;
@@ -178,24 +452,49 @@ export declare const crmOnboardingContracts: {
178
452
  type: import("@contractspec/lib.schema").FieldType<string, string>;
179
453
  isOptional: true;
180
454
  };
455
+ targetUserSegment: {
456
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
457
+ isOptional: true;
458
+ };
459
+ targetRole: {
460
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
461
+ isOptional: true;
462
+ };
181
463
  totalXp: {
182
464
  type: import("@contractspec/lib.schema").FieldType<number, number>;
183
465
  isOptional: true;
184
466
  };
185
- completionXpBonus: {
186
- type: import("@contractspec/lib.schema").FieldType<number, number>;
467
+ isActive: {
468
+ type: import("@contractspec/lib.schema").FieldType<boolean, boolean>;
187
469
  isOptional: true;
188
470
  };
189
- completionBadgeKey: {
190
- type: import("@contractspec/lib.schema").FieldType<string, string>;
471
+ isRequired: {
472
+ type: import("@contractspec/lib.schema").FieldType<boolean, boolean>;
191
473
  isOptional: true;
192
474
  };
193
- streakHoursWindow: {
194
- type: import("@contractspec/lib.schema").FieldType<number, number>;
475
+ canSkip: {
476
+ type: import("@contractspec/lib.schema").FieldType<boolean, boolean>;
195
477
  isOptional: true;
196
478
  };
197
- streakBonusXp: {
198
- type: import("@contractspec/lib.schema").FieldType<number, number>;
479
+ streakRule: {
480
+ type: import("@contractspec/lib.schema").FieldType<unknown, unknown>;
481
+ isOptional: true;
482
+ };
483
+ completionRewards: {
484
+ type: import("@contractspec/lib.schema").SchemaModel<{
485
+ badgeKey: {
486
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
487
+ isOptional: true;
488
+ };
489
+ xp: {
490
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
491
+ isOptional: true;
492
+ };
493
+ }>;
494
+ isOptional: true;
495
+ };
496
+ metadata: {
497
+ type: import("@contractspec/lib.schema").FieldType<unknown, unknown>;
199
498
  isOptional: true;
200
499
  };
201
500
  steps: {
@@ -212,20 +511,126 @@ export declare const crmOnboardingContracts: {
212
511
  type: import("@contractspec/lib.schema").FieldType<string, string>;
213
512
  isOptional: true;
214
513
  };
215
- completionEvent: {
514
+ instructions: {
515
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
516
+ isOptional: true;
517
+ };
518
+ helpUrl: {
216
519
  type: import("@contractspec/lib.schema").FieldType<string, string>;
520
+ isOptional: true;
521
+ };
522
+ order: {
523
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
524
+ isOptional: true;
525
+ };
526
+ completion: {
527
+ type: import("@contractspec/lib.schema").SchemaModel<{
528
+ kind: {
529
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
530
+ isOptional: true;
531
+ };
532
+ eventName: {
533
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
534
+ isOptional: false;
535
+ };
536
+ eventVersion: {
537
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
538
+ isOptional: true;
539
+ };
540
+ sourceModule: {
541
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
542
+ isOptional: true;
543
+ };
544
+ payloadFilter: {
545
+ type: import("@contractspec/lib.schema").FieldType<unknown, unknown>;
546
+ isOptional: true;
547
+ };
548
+ atLeast: {
549
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
550
+ isOptional: true;
551
+ };
552
+ withinHours: {
553
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
554
+ isOptional: true;
555
+ };
556
+ withinHoursOfStart: {
557
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
558
+ isOptional: true;
559
+ };
560
+ availableAfterHours: {
561
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
562
+ isOptional: true;
563
+ };
564
+ skillIdField: {
565
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
566
+ isOptional: true;
567
+ };
568
+ masteryField: {
569
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
570
+ isOptional: true;
571
+ };
572
+ minimumMastery: {
573
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
574
+ isOptional: true;
575
+ };
576
+ requiredCount: {
577
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
578
+ isOptional: true;
579
+ };
580
+ }>;
217
581
  isOptional: false;
218
582
  };
219
- sourceModule: {
583
+ availability: {
584
+ type: import("@contractspec/lib.schema").FieldType<unknown, unknown>;
585
+ isOptional: true;
586
+ };
587
+ prerequisites: {
588
+ type: import("@contractspec/lib.schema").FieldType<unknown, unknown>;
589
+ isOptional: true;
590
+ };
591
+ prerequisiteMode: {
220
592
  type: import("@contractspec/lib.schema").FieldType<string, string>;
221
593
  isOptional: true;
222
594
  };
595
+ branches: {
596
+ type: import("@contractspec/lib.schema").FieldType<unknown, unknown>;
597
+ isOptional: true;
598
+ };
599
+ reward: {
600
+ type: import("@contractspec/lib.schema").SchemaModel<{
601
+ badgeKey: {
602
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
603
+ isOptional: true;
604
+ };
605
+ xp: {
606
+ type: import("@contractspec/lib.schema").FieldType<number, number>;
607
+ isOptional: true;
608
+ };
609
+ }>;
610
+ isOptional: true;
611
+ };
223
612
  xpReward: {
224
613
  type: import("@contractspec/lib.schema").FieldType<number, number>;
225
614
  isOptional: true;
226
615
  };
227
- order: {
228
- type: import("@contractspec/lib.schema").FieldType<number, number>;
616
+ isRequired: {
617
+ type: import("@contractspec/lib.schema").FieldType<boolean, boolean>;
618
+ isOptional: true;
619
+ };
620
+ canSkip: {
621
+ type: import("@contractspec/lib.schema").FieldType<boolean, boolean>;
622
+ isOptional: true;
623
+ };
624
+ actionUrl: {
625
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
626
+ isOptional: true;
627
+ };
628
+ actionLabel: {
629
+ type: import("@contractspec/lib.schema").FieldType<string, string>;
630
+ isOptional: true;
631
+ };
632
+ metadata: {
633
+ type: import("@contractspec/lib.schema").FieldType<unknown, unknown>;
229
634
  isOptional: true;
230
635
  };
231
636
  }>;
@@ -259,5 +664,5 @@ export declare const crmOnboardingContracts: {
259
664
  isOptional: false;
260
665
  };
261
666
  }>, undefined>;
262
- track: import("@contractspec/module.learning-journey/track-spec").LearningJourneyTrackSpec;
667
+ track: import("@contractspec/module.learning-journey/track-spec").JourneyTrackSpec;
263
668
  };
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- var o={id:"crm_first_win",productId:"crm-pipeline",name:"CRM First Win",description:"Guide a new CRM user from empty pipeline to first closed-won deal.",targetUserSegment:"crm_adopter",targetRole:"sales",totalXp:135,streakRule:{hoursWindow:72,bonusXp:25},completionRewards:{xpBonus:25,badgeKey:"crm_first_win"},steps:[{id:"create_pipeline",title:"Create pipeline & stages",description:"Create a pipeline with baseline stages.",order:1,completion:{eventName:"pipeline.created",sourceModule:"@contractspec/example.crm-pipeline"},xpReward:15,metadata:{surface:"pipeline"}},{id:"create_contact_and_company",title:"Create contact and company",description:"Add your first contact and associated company.",order:2,completion:{eventName:"contact.created",sourceModule:"@contractspec/example.crm-pipeline"},xpReward:20,metadata:{surface:"contacts"}},{id:"create_first_deal",title:"Log first deal",description:"Create your first deal in the pipeline.",order:3,completion:{eventName:"deal.created",sourceModule:"@contractspec/example.crm-pipeline"},xpReward:20,metadata:{surface:"deals"}},{id:"move_deal_in_pipeline",title:"Move a deal across stages",description:"Move a deal across at least three stages.",order:4,completion:{eventName:"deal.moved",sourceModule:"@contractspec/example.crm-pipeline"},xpReward:20,metadata:{surface:"deals"}},{id:"close_deal_won",title:"Close a deal as won",description:"Close a deal as won to hit first revenue.",order:5,completion:{eventName:"deal.won",sourceModule:"@contractspec/example.crm-pipeline"},xpReward:30,metadata:{surface:"deals"}},{id:"setup_follow_up",title:"Create follow-up task",description:"Create a follow-up task and notification for a contact or deal.",order:6,completion:{eventName:"task.completed",sourceModule:"@contractspec/example.crm-pipeline",payloadFilter:{type:"follow_up"}},xpReward:30,metadata:{surface:"tasks"}}],metadata:{surfacedIn:["crm/dashboard","crm/pipeline"]}},m=[o];import{defineCommand as i,defineQuery as r}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as t,ScalarTypeEnum as e}from"@contractspec/lib.schema";var a=["examples.learning-journey.crm-onboarding"],s=t({name:"CrmOnboardingStep",description:"Step metadata for CRM first win journey",fields:{id:{type:e.String_unsecure(),isOptional:!1},title:{type:e.String_unsecure(),isOptional:!1},description:{type:e.String_unsecure(),isOptional:!0},completionEvent:{type:e.String_unsecure(),isOptional:!1},sourceModule:{type:e.String_unsecure(),isOptional:!0},xpReward:{type:e.Int_unsecure(),isOptional:!0},order:{type:e.Int_unsecure(),isOptional:!0}}}),p=t({name:"CrmOnboardingTrack",description:"CRM onboarding track definition",fields:{id:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},description:{type:e.String_unsecure(),isOptional:!0},totalXp:{type:e.Int_unsecure(),isOptional:!0},completionXpBonus:{type:e.Int_unsecure(),isOptional:!0},completionBadgeKey:{type:e.String_unsecure(),isOptional:!0},streakHoursWindow:{type:e.Int_unsecure(),isOptional:!0},streakBonusXp:{type:e.Int_unsecure(),isOptional:!0},steps:{type:s,isArray:!0,isOptional:!1}}}),c=t({name:"CrmOnboardingTrackResponse",description:"Response wrapper for CRM onboarding track",fields:{track:{type:p,isOptional:!1}}}),d=t({name:"CrmOnboardingRecordEventInput",description:"Emit a demo event to advance CRM onboarding steps",fields:{learnerId:{type:e.String_unsecure(),isOptional:!1},eventName:{type:e.String_unsecure(),isOptional:!1},payload:{type:e.JSON(),isOptional:!0},occurredAt:{type:e.DateTime(),isOptional:!0}}}),n=t({name:"CrmOnboardingSuccess",description:"Generic success response",fields:{success:{type:e.Boolean(),isOptional:!1}}}),l=r({meta:{key:"learningJourney.crmOnboarding.getTrack",version:"1.0.0",stability:"experimental",owners:[...a],tags:["learning","crm","onboarding"],description:"Fetch CRM first win track definition.",goal:"Expose track metadata to UIs and templates.",context:"Called by Studio/Playground to render journey steps."},io:{input:t({name:"CrmOnboardingTrackInput",description:"Track input",fields:{}}),output:c},policy:{auth:"user"}}),w=i({meta:{key:"learningJourney.crmOnboarding.recordEvent",version:"1.0.0",stability:"experimental",owners:[...a],tags:["learning","crm","onboarding"],description:"Record an event to advance CRM onboarding progress.",goal:"Advance steps via domain events in demo/sandbox contexts.",context:"Called by handlers or demo scripts to emit step completion events."},io:{input:d,output:n},policy:{auth:"user"}}),g={GetCrmOnboardingTrack:l,RecordCrmOnboardingEvent:w,track:o};export{g as crmOnboardingContracts,w as RecordCrmOnboardingEvent,l as GetCrmOnboardingTrack,p as CrmOnboardingTrackModel};
2
+ var a={id:"crm_first_win",productId:"crm-pipeline",name:"CRM First Win",description:"Guide a new CRM user from empty pipeline to first closed-won deal.",targetUserSegment:"crm_adopter",targetRole:"sales",totalXp:135,streakRule:{hoursWindow:72,bonusXp:25},completionRewards:{xp:25,badgeKey:"crm_first_win"},steps:[{id:"create_pipeline",title:"Create pipeline & stages",description:"Create a pipeline with baseline stages.",order:1,completion:{eventName:"pipeline.created",sourceModule:"@contractspec/example.crm-pipeline"},xpReward:15,metadata:{surface:"pipeline"}},{id:"create_contact_and_company",title:"Create contact and company",description:"Add your first contact and associated company.",order:2,prerequisites:[{kind:"step_completed",stepId:"create_pipeline"}],completion:{eventName:"contact.created",sourceModule:"@contractspec/example.crm-pipeline"},xpReward:20,metadata:{surface:"contacts"}},{id:"create_first_deal",title:"Log first deal",description:"Create your first deal in the pipeline.",order:3,prerequisites:[{kind:"step_completed",stepId:"create_contact_and_company"}],completion:{eventName:"deal.created",sourceModule:"@contractspec/example.crm-pipeline"},xpReward:20,metadata:{surface:"deals"}},{id:"move_deal_in_pipeline",title:"Move a deal across stages",description:"Move a deal across at least three stages.",order:4,prerequisites:[{kind:"step_completed",stepId:"create_first_deal"}],completion:{eventName:"deal.moved",sourceModule:"@contractspec/example.crm-pipeline"},xpReward:20,metadata:{surface:"deals"}},{id:"close_deal_won",title:"Close a deal as won",description:"Close a deal as won to hit first revenue.",order:5,prerequisites:[{kind:"step_completed",stepId:"move_deal_in_pipeline"}],completion:{eventName:"deal.won",sourceModule:"@contractspec/example.crm-pipeline"},xpReward:30,metadata:{surface:"deals"}},{id:"setup_follow_up",title:"Create follow-up task",description:"Create a follow-up task and notification for a contact or deal.",order:6,prerequisites:[{kind:"step_completed",stepId:"close_deal_won"}],completion:{eventName:"task.completed",sourceModule:"@contractspec/example.crm-pipeline",payloadFilter:{type:"follow_up"}},xpReward:30,metadata:{surface:"tasks"}}],metadata:{surfacedIn:["crm/dashboard","crm/pipeline"]}},_=[a];import{defineCommand as i,defineQuery as r}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as t,ScalarTypeEnum as e}from"@contractspec/lib.schema";import{JourneyTrackModel as s}from"@contractspec/module.learning-journey/contracts/journey";var p=["examples.learning-journey.crm-onboarding"],o=s,c=t({name:"CrmOnboardingTrackResponse",description:"Response wrapper for CRM onboarding track",fields:{track:{type:o,isOptional:!1}}}),d=t({name:"CrmOnboardingRecordEventInput",description:"Emit a demo event to advance CRM onboarding steps",fields:{learnerId:{type:e.String_unsecure(),isOptional:!1},eventName:{type:e.String_unsecure(),isOptional:!1},payload:{type:e.JSON(),isOptional:!0},occurredAt:{type:e.DateTime(),isOptional:!0}}}),l=t({name:"CrmOnboardingSuccess",description:"Generic success response",fields:{success:{type:e.Boolean(),isOptional:!1}}}),n=r({meta:{key:"learningJourney.crmOnboarding.getTrack",version:"1.0.0",stability:"experimental",owners:[...p],tags:["learning","crm","onboarding"],description:"Fetch CRM first win track definition.",goal:"Expose track metadata to UIs and templates.",context:"Called by Studio/Playground to render journey steps."},io:{input:t({name:"CrmOnboardingTrackInput",description:"Track input",fields:{}}),output:c},policy:{auth:"user"}}),m=i({meta:{key:"learningJourney.crmOnboarding.recordEvent",version:"1.0.0",stability:"experimental",owners:[...p],tags:["learning","crm","onboarding"],description:"Record an event to advance CRM onboarding progress.",goal:"Advance steps via domain events in demo/sandbox contexts.",context:"Called by handlers or demo scripts to emit step completion events."},io:{input:d,output:l},policy:{auth:"user"}}),v={GetCrmOnboardingTrack:n,RecordCrmOnboardingEvent:m,track:a};export{v as crmOnboardingContracts,m as RecordCrmOnboardingEvent,n as GetCrmOnboardingTrack,o as CrmJourneyTrackModel};