@contractspec/example.crm-pipeline 1.44.1 → 1.45.1
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$colon$bundle.log +23 -23
- package/.turbo/turbo-build.log +22 -22
- package/CHANGELOG.md +45 -0
- package/dist/crm-pipeline.feature.js +29 -29
- package/dist/crm-pipeline.feature.js.map +1 -1
- package/dist/deal/deal.enum.d.ts +3 -3
- package/dist/deal/deal.enum.d.ts.map +1 -1
- package/dist/deal/deal.operation.d.ts +131 -131
- package/dist/deal/deal.operation.d.ts.map +1 -1
- package/dist/deal/deal.operation.js +9 -9
- package/dist/deal/deal.operation.js.map +1 -1
- package/dist/deal/deal.schema.d.ts +71 -71
- package/dist/entities/company.entity.d.ts +28 -28
- package/dist/entities/company.entity.d.ts.map +1 -1
- package/dist/entities/contact.entity.d.ts +32 -32
- package/dist/entities/contact.entity.d.ts.map +1 -1
- package/dist/entities/deal.entity.d.ts +53 -53
- package/dist/events/contact.event.js +1 -1
- package/dist/events/contact.event.js.map +1 -1
- package/dist/events/deal.event.js +4 -4
- package/dist/events/deal.event.js.map +1 -1
- package/dist/events/task.event.js +1 -1
- package/dist/events/task.event.js.map +1 -1
- package/dist/example.d.ts +3 -33
- package/dist/example.d.ts.map +1 -1
- package/dist/example.js +16 -11
- package/dist/example.js.map +1 -1
- package/dist/presentations/dashboard.presentation.js +2 -2
- package/dist/presentations/dashboard.presentation.js.map +1 -1
- package/dist/presentations/pipeline.presentation.js +4 -4
- package/dist/presentations/pipeline.presentation.js.map +1 -1
- package/package.json +10 -10
- package/src/crm-pipeline.feature.ts +33 -29
- package/src/deal/deal.operation.ts +9 -9
- package/src/events/contact.event.ts +1 -1
- package/src/events/deal.event.ts +4 -4
- package/src/events/task.event.ts +1 -1
- package/src/example.ts +16 -8
- package/src/presentations/dashboard.presentation.ts +2 -2
- package/src/presentations/pipeline.presentation.ts +4 -4
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as _contractspec_lib_schema186 from "@contractspec/lib.schema";
|
|
2
2
|
|
|
3
3
|
//#region src/entities/deal.entity.d.ts
|
|
4
4
|
/**
|
|
5
5
|
* Deal status enum.
|
|
6
6
|
*/
|
|
7
|
-
declare const DealStatusEnum:
|
|
7
|
+
declare const DealStatusEnum: _contractspec_lib_schema186.EntityEnumDef;
|
|
8
8
|
/**
|
|
9
9
|
* Pipeline entity - sales pipeline definition.
|
|
10
10
|
*/
|
|
11
|
-
declare const PipelineEntity:
|
|
12
|
-
id:
|
|
13
|
-
name:
|
|
14
|
-
description:
|
|
15
|
-
organizationId:
|
|
16
|
-
isDefault:
|
|
17
|
-
createdAt:
|
|
18
|
-
updatedAt:
|
|
19
|
-
stages:
|
|
20
|
-
deals:
|
|
11
|
+
declare const PipelineEntity: _contractspec_lib_schema186.EntitySpec<{
|
|
12
|
+
id: _contractspec_lib_schema186.EntityScalarField;
|
|
13
|
+
name: _contractspec_lib_schema186.EntityScalarField;
|
|
14
|
+
description: _contractspec_lib_schema186.EntityScalarField;
|
|
15
|
+
organizationId: _contractspec_lib_schema186.EntityScalarField;
|
|
16
|
+
isDefault: _contractspec_lib_schema186.EntityScalarField;
|
|
17
|
+
createdAt: _contractspec_lib_schema186.EntityScalarField;
|
|
18
|
+
updatedAt: _contractspec_lib_schema186.EntityScalarField;
|
|
19
|
+
stages: _contractspec_lib_schema186.EntityRelationField;
|
|
20
|
+
deals: _contractspec_lib_schema186.EntityRelationField;
|
|
21
21
|
}>;
|
|
22
22
|
/**
|
|
23
23
|
* Stage entity - pipeline stage.
|
|
24
24
|
*/
|
|
25
|
-
declare const StageEntity:
|
|
26
|
-
id:
|
|
27
|
-
name:
|
|
28
|
-
pipelineId:
|
|
29
|
-
position:
|
|
30
|
-
probability:
|
|
31
|
-
isWonStage:
|
|
32
|
-
isLostStage:
|
|
33
|
-
color:
|
|
34
|
-
createdAt:
|
|
35
|
-
updatedAt:
|
|
36
|
-
pipeline:
|
|
37
|
-
deals:
|
|
25
|
+
declare const StageEntity: _contractspec_lib_schema186.EntitySpec<{
|
|
26
|
+
id: _contractspec_lib_schema186.EntityScalarField;
|
|
27
|
+
name: _contractspec_lib_schema186.EntityScalarField;
|
|
28
|
+
pipelineId: _contractspec_lib_schema186.EntityScalarField;
|
|
29
|
+
position: _contractspec_lib_schema186.EntityScalarField;
|
|
30
|
+
probability: _contractspec_lib_schema186.EntityScalarField;
|
|
31
|
+
isWonStage: _contractspec_lib_schema186.EntityScalarField;
|
|
32
|
+
isLostStage: _contractspec_lib_schema186.EntityScalarField;
|
|
33
|
+
color: _contractspec_lib_schema186.EntityScalarField;
|
|
34
|
+
createdAt: _contractspec_lib_schema186.EntityScalarField;
|
|
35
|
+
updatedAt: _contractspec_lib_schema186.EntityScalarField;
|
|
36
|
+
pipeline: _contractspec_lib_schema186.EntityRelationField;
|
|
37
|
+
deals: _contractspec_lib_schema186.EntityRelationField;
|
|
38
38
|
}>;
|
|
39
39
|
/**
|
|
40
40
|
* Deal entity - sales opportunity.
|
|
41
41
|
*/
|
|
42
|
-
declare const DealEntity:
|
|
43
|
-
id:
|
|
44
|
-
name:
|
|
45
|
-
value:
|
|
46
|
-
currency:
|
|
47
|
-
pipelineId:
|
|
48
|
-
stageId:
|
|
49
|
-
status:
|
|
50
|
-
contactId:
|
|
51
|
-
companyId:
|
|
52
|
-
organizationId:
|
|
53
|
-
ownerId:
|
|
54
|
-
expectedCloseDate:
|
|
55
|
-
closedAt:
|
|
56
|
-
lostReason:
|
|
57
|
-
wonSource:
|
|
58
|
-
notes:
|
|
59
|
-
tags:
|
|
60
|
-
customFields:
|
|
61
|
-
stagePosition:
|
|
62
|
-
createdAt:
|
|
63
|
-
updatedAt:
|
|
64
|
-
pipeline:
|
|
65
|
-
stage:
|
|
66
|
-
contact:
|
|
67
|
-
company:
|
|
68
|
-
tasks:
|
|
69
|
-
activities:
|
|
42
|
+
declare const DealEntity: _contractspec_lib_schema186.EntitySpec<{
|
|
43
|
+
id: _contractspec_lib_schema186.EntityScalarField;
|
|
44
|
+
name: _contractspec_lib_schema186.EntityScalarField;
|
|
45
|
+
value: _contractspec_lib_schema186.EntityScalarField;
|
|
46
|
+
currency: _contractspec_lib_schema186.EntityScalarField;
|
|
47
|
+
pipelineId: _contractspec_lib_schema186.EntityScalarField;
|
|
48
|
+
stageId: _contractspec_lib_schema186.EntityScalarField;
|
|
49
|
+
status: _contractspec_lib_schema186.EntityEnumField;
|
|
50
|
+
contactId: _contractspec_lib_schema186.EntityScalarField;
|
|
51
|
+
companyId: _contractspec_lib_schema186.EntityScalarField;
|
|
52
|
+
organizationId: _contractspec_lib_schema186.EntityScalarField;
|
|
53
|
+
ownerId: _contractspec_lib_schema186.EntityScalarField;
|
|
54
|
+
expectedCloseDate: _contractspec_lib_schema186.EntityScalarField;
|
|
55
|
+
closedAt: _contractspec_lib_schema186.EntityScalarField;
|
|
56
|
+
lostReason: _contractspec_lib_schema186.EntityScalarField;
|
|
57
|
+
wonSource: _contractspec_lib_schema186.EntityScalarField;
|
|
58
|
+
notes: _contractspec_lib_schema186.EntityScalarField;
|
|
59
|
+
tags: _contractspec_lib_schema186.EntityScalarField;
|
|
60
|
+
customFields: _contractspec_lib_schema186.EntityScalarField;
|
|
61
|
+
stagePosition: _contractspec_lib_schema186.EntityScalarField;
|
|
62
|
+
createdAt: _contractspec_lib_schema186.EntityScalarField;
|
|
63
|
+
updatedAt: _contractspec_lib_schema186.EntityScalarField;
|
|
64
|
+
pipeline: _contractspec_lib_schema186.EntityRelationField;
|
|
65
|
+
stage: _contractspec_lib_schema186.EntityRelationField;
|
|
66
|
+
contact: _contractspec_lib_schema186.EntityRelationField;
|
|
67
|
+
company: _contractspec_lib_schema186.EntityRelationField;
|
|
68
|
+
tasks: _contractspec_lib_schema186.EntityRelationField;
|
|
69
|
+
activities: _contractspec_lib_schema186.EntityRelationField;
|
|
70
70
|
}>;
|
|
71
71
|
//#endregion
|
|
72
72
|
export { DealEntity, DealStatusEnum, PipelineEntity, StageEntity };
|
|
@@ -31,7 +31,7 @@ const ContactCreatedPayload = defineSchemaModel({
|
|
|
31
31
|
const ContactCreatedEvent = defineEvent({
|
|
32
32
|
meta: {
|
|
33
33
|
key: "contact.created",
|
|
34
|
-
version: 1,
|
|
34
|
+
version: "1.0.0",
|
|
35
35
|
description: "A new contact has been created.",
|
|
36
36
|
stability: "stable",
|
|
37
37
|
owners: ["@crm-team"],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contact.event.js","names":[],"sources":["../../src/events/contact.event.ts"],"sourcesContent":["import { ScalarTypeEnum, defineSchemaModel } from '@contractspec/lib.schema';\nimport { defineEvent } from '@contractspec/lib.contracts';\n\n// ============ Contact Event Payloads ============\n\nconst ContactCreatedPayload = defineSchemaModel({\n name: 'ContactCreatedPayload',\n description: 'Payload when a contact is created',\n fields: {\n contactId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n email: { type: ScalarTypeEnum.EmailAddress(), isOptional: true },\n organizationId: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n ownerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const ContactCreatedEvent = defineEvent({\n meta: {\n key: 'contact.created',\n version: 1,\n description: 'A new contact has been created.',\n stability: 'stable',\n owners: ['@crm-team'],\n tags: ['contact', 'created'],\n },\n payload: ContactCreatedPayload,\n});\n"],"mappings":";;;;AAKA,MAAM,wBAAwB,kBAAkB;CAC9C,MAAM;CACN,aAAa;CACb,QAAQ;EACN,WAAW;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACxE,OAAO;GAAE,MAAM,eAAe,cAAc;GAAE,YAAY;GAAM;EAChE,gBAAgB;GACd,MAAM,eAAe,iBAAiB;GACtC,YAAY;GACb;EACD,SAAS;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACtE,WAAW;GAAE,MAAM,eAAe,UAAU;GAAE,YAAY;GAAO;EAClE;CACF,CAAC;AAEF,MAAa,sBAAsB,YAAY;CAC7C,MAAM;EACJ,KAAK;EACL,SAAS;EACT,aAAa;EACb,WAAW;EACX,QAAQ,CAAC,YAAY;EACrB,MAAM,CAAC,WAAW,UAAU;EAC7B;CACD,SAAS;CACV,CAAC"}
|
|
1
|
+
{"version":3,"file":"contact.event.js","names":[],"sources":["../../src/events/contact.event.ts"],"sourcesContent":["import { ScalarTypeEnum, defineSchemaModel } from '@contractspec/lib.schema';\nimport { defineEvent } from '@contractspec/lib.contracts';\n\n// ============ Contact Event Payloads ============\n\nconst ContactCreatedPayload = defineSchemaModel({\n name: 'ContactCreatedPayload',\n description: 'Payload when a contact is created',\n fields: {\n contactId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n email: { type: ScalarTypeEnum.EmailAddress(), isOptional: true },\n organizationId: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n ownerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const ContactCreatedEvent = defineEvent({\n meta: {\n key: 'contact.created',\n version: '1.0.0',\n description: 'A new contact has been created.',\n stability: 'stable',\n owners: ['@crm-team'],\n tags: ['contact', 'created'],\n },\n payload: ContactCreatedPayload,\n});\n"],"mappings":";;;;AAKA,MAAM,wBAAwB,kBAAkB;CAC9C,MAAM;CACN,aAAa;CACb,QAAQ;EACN,WAAW;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACxE,OAAO;GAAE,MAAM,eAAe,cAAc;GAAE,YAAY;GAAM;EAChE,gBAAgB;GACd,MAAM,eAAe,iBAAiB;GACtC,YAAY;GACb;EACD,SAAS;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACtE,WAAW;GAAE,MAAM,eAAe,UAAU;GAAE,YAAY;GAAO;EAClE;CACF,CAAC;AAEF,MAAa,sBAAsB,YAAY;CAC7C,MAAM;EACJ,KAAK;EACL,SAAS;EACT,aAAa;EACb,WAAW;EACX,QAAQ,CAAC,YAAY;EACrB,MAAM,CAAC,WAAW,UAAU;EAC7B;CACD,SAAS;CACV,CAAC"}
|
|
@@ -125,7 +125,7 @@ const DealLostPayload = defineSchemaModel({
|
|
|
125
125
|
const DealCreatedEvent = defineEvent({
|
|
126
126
|
meta: {
|
|
127
127
|
key: "deal.created",
|
|
128
|
-
version: 1,
|
|
128
|
+
version: "1.0.0",
|
|
129
129
|
description: "A new deal has been created.",
|
|
130
130
|
stability: "stable",
|
|
131
131
|
owners: ["@crm-team"],
|
|
@@ -136,7 +136,7 @@ const DealCreatedEvent = defineEvent({
|
|
|
136
136
|
const DealMovedEvent = defineEvent({
|
|
137
137
|
meta: {
|
|
138
138
|
key: "deal.moved",
|
|
139
|
-
version: 1,
|
|
139
|
+
version: "1.0.0",
|
|
140
140
|
description: "A deal has been moved to a different stage.",
|
|
141
141
|
stability: "stable",
|
|
142
142
|
owners: ["@crm-team"],
|
|
@@ -147,7 +147,7 @@ const DealMovedEvent = defineEvent({
|
|
|
147
147
|
const DealWonEvent = defineEvent({
|
|
148
148
|
meta: {
|
|
149
149
|
key: "deal.won",
|
|
150
|
-
version: 1,
|
|
150
|
+
version: "1.0.0",
|
|
151
151
|
description: "A deal has been won.",
|
|
152
152
|
stability: "stable",
|
|
153
153
|
owners: ["@crm-team"],
|
|
@@ -158,7 +158,7 @@ const DealWonEvent = defineEvent({
|
|
|
158
158
|
const DealLostEvent = defineEvent({
|
|
159
159
|
meta: {
|
|
160
160
|
key: "deal.lost",
|
|
161
|
-
version: 1,
|
|
161
|
+
version: "1.0.0",
|
|
162
162
|
description: "A deal has been lost.",
|
|
163
163
|
stability: "stable",
|
|
164
164
|
owners: ["@crm-team"],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deal.event.js","names":[],"sources":["../../src/events/deal.event.ts"],"sourcesContent":["import { ScalarTypeEnum, defineSchemaModel } from '@contractspec/lib.schema';\nimport { defineEvent } from '@contractspec/lib.contracts';\n\n// ============ Deal Event Payloads ============\n\nconst DealCreatedPayload = defineSchemaModel({\n name: 'DealCreatedPayload',\n description: 'Payload when a deal is created',\n fields: {\n dealId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n name: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n value: { type: ScalarTypeEnum.Float_unsecure(), isOptional: false },\n pipelineId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n stageId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n ownerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nconst DealMovedPayload = defineSchemaModel({\n name: 'DealMovedEventPayload',\n description: 'Payload when a deal is moved to another stage',\n fields: {\n dealId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n fromStageId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n toStageId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n movedBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n movedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nconst DealWonPayload = defineSchemaModel({\n name: 'DealWonEventPayload',\n description: 'Payload when a deal is won',\n fields: {\n dealId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n value: { type: ScalarTypeEnum.Float_unsecure(), isOptional: false },\n currency: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n contactId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n companyId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n ownerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n wonAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nconst DealLostPayload = defineSchemaModel({\n name: 'DealLostEventPayload',\n description: 'Payload when a deal is lost',\n fields: {\n dealId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n value: { type: ScalarTypeEnum.Float_unsecure(), isOptional: false },\n reason: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n ownerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n lostAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const DealCreatedEvent = defineEvent({\n meta: {\n key: 'deal.created',\n version: 1,\n description: 'A new deal has been created.',\n stability: 'stable',\n owners: ['@crm-team'],\n tags: ['deal', 'created'],\n },\n payload: DealCreatedPayload,\n});\n\nexport const DealMovedEvent = defineEvent({\n meta: {\n key: 'deal.moved',\n version: 1,\n description: 'A deal has been moved to a different stage.',\n stability: 'stable',\n owners: ['@crm-team'],\n tags: ['deal', 'moved'],\n },\n payload: DealMovedPayload,\n});\n\nexport const DealWonEvent = defineEvent({\n meta: {\n key: 'deal.won',\n version: 1,\n description: 'A deal has been won.',\n stability: 'stable',\n owners: ['@crm-team'],\n tags: ['deal', 'won'],\n },\n payload: DealWonPayload,\n});\n\nexport const DealLostEvent = defineEvent({\n meta: {\n key: 'deal.lost',\n version: 1,\n description: 'A deal has been lost.',\n stability: 'stable',\n owners: ['@crm-team'],\n tags: ['deal', 'lost'],\n },\n payload: DealLostPayload,\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"deal.event.js","names":[],"sources":["../../src/events/deal.event.ts"],"sourcesContent":["import { ScalarTypeEnum, defineSchemaModel } from '@contractspec/lib.schema';\nimport { defineEvent } from '@contractspec/lib.contracts';\n\n// ============ Deal Event Payloads ============\n\nconst DealCreatedPayload = defineSchemaModel({\n name: 'DealCreatedPayload',\n description: 'Payload when a deal is created',\n fields: {\n dealId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n name: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n value: { type: ScalarTypeEnum.Float_unsecure(), isOptional: false },\n pipelineId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n stageId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n ownerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nconst DealMovedPayload = defineSchemaModel({\n name: 'DealMovedEventPayload',\n description: 'Payload when a deal is moved to another stage',\n fields: {\n dealId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n fromStageId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n toStageId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n movedBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n movedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nconst DealWonPayload = defineSchemaModel({\n name: 'DealWonEventPayload',\n description: 'Payload when a deal is won',\n fields: {\n dealId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n value: { type: ScalarTypeEnum.Float_unsecure(), isOptional: false },\n currency: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n contactId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n companyId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },\n ownerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n wonAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nconst DealLostPayload = defineSchemaModel({\n name: 'DealLostEventPayload',\n description: 'Payload when a deal is lost',\n fields: {\n dealId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n value: { type: ScalarTypeEnum.Float_unsecure(), isOptional: false },\n reason: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n ownerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n lostAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const DealCreatedEvent = defineEvent({\n meta: {\n key: 'deal.created',\n version: '1.0.0',\n description: 'A new deal has been created.',\n stability: 'stable',\n owners: ['@crm-team'],\n tags: ['deal', 'created'],\n },\n payload: DealCreatedPayload,\n});\n\nexport const DealMovedEvent = defineEvent({\n meta: {\n key: 'deal.moved',\n version: '1.0.0',\n description: 'A deal has been moved to a different stage.',\n stability: 'stable',\n owners: ['@crm-team'],\n tags: ['deal', 'moved'],\n },\n payload: DealMovedPayload,\n});\n\nexport const DealWonEvent = defineEvent({\n meta: {\n key: 'deal.won',\n version: '1.0.0',\n description: 'A deal has been won.',\n stability: 'stable',\n owners: ['@crm-team'],\n tags: ['deal', 'won'],\n },\n payload: DealWonPayload,\n});\n\nexport const DealLostEvent = defineEvent({\n meta: {\n key: 'deal.lost',\n version: '1.0.0',\n description: 'A deal has been lost.',\n stability: 'stable',\n owners: ['@crm-team'],\n tags: ['deal', 'lost'],\n },\n payload: DealLostPayload,\n});\n"],"mappings":"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"}
|
|
@@ -31,7 +31,7 @@ const TaskCompletedPayload = defineSchemaModel({
|
|
|
31
31
|
const TaskCompletedEvent = defineEvent({
|
|
32
32
|
meta: {
|
|
33
33
|
key: "task.completed",
|
|
34
|
-
version: 1,
|
|
34
|
+
version: "1.0.0",
|
|
35
35
|
description: "A task has been completed.",
|
|
36
36
|
stability: "stable",
|
|
37
37
|
owners: ["@crm-team"],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.event.js","names":[],"sources":["../../src/events/task.event.ts"],"sourcesContent":["import { ScalarTypeEnum, defineSchemaModel } from '@contractspec/lib.schema';\nimport { defineEvent } from '@contractspec/lib.contracts';\n\n// ============ Task Event Payloads ============\n\nconst TaskCompletedPayload = defineSchemaModel({\n name: 'TaskCompletedPayload',\n description: 'Payload when a task is completed',\n fields: {\n taskId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n type: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n assignedTo: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n completedBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n completedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const TaskCompletedEvent = defineEvent({\n meta: {\n key: 'task.completed',\n version: 1,\n description: 'A task has been completed.',\n stability: 'stable',\n owners: ['@crm-team'],\n tags: ['task', 'lifecycle'],\n },\n payload: TaskCompletedPayload,\n});\n"],"mappings":";;;;AAKA,MAAM,uBAAuB,kBAAkB;CAC7C,MAAM;CACN,aAAa;CACb,QAAQ;EACN,QAAQ;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACrE,MAAM;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACnE,YAAY;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACzE,aAAa;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EAC1E,aAAa;GAAE,MAAM,eAAe,UAAU;GAAE,YAAY;GAAO;EACpE;CACF,CAAC;AAEF,MAAa,qBAAqB,YAAY;CAC5C,MAAM;EACJ,KAAK;EACL,SAAS;EACT,aAAa;EACb,WAAW;EACX,QAAQ,CAAC,YAAY;EACrB,MAAM,CAAC,QAAQ,YAAY;EAC5B;CACD,SAAS;CACV,CAAC"}
|
|
1
|
+
{"version":3,"file":"task.event.js","names":[],"sources":["../../src/events/task.event.ts"],"sourcesContent":["import { ScalarTypeEnum, defineSchemaModel } from '@contractspec/lib.schema';\nimport { defineEvent } from '@contractspec/lib.contracts';\n\n// ============ Task Event Payloads ============\n\nconst TaskCompletedPayload = defineSchemaModel({\n name: 'TaskCompletedPayload',\n description: 'Payload when a task is completed',\n fields: {\n taskId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n type: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n assignedTo: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n completedBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n completedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\nexport const TaskCompletedEvent = defineEvent({\n meta: {\n key: 'task.completed',\n version: '1.0.0',\n description: 'A task has been completed.',\n stability: 'stable',\n owners: ['@crm-team'],\n tags: ['task', 'lifecycle'],\n },\n payload: TaskCompletedPayload,\n});\n"],"mappings":";;;;AAKA,MAAM,uBAAuB,kBAAkB;CAC7C,MAAM;CACN,aAAa;CACb,QAAQ;EACN,QAAQ;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACrE,MAAM;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACnE,YAAY;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACzE,aAAa;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EAC1E,aAAa;GAAE,MAAM,eAAe,UAAU;GAAE,YAAY;GAAO;EACpE;CACF,CAAC;AAEF,MAAa,qBAAqB,YAAY;CAC5C,MAAM;EACJ,KAAK;EACL,SAAS;EACT,aAAa;EACb,WAAW;EACX,QAAQ,CAAC,YAAY;EACrB,MAAM,CAAC,QAAQ,YAAY;EAC5B;CACD,SAAS;CACV,CAAC"}
|
package/dist/example.d.ts
CHANGED
|
@@ -1,37 +1,7 @@
|
|
|
1
|
+
import { ExampleSpec } from "@contractspec/lib.contracts";
|
|
2
|
+
|
|
1
3
|
//#region src/example.d.ts
|
|
2
|
-
declare const example:
|
|
3
|
-
readonly id: "crm-pipeline";
|
|
4
|
-
readonly title: "CRM Pipeline";
|
|
5
|
-
readonly summary: "Sales CRM with contacts, companies, deals, pipelines, and tasks.";
|
|
6
|
-
readonly tags: readonly ["crm", "sales", "pipeline", "deals"];
|
|
7
|
-
readonly kind: "template";
|
|
8
|
-
readonly visibility: "public";
|
|
9
|
-
readonly docs: {
|
|
10
|
-
readonly rootDocId: "docs.examples.crm-pipeline";
|
|
11
|
-
};
|
|
12
|
-
readonly entrypoints: {
|
|
13
|
-
readonly packageName: "@contractspec/example.crm-pipeline";
|
|
14
|
-
readonly feature: "./feature";
|
|
15
|
-
readonly contracts: "./contracts";
|
|
16
|
-
readonly presentations: "./presentations";
|
|
17
|
-
readonly handlers: "./handlers";
|
|
18
|
-
readonly docs: "./docs";
|
|
19
|
-
};
|
|
20
|
-
readonly surfaces: {
|
|
21
|
-
readonly templates: true;
|
|
22
|
-
readonly sandbox: {
|
|
23
|
-
readonly enabled: true;
|
|
24
|
-
readonly modes: readonly ["playground", "specs", "builder", "markdown", "evolution"];
|
|
25
|
-
};
|
|
26
|
-
readonly studio: {
|
|
27
|
-
readonly enabled: true;
|
|
28
|
-
readonly installable: true;
|
|
29
|
-
};
|
|
30
|
-
readonly mcp: {
|
|
31
|
-
readonly enabled: true;
|
|
32
|
-
};
|
|
33
|
-
};
|
|
34
|
-
};
|
|
4
|
+
declare const example: ExampleSpec;
|
|
35
5
|
//#endregion
|
|
36
6
|
export { example as default };
|
|
37
7
|
//# sourceMappingURL=example.d.ts.map
|
package/dist/example.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"example.d.ts","names":[],"sources":["../src/example.ts"],"sourcesContent":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"example.d.ts","names":[],"sources":["../src/example.ts"],"sourcesContent":[],"mappings":";;;cAEM,SAAS"}
|
package/dist/example.js
CHANGED
|
@@ -1,16 +1,21 @@
|
|
|
1
1
|
//#region src/example.ts
|
|
2
2
|
const example = {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
3
|
+
meta: {
|
|
4
|
+
key: "crm-pipeline",
|
|
5
|
+
version: "1.0.0",
|
|
6
|
+
title: "CRM Pipeline",
|
|
7
|
+
description: "Sales CRM with contacts, companies, deals, pipelines, and tasks.",
|
|
8
|
+
kind: "template",
|
|
9
|
+
visibility: "public",
|
|
10
|
+
stability: "experimental",
|
|
11
|
+
owners: ["@platform.core"],
|
|
12
|
+
tags: [
|
|
13
|
+
"crm",
|
|
14
|
+
"sales",
|
|
15
|
+
"pipeline",
|
|
16
|
+
"deals"
|
|
17
|
+
]
|
|
18
|
+
},
|
|
14
19
|
docs: { rootDocId: "docs.examples.crm-pipeline" },
|
|
15
20
|
entrypoints: {
|
|
16
21
|
packageName: "@contractspec/example.crm-pipeline",
|
package/dist/example.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"example.js","names":[],"sources":["../src/example.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"example.js","names":["example: ExampleSpec"],"sources":["../src/example.ts"],"sourcesContent":["import type { ExampleSpec } from '@contractspec/lib.contracts';\n\nconst example: ExampleSpec = {\n meta: {\n key: 'crm-pipeline',\n version: '1.0.0',\n title: 'CRM Pipeline',\n description:\n 'Sales CRM with contacts, companies, deals, pipelines, and tasks.',\n kind: 'template',\n visibility: 'public',\n stability: 'experimental',\n owners: ['@platform.core'],\n tags: ['crm', 'sales', 'pipeline', 'deals'],\n },\n docs: {\n rootDocId: 'docs.examples.crm-pipeline',\n },\n entrypoints: {\n packageName: '@contractspec/example.crm-pipeline',\n feature: './feature',\n contracts: './contracts',\n presentations: './presentations',\n handlers: './handlers',\n docs: './docs',\n },\n surfaces: {\n templates: true,\n sandbox: {\n enabled: true,\n modes: ['playground', 'specs', 'builder', 'markdown', 'evolution'],\n },\n studio: { enabled: true, installable: true },\n mcp: { enabled: true },\n },\n};\n\nexport default example;\n"],"mappings":";AAEA,MAAMA,UAAuB;CAC3B,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aACE;EACF,MAAM;EACN,YAAY;EACZ,WAAW;EACX,QAAQ,CAAC,iBAAiB;EAC1B,MAAM;GAAC;GAAO;GAAS;GAAY;GAAQ;EAC5C;CACD,MAAM,EACJ,WAAW,8BACZ;CACD,aAAa;EACX,aAAa;EACb,SAAS;EACT,WAAW;EACX,eAAe;EACf,UAAU;EACV,MAAM;EACP;CACD,UAAU;EACR,WAAW;EACX,SAAS;GACP,SAAS;GACT,OAAO;IAAC;IAAc;IAAS;IAAW;IAAY;IAAY;GACnE;EACD,QAAQ;GAAE,SAAS;GAAM,aAAa;GAAM;EAC5C,KAAK,EAAE,SAAS,MAAM;EACvB;CACF;AAED,sBAAe"}
|
|
@@ -7,7 +7,7 @@ import { StabilityEnum } from "@contractspec/lib.contracts";
|
|
|
7
7
|
const CrmDashboardPresentation = {
|
|
8
8
|
meta: {
|
|
9
9
|
key: "crm.dashboard",
|
|
10
|
-
version: 1,
|
|
10
|
+
version: "1.0.0",
|
|
11
11
|
title: "CRM Dashboard",
|
|
12
12
|
description: "Main CRM dashboard with pipeline overview, deal stats, and activities",
|
|
13
13
|
domain: "crm-pipeline",
|
|
@@ -31,7 +31,7 @@ const CrmDashboardPresentation = {
|
|
|
31
31
|
const PipelineMetricsPresentation = {
|
|
32
32
|
meta: {
|
|
33
33
|
key: "crm.pipeline.metrics",
|
|
34
|
-
version: 1,
|
|
34
|
+
version: "1.0.0",
|
|
35
35
|
title: "Pipeline Metrics",
|
|
36
36
|
description: "Pipeline metrics and forecasting view",
|
|
37
37
|
domain: "crm-pipeline",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.presentation.js","names":["CrmDashboardPresentation: PresentationSpec","PipelineMetricsPresentation: PresentationSpec"],"sources":["../../src/presentations/dashboard.presentation.ts"],"sourcesContent":["/**\n * CRM Dashboard Presentation Descriptor\n */\nimport type { PresentationSpec } from '@contractspec/lib.contracts';\nimport { StabilityEnum } from '@contractspec/lib.contracts';\n\n/**\n * Main CRM dashboard presentation.\n */\nexport const CrmDashboardPresentation: PresentationSpec = {\n meta: {\n key: 'crm.dashboard',\n version: 1,\n title: 'CRM Dashboard',\n description:\n 'Main CRM dashboard with pipeline overview, deal stats, and activities',\n domain: 'crm-pipeline',\n owners: ['@crm-team'],\n tags: ['dashboard', 'overview'],\n stability: StabilityEnum.Experimental,\n goal: 'Provide a high-level overview of CRM performance and active deals.',\n context: 'The landing page for CRM users.',\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'CrmDashboard',\n },\n targets: ['react', 'markdown'],\n policy: {\n flags: ['crm.enabled'],\n },\n};\n\n/**\n * Pipeline metrics presentation.\n */\nexport const PipelineMetricsPresentation: PresentationSpec = {\n meta: {\n key: 'crm.pipeline.metrics',\n version: 1,\n title: 'Pipeline Metrics',\n description: 'Pipeline metrics and forecasting view',\n domain: 'crm-pipeline',\n owners: ['@crm-team'],\n tags: ['pipeline', 'metrics', 'forecast'],\n stability: StabilityEnum.Experimental,\n goal: 'Track pipeline health and sales forecasts.',\n context: 'Data-intensive widget for sales managers.',\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'PipelineMetricsView',\n },\n targets: ['react', 'markdown'],\n policy: {\n flags: ['crm.metrics.enabled'],\n },\n};\n"],"mappings":";;;;;;AASA,MAAaA,2BAA6C;CACxD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aACE;EACF,QAAQ;EACR,QAAQ,CAAC,YAAY;EACrB,MAAM,CAAC,aAAa,WAAW;EAC/B,WAAW,cAAc;EACzB,MAAM;EACN,SAAS;EACV;CACD,QAAQ;EACN,MAAM;EACN,WAAW;EACX,cAAc;EACf;CACD,SAAS,CAAC,SAAS,WAAW;CAC9B,QAAQ,EACN,OAAO,CAAC,cAAc,EACvB;CACF;;;;AAKD,MAAaC,8BAAgD;CAC3D,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aAAa;EACb,QAAQ;EACR,QAAQ,CAAC,YAAY;EACrB,MAAM;GAAC;GAAY;GAAW;GAAW;EACzC,WAAW,cAAc;EACzB,MAAM;EACN,SAAS;EACV;CACD,QAAQ;EACN,MAAM;EACN,WAAW;EACX,cAAc;EACf;CACD,SAAS,CAAC,SAAS,WAAW;CAC9B,QAAQ,EACN,OAAO,CAAC,sBAAsB,EAC/B;CACF"}
|
|
1
|
+
{"version":3,"file":"dashboard.presentation.js","names":["CrmDashboardPresentation: PresentationSpec","PipelineMetricsPresentation: PresentationSpec"],"sources":["../../src/presentations/dashboard.presentation.ts"],"sourcesContent":["/**\n * CRM Dashboard Presentation Descriptor\n */\nimport type { PresentationSpec } from '@contractspec/lib.contracts';\nimport { StabilityEnum } from '@contractspec/lib.contracts';\n\n/**\n * Main CRM dashboard presentation.\n */\nexport const CrmDashboardPresentation: PresentationSpec = {\n meta: {\n key: 'crm.dashboard',\n version: '1.0.0',\n title: 'CRM Dashboard',\n description:\n 'Main CRM dashboard with pipeline overview, deal stats, and activities',\n domain: 'crm-pipeline',\n owners: ['@crm-team'],\n tags: ['dashboard', 'overview'],\n stability: StabilityEnum.Experimental,\n goal: 'Provide a high-level overview of CRM performance and active deals.',\n context: 'The landing page for CRM users.',\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'CrmDashboard',\n },\n targets: ['react', 'markdown'],\n policy: {\n flags: ['crm.enabled'],\n },\n};\n\n/**\n * Pipeline metrics presentation.\n */\nexport const PipelineMetricsPresentation: PresentationSpec = {\n meta: {\n key: 'crm.pipeline.metrics',\n version: '1.0.0',\n title: 'Pipeline Metrics',\n description: 'Pipeline metrics and forecasting view',\n domain: 'crm-pipeline',\n owners: ['@crm-team'],\n tags: ['pipeline', 'metrics', 'forecast'],\n stability: StabilityEnum.Experimental,\n goal: 'Track pipeline health and sales forecasts.',\n context: 'Data-intensive widget for sales managers.',\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'PipelineMetricsView',\n },\n targets: ['react', 'markdown'],\n policy: {\n flags: ['crm.metrics.enabled'],\n },\n};\n"],"mappings":";;;;;;AASA,MAAaA,2BAA6C;CACxD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aACE;EACF,QAAQ;EACR,QAAQ,CAAC,YAAY;EACrB,MAAM,CAAC,aAAa,WAAW;EAC/B,WAAW,cAAc;EACzB,MAAM;EACN,SAAS;EACV;CACD,QAAQ;EACN,MAAM;EACN,WAAW;EACX,cAAc;EACf;CACD,SAAS,CAAC,SAAS,WAAW;CAC9B,QAAQ,EACN,OAAO,CAAC,cAAc,EACvB;CACF;;;;AAKD,MAAaC,8BAAgD;CAC3D,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aAAa;EACb,QAAQ;EACR,QAAQ,CAAC,YAAY;EACrB,MAAM;GAAC;GAAY;GAAW;GAAW;EACzC,WAAW,cAAc;EACzB,MAAM;EACN,SAAS;EACV;CACD,QAAQ;EACN,MAAM;EACN,WAAW;EACX,cAAc;EACf;CACD,SAAS,CAAC,SAAS,WAAW;CAC9B,QAAQ,EACN,OAAO,CAAC,sBAAsB,EAC/B;CACF"}
|
|
@@ -8,7 +8,7 @@ import { StabilityEnum } from "@contractspec/lib.contracts";
|
|
|
8
8
|
const PipelineKanbanPresentation = {
|
|
9
9
|
meta: {
|
|
10
10
|
key: "crm.pipeline.kanban",
|
|
11
|
-
version: 1,
|
|
11
|
+
version: "1.0.0",
|
|
12
12
|
title: "Pipeline Kanban",
|
|
13
13
|
description: "Kanban board view of deals organized by stage",
|
|
14
14
|
domain: "crm-pipeline",
|
|
@@ -37,7 +37,7 @@ const PipelineKanbanPresentation = {
|
|
|
37
37
|
const DealListPresentation = {
|
|
38
38
|
meta: {
|
|
39
39
|
key: "crm.deal.list",
|
|
40
|
-
version: 1,
|
|
40
|
+
version: "1.0.0",
|
|
41
41
|
title: "Deal List",
|
|
42
42
|
description: "List view of deals with value, status, and owner info",
|
|
43
43
|
domain: "crm-pipeline",
|
|
@@ -66,7 +66,7 @@ const DealListPresentation = {
|
|
|
66
66
|
const DealDetailPresentation = {
|
|
67
67
|
meta: {
|
|
68
68
|
key: "crm.deal.detail",
|
|
69
|
-
version: 1,
|
|
69
|
+
version: "1.0.0",
|
|
70
70
|
title: "Deal Details",
|
|
71
71
|
description: "Detailed view of a deal with activities, contacts, and history",
|
|
72
72
|
domain: "crm-pipeline",
|
|
@@ -90,7 +90,7 @@ const DealDetailPresentation = {
|
|
|
90
90
|
const DealCardPresentation = {
|
|
91
91
|
meta: {
|
|
92
92
|
key: "crm.deal.card",
|
|
93
|
-
version: 1,
|
|
93
|
+
version: "1.0.0",
|
|
94
94
|
title: "Deal Card",
|
|
95
95
|
description: "Compact deal card for kanban board display",
|
|
96
96
|
domain: "crm-pipeline",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.presentation.js","names":["PipelineKanbanPresentation: PresentationSpec","DealListPresentation: PresentationSpec","DealDetailPresentation: PresentationSpec","DealCardPresentation: PresentationSpec"],"sources":["../../src/presentations/pipeline.presentation.ts"],"sourcesContent":["/**\n * Pipeline Presentation Descriptors\n */\nimport type { PresentationSpec } from '@contractspec/lib.contracts';\nimport { StabilityEnum } from '@contractspec/lib.contracts';\nimport { DealModel } from '../deal/deal.schema';\n\n/**\n * Kanban board presentation for the sales pipeline.\n */\nexport const PipelineKanbanPresentation: PresentationSpec = {\n meta: {\n key: 'crm.pipeline.kanban',\n version: 1,\n title: 'Pipeline Kanban',\n description: 'Kanban board view of deals organized by stage',\n domain: 'crm-pipeline',\n owners: ['@crm-team'],\n tags: ['pipeline', 'kanban', 'deals'],\n stability: StabilityEnum.Experimental,\n goal: 'Visualize the sales pipeline status and deal distribution across stages.',\n context: 'Used in the sales dashboard and management reports.',\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'PipelineKanbanView',\n props: DealModel,\n },\n targets: ['react', 'markdown'],\n policy: {\n flags: ['crm.pipeline.enabled'],\n },\n};\n\n/**\n * List view of deals with filtering.\n */\nexport const DealListPresentation: PresentationSpec = {\n meta: {\n key: 'crm.deal.list',\n version: 1,\n title: 'Deal List',\n description: 'List view of deals with value, status, and owner info',\n domain: 'crm-pipeline',\n owners: ['@crm-team'],\n tags: ['deal', 'list'],\n stability: StabilityEnum.Experimental,\n goal: 'Search, filter, and review deal lists.',\n context: 'Standard view for deal management and bulk actions.',\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'DealListView',\n props: DealModel,\n },\n targets: ['react', 'markdown', 'application/json'],\n policy: {\n flags: ['crm.deals.enabled'],\n },\n};\n\n/**\n * Deal detail presentation.\n */\nexport const DealDetailPresentation: PresentationSpec = {\n meta: {\n key: 'crm.deal.detail',\n version: 1,\n title: 'Deal Details',\n description:\n 'Detailed view of a deal with activities, contacts, and history',\n domain: 'crm-pipeline',\n owners: ['@crm-team'],\n tags: ['deal', 'detail'],\n stability: StabilityEnum.Experimental,\n goal: 'Deep dive into deal details and historical activities.',\n context: 'The main workspace for managing a single deal execution.',\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'DealDetailView',\n },\n targets: ['react', 'markdown'],\n policy: {\n flags: ['crm.deals.enabled'],\n },\n};\n\n/**\n * Deal card for kanban board.\n */\nexport const DealCardPresentation: PresentationSpec = {\n meta: {\n key: 'crm.deal.card',\n version: 1,\n title: 'Deal Card',\n description: 'Compact deal card for kanban board display',\n domain: 'crm-pipeline',\n owners: ['@crm-team'],\n tags: ['deal', 'card', 'kanban'],\n stability: StabilityEnum.Experimental,\n goal: 'Provide a quick overview of deal status in the pipeline view.',\n context: 'Condensed representation used within the Pipeline Kanban board.',\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'DealCard',\n props: DealModel,\n },\n targets: ['react'],\n policy: {\n flags: ['crm.deals.enabled'],\n },\n};\n"],"mappings":";;;;;;;AAUA,MAAaA,6BAA+C;CAC1D,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aAAa;EACb,QAAQ;EACR,QAAQ,CAAC,YAAY;EACrB,MAAM;GAAC;GAAY;GAAU;GAAQ;EACrC,WAAW,cAAc;EACzB,MAAM;EACN,SAAS;EACV;CACD,QAAQ;EACN,MAAM;EACN,WAAW;EACX,cAAc;EACd,OAAO;EACR;CACD,SAAS,CAAC,SAAS,WAAW;CAC9B,QAAQ,EACN,OAAO,CAAC,uBAAuB,EAChC;CACF;;;;AAKD,MAAaC,uBAAyC;CACpD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aAAa;EACb,QAAQ;EACR,QAAQ,CAAC,YAAY;EACrB,MAAM,CAAC,QAAQ,OAAO;EACtB,WAAW,cAAc;EACzB,MAAM;EACN,SAAS;EACV;CACD,QAAQ;EACN,MAAM;EACN,WAAW;EACX,cAAc;EACd,OAAO;EACR;CACD,SAAS;EAAC;EAAS;EAAY;EAAmB;CAClD,QAAQ,EACN,OAAO,CAAC,oBAAoB,EAC7B;CACF;;;;AAKD,MAAaC,yBAA2C;CACtD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aACE;EACF,QAAQ;EACR,QAAQ,CAAC,YAAY;EACrB,MAAM,CAAC,QAAQ,SAAS;EACxB,WAAW,cAAc;EACzB,MAAM;EACN,SAAS;EACV;CACD,QAAQ;EACN,MAAM;EACN,WAAW;EACX,cAAc;EACf;CACD,SAAS,CAAC,SAAS,WAAW;CAC9B,QAAQ,EACN,OAAO,CAAC,oBAAoB,EAC7B;CACF;;;;AAKD,MAAaC,uBAAyC;CACpD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aAAa;EACb,QAAQ;EACR,QAAQ,CAAC,YAAY;EACrB,MAAM;GAAC;GAAQ;GAAQ;GAAS;EAChC,WAAW,cAAc;EACzB,MAAM;EACN,SAAS;EACV;CACD,QAAQ;EACN,MAAM;EACN,WAAW;EACX,cAAc;EACd,OAAO;EACR;CACD,SAAS,CAAC,QAAQ;CAClB,QAAQ,EACN,OAAO,CAAC,oBAAoB,EAC7B;CACF"}
|
|
1
|
+
{"version":3,"file":"pipeline.presentation.js","names":["PipelineKanbanPresentation: PresentationSpec","DealListPresentation: PresentationSpec","DealDetailPresentation: PresentationSpec","DealCardPresentation: PresentationSpec"],"sources":["../../src/presentations/pipeline.presentation.ts"],"sourcesContent":["/**\n * Pipeline Presentation Descriptors\n */\nimport type { PresentationSpec } from '@contractspec/lib.contracts';\nimport { StabilityEnum } from '@contractspec/lib.contracts';\nimport { DealModel } from '../deal/deal.schema';\n\n/**\n * Kanban board presentation for the sales pipeline.\n */\nexport const PipelineKanbanPresentation: PresentationSpec = {\n meta: {\n key: 'crm.pipeline.kanban',\n version: '1.0.0',\n title: 'Pipeline Kanban',\n description: 'Kanban board view of deals organized by stage',\n domain: 'crm-pipeline',\n owners: ['@crm-team'],\n tags: ['pipeline', 'kanban', 'deals'],\n stability: StabilityEnum.Experimental,\n goal: 'Visualize the sales pipeline status and deal distribution across stages.',\n context: 'Used in the sales dashboard and management reports.',\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'PipelineKanbanView',\n props: DealModel,\n },\n targets: ['react', 'markdown'],\n policy: {\n flags: ['crm.pipeline.enabled'],\n },\n};\n\n/**\n * List view of deals with filtering.\n */\nexport const DealListPresentation: PresentationSpec = {\n meta: {\n key: 'crm.deal.list',\n version: '1.0.0',\n title: 'Deal List',\n description: 'List view of deals with value, status, and owner info',\n domain: 'crm-pipeline',\n owners: ['@crm-team'],\n tags: ['deal', 'list'],\n stability: StabilityEnum.Experimental,\n goal: 'Search, filter, and review deal lists.',\n context: 'Standard view for deal management and bulk actions.',\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'DealListView',\n props: DealModel,\n },\n targets: ['react', 'markdown', 'application/json'],\n policy: {\n flags: ['crm.deals.enabled'],\n },\n};\n\n/**\n * Deal detail presentation.\n */\nexport const DealDetailPresentation: PresentationSpec = {\n meta: {\n key: 'crm.deal.detail',\n version: '1.0.0',\n title: 'Deal Details',\n description:\n 'Detailed view of a deal with activities, contacts, and history',\n domain: 'crm-pipeline',\n owners: ['@crm-team'],\n tags: ['deal', 'detail'],\n stability: StabilityEnum.Experimental,\n goal: 'Deep dive into deal details and historical activities.',\n context: 'The main workspace for managing a single deal execution.',\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'DealDetailView',\n },\n targets: ['react', 'markdown'],\n policy: {\n flags: ['crm.deals.enabled'],\n },\n};\n\n/**\n * Deal card for kanban board.\n */\nexport const DealCardPresentation: PresentationSpec = {\n meta: {\n key: 'crm.deal.card',\n version: '1.0.0',\n title: 'Deal Card',\n description: 'Compact deal card for kanban board display',\n domain: 'crm-pipeline',\n owners: ['@crm-team'],\n tags: ['deal', 'card', 'kanban'],\n stability: StabilityEnum.Experimental,\n goal: 'Provide a quick overview of deal status in the pipeline view.',\n context: 'Condensed representation used within the Pipeline Kanban board.',\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'DealCard',\n props: DealModel,\n },\n targets: ['react'],\n policy: {\n flags: ['crm.deals.enabled'],\n },\n};\n"],"mappings":";;;;;;;AAUA,MAAaA,6BAA+C;CAC1D,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aAAa;EACb,QAAQ;EACR,QAAQ,CAAC,YAAY;EACrB,MAAM;GAAC;GAAY;GAAU;GAAQ;EACrC,WAAW,cAAc;EACzB,MAAM;EACN,SAAS;EACV;CACD,QAAQ;EACN,MAAM;EACN,WAAW;EACX,cAAc;EACd,OAAO;EACR;CACD,SAAS,CAAC,SAAS,WAAW;CAC9B,QAAQ,EACN,OAAO,CAAC,uBAAuB,EAChC;CACF;;;;AAKD,MAAaC,uBAAyC;CACpD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aAAa;EACb,QAAQ;EACR,QAAQ,CAAC,YAAY;EACrB,MAAM,CAAC,QAAQ,OAAO;EACtB,WAAW,cAAc;EACzB,MAAM;EACN,SAAS;EACV;CACD,QAAQ;EACN,MAAM;EACN,WAAW;EACX,cAAc;EACd,OAAO;EACR;CACD,SAAS;EAAC;EAAS;EAAY;EAAmB;CAClD,QAAQ,EACN,OAAO,CAAC,oBAAoB,EAC7B;CACF;;;;AAKD,MAAaC,yBAA2C;CACtD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aACE;EACF,QAAQ;EACR,QAAQ,CAAC,YAAY;EACrB,MAAM,CAAC,QAAQ,SAAS;EACxB,WAAW,cAAc;EACzB,MAAM;EACN,SAAS;EACV;CACD,QAAQ;EACN,MAAM;EACN,WAAW;EACX,cAAc;EACf;CACD,SAAS,CAAC,SAAS,WAAW;CAC9B,QAAQ,EACN,OAAO,CAAC,oBAAoB,EAC7B;CACF;;;;AAKD,MAAaC,uBAAyC;CACpD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aAAa;EACb,QAAQ;EACR,QAAQ,CAAC,YAAY;EACrB,MAAM;GAAC;GAAQ;GAAQ;GAAS;EAChC,WAAW,cAAc;EACzB,MAAM;EACN,SAAS;EACV;CACD,QAAQ;EACN,MAAM;EACN,WAAW;EACX,cAAc;EACd,OAAO;EACR;CACD,SAAS,CAAC,QAAQ;CAClB,QAAQ,EACN,OAAO,CAAC,oBAAoB,EAC7B;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contractspec/example.crm-pipeline",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.45.1",
|
|
4
4
|
"description": "CRM Pipeline - Contacts, Companies, Deals, Tasks",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -47,18 +47,18 @@
|
|
|
47
47
|
"test": "bun run"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@contractspec/lib.schema": "1.
|
|
51
|
-
"@contractspec/lib.contracts": "1.
|
|
52
|
-
"@contractspec/lib.bus": "1.
|
|
53
|
-
"@contractspec/lib.identity-rbac": "1.
|
|
54
|
-
"@contractspec/lib.jobs": "1.
|
|
55
|
-
"@contractspec/module.audit-trail": "1.
|
|
56
|
-
"@contractspec/module.notifications": "1.
|
|
50
|
+
"@contractspec/lib.schema": "1.45.1",
|
|
51
|
+
"@contractspec/lib.contracts": "1.45.1",
|
|
52
|
+
"@contractspec/lib.bus": "1.45.1",
|
|
53
|
+
"@contractspec/lib.identity-rbac": "1.45.1",
|
|
54
|
+
"@contractspec/lib.jobs": "1.45.1",
|
|
55
|
+
"@contractspec/module.audit-trail": "1.45.1",
|
|
56
|
+
"@contractspec/module.notifications": "1.45.1",
|
|
57
57
|
"zod": "^4.1.13"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
|
-
"@contractspec/tool.tsdown": "1.
|
|
61
|
-
"@contractspec/tool.typescript": "1.
|
|
60
|
+
"@contractspec/tool.tsdown": "1.45.1",
|
|
61
|
+
"@contractspec/tool.typescript": "1.45.1",
|
|
62
62
|
"tsdown": "^0.18.3",
|
|
63
63
|
"typescript": "^5.9.3"
|
|
64
64
|
},
|
|
@@ -19,68 +19,72 @@ export const CrmPipelineFeature: FeatureModuleSpec = {
|
|
|
19
19
|
owners: ['@crm-team'],
|
|
20
20
|
tags: ['crm', 'sales', 'pipeline', 'deals'],
|
|
21
21
|
stability: 'experimental',
|
|
22
|
-
version: 1,
|
|
22
|
+
version: '1.0.0',
|
|
23
23
|
},
|
|
24
24
|
|
|
25
25
|
// All contract operations included in this feature
|
|
26
26
|
operations: [
|
|
27
27
|
// Deal operations
|
|
28
|
-
{ key: 'crm.deal.create', version: 1 },
|
|
29
|
-
{ key: 'crm.deal.move', version: 1 },
|
|
30
|
-
{ key: 'crm.deal.win', version: 1 },
|
|
31
|
-
{ key: 'crm.deal.lose', version: 1 },
|
|
32
|
-
{ key: 'crm.deal.list', version: 1 },
|
|
28
|
+
{ key: 'crm.deal.create', version: '1.0.0' },
|
|
29
|
+
{ key: 'crm.deal.move', version: '1.0.0' },
|
|
30
|
+
{ key: 'crm.deal.win', version: '1.0.0' },
|
|
31
|
+
{ key: 'crm.deal.lose', version: '1.0.0' },
|
|
32
|
+
{ key: 'crm.deal.list', version: '1.0.0' },
|
|
33
33
|
],
|
|
34
34
|
|
|
35
35
|
// Events emitted by this feature
|
|
36
36
|
events: [
|
|
37
37
|
// Deal events
|
|
38
|
-
{ key: 'deal.created', version: 1 },
|
|
39
|
-
{ key: 'deal.moved', version: 1 },
|
|
40
|
-
{ key: 'deal.won', version: 1 },
|
|
41
|
-
{ key: 'deal.lost', version: 1 },
|
|
38
|
+
{ key: 'deal.created', version: '1.0.0' },
|
|
39
|
+
{ key: 'deal.moved', version: '1.0.0' },
|
|
40
|
+
{ key: 'deal.won', version: '1.0.0' },
|
|
41
|
+
{ key: 'deal.lost', version: '1.0.0' },
|
|
42
42
|
|
|
43
43
|
// Contact events
|
|
44
|
-
{ key: 'contact.created', version: 1 },
|
|
44
|
+
{ key: 'contact.created', version: '1.0.0' },
|
|
45
45
|
|
|
46
46
|
// Task events
|
|
47
|
-
{ key: 'task.completed', version: 1 },
|
|
47
|
+
{ key: 'task.completed', version: '1.0.0' },
|
|
48
48
|
],
|
|
49
49
|
|
|
50
50
|
// Presentations associated with this feature
|
|
51
51
|
presentations: [
|
|
52
|
-
{ key: 'crm.dashboard', version: 1 },
|
|
53
|
-
{ key: 'crm.pipeline.kanban', version: 1 },
|
|
54
|
-
{ key: 'crm.deal.list', version: 1 },
|
|
55
|
-
{ key: 'crm.deal.detail', version: 1 },
|
|
56
|
-
{ key: 'crm.deal.card', version: 1 },
|
|
57
|
-
{ key: 'crm.pipeline.metrics', version: 1 },
|
|
52
|
+
{ key: 'crm.dashboard', version: '1.0.0' },
|
|
53
|
+
{ key: 'crm.pipeline.kanban', version: '1.0.0' },
|
|
54
|
+
{ key: 'crm.deal.list', version: '1.0.0' },
|
|
55
|
+
{ key: 'crm.deal.detail', version: '1.0.0' },
|
|
56
|
+
{ key: 'crm.deal.card', version: '1.0.0' },
|
|
57
|
+
{ key: 'crm.pipeline.metrics', version: '1.0.0' },
|
|
58
58
|
],
|
|
59
59
|
|
|
60
60
|
// Link operations to their primary presentations
|
|
61
61
|
opToPresentation: [
|
|
62
62
|
{
|
|
63
|
-
op: { key: 'crm.deal.list', version: 1 },
|
|
64
|
-
pres: { key: 'crm.pipeline.kanban', version: 1 },
|
|
63
|
+
op: { key: 'crm.deal.list', version: '1.0.0' },
|
|
64
|
+
pres: { key: 'crm.pipeline.kanban', version: '1.0.0' },
|
|
65
65
|
},
|
|
66
66
|
{
|
|
67
|
-
op: { key: 'crm.deal.move', version: 1 },
|
|
68
|
-
pres: { key: 'crm.pipeline.kanban', version: 1 },
|
|
67
|
+
op: { key: 'crm.deal.move', version: '1.0.0' },
|
|
68
|
+
pres: { key: 'crm.pipeline.kanban', version: '1.0.0' },
|
|
69
69
|
},
|
|
70
70
|
],
|
|
71
71
|
|
|
72
72
|
// Target requirements for multi-surface rendering
|
|
73
73
|
presentationsTargets: [
|
|
74
|
-
{ key: 'crm.dashboard', version: 1, targets: ['react', 'markdown'] },
|
|
75
|
-
{
|
|
74
|
+
{ key: 'crm.dashboard', version: '1.0.0', targets: ['react', 'markdown'] },
|
|
75
|
+
{
|
|
76
|
+
key: 'crm.pipeline.kanban',
|
|
77
|
+
version: '1.0.0',
|
|
78
|
+
targets: ['react', 'markdown'],
|
|
79
|
+
},
|
|
76
80
|
{
|
|
77
81
|
key: 'crm.deal.list',
|
|
78
|
-
version: 1,
|
|
82
|
+
version: '1.0.0',
|
|
79
83
|
targets: ['react', 'markdown', 'application/json'],
|
|
80
84
|
},
|
|
81
85
|
{
|
|
82
86
|
key: 'crm.pipeline.metrics',
|
|
83
|
-
version: 1,
|
|
87
|
+
version: '1.0.0',
|
|
84
88
|
targets: ['react', 'markdown'],
|
|
85
89
|
},
|
|
86
90
|
],
|
|
@@ -88,9 +92,9 @@ export const CrmPipelineFeature: FeatureModuleSpec = {
|
|
|
88
92
|
// Capability requirements
|
|
89
93
|
capabilities: {
|
|
90
94
|
requires: [
|
|
91
|
-
{ key: 'identity', version: 1 },
|
|
92
|
-
{ key: 'audit-trail', version: 1 },
|
|
93
|
-
{ key: 'notifications', version: 1 },
|
|
95
|
+
{ key: 'identity', version: '1.0.0' },
|
|
96
|
+
{ key: 'audit-trail', version: '1.0.0' },
|
|
97
|
+
{ key: 'notifications', version: '1.0.0' },
|
|
94
98
|
],
|
|
95
99
|
},
|
|
96
100
|
};
|