@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.
@@ -2,45 +2,45 @@ $ contractspec-bun-build prebuild
2
2
  $ bun run build:bundle && bun run build:types
3
3
  $ contractspec-bun-build transpile
4
4
  [contractspec-bun-build] transpile target=bun root=src entries=10 noBundle=false
5
- Bundled 10 modules in 47ms
5
+ Bundled 10 modules in 50ms
6
6
 
7
7
  docs/crm-onboarding.docblock.js 1.34 KB (entry point)
8
8
  tests/operations.test-spec.js 0.67 KB (entry point)
9
- ./index.js 9.25 KB (entry point)
9
+ ./index.js 8.70 KB (entry point)
10
10
  docs/index.js 1.34 KB (entry point)
11
11
  ./example.js 0.73 KB (entry point)
12
- handlers/demo.handlers.js 2.30 KB (entry point)
12
+ handlers/demo.handlers.js 2.64 KB (entry point)
13
13
  ./learning-journey-crm-onboarding.feature.js 1.19 KB (entry point)
14
- presentations/index.js 5.53 KB (entry point)
15
- operations/index.js 4.72 KB (entry point)
16
- ./track.js 1.99 KB (entry point)
14
+ presentations/index.js 4.98 KB (entry point)
15
+ operations/index.js 4.17 KB (entry point)
16
+ ./track.js 2.33 KB (entry point)
17
17
 
18
18
  [contractspec-bun-build] transpile target=node root=src entries=10 noBundle=false
19
- Bundled 10 modules in 48ms
19
+ Bundled 10 modules in 31ms
20
20
 
21
21
  docs/crm-onboarding.docblock.js 1.31 KB (entry point)
22
22
  tests/operations.test-spec.js 0.66 KB (entry point)
23
- ./index.js 9.21 KB (entry point)
23
+ ./index.js 8.66 KB (entry point)
24
24
  docs/index.js 1.31 KB (entry point)
25
25
  ./example.js 0.71 KB (entry point)
26
- handlers/demo.handlers.js 2.29 KB (entry point)
26
+ handlers/demo.handlers.js 2.63 KB (entry point)
27
27
  ./learning-journey-crm-onboarding.feature.js 1.18 KB (entry point)
28
- presentations/index.js 5.52 KB (entry point)
29
- operations/index.js 4.71 KB (entry point)
30
- ./track.js 1.99 KB (entry point)
28
+ presentations/index.js 4.97 KB (entry point)
29
+ operations/index.js 4.16 KB (entry point)
30
+ ./track.js 2.32 KB (entry point)
31
31
 
32
32
  [contractspec-bun-build] transpile target=browser root=src entries=10 noBundle=false
33
- Bundled 10 modules in 49ms
33
+ Bundled 10 modules in 66ms
34
34
 
35
35
  docs/crm-onboarding.docblock.js 1.31 KB (entry point)
36
36
  tests/operations.test-spec.js 0.66 KB (entry point)
37
- ./index.js 9.21 KB (entry point)
37
+ ./index.js 8.66 KB (entry point)
38
38
  docs/index.js 1.31 KB (entry point)
39
39
  ./example.js 0.71 KB (entry point)
40
- handlers/demo.handlers.js 2.29 KB (entry point)
40
+ handlers/demo.handlers.js 2.63 KB (entry point)
41
41
  ./learning-journey-crm-onboarding.feature.js 1.18 KB (entry point)
42
- presentations/index.js 5.52 KB (entry point)
43
- operations/index.js 4.71 KB (entry point)
44
- ./track.js 1.99 KB (entry point)
42
+ presentations/index.js 4.97 KB (entry point)
43
+ operations/index.js 4.16 KB (entry point)
44
+ ./track.js 2.32 KB (entry point)
45
45
 
46
46
  $ contractspec-bun-build types
package/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # @contractspec/example.learning-journey-crm-onboarding
2
2
 
3
+ ## 4.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - Redesign the learning system around the adaptive journey runtime and repair shared learning sandbox presentation wiring.
8
+ - Packages: @contractspec/module.learning-journey (major), @contractspec/module.examples (patch), @contractspec/example.learning-journey-ambient-coach (major), @contractspec/example.learning-journey-crm-onboarding (major), @contractspec/example.learning-journey-duo-drills (major), @contractspec/example.learning-journey-platform-tour (major), @contractspec/example.learning-journey-quest-challenges (major), @contractspec/example.learning-journey-registry (major), @contractspec/example.learning-journey-studio-onboarding (major), @contractspec/example.learning-journey-ui-coaching (major), @contractspec/example.learning-journey-ui-gamified (major), @contractspec/example.learning-journey-ui-onboarding (major), @contractspec/example.learning-journey-ui-shared (major), @contractspec/example.learning-patterns (major)
9
+ - Migration: Replace the old onboarding-centric learning contracts and local example progress logic with the canonical adaptive `learning.journey.*` runtime.; Use the shared learning registry mapping/data helpers so supported learning sandbox templates resolve the shared presentation set consistently.
10
+
11
+ ### Patch Changes
12
+
13
+ - Updated dependencies because of Add a family-aware ContractSpec Adoption Engine, expand contract authoring targets across CLI and VS Code tooling, and refresh release-facing schema and policy artifacts for downstream workspaces.
14
+ - Updated dependencies because of Improve app-config, theme, and feature authoring with explicit validation APIs, first-class theme discovery and scaffolding, and key-based app-config generation across contracts, workspace tooling, and the CLI.
15
+ - Updated dependencies because of Harden the shared data-table stack and add a first-class composed toolbar for search, filter chips, selection summary, and hidden-column recovery.
16
+ - Updated dependencies because of Refresh root, package, website, and LLM-facing docs so Connect, Builder, release capsules, and the current contracts-spec export surface stay aligned.
17
+ - Updated dependencies because of Persist canonical knowledge payload text during indexing and align the retrieval/query docs with the corrected behavior.
18
+ - Updated dependencies because of Redesign the learning system around the adaptive journey runtime and repair shared learning sandbox presentation wiring.
19
+ - Updated dependencies because of Unify example preview metadata so templates and docs derive inline preview support from shared example registry data instead of hand-maintained lists.
20
+ - @contractspec/lib.contracts-spec@5.4.0
21
+ - @contractspec/example.crm-pipeline@3.7.20
22
+ - @contractspec/module.learning-journey@4.0.0
23
+
3
24
  ## 3.7.19
4
25
 
5
26
  ### Patch Changes
@@ -1 +1 @@
1
- import{registerDocBlocks as f}from"@contractspec/lib.contracts-spec/docs";var h=[{id:"docs.learning-journey.crm-onboarding",title:"Learning Journey — 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` → `pipeline.created`\n2) `create_contact_and_company` → `contact.created`\n3) `create_first_deal` → `deal.created`\n4) `move_deal_in_pipeline` → `deal.moved`\n5) `close_deal_won` → `deal.won`\n6) `setup_follow_up` → `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);
1
+ import{registerDocBlocks as f}from"@contractspec/lib.contracts-spec/docs";var h=[{id:"docs.learning-journey.crm-onboarding",title:"Learning Journey — 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` → `pipeline.created`\n2) `create_contact_and_company` → `contact.created`\n3) `create_first_deal` → `deal.created`\n4) `move_deal_in_pipeline` → `deal.moved`\n5) `close_deal_won` → `deal.won`\n6) `setup_follow_up` → `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 the adaptive journey API:\n - `learning.journey.listTracks`\n - `learning.journey.getProgress`\n - `learning.journey.recordEvent` wired from CRM event bus handlers.\n- Surface in CRM dashboard/pipeline UI to guide new users."}];f(h);
@@ -1 +1 @@
1
- import{registerDocBlocks as f}from"@contractspec/lib.contracts-spec/docs";var h=[{id:"docs.learning-journey.crm-onboarding",title:"Learning Journey — 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` → `pipeline.created`\n2) `create_contact_and_company` → `contact.created`\n3) `create_first_deal` → `deal.created`\n4) `move_deal_in_pipeline` → `deal.moved`\n5) `close_deal_won` → `deal.won`\n6) `setup_follow_up` → `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);
1
+ import{registerDocBlocks as f}from"@contractspec/lib.contracts-spec/docs";var h=[{id:"docs.learning-journey.crm-onboarding",title:"Learning Journey — 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` → `pipeline.created`\n2) `create_contact_and_company` → `contact.created`\n3) `create_first_deal` → `deal.created`\n4) `move_deal_in_pipeline` → `deal.moved`\n5) `close_deal_won` → `deal.won`\n6) `setup_follow_up` → `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 the adaptive journey API:\n - `learning.journey.listTracks`\n - `learning.journey.getProgress`\n - `learning.journey.recordEvent` wired from CRM event bus handlers.\n- Surface in CRM dashboard/pipeline UI to guide new users."}];f(h);
@@ -1 +1 @@
1
- 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};
1
+ 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:{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"]}},s=[r];var i=["pipeline.created","contact.created","deal.created","deal.moved","deal.won","task.completed"],p=(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)=>p(a,e,t));export{p as emitCrmOnboardingEvent,m as emitAllCrmOnboardingEvents,i as crmOnboardingEvents};
@@ -1 +1 @@
1
- import{registerDocBlocks as w}from"@contractspec/lib.contracts-spec/docs";var v=[{id:"docs.learning-journey.crm-onboarding",title:"Learning Journey — 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` → `pipeline.created`\n2) `create_contact_and_company` → `contact.created`\n3) `create_first_deal` → `deal.created`\n4) `move_deal_in_pipeline` → `deal.moved`\n5) `close_deal_won` → `deal.won`\n6) `setup_follow_up` → `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 — 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
+ import{registerDocBlocks as u}from"@contractspec/lib.contracts-spec/docs";var _=[{id:"docs.learning-journey.crm-onboarding",title:"Learning Journey — 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` → `pipeline.created`\n2) `create_contact_and_company` → `contact.created`\n3) `create_first_deal` → `deal.created`\n4) `move_deal_in_pipeline` → `deal.moved`\n5) `close_deal_won` → `deal.won`\n6) `setup_follow_up` → `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 the adaptive journey API:\n - `learning.journey.listTracks`\n - `learning.journey.getProgress`\n - `learning.journey.recordEvent` wired from CRM event bus handlers.\n- Surface in CRM dashboard/pipeline UI to guide new users."}];u(_);import{defineExample as w}from"@contractspec/lib.contracts-spec";var v=w({meta:{key:"learning-journey-crm-onboarding",version:"1.0.0",title:"Learning Journey — 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}}}),f=v;var e={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"]}},z=[e];var x=["pipeline.created","contact.created","deal.created","deal.moved","deal.won","task.completed"],g=(r,{learnerId:p,occurredAt:i=new Date,payload:m},n)=>{let d={learnerId:p,name:r,occurredAt:i,payload:m,trackId:e.id};return n?n(d):d},H=(r,p)=>x.map((i)=>g(i,r,p));import{defineFeature as k}from"@contractspec/lib.contracts-spec";var Y=k({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 R,defineQuery as y}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as a,ScalarTypeEnum as t}from"@contractspec/lib.schema";import{JourneyTrackModel as I}from"@contractspec/module.learning-journey/contracts/journey";var s=["examples.learning-journey.crm-onboarding"],o=I,C=a({name:"CrmOnboardingTrackResponse",description:"Response wrapper for CRM onboarding track",fields:{track:{type:o,isOptional:!1}}}),q=a({name:"CrmOnboardingRecordEventInput",description:"Emit a demo event to advance CRM onboarding steps",fields:{learnerId:{type:t.String_unsecure(),isOptional:!1},eventName:{type:t.String_unsecure(),isOptional:!1},payload:{type:t.JSON(),isOptional:!0},occurredAt:{type:t.DateTime(),isOptional:!0}}}),L=a({name:"CrmOnboardingSuccess",description:"Generic success response",fields:{success:{type:t.Boolean(),isOptional:!1}}}),A=y({meta:{key:"learningJourney.crmOnboarding.getTrack",version:"1.0.0",stability:"experimental",owners:[...s],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:a({name:"CrmOnboardingTrackInput",description:"Track input",fields:{}}),output:C},policy:{auth:"user"}}),E=R({meta:{key:"learningJourney.crmOnboarding.recordEvent",version:"1.0.0",stability:"experimental",owners:[...s],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:q,output:L},policy:{auth:"user"}}),j={GetCrmOnboardingTrack:A,RecordCrmOnboardingEvent:E,track:e};import{definePresentation as c,StabilityEnum as N}from"@contractspec/lib.contracts-spec";var l={domain:"learning-journey",title:"CRM Onboarding",owners:["@examples.learning-journey.crm-onboarding"],tags:["learning","crm","onboarding"],stability:N.Experimental,goal:"Guide CRM users through onboarding",context:"CRM onboarding journey"},J=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:o},targets:["react","markdown","application/json"]}),h=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"]}),T=[J,h];export{f as example,g as emitCrmOnboardingEvent,H as emitAllCrmOnboardingEvents,T as crmOnboardingPresentations,x as crmOnboardingEvents,j as crmOnboardingContracts,z as crmLearningTracks,e as crmFirstWinTrack,E as RecordCrmOnboardingEvent,Y as LearningJourneyCrmOnboardingFeature,A as GetCrmOnboardingTrack,h as CrmOnboardingWidgetPresentation,J as CrmOnboardingTrackPresentation,o as CrmJourneyTrackModel};
@@ -1 +1 @@
1
- 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};
1
+ 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};
@@ -1 +1 @@
1
- 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"]}},v=[o];import{defineCommand as p,defineQuery as d}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as t,ScalarTypeEnum as e}from"@contractspec/lib.schema";var i=["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}}}),a=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}}}),l=t({name:"CrmOnboardingTrackResponse",description:"Response wrapper for CRM onboarding track",fields:{track:{type:a,isOptional:!1}}}),n=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}}}),w=t({name:"CrmOnboardingSuccess",description:"Generic success response",fields:{success:{type:e.Boolean(),isOptional:!1}}}),_=d({meta:{key:"learningJourney.crmOnboarding.getTrack",version:"1.0.0",stability:"experimental",owners:[...i],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:l},policy:{auth:"user"}}),m=p({meta:{key:"learningJourney.crmOnboarding.recordEvent",version:"1.0.0",stability:"experimental",owners:[...i],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:n,output:w},policy:{auth:"user"}}),N={GetCrmOnboardingTrack:_,RecordCrmOnboardingEvent:m,track:o};import{definePresentation as r,StabilityEnum as u}from"@contractspec/lib.contracts-spec";var s={domain:"learning-journey",title:"CRM Onboarding",owners:["@examples.learning-journey.crm-onboarding"],tags:["learning","crm","onboarding"],stability:u.Experimental,goal:"Guide CRM users through onboarding",context:"CRM onboarding journey"},x=r({meta:{key:"learning.journey.crm.track",version:"1.0.0",description:"CRM first win track detail",...s},source:{type:"component",framework:"react",componentKey:"LearningTrackDetail",props:a},targets:["react","markdown","application/json"]}),f=r({meta:{key:"learning.journey.crm.widget",version:"1.0.0",description:"Compact widget for CRM onboarding progress",...s},source:{type:"component",framework:"react",componentKey:"LearningTrackProgressWidget"},targets:["react"]}),X=[x,f];export{X as crmOnboardingPresentations,f as CrmOnboardingWidgetPresentation,x as CrmOnboardingTrackPresentation};
1
+ 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"]}},v=[a];import{defineCommand as o,defineQuery as c}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as t,ScalarTypeEnum as e}from"@contractspec/lib.schema";import{JourneyTrackModel as d}from"@contractspec/module.learning-journey/contracts/journey";var i=["examples.learning-journey.crm-onboarding"],p=d,l=t({name:"CrmOnboardingTrackResponse",description:"Response wrapper for CRM onboarding track",fields:{track:{type:p,isOptional:!1}}}),n=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}}}),m=t({name:"CrmOnboardingSuccess",description:"Generic success response",fields:{success:{type:e.Boolean(),isOptional:!1}}}),_=c({meta:{key:"learningJourney.crmOnboarding.getTrack",version:"1.0.0",stability:"experimental",owners:[...i],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:l},policy:{auth:"user"}}),u=o({meta:{key:"learningJourney.crmOnboarding.recordEvent",version:"1.0.0",stability:"experimental",owners:[...i],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:n,output:m},policy:{auth:"user"}}),N={GetCrmOnboardingTrack:_,RecordCrmOnboardingEvent:u,track:a};import{definePresentation as s,StabilityEnum as w}from"@contractspec/lib.contracts-spec";var r={domain:"learning-journey",title:"CRM Onboarding",owners:["@examples.learning-journey.crm-onboarding"],tags:["learning","crm","onboarding"],stability:w.Experimental,goal:"Guide CRM users through onboarding",context:"CRM onboarding journey"},f=s({meta:{key:"learning.journey.crm.track",version:"1.0.0",description:"CRM first win track detail",...r},source:{type:"component",framework:"react",componentKey:"LearningTrackDetail",props:p},targets:["react","markdown","application/json"]}),x=s({meta:{key:"learning.journey.crm.widget",version:"1.0.0",description:"Compact widget for CRM onboarding progress",...r},source:{type:"component",framework:"react",componentKey:"LearningTrackProgressWidget"},targets:["react"]}),F=[f,x];export{F as crmOnboardingPresentations,x as CrmOnboardingWidgetPresentation,f as CrmOnboardingTrackPresentation};
@@ -1 +1 @@
1
- var e={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"]}},a=[e];export{a as crmLearningTracks,e as crmFirstWinTrack};
1
+ var e={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"]}},t=[e];export{t as crmLearningTracks,e as crmFirstWinTrack};
@@ -1,2 +1,2 @@
1
1
  // @bun
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);
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 the adaptive journey API:\n - `learning.journey.listTracks`\n - `learning.journey.getProgress`\n - `learning.journey.recordEvent` wired from CRM event bus handlers.\n- Surface in CRM dashboard/pipeline UI to guide new users."}];f(h);
@@ -1,2 +1,2 @@
1
1
  // @bun
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);
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 the adaptive journey API:\n - `learning.journey.listTracks`\n - `learning.journey.getProgress`\n - `learning.journey.recordEvent` wired from CRM event bus handlers.\n- Surface in CRM dashboard/pipeline UI to guide new users."}];f(h);
@@ -1,2 +1,2 @@
1
1
  // @bun
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};
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:{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"]}},s=[r];var i=["pipeline.created","contact.created","deal.created","deal.moved","deal.won","task.completed"],p=(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)=>p(a,e,t));export{p as emitCrmOnboardingEvent,m as emitAllCrmOnboardingEvents,i as crmOnboardingEvents};
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  // @bun
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};
2
+ import{registerDocBlocks as u}from"@contractspec/lib.contracts-spec/docs";var _=[{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 the adaptive journey API:\n - `learning.journey.listTracks`\n - `learning.journey.getProgress`\n - `learning.journey.recordEvent` wired from CRM event bus handlers.\n- Surface in CRM dashboard/pipeline UI to guide new users."}];u(_);import{defineExample as w}from"@contractspec/lib.contracts-spec";var v=w({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}}}),f=v;var e={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"]}},z=[e];var x=["pipeline.created","contact.created","deal.created","deal.moved","deal.won","task.completed"],g=(r,{learnerId:p,occurredAt:i=new Date,payload:m},n)=>{let d={learnerId:p,name:r,occurredAt:i,payload:m,trackId:e.id};return n?n(d):d},H=(r,p)=>x.map((i)=>g(i,r,p));import{defineFeature as k}from"@contractspec/lib.contracts-spec";var Y=k({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 R,defineQuery as y}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as a,ScalarTypeEnum as t}from"@contractspec/lib.schema";import{JourneyTrackModel as I}from"@contractspec/module.learning-journey/contracts/journey";var s=["examples.learning-journey.crm-onboarding"],o=I,C=a({name:"CrmOnboardingTrackResponse",description:"Response wrapper for CRM onboarding track",fields:{track:{type:o,isOptional:!1}}}),q=a({name:"CrmOnboardingRecordEventInput",description:"Emit a demo event to advance CRM onboarding steps",fields:{learnerId:{type:t.String_unsecure(),isOptional:!1},eventName:{type:t.String_unsecure(),isOptional:!1},payload:{type:t.JSON(),isOptional:!0},occurredAt:{type:t.DateTime(),isOptional:!0}}}),L=a({name:"CrmOnboardingSuccess",description:"Generic success response",fields:{success:{type:t.Boolean(),isOptional:!1}}}),A=y({meta:{key:"learningJourney.crmOnboarding.getTrack",version:"1.0.0",stability:"experimental",owners:[...s],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:a({name:"CrmOnboardingTrackInput",description:"Track input",fields:{}}),output:C},policy:{auth:"user"}}),E=R({meta:{key:"learningJourney.crmOnboarding.recordEvent",version:"1.0.0",stability:"experimental",owners:[...s],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:q,output:L},policy:{auth:"user"}}),j={GetCrmOnboardingTrack:A,RecordCrmOnboardingEvent:E,track:e};import{definePresentation as c,StabilityEnum as N}from"@contractspec/lib.contracts-spec";var l={domain:"learning-journey",title:"CRM Onboarding",owners:["@examples.learning-journey.crm-onboarding"],tags:["learning","crm","onboarding"],stability:N.Experimental,goal:"Guide CRM users through onboarding",context:"CRM onboarding journey"},J=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:o},targets:["react","markdown","application/json"]}),h=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"]}),T=[J,h];export{f as example,g as emitCrmOnboardingEvent,H as emitAllCrmOnboardingEvents,T as crmOnboardingPresentations,x as crmOnboardingEvents,j as crmOnboardingContracts,z as crmLearningTracks,e as crmFirstWinTrack,E as RecordCrmOnboardingEvent,Y as LearningJourneyCrmOnboardingFeature,A as GetCrmOnboardingTrack,h as CrmOnboardingWidgetPresentation,J as CrmOnboardingTrackPresentation,o as CrmJourneyTrackModel};
@@ -1 +1 @@
1
- import{registerDocBlocks as f}from"@contractspec/lib.contracts-spec/docs";var h=[{id:"docs.learning-journey.crm-onboarding",title:"Learning Journey — 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` → `pipeline.created`\n2) `create_contact_and_company` → `contact.created`\n3) `create_first_deal` → `deal.created`\n4) `move_deal_in_pipeline` → `deal.moved`\n5) `close_deal_won` → `deal.won`\n6) `setup_follow_up` → `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);
1
+ import{registerDocBlocks as f}from"@contractspec/lib.contracts-spec/docs";var h=[{id:"docs.learning-journey.crm-onboarding",title:"Learning Journey — 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` → `pipeline.created`\n2) `create_contact_and_company` → `contact.created`\n3) `create_first_deal` → `deal.created`\n4) `move_deal_in_pipeline` → `deal.moved`\n5) `close_deal_won` → `deal.won`\n6) `setup_follow_up` → `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 the adaptive journey API:\n - `learning.journey.listTracks`\n - `learning.journey.getProgress`\n - `learning.journey.recordEvent` wired from CRM event bus handlers.\n- Surface in CRM dashboard/pipeline UI to guide new users."}];f(h);
@@ -1 +1 @@
1
- import{registerDocBlocks as f}from"@contractspec/lib.contracts-spec/docs";var h=[{id:"docs.learning-journey.crm-onboarding",title:"Learning Journey — 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` → `pipeline.created`\n2) `create_contact_and_company` → `contact.created`\n3) `create_first_deal` → `deal.created`\n4) `move_deal_in_pipeline` → `deal.moved`\n5) `close_deal_won` → `deal.won`\n6) `setup_follow_up` → `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);
1
+ import{registerDocBlocks as f}from"@contractspec/lib.contracts-spec/docs";var h=[{id:"docs.learning-journey.crm-onboarding",title:"Learning Journey — 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` → `pipeline.created`\n2) `create_contact_and_company` → `contact.created`\n3) `create_first_deal` → `deal.created`\n4) `move_deal_in_pipeline` → `deal.moved`\n5) `close_deal_won` → `deal.won`\n6) `setup_follow_up` → `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 the adaptive journey API:\n - `learning.journey.listTracks`\n - `learning.journey.getProgress`\n - `learning.journey.recordEvent` wired from CRM event bus handlers.\n- Surface in CRM dashboard/pipeline UI to guide new users."}];f(h);
@@ -1 +1 @@
1
- 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};
1
+ 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:{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"]}},s=[r];var i=["pipeline.created","contact.created","deal.created","deal.moved","deal.won","task.completed"],p=(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)=>p(a,e,t));export{p as emitCrmOnboardingEvent,m as emitAllCrmOnboardingEvents,i as crmOnboardingEvents};
@@ -1 +1 @@
1
- import{registerDocBlocks as w}from"@contractspec/lib.contracts-spec/docs";var v=[{id:"docs.learning-journey.crm-onboarding",title:"Learning Journey — 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` → `pipeline.created`\n2) `create_contact_and_company` → `contact.created`\n3) `create_first_deal` → `deal.created`\n4) `move_deal_in_pipeline` → `deal.moved`\n5) `close_deal_won` → `deal.won`\n6) `setup_follow_up` → `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 — 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
+ import{registerDocBlocks as u}from"@contractspec/lib.contracts-spec/docs";var _=[{id:"docs.learning-journey.crm-onboarding",title:"Learning Journey — 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` → `pipeline.created`\n2) `create_contact_and_company` → `contact.created`\n3) `create_first_deal` → `deal.created`\n4) `move_deal_in_pipeline` → `deal.moved`\n5) `close_deal_won` → `deal.won`\n6) `setup_follow_up` → `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 the adaptive journey API:\n - `learning.journey.listTracks`\n - `learning.journey.getProgress`\n - `learning.journey.recordEvent` wired from CRM event bus handlers.\n- Surface in CRM dashboard/pipeline UI to guide new users."}];u(_);import{defineExample as w}from"@contractspec/lib.contracts-spec";var v=w({meta:{key:"learning-journey-crm-onboarding",version:"1.0.0",title:"Learning Journey — 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}}}),f=v;var e={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"]}},z=[e];var x=["pipeline.created","contact.created","deal.created","deal.moved","deal.won","task.completed"],g=(r,{learnerId:p,occurredAt:i=new Date,payload:m},n)=>{let d={learnerId:p,name:r,occurredAt:i,payload:m,trackId:e.id};return n?n(d):d},H=(r,p)=>x.map((i)=>g(i,r,p));import{defineFeature as k}from"@contractspec/lib.contracts-spec";var Y=k({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 R,defineQuery as y}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as a,ScalarTypeEnum as t}from"@contractspec/lib.schema";import{JourneyTrackModel as I}from"@contractspec/module.learning-journey/contracts/journey";var s=["examples.learning-journey.crm-onboarding"],o=I,C=a({name:"CrmOnboardingTrackResponse",description:"Response wrapper for CRM onboarding track",fields:{track:{type:o,isOptional:!1}}}),q=a({name:"CrmOnboardingRecordEventInput",description:"Emit a demo event to advance CRM onboarding steps",fields:{learnerId:{type:t.String_unsecure(),isOptional:!1},eventName:{type:t.String_unsecure(),isOptional:!1},payload:{type:t.JSON(),isOptional:!0},occurredAt:{type:t.DateTime(),isOptional:!0}}}),L=a({name:"CrmOnboardingSuccess",description:"Generic success response",fields:{success:{type:t.Boolean(),isOptional:!1}}}),A=y({meta:{key:"learningJourney.crmOnboarding.getTrack",version:"1.0.0",stability:"experimental",owners:[...s],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:a({name:"CrmOnboardingTrackInput",description:"Track input",fields:{}}),output:C},policy:{auth:"user"}}),E=R({meta:{key:"learningJourney.crmOnboarding.recordEvent",version:"1.0.0",stability:"experimental",owners:[...s],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:q,output:L},policy:{auth:"user"}}),j={GetCrmOnboardingTrack:A,RecordCrmOnboardingEvent:E,track:e};import{definePresentation as c,StabilityEnum as N}from"@contractspec/lib.contracts-spec";var l={domain:"learning-journey",title:"CRM Onboarding",owners:["@examples.learning-journey.crm-onboarding"],tags:["learning","crm","onboarding"],stability:N.Experimental,goal:"Guide CRM users through onboarding",context:"CRM onboarding journey"},J=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:o},targets:["react","markdown","application/json"]}),h=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"]}),T=[J,h];export{f as example,g as emitCrmOnboardingEvent,H as emitAllCrmOnboardingEvents,T as crmOnboardingPresentations,x as crmOnboardingEvents,j as crmOnboardingContracts,z as crmLearningTracks,e as crmFirstWinTrack,E as RecordCrmOnboardingEvent,Y as LearningJourneyCrmOnboardingFeature,A as GetCrmOnboardingTrack,h as CrmOnboardingWidgetPresentation,J as CrmOnboardingTrackPresentation,o as CrmJourneyTrackModel};
@@ -1 +1 @@
1
- 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};
1
+ 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};
@@ -1 +1 @@
1
- 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"]}},v=[o];import{defineCommand as p,defineQuery as d}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as t,ScalarTypeEnum as e}from"@contractspec/lib.schema";var i=["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}}}),a=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}}}),l=t({name:"CrmOnboardingTrackResponse",description:"Response wrapper for CRM onboarding track",fields:{track:{type:a,isOptional:!1}}}),n=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}}}),w=t({name:"CrmOnboardingSuccess",description:"Generic success response",fields:{success:{type:e.Boolean(),isOptional:!1}}}),_=d({meta:{key:"learningJourney.crmOnboarding.getTrack",version:"1.0.0",stability:"experimental",owners:[...i],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:l},policy:{auth:"user"}}),m=p({meta:{key:"learningJourney.crmOnboarding.recordEvent",version:"1.0.0",stability:"experimental",owners:[...i],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:n,output:w},policy:{auth:"user"}}),N={GetCrmOnboardingTrack:_,RecordCrmOnboardingEvent:m,track:o};import{definePresentation as r,StabilityEnum as u}from"@contractspec/lib.contracts-spec";var s={domain:"learning-journey",title:"CRM Onboarding",owners:["@examples.learning-journey.crm-onboarding"],tags:["learning","crm","onboarding"],stability:u.Experimental,goal:"Guide CRM users through onboarding",context:"CRM onboarding journey"},x=r({meta:{key:"learning.journey.crm.track",version:"1.0.0",description:"CRM first win track detail",...s},source:{type:"component",framework:"react",componentKey:"LearningTrackDetail",props:a},targets:["react","markdown","application/json"]}),f=r({meta:{key:"learning.journey.crm.widget",version:"1.0.0",description:"Compact widget for CRM onboarding progress",...s},source:{type:"component",framework:"react",componentKey:"LearningTrackProgressWidget"},targets:["react"]}),X=[x,f];export{X as crmOnboardingPresentations,f as CrmOnboardingWidgetPresentation,x as CrmOnboardingTrackPresentation};
1
+ 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"]}},v=[a];import{defineCommand as o,defineQuery as c}from"@contractspec/lib.contracts-spec";import{defineSchemaModel as t,ScalarTypeEnum as e}from"@contractspec/lib.schema";import{JourneyTrackModel as d}from"@contractspec/module.learning-journey/contracts/journey";var i=["examples.learning-journey.crm-onboarding"],p=d,l=t({name:"CrmOnboardingTrackResponse",description:"Response wrapper for CRM onboarding track",fields:{track:{type:p,isOptional:!1}}}),n=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}}}),m=t({name:"CrmOnboardingSuccess",description:"Generic success response",fields:{success:{type:e.Boolean(),isOptional:!1}}}),_=c({meta:{key:"learningJourney.crmOnboarding.getTrack",version:"1.0.0",stability:"experimental",owners:[...i],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:l},policy:{auth:"user"}}),u=o({meta:{key:"learningJourney.crmOnboarding.recordEvent",version:"1.0.0",stability:"experimental",owners:[...i],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:n,output:m},policy:{auth:"user"}}),N={GetCrmOnboardingTrack:_,RecordCrmOnboardingEvent:u,track:a};import{definePresentation as s,StabilityEnum as w}from"@contractspec/lib.contracts-spec";var r={domain:"learning-journey",title:"CRM Onboarding",owners:["@examples.learning-journey.crm-onboarding"],tags:["learning","crm","onboarding"],stability:w.Experimental,goal:"Guide CRM users through onboarding",context:"CRM onboarding journey"},f=s({meta:{key:"learning.journey.crm.track",version:"1.0.0",description:"CRM first win track detail",...r},source:{type:"component",framework:"react",componentKey:"LearningTrackDetail",props:p},targets:["react","markdown","application/json"]}),x=s({meta:{key:"learning.journey.crm.widget",version:"1.0.0",description:"Compact widget for CRM onboarding progress",...r},source:{type:"component",framework:"react",componentKey:"LearningTrackProgressWidget"},targets:["react"]}),F=[f,x];export{F as crmOnboardingPresentations,x as CrmOnboardingWidgetPresentation,f as CrmOnboardingTrackPresentation};
@@ -1 +1 @@
1
- var e={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"]}},a=[e];export{a as crmLearningTracks,e as crmFirstWinTrack};
1
+ var e={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"]}},t=[e];export{t as crmLearningTracks,e as crmFirstWinTrack};