@contractspec/example.learning-journey-crm-onboarding 3.7.17 → 3.7.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/.turbo/turbo-build.log +33 -33
  2. package/CHANGELOG.md +13 -0
  3. package/dist/browser/docs/crm-onboarding.docblock.js +1 -37
  4. package/dist/browser/docs/index.js +1 -37
  5. package/dist/browser/example.js +1 -32
  6. package/dist/browser/handlers/demo.handlers.js +1 -117
  7. package/dist/browser/index.js +1 -401
  8. package/dist/browser/learning-journey-crm-onboarding.feature.js +1 -48
  9. package/dist/browser/operations/index.js +1 -209
  10. package/dist/browser/presentations/index.js +1 -256
  11. package/dist/browser/tests/operations.test-spec.js +1 -34
  12. package/dist/browser/track.js +1 -95
  13. package/dist/docs/crm-onboarding.docblock.js +1 -37
  14. package/dist/docs/index.js +1 -37
  15. package/dist/example.js +1 -32
  16. package/dist/handlers/demo.handlers.js +1 -117
  17. package/dist/index.js +1 -401
  18. package/dist/learning-journey-crm-onboarding.feature.js +1 -48
  19. package/dist/node/docs/crm-onboarding.docblock.js +1 -37
  20. package/dist/node/docs/index.js +1 -37
  21. package/dist/node/example.js +1 -32
  22. package/dist/node/handlers/demo.handlers.js +1 -117
  23. package/dist/node/index.js +1 -401
  24. package/dist/node/learning-journey-crm-onboarding.feature.js +1 -48
  25. package/dist/node/operations/index.js +1 -209
  26. package/dist/node/presentations/index.js +1 -256
  27. package/dist/node/tests/operations.test-spec.js +1 -34
  28. package/dist/node/track.js +1 -95
  29. package/dist/operations/index.js +1 -209
  30. package/dist/presentations/index.js +1 -256
  31. package/dist/tests/operations.test-spec.js +1 -34
  32. package/dist/track.js +1 -95
  33. package/package.json +7 -7
@@ -1,38 +1,2 @@
1
1
  // @bun
2
- // src/docs/crm-onboarding.docblock.ts
3
- import { registerDocBlocks } from "@contractspec/lib.contracts-spec/docs";
4
- var crmOnboardingDocBlocks = [
5
- {
6
- id: "docs.learning-journey.crm-onboarding",
7
- title: "Learning Journey \u2014 CRM First Win",
8
- summary: "Onboarding track for the CRM Pipeline example that drives users to first closed-won deal.",
9
- kind: "reference",
10
- visibility: "public",
11
- route: "/docs/learning-journey/crm-onboarding",
12
- tags: ["learning", "crm", "onboarding"],
13
- body: `## Track
14
- - **Key**: \`crm_first_win\`
15
- - **Persona**: CRM adopter
16
- - **Goal**: From empty CRM to first closed-won deal with follow-up
17
-
18
- ## Steps & Events
19
- 1) \`create_pipeline\` \u2192 \`pipeline.created\`
20
- 2) \`create_contact_and_company\` \u2192 \`contact.created\`
21
- 3) \`create_first_deal\` \u2192 \`deal.created\`
22
- 4) \`move_deal_in_pipeline\` \u2192 \`deal.moved\`
23
- 5) \`close_deal_won\` \u2192 \`deal.won\`
24
- 6) \`setup_follow_up\` \u2192 \`task.completed\` (type: follow_up)
25
-
26
- XP: 15/20/20/20/30/30 with 25 bonus within 72h. Badge: \`crm_first_win\`.
27
-
28
- ## Wiring
29
- - Depends on \`@contractspec/example.crm-pipeline\` events.
30
- - Tracks export from \`@contractspec/example.learning-journey-crm-onboarding/track\`.
31
- - Use onboarding API:
32
- - \`learning.onboarding.listTracks\`
33
- - \`learning.onboarding.getProgress\`
34
- - \`learning.onboarding.recordEvent\` wired from CRM event bus handlers.
35
- - Surface in CRM dashboard/pipeline UI to guide new users.`
36
- }
37
- ];
38
- registerDocBlocks(crmOnboardingDocBlocks);
2
+ import{registerDocBlocks as f}from"@contractspec/lib.contracts-spec/docs";var h=[{id:"docs.learning-journey.crm-onboarding",title:"Learning Journey \u2014 CRM First Win",summary:"Onboarding track for the CRM Pipeline example that drives users to first closed-won deal.",kind:"reference",visibility:"public",route:"/docs/learning-journey/crm-onboarding",tags:["learning","crm","onboarding"],body:"## Track\n- **Key**: `crm_first_win`\n- **Persona**: CRM adopter\n- **Goal**: From empty CRM to first closed-won deal with follow-up\n\n## Steps & Events\n1) `create_pipeline` \u2192 `pipeline.created`\n2) `create_contact_and_company` \u2192 `contact.created`\n3) `create_first_deal` \u2192 `deal.created`\n4) `move_deal_in_pipeline` \u2192 `deal.moved`\n5) `close_deal_won` \u2192 `deal.won`\n6) `setup_follow_up` \u2192 `task.completed` (type: follow_up)\n\nXP: 15/20/20/20/30/30 with 25 bonus within 72h. Badge: `crm_first_win`.\n\n## Wiring\n- Depends on `@contractspec/example.crm-pipeline` events.\n- Tracks export from `@contractspec/example.learning-journey-crm-onboarding/track`.\n- Use onboarding API:\n - `learning.onboarding.listTracks`\n - `learning.onboarding.getProgress`\n - `learning.onboarding.recordEvent` wired from CRM event bus handlers.\n- Surface in CRM dashboard/pipeline UI to guide new users."}];f(h);
package/dist/example.js CHANGED
@@ -1,33 +1,2 @@
1
1
  // @bun
2
- // src/example.ts
3
- import { defineExample } from "@contractspec/lib.contracts-spec";
4
- var example = defineExample({
5
- meta: {
6
- key: "learning-journey-crm-onboarding",
7
- version: "1.0.0",
8
- title: "Learning Journey \u2014 CRM First Win",
9
- description: "Onboarding track for CRM Pipeline driving users from empty CRM to first closed-won deal.",
10
- kind: "template",
11
- visibility: "public",
12
- stability: "experimental",
13
- owners: ["@platform.core"],
14
- tags: ["learning", "crm", "onboarding"]
15
- },
16
- docs: {
17
- rootDocId: "docs.learning-journey.crm-onboarding"
18
- },
19
- entrypoints: {
20
- packageName: "@contractspec/example.learning-journey-crm-onboarding",
21
- docs: "./docs"
22
- },
23
- surfaces: {
24
- templates: true,
25
- sandbox: { enabled: true, modes: ["playground", "markdown"] },
26
- studio: { enabled: true, installable: true },
27
- mcp: { enabled: true }
28
- }
29
- });
30
- var example_default = example;
31
- export {
32
- example_default as default
33
- };
2
+ import{defineExample as g}from"@contractspec/lib.contracts-spec";var h=g({meta:{key:"learning-journey-crm-onboarding",version:"1.0.0",title:"Learning Journey \u2014 CRM First Win",description:"Onboarding track for CRM Pipeline driving users from empty CRM to first closed-won deal.",kind:"template",visibility:"public",stability:"experimental",owners:["@platform.core"],tags:["learning","crm","onboarding"]},docs:{rootDocId:"docs.learning-journey.crm-onboarding"},entrypoints:{packageName:"@contractspec/example.learning-journey-crm-onboarding",docs:"./docs"},surfaces:{templates:!0,sandbox:{enabled:!0,modes:["playground","markdown"]},studio:{enabled:!0,installable:!0},mcp:{enabled:!0}}}),q=h;export{q as default};
@@ -1,118 +1,2 @@
1
1
  // @bun
2
- // src/track.ts
3
- var crmFirstWinTrack = {
4
- id: "crm_first_win",
5
- productId: "crm-pipeline",
6
- name: "CRM First Win",
7
- description: "Guide a new CRM user from empty pipeline to first closed-won deal.",
8
- targetUserSegment: "crm_adopter",
9
- targetRole: "sales",
10
- totalXp: 135,
11
- streakRule: { hoursWindow: 72, bonusXp: 25 },
12
- completionRewards: { xpBonus: 25, badgeKey: "crm_first_win" },
13
- steps: [
14
- {
15
- id: "create_pipeline",
16
- title: "Create pipeline & stages",
17
- description: "Create a pipeline with baseline stages.",
18
- order: 1,
19
- completion: {
20
- eventName: "pipeline.created",
21
- sourceModule: "@contractspec/example.crm-pipeline"
22
- },
23
- xpReward: 15,
24
- metadata: { surface: "pipeline" }
25
- },
26
- {
27
- id: "create_contact_and_company",
28
- title: "Create contact and company",
29
- description: "Add your first contact and associated company.",
30
- order: 2,
31
- completion: {
32
- eventName: "contact.created",
33
- sourceModule: "@contractspec/example.crm-pipeline"
34
- },
35
- xpReward: 20,
36
- metadata: { surface: "contacts" }
37
- },
38
- {
39
- id: "create_first_deal",
40
- title: "Log first deal",
41
- description: "Create your first deal in the pipeline.",
42
- order: 3,
43
- completion: {
44
- eventName: "deal.created",
45
- sourceModule: "@contractspec/example.crm-pipeline"
46
- },
47
- xpReward: 20,
48
- metadata: { surface: "deals" }
49
- },
50
- {
51
- id: "move_deal_in_pipeline",
52
- title: "Move a deal across stages",
53
- description: "Move a deal across at least three stages.",
54
- order: 4,
55
- completion: {
56
- eventName: "deal.moved",
57
- sourceModule: "@contractspec/example.crm-pipeline"
58
- },
59
- xpReward: 20,
60
- metadata: { surface: "deals" }
61
- },
62
- {
63
- id: "close_deal_won",
64
- title: "Close a deal as won",
65
- description: "Close a deal as won to hit first revenue.",
66
- order: 5,
67
- completion: {
68
- eventName: "deal.won",
69
- sourceModule: "@contractspec/example.crm-pipeline"
70
- },
71
- xpReward: 30,
72
- metadata: { surface: "deals" }
73
- },
74
- {
75
- id: "setup_follow_up",
76
- title: "Create follow-up task",
77
- description: "Create a follow-up task and notification for a contact or deal.",
78
- order: 6,
79
- completion: {
80
- eventName: "task.completed",
81
- sourceModule: "@contractspec/example.crm-pipeline",
82
- payloadFilter: { type: "follow_up" }
83
- },
84
- xpReward: 30,
85
- metadata: { surface: "tasks" }
86
- }
87
- ],
88
- metadata: {
89
- surfacedIn: ["crm/dashboard", "crm/pipeline"]
90
- }
91
- };
92
- var crmLearningTracks = [crmFirstWinTrack];
93
-
94
- // src/handlers/demo.handlers.ts
95
- var crmOnboardingEvents = [
96
- "pipeline.created",
97
- "contact.created",
98
- "deal.created",
99
- "deal.moved",
100
- "deal.won",
101
- "task.completed"
102
- ];
103
- var emitCrmOnboardingEvent = (eventName, { learnerId, occurredAt = new Date, payload }, record) => {
104
- const event = {
105
- learnerId,
106
- name: eventName,
107
- occurredAt,
108
- payload,
109
- trackId: crmFirstWinTrack.id
110
- };
111
- return record ? record(event) : event;
112
- };
113
- var emitAllCrmOnboardingEvents = (params, record) => crmOnboardingEvents.map((name) => emitCrmOnboardingEvent(name, params, record));
114
- export {
115
- emitCrmOnboardingEvent,
116
- emitAllCrmOnboardingEvents,
117
- crmOnboardingEvents
118
- };
2
+ var r={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"]}},p=[r];var i=["pipeline.created","contact.created","deal.created","deal.moved","deal.won","task.completed"],d=(e,{learnerId:t,occurredAt:a=new Date,payload:c},n)=>{let o={learnerId:t,name:e,occurredAt:a,payload:c,trackId:r.id};return n?n(o):o},m=(e,t)=>i.map((a)=>d(a,e,t));export{d as emitCrmOnboardingEvent,m as emitAllCrmOnboardingEvents,i as crmOnboardingEvents};
package/dist/index.js CHANGED
@@ -1,402 +1,2 @@
1
1
  // @bun
2
- // src/docs/crm-onboarding.docblock.ts
3
- import { registerDocBlocks } from "@contractspec/lib.contracts-spec/docs";
4
- var crmOnboardingDocBlocks = [
5
- {
6
- id: "docs.learning-journey.crm-onboarding",
7
- title: "Learning Journey \u2014 CRM First Win",
8
- summary: "Onboarding track for the CRM Pipeline example that drives users to first closed-won deal.",
9
- kind: "reference",
10
- visibility: "public",
11
- route: "/docs/learning-journey/crm-onboarding",
12
- tags: ["learning", "crm", "onboarding"],
13
- body: `## Track
14
- - **Key**: \`crm_first_win\`
15
- - **Persona**: CRM adopter
16
- - **Goal**: From empty CRM to first closed-won deal with follow-up
17
-
18
- ## Steps & Events
19
- 1) \`create_pipeline\` \u2192 \`pipeline.created\`
20
- 2) \`create_contact_and_company\` \u2192 \`contact.created\`
21
- 3) \`create_first_deal\` \u2192 \`deal.created\`
22
- 4) \`move_deal_in_pipeline\` \u2192 \`deal.moved\`
23
- 5) \`close_deal_won\` \u2192 \`deal.won\`
24
- 6) \`setup_follow_up\` \u2192 \`task.completed\` (type: follow_up)
25
-
26
- XP: 15/20/20/20/30/30 with 25 bonus within 72h. Badge: \`crm_first_win\`.
27
-
28
- ## Wiring
29
- - Depends on \`@contractspec/example.crm-pipeline\` events.
30
- - Tracks export from \`@contractspec/example.learning-journey-crm-onboarding/track\`.
31
- - Use onboarding API:
32
- - \`learning.onboarding.listTracks\`
33
- - \`learning.onboarding.getProgress\`
34
- - \`learning.onboarding.recordEvent\` wired from CRM event bus handlers.
35
- - Surface in CRM dashboard/pipeline UI to guide new users.`
36
- }
37
- ];
38
- registerDocBlocks(crmOnboardingDocBlocks);
39
- // src/example.ts
40
- import { defineExample } from "@contractspec/lib.contracts-spec";
41
- var example = defineExample({
42
- meta: {
43
- key: "learning-journey-crm-onboarding",
44
- version: "1.0.0",
45
- title: "Learning Journey \u2014 CRM First Win",
46
- description: "Onboarding track for CRM Pipeline driving users from empty CRM to first closed-won deal.",
47
- kind: "template",
48
- visibility: "public",
49
- stability: "experimental",
50
- owners: ["@platform.core"],
51
- tags: ["learning", "crm", "onboarding"]
52
- },
53
- docs: {
54
- rootDocId: "docs.learning-journey.crm-onboarding"
55
- },
56
- entrypoints: {
57
- packageName: "@contractspec/example.learning-journey-crm-onboarding",
58
- docs: "./docs"
59
- },
60
- surfaces: {
61
- templates: true,
62
- sandbox: { enabled: true, modes: ["playground", "markdown"] },
63
- studio: { enabled: true, installable: true },
64
- mcp: { enabled: true }
65
- }
66
- });
67
- var example_default = example;
68
-
69
- // src/track.ts
70
- var crmFirstWinTrack = {
71
- id: "crm_first_win",
72
- productId: "crm-pipeline",
73
- name: "CRM First Win",
74
- description: "Guide a new CRM user from empty pipeline to first closed-won deal.",
75
- targetUserSegment: "crm_adopter",
76
- targetRole: "sales",
77
- totalXp: 135,
78
- streakRule: { hoursWindow: 72, bonusXp: 25 },
79
- completionRewards: { xpBonus: 25, badgeKey: "crm_first_win" },
80
- steps: [
81
- {
82
- id: "create_pipeline",
83
- title: "Create pipeline & stages",
84
- description: "Create a pipeline with baseline stages.",
85
- order: 1,
86
- completion: {
87
- eventName: "pipeline.created",
88
- sourceModule: "@contractspec/example.crm-pipeline"
89
- },
90
- xpReward: 15,
91
- metadata: { surface: "pipeline" }
92
- },
93
- {
94
- id: "create_contact_and_company",
95
- title: "Create contact and company",
96
- description: "Add your first contact and associated company.",
97
- order: 2,
98
- completion: {
99
- eventName: "contact.created",
100
- sourceModule: "@contractspec/example.crm-pipeline"
101
- },
102
- xpReward: 20,
103
- metadata: { surface: "contacts" }
104
- },
105
- {
106
- id: "create_first_deal",
107
- title: "Log first deal",
108
- description: "Create your first deal in the pipeline.",
109
- order: 3,
110
- completion: {
111
- eventName: "deal.created",
112
- sourceModule: "@contractspec/example.crm-pipeline"
113
- },
114
- xpReward: 20,
115
- metadata: { surface: "deals" }
116
- },
117
- {
118
- id: "move_deal_in_pipeline",
119
- title: "Move a deal across stages",
120
- description: "Move a deal across at least three stages.",
121
- order: 4,
122
- completion: {
123
- eventName: "deal.moved",
124
- sourceModule: "@contractspec/example.crm-pipeline"
125
- },
126
- xpReward: 20,
127
- metadata: { surface: "deals" }
128
- },
129
- {
130
- id: "close_deal_won",
131
- title: "Close a deal as won",
132
- description: "Close a deal as won to hit first revenue.",
133
- order: 5,
134
- completion: {
135
- eventName: "deal.won",
136
- sourceModule: "@contractspec/example.crm-pipeline"
137
- },
138
- xpReward: 30,
139
- metadata: { surface: "deals" }
140
- },
141
- {
142
- id: "setup_follow_up",
143
- title: "Create follow-up task",
144
- description: "Create a follow-up task and notification for a contact or deal.",
145
- order: 6,
146
- completion: {
147
- eventName: "task.completed",
148
- sourceModule: "@contractspec/example.crm-pipeline",
149
- payloadFilter: { type: "follow_up" }
150
- },
151
- xpReward: 30,
152
- metadata: { surface: "tasks" }
153
- }
154
- ],
155
- metadata: {
156
- surfacedIn: ["crm/dashboard", "crm/pipeline"]
157
- }
158
- };
159
- var crmLearningTracks = [crmFirstWinTrack];
160
-
161
- // src/handlers/demo.handlers.ts
162
- var crmOnboardingEvents = [
163
- "pipeline.created",
164
- "contact.created",
165
- "deal.created",
166
- "deal.moved",
167
- "deal.won",
168
- "task.completed"
169
- ];
170
- var emitCrmOnboardingEvent = (eventName, { learnerId, occurredAt = new Date, payload }, record) => {
171
- const event = {
172
- learnerId,
173
- name: eventName,
174
- occurredAt,
175
- payload,
176
- trackId: crmFirstWinTrack.id
177
- };
178
- return record ? record(event) : event;
179
- };
180
- var emitAllCrmOnboardingEvents = (params, record) => crmOnboardingEvents.map((name) => emitCrmOnboardingEvent(name, params, record));
181
-
182
- // src/learning-journey-crm-onboarding.feature.ts
183
- import { defineFeature } from "@contractspec/lib.contracts-spec";
184
- var LearningJourneyCrmOnboardingFeature = defineFeature({
185
- meta: {
186
- key: "learning-journey-crm-onboarding",
187
- title: "Learning Journey: CRM Onboarding",
188
- description: "CRM first-win onboarding journey with step-by-step guidance for new CRM users",
189
- domain: "learning-journey",
190
- owners: ["@examples.learning-journey.crm-onboarding"],
191
- tags: ["learning", "crm", "onboarding", "journey"],
192
- stability: "experimental",
193
- version: "1.0.0"
194
- },
195
- operations: [
196
- { key: "learningJourney.crmOnboarding.recordEvent", version: "1.0.0" },
197
- { key: "learningJourney.crmOnboarding.getTrack", version: "1.0.0" }
198
- ],
199
- events: [],
200
- presentations: [
201
- { key: "learning.journey.crm.track", version: "1.0.0" },
202
- { key: "learning.journey.crm.widget", version: "1.0.0" }
203
- ],
204
- opToPresentation: [
205
- {
206
- op: { key: "learningJourney.crmOnboarding.getTrack", version: "1.0.0" },
207
- pres: { key: "learning.journey.crm.track", version: "1.0.0" }
208
- }
209
- ],
210
- presentationsTargets: [
211
- {
212
- key: "learning.journey.crm.track",
213
- version: "1.0.0",
214
- targets: ["react", "markdown", "application/json"]
215
- },
216
- {
217
- key: "learning.journey.crm.widget",
218
- version: "1.0.0",
219
- targets: ["react"]
220
- }
221
- ],
222
- capabilities: {
223
- requires: [{ key: "identity", version: "1.0.0" }]
224
- },
225
- docs: ["docs.learning-journey.crm-onboarding"]
226
- });
227
-
228
- // src/operations/index.ts
229
- import { defineCommand, defineQuery } from "@contractspec/lib.contracts-spec";
230
- import { defineSchemaModel, ScalarTypeEnum } from "@contractspec/lib.schema";
231
- var OWNERS = ["examples.learning-journey.crm-onboarding"];
232
- var StepModel = defineSchemaModel({
233
- name: "CrmOnboardingStep",
234
- description: "Step metadata for CRM first win journey",
235
- fields: {
236
- id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
237
- title: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
238
- description: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
239
- completionEvent: {
240
- type: ScalarTypeEnum.String_unsecure(),
241
- isOptional: false
242
- },
243
- sourceModule: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
244
- xpReward: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },
245
- order: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true }
246
- }
247
- });
248
- var CrmOnboardingTrackModel = defineSchemaModel({
249
- name: "CrmOnboardingTrack",
250
- description: "CRM onboarding track definition",
251
- fields: {
252
- id: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
253
- name: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
254
- description: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
255
- totalXp: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },
256
- completionXpBonus: {
257
- type: ScalarTypeEnum.Int_unsecure(),
258
- isOptional: true
259
- },
260
- completionBadgeKey: {
261
- type: ScalarTypeEnum.String_unsecure(),
262
- isOptional: true
263
- },
264
- streakHoursWindow: {
265
- type: ScalarTypeEnum.Int_unsecure(),
266
- isOptional: true
267
- },
268
- streakBonusXp: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },
269
- steps: { type: StepModel, isArray: true, isOptional: false }
270
- }
271
- });
272
- var TrackResponseModel = defineSchemaModel({
273
- name: "CrmOnboardingTrackResponse",
274
- description: "Response wrapper for CRM onboarding track",
275
- fields: {
276
- track: { type: CrmOnboardingTrackModel, isOptional: false }
277
- }
278
- });
279
- var RecordDemoEventInput = defineSchemaModel({
280
- name: "CrmOnboardingRecordEventInput",
281
- description: "Emit a demo event to advance CRM onboarding steps",
282
- fields: {
283
- learnerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
284
- eventName: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
285
- payload: { type: ScalarTypeEnum.JSON(), isOptional: true },
286
- occurredAt: { type: ScalarTypeEnum.DateTime(), isOptional: true }
287
- }
288
- });
289
- var SuccessModel = defineSchemaModel({
290
- name: "CrmOnboardingSuccess",
291
- description: "Generic success response",
292
- fields: {
293
- success: { type: ScalarTypeEnum.Boolean(), isOptional: false }
294
- }
295
- });
296
- var GetCrmOnboardingTrack = defineQuery({
297
- meta: {
298
- key: "learningJourney.crmOnboarding.getTrack",
299
- version: "1.0.0",
300
- stability: "experimental",
301
- owners: [...OWNERS],
302
- tags: ["learning", "crm", "onboarding"],
303
- description: "Fetch CRM first win track definition.",
304
- goal: "Expose track metadata to UIs and templates.",
305
- context: "Called by Studio/Playground to render journey steps."
306
- },
307
- io: {
308
- input: defineSchemaModel({
309
- name: "CrmOnboardingTrackInput",
310
- description: "Track input",
311
- fields: {}
312
- }),
313
- output: TrackResponseModel
314
- },
315
- policy: { auth: "user" }
316
- });
317
- var RecordCrmOnboardingEvent = defineCommand({
318
- meta: {
319
- key: "learningJourney.crmOnboarding.recordEvent",
320
- version: "1.0.0",
321
- stability: "experimental",
322
- owners: [...OWNERS],
323
- tags: ["learning", "crm", "onboarding"],
324
- description: "Record an event to advance CRM onboarding progress.",
325
- goal: "Advance steps via domain events in demo/sandbox contexts.",
326
- context: "Called by handlers or demo scripts to emit step completion events."
327
- },
328
- io: {
329
- input: RecordDemoEventInput,
330
- output: SuccessModel
331
- },
332
- policy: { auth: "user" }
333
- });
334
- var crmOnboardingContracts = {
335
- GetCrmOnboardingTrack,
336
- RecordCrmOnboardingEvent,
337
- track: crmFirstWinTrack
338
- };
339
-
340
- // src/presentations/index.ts
341
- import {
342
- definePresentation,
343
- StabilityEnum
344
- } from "@contractspec/lib.contracts-spec";
345
- var baseMeta = {
346
- domain: "learning-journey",
347
- title: "CRM Onboarding",
348
- owners: ["@examples.learning-journey.crm-onboarding"],
349
- tags: ["learning", "crm", "onboarding"],
350
- stability: StabilityEnum.Experimental,
351
- goal: "Guide CRM users through onboarding",
352
- context: "CRM onboarding journey"
353
- };
354
- var CrmOnboardingTrackPresentation = definePresentation({
355
- meta: {
356
- key: "learning.journey.crm.track",
357
- version: "1.0.0",
358
- description: "CRM first win track detail",
359
- ...baseMeta
360
- },
361
- source: {
362
- type: "component",
363
- framework: "react",
364
- componentKey: "LearningTrackDetail",
365
- props: CrmOnboardingTrackModel
366
- },
367
- targets: ["react", "markdown", "application/json"]
368
- });
369
- var CrmOnboardingWidgetPresentation = definePresentation({
370
- meta: {
371
- key: "learning.journey.crm.widget",
372
- version: "1.0.0",
373
- description: "Compact widget for CRM onboarding progress",
374
- ...baseMeta
375
- },
376
- source: {
377
- type: "component",
378
- framework: "react",
379
- componentKey: "LearningTrackProgressWidget"
380
- },
381
- targets: ["react"]
382
- });
383
- var crmOnboardingPresentations = [
384
- CrmOnboardingTrackPresentation,
385
- CrmOnboardingWidgetPresentation
386
- ];
387
- export {
388
- example_default as example,
389
- emitCrmOnboardingEvent,
390
- emitAllCrmOnboardingEvents,
391
- crmOnboardingPresentations,
392
- crmOnboardingEvents,
393
- crmOnboardingContracts,
394
- crmLearningTracks,
395
- crmFirstWinTrack,
396
- RecordCrmOnboardingEvent,
397
- LearningJourneyCrmOnboardingFeature,
398
- GetCrmOnboardingTrack,
399
- CrmOnboardingWidgetPresentation,
400
- CrmOnboardingTrackPresentation,
401
- CrmOnboardingTrackModel
402
- };
2
+ import{registerDocBlocks as w}from"@contractspec/lib.contracts-spec/docs";var v=[{id:"docs.learning-journey.crm-onboarding",title:"Learning Journey \u2014 CRM First Win",summary:"Onboarding track for the CRM Pipeline example that drives users to first closed-won deal.",kind:"reference",visibility:"public",route:"/docs/learning-journey/crm-onboarding",tags:["learning","crm","onboarding"],body:"## Track\n- **Key**: `crm_first_win`\n- **Persona**: CRM adopter\n- **Goal**: From empty CRM to first closed-won deal with follow-up\n\n## Steps & Events\n1) `create_pipeline` \u2192 `pipeline.created`\n2) `create_contact_and_company` \u2192 `contact.created`\n3) `create_first_deal` \u2192 `deal.created`\n4) `move_deal_in_pipeline` \u2192 `deal.moved`\n5) `close_deal_won` \u2192 `deal.won`\n6) `setup_follow_up` \u2192 `task.completed` (type: follow_up)\n\nXP: 15/20/20/20/30/30 with 25 bonus within 72h. Badge: `crm_first_win`.\n\n## Wiring\n- Depends on `@contractspec/example.crm-pipeline` events.\n- Tracks export from `@contractspec/example.learning-journey-crm-onboarding/track`.\n- Use onboarding API:\n - `learning.onboarding.listTracks`\n - `learning.onboarding.getProgress`\n - `learning.onboarding.recordEvent` wired from CRM event bus handlers.\n- Surface in CRM dashboard/pipeline UI to guide new users."}];w(v);import{defineExample as u}from"@contractspec/lib.contracts-spec";var _=u({meta:{key:"learning-journey-crm-onboarding",version:"1.0.0",title:"Learning Journey \u2014 CRM First Win",description:"Onboarding track for CRM Pipeline driving users from empty CRM to first closed-won deal.",kind:"template",visibility:"public",stability:"experimental",owners:["@platform.core"],tags:["learning","crm","onboarding"]},docs:{rootDocId:"docs.learning-journey.crm-onboarding"},entrypoints:{packageName:"@contractspec/example.learning-journey-crm-onboarding",docs:"./docs"},surfaces:{templates:!0,sandbox:{enabled:!0,modes:["playground","markdown"]},studio:{enabled:!0,installable:!0},mcp:{enabled:!0}}}),x=_;var r={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"]}},G=[r];var g=["pipeline.created","contact.created","deal.created","deal.moved","deal.won","task.completed"],f=(o,{learnerId:a,occurredAt:i=new Date,payload:m},d)=>{let s={learnerId:a,name:o,occurredAt:i,payload:m,trackId:r.id};return d?d(s):s},W=(o,a)=>g.map((i)=>f(i,o,a));import{defineFeature as R}from"@contractspec/lib.contracts-spec";var $=R({meta:{key:"learning-journey-crm-onboarding",title:"Learning Journey: CRM Onboarding",description:"CRM first-win onboarding journey with step-by-step guidance for new CRM users",domain:"learning-journey",owners:["@examples.learning-journey.crm-onboarding"],tags:["learning","crm","onboarding","journey"],stability:"experimental",version:"1.0.0"},operations:[{key:"learningJourney.crmOnboarding.recordEvent",version:"1.0.0"},{key:"learningJourney.crmOnboarding.getTrack",version:"1.0.0"}],events:[],presentations:[{key:"learning.journey.crm.track",version:"1.0.0"},{key:"learning.journey.crm.widget",version:"1.0.0"}],opToPresentation:[{op:{key:"learningJourney.crmOnboarding.getTrack",version:"1.0.0"},pres:{key:"learning.journey.crm.track",version:"1.0.0"}}],presentationsTargets:[{key:"learning.journey.crm.track",version:"1.0.0",targets:["react","markdown","application/json"]},{key:"learning.journey.crm.widget",version:"1.0.0",targets:["react"]}],capabilities:{requires:[{key:"identity",version:"1.0.0"}]},docs:["docs.learning-journey.crm-onboarding"]});import{defineCommand as k,defineQuery as L}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as t,ScalarTypeEnum as e}from"@contractspec/lib.schema";var p=["examples.learning-journey.crm-onboarding"],C=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}}}),n=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:C,isArray:!0,isOptional:!1}}}),J=t({name:"CrmOnboardingTrackResponse",description:"Response wrapper for CRM onboarding track",fields:{track:{type:n,isOptional:!1}}}),I=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}}}),A=t({name:"CrmOnboardingSuccess",description:"Generic success response",fields:{success:{type:e.Boolean(),isOptional:!1}}}),N=L({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:J},policy:{auth:"user"}}),F=k({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:I,output:A},policy:{auth:"user"}}),Q={GetCrmOnboardingTrack:N,RecordCrmOnboardingEvent:F,track:r};import{definePresentation as c,StabilityEnum as X}from"@contractspec/lib.contracts-spec";var l={domain:"learning-journey",title:"CRM Onboarding",owners:["@examples.learning-journey.crm-onboarding"],tags:["learning","crm","onboarding"],stability:X.Experimental,goal:"Guide CRM users through onboarding",context:"CRM onboarding journey"},K=c({meta:{key:"learning.journey.crm.track",version:"1.0.0",description:"CRM first win track detail",...l},source:{type:"component",framework:"react",componentKey:"LearningTrackDetail",props:n},targets:["react","markdown","application/json"]}),U=c({meta:{key:"learning.journey.crm.widget",version:"1.0.0",description:"Compact widget for CRM onboarding progress",...l},source:{type:"component",framework:"react",componentKey:"LearningTrackProgressWidget"},targets:["react"]}),E=[K,U];export{x as example,f as emitCrmOnboardingEvent,W as emitAllCrmOnboardingEvents,E as crmOnboardingPresentations,g as crmOnboardingEvents,Q as crmOnboardingContracts,G as crmLearningTracks,r as crmFirstWinTrack,F as RecordCrmOnboardingEvent,$ as LearningJourneyCrmOnboardingFeature,N as GetCrmOnboardingTrack,U as CrmOnboardingWidgetPresentation,K as CrmOnboardingTrackPresentation,n as CrmOnboardingTrackModel};
@@ -1,49 +1,2 @@
1
1
  // @bun
2
- // src/learning-journey-crm-onboarding.feature.ts
3
- import { defineFeature } from "@contractspec/lib.contracts-spec";
4
- var LearningJourneyCrmOnboardingFeature = defineFeature({
5
- meta: {
6
- key: "learning-journey-crm-onboarding",
7
- title: "Learning Journey: CRM Onboarding",
8
- description: "CRM first-win onboarding journey with step-by-step guidance for new CRM users",
9
- domain: "learning-journey",
10
- owners: ["@examples.learning-journey.crm-onboarding"],
11
- tags: ["learning", "crm", "onboarding", "journey"],
12
- stability: "experimental",
13
- version: "1.0.0"
14
- },
15
- operations: [
16
- { key: "learningJourney.crmOnboarding.recordEvent", version: "1.0.0" },
17
- { key: "learningJourney.crmOnboarding.getTrack", version: "1.0.0" }
18
- ],
19
- events: [],
20
- presentations: [
21
- { key: "learning.journey.crm.track", version: "1.0.0" },
22
- { key: "learning.journey.crm.widget", version: "1.0.0" }
23
- ],
24
- opToPresentation: [
25
- {
26
- op: { key: "learningJourney.crmOnboarding.getTrack", version: "1.0.0" },
27
- pres: { key: "learning.journey.crm.track", version: "1.0.0" }
28
- }
29
- ],
30
- presentationsTargets: [
31
- {
32
- key: "learning.journey.crm.track",
33
- version: "1.0.0",
34
- targets: ["react", "markdown", "application/json"]
35
- },
36
- {
37
- key: "learning.journey.crm.widget",
38
- version: "1.0.0",
39
- targets: ["react"]
40
- }
41
- ],
42
- capabilities: {
43
- requires: [{ key: "identity", version: "1.0.0" }]
44
- },
45
- docs: ["docs.learning-journey.crm-onboarding"]
46
- });
47
- export {
48
- LearningJourneyCrmOnboardingFeature
49
- };
2
+ import{defineFeature as g}from"@contractspec/lib.contracts-spec";var j=g({meta:{key:"learning-journey-crm-onboarding",title:"Learning Journey: CRM Onboarding",description:"CRM first-win onboarding journey with step-by-step guidance for new CRM users",domain:"learning-journey",owners:["@examples.learning-journey.crm-onboarding"],tags:["learning","crm","onboarding","journey"],stability:"experimental",version:"1.0.0"},operations:[{key:"learningJourney.crmOnboarding.recordEvent",version:"1.0.0"},{key:"learningJourney.crmOnboarding.getTrack",version:"1.0.0"}],events:[],presentations:[{key:"learning.journey.crm.track",version:"1.0.0"},{key:"learning.journey.crm.widget",version:"1.0.0"}],opToPresentation:[{op:{key:"learningJourney.crmOnboarding.getTrack",version:"1.0.0"},pres:{key:"learning.journey.crm.track",version:"1.0.0"}}],presentationsTargets:[{key:"learning.journey.crm.track",version:"1.0.0",targets:["react","markdown","application/json"]},{key:"learning.journey.crm.widget",version:"1.0.0",targets:["react"]}],capabilities:{requires:[{key:"identity",version:"1.0.0"}]},docs:["docs.learning-journey.crm-onboarding"]});export{j as LearningJourneyCrmOnboardingFeature};