@pattern-stack/codegen 0.16.0 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/CHANGELOG.md +93 -0
  2. package/consumer-skills/entities/families-and-queries.md +5 -3
  3. package/consumer-skills/integration/change-sources-and-sinks.md +1 -1
  4. package/dist/{chunk-3RWMQC3K.js → chunk-3MAZ4TQH.js} +12 -12
  5. package/dist/{chunk-VNBC3VXM.js → chunk-3VEVGL74.js} +4 -4
  6. package/dist/{chunk-WWGYCIJX.js → chunk-43SBT72G.js} +2 -2
  7. package/dist/{chunk-Y7GDG744.js → chunk-4GLNY5V6.js} +5 -5
  8. package/dist/{chunk-BK5ICA2F.js → chunk-4MVGAMUA.js} +4 -4
  9. package/dist/{chunk-3NMCDN7L.js → chunk-5TK7MEN4.js} +2 -2
  10. package/dist/chunk-5TK7MEN4.js.map +1 -0
  11. package/dist/{chunk-T6SCOJF4.js → chunk-7LKAMLV4.js} +4 -4
  12. package/dist/{chunk-BHZP6LOV.js → chunk-CDLWYZVQ.js} +7 -7
  13. package/dist/{chunk-DKKFTHHI.js → chunk-CZQUOIDY.js} +4 -4
  14. package/dist/{chunk-XWBK3XJK.js → chunk-DCCZB4UC.js} +4 -4
  15. package/dist/{chunk-EBKVKN75.js → chunk-DTXH24LR.js} +2 -2
  16. package/dist/{chunk-RUYLXR5F.js → chunk-GJDEPTPY.js} +10 -10
  17. package/dist/{chunk-32DOFN3T.js → chunk-IOQMMH6C.js} +17 -7
  18. package/dist/{chunk-32DOFN3T.js.map → chunk-IOQMMH6C.js.map} +1 -1
  19. package/dist/{chunk-BOPZWRJK.js → chunk-JYBFPNBJ.js} +8 -8
  20. package/dist/chunk-JYBFPNBJ.js.map +1 -0
  21. package/dist/{chunk-KSTZIULO.js → chunk-K2I6XIK5.js} +4 -4
  22. package/dist/{chunk-CEWLVVAH.js → chunk-L3VJ47BU.js} +5 -5
  23. package/dist/chunk-MKWQKKK7.js +72 -0
  24. package/dist/chunk-MKWQKKK7.js.map +1 -0
  25. package/dist/{chunk-DRCLNYH7.js → chunk-NXNVTXKG.js} +4 -4
  26. package/dist/{chunk-TDEHU73T.js → chunk-OGIZXGPY.js} +4 -4
  27. package/dist/{chunk-XDIIVIIK.js → chunk-OITTYGJS.js} +4 -4
  28. package/dist/{chunk-24WXSC3C.js → chunk-P3AYBRP6.js} +7 -7
  29. package/dist/{chunk-EJBK7I4F.js → chunk-RHYNACZS.js} +3 -3
  30. package/dist/{chunk-YK5JEVLX.js → chunk-SR7F3TJY.js} +4 -4
  31. package/dist/{chunk-YLPAPPLW.js → chunk-TIZXQU26.js} +36 -9
  32. package/dist/chunk-TIZXQU26.js.map +1 -0
  33. package/dist/{chunk-4PFF3ED4.js → chunk-UTNWFHJF.js} +4 -4
  34. package/dist/{chunk-LQ6PYFU6.js → chunk-Z7PQCAVK.js} +4 -4
  35. package/dist/runtime/base-classes/activity-entity-repository.d.ts +39 -7
  36. package/dist/runtime/base-classes/activity-entity-repository.js +1 -1
  37. package/dist/runtime/base-classes/activity-entity-service.d.ts +12 -10
  38. package/dist/runtime/base-classes/activity-entity-service.js +1 -1
  39. package/dist/runtime/base-classes/index.js +23 -23
  40. package/dist/runtime/shared/openapi/index.js +7 -7
  41. package/dist/runtime/shared/openapi/registry.js +2 -2
  42. package/dist/runtime/subsystems/analytics/analytics.module.js +2 -2
  43. package/dist/runtime/subsystems/analytics/index.js +4 -4
  44. package/dist/runtime/subsystems/auth/auth.module.js +3 -3
  45. package/dist/runtime/subsystems/auth/index.js +7 -7
  46. package/dist/runtime/subsystems/bridge/bridge-delivery-handler.js +2 -2
  47. package/dist/runtime/subsystems/bridge/bridge-delivery.drizzle-backend.js +2 -2
  48. package/dist/runtime/subsystems/bridge/bridge-outbox-drain-hook.js +4 -4
  49. package/dist/runtime/subsystems/bridge/bridge.module.js +15 -15
  50. package/dist/runtime/subsystems/bridge/index.js +17 -17
  51. package/dist/runtime/subsystems/cache/cache.module.js +1 -1
  52. package/dist/runtime/subsystems/cache/index.js +3 -3
  53. package/dist/runtime/subsystems/events/event-bus.drizzle-backend.js +2 -2
  54. package/dist/runtime/subsystems/events/event-bus.memory-backend.js +2 -2
  55. package/dist/runtime/subsystems/events/events.module.js +4 -4
  56. package/dist/runtime/subsystems/events/index.js +4 -4
  57. package/dist/runtime/subsystems/index.js +107 -107
  58. package/dist/runtime/subsystems/integration/build-change-source.js +2 -2
  59. package/dist/runtime/subsystems/integration/detection-config.schema.d.ts +23 -15
  60. package/dist/runtime/subsystems/integration/detection-config.schema.js +1 -1
  61. package/dist/runtime/subsystems/integration/execute-integration.use-case.js +2 -2
  62. package/dist/runtime/subsystems/integration/index.js +43 -43
  63. package/dist/runtime/subsystems/integration/integration-cursor-store.drizzle-backend.js +2 -2
  64. package/dist/runtime/subsystems/integration/integration-run-recorder.drizzle-backend.js +2 -2
  65. package/dist/runtime/subsystems/integration/integration.module.js +5 -5
  66. package/dist/runtime/subsystems/integration/webhook-change-source.d.ts +36 -6
  67. package/dist/runtime/subsystems/integration/webhook-change-source.js +1 -1
  68. package/dist/runtime/subsystems/jobs/index.js +30 -30
  69. package/dist/runtime/subsystems/jobs/job-orchestrator.bullmq-backend.js +4 -4
  70. package/dist/runtime/subsystems/jobs/job-orchestrator.memory-backend.js +1 -1
  71. package/dist/runtime/subsystems/jobs/job-run-service.drizzle-backend.js +2 -2
  72. package/dist/runtime/subsystems/jobs/job-run-service.memory-backend.js +2 -2
  73. package/dist/runtime/subsystems/jobs/job-worker.js +2 -2
  74. package/dist/runtime/subsystems/jobs/job-worker.module.js +10 -10
  75. package/dist/runtime/subsystems/jobs/jobs-domain.module.js +8 -8
  76. package/dist/runtime/subsystems/storage/index.js +4 -4
  77. package/dist/runtime/subsystems/storage/storage.module.js +2 -2
  78. package/dist/src/cli/index.js +15 -15
  79. package/dist/src/index.d.ts +34 -19
  80. package/dist/src/index.js +14 -14
  81. package/package.json +2 -1
  82. package/runtime/base-classes/activity-entity-repository.ts +72 -13
  83. package/runtime/base-classes/activity-entity-service.ts +14 -12
  84. package/runtime/subsystems/integration/detection-config.schema.ts +64 -54
  85. package/runtime/subsystems/integration/webhook-change-source.ts +187 -133
  86. package/src/patterns/library/activity.pattern.ts +40 -10
  87. package/dist/chunk-3NMCDN7L.js.map +0 -1
  88. package/dist/chunk-BOPZWRJK.js.map +0 -1
  89. package/dist/chunk-XCEI7NUH.js +0 -41
  90. package/dist/chunk-XCEI7NUH.js.map +0 -1
  91. package/dist/chunk-YLPAPPLW.js.map +0 -1
  92. /package/dist/{chunk-3RWMQC3K.js.map → chunk-3MAZ4TQH.js.map} +0 -0
  93. /package/dist/{chunk-VNBC3VXM.js.map → chunk-3VEVGL74.js.map} +0 -0
  94. /package/dist/{chunk-WWGYCIJX.js.map → chunk-43SBT72G.js.map} +0 -0
  95. /package/dist/{chunk-Y7GDG744.js.map → chunk-4GLNY5V6.js.map} +0 -0
  96. /package/dist/{chunk-BK5ICA2F.js.map → chunk-4MVGAMUA.js.map} +0 -0
  97. /package/dist/{chunk-T6SCOJF4.js.map → chunk-7LKAMLV4.js.map} +0 -0
  98. /package/dist/{chunk-BHZP6LOV.js.map → chunk-CDLWYZVQ.js.map} +0 -0
  99. /package/dist/{chunk-DKKFTHHI.js.map → chunk-CZQUOIDY.js.map} +0 -0
  100. /package/dist/{chunk-XWBK3XJK.js.map → chunk-DCCZB4UC.js.map} +0 -0
  101. /package/dist/{chunk-EBKVKN75.js.map → chunk-DTXH24LR.js.map} +0 -0
  102. /package/dist/{chunk-RUYLXR5F.js.map → chunk-GJDEPTPY.js.map} +0 -0
  103. /package/dist/{chunk-KSTZIULO.js.map → chunk-K2I6XIK5.js.map} +0 -0
  104. /package/dist/{chunk-CEWLVVAH.js.map → chunk-L3VJ47BU.js.map} +0 -0
  105. /package/dist/{chunk-DRCLNYH7.js.map → chunk-NXNVTXKG.js.map} +0 -0
  106. /package/dist/{chunk-TDEHU73T.js.map → chunk-OGIZXGPY.js.map} +0 -0
  107. /package/dist/{chunk-XDIIVIIK.js.map → chunk-OITTYGJS.js.map} +0 -0
  108. /package/dist/{chunk-24WXSC3C.js.map → chunk-P3AYBRP6.js.map} +0 -0
  109. /package/dist/{chunk-EJBK7I4F.js.map → chunk-RHYNACZS.js.map} +0 -0
  110. /package/dist/{chunk-YK5JEVLX.js.map → chunk-SR7F3TJY.js.map} +0 -0
  111. /package/dist/{chunk-4PFF3ED4.js.map → chunk-UTNWFHJF.js.map} +0 -0
  112. /package/dist/{chunk-LQ6PYFU6.js.map → chunk-Z7PQCAVK.js.map} +0 -0
@@ -2,7 +2,7 @@ import "../../../chunk-W4HOHZVF.js";
2
2
  import {
3
3
  JobWorkerModule,
4
4
  JobWorkerOrchestrator
5
- } from "../../../chunk-RUYLXR5F.js";
5
+ } from "../../../chunk-GJDEPTPY.js";
6
6
  import {
7
7
  JOB_WORKER_OPTIONS,
8
8
  JobWorker,
@@ -10,41 +10,29 @@ import {
10
10
  buildStaleSweepQuery,
11
11
  classifyError,
12
12
  computeBackoff
13
- } from "../../../chunk-XDIIVIIK.js";
13
+ } from "../../../chunk-OITTYGJS.js";
14
14
  import {
15
15
  JobsDomainModule
16
- } from "../../../chunk-3RWMQC3K.js";
17
- import {
18
- DrizzleJobStepService
19
- } from "../../../chunk-DV4RV2DC.js";
20
- import {
21
- DrizzleJobOrchestrator
22
- } from "../../../chunk-OTR44OH6.js";
16
+ } from "../../../chunk-3MAZ4TQH.js";
23
17
  import {
24
18
  MemoryJobOrchestrator
25
19
  } from "../../../chunk-BULPAAD3.js";
26
- import {
27
- MemoryJobStepService
28
- } from "../../../chunk-PNZSGAB2.js";
29
20
  import {
30
21
  DrizzleJobRunService
31
- } from "../../../chunk-VNBC3VXM.js";
22
+ } from "../../../chunk-3VEVGL74.js";
32
23
  import {
33
24
  MemoryJobRunService
34
- } from "../../../chunk-BHZP6LOV.js";
25
+ } from "../../../chunk-CDLWYZVQ.js";
26
+ import "../../../chunk-L3LZWWSX.js";
27
+ import {
28
+ DrizzleJobStepService
29
+ } from "../../../chunk-DV4RV2DC.js";
30
+ import {
31
+ MemoryJobStepService
32
+ } from "../../../chunk-PNZSGAB2.js";
35
33
  import {
36
34
  MemoryJobStore
37
35
  } from "../../../chunk-SNQ3TOWP.js";
38
- import {
39
- BootValidationError,
40
- JobCollisionError,
41
- JobNotReplayableError,
42
- JobTemplateFieldMissingError,
43
- JobTypeNotFoundError,
44
- MissingTenantIdError,
45
- ReservedPoolViolationError
46
- } from "../../../chunk-T4BIIU5E.js";
47
- import "../../../chunk-L3LZWWSX.js";
48
36
  import {
49
37
  BULLMQ_CONNECTION,
50
38
  BULLMQ_RESOLVED_CONFIG,
@@ -59,12 +47,17 @@ import {
59
47
  loadPoolConfig
60
48
  } from "../../../chunk-RHVN6NA7.js";
61
49
  import {
62
- JOBS_LISTEN_NOTIFY,
63
- JOBS_MULTI_TENANT,
64
- JOB_ORCHESTRATOR,
65
- JOB_RUN_SERVICE,
66
- JOB_STEP_SERVICE
67
- } from "../../../chunk-ZPL74UQN.js";
50
+ DrizzleJobOrchestrator
51
+ } from "../../../chunk-OTR44OH6.js";
52
+ import {
53
+ BootValidationError,
54
+ JobCollisionError,
55
+ JobNotReplayableError,
56
+ JobTemplateFieldMissingError,
57
+ JobTypeNotFoundError,
58
+ MissingTenantIdError,
59
+ ReservedPoolViolationError
60
+ } from "../../../chunk-T4BIIU5E.js";
68
61
  import {
69
62
  HandlerRegistry,
70
63
  JOB_HANDLER_METADATA_KEY,
@@ -73,6 +66,13 @@ import {
73
66
  JobHandlerBase,
74
67
  ParentClosePolicy
75
68
  } from "../../../chunk-CO6LUM72.js";
69
+ import {
70
+ JOBS_LISTEN_NOTIFY,
71
+ JOBS_MULTI_TENANT,
72
+ JOB_ORCHESTRATOR,
73
+ JOB_RUN_SERVICE,
74
+ JOB_STEP_SERVICE
75
+ } from "../../../chunk-ZPL74UQN.js";
76
76
  import {
77
77
  collisionModeEnum,
78
78
  jobRunStatusEnum,
@@ -1,13 +1,13 @@
1
- import {
2
- DrizzleJobOrchestrator
3
- } from "../../../chunk-OTR44OH6.js";
4
- import "../../../chunk-T4BIIU5E.js";
5
1
  import {
6
2
  BULLMQ_CONNECTION,
7
3
  BULLMQ_RESOLVED_CONFIG,
8
4
  resolvePoolQueueName
9
5
  } from "../../../chunk-I6MVCB5A.js";
10
6
  import "../../../chunk-RHVN6NA7.js";
7
+ import {
8
+ DrizzleJobOrchestrator
9
+ } from "../../../chunk-OTR44OH6.js";
10
+ import "../../../chunk-T4BIIU5E.js";
11
11
  import {
12
12
  JOBS_MULTI_TENANT
13
13
  } from "../../../chunk-ZPL74UQN.js";
@@ -4,8 +4,8 @@ import {
4
4
  import "../../../chunk-PNZSGAB2.js";
5
5
  import "../../../chunk-SNQ3TOWP.js";
6
6
  import "../../../chunk-T4BIIU5E.js";
7
- import "../../../chunk-ZPL74UQN.js";
8
7
  import "../../../chunk-CO6LUM72.js";
8
+ import "../../../chunk-ZPL74UQN.js";
9
9
  import "../../../chunk-GYGNEQSC.js";
10
10
  import "../../../chunk-2E224ZSN.js";
11
11
  export {
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  DrizzleJobRunService
3
- } from "../../../chunk-VNBC3VXM.js";
4
- import "../../../chunk-T4BIIU5E.js";
3
+ } from "../../../chunk-3VEVGL74.js";
5
4
  import "../../../chunk-L3LZWWSX.js";
5
+ import "../../../chunk-T4BIIU5E.js";
6
6
  import "../../../chunk-ZPL74UQN.js";
7
7
  import "../../../chunk-OKXZ63IA.js";
8
8
  import "../../../chunk-GYGNEQSC.js";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  MemoryJobRunService
3
- } from "../../../chunk-BHZP6LOV.js";
3
+ } from "../../../chunk-CDLWYZVQ.js";
4
+ import "../../../chunk-L3LZWWSX.js";
4
5
  import "../../../chunk-SNQ3TOWP.js";
5
6
  import "../../../chunk-T4BIIU5E.js";
6
- import "../../../chunk-L3LZWWSX.js";
7
7
  import "../../../chunk-ZPL74UQN.js";
8
8
  import "../../../chunk-GYGNEQSC.js";
9
9
  import "../../../chunk-2E224ZSN.js";
@@ -6,9 +6,9 @@ import {
6
6
  buildStaleSweepQuery,
7
7
  classifyError,
8
8
  computeBackoff
9
- } from "../../../chunk-XDIIVIIK.js";
10
- import "../../../chunk-ZPL74UQN.js";
9
+ } from "../../../chunk-OITTYGJS.js";
11
10
  import "../../../chunk-CO6LUM72.js";
11
+ import "../../../chunk-ZPL74UQN.js";
12
12
  import "../../../chunk-OKXZ63IA.js";
13
13
  import "../../../chunk-MYQIQ27N.js";
14
14
  import "../../../chunk-GYGNEQSC.js";
@@ -2,22 +2,22 @@ import {
2
2
  JOB_WORKER_MODULE_OPTIONS,
3
3
  JobWorkerModule,
4
4
  JobWorkerOrchestrator
5
- } from "../../../chunk-RUYLXR5F.js";
6
- import "../../../chunk-XDIIVIIK.js";
7
- import "../../../chunk-3RWMQC3K.js";
8
- import "../../../chunk-DV4RV2DC.js";
9
- import "../../../chunk-OTR44OH6.js";
5
+ } from "../../../chunk-GJDEPTPY.js";
6
+ import "../../../chunk-OITTYGJS.js";
7
+ import "../../../chunk-3MAZ4TQH.js";
10
8
  import "../../../chunk-BULPAAD3.js";
9
+ import "../../../chunk-3VEVGL74.js";
10
+ import "../../../chunk-CDLWYZVQ.js";
11
+ import "../../../chunk-L3LZWWSX.js";
12
+ import "../../../chunk-DV4RV2DC.js";
11
13
  import "../../../chunk-PNZSGAB2.js";
12
- import "../../../chunk-VNBC3VXM.js";
13
- import "../../../chunk-BHZP6LOV.js";
14
14
  import "../../../chunk-SNQ3TOWP.js";
15
- import "../../../chunk-T4BIIU5E.js";
16
- import "../../../chunk-L3LZWWSX.js";
17
15
  import "../../../chunk-I6MVCB5A.js";
18
16
  import "../../../chunk-RHVN6NA7.js";
19
- import "../../../chunk-ZPL74UQN.js";
17
+ import "../../../chunk-OTR44OH6.js";
18
+ import "../../../chunk-T4BIIU5E.js";
20
19
  import "../../../chunk-CO6LUM72.js";
20
+ import "../../../chunk-ZPL74UQN.js";
21
21
  import "../../../chunk-OKXZ63IA.js";
22
22
  import "../../../chunk-MYQIQ27N.js";
23
23
  import "../../../chunk-GYGNEQSC.js";
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  JobsDomainModule
3
- } from "../../../chunk-3RWMQC3K.js";
4
- import "../../../chunk-DV4RV2DC.js";
5
- import "../../../chunk-OTR44OH6.js";
3
+ } from "../../../chunk-3MAZ4TQH.js";
6
4
  import "../../../chunk-BULPAAD3.js";
5
+ import "../../../chunk-3VEVGL74.js";
6
+ import "../../../chunk-CDLWYZVQ.js";
7
+ import "../../../chunk-L3LZWWSX.js";
8
+ import "../../../chunk-DV4RV2DC.js";
7
9
  import "../../../chunk-PNZSGAB2.js";
8
- import "../../../chunk-VNBC3VXM.js";
9
- import "../../../chunk-BHZP6LOV.js";
10
10
  import "../../../chunk-SNQ3TOWP.js";
11
- import "../../../chunk-T4BIIU5E.js";
12
- import "../../../chunk-L3LZWWSX.js";
13
11
  import "../../../chunk-I6MVCB5A.js";
14
12
  import "../../../chunk-RHVN6NA7.js";
15
- import "../../../chunk-ZPL74UQN.js";
13
+ import "../../../chunk-OTR44OH6.js";
14
+ import "../../../chunk-T4BIIU5E.js";
16
15
  import "../../../chunk-CO6LUM72.js";
16
+ import "../../../chunk-ZPL74UQN.js";
17
17
  import "../../../chunk-OKXZ63IA.js";
18
18
  import "../../../chunk-MYQIQ27N.js";
19
19
  import "../../../chunk-GYGNEQSC.js";
@@ -1,10 +1,7 @@
1
1
  import "../../../chunk-ZUMULSEQ.js";
2
2
  import {
3
3
  StorageModule
4
- } from "../../../chunk-BK5ICA2F.js";
5
- import {
6
- STORAGE
7
- } from "../../../chunk-NYBCQZC7.js";
4
+ } from "../../../chunk-4MVGAMUA.js";
8
5
  import {
9
6
  LocalStorageBackend
10
7
  } from "../../../chunk-JWNHNUYL.js";
@@ -12,6 +9,9 @@ import {
12
9
  MemoryStorageBackend
13
10
  } from "../../../chunk-3SZFUTXE.js";
14
11
  import "../../../chunk-J6MN42LG.js";
12
+ import {
13
+ STORAGE
14
+ } from "../../../chunk-NYBCQZC7.js";
15
15
  import "../../../chunk-GYGNEQSC.js";
16
16
  import "../../../chunk-2E224ZSN.js";
17
17
  export {
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  StorageModule
3
- } from "../../../chunk-BK5ICA2F.js";
4
- import "../../../chunk-NYBCQZC7.js";
3
+ } from "../../../chunk-4MVGAMUA.js";
5
4
  import "../../../chunk-JWNHNUYL.js";
6
5
  import "../../../chunk-3SZFUTXE.js";
7
6
  import "../../../chunk-J6MN42LG.js";
7
+ import "../../../chunk-NYBCQZC7.js";
8
8
  import "../../../chunk-GYGNEQSC.js";
9
9
  import "../../../chunk-2E224ZSN.js";
10
10
  export {
@@ -36,29 +36,29 @@ import {
36
36
  validateOrchestrationProject,
37
37
  validateProviders,
38
38
  writeManifest
39
- } from "../../chunk-32DOFN3T.js";
39
+ } from "../../chunk-IOQMMH6C.js";
40
40
  import "../../chunk-KVOWSC5S.js";
41
- import "../../chunk-24WXSC3C.js";
42
- import "../../chunk-EO2QPOKH.js";
41
+ import "../../chunk-P3AYBRP6.js";
43
42
  import "../../chunk-PRWIX6UW.js";
44
- import "../../chunk-XWBK3XJK.js";
45
- import "../../chunk-AHV4GDYM.js";
46
- import "../../chunk-YK5JEVLX.js";
43
+ import "../../chunk-SR7F3TJY.js";
44
+ import "../../chunk-EO2QPOKH.js";
47
45
  import "../../chunk-SQDOBLBP.js";
46
+ import "../../chunk-OGIZXGPY.js";
47
+ import "../../chunk-LG57S2SC.js";
48
+ import "../../chunk-DCCZB4UC.js";
49
+ import "../../chunk-MZ6GV4YF.js";
50
+ import "../../chunk-HNWZFNKP.js";
51
+ import "../../chunk-AHV4GDYM.js";
52
+ import "../../chunk-43SBT72G.js";
53
+ import "../../chunk-4MF3HKJA.js";
54
+ import "../../chunk-TIZXQU26.js";
55
+ import "../../chunk-36U5UGIO.js";
48
56
  import {
49
57
  isDivisibleCursor
50
- } from "../../chunk-3NMCDN7L.js";
58
+ } from "../../chunk-5TK7MEN4.js";
51
59
  import "../../chunk-4KNXX6TI.js";
52
60
  import "../../chunk-3CJFPU6Q.js";
53
- import "../../chunk-TDEHU73T.js";
54
61
  import "../../chunk-S7C6TIIF.js";
55
- import "../../chunk-MZ6GV4YF.js";
56
- import "../../chunk-LG57S2SC.js";
57
- import "../../chunk-HNWZFNKP.js";
58
- import "../../chunk-WWGYCIJX.js";
59
- import "../../chunk-4MF3HKJA.js";
60
- import "../../chunk-YLPAPPLW.js";
61
- import "../../chunk-36U5UGIO.js";
62
62
  import "../../chunk-U64T4YZE.js";
63
63
  import "../../chunk-2E224ZSN.js";
64
64
 
@@ -1681,11 +1681,11 @@ declare const EntityDefinitionSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
1681
1681
  }>, z.ZodObject<{
1682
1682
  mode: z.ZodLiteral<"webhook">;
1683
1683
  webhook: z.ZodObject<{
1684
- eventIdField: z.ZodString;
1684
+ eventIdField: z.ZodOptional<z.ZodString>;
1685
1685
  }, "strip", z.ZodTypeAny, {
1686
- eventIdField: string;
1686
+ eventIdField?: string | undefined;
1687
1687
  }, {
1688
- eventIdField: string;
1688
+ eventIdField?: string | undefined;
1689
1689
  }>;
1690
1690
  mapping: z.ZodArray<z.ZodObject<{
1691
1691
  source: z.ZodString;
@@ -1715,7 +1715,7 @@ declare const EntityDefinitionSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
1715
1715
  }>, "many">>;
1716
1716
  }, "strip", z.ZodTypeAny, {
1717
1717
  webhook: {
1718
- eventIdField: string;
1718
+ eventIdField?: string | undefined;
1719
1719
  };
1720
1720
  mode: "webhook";
1721
1721
  mapping: {
@@ -1730,7 +1730,7 @@ declare const EntityDefinitionSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
1730
1730
  }[];
1731
1731
  }, {
1732
1732
  webhook: {
1733
- eventIdField: string;
1733
+ eventIdField?: string | undefined;
1734
1734
  };
1735
1735
  mode: "webhook";
1736
1736
  mapping: {
@@ -2156,7 +2156,7 @@ declare const EntityDefinitionSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
2156
2156
  }[];
2157
2157
  } | {
2158
2158
  webhook: {
2159
- eventIdField: string;
2159
+ eventIdField?: string | undefined;
2160
2160
  };
2161
2161
  mode: "webhook";
2162
2162
  mapping: {
@@ -2366,7 +2366,7 @@ declare const EntityDefinitionSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
2366
2366
  }[] | undefined;
2367
2367
  } | {
2368
2368
  webhook: {
2369
- eventIdField: string;
2369
+ eventIdField?: string | undefined;
2370
2370
  };
2371
2371
  mode: "webhook";
2372
2372
  mapping: {
@@ -2576,7 +2576,7 @@ declare const EntityDefinitionSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
2576
2576
  }[];
2577
2577
  } | {
2578
2578
  webhook: {
2579
- eventIdField: string;
2579
+ eventIdField?: string | undefined;
2580
2580
  };
2581
2581
  mode: "webhook";
2582
2582
  mapping: {
@@ -2786,7 +2786,7 @@ declare const EntityDefinitionSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
2786
2786
  }[] | undefined;
2787
2787
  } | {
2788
2788
  webhook: {
2789
- eventIdField: string;
2789
+ eventIdField?: string | undefined;
2790
2790
  };
2791
2791
  mode: "webhook";
2792
2792
  mapping: {
@@ -2996,7 +2996,7 @@ declare const EntityDefinitionSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
2996
2996
  }[];
2997
2997
  } | {
2998
2998
  webhook: {
2999
- eventIdField: string;
2999
+ eventIdField?: string | undefined;
3000
3000
  };
3001
3001
  mode: "webhook";
3002
3002
  mapping: {
@@ -3206,7 +3206,7 @@ declare const EntityDefinitionSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
3206
3206
  }[] | undefined;
3207
3207
  } | {
3208
3208
  webhook: {
3209
- eventIdField: string;
3209
+ eventIdField?: string | undefined;
3210
3210
  };
3211
3211
  mode: "webhook";
3212
3212
  mapping: {
@@ -4135,17 +4135,32 @@ declare function isDomainPattern(def: AnyPatternDefinition): def is PatternDefin
4135
4135
  declare function defineOrchestrationPattern(def: OrchestrationPatternDefinition): OrchestrationPatternDefinition;
4136
4136
 
4137
4137
  /**
4138
- * ActivityPattern — replaces `family: activity`.
4138
+ * ActivityPattern — config-driven subject-scoped interaction base.
4139
4139
  *
4140
- * Activity entities represent time-bounded interactions (calls, meetings,
4141
- * emails). The base repository/service expose date-range + opportunity +
4142
- * user-scoped lookups on top of the standard CRUD methods.
4140
+ * Activity entities represent interactions (calls, meetings, emails, messages,
4141
+ * transcripts) that reference a *subject* the thing the interaction is about.
4142
+ * Which subject is a per-entity fact, not a library constant: a CRM activity is
4143
+ * scoped to an `opportunity`, a swe-brain interaction to a `person` (later
4144
+ * `repo`/`team`, ADR-0006's Salesforce Activities-vs-Records shape). The base
4145
+ * repository/service therefore expose **generic** subject-scoped finders
4146
+ * (`findBySubjectId` / `findRecentBySubjectId`) that read the subject FK column
4147
+ * from the entity's `config:` block, on top of the standard CRUD methods plus
4148
+ * date-range and actor (`user_id`) scoping.
4143
4149
  *
4144
- * Class names, import paths, and inherited-method strings match the
4145
- * legacy `FAMILY_MAP` entry verbatim so PATTERN-5's template swap produces
4146
- * byte-identical output.
4150
+ * The subject FK column resolves from `config: { Activity: { ... } }`:
4151
+ * - `subjectColumn` explicit snake_case column, OR
4152
+ * - `<subject>_id` — derived from the `subject` entity name.
4153
+ * The recency-ordering column is `occurredAt` (snake_case in config), default
4154
+ * `occurred_at`. The base reads these via `this.patternConfig` — the same
4155
+ * ADR-031 §4 hand-off `IntegratedEntityRepository` uses for `integrationConfig`.
4156
+ *
4157
+ * See `docs/specs/ACTIVITY-SUBJECT-1.md`.
4147
4158
  */
4148
- declare const ActivityPattern: PatternDefinition<unknown>;
4159
+ declare const ActivityPattern: PatternDefinition<{
4160
+ subject?: string | undefined;
4161
+ subjectColumn?: string | undefined;
4162
+ occurredAt?: string | undefined;
4163
+ }>;
4149
4164
 
4150
4165
  /**
4151
4166
  * BasePattern — identity pattern for the `extends` chain.
package/dist/src/index.js CHANGED
@@ -44,27 +44,27 @@ import {
44
44
  validateOrchestrationProject,
45
45
  validatePatternComposition,
46
46
  validatePatternProject
47
- } from "../chunk-32DOFN3T.js";
47
+ } from "../chunk-IOQMMH6C.js";
48
48
  import "../chunk-KVOWSC5S.js";
49
- import "../chunk-24WXSC3C.js";
50
- import "../chunk-EO2QPOKH.js";
49
+ import "../chunk-P3AYBRP6.js";
51
50
  import "../chunk-PRWIX6UW.js";
52
- import "../chunk-XWBK3XJK.js";
53
- import "../chunk-AHV4GDYM.js";
54
- import "../chunk-YK5JEVLX.js";
51
+ import "../chunk-SR7F3TJY.js";
52
+ import "../chunk-EO2QPOKH.js";
55
53
  import "../chunk-SQDOBLBP.js";
56
- import "../chunk-3NMCDN7L.js";
57
- import "../chunk-4KNXX6TI.js";
58
- import "../chunk-3CJFPU6Q.js";
59
- import "../chunk-TDEHU73T.js";
60
- import "../chunk-S7C6TIIF.js";
61
- import "../chunk-MZ6GV4YF.js";
54
+ import "../chunk-OGIZXGPY.js";
62
55
  import "../chunk-LG57S2SC.js";
56
+ import "../chunk-DCCZB4UC.js";
57
+ import "../chunk-MZ6GV4YF.js";
63
58
  import "../chunk-HNWZFNKP.js";
64
- import "../chunk-WWGYCIJX.js";
59
+ import "../chunk-AHV4GDYM.js";
60
+ import "../chunk-43SBT72G.js";
65
61
  import "../chunk-4MF3HKJA.js";
66
- import "../chunk-YLPAPPLW.js";
62
+ import "../chunk-TIZXQU26.js";
67
63
  import "../chunk-36U5UGIO.js";
64
+ import "../chunk-5TK7MEN4.js";
65
+ import "../chunk-4KNXX6TI.js";
66
+ import "../chunk-3CJFPU6Q.js";
67
+ import "../chunk-S7C6TIIF.js";
68
68
  import "../chunk-U64T4YZE.js";
69
69
  import "../chunk-2E224ZSN.js";
70
70
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pattern-stack/codegen",
3
- "version": "0.16.0",
3
+ "version": "0.17.0",
4
4
  "description": "Entity-driven code generation for full-stack TypeScript applications",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -138,6 +138,7 @@
138
138
  "@pattern-stack/codegen-calendar": "workspace:*",
139
139
  "@pattern-stack/codegen-crm": "workspace:*",
140
140
  "@pattern-stack/codegen-mail": "workspace:*",
141
+ "@pattern-stack/codegen-messaging": "workspace:*",
141
142
  "@pattern-stack/codegen-transcript": "workspace:*",
142
143
  "@cubejs-client/core": "^1.0.0",
143
144
  "@nestjs/common": "10",
@@ -1,26 +1,84 @@
1
1
  /**
2
2
  * ActivityEntityRepository<TEntity>
3
3
  *
4
- * Family-specific base for activity entities (emails, calls, meetings, notes).
5
- * Adds date-range queries, user/opportunity scoping, and recency ordering.
4
+ * Family-specific base for activity / interaction entities (emails, calls,
5
+ * meetings, messages, transcripts). Adds date-range queries, actor (`user_id`)
6
+ * scoping, recency ordering, and **config-driven subject scoping** — the
7
+ * subject FK column is resolved from the concrete repo's `patternConfig`
8
+ * (ADR-031 §4) rather than hardcoded, so the same base serves a CRM
9
+ * `opportunity`-scoped activity and a swe-brain `person`-scoped interaction.
6
10
  *
7
- * Concrete repos extend this and declare their table + behaviors.
11
+ * Concrete repos extend this and declare their table + behaviors, and (when
12
+ * they use the subject finders) a `patternConfig` carrying `subject` /
13
+ * `subjectColumn` / `occurredAt`. The template emits that property from the
14
+ * entity's `config: { Activity: {...} }` block. See ACTIVITY-SUBJECT-1.
8
15
  */
9
16
  import { eq, between, desc } from 'drizzle-orm';
10
17
  import { BaseRepository } from './base-repository';
11
18
 
19
+ /**
20
+ * Per-entity Activity config (matches `ActivityPatternConfigSchema` in
21
+ * `src/patterns/library/activity.pattern.ts`). Carried on the concrete repo as
22
+ * `patternConfig` and read here to resolve column names at runtime.
23
+ */
24
+ export interface ActivityPatternConfig {
25
+ /** Subject entity name → derives the FK column `<subject>_id`. */
26
+ subject?: string;
27
+ /** Explicit snake_case FK column, when it does not follow `<subject>_id`. */
28
+ subjectColumn?: string;
29
+ /** snake_case recency-ordering column; defaults to `occurred_at`. */
30
+ occurredAt?: string;
31
+ }
32
+
33
+ const toCamel = (snake: string): string =>
34
+ snake.replace(/_([a-z0-9])/g, (_, c: string) => c.toUpperCase());
35
+
12
36
  export abstract class ActivityEntityRepository<TEntity> extends BaseRepository<TEntity> {
13
37
  /**
14
- * Find activities within a date range (inclusive).
38
+ * Per-entity Activity config. The template emits this from `config:
39
+ * { Activity: {...} }`; entities that only use date-range / user scoping omit
40
+ * it (and must not call the subject finders).
41
+ */
42
+ protected readonly patternConfig?: ActivityPatternConfig;
43
+
44
+ /**
45
+ * camelCase key for the recency-ordering column. Defaults to `occurredAt`
46
+ * (column `occurred_at`); override via `patternConfig.occurredAt`.
47
+ */
48
+ protected get occurredAtColumn(): string {
49
+ const snake = this.patternConfig?.occurredAt ?? 'occurred_at';
50
+ return toCamel(snake);
51
+ }
52
+
53
+ /**
54
+ * camelCase key for the subject FK column, resolved from `patternConfig`:
55
+ * `subjectColumn` (explicit) → `<subject>_id` (derived). Throws when neither
56
+ * is configured — the subject finders are unusable without it, and a clear
57
+ * error beats a silent `undefined` column index.
58
+ */
59
+ protected get subjectColumn(): string {
60
+ const explicit = this.patternConfig?.subjectColumn;
61
+ if (explicit) return toCamel(explicit);
62
+ const subject = this.patternConfig?.subject;
63
+ if (subject) return toCamel(`${subject}_id`);
64
+ throw new Error(
65
+ 'ActivityEntityRepository: subject finders require a subject column. ' +
66
+ "Set `config: { Activity: { subject: '<entity>' } }` (→ <entity>_id) " +
67
+ "or `config: { Activity: { subjectColumn: '<column>' } }` on the entity YAML.",
68
+ );
69
+ }
70
+
71
+ /**
72
+ * Find activities within a date range (inclusive), by the recency column.
15
73
  */
16
74
  async findByDateRange(start: Date, end: Date): Promise<TEntity[]> {
17
75
  const rows = await this.baseQuery()
18
- .where(between(this.table['occurredAt'], start, end));
76
+ .where(between(this.table[this.occurredAtColumn], start, end));
19
77
  return rows as TEntity[];
20
78
  }
21
79
 
22
80
  /**
23
- * Find all activities for a specific user.
81
+ * Find all activities for a specific user (actor / owner scoping).
24
82
  */
25
83
  async findByUserId(userId: string): Promise<TEntity[]> {
26
84
  const rows = await this.baseQuery()
@@ -29,21 +87,22 @@ export abstract class ActivityEntityRepository<TEntity> extends BaseRepository<T
29
87
  }
30
88
 
31
89
  /**
32
- * Find all activities for a specific opportunity.
90
+ * Find all activities for a specific subject (config-driven FK column).
33
91
  */
34
- async findByOpportunityId(opportunityId: string): Promise<TEntity[]> {
92
+ async findBySubjectId(subjectId: string): Promise<TEntity[]> {
35
93
  const rows = await this.baseQuery()
36
- .where(eq(this.table['opportunityId'], opportunityId));
94
+ .where(eq(this.table[this.subjectColumn], subjectId));
37
95
  return rows as TEntity[];
38
96
  }
39
97
 
40
98
  /**
41
- * Find the most recent activities for an opportunity, ordered by occurredAt desc.
99
+ * Find the most recent activities for a subject, ordered by the recency
100
+ * column descending.
42
101
  */
43
- async findRecentByOpportunityId(opportunityId: string, limit = 10): Promise<TEntity[]> {
102
+ async findRecentBySubjectId(subjectId: string, limit = 10): Promise<TEntity[]> {
44
103
  const rows = await this.baseQuery()
45
- .where(eq(this.table['opportunityId'], opportunityId))
46
- .orderBy(desc(this.table['occurredAt']))
104
+ .where(eq(this.table[this.subjectColumn], subjectId))
105
+ .orderBy(desc(this.table[this.occurredAtColumn]))
47
106
  .limit(limit);
48
107
  return rows as TEntity[];
49
108
  }