@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.
Files changed (41) hide show
  1. package/.turbo/turbo-build$colon$bundle.log +23 -23
  2. package/.turbo/turbo-build.log +22 -22
  3. package/CHANGELOG.md +45 -0
  4. package/dist/crm-pipeline.feature.js +29 -29
  5. package/dist/crm-pipeline.feature.js.map +1 -1
  6. package/dist/deal/deal.enum.d.ts +3 -3
  7. package/dist/deal/deal.enum.d.ts.map +1 -1
  8. package/dist/deal/deal.operation.d.ts +131 -131
  9. package/dist/deal/deal.operation.d.ts.map +1 -1
  10. package/dist/deal/deal.operation.js +9 -9
  11. package/dist/deal/deal.operation.js.map +1 -1
  12. package/dist/deal/deal.schema.d.ts +71 -71
  13. package/dist/entities/company.entity.d.ts +28 -28
  14. package/dist/entities/company.entity.d.ts.map +1 -1
  15. package/dist/entities/contact.entity.d.ts +32 -32
  16. package/dist/entities/contact.entity.d.ts.map +1 -1
  17. package/dist/entities/deal.entity.d.ts +53 -53
  18. package/dist/events/contact.event.js +1 -1
  19. package/dist/events/contact.event.js.map +1 -1
  20. package/dist/events/deal.event.js +4 -4
  21. package/dist/events/deal.event.js.map +1 -1
  22. package/dist/events/task.event.js +1 -1
  23. package/dist/events/task.event.js.map +1 -1
  24. package/dist/example.d.ts +3 -33
  25. package/dist/example.d.ts.map +1 -1
  26. package/dist/example.js +16 -11
  27. package/dist/example.js.map +1 -1
  28. package/dist/presentations/dashboard.presentation.js +2 -2
  29. package/dist/presentations/dashboard.presentation.js.map +1 -1
  30. package/dist/presentations/pipeline.presentation.js +4 -4
  31. package/dist/presentations/pipeline.presentation.js.map +1 -1
  32. package/package.json +10 -10
  33. package/src/crm-pipeline.feature.ts +33 -29
  34. package/src/deal/deal.operation.ts +9 -9
  35. package/src/events/contact.event.ts +1 -1
  36. package/src/events/deal.event.ts +4 -4
  37. package/src/events/task.event.ts +1 -1
  38. package/src/example.ts +16 -8
  39. package/src/presentations/dashboard.presentation.ts +2 -2
  40. package/src/presentations/pipeline.presentation.ts +4 -4
  41. package/tsconfig.tsbuildinfo +1 -1
@@ -1,72 +1,72 @@
1
- import * as _contractspec_lib_schema256 from "@contractspec/lib.schema";
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: _contractspec_lib_schema256.EntityEnumDef;
7
+ declare const DealStatusEnum: _contractspec_lib_schema186.EntityEnumDef;
8
8
  /**
9
9
  * Pipeline entity - sales pipeline definition.
10
10
  */
11
- declare const PipelineEntity: _contractspec_lib_schema256.EntitySpec<{
12
- id: _contractspec_lib_schema256.EntityScalarField;
13
- name: _contractspec_lib_schema256.EntityScalarField;
14
- description: _contractspec_lib_schema256.EntityScalarField;
15
- organizationId: _contractspec_lib_schema256.EntityScalarField;
16
- isDefault: _contractspec_lib_schema256.EntityScalarField;
17
- createdAt: _contractspec_lib_schema256.EntityScalarField;
18
- updatedAt: _contractspec_lib_schema256.EntityScalarField;
19
- stages: _contractspec_lib_schema256.EntityRelationField;
20
- deals: _contractspec_lib_schema256.EntityRelationField;
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: _contractspec_lib_schema256.EntitySpec<{
26
- id: _contractspec_lib_schema256.EntityScalarField;
27
- name: _contractspec_lib_schema256.EntityScalarField;
28
- pipelineId: _contractspec_lib_schema256.EntityScalarField;
29
- position: _contractspec_lib_schema256.EntityScalarField;
30
- probability: _contractspec_lib_schema256.EntityScalarField;
31
- isWonStage: _contractspec_lib_schema256.EntityScalarField;
32
- isLostStage: _contractspec_lib_schema256.EntityScalarField;
33
- color: _contractspec_lib_schema256.EntityScalarField;
34
- createdAt: _contractspec_lib_schema256.EntityScalarField;
35
- updatedAt: _contractspec_lib_schema256.EntityScalarField;
36
- pipeline: _contractspec_lib_schema256.EntityRelationField;
37
- deals: _contractspec_lib_schema256.EntityRelationField;
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: _contractspec_lib_schema256.EntitySpec<{
43
- id: _contractspec_lib_schema256.EntityScalarField;
44
- name: _contractspec_lib_schema256.EntityScalarField;
45
- value: _contractspec_lib_schema256.EntityScalarField;
46
- currency: _contractspec_lib_schema256.EntityScalarField;
47
- pipelineId: _contractspec_lib_schema256.EntityScalarField;
48
- stageId: _contractspec_lib_schema256.EntityScalarField;
49
- status: _contractspec_lib_schema256.EntityEnumField;
50
- contactId: _contractspec_lib_schema256.EntityScalarField;
51
- companyId: _contractspec_lib_schema256.EntityScalarField;
52
- organizationId: _contractspec_lib_schema256.EntityScalarField;
53
- ownerId: _contractspec_lib_schema256.EntityScalarField;
54
- expectedCloseDate: _contractspec_lib_schema256.EntityScalarField;
55
- closedAt: _contractspec_lib_schema256.EntityScalarField;
56
- lostReason: _contractspec_lib_schema256.EntityScalarField;
57
- wonSource: _contractspec_lib_schema256.EntityScalarField;
58
- notes: _contractspec_lib_schema256.EntityScalarField;
59
- tags: _contractspec_lib_schema256.EntityScalarField;
60
- customFields: _contractspec_lib_schema256.EntityScalarField;
61
- stagePosition: _contractspec_lib_schema256.EntityScalarField;
62
- createdAt: _contractspec_lib_schema256.EntityScalarField;
63
- updatedAt: _contractspec_lib_schema256.EntityScalarField;
64
- pipeline: _contractspec_lib_schema256.EntityRelationField;
65
- stage: _contractspec_lib_schema256.EntityRelationField;
66
- contact: _contractspec_lib_schema256.EntityRelationField;
67
- company: _contractspec_lib_schema256.EntityRelationField;
68
- tasks: _contractspec_lib_schema256.EntityRelationField;
69
- activities: _contractspec_lib_schema256.EntityRelationField;
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
@@ -1 +1 @@
1
- {"version":3,"file":"example.d.ts","names":[],"sources":["../src/example.ts"],"sourcesContent":[],"mappings":";cAAM;EAAA,SAAA,EA2BI,EAAA,cAAA"}
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
- id: "crm-pipeline",
4
- title: "CRM Pipeline",
5
- summary: "Sales CRM with contacts, companies, deals, pipelines, and tasks.",
6
- tags: [
7
- "crm",
8
- "sales",
9
- "pipeline",
10
- "deals"
11
- ],
12
- kind: "template",
13
- visibility: "public",
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",
@@ -1 +1 @@
1
- {"version":3,"file":"example.js","names":[],"sources":["../src/example.ts"],"sourcesContent":["const example = {\n id: 'crm-pipeline',\n title: 'CRM Pipeline',\n summary: 'Sales CRM with contacts, companies, deals, pipelines, and tasks.',\n tags: ['crm', 'sales', 'pipeline', 'deals'],\n kind: 'template',\n visibility: 'public',\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} as const;\n\nexport default example;\n"],"mappings":";AAAA,MAAM,UAAU;CACd,IAAI;CACJ,OAAO;CACP,SAAS;CACT,MAAM;EAAC;EAAO;EAAS;EAAY;EAAQ;CAC3C,MAAM;CACN,YAAY;CACZ,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"}
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.44.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.44.1",
51
- "@contractspec/lib.contracts": "1.44.1",
52
- "@contractspec/lib.bus": "1.44.1",
53
- "@contractspec/lib.identity-rbac": "1.44.1",
54
- "@contractspec/lib.jobs": "1.44.1",
55
- "@contractspec/module.audit-trail": "1.44.1",
56
- "@contractspec/module.notifications": "1.44.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.44.1",
61
- "@contractspec/tool.typescript": "1.44.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
- { key: 'crm.pipeline.kanban', version: 1, targets: ['react', 'markdown'] },
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
  };