@pattern-stack/codegen 0.16.1 → 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 (92) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/consumer-skills/entities/families-and-queries.md +5 -3
  3. package/dist/{chunk-DGYTSCKN.js → chunk-3MAZ4TQH.js} +13 -13
  4. package/dist/{chunk-5LXOJGO2.js → chunk-3VEVGL74.js} +5 -5
  5. package/dist/{chunk-Y7GDG744.js → chunk-4GLNY5V6.js} +5 -5
  6. package/dist/{chunk-RUSUZZAF.js → chunk-4MVGAMUA.js} +4 -4
  7. package/dist/{chunk-T6SCOJF4.js → chunk-7LKAMLV4.js} +4 -4
  8. package/dist/{chunk-T4YJRD22.js → chunk-BULPAAD3.js} +4 -4
  9. package/dist/{chunk-QSJ3J4HE.js → chunk-CDLWYZVQ.js} +4 -4
  10. package/dist/{chunk-XWBK3XJK.js → chunk-DCCZB4UC.js} +4 -4
  11. package/dist/{chunk-DLG62MQY.js → chunk-DTXH24LR.js} +6 -6
  12. package/dist/{chunk-AYC2HEAL.js → chunk-GJDEPTPY.js} +7 -7
  13. package/dist/{chunk-2WDX6I7T.js → chunk-IOQMMH6C.js} +16 -6
  14. package/dist/{chunk-2WDX6I7T.js.map → chunk-IOQMMH6C.js.map} +1 -1
  15. package/dist/{chunk-BOPZWRJK.js → chunk-JYBFPNBJ.js} +8 -8
  16. package/dist/chunk-JYBFPNBJ.js.map +1 -0
  17. package/dist/{chunk-CRBVI4GE.js → chunk-L3VJ47BU.js} +3 -3
  18. package/dist/chunk-MKWQKKK7.js +72 -0
  19. package/dist/chunk-MKWQKKK7.js.map +1 -0
  20. package/dist/{chunk-TDEHU73T.js → chunk-OGIZXGPY.js} +4 -4
  21. package/dist/{chunk-JM3T27ZW.js → chunk-OITTYGJS.js} +4 -4
  22. package/dist/{chunk-IT6FRTEW.js → chunk-OTR44OH6.js} +10 -10
  23. package/dist/{chunk-24WXSC3C.js → chunk-P3AYBRP6.js} +7 -7
  24. package/dist/{chunk-TKVTEUBD.js → chunk-RHYNACZS.js} +3 -3
  25. package/dist/{chunk-YK5JEVLX.js → chunk-SR7F3TJY.js} +4 -4
  26. package/dist/{chunk-H6FO2ZDJ.js → chunk-UTNWFHJF.js} +7 -7
  27. package/dist/{chunk-LQ6PYFU6.js → chunk-Z7PQCAVK.js} +4 -4
  28. package/dist/runtime/base-classes/activity-entity-repository.d.ts +39 -7
  29. package/dist/runtime/base-classes/activity-entity-repository.js +1 -1
  30. package/dist/runtime/base-classes/activity-entity-service.d.ts +12 -10
  31. package/dist/runtime/base-classes/activity-entity-service.js +1 -1
  32. package/dist/runtime/base-classes/index.js +23 -23
  33. package/dist/runtime/shared/openapi/index.js +5 -5
  34. package/dist/runtime/shared/openapi/registry.js +2 -2
  35. package/dist/runtime/subsystems/auth/auth.module.js +2 -2
  36. package/dist/runtime/subsystems/auth/index.js +8 -8
  37. package/dist/runtime/subsystems/bridge/bridge-outbox-drain-hook.js +3 -3
  38. package/dist/runtime/subsystems/bridge/bridge.module.js +14 -14
  39. package/dist/runtime/subsystems/bridge/index.js +14 -14
  40. package/dist/runtime/subsystems/cache/cache.module.js +1 -1
  41. package/dist/runtime/subsystems/cache/index.js +3 -3
  42. package/dist/runtime/subsystems/events/event-bus.drizzle-backend.js +3 -3
  43. package/dist/runtime/subsystems/events/event-bus.memory-backend.js +2 -2
  44. package/dist/runtime/subsystems/events/events.module.js +5 -5
  45. package/dist/runtime/subsystems/events/index.js +5 -5
  46. package/dist/runtime/subsystems/index.js +101 -101
  47. package/dist/runtime/subsystems/integration/execute-integration.use-case.js +2 -2
  48. package/dist/runtime/subsystems/integration/index.js +41 -41
  49. package/dist/runtime/subsystems/integration/integration-cursor-store.drizzle-backend.js +2 -2
  50. package/dist/runtime/subsystems/integration/integration-run-recorder.drizzle-backend.js +2 -2
  51. package/dist/runtime/subsystems/integration/integration.module.js +5 -5
  52. package/dist/runtime/subsystems/jobs/index.js +35 -35
  53. package/dist/runtime/subsystems/jobs/job-orchestrator.bullmq-backend.js +5 -5
  54. package/dist/runtime/subsystems/jobs/job-orchestrator.drizzle-backend.js +3 -3
  55. package/dist/runtime/subsystems/jobs/job-orchestrator.memory-backend.js +2 -2
  56. package/dist/runtime/subsystems/jobs/job-run-service.drizzle-backend.js +3 -3
  57. package/dist/runtime/subsystems/jobs/job-run-service.memory-backend.js +2 -2
  58. package/dist/runtime/subsystems/jobs/job-worker.bullmq-backend.js +3 -3
  59. package/dist/runtime/subsystems/jobs/job-worker.js +2 -2
  60. package/dist/runtime/subsystems/jobs/job-worker.module.js +11 -11
  61. package/dist/runtime/subsystems/jobs/jobs-domain.module.js +9 -9
  62. package/dist/runtime/subsystems/storage/index.js +5 -5
  63. package/dist/runtime/subsystems/storage/storage.module.js +3 -3
  64. package/dist/src/cli/index.js +14 -14
  65. package/dist/src/index.d.ts +23 -8
  66. package/dist/src/index.js +12 -12
  67. package/package.json +2 -1
  68. package/runtime/base-classes/activity-entity-repository.ts +72 -13
  69. package/runtime/base-classes/activity-entity-service.ts +14 -12
  70. package/src/patterns/library/activity.pattern.ts +40 -10
  71. package/dist/chunk-BOPZWRJK.js.map +0 -1
  72. package/dist/chunk-XCEI7NUH.js +0 -41
  73. package/dist/chunk-XCEI7NUH.js.map +0 -1
  74. /package/dist/{chunk-DGYTSCKN.js.map → chunk-3MAZ4TQH.js.map} +0 -0
  75. /package/dist/{chunk-5LXOJGO2.js.map → chunk-3VEVGL74.js.map} +0 -0
  76. /package/dist/{chunk-Y7GDG744.js.map → chunk-4GLNY5V6.js.map} +0 -0
  77. /package/dist/{chunk-RUSUZZAF.js.map → chunk-4MVGAMUA.js.map} +0 -0
  78. /package/dist/{chunk-T6SCOJF4.js.map → chunk-7LKAMLV4.js.map} +0 -0
  79. /package/dist/{chunk-T4YJRD22.js.map → chunk-BULPAAD3.js.map} +0 -0
  80. /package/dist/{chunk-QSJ3J4HE.js.map → chunk-CDLWYZVQ.js.map} +0 -0
  81. /package/dist/{chunk-XWBK3XJK.js.map → chunk-DCCZB4UC.js.map} +0 -0
  82. /package/dist/{chunk-DLG62MQY.js.map → chunk-DTXH24LR.js.map} +0 -0
  83. /package/dist/{chunk-AYC2HEAL.js.map → chunk-GJDEPTPY.js.map} +0 -0
  84. /package/dist/{chunk-CRBVI4GE.js.map → chunk-L3VJ47BU.js.map} +0 -0
  85. /package/dist/{chunk-TDEHU73T.js.map → chunk-OGIZXGPY.js.map} +0 -0
  86. /package/dist/{chunk-JM3T27ZW.js.map → chunk-OITTYGJS.js.map} +0 -0
  87. /package/dist/{chunk-IT6FRTEW.js.map → chunk-OTR44OH6.js.map} +0 -0
  88. /package/dist/{chunk-24WXSC3C.js.map → chunk-P3AYBRP6.js.map} +0 -0
  89. /package/dist/{chunk-TKVTEUBD.js.map → chunk-RHYNACZS.js.map} +0 -0
  90. /package/dist/{chunk-YK5JEVLX.js.map → chunk-SR7F3TJY.js.map} +0 -0
  91. /package/dist/{chunk-H6FO2ZDJ.js.map → chunk-UTNWFHJF.js.map} +0 -0
  92. /package/dist/{chunk-LQ6PYFU6.js.map → chunk-Z7PQCAVK.js.map} +0 -0
package/CHANGELOG.md CHANGED
@@ -4,6 +4,59 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.17.0] — 2026-06-04
8
+
9
+ **`ActivityPattern` subject scoping is config-driven** (ACTIVITY-SUBJECT-1) —
10
+ the library's Activity base classes no longer bake the CRM term "opportunity"
11
+ into their finders. An activity/interaction entity declares which subject it is
12
+ scoped to via the pattern's new `config:` block, and the generated repo/service
13
+ expose generic, config-resolved subject lookups. Surfaced by the swe-brain
14
+ dogfood, whose interactions (meeting, email, transcript, message) reference
15
+ `person`/`repo`/`team` subjects (ADR-0006), not CRM opportunities.
16
+
17
+ Consumer census confirmed **no project used the Activity pattern** (dealbrain's
18
+ sole `findByOpportunityId` is a `JunctionSyncRepository` method, not the pattern;
19
+ swe-brain's interactions are all `pattern: Integrated`), so this is a clean cut
20
+ with no aliases per the "no backwards compatibility until users" rule. The
21
+ `patterns: [Integrated, Activity]` composition — the swe-brain target — is
22
+ validated and tested.
23
+
24
+ ### Added
25
+
26
+ - **`ActivityPattern.configSchema`** — `{ subject?, subjectColumn?, occurredAt? }`
27
+ (all optional, `.strict()`). `subject` derives the FK column `<subject>_id`;
28
+ `subjectColumn` overrides it explicitly; `occurredAt` names the recency column
29
+ (default `occurred_at`). Validated at parse time via the standard ADR-031
30
+ composition path; emitted onto the concrete repo as `patternConfig` (the same
31
+ hand-off `IntegratedEntityRepository` uses for `integrationConfig`).
32
+ - **`ActivityPatternConfig`** interface exported from
33
+ `runtime/base-classes/activity-entity-repository.ts`.
34
+
35
+ ### Changed
36
+
37
+ - **`ActivityEntityRepository` finders are config-driven.**
38
+ `findByOpportunityId` / `findRecentByOpportunityId` are replaced by
39
+ `findBySubjectId` / `findRecentBySubjectId`, which resolve the subject FK column
40
+ (and recency-ordering column) from `this.patternConfig` at runtime. Calling a
41
+ subject finder with no subject configured throws a clear error naming the
42
+ config key to set. `findByDateRange` and `findByUserId` are unchanged (actor
43
+ scoping is generally applicable, not CRM-shaped).
44
+ - **`ActivityEntityService`** mirrors the rename: `findBySubject` /
45
+ `findRecent` (was `findByOpportunity` / `findRecent`); `IActivityEntityRepository`
46
+ drops the opportunity methods for the subject ones. `findByDateRange` /
47
+ `findByUser` unchanged.
48
+ - **`ActivityPattern` inherited-method comment strings** now advertise the
49
+ subject finders; the header's byte-identical-to-FAMILY_MAP claim is removed (it
50
+ was a one-time PATTERN-5 migration guarantee, not a standing contract).
51
+
52
+ ### Migration
53
+
54
+ No consumer action required — no project used the Activity pattern. A project
55
+ adopting it now declares `pattern: Activity` (or `patterns: [Integrated,
56
+ Activity]`) plus `config: { Activity: { subject: <entity> } }`. Named per-subject
57
+ finders (`findByPersonId`) remain available the same way they always were — via
58
+ the entity's declarative `queries:` block.
59
+
7
60
  ## [0.16.1] — 2026-06-04
8
61
 
9
62
  **`WebhookFetchCallback<T>` yields `{ record, eventId?, cursor? }`** —
@@ -16,7 +16,7 @@ an optional `tx?: DrizzleTx` for transactional composition.
16
16
  |---|---|---|
17
17
  | `Base` | plain tables with no special access pattern | nothing — standard CRUD only |
18
18
  | `Synced` | records mirrored from an external system (have an external id + per-user visibility) | `findByExternalId`, `findAllByUserId`, `findVisibleByUserId`, `syncUpsert` |
19
- | `Activity` | time-ordered activity/event rows tied to a parent | `findByDateRange`, `findByUserId`, `findByOpportunityId`, `findRecentByOpportunityId` |
19
+ | `Activity` | time-ordered activity/interaction rows scoped to a subject | `findByDateRange`, `findByUserId`, `findBySubjectId`, `findRecentBySubjectId` (subject FK + recency column resolved from `config: { Activity: { subject: <entity> } }`) |
20
20
  | `Metadata` | key/value or definition/value rows describing other entities | `findByEntityIdAndType`, `listByEntityId`, `listHistoryByEntityId` |
21
21
  | `Knowledge` | semantically-searchable knowledge rows (pgvector at runtime) | `semanticSearch`, `findPendingByOpportunityId`, `updateStatus`, `updateStatusBatch` |
22
22
 
@@ -77,6 +77,8 @@ and a `GET /<plural>/search` route. `paginate: true` makes the route accept
77
77
  - **`order:` is the default sort**, not a parameter — add a `queries:` search
78
78
  entry if you need caller-controlled ordering.
79
79
  - **Family methods assume their columns exist.** `Synced` expects an external-id
80
- + user-visibility shape; `Activity` expects a parent FK like
81
- `opportunity_id`. If your table doesn't fit, pick `Base` and add explicit
80
+ + user-visibility shape; `Activity`'s subject finders expect the subject FK
81
+ named by its `config:` (`subject: person` `person_id`, or an explicit
82
+ `subjectColumn`) plus a recency column (`occurred_at` by default, or
83
+ `config.occurredAt`). If your table doesn't fit, pick `Base` and add explicit
82
84
  `queries:`.
@@ -1,12 +1,21 @@
1
+ import {
2
+ MemoryJobOrchestrator
3
+ } from "./chunk-BULPAAD3.js";
1
4
  import {
2
5
  DrizzleJobRunService
3
- } from "./chunk-5LXOJGO2.js";
6
+ } from "./chunk-3VEVGL74.js";
4
7
  import {
5
8
  MemoryJobRunService
6
- } from "./chunk-QSJ3J4HE.js";
9
+ } from "./chunk-CDLWYZVQ.js";
7
10
  import {
8
11
  DrizzleJobStepService
9
12
  } from "./chunk-DV4RV2DC.js";
13
+ import {
14
+ MemoryJobStepService
15
+ } from "./chunk-PNZSGAB2.js";
16
+ import {
17
+ MemoryJobStore
18
+ } from "./chunk-SNQ3TOWP.js";
10
19
  import {
11
20
  BULLMQ_CONNECTION,
12
21
  BULLMQ_RESOLVED_CONFIG,
@@ -14,16 +23,7 @@ import {
14
23
  } from "./chunk-I6MVCB5A.js";
15
24
  import {
16
25
  DrizzleJobOrchestrator
17
- } from "./chunk-IT6FRTEW.js";
18
- import {
19
- MemoryJobOrchestrator
20
- } from "./chunk-T4YJRD22.js";
21
- import {
22
- MemoryJobStepService
23
- } from "./chunk-PNZSGAB2.js";
24
- import {
25
- MemoryJobStore
26
- } from "./chunk-SNQ3TOWP.js";
26
+ } from "./chunk-OTR44OH6.js";
27
27
  import {
28
28
  JOBS_LISTEN_NOTIFY,
29
29
  JOBS_MULTI_TENANT,
@@ -114,4 +114,4 @@ JobsDomainModule = __decorateClass([
114
114
  export {
115
115
  JobsDomainModule
116
116
  };
117
- //# sourceMappingURL=chunk-DGYTSCKN.js.map
117
+ //# sourceMappingURL=chunk-3MAZ4TQH.js.map
@@ -5,15 +5,15 @@ import {
5
5
  toJobRunSummary
6
6
  } from "./chunk-L3LZWWSX.js";
7
7
  import {
8
- jobRuns
9
- } from "./chunk-OKXZ63IA.js";
8
+ MissingTenantIdError
9
+ } from "./chunk-T4BIIU5E.js";
10
10
  import {
11
11
  JOBS_MULTI_TENANT,
12
12
  JOB_ORCHESTRATOR
13
13
  } from "./chunk-ZPL74UQN.js";
14
14
  import {
15
- MissingTenantIdError
16
- } from "./chunk-T4BIIU5E.js";
15
+ jobRuns
16
+ } from "./chunk-OKXZ63IA.js";
17
17
  import {
18
18
  DRIZZLE
19
19
  } from "./chunk-U64T4YZE.js";
@@ -198,4 +198,4 @@ DrizzleJobRunService = __decorateClass([
198
198
  export {
199
199
  DrizzleJobRunService
200
200
  };
201
- //# sourceMappingURL=chunk-5LXOJGO2.js.map
201
+ //# sourceMappingURL=chunk-3VEVGL74.js.map
@@ -1,11 +1,11 @@
1
- import {
2
- ERROR_RESPONSE_SCHEMA_NAME,
3
- errorResponseSchema
4
- } from "./chunk-SOVM2VEK.js";
5
1
  import {
6
2
  DuplicateSchemaError,
7
3
  OpenApiPeerDepMissingError
8
4
  } from "./chunk-YSLTTQLC.js";
5
+ import {
6
+ ERROR_RESPONSE_SCHEMA_NAME,
7
+ errorResponseSchema
8
+ } from "./chunk-SOVM2VEK.js";
9
9
 
10
10
  // runtime/shared/openapi/registry.ts
11
11
  var OpenApiRegistry = class {
@@ -85,4 +85,4 @@ var OpenApiRegistry = class {
85
85
  export {
86
86
  OpenApiRegistry
87
87
  };
88
- //# sourceMappingURL=chunk-Y7GDG744.js.map
88
+ //# sourceMappingURL=chunk-4GLNY5V6.js.map
@@ -1,12 +1,12 @@
1
+ import {
2
+ LocalStorageBackend
3
+ } from "./chunk-JWNHNUYL.js";
1
4
  import {
2
5
  MemoryStorageBackend
3
6
  } from "./chunk-3SZFUTXE.js";
4
7
  import {
5
8
  STORAGE
6
9
  } from "./chunk-NYBCQZC7.js";
7
- import {
8
- LocalStorageBackend
9
- } from "./chunk-JWNHNUYL.js";
10
10
  import {
11
11
  __decorateClass
12
12
  } from "./chunk-2E224ZSN.js";
@@ -37,4 +37,4 @@ StorageModule = __decorateClass([
37
37
  export {
38
38
  StorageModule
39
39
  };
40
- //# sourceMappingURL=chunk-RUSUZZAF.js.map
40
+ //# sourceMappingURL=chunk-4MVGAMUA.js.map
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  EnvEncryptionKey
3
3
  } from "./chunk-IP4OO26U.js";
4
- import {
5
- AuthController
6
- } from "./chunk-SZVPIHWE.js";
7
4
  import {
8
5
  DrizzleOAuthStateStore
9
6
  } from "./chunk-N5OTOWTP.js";
10
7
  import {
11
8
  MemoryOAuthStateStore
12
9
  } from "./chunk-QLTJSCE6.js";
10
+ import {
11
+ AuthController
12
+ } from "./chunk-SZVPIHWE.js";
13
13
  import {
14
14
  AUTH_OPTIONS,
15
15
  ENCRYPTION_KEY,
@@ -89,4 +89,4 @@ AuthModule = __decorateClass([
89
89
  export {
90
90
  AuthModule
91
91
  };
92
- //# sourceMappingURL=chunk-T6SCOJF4.js.map
92
+ //# sourceMappingURL=chunk-7LKAMLV4.js.map
@@ -4,9 +4,6 @@ import {
4
4
  import {
5
5
  MemoryJobStore
6
6
  } from "./chunk-SNQ3TOWP.js";
7
- import {
8
- JOBS_MULTI_TENANT
9
- } from "./chunk-ZPL74UQN.js";
10
7
  import {
11
8
  JobCollisionError,
12
9
  JobNotReplayableError,
@@ -14,6 +11,9 @@ import {
14
11
  JobTypeNotFoundError,
15
12
  MissingTenantIdError
16
13
  } from "./chunk-T4BIIU5E.js";
14
+ import {
15
+ JOBS_MULTI_TENANT
16
+ } from "./chunk-ZPL74UQN.js";
17
17
  import {
18
18
  __decorateClass,
19
19
  __decorateParam
@@ -632,4 +632,4 @@ function serialiseError(err, attempt, retryable) {
632
632
  export {
633
633
  MemoryJobOrchestrator
634
634
  };
635
- //# sourceMappingURL=chunk-T4YJRD22.js.map
635
+ //# sourceMappingURL=chunk-BULPAAD3.js.map
@@ -7,13 +7,13 @@ import {
7
7
  import {
8
8
  MemoryJobStore
9
9
  } from "./chunk-SNQ3TOWP.js";
10
+ import {
11
+ MissingTenantIdError
12
+ } from "./chunk-T4BIIU5E.js";
10
13
  import {
11
14
  JOBS_MULTI_TENANT,
12
15
  JOB_ORCHESTRATOR
13
16
  } from "./chunk-ZPL74UQN.js";
14
- import {
15
- MissingTenantIdError
16
- } from "./chunk-T4BIIU5E.js";
17
17
  import {
18
18
  __decorateClass,
19
19
  __decorateParam
@@ -209,4 +209,4 @@ function compareBy(a, b, order) {
209
209
  export {
210
210
  MemoryJobRunService
211
211
  };
212
- //# sourceMappingURL=chunk-QSJ3J4HE.js.map
212
+ //# sourceMappingURL=chunk-CDLWYZVQ.js.map
@@ -1,12 +1,12 @@
1
- import {
2
- INTEGRATION_MULTI_TENANT
3
- } from "./chunk-S7C6TIIF.js";
4
1
  import {
5
2
  assertTenantId
6
3
  } from "./chunk-MZ6GV4YF.js";
7
4
  import {
8
5
  integrationSubscriptions
9
6
  } from "./chunk-HNWZFNKP.js";
7
+ import {
8
+ INTEGRATION_MULTI_TENANT
9
+ } from "./chunk-S7C6TIIF.js";
10
10
  import {
11
11
  DRIZZLE
12
12
  } from "./chunk-U64T4YZE.js";
@@ -97,4 +97,4 @@ PostgresCursorStore = __decorateClass([
97
97
  export {
98
98
  PostgresCursorStore
99
99
  };
100
- //# sourceMappingURL=chunk-XWBK3XJK.js.map
100
+ //# sourceMappingURL=chunk-DCCZB4UC.js.map
@@ -4,19 +4,19 @@ import {
4
4
  import {
5
5
  bridgeDelivery
6
6
  } from "./chunk-2TVVBC53.js";
7
- import {
8
- jobRuns
9
- } from "./chunk-OKXZ63IA.js";
10
7
  import {
11
8
  JOBS_LISTEN_NOTIFY
12
9
  } from "./chunk-ZPL74UQN.js";
13
10
  import {
14
- BRIDGE_REGISTRY
15
- } from "./chunk-4LH67P4U.js";
11
+ jobRuns
12
+ } from "./chunk-OKXZ63IA.js";
16
13
  import {
17
14
  JOBS_WAKE_CHANNEL,
18
15
  pgNotify
19
16
  } from "./chunk-MYQIQ27N.js";
17
+ import {
18
+ BRIDGE_REGISTRY
19
+ } from "./chunk-4LH67P4U.js";
20
20
  import {
21
21
  __decorateClass,
22
22
  __decorateParam
@@ -151,4 +151,4 @@ BridgeOutboxDrainHook = __decorateClass([
151
151
  export {
152
152
  BridgeOutboxDrainHook
153
153
  };
154
- //# sourceMappingURL=chunk-DLG62MQY.js.map
154
+ //# sourceMappingURL=chunk-DTXH24LR.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  JobWorker
3
- } from "./chunk-JM3T27ZW.js";
3
+ } from "./chunk-OITTYGJS.js";
4
4
  import {
5
5
  JobsDomainModule
6
- } from "./chunk-DGYTSCKN.js";
6
+ } from "./chunk-3MAZ4TQH.js";
7
7
  import {
8
8
  BULLMQ_CONNECTION,
9
9
  BULLMQ_RESOLVED_CONFIG,
@@ -14,6 +14,10 @@ import {
14
14
  allPoolNames,
15
15
  loadPoolConfig
16
16
  } from "./chunk-RHVN6NA7.js";
17
+ import {
18
+ BootValidationError,
19
+ ReservedPoolViolationError
20
+ } from "./chunk-T4BIIU5E.js";
17
21
  import {
18
22
  HandlerRegistry
19
23
  } from "./chunk-CO6LUM72.js";
@@ -22,10 +26,6 @@ import {
22
26
  JOB_RUN_SERVICE,
23
27
  JOB_STEP_SERVICE
24
28
  } from "./chunk-ZPL74UQN.js";
25
- import {
26
- BootValidationError,
27
- ReservedPoolViolationError
28
- } from "./chunk-T4BIIU5E.js";
29
29
  import {
30
30
  tokenKey
31
31
  } from "./chunk-GYGNEQSC.js";
@@ -290,4 +290,4 @@ export {
290
290
  JobWorkerOrchestrator,
291
291
  JobWorkerModule
292
292
  };
293
- //# sourceMappingURL=chunk-AYC2HEAL.js.map
293
+ //# sourceMappingURL=chunk-GJDEPTPY.js.map
@@ -3807,6 +3807,15 @@ function formatMermaidGraph(result) {
3807
3807
  }
3808
3808
 
3809
3809
  // src/patterns/library/activity.pattern.ts
3810
+ import { z as z6 } from "zod";
3811
+ var ActivityPatternConfigSchema = z6.object({
3812
+ /** Subject entity name → derives the FK column `<subject>_id`. */
3813
+ subject: z6.string().optional(),
3814
+ /** Explicit snake_case FK column, when it does not follow `<subject>_id`. */
3815
+ subjectColumn: z6.string().optional(),
3816
+ /** snake_case recency-ordering column; defaults to `occurred_at`. */
3817
+ occurredAt: z6.string().optional()
3818
+ }).strict();
3810
3819
  var ActivityPattern = definePattern({
3811
3820
  name: "Activity",
3812
3821
  extends: ["Base"],
@@ -3814,15 +3823,16 @@ var ActivityPattern = definePattern({
3814
3823
  serviceClass: "ActivityEntityService",
3815
3824
  repositoryImport: "@shared/base-classes/activity-entity-repository",
3816
3825
  serviceImport: "@shared/base-classes/activity-entity-service",
3826
+ configSchema: ActivityPatternConfigSchema,
3817
3827
  repositoryInheritedMethods: [
3818
3828
  "findById, findByIds, list, count, exists, create, update, delete, upsertMany",
3819
- "findByDateRange, findByUserId, findByOpportunityId, findRecentByOpportunityId"
3829
+ "findByDateRange, findByUserId, findBySubjectId, findRecentBySubjectId"
3820
3830
  ],
3821
3831
  serviceInheritedMethods: [
3822
3832
  "findById, findByIds, list, count, exists, create, update, delete",
3823
- "findByDateRange, findByUserId, findByOpportunityId, findRecentByOpportunityId"
3833
+ "findByDateRange, findByUser, findBySubject, findRecent"
3824
3834
  ],
3825
- description: "Time-bounded interaction entities \u2014 date-range + opportunity scoped lookups"
3835
+ description: "Subject-scoped interaction entities \u2014 date-range + actor + config-driven subject lookups"
3826
3836
  });
3827
3837
 
3828
3838
  // src/patterns/library/base.pattern.ts
@@ -3842,8 +3852,8 @@ var BasePattern = definePattern({
3842
3852
  });
3843
3853
 
3844
3854
  // src/patterns/library/junction.pattern.ts
3845
- import { z as z6 } from "zod";
3846
- var JunctionPatternConfigSchema = z6.object({}).strict();
3855
+ import { z as z7 } from "zod";
3856
+ var JunctionPatternConfigSchema = z7.object({}).strict();
3847
3857
  var JunctionPattern = definePattern({
3848
3858
  name: "Junction",
3849
3859
  description: "Explicit many-to-many junction with role + temporal + sourcing metadata",
@@ -4039,4 +4049,4 @@ export {
4039
4049
  analyzeDomain,
4040
4050
  validateEntities
4041
4051
  };
4042
- //# sourceMappingURL=chunk-2WDX6I7T.js.map
4052
+ //# sourceMappingURL=chunk-IOQMMH6C.js.map