@lssm/example.learning-journey-crm-onboarding 0.0.0-canary-20251217080011 → 1.41.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +20 -22
- package/dist/contracts/index.js +1 -178
- package/dist/docs/crm-onboarding.docblock.js +1 -42
- package/dist/docs/index.js +1 -1
- package/dist/example.js +1 -34
- package/dist/handlers/demo.handlers.js +1 -25
- package/dist/index.js +1 -9
- package/dist/learning-journey-crm-onboarding.feature.js +1 -66
- package/dist/presentations/index.js +1 -49
- package/dist/track.js +1 -98
- package/package.json +16 -18
- package/tsconfig.tsbuildinfo +1 -1
- package/.turbo/turbo-build$colon$bundle.log +0 -220
- package/CHANGELOG.md +0 -15
- package/dist/contracts/index.d.ts +0 -270
- package/dist/docs/crm-onboarding.docblock.d.ts +0 -1
- package/dist/docs/index.d.ts +0 -1
- package/dist/example.d.ts +0 -32
- package/dist/handlers/demo.handlers.d.ts +0 -24
- package/dist/index.d.ts +0 -7
- package/dist/learning-journey-crm-onboarding.feature.d.ts +0 -11
- package/dist/libs/contracts/dist/capabilities/openbanking.js +0 -88
- package/dist/libs/contracts/dist/client/index.js +0 -5
- package/dist/libs/contracts/dist/client/react/feature-render.js +0 -2
- package/dist/libs/contracts/dist/client/react/form-render.js +0 -4
- package/dist/libs/contracts/dist/client/react/index.js +0 -4
- package/dist/libs/contracts/dist/contract-registry/index.js +0 -1
- package/dist/libs/contracts/dist/contract-registry/schemas.js +0 -60
- package/dist/libs/contracts/dist/docs/PUBLISHING.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/index.js +0 -29
- package/dist/libs/contracts/dist/docs/presentations.js +0 -71
- package/dist/libs/contracts/dist/docs/registry.js +0 -44
- package/dist/libs/contracts/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js +0 -80
- package/dist/libs/contracts/dist/docs/tech/contracts/openapi-export.docblock.js +0 -57
- package/dist/libs/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/tech/llm/llm-integration.docblock.js +0 -357
- package/dist/libs/contracts/dist/docs/tech/mcp-endpoints.docblock.js +0 -37
- package/dist/libs/contracts/dist/docs/tech/presentation-runtime.docblock.js +0 -16
- package/dist/libs/contracts/dist/docs/tech/schema/README.docblock.js +0 -20
- package/dist/libs/contracts/dist/docs/tech/studio/learning-events.docblock.js +0 -48
- package/dist/libs/contracts/dist/docs/tech/studio/learning-journeys.docblock.js +0 -79
- package/dist/libs/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js +0 -84
- package/dist/libs/contracts/dist/docs/tech/studio/project-access-teams.docblock.js +0 -45
- package/dist/libs/contracts/dist/docs/tech/studio/project-routing.docblock.js +0 -67
- package/dist/libs/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js +0 -40
- package/dist/libs/contracts/dist/docs/tech/studio/team-invitations.docblock.js +0 -69
- package/dist/libs/contracts/dist/docs/tech/studio/workspace-ops.docblock.js +0 -47
- package/dist/libs/contracts/dist/docs/tech/studio/workspaces.docblock.js +0 -62
- package/dist/libs/contracts/dist/docs/tech/telemetry-ingest.docblock.js +0 -155
- package/dist/libs/contracts/dist/docs/tech/templates/runtime.docblock.js +0 -20
- package/dist/libs/contracts/dist/docs/tech/vscode-extension.docblock.js +0 -101
- package/dist/libs/contracts/dist/docs/tech/workflows/overview.docblock.js +0 -20
- package/dist/libs/contracts/dist/events.js +0 -1
- package/dist/libs/contracts/dist/experiments/evaluator.js +0 -1
- package/dist/libs/contracts/dist/index.js +0 -71
- package/dist/libs/contracts/dist/install.js +0 -2
- package/dist/libs/contracts/dist/integrations/contracts.js +0 -377
- package/dist/libs/contracts/dist/integrations/index.js +0 -18
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/accounts.js +0 -228
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/balances.js +0 -159
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/index.js +0 -3
- package/dist/libs/contracts/dist/integrations/openbanking/contracts/transactions.js +0 -210
- package/dist/libs/contracts/dist/integrations/openbanking/models.js +0 -242
- package/dist/libs/contracts/dist/integrations/openbanking/telemetry.js +0 -13
- package/dist/libs/contracts/dist/integrations/providers/elevenlabs.js +0 -52
- package/dist/libs/contracts/dist/integrations/providers/gcs-storage.js +0 -75
- package/dist/libs/contracts/dist/integrations/providers/gmail.js +0 -87
- package/dist/libs/contracts/dist/integrations/providers/google-calendar.js +0 -66
- package/dist/libs/contracts/dist/integrations/providers/index.js +0 -11
- package/dist/libs/contracts/dist/integrations/providers/mistral.js +0 -68
- package/dist/libs/contracts/dist/integrations/providers/postmark.js +0 -68
- package/dist/libs/contracts/dist/integrations/providers/powens.js +0 -116
- package/dist/libs/contracts/dist/integrations/providers/qdrant.js +0 -73
- package/dist/libs/contracts/dist/integrations/providers/registry.js +0 -10
- package/dist/libs/contracts/dist/integrations/providers/stripe.js +0 -83
- package/dist/libs/contracts/dist/integrations/providers/twilio-sms.js +0 -61
- package/dist/libs/contracts/dist/jsonschema.js +0 -1
- package/dist/libs/contracts/dist/knowledge/contracts.js +0 -306
- package/dist/libs/contracts/dist/knowledge/index.js +0 -7
- package/dist/libs/contracts/dist/knowledge/spaces/email-threads.js +0 -34
- package/dist/libs/contracts/dist/knowledge/spaces/financial-docs.js +0 -34
- package/dist/libs/contracts/dist/knowledge/spaces/financial-overview.js +0 -38
- package/dist/libs/contracts/dist/knowledge/spaces/index.js +0 -6
- package/dist/libs/contracts/dist/knowledge/spaces/product-canon.js +0 -34
- package/dist/libs/contracts/dist/knowledge/spaces/support-faq.js +0 -37
- package/dist/libs/contracts/dist/knowledge/spaces/uploaded-docs.js +0 -34
- package/dist/libs/contracts/dist/llm/exporters.js +0 -19
- package/dist/libs/contracts/dist/llm/index.js +0 -2
- package/dist/libs/contracts/dist/llm/prompts.js +0 -1
- package/dist/libs/contracts/dist/onboarding-base.js +0 -196
- package/dist/libs/contracts/dist/openapi.js +0 -1
- package/dist/libs/contracts/dist/ownership.js +0 -21
- package/dist/libs/contracts/dist/presentations.js +0 -1
- package/dist/libs/contracts/dist/presentations.v2.js +0 -11
- package/dist/libs/contracts/dist/prompt.js +0 -1
- package/dist/libs/contracts/dist/promptRegistry.js +0 -1
- package/dist/libs/contracts/dist/regenerator/index.js +0 -1
- package/dist/libs/contracts/dist/regenerator/service.js +0 -6
- package/dist/libs/contracts/dist/registry.js +0 -2
- package/dist/libs/contracts/dist/resources.js +0 -1
- package/dist/libs/contracts/dist/schema/dist/EnumType.js +0 -2
- package/dist/libs/contracts/dist/schema/dist/FieldType.js +0 -49
- package/dist/libs/contracts/dist/schema/dist/ScalarTypeEnum.js +0 -236
- package/dist/libs/contracts/dist/schema/dist/SchemaModel.js +0 -34
- package/dist/libs/contracts/dist/schema/dist/entity/defineEntity.js +0 -1
- package/dist/libs/contracts/dist/schema/dist/entity/index.js +0 -2
- package/dist/libs/contracts/dist/schema/dist/entity/types.js +0 -1
- package/dist/libs/contracts/dist/schema/dist/index.js +0 -6
- package/dist/libs/contracts/dist/server/graphql-pothos.js +0 -6
- package/dist/libs/contracts/dist/server/index.js +0 -8
- package/dist/libs/contracts/dist/server/mcp/createMcpServer.js +0 -4
- package/dist/libs/contracts/dist/server/mcp/registerPresentations.js +0 -2
- package/dist/libs/contracts/dist/server/mcp/registerPrompts.js +0 -1
- package/dist/libs/contracts/dist/server/mcp/registerResources.js +0 -2
- package/dist/libs/contracts/dist/server/mcp/registerTools.js +0 -1
- package/dist/libs/contracts/dist/server/provider-mcp.js +0 -1
- package/dist/libs/contracts/dist/server/rest-elysia.js +0 -1
- package/dist/libs/contracts/dist/server/rest-express.js +0 -1
- package/dist/libs/contracts/dist/server/rest-generic.js +0 -1
- package/dist/libs/contracts/dist/server/rest-next-app.js +0 -1
- package/dist/libs/contracts/dist/server/rest-next-pages.js +0 -1
- package/dist/libs/contracts/dist/spec.js +0 -34
- package/dist/libs/contracts/dist/telemetry/index.js +0 -1
- package/dist/libs/contracts/dist/telemetry/tracker.js +0 -1
- package/dist/libs/contracts/dist/tests/index.js +0 -1
- package/dist/libs/contracts/dist/tests/runner.js +0 -2
- package/dist/libs/contracts/dist/workflow/index.js +0 -1
- package/dist/libs/contracts/dist/workflow/runner.js +0 -1
- package/dist/libs/schema/dist/EnumType.js +0 -2
- package/dist/libs/schema/dist/FieldType.js +0 -49
- package/dist/libs/schema/dist/ScalarTypeEnum.js +0 -236
- package/dist/libs/schema/dist/SchemaModel.js +0 -39
- package/dist/libs/schema/dist/entity/defineEntity.js +0 -1
- package/dist/libs/schema/dist/entity/index.js +0 -2
- package/dist/libs/schema/dist/entity/types.js +0 -1
- package/dist/libs/schema/dist/index.js +0 -6
- package/dist/presentations/index.d.ts +0 -8
- package/dist/track.d.ts +0 -7
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,22 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
[
|
|
4
|
-
[34mℹ[39m
|
|
5
|
-
[34mℹ[39m
|
|
6
|
-
[34mℹ[39m
|
|
7
|
-
[34mℹ[39m
|
|
8
|
-
[34mℹ[39m
|
|
9
|
-
[34mℹ[39m
|
|
10
|
-
[34mℹ[39m
|
|
11
|
-
[34mℹ[39m [2mdist/[22m[
|
|
12
|
-
[34mℹ[39m [2mdist/[22m[
|
|
13
|
-
[34mℹ[39m [2mdist/[22m[
|
|
14
|
-
[34mℹ[39m [2mdist/[22m[
|
|
15
|
-
[34mℹ[39m [2mdist/[22m[
|
|
16
|
-
[34mℹ[39m [2mdist/[22m[
|
|
17
|
-
[34mℹ[39m [2mdist/[22m[
|
|
18
|
-
[34mℹ[39m
|
|
19
|
-
[
|
|
20
|
-
|
|
21
|
-
[32m✔[39m Build complete in [32m114ms[39m
|
|
22
|
-
[0m[2m[35m$[0m [2m[1mtsc --noEmit[0m
|
|
1
|
+
$ bun build:bundle && bun build:types
|
|
2
|
+
$ tsdown
|
|
3
|
+
[34mℹ[39m tsdown [2mv0.17.4[22m powered by rolldown [2mv1.0.0-beta.53[22m
|
|
4
|
+
[34mℹ[39m config file: [4m/home/runner/work/contractspec/contractspec/packages/examples/learning-journey-crm-onboarding/tsdown.config.js[24m
|
|
5
|
+
[34mℹ[39m entry: [34msrc/example.ts, src/index.ts, src/learning-journey-crm-onboarding.feature.ts, src/track.ts, src/contracts/index.ts, src/docs/crm-onboarding.docblock.ts, src/docs/index.ts, src/handlers/demo.handlers.ts, src/presentations/index.ts[39m
|
|
6
|
+
[34mℹ[39m target: [34mesnext[39m
|
|
7
|
+
[34mℹ[39m tsconfig: [34mtsconfig.json[39m
|
|
8
|
+
[34mℹ[39m Build start
|
|
9
|
+
[34mℹ[39m [2mdist/[22m[1mcontracts/index.js[22m [2m2.79 kB[22m [2m│ gzip: 0.92 kB[22m
|
|
10
|
+
[34mℹ[39m [2mdist/[22m[1mtrack.js[22m [2m1.94 kB[22m [2m│ gzip: 0.69 kB[22m
|
|
11
|
+
[34mℹ[39m [2mdist/[22m[1mdocs/crm-onboarding.docblock.js[22m [2m1.27 kB[22m [2m│ gzip: 0.67 kB[22m
|
|
12
|
+
[34mℹ[39m [2mdist/[22m[1mindex.js[22m [2m1.05 kB[22m [2m│ gzip: 0.35 kB[22m
|
|
13
|
+
[34mℹ[39m [2mdist/[22m[1mlearning-journey-crm-onboarding.feature.js[22m [2m1.01 kB[22m [2m│ gzip: 0.41 kB[22m
|
|
14
|
+
[34mℹ[39m [2mdist/[22m[1mpresentations/index.js[22m [2m0.77 kB[22m [2m│ gzip: 0.37 kB[22m
|
|
15
|
+
[34mℹ[39m [2mdist/[22m[1mexample.js[22m [2m0.55 kB[22m [2m│ gzip: 0.35 kB[22m
|
|
16
|
+
[34mℹ[39m [2mdist/[22m[1mhandlers/demo.handlers.js[22m [2m0.41 kB[22m [2m│ gzip: 0.26 kB[22m
|
|
17
|
+
[34mℹ[39m [2mdist/[22m[1mdocs/index.js[22m [2m0.04 kB[22m [2m│ gzip: 0.06 kB[22m
|
|
18
|
+
[34mℹ[39m 9 files, total: 9.82 kB
|
|
19
|
+
[32m✔[39m Build complete in [32m58ms[39m
|
|
20
|
+
$ tsc --noEmit
|
package/dist/contracts/index.js
CHANGED
|
@@ -1,178 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { ScalarTypeEnum } from "../libs/schema/dist/ScalarTypeEnum.js";
|
|
3
|
-
import { defineSchemaModel } from "../libs/schema/dist/SchemaModel.js";
|
|
4
|
-
import "../libs/schema/dist/index.js";
|
|
5
|
-
import { defineCommand, defineQuery } from "../libs/contracts/dist/spec.js";
|
|
6
|
-
import "../libs/contracts/dist/index.js";
|
|
7
|
-
|
|
8
|
-
//#region src/contracts/index.ts
|
|
9
|
-
const OWNERS = ["examples.learning-journey.crm-onboarding"];
|
|
10
|
-
const StepModel = defineSchemaModel({
|
|
11
|
-
name: "CrmOnboardingStep",
|
|
12
|
-
description: "Step metadata for CRM first win journey",
|
|
13
|
-
fields: {
|
|
14
|
-
id: {
|
|
15
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
16
|
-
isOptional: false
|
|
17
|
-
},
|
|
18
|
-
title: {
|
|
19
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
20
|
-
isOptional: false
|
|
21
|
-
},
|
|
22
|
-
description: {
|
|
23
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
24
|
-
isOptional: true
|
|
25
|
-
},
|
|
26
|
-
completionEvent: {
|
|
27
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
28
|
-
isOptional: false
|
|
29
|
-
},
|
|
30
|
-
sourceModule: {
|
|
31
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
32
|
-
isOptional: true
|
|
33
|
-
},
|
|
34
|
-
xpReward: {
|
|
35
|
-
type: ScalarTypeEnum.Int_unsecure(),
|
|
36
|
-
isOptional: true
|
|
37
|
-
},
|
|
38
|
-
order: {
|
|
39
|
-
type: ScalarTypeEnum.Int_unsecure(),
|
|
40
|
-
isOptional: true
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
const CrmOnboardingTrackModel = defineSchemaModel({
|
|
45
|
-
name: "CrmOnboardingTrack",
|
|
46
|
-
description: "CRM onboarding track definition",
|
|
47
|
-
fields: {
|
|
48
|
-
id: {
|
|
49
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
50
|
-
isOptional: false
|
|
51
|
-
},
|
|
52
|
-
name: {
|
|
53
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
54
|
-
isOptional: false
|
|
55
|
-
},
|
|
56
|
-
description: {
|
|
57
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
58
|
-
isOptional: true
|
|
59
|
-
},
|
|
60
|
-
totalXp: {
|
|
61
|
-
type: ScalarTypeEnum.Int_unsecure(),
|
|
62
|
-
isOptional: true
|
|
63
|
-
},
|
|
64
|
-
completionXpBonus: {
|
|
65
|
-
type: ScalarTypeEnum.Int_unsecure(),
|
|
66
|
-
isOptional: true
|
|
67
|
-
},
|
|
68
|
-
completionBadgeKey: {
|
|
69
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
70
|
-
isOptional: true
|
|
71
|
-
},
|
|
72
|
-
streakHoursWindow: {
|
|
73
|
-
type: ScalarTypeEnum.Int_unsecure(),
|
|
74
|
-
isOptional: true
|
|
75
|
-
},
|
|
76
|
-
streakBonusXp: {
|
|
77
|
-
type: ScalarTypeEnum.Int_unsecure(),
|
|
78
|
-
isOptional: true
|
|
79
|
-
},
|
|
80
|
-
steps: {
|
|
81
|
-
type: StepModel,
|
|
82
|
-
isArray: true,
|
|
83
|
-
isOptional: false
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
const TrackResponseModel = defineSchemaModel({
|
|
88
|
-
name: "CrmOnboardingTrackResponse",
|
|
89
|
-
description: "Response wrapper for CRM onboarding track",
|
|
90
|
-
fields: { track: {
|
|
91
|
-
type: CrmOnboardingTrackModel,
|
|
92
|
-
isOptional: false
|
|
93
|
-
} }
|
|
94
|
-
});
|
|
95
|
-
const RecordDemoEventInput = defineSchemaModel({
|
|
96
|
-
name: "CrmOnboardingRecordEventInput",
|
|
97
|
-
description: "Emit a demo event to advance CRM onboarding steps",
|
|
98
|
-
fields: {
|
|
99
|
-
learnerId: {
|
|
100
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
101
|
-
isOptional: false
|
|
102
|
-
},
|
|
103
|
-
eventName: {
|
|
104
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
105
|
-
isOptional: false
|
|
106
|
-
},
|
|
107
|
-
payload: {
|
|
108
|
-
type: ScalarTypeEnum.JSON(),
|
|
109
|
-
isOptional: true
|
|
110
|
-
},
|
|
111
|
-
occurredAt: {
|
|
112
|
-
type: ScalarTypeEnum.DateTime(),
|
|
113
|
-
isOptional: true
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
});
|
|
117
|
-
const SuccessModel = defineSchemaModel({
|
|
118
|
-
name: "CrmOnboardingSuccess",
|
|
119
|
-
description: "Generic success response",
|
|
120
|
-
fields: { success: {
|
|
121
|
-
type: ScalarTypeEnum.Boolean(),
|
|
122
|
-
isOptional: false
|
|
123
|
-
} }
|
|
124
|
-
});
|
|
125
|
-
const GetCrmOnboardingTrack = defineQuery({
|
|
126
|
-
meta: {
|
|
127
|
-
name: "learningJourney.crmOnboarding.getTrack",
|
|
128
|
-
version: 1,
|
|
129
|
-
stability: "experimental",
|
|
130
|
-
owners: [...OWNERS],
|
|
131
|
-
tags: [
|
|
132
|
-
"learning",
|
|
133
|
-
"crm",
|
|
134
|
-
"onboarding"
|
|
135
|
-
],
|
|
136
|
-
description: "Fetch CRM first win track definition.",
|
|
137
|
-
goal: "Expose track metadata to UIs and templates.",
|
|
138
|
-
context: "Called by Studio/Playground to render journey steps."
|
|
139
|
-
},
|
|
140
|
-
io: {
|
|
141
|
-
input: defineSchemaModel({
|
|
142
|
-
name: "CrmOnboardingTrackInput",
|
|
143
|
-
description: "Track input",
|
|
144
|
-
fields: {}
|
|
145
|
-
}),
|
|
146
|
-
output: TrackResponseModel
|
|
147
|
-
},
|
|
148
|
-
policy: { auth: "user" }
|
|
149
|
-
});
|
|
150
|
-
const RecordCrmOnboardingEvent = defineCommand({
|
|
151
|
-
meta: {
|
|
152
|
-
name: "learningJourney.crmOnboarding.recordEvent",
|
|
153
|
-
version: 1,
|
|
154
|
-
stability: "experimental",
|
|
155
|
-
owners: [...OWNERS],
|
|
156
|
-
tags: [
|
|
157
|
-
"learning",
|
|
158
|
-
"crm",
|
|
159
|
-
"onboarding"
|
|
160
|
-
],
|
|
161
|
-
description: "Record an event to advance CRM onboarding progress.",
|
|
162
|
-
goal: "Advance steps via domain events in demo/sandbox contexts.",
|
|
163
|
-
context: "Called by handlers or demo scripts to emit step completion events."
|
|
164
|
-
},
|
|
165
|
-
io: {
|
|
166
|
-
input: RecordDemoEventInput,
|
|
167
|
-
output: SuccessModel
|
|
168
|
-
},
|
|
169
|
-
policy: { auth: "user" }
|
|
170
|
-
});
|
|
171
|
-
const crmOnboardingContracts = {
|
|
172
|
-
GetCrmOnboardingTrack,
|
|
173
|
-
RecordCrmOnboardingEvent,
|
|
174
|
-
track: crmFirstWinTrack
|
|
175
|
-
};
|
|
176
|
-
|
|
177
|
-
//#endregion
|
|
178
|
-
export { CrmOnboardingTrackModel, GetCrmOnboardingTrack, RecordCrmOnboardingEvent, crmOnboardingContracts };
|
|
1
|
+
import{crmFirstWinTrack as e}from"../track.js";import{ScalarTypeEnum as t,defineSchemaModel as n}from"@lssm/lib.schema";import{defineCommand as r,defineQuery as i}from"@lssm/lib.contracts";const a=[`examples.learning-journey.crm-onboarding`],o=n({name:`CrmOnboardingStep`,description:`Step metadata for CRM first win journey`,fields:{id:{type:t.String_unsecure(),isOptional:!1},title:{type:t.String_unsecure(),isOptional:!1},description:{type:t.String_unsecure(),isOptional:!0},completionEvent:{type:t.String_unsecure(),isOptional:!1},sourceModule:{type:t.String_unsecure(),isOptional:!0},xpReward:{type:t.Int_unsecure(),isOptional:!0},order:{type:t.Int_unsecure(),isOptional:!0}}}),s=n({name:`CrmOnboardingTrack`,description:`CRM onboarding track definition`,fields:{id:{type:t.String_unsecure(),isOptional:!1},name:{type:t.String_unsecure(),isOptional:!1},description:{type:t.String_unsecure(),isOptional:!0},totalXp:{type:t.Int_unsecure(),isOptional:!0},completionXpBonus:{type:t.Int_unsecure(),isOptional:!0},completionBadgeKey:{type:t.String_unsecure(),isOptional:!0},streakHoursWindow:{type:t.Int_unsecure(),isOptional:!0},streakBonusXp:{type:t.Int_unsecure(),isOptional:!0},steps:{type:o,isArray:!0,isOptional:!1}}}),c=n({name:`CrmOnboardingTrackResponse`,description:`Response wrapper for CRM onboarding track`,fields:{track:{type:s,isOptional:!1}}}),l=n({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}}}),u=n({name:`CrmOnboardingSuccess`,description:`Generic success response`,fields:{success:{type:t.Boolean(),isOptional:!1}}}),d=i({meta:{name:`learningJourney.crmOnboarding.getTrack`,version:1,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:n({name:`CrmOnboardingTrackInput`,description:`Track input`,fields:{}}),output:c},policy:{auth:`user`}}),f=r({meta:{name:`learningJourney.crmOnboarding.recordEvent`,version:1,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:l,output:u},policy:{auth:`user`}}),p={GetCrmOnboardingTrack:d,RecordCrmOnboardingEvent:f,track:e};export{s as CrmOnboardingTrackModel,d as GetCrmOnboardingTrack,f as RecordCrmOnboardingEvent,p as crmOnboardingContracts};
|
|
@@ -1,42 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import "../libs/contracts/dist/docs/index.js";
|
|
3
|
-
|
|
4
|
-
//#region src/docs/crm-onboarding.docblock.ts
|
|
5
|
-
registerDocBlocks([{
|
|
6
|
-
id: "docs.learning-journey.crm-onboarding",
|
|
7
|
-
title: "Learning Journey — CRM First Win",
|
|
8
|
-
summary: "Onboarding track for the CRM Pipeline example that drives users to first closed-won deal.",
|
|
9
|
-
kind: "reference",
|
|
10
|
-
visibility: "public",
|
|
11
|
-
route: "/docs/learning-journey/crm-onboarding",
|
|
12
|
-
tags: [
|
|
13
|
-
"learning",
|
|
14
|
-
"crm",
|
|
15
|
-
"onboarding"
|
|
16
|
-
],
|
|
17
|
-
body: `## Track
|
|
18
|
-
- **Key**: \`crm_first_win\`
|
|
19
|
-
- **Persona**: CRM adopter
|
|
20
|
-
- **Goal**: From empty CRM to first closed-won deal with follow-up
|
|
21
|
-
|
|
22
|
-
## Steps & Events
|
|
23
|
-
1) \`create_pipeline\` → \`pipeline.created\`
|
|
24
|
-
2) \`create_contact_and_company\` → \`contact.created\`
|
|
25
|
-
3) \`create_first_deal\` → \`deal.created\`
|
|
26
|
-
4) \`move_deal_in_pipeline\` → \`deal.moved\`
|
|
27
|
-
5) \`close_deal_won\` → \`deal.won\`
|
|
28
|
-
6) \`setup_follow_up\` → \`task.completed\` (type: follow_up)
|
|
29
|
-
|
|
30
|
-
XP: 15/20/20/20/30/30 with 25 bonus within 72h. Badge: \`crm_first_win\`.
|
|
31
|
-
|
|
32
|
-
## Wiring
|
|
33
|
-
- Depends on \`@lssm/example.crm-pipeline\` events.
|
|
34
|
-
- Tracks export from \`@lssm/example.learning-journey-crm-onboarding/track\`.
|
|
35
|
-
- Use onboarding API:
|
|
36
|
-
- \`learning.onboarding.listTracks\`
|
|
37
|
-
- \`learning.onboarding.getProgress\`
|
|
38
|
-
- \`learning.onboarding.recordEvent\` wired from CRM event bus handlers.
|
|
39
|
-
- Surface in CRM dashboard/pipeline UI to guide new users.`
|
|
40
|
-
}]);
|
|
41
|
-
|
|
42
|
-
//#endregion
|
|
1
|
+
import{registerDocBlocks as e}from"@lssm/lib.contracts/docs";e([{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 `@lssm/example.crm-pipeline` events.\n- Tracks export from `@lssm/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."}]);
|
package/dist/docs/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import"./crm-onboarding.docblock.js";
|
package/dist/example.js
CHANGED
|
@@ -1,34 +1 @@
|
|
|
1
|
-
|
|
2
|
-
const example = {
|
|
3
|
-
id: "learning-journey-crm-onboarding",
|
|
4
|
-
title: "Learning Journey — CRM First Win",
|
|
5
|
-
summary: "Onboarding track for CRM Pipeline driving users from empty CRM to first closed-won deal.",
|
|
6
|
-
tags: [
|
|
7
|
-
"learning",
|
|
8
|
-
"crm",
|
|
9
|
-
"onboarding"
|
|
10
|
-
],
|
|
11
|
-
kind: "template",
|
|
12
|
-
visibility: "public",
|
|
13
|
-
docs: { rootDocId: "docs.learning-journey.crm-onboarding" },
|
|
14
|
-
entrypoints: {
|
|
15
|
-
packageName: "@lssm/example.learning-journey-crm-onboarding",
|
|
16
|
-
docs: "./docs"
|
|
17
|
-
},
|
|
18
|
-
surfaces: {
|
|
19
|
-
templates: true,
|
|
20
|
-
sandbox: {
|
|
21
|
-
enabled: true,
|
|
22
|
-
modes: ["playground", "markdown"]
|
|
23
|
-
},
|
|
24
|
-
studio: {
|
|
25
|
-
enabled: true,
|
|
26
|
-
installable: true
|
|
27
|
-
},
|
|
28
|
-
mcp: { enabled: true }
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
var example_default = example;
|
|
32
|
-
|
|
33
|
-
//#endregion
|
|
34
|
-
export { example_default as default };
|
|
1
|
+
var e={id:`learning-journey-crm-onboarding`,title:`Learning Journey — CRM First Win`,summary:`Onboarding track for CRM Pipeline driving users from empty CRM to first closed-won deal.`,tags:[`learning`,`crm`,`onboarding`],kind:`template`,visibility:`public`,docs:{rootDocId:`docs.learning-journey.crm-onboarding`},entrypoints:{packageName:`@lssm/example.learning-journey-crm-onboarding`,docs:`./docs`},surfaces:{templates:!0,sandbox:{enabled:!0,modes:[`playground`,`markdown`]},studio:{enabled:!0,installable:!0},mcp:{enabled:!0}}};export{e as default};
|
|
@@ -1,25 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
//#region src/handlers/demo.handlers.ts
|
|
4
|
-
const crmOnboardingEvents = [
|
|
5
|
-
"pipeline.created",
|
|
6
|
-
"contact.created",
|
|
7
|
-
"deal.created",
|
|
8
|
-
"deal.moved",
|
|
9
|
-
"deal.won",
|
|
10
|
-
"task.completed"
|
|
11
|
-
];
|
|
12
|
-
const emitCrmOnboardingEvent = (eventName, { learnerId, occurredAt = /* @__PURE__ */ new Date(), payload }, record) => {
|
|
13
|
-
const event = {
|
|
14
|
-
learnerId,
|
|
15
|
-
name: eventName,
|
|
16
|
-
occurredAt,
|
|
17
|
-
payload,
|
|
18
|
-
trackId: crmFirstWinTrack.id
|
|
19
|
-
};
|
|
20
|
-
return record ? record(event) : event;
|
|
21
|
-
};
|
|
22
|
-
const emitAllCrmOnboardingEvents = (params, record) => crmOnboardingEvents.map((name) => emitCrmOnboardingEvent(name, params, record));
|
|
23
|
-
|
|
24
|
-
//#endregion
|
|
25
|
-
export { crmOnboardingEvents, emitAllCrmOnboardingEvents, emitCrmOnboardingEvent };
|
|
1
|
+
import{crmFirstWinTrack as e}from"../track.js";const t=[`pipeline.created`,`contact.created`,`deal.created`,`deal.moved`,`deal.won`,`task.completed`],n=(t,{learnerId:n,occurredAt:r=new Date,payload:i},a)=>{let o={learnerId:n,name:t,occurredAt:r,payload:i,trackId:e.id};return a?a(o):o},r=(e,r)=>t.map(t=>n(t,e,r));export{t as crmOnboardingEvents,r as emitAllCrmOnboardingEvents,n as emitCrmOnboardingEvent};
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { crmFirstWinTrack, crmLearningTracks } from "./track.js";
|
|
3
|
-
import "./docs/index.js";
|
|
4
|
-
import { CrmOnboardingTrackModel, GetCrmOnboardingTrack, RecordCrmOnboardingEvent, crmOnboardingContracts } from "./contracts/index.js";
|
|
5
|
-
import { crmOnboardingEvents, emitAllCrmOnboardingEvents, emitCrmOnboardingEvent } from "./handlers/demo.handlers.js";
|
|
6
|
-
import { CrmOnboardingTrackPresentation, CrmOnboardingWidgetPresentation, crmOnboardingPresentations } from "./presentations/index.js";
|
|
7
|
-
import { LearningJourneyCrmOnboardingFeature } from "./learning-journey-crm-onboarding.feature.js";
|
|
8
|
-
|
|
9
|
-
export { CrmOnboardingTrackModel, CrmOnboardingTrackPresentation, CrmOnboardingWidgetPresentation, GetCrmOnboardingTrack, LearningJourneyCrmOnboardingFeature, RecordCrmOnboardingEvent, crmFirstWinTrack, crmLearningTracks, crmOnboardingContracts, crmOnboardingEvents, crmOnboardingPresentations, emitAllCrmOnboardingEvents, emitCrmOnboardingEvent, example_default as example };
|
|
1
|
+
import e from"./example.js";import{crmFirstWinTrack as t,crmLearningTracks as n}from"./track.js";import"./docs/index.js";import{CrmOnboardingTrackModel as r,GetCrmOnboardingTrack as i,RecordCrmOnboardingEvent as a,crmOnboardingContracts as o}from"./contracts/index.js";import{crmOnboardingEvents as s,emitAllCrmOnboardingEvents as c,emitCrmOnboardingEvent as l}from"./handlers/demo.handlers.js";import{CrmOnboardingTrackPresentation as u,CrmOnboardingWidgetPresentation as d,crmOnboardingPresentations as f}from"./presentations/index.js";import{LearningJourneyCrmOnboardingFeature as p}from"./learning-journey-crm-onboarding.feature.js";export{r as CrmOnboardingTrackModel,u as CrmOnboardingTrackPresentation,d as CrmOnboardingWidgetPresentation,i as GetCrmOnboardingTrack,p as LearningJourneyCrmOnboardingFeature,a as RecordCrmOnboardingEvent,t as crmFirstWinTrack,n as crmLearningTracks,o as crmOnboardingContracts,s as crmOnboardingEvents,f as crmOnboardingPresentations,c as emitAllCrmOnboardingEvents,l as emitCrmOnboardingEvent,e as example};
|
|
@@ -1,66 +1 @@
|
|
|
1
|
-
|
|
2
|
-
/**
|
|
3
|
-
* Learning Journey CRM Onboarding feature module that bundles
|
|
4
|
-
* CRM-specific onboarding track operations and presentations.
|
|
5
|
-
*/
|
|
6
|
-
const LearningJourneyCrmOnboardingFeature = {
|
|
7
|
-
meta: {
|
|
8
|
-
key: "learning-journey-crm-onboarding",
|
|
9
|
-
title: "Learning Journey: CRM Onboarding",
|
|
10
|
-
description: "CRM first-win onboarding journey with step-by-step guidance for new CRM users",
|
|
11
|
-
domain: "learning-journey",
|
|
12
|
-
owners: ["@examples.learning-journey.crm-onboarding"],
|
|
13
|
-
tags: [
|
|
14
|
-
"learning",
|
|
15
|
-
"crm",
|
|
16
|
-
"onboarding",
|
|
17
|
-
"journey"
|
|
18
|
-
],
|
|
19
|
-
stability: "experimental"
|
|
20
|
-
},
|
|
21
|
-
operations: [{
|
|
22
|
-
name: "learningJourney.crmOnboarding.recordEvent",
|
|
23
|
-
version: 1
|
|
24
|
-
}, {
|
|
25
|
-
name: "learningJourney.crmOnboarding.getTrack",
|
|
26
|
-
version: 1
|
|
27
|
-
}],
|
|
28
|
-
events: [],
|
|
29
|
-
presentations: [{
|
|
30
|
-
name: "learning.journey.crm.track",
|
|
31
|
-
version: 1
|
|
32
|
-
}, {
|
|
33
|
-
name: "learning.journey.crm.widget",
|
|
34
|
-
version: 1
|
|
35
|
-
}],
|
|
36
|
-
opToPresentation: [{
|
|
37
|
-
op: {
|
|
38
|
-
name: "learningJourney.crmOnboarding.getTrack",
|
|
39
|
-
version: 1
|
|
40
|
-
},
|
|
41
|
-
pres: {
|
|
42
|
-
name: "learning.journey.crm.track",
|
|
43
|
-
version: 1
|
|
44
|
-
}
|
|
45
|
-
}],
|
|
46
|
-
presentationsTargets: [{
|
|
47
|
-
name: "learning.journey.crm.track",
|
|
48
|
-
version: 1,
|
|
49
|
-
targets: [
|
|
50
|
-
"react",
|
|
51
|
-
"markdown",
|
|
52
|
-
"application/json"
|
|
53
|
-
]
|
|
54
|
-
}, {
|
|
55
|
-
name: "learning.journey.crm.widget",
|
|
56
|
-
version: 1,
|
|
57
|
-
targets: ["react"]
|
|
58
|
-
}],
|
|
59
|
-
capabilities: { requires: [{
|
|
60
|
-
key: "identity",
|
|
61
|
-
version: 1
|
|
62
|
-
}] }
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
//#endregion
|
|
66
|
-
export { LearningJourneyCrmOnboardingFeature };
|
|
1
|
+
const e={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`},operations:[{name:`learningJourney.crmOnboarding.recordEvent`,version:1},{name:`learningJourney.crmOnboarding.getTrack`,version:1}],events:[],presentations:[{name:`learning.journey.crm.track`,version:1},{name:`learning.journey.crm.widget`,version:1}],opToPresentation:[{op:{name:`learningJourney.crmOnboarding.getTrack`,version:1},pres:{name:`learning.journey.crm.track`,version:1}}],presentationsTargets:[{name:`learning.journey.crm.track`,version:1,targets:[`react`,`markdown`,`application/json`]},{name:`learning.journey.crm.widget`,version:1,targets:[`react`]}],capabilities:{requires:[{key:`identity`,version:1}]}};export{e as LearningJourneyCrmOnboardingFeature};
|
|
@@ -1,49 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
//#region src/presentations/index.ts
|
|
4
|
-
const baseMeta = {
|
|
5
|
-
domain: "learning-journey",
|
|
6
|
-
owners: ["examples.learning-journey.crm-onboarding"],
|
|
7
|
-
tags: [
|
|
8
|
-
"learning",
|
|
9
|
-
"crm",
|
|
10
|
-
"onboarding"
|
|
11
|
-
]
|
|
12
|
-
};
|
|
13
|
-
const CrmOnboardingTrackPresentation = {
|
|
14
|
-
meta: {
|
|
15
|
-
name: "learning.journey.crm.track",
|
|
16
|
-
version: 1,
|
|
17
|
-
description: "CRM first win track detail",
|
|
18
|
-
...baseMeta
|
|
19
|
-
},
|
|
20
|
-
source: {
|
|
21
|
-
type: "component",
|
|
22
|
-
framework: "react",
|
|
23
|
-
componentKey: "LearningTrackDetail",
|
|
24
|
-
props: CrmOnboardingTrackModel
|
|
25
|
-
},
|
|
26
|
-
targets: [
|
|
27
|
-
"react",
|
|
28
|
-
"markdown",
|
|
29
|
-
"application/json"
|
|
30
|
-
]
|
|
31
|
-
};
|
|
32
|
-
const CrmOnboardingWidgetPresentation = {
|
|
33
|
-
meta: {
|
|
34
|
-
name: "learning.journey.crm.widget",
|
|
35
|
-
version: 1,
|
|
36
|
-
description: "Compact widget for CRM onboarding progress",
|
|
37
|
-
...baseMeta
|
|
38
|
-
},
|
|
39
|
-
source: {
|
|
40
|
-
type: "component",
|
|
41
|
-
framework: "react",
|
|
42
|
-
componentKey: "LearningTrackProgressWidget"
|
|
43
|
-
},
|
|
44
|
-
targets: ["react"]
|
|
45
|
-
};
|
|
46
|
-
const crmOnboardingPresentations = [CrmOnboardingTrackPresentation, CrmOnboardingWidgetPresentation];
|
|
47
|
-
|
|
48
|
-
//#endregion
|
|
49
|
-
export { CrmOnboardingTrackPresentation, CrmOnboardingWidgetPresentation, crmOnboardingPresentations };
|
|
1
|
+
import{CrmOnboardingTrackModel as e}from"../contracts/index.js";const t={domain:`learning-journey`,owners:[`examples.learning-journey.crm-onboarding`],tags:[`learning`,`crm`,`onboarding`]},n={meta:{name:`learning.journey.crm.track`,version:1,description:`CRM first win track detail`,...t},source:{type:`component`,framework:`react`,componentKey:`LearningTrackDetail`,props:e},targets:[`react`,`markdown`,`application/json`]},r={meta:{name:`learning.journey.crm.widget`,version:1,description:`Compact widget for CRM onboarding progress`,...t},source:{type:`component`,framework:`react`,componentKey:`LearningTrackProgressWidget`},targets:[`react`]},i=[n,r];export{n as CrmOnboardingTrackPresentation,r as CrmOnboardingWidgetPresentation,i as crmOnboardingPresentations};
|
package/dist/track.js
CHANGED
|
@@ -1,98 +1 @@
|
|
|
1
|
-
|
|
2
|
-
const crmFirstWinTrack = {
|
|
3
|
-
id: "crm_first_win",
|
|
4
|
-
productId: "crm-pipeline",
|
|
5
|
-
name: "CRM First Win",
|
|
6
|
-
description: "Guide a new CRM user from empty pipeline to first closed-won deal.",
|
|
7
|
-
targetUserSegment: "crm_adopter",
|
|
8
|
-
targetRole: "sales",
|
|
9
|
-
totalXp: 135,
|
|
10
|
-
streakRule: {
|
|
11
|
-
hoursWindow: 72,
|
|
12
|
-
bonusXp: 25
|
|
13
|
-
},
|
|
14
|
-
completionRewards: {
|
|
15
|
-
xpBonus: 25,
|
|
16
|
-
badgeKey: "crm_first_win"
|
|
17
|
-
},
|
|
18
|
-
steps: [
|
|
19
|
-
{
|
|
20
|
-
id: "create_pipeline",
|
|
21
|
-
title: "Create pipeline & stages",
|
|
22
|
-
description: "Create a pipeline with baseline stages.",
|
|
23
|
-
order: 1,
|
|
24
|
-
completion: {
|
|
25
|
-
eventName: "pipeline.created",
|
|
26
|
-
sourceModule: "@lssm/example.crm-pipeline"
|
|
27
|
-
},
|
|
28
|
-
xpReward: 15,
|
|
29
|
-
metadata: { surface: "pipeline" }
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
id: "create_contact_and_company",
|
|
33
|
-
title: "Create contact and company",
|
|
34
|
-
description: "Add your first contact and associated company.",
|
|
35
|
-
order: 2,
|
|
36
|
-
completion: {
|
|
37
|
-
eventName: "contact.created",
|
|
38
|
-
sourceModule: "@lssm/example.crm-pipeline"
|
|
39
|
-
},
|
|
40
|
-
xpReward: 20,
|
|
41
|
-
metadata: { surface: "contacts" }
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
id: "create_first_deal",
|
|
45
|
-
title: "Log first deal",
|
|
46
|
-
description: "Create your first deal in the pipeline.",
|
|
47
|
-
order: 3,
|
|
48
|
-
completion: {
|
|
49
|
-
eventName: "deal.created",
|
|
50
|
-
sourceModule: "@lssm/example.crm-pipeline"
|
|
51
|
-
},
|
|
52
|
-
xpReward: 20,
|
|
53
|
-
metadata: { surface: "deals" }
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
id: "move_deal_in_pipeline",
|
|
57
|
-
title: "Move a deal across stages",
|
|
58
|
-
description: "Move a deal across at least three stages.",
|
|
59
|
-
order: 4,
|
|
60
|
-
completion: {
|
|
61
|
-
eventName: "deal.moved",
|
|
62
|
-
sourceModule: "@lssm/example.crm-pipeline"
|
|
63
|
-
},
|
|
64
|
-
xpReward: 20,
|
|
65
|
-
metadata: { surface: "deals" }
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
id: "close_deal_won",
|
|
69
|
-
title: "Close a deal as won",
|
|
70
|
-
description: "Close a deal as won to hit first revenue.",
|
|
71
|
-
order: 5,
|
|
72
|
-
completion: {
|
|
73
|
-
eventName: "deal.won",
|
|
74
|
-
sourceModule: "@lssm/example.crm-pipeline"
|
|
75
|
-
},
|
|
76
|
-
xpReward: 30,
|
|
77
|
-
metadata: { surface: "deals" }
|
|
78
|
-
},
|
|
79
|
-
{
|
|
80
|
-
id: "setup_follow_up",
|
|
81
|
-
title: "Create follow-up task",
|
|
82
|
-
description: "Create a follow-up task and notification for a contact or deal.",
|
|
83
|
-
order: 6,
|
|
84
|
-
completion: {
|
|
85
|
-
eventName: "task.completed",
|
|
86
|
-
sourceModule: "@lssm/example.crm-pipeline",
|
|
87
|
-
payloadFilter: { type: "follow_up" }
|
|
88
|
-
},
|
|
89
|
-
xpReward: 30,
|
|
90
|
-
metadata: { surface: "tasks" }
|
|
91
|
-
}
|
|
92
|
-
],
|
|
93
|
-
metadata: { surfacedIn: ["crm/dashboard", "crm/pipeline"] }
|
|
94
|
-
};
|
|
95
|
-
const crmLearningTracks = [crmFirstWinTrack];
|
|
96
|
-
|
|
97
|
-
//#endregion
|
|
98
|
-
export { crmFirstWinTrack, crmLearningTracks };
|
|
1
|
+
const 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:`@lssm/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:`@lssm/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:`@lssm/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:`@lssm/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:`@lssm/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:`@lssm/example.crm-pipeline`,payloadFilter:{type:`follow_up`}},xpReward:30,metadata:{surface:`tasks`}}],metadata:{surfacedIn:[`crm/dashboard`,`crm/pipeline`]}},t=[e];export{e as crmFirstWinTrack,t as crmLearningTracks};
|
package/package.json
CHANGED
|
@@ -1,25 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lssm/example.learning-journey-crm-onboarding",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.41.0",
|
|
4
4
|
"description": "Learning journey track that onboards users to the CRM pipeline example.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
8
8
|
"exports": {
|
|
9
|
-
".": "./
|
|
10
|
-
"./contracts": "./
|
|
11
|
-
"./docs": "./
|
|
12
|
-
"./docs/crm-onboarding.docblock": "./
|
|
13
|
-
"./example": "./
|
|
14
|
-
"./handlers/demo.handlers": "./
|
|
15
|
-
"./learning-journey-crm-onboarding.feature": "./
|
|
16
|
-
"./presentations": "./
|
|
17
|
-
"./track": "./
|
|
9
|
+
".": "./src/index.ts",
|
|
10
|
+
"./contracts": "./src/contracts/index.ts",
|
|
11
|
+
"./docs": "./src/docs/index.ts",
|
|
12
|
+
"./docs/crm-onboarding.docblock": "./src/docs/crm-onboarding.docblock.ts",
|
|
13
|
+
"./example": "./src/example.ts",
|
|
14
|
+
"./handlers/demo.handlers": "./src/handlers/demo.handlers.ts",
|
|
15
|
+
"./learning-journey-crm-onboarding.feature": "./src/learning-journey-crm-onboarding.feature.ts",
|
|
16
|
+
"./presentations": "./src/presentations/index.ts",
|
|
17
|
+
"./track": "./src/track.ts",
|
|
18
18
|
"./*": "./*"
|
|
19
19
|
},
|
|
20
20
|
"scripts": {
|
|
21
|
-
"publish:pkg": "bun publish --tolerate-republish --ignore-scripts --verbose",
|
|
22
|
-
"publish:pkg:canary": "bun publish:pkg --tag canary",
|
|
23
21
|
"build": "bun build:bundle && bun build:types",
|
|
24
22
|
"build:bundle": "tsdown",
|
|
25
23
|
"build:types": "tsc --noEmit",
|
|
@@ -30,14 +28,14 @@
|
|
|
30
28
|
"lint:check": "eslint src"
|
|
31
29
|
},
|
|
32
30
|
"dependencies": {
|
|
33
|
-
"@lssm/lib.contracts": "
|
|
34
|
-
"@lssm/lib.schema": "
|
|
35
|
-
"@lssm/module.learning-journey": "
|
|
36
|
-
"@lssm/example.crm-pipeline": "
|
|
31
|
+
"@lssm/lib.contracts": "workspace:*",
|
|
32
|
+
"@lssm/lib.schema": "workspace:*",
|
|
33
|
+
"@lssm/module.learning-journey": "workspace:*",
|
|
34
|
+
"@lssm/example.crm-pipeline": "workspace:*"
|
|
37
35
|
},
|
|
38
36
|
"devDependencies": {
|
|
39
|
-
"@lssm/tool.tsdown": "
|
|
40
|
-
"@lssm/tool.typescript": "
|
|
37
|
+
"@lssm/tool.tsdown": "workspace:*",
|
|
38
|
+
"@lssm/tool.typescript": "workspace:*",
|
|
41
39
|
"tsdown": "^0.17.4",
|
|
42
40
|
"typescript": "^5.9.3"
|
|
43
41
|
},
|