@lssm/example.crm-pipeline 0.0.0-canary-20251213172311 → 0.0.0-canary-20251215220103

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.
@@ -1,30 +1,34 @@
1
1
  $ bun build:bundle && bun build:types
2
2
  $ tsdown
3
- ℹ tsdown v0.17.0 powered by rolldown v1.0.0-beta.53
3
+ ℹ tsdown v0.17.4 powered by rolldown v1.0.0-beta.53
4
4
  ℹ config file: /home/runner/work/contractspec/contractspec/packages/examples/crm-pipeline/tsdown.config.js
5
- ℹ entry: src/events.ts, src/example.ts, src/feature.ts, src/index.ts, src/contracts/deal.ts, src/contracts/index.ts, src/docs/crm-pipeline.docblock.ts, src/docs/index.ts, src/entities/company.ts, src/entities/contact.ts, src/entities/deal.ts, src/entities/index.ts, src/entities/task.ts, src/handlers/deal.handlers.ts, src/handlers/index.ts, src/handlers/mock-data.ts, src/presentations/dashboard.ts, src/presentations/index.ts, src/presentations/pipeline.ts
5
+ ℹ entry: src/events.ts, src/example.ts, src/feature.ts, src/index.ts, src/contracts/deal.contracts.ts, src/contracts/index.ts, src/docs/crm-pipeline.docblock.ts, src/docs/index.ts, src/entities/company.ts, src/entities/contact.ts, src/entities/deal.ts, src/entities/index.ts, src/entities/task.ts, src/events/contact.event.ts, src/events/deal.event.ts, src/events/index.ts, src/events/task.event.ts, src/handlers/deal.handlers.ts, src/handlers/index.ts, src/handlers/mock-data.ts, src/presentations/dashboard.ts, src/presentations/index.ts, src/presentations/pipeline.ts
6
6
  ℹ target: esnext
7
7
  ℹ tsconfig: tsconfig.json
8
8
  ℹ Build start
9
- ℹ dist/contracts/deal.js 5.38 kB │ gzip: 1.27 kB
10
- ℹ dist/index.js 3.58 kB │ gzip: 1.10 kB
9
+ ℹ dist/contracts/deal.contracts.js 5.38 kB │ gzip: 1.27 kB
10
+ ℹ dist/index.js 3.59 kB │ gzip: 1.10 kB
11
11
  ℹ dist/handlers/mock-data.js 3.36 kB │ gzip: 0.97 kB
12
12
  ℹ dist/docs/crm-pipeline.docblock.js 3.31 kB │ gzip: 1.36 kB
13
13
  ℹ dist/events.js 3.12 kB │ gzip: 0.69 kB
14
14
  ℹ dist/entities/deal.js 2.52 kB │ gzip: 0.87 kB
15
15
  ℹ dist/entities/task.js 2.35 kB │ gzip: 0.81 kB
16
+ ℹ dist/events/deal.event.js 2.07 kB │ gzip: 0.50 kB
16
17
  ℹ dist/handlers/deal.handlers.js 1.85 kB │ gzip: 0.78 kB
17
18
  ℹ dist/entities/contact.js 1.68 kB │ gzip: 0.70 kB
18
- ℹ dist/presentations/pipeline.js 1.48 kB │ gzip: 0.48 kB
19
+ ℹ dist/presentations/pipeline.js 1.49 kB │ gzip: 0.49 kB
19
20
  ℹ dist/feature.js 1.41 kB │ gzip: 0.44 kB
20
21
  ℹ dist/entities/company.js 1.35 kB │ gzip: 0.59 kB
21
- ℹ dist/contracts/index.js 0.79 kB │ gzip: 0.26 kB
22
+ ℹ dist/contracts/index.js 0.80 kB │ gzip: 0.27 kB
22
23
  ℹ dist/entities/index.js 0.77 kB │ gzip: 0.33 kB
23
24
  ℹ dist/presentations/dashboard.js 0.74 kB │ gzip: 0.33 kB
24
25
  ℹ dist/handlers/index.js 0.60 kB │ gzip: 0.25 kB
26
+ ℹ dist/events/contact.event.js 0.59 kB │ gzip: 0.30 kB
25
27
  ℹ dist/example.js 0.59 kB │ gzip: 0.36 kB
28
+ ℹ dist/events/task.event.js 0.58 kB │ gzip: 0.29 kB
26
29
  ℹ dist/presentations/index.js 0.47 kB │ gzip: 0.19 kB
30
+ ℹ dist/events/index.js 0.35 kB │ gzip: 0.17 kB
27
31
  ℹ dist/docs/index.js 0.04 kB │ gzip: 0.06 kB
28
- ℹ 19 files, total: 35.37 kB
29
- ✔ Build complete in 64ms
32
+ ℹ 23 files, total: 39.00 kB
33
+ ✔ Build complete in 68ms
30
34
  $ tsc --noEmit
package/CHANGELOG.md CHANGED
@@ -1,15 +1,15 @@
1
1
  # @lssm/example.crm-pipeline
2
2
 
3
- ## 0.0.0-canary-20251213172311
3
+ ## 0.0.0-canary-20251215220103
4
4
 
5
5
  ### Patch Changes
6
6
 
7
7
  - 3086383: refactor: dependencies upgrade
8
8
  - Updated dependencies [3086383]
9
- - @lssm/lib.contracts@0.0.0-canary-20251213172311
10
- - @lssm/lib.schema@0.0.0-canary-20251213172311
11
- - @lssm/lib.jobs@0.0.0-canary-20251213172311
12
- - @lssm/lib.bus@0.0.0-canary-20251213172311
13
- - @lssm/lib.identity-rbac@0.0.0-canary-20251213172311
14
- - @lssm/module.audit-trail@0.0.0-canary-20251213172311
15
- - @lssm/module.notifications@0.0.0-canary-20251213172311
9
+ - @lssm/lib.contracts@0.0.0-canary-20251215220103
10
+ - @lssm/lib.schema@0.0.0-canary-20251215220103
11
+ - @lssm/lib.jobs@0.0.0-canary-20251215220103
12
+ - @lssm/lib.bus@0.0.0-canary-20251215220103
13
+ - @lssm/lib.identity-rbac@0.0.0-canary-20251215220103
14
+ - @lssm/module.audit-trail@0.0.0-canary-20251215220103
15
+ - @lssm/module.notifications@0.0.0-canary-20251215220103
@@ -1 +1 @@
1
- import{CreateDealContract as e,CreateDealInputModel as t,DealLostPayloadModel as n,DealModel as r,DealMovedPayloadModel as i,DealStatusFilterEnum as a,DealWonPayloadModel as o,ListDealsContract as s,ListDealsInputModel as c,ListDealsOutputModel as l,LoseDealContract as u,LoseDealInputModel as d,MoveDealContract as f,MoveDealInputModel as p,WinDealContract as m,WinDealInputModel as h}from"./deal.js";export{e as CreateDealContract,t as CreateDealInputModel,n as DealLostPayloadModel,r as DealModel,i as DealMovedPayloadModel,a as DealStatusFilterEnum,o as DealWonPayloadModel,s as ListDealsContract,c as ListDealsInputModel,l as ListDealsOutputModel,u as LoseDealContract,d as LoseDealInputModel,f as MoveDealContract,p as MoveDealInputModel,m as WinDealContract,h as WinDealInputModel};
1
+ import{CreateDealContract as e,CreateDealInputModel as t,DealLostPayloadModel as n,DealModel as r,DealMovedPayloadModel as i,DealStatusFilterEnum as a,DealWonPayloadModel as o,ListDealsContract as s,ListDealsInputModel as c,ListDealsOutputModel as l,LoseDealContract as u,LoseDealInputModel as d,MoveDealContract as f,MoveDealInputModel as p,WinDealContract as m,WinDealInputModel as h}from"./deal.contracts.js";export{e as CreateDealContract,t as CreateDealInputModel,n as DealLostPayloadModel,r as DealModel,i as DealMovedPayloadModel,a as DealStatusFilterEnum,o as DealWonPayloadModel,s as ListDealsContract,c as ListDealsInputModel,l as ListDealsOutputModel,u as LoseDealContract,d as LoseDealInputModel,f as MoveDealContract,p as MoveDealInputModel,m as WinDealContract,h as WinDealInputModel};
@@ -0,0 +1 @@
1
+ import{ScalarTypeEnum as e,defineSchemaModel as t}from"@lssm/lib.schema";import{defineEvent as n}from"@lssm/lib.contracts";const r=n({name:`contact.created`,version:1,description:`A new contact has been created.`,payload:t({name:`ContactCreatedPayload`,description:`Payload when a contact is created`,fields:{contactId:{type:e.String_unsecure(),isOptional:!1},email:{type:e.EmailAddress(),isOptional:!0},organizationId:{type:e.String_unsecure(),isOptional:!1},ownerId:{type:e.String_unsecure(),isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}})});export{r as ContactCreatedEvent};
@@ -0,0 +1 @@
1
+ import{ScalarTypeEnum as e,defineSchemaModel as t}from"@lssm/lib.schema";import{defineEvent as n}from"@lssm/lib.contracts";const r=t({name:`DealCreatedPayload`,description:`Payload when a deal is created`,fields:{dealId:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},value:{type:e.Float_unsecure(),isOptional:!1},pipelineId:{type:e.String_unsecure(),isOptional:!1},stageId:{type:e.String_unsecure(),isOptional:!1},ownerId:{type:e.String_unsecure(),isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}}),i=t({name:`DealMovedEventPayload`,description:`Payload when a deal is moved to another stage`,fields:{dealId:{type:e.String_unsecure(),isOptional:!1},fromStageId:{type:e.String_unsecure(),isOptional:!1},toStageId:{type:e.String_unsecure(),isOptional:!1},movedBy:{type:e.String_unsecure(),isOptional:!1},movedAt:{type:e.DateTime(),isOptional:!1}}}),a=t({name:`DealWonEventPayload`,description:`Payload when a deal is won`,fields:{dealId:{type:e.String_unsecure(),isOptional:!1},value:{type:e.Float_unsecure(),isOptional:!1},currency:{type:e.String_unsecure(),isOptional:!1},contactId:{type:e.String_unsecure(),isOptional:!0},companyId:{type:e.String_unsecure(),isOptional:!0},ownerId:{type:e.String_unsecure(),isOptional:!1},wonAt:{type:e.DateTime(),isOptional:!1}}}),o=t({name:`DealLostEventPayload`,description:`Payload when a deal is lost`,fields:{dealId:{type:e.String_unsecure(),isOptional:!1},value:{type:e.Float_unsecure(),isOptional:!1},reason:{type:e.String_unsecure(),isOptional:!1},ownerId:{type:e.String_unsecure(),isOptional:!1},lostAt:{type:e.DateTime(),isOptional:!1}}}),s=n({name:`deal.created`,version:1,description:`A new deal has been created.`,payload:r}),c=n({name:`deal.moved`,version:1,description:`A deal has been moved to a different stage.`,payload:i}),l=n({name:`deal.won`,version:1,description:`A deal has been won.`,payload:a}),u=n({name:`deal.lost`,version:1,description:`A deal has been lost.`,payload:o});export{s as DealCreatedEvent,u as DealLostEvent,c as DealMovedEvent,l as DealWonEvent};
@@ -0,0 +1 @@
1
+ import{ContactCreatedEvent as e}from"./contact.event.js";import{DealCreatedEvent as t,DealLostEvent as n,DealMovedEvent as r,DealWonEvent as i}from"./deal.event.js";import{TaskCompletedEvent as a}from"./task.event.js";export{e as ContactCreatedEvent,t as DealCreatedEvent,n as DealLostEvent,r as DealMovedEvent,i as DealWonEvent,a as TaskCompletedEvent};
@@ -0,0 +1 @@
1
+ import{ScalarTypeEnum as e,defineSchemaModel as t}from"@lssm/lib.schema";import{defineEvent as n}from"@lssm/lib.contracts";const r=n({name:`task.completed`,version:1,description:`A task has been completed.`,payload:t({name:`TaskCompletedPayload`,description:`Payload when a task is completed`,fields:{taskId:{type:e.String_unsecure(),isOptional:!1},type:{type:e.String_unsecure(),isOptional:!1},assignedTo:{type:e.String_unsecure(),isOptional:!1},completedBy:{type:e.String_unsecure(),isOptional:!1},completedAt:{type:e.DateTime(),isOptional:!1}}})});export{r as TaskCompletedEvent};
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{ContactCreatedEvent as e,CrmPipelineEvents as t,DealCreatedEvent as n,DealLostEvent as r,DealMovedEvent as i,DealWonEvent as a,TaskCompletedEvent as o}from"./events.js";import s from"./example.js";import{CrmPipelineFeature as c}from"./feature.js";import{ContactEntity as l,ContactStatusEnum as u}from"./entities/contact.js";import{CompanyEntity as d,CompanySizeEnum as f}from"./entities/company.js";import{DealEntity as p,DealStatusEnum as m,PipelineEntity as h,StageEntity as g}from"./entities/deal.js";import{ActivityEntity as _,TaskEntity as v,TaskPriorityEnum as y,TaskStatusEnum as b,TaskTypeEnum as x}from"./entities/task.js";import{crmPipelineEntities as S,crmPipelineSchemaContribution as C}from"./entities/index.js";import{CreateDealContract as w,CreateDealInputModel as T,DealLostPayloadModel as E,DealModel as D,DealMovedPayloadModel as O,DealStatusFilterEnum as k,DealWonPayloadModel as ee,ListDealsContract as A,ListDealsInputModel as j,ListDealsOutputModel as M,LoseDealContract as N,LoseDealInputModel as P,MoveDealContract as F,MoveDealInputModel as I,WinDealContract as L,WinDealInputModel as R}from"./contracts/deal.js";import"./contracts/index.js";import{MOCK_COMPANIES as z,MOCK_CONTACTS as B,MOCK_DEALS as V,MOCK_STAGES as H}from"./handlers/mock-data.js";import{mockCreateDealHandler as U,mockGetDealsByStageHandler as W,mockGetPipelineStagesHandler as G,mockListDealsHandler as K,mockLoseDealHandler as q,mockMoveDealHandler as J,mockWinDealHandler as Y}from"./handlers/deal.handlers.js";import{DealCardPresentation as X,DealDetailPresentation as Z,DealListPresentation as Q,PipelineKanbanPresentation as $}from"./presentations/pipeline.js";import{CrmDashboardPresentation as te,PipelineMetricsPresentation as ne}from"./presentations/dashboard.js";import{CrmPipelinePresentations as re}from"./presentations/index.js";import"./docs/index.js";import{identityRbacSchemaContribution as ie}from"@lssm/lib.identity-rbac";import{auditTrailSchemaContribution as ae}from"@lssm/module.audit-trail";import{notificationsSchemaContribution as oe}from"@lssm/module.notifications";const se={modules:[ie,ae,oe,C],provider:`postgresql`,outputPath:`./prisma/schema/generated.prisma`};export{_ as ActivityEntity,d as CompanyEntity,f as CompanySizeEnum,e as ContactCreatedEvent,l as ContactEntity,u as ContactStatusEnum,w as CreateDealContract,T as CreateDealInputModel,te as CrmDashboardPresentation,t as CrmPipelineEvents,c as CrmPipelineFeature,re as CrmPipelinePresentations,X as DealCardPresentation,n as DealCreatedEvent,Z as DealDetailPresentation,p as DealEntity,Q as DealListPresentation,r as DealLostEvent,E as DealLostPayloadModel,D as DealModel,i as DealMovedEvent,O as DealMovedPayloadModel,m as DealStatusEnum,k as DealStatusFilterEnum,a as DealWonEvent,ee as DealWonPayloadModel,A as ListDealsContract,j as ListDealsInputModel,M as ListDealsOutputModel,N as LoseDealContract,P as LoseDealInputModel,z as MOCK_COMPANIES,B as MOCK_CONTACTS,V as MOCK_DEALS,H as MOCK_STAGES,F as MoveDealContract,I as MoveDealInputModel,h as PipelineEntity,$ as PipelineKanbanPresentation,ne as PipelineMetricsPresentation,g as StageEntity,o as TaskCompletedEvent,v as TaskEntity,y as TaskPriorityEnum,b as TaskStatusEnum,x as TaskTypeEnum,L as WinDealContract,R as WinDealInputModel,S as crmPipelineEntities,C as crmPipelineSchemaContribution,s as example,U as mockCreateDealHandler,W as mockGetDealsByStageHandler,G as mockGetPipelineStagesHandler,K as mockListDealsHandler,q as mockLoseDealHandler,J as mockMoveDealHandler,Y as mockWinDealHandler,se as schemaComposition};
1
+ import{ContactCreatedEvent as e,CrmPipelineEvents as t,DealCreatedEvent as n,DealLostEvent as r,DealMovedEvent as i,DealWonEvent as a,TaskCompletedEvent as o}from"./events.js";import s from"./example.js";import{CrmPipelineFeature as c}from"./feature.js";import{ContactEntity as l,ContactStatusEnum as u}from"./entities/contact.js";import{CompanyEntity as d,CompanySizeEnum as f}from"./entities/company.js";import{DealEntity as p,DealStatusEnum as m,PipelineEntity as h,StageEntity as g}from"./entities/deal.js";import{ActivityEntity as _,TaskEntity as v,TaskPriorityEnum as y,TaskStatusEnum as b,TaskTypeEnum as x}from"./entities/task.js";import{crmPipelineEntities as S,crmPipelineSchemaContribution as C}from"./entities/index.js";import{CreateDealContract as w,CreateDealInputModel as T,DealLostPayloadModel as E,DealModel as D,DealMovedPayloadModel as O,DealStatusFilterEnum as k,DealWonPayloadModel as ee,ListDealsContract as A,ListDealsInputModel as j,ListDealsOutputModel as M,LoseDealContract as N,LoseDealInputModel as P,MoveDealContract as F,MoveDealInputModel as I,WinDealContract as L,WinDealInputModel as R}from"./contracts/deal.contracts.js";import"./contracts/index.js";import{MOCK_COMPANIES as z,MOCK_CONTACTS as B,MOCK_DEALS as V,MOCK_STAGES as H}from"./handlers/mock-data.js";import{mockCreateDealHandler as U,mockGetDealsByStageHandler as W,mockGetPipelineStagesHandler as G,mockListDealsHandler as K,mockLoseDealHandler as q,mockMoveDealHandler as J,mockWinDealHandler as Y}from"./handlers/deal.handlers.js";import{DealCardPresentation as X,DealDetailPresentation as Z,DealListPresentation as Q,PipelineKanbanPresentation as $}from"./presentations/pipeline.js";import{CrmDashboardPresentation as te,PipelineMetricsPresentation as ne}from"./presentations/dashboard.js";import{CrmPipelinePresentations as re}from"./presentations/index.js";import"./docs/index.js";import{identityRbacSchemaContribution as ie}from"@lssm/lib.identity-rbac";import{auditTrailSchemaContribution as ae}from"@lssm/module.audit-trail";import{notificationsSchemaContribution as oe}from"@lssm/module.notifications";const se={modules:[ie,ae,oe,C],provider:`postgresql`,outputPath:`./prisma/schema/generated.prisma`};export{_ as ActivityEntity,d as CompanyEntity,f as CompanySizeEnum,e as ContactCreatedEvent,l as ContactEntity,u as ContactStatusEnum,w as CreateDealContract,T as CreateDealInputModel,te as CrmDashboardPresentation,t as CrmPipelineEvents,c as CrmPipelineFeature,re as CrmPipelinePresentations,X as DealCardPresentation,n as DealCreatedEvent,Z as DealDetailPresentation,p as DealEntity,Q as DealListPresentation,r as DealLostEvent,E as DealLostPayloadModel,D as DealModel,i as DealMovedEvent,O as DealMovedPayloadModel,m as DealStatusEnum,k as DealStatusFilterEnum,a as DealWonEvent,ee as DealWonPayloadModel,A as ListDealsContract,j as ListDealsInputModel,M as ListDealsOutputModel,N as LoseDealContract,P as LoseDealInputModel,z as MOCK_COMPANIES,B as MOCK_CONTACTS,V as MOCK_DEALS,H as MOCK_STAGES,F as MoveDealContract,I as MoveDealInputModel,h as PipelineEntity,$ as PipelineKanbanPresentation,ne as PipelineMetricsPresentation,g as StageEntity,o as TaskCompletedEvent,v as TaskEntity,y as TaskPriorityEnum,b as TaskStatusEnum,x as TaskTypeEnum,L as WinDealContract,R as WinDealInputModel,S as crmPipelineEntities,C as crmPipelineSchemaContribution,s as example,U as mockCreateDealHandler,W as mockGetDealsByStageHandler,G as mockGetPipelineStagesHandler,K as mockListDealsHandler,q as mockLoseDealHandler,J as mockMoveDealHandler,Y as mockWinDealHandler,se as schemaComposition};
@@ -1 +1 @@
1
- import{DealModel as e}from"../contracts/deal.js";const t={meta:{name:`crm.pipeline.kanban`,version:1,description:`Kanban board view of deals organized by stage`,domain:`crm-pipeline`,owners:[`crm-team`],tags:[`pipeline`,`kanban`,`deals`]},source:{type:`component`,framework:`react`,componentKey:`PipelineKanbanView`,props:e},targets:[`react`,`markdown`],policy:{flags:[`crm.pipeline.enabled`]}},n={meta:{name:`crm.deal.list`,version:1,description:`List view of deals with value, status, and owner info`,domain:`crm-pipeline`,owners:[`crm-team`],tags:[`deal`,`list`]},source:{type:`component`,framework:`react`,componentKey:`DealListView`,props:e},targets:[`react`,`markdown`,`application/json`],policy:{flags:[`crm.deals.enabled`]}},r={meta:{name:`crm.deal.detail`,version:1,description:`Detailed view of a deal with activities, contacts, and history`,domain:`crm-pipeline`,owners:[`crm-team`],tags:[`deal`,`detail`]},source:{type:`component`,framework:`react`,componentKey:`DealDetailView`},targets:[`react`,`markdown`],policy:{flags:[`crm.deals.enabled`]}},i={meta:{name:`crm.deal.card`,version:1,description:`Compact deal card for kanban board display`,domain:`crm-pipeline`,owners:[`crm-team`],tags:[`deal`,`card`,`kanban`]},source:{type:`component`,framework:`react`,componentKey:`DealCard`,props:e},targets:[`react`],policy:{flags:[`crm.deals.enabled`]}};export{i as DealCardPresentation,r as DealDetailPresentation,n as DealListPresentation,t as PipelineKanbanPresentation};
1
+ import{DealModel as e}from"../contracts/deal.contracts.js";const t={meta:{name:`crm.pipeline.kanban`,version:1,description:`Kanban board view of deals organized by stage`,domain:`crm-pipeline`,owners:[`crm-team`],tags:[`pipeline`,`kanban`,`deals`]},source:{type:`component`,framework:`react`,componentKey:`PipelineKanbanView`,props:e},targets:[`react`,`markdown`],policy:{flags:[`crm.pipeline.enabled`]}},n={meta:{name:`crm.deal.list`,version:1,description:`List view of deals with value, status, and owner info`,domain:`crm-pipeline`,owners:[`crm-team`],tags:[`deal`,`list`]},source:{type:`component`,framework:`react`,componentKey:`DealListView`,props:e},targets:[`react`,`markdown`,`application/json`],policy:{flags:[`crm.deals.enabled`]}},r={meta:{name:`crm.deal.detail`,version:1,description:`Detailed view of a deal with activities, contacts, and history`,domain:`crm-pipeline`,owners:[`crm-team`],tags:[`deal`,`detail`]},source:{type:`component`,framework:`react`,componentKey:`DealDetailView`},targets:[`react`,`markdown`],policy:{flags:[`crm.deals.enabled`]}},i={meta:{name:`crm.deal.card`,version:1,description:`Compact deal card for kanban board display`,domain:`crm-pipeline`,owners:[`crm-team`],tags:[`deal`,`card`,`kanban`]},source:{type:`component`,framework:`react`,componentKey:`DealCard`,props:e},targets:[`react`],policy:{flags:[`crm.deals.enabled`]}};export{i as DealCardPresentation,r as DealDetailPresentation,n as DealListPresentation,t as PipelineKanbanPresentation};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lssm/example.crm-pipeline",
3
- "version": "0.0.0-canary-20251213172311",
3
+ "version": "0.0.0-canary-20251215220103",
4
4
  "description": "CRM Pipeline - Contacts, Companies, Deals, Tasks",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -8,7 +8,7 @@
8
8
  "exports": {
9
9
  ".": "./src/index.ts",
10
10
  "./contracts": "./src/contracts/index.ts",
11
- "./contracts/deal": "./src/contracts/deal.ts",
11
+ "./contracts/deal.contracts": "./src/contracts/deal.contracts.ts",
12
12
  "./docs": "./src/docs/index.ts",
13
13
  "./docs/crm-pipeline.docblock": "./src/docs/crm-pipeline.docblock.ts",
14
14
  "./entities": "./src/entities/index.ts",
@@ -17,6 +17,9 @@
17
17
  "./entities/deal": "./src/entities/deal.ts",
18
18
  "./entities/task": "./src/entities/task.ts",
19
19
  "./events": "./src/events.ts",
20
+ "./events/contact.event": "./src/events/contact.event.ts",
21
+ "./events/deal.event": "./src/events/deal.event.ts",
22
+ "./events/task.event": "./src/events/task.event.ts",
20
23
  "./example": "./src/example.ts",
21
24
  "./feature": "./src/feature.ts",
22
25
  "./handlers": "./src/handlers/index.ts",
@@ -51,7 +54,7 @@
51
54
  "devDependencies": {
52
55
  "@lssm/tool.tsdown": "workspace:*",
53
56
  "@lssm/tool.typescript": "workspace:*",
54
- "tsdown": "^0.17.0",
57
+ "tsdown": "^0.17.4",
55
58
  "typescript": "^5.9.3"
56
59
  },
57
60
  "module": "./dist/index.js",
@@ -59,7 +62,7 @@
59
62
  "exports": {
60
63
  ".": "./dist/index.js",
61
64
  "./contracts": "./dist/contracts/index.js",
62
- "./contracts/deal": "./dist/contracts/deal.js",
65
+ "./contracts/deal.contracts": "./dist/contracts/deal.contracts.js",
63
66
  "./docs": "./dist/docs/index.js",
64
67
  "./docs/crm-pipeline.docblock": "./dist/docs/crm-pipeline.docblock.js",
65
68
  "./entities": "./dist/entities/index.js",
@@ -67,7 +70,10 @@
67
70
  "./entities/contact": "./dist/entities/contact.js",
68
71
  "./entities/deal": "./dist/entities/deal.js",
69
72
  "./entities/task": "./dist/entities/task.js",
70
- "./events": "./dist/events.js",
73
+ "./events": "./dist/events/index.js",
74
+ "./events/contact.event": "./dist/events/contact.event.js",
75
+ "./events/deal.event": "./dist/events/deal.event.js",
76
+ "./events/task.event": "./dist/events/task.event.js",
71
77
  "./example": "./dist/example.js",
72
78
  "./feature": "./dist/feature.js",
73
79
  "./handlers": "./dist/handlers/index.js",
@@ -16,4 +16,4 @@ export {
16
16
  WinDealContract,
17
17
  LoseDealContract,
18
18
  ListDealsContract,
19
- } from './deal';
19
+ } from './deal.contracts';
@@ -0,0 +1,26 @@
1
+ import { ScalarTypeEnum, defineSchemaModel } from '@lssm/lib.schema';
2
+ import { defineEvent } from '@lssm/lib.contracts';
3
+
4
+ // ============ Contact Event Payloads ============
5
+
6
+ const ContactCreatedPayload = defineSchemaModel({
7
+ name: 'ContactCreatedPayload',
8
+ description: 'Payload when a contact is created',
9
+ fields: {
10
+ contactId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
11
+ email: { type: ScalarTypeEnum.EmailAddress(), isOptional: true },
12
+ organizationId: {
13
+ type: ScalarTypeEnum.String_unsecure(),
14
+ isOptional: false,
15
+ },
16
+ ownerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
17
+ createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },
18
+ },
19
+ });
20
+
21
+ export const ContactCreatedEvent = defineEvent({
22
+ name: 'contact.created',
23
+ version: 1,
24
+ description: 'A new contact has been created.',
25
+ payload: ContactCreatedPayload,
26
+ });
@@ -0,0 +1,84 @@
1
+ import { ScalarTypeEnum, defineSchemaModel } from '@lssm/lib.schema';
2
+ import { defineEvent } from '@lssm/lib.contracts';
3
+
4
+ // ============ Deal Event Payloads ============
5
+
6
+ const DealCreatedPayload = defineSchemaModel({
7
+ name: 'DealCreatedPayload',
8
+ description: 'Payload when a deal is created',
9
+ fields: {
10
+ dealId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
11
+ name: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
12
+ value: { type: ScalarTypeEnum.Float_unsecure(), isOptional: false },
13
+ pipelineId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
14
+ stageId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
15
+ ownerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
16
+ createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },
17
+ },
18
+ });
19
+
20
+ const DealMovedPayload = defineSchemaModel({
21
+ name: 'DealMovedEventPayload',
22
+ description: 'Payload when a deal is moved to another stage',
23
+ fields: {
24
+ dealId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
25
+ fromStageId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
26
+ toStageId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
27
+ movedBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
28
+ movedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },
29
+ },
30
+ });
31
+
32
+ const DealWonPayload = defineSchemaModel({
33
+ name: 'DealWonEventPayload',
34
+ description: 'Payload when a deal is won',
35
+ fields: {
36
+ dealId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
37
+ value: { type: ScalarTypeEnum.Float_unsecure(), isOptional: false },
38
+ currency: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
39
+ contactId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
40
+ companyId: { type: ScalarTypeEnum.String_unsecure(), isOptional: true },
41
+ ownerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
42
+ wonAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },
43
+ },
44
+ });
45
+
46
+ const DealLostPayload = defineSchemaModel({
47
+ name: 'DealLostEventPayload',
48
+ description: 'Payload when a deal is lost',
49
+ fields: {
50
+ dealId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
51
+ value: { type: ScalarTypeEnum.Float_unsecure(), isOptional: false },
52
+ reason: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
53
+ ownerId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
54
+ lostAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },
55
+ },
56
+ });
57
+
58
+ export const DealCreatedEvent = defineEvent({
59
+ name: 'deal.created',
60
+ version: 1,
61
+ description: 'A new deal has been created.',
62
+ payload: DealCreatedPayload,
63
+ });
64
+
65
+ export const DealMovedEvent = defineEvent({
66
+ name: 'deal.moved',
67
+ version: 1,
68
+ description: 'A deal has been moved to a different stage.',
69
+ payload: DealMovedPayload,
70
+ });
71
+
72
+ export const DealWonEvent = defineEvent({
73
+ name: 'deal.won',
74
+ version: 1,
75
+ description: 'A deal has been won.',
76
+ payload: DealWonPayload,
77
+ });
78
+
79
+ export const DealLostEvent = defineEvent({
80
+ name: 'deal.lost',
81
+ version: 1,
82
+ description: 'A deal has been lost.',
83
+ payload: DealLostPayload,
84
+ });
@@ -0,0 +1,3 @@
1
+ export * from './contact.event';
2
+ export * from './deal.event';
3
+ export * from './task.event';
@@ -0,0 +1,23 @@
1
+ import { ScalarTypeEnum, defineSchemaModel } from '@lssm/lib.schema';
2
+ import { defineEvent } from '@lssm/lib.contracts';
3
+
4
+ // ============ Task Event Payloads ============
5
+
6
+ const TaskCompletedPayload = defineSchemaModel({
7
+ name: 'TaskCompletedPayload',
8
+ description: 'Payload when a task is completed',
9
+ fields: {
10
+ taskId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
11
+ type: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
12
+ assignedTo: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
13
+ completedBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
14
+ completedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },
15
+ },
16
+ });
17
+
18
+ export const TaskCompletedEvent = defineEvent({
19
+ name: 'task.completed',
20
+ version: 1,
21
+ description: 'A task has been completed.',
22
+ payload: TaskCompletedPayload,
23
+ });
package/src/example.ts CHANGED
@@ -18,12 +18,13 @@ const example = {
18
18
  },
19
19
  surfaces: {
20
20
  templates: true,
21
- sandbox: { enabled: true, modes: ['playground', 'specs', 'builder', 'markdown', 'evolution'] },
21
+ sandbox: {
22
+ enabled: true,
23
+ modes: ['playground', 'specs', 'builder', 'markdown', 'evolution'],
24
+ },
22
25
  studio: { enabled: true, installable: true },
23
26
  mcp: { enabled: true },
24
27
  },
25
28
  } as const;
26
29
 
27
30
  export default example;
28
-
29
-
@@ -2,7 +2,7 @@
2
2
  * Pipeline Presentation Descriptors
3
3
  */
4
4
  import type { PresentationDescriptorV2 } from '@lssm/lib.contracts';
5
- import { DealModel } from '../contracts/deal';
5
+ import { DealModel } from '../contracts/deal.contracts';
6
6
 
7
7
  /**
8
8
  * Kanban board presentation for the sales pipeline.