@pattern-stack/codegen 0.18.0 → 0.20.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 (129) hide show
  1. package/CHANGELOG.md +88 -0
  2. package/README.md +51 -0
  3. package/consumer-skills/codegen/SKILL.md +32 -0
  4. package/consumer-skills/entities/SKILL.md +2 -0
  5. package/consumer-skills/events/authoring-events.md +31 -0
  6. package/dist/{chunk-COGHTKXY.js → chunk-27ETSJ2X.js} +2 -2
  7. package/dist/{chunk-X6BP6LI5.js → chunk-3YCUIGPG.js} +10 -10
  8. package/dist/{chunk-BK5ICA2F.js → chunk-4MVGAMUA.js} +4 -4
  9. package/dist/{chunk-LQ6PYFU6.js → chunk-4OC5MSHO.js} +47 -1
  10. package/dist/chunk-4OC5MSHO.js.map +1 -0
  11. package/dist/{chunk-3A34R6CI.js → chunk-5LXOJGO2.js} +4 -4
  12. package/dist/{chunk-T6C4LFLC.js → chunk-7YGORYZD.js} +4 -4
  13. package/dist/{chunk-PKDS6QIJ.js → chunk-ATVGYF3D.js} +7 -7
  14. package/dist/{chunk-2TVVBC53.js → chunk-BORNCTH3.js} +2 -2
  15. package/dist/{chunk-7MMS36AN.js → chunk-CUSMC2KK.js} +10 -10
  16. package/dist/{chunk-V4AF6DI4.js → chunk-DUBZOXJC.js} +9 -2
  17. package/dist/{chunk-V4AF6DI4.js.map → chunk-DUBZOXJC.js.map} +1 -1
  18. package/dist/chunk-DUUCU77W.js +211 -0
  19. package/dist/chunk-DUUCU77W.js.map +1 -0
  20. package/dist/{chunk-OFRRBC7M.js → chunk-E2BRT5IB.js} +15 -1
  21. package/dist/chunk-E2BRT5IB.js.map +1 -0
  22. package/dist/{chunk-VQOAATIG.js → chunk-FLYF76CU.js} +4 -4
  23. package/dist/{chunk-43SBT72G.js → chunk-I6UXRJ3Q.js} +4 -4
  24. package/dist/{chunk-VHAR2BGH.js → chunk-INO47JXD.js} +5 -5
  25. package/dist/{chunk-BGULBWKJ.js → chunk-JOBQ6RUU.js} +1 -1
  26. package/dist/chunk-JOBQ6RUU.js.map +1 -0
  27. package/dist/{chunk-C5E7H553.js → chunk-KBO5OOON.js} +4 -4
  28. package/dist/{chunk-R4BPUUB5.js → chunk-KHQ72A5F.js} +54 -6
  29. package/dist/chunk-KHQ72A5F.js.map +1 -0
  30. package/dist/{chunk-CFFTPWHM.js → chunk-KK5A7B2T.js} +70 -5
  31. package/dist/chunk-KK5A7B2T.js.map +1 -0
  32. package/dist/{chunk-RKNW56RU.js → chunk-LARB26EI.js} +73 -6
  33. package/dist/chunk-LARB26EI.js.map +1 -0
  34. package/dist/{chunk-2VGVSL2D.js → chunk-LQXBQO72.js} +6 -6
  35. package/dist/{chunk-K2I6XIK5.js → chunk-MVKW2BCR.js} +2 -2
  36. package/dist/{chunk-EWYI5GGJ.js → chunk-NYJYK6J4.js} +15 -15
  37. package/dist/{chunk-IN3EWFB4.js → chunk-QSJ3J4HE.js} +6 -6
  38. package/dist/{chunk-TBGTMALE.js → chunk-SGSWVNNB.js} +4 -4
  39. package/dist/chunk-SYVZ4MD2.js +1 -0
  40. package/dist/{chunk-NXHL5YII.js → chunk-T6SCOJF4.js} +4 -4
  41. package/dist/{chunk-YZLBU6O2.js → chunk-WKNOEVWQ.js} +5 -5
  42. package/dist/runtime/base-classes/index.js +17 -17
  43. package/dist/runtime/subsystems/auth/auth.module.js +3 -3
  44. package/dist/runtime/subsystems/auth/index.js +10 -10
  45. package/dist/runtime/subsystems/bridge/bridge-delivery-handler.js +2 -2
  46. package/dist/runtime/subsystems/bridge/bridge-delivery.drizzle-backend.js +3 -3
  47. package/dist/runtime/subsystems/bridge/bridge-delivery.schema.js +2 -2
  48. package/dist/runtime/subsystems/bridge/bridge-outbox-drain-hook.js +6 -6
  49. package/dist/runtime/subsystems/bridge/bridge.module.js +18 -18
  50. package/dist/runtime/subsystems/bridge/index.js +21 -21
  51. package/dist/runtime/subsystems/cache/cache.drizzle-backend.js +2 -2
  52. package/dist/runtime/subsystems/cache/cache.module.js +3 -3
  53. package/dist/runtime/subsystems/cache/index.js +5 -5
  54. package/dist/runtime/subsystems/events/domain-events.schema.js +1 -1
  55. package/dist/runtime/subsystems/events/event-bus.drizzle-backend.d.ts +19 -32
  56. package/dist/runtime/subsystems/events/event-bus.drizzle-backend.js +3 -3
  57. package/dist/runtime/subsystems/events/event-bus.memory-backend.d.ts +18 -1
  58. package/dist/runtime/subsystems/events/event-bus.memory-backend.js +1 -1
  59. package/dist/runtime/subsystems/events/event-bus.protocol.d.ts +45 -1
  60. package/dist/runtime/subsystems/events/event-scheduler.d.ts +96 -0
  61. package/dist/runtime/subsystems/events/event-scheduler.js +25 -0
  62. package/dist/runtime/subsystems/events/event-scheduler.js.map +1 -0
  63. package/dist/runtime/subsystems/events/events-errors.d.ts +12 -1
  64. package/dist/runtime/subsystems/events/events-errors.js +5 -3
  65. package/dist/runtime/subsystems/events/events.module.d.ts +41 -2
  66. package/dist/runtime/subsystems/events/events.module.js +11 -8
  67. package/dist/runtime/subsystems/events/generated/bus.js +3 -3
  68. package/dist/runtime/subsystems/events/generated/index.js +3 -3
  69. package/dist/runtime/subsystems/events/generated/registry.d.ts +6 -0
  70. package/dist/runtime/subsystems/events/generated/registry.js +1 -1
  71. package/dist/runtime/subsystems/events/index.d.ts +4 -3
  72. package/dist/runtime/subsystems/events/index.js +38 -14
  73. package/dist/runtime/subsystems/index.d.ts +1 -0
  74. package/dist/runtime/subsystems/index.js +117 -116
  75. package/dist/runtime/subsystems/integration/build-change-source.js +2 -2
  76. package/dist/runtime/subsystems/integration/index.js +36 -36
  77. package/dist/runtime/subsystems/integration/integration.module.js +4 -4
  78. package/dist/runtime/subsystems/jobs/index.js +33 -33
  79. package/dist/runtime/subsystems/jobs/job-orchestrator.bullmq-backend.js +5 -5
  80. package/dist/runtime/subsystems/jobs/job-orchestrator.drizzle-backend.js +3 -3
  81. package/dist/runtime/subsystems/jobs/job-orchestrator.memory-backend.js +2 -2
  82. package/dist/runtime/subsystems/jobs/job-run-service.drizzle-backend.js +2 -2
  83. package/dist/runtime/subsystems/jobs/job-run-service.memory-backend.js +3 -3
  84. package/dist/runtime/subsystems/jobs/job-worker.bullmq-backend.js +3 -3
  85. package/dist/runtime/subsystems/jobs/job-worker.js +2 -2
  86. package/dist/runtime/subsystems/jobs/job-worker.module.js +11 -11
  87. package/dist/runtime/subsystems/jobs/jobs-domain.module.js +9 -9
  88. package/dist/runtime/subsystems/storage/index.js +4 -4
  89. package/dist/runtime/subsystems/storage/storage.module.js +2 -2
  90. package/dist/src/cli/index.js +168 -22
  91. package/dist/src/cli/index.js.map +1 -1
  92. package/dist/src/index.js +12 -12
  93. package/package.json +1 -1
  94. package/runtime/subsystems/events/domain-events.schema.ts +16 -0
  95. package/runtime/subsystems/events/event-bus.drizzle-backend.ts +103 -1
  96. package/runtime/subsystems/events/event-bus.memory-backend.ts +57 -1
  97. package/runtime/subsystems/events/event-bus.protocol.ts +47 -0
  98. package/runtime/subsystems/events/event-scheduler.ts +351 -0
  99. package/runtime/subsystems/events/events-errors.ts +14 -0
  100. package/runtime/subsystems/events/events.module.ts +78 -1
  101. package/runtime/subsystems/events/generated/registry.ts +1 -0
  102. package/runtime/subsystems/events/index.ts +25 -3
  103. package/dist/chunk-BGULBWKJ.js.map +0 -1
  104. package/dist/chunk-CFFTPWHM.js.map +0 -1
  105. package/dist/chunk-FN2PYDPP.js +0 -1
  106. package/dist/chunk-LQ6PYFU6.js.map +0 -1
  107. package/dist/chunk-OFRRBC7M.js.map +0 -1
  108. package/dist/chunk-R4BPUUB5.js.map +0 -1
  109. package/dist/chunk-RKNW56RU.js.map +0 -1
  110. /package/dist/{chunk-COGHTKXY.js.map → chunk-27ETSJ2X.js.map} +0 -0
  111. /package/dist/{chunk-X6BP6LI5.js.map → chunk-3YCUIGPG.js.map} +0 -0
  112. /package/dist/{chunk-BK5ICA2F.js.map → chunk-4MVGAMUA.js.map} +0 -0
  113. /package/dist/{chunk-3A34R6CI.js.map → chunk-5LXOJGO2.js.map} +0 -0
  114. /package/dist/{chunk-T6C4LFLC.js.map → chunk-7YGORYZD.js.map} +0 -0
  115. /package/dist/{chunk-PKDS6QIJ.js.map → chunk-ATVGYF3D.js.map} +0 -0
  116. /package/dist/{chunk-2TVVBC53.js.map → chunk-BORNCTH3.js.map} +0 -0
  117. /package/dist/{chunk-7MMS36AN.js.map → chunk-CUSMC2KK.js.map} +0 -0
  118. /package/dist/{chunk-VQOAATIG.js.map → chunk-FLYF76CU.js.map} +0 -0
  119. /package/dist/{chunk-43SBT72G.js.map → chunk-I6UXRJ3Q.js.map} +0 -0
  120. /package/dist/{chunk-VHAR2BGH.js.map → chunk-INO47JXD.js.map} +0 -0
  121. /package/dist/{chunk-C5E7H553.js.map → chunk-KBO5OOON.js.map} +0 -0
  122. /package/dist/{chunk-2VGVSL2D.js.map → chunk-LQXBQO72.js.map} +0 -0
  123. /package/dist/{chunk-K2I6XIK5.js.map → chunk-MVKW2BCR.js.map} +0 -0
  124. /package/dist/{chunk-EWYI5GGJ.js.map → chunk-NYJYK6J4.js.map} +0 -0
  125. /package/dist/{chunk-IN3EWFB4.js.map → chunk-QSJ3J4HE.js.map} +0 -0
  126. /package/dist/{chunk-TBGTMALE.js.map → chunk-SGSWVNNB.js.map} +0 -0
  127. /package/dist/{chunk-FN2PYDPP.js.map → chunk-SYVZ4MD2.js.map} +0 -0
  128. /package/dist/{chunk-NXHL5YII.js.map → chunk-T6SCOJF4.js.map} +0 -0
  129. /package/dist/{chunk-YZLBU6O2.js.map → chunk-WKNOEVWQ.js.map} +0 -0
@@ -2,7 +2,7 @@ import "../../../chunk-W4HOHZVF.js";
2
2
  import {
3
3
  JobWorkerModule,
4
4
  JobWorkerOrchestrator
5
- } from "../../../chunk-X6BP6LI5.js";
5
+ } from "../../../chunk-3YCUIGPG.js";
6
6
  import {
7
7
  JOB_WORKER_OPTIONS,
8
8
  JobWorker,
@@ -10,41 +10,20 @@ import {
10
10
  buildStaleSweepQuery,
11
11
  classifyError,
12
12
  computeBackoff
13
- } from "../../../chunk-C5E7H553.js";
13
+ } from "../../../chunk-KBO5OOON.js";
14
14
  import {
15
15
  JobsDomainModule
16
- } from "../../../chunk-EWYI5GGJ.js";
17
- import {
18
- MemoryJobOrchestrator
19
- } from "../../../chunk-VQOAATIG.js";
20
- import {
21
- MemoryJobStepService
22
- } from "../../../chunk-PNZSGAB2.js";
16
+ } from "../../../chunk-NYJYK6J4.js";
23
17
  import {
24
18
  DrizzleJobRunService
25
- } from "../../../chunk-3A34R6CI.js";
19
+ } from "../../../chunk-5LXOJGO2.js";
26
20
  import {
27
21
  MemoryJobRunService
28
- } from "../../../chunk-IN3EWFB4.js";
29
- import {
30
- MemoryJobStore
31
- } from "../../../chunk-SNQ3TOWP.js";
22
+ } from "../../../chunk-QSJ3J4HE.js";
32
23
  import "../../../chunk-L3LZWWSX.js";
33
24
  import {
34
25
  DrizzleJobStepService
35
26
  } from "../../../chunk-DV4RV2DC.js";
36
- import {
37
- DrizzleJobOrchestrator
38
- } from "../../../chunk-7MMS36AN.js";
39
- import {
40
- BootValidationError,
41
- JobCollisionError,
42
- JobNotReplayableError,
43
- JobTemplateFieldMissingError,
44
- JobTypeNotFoundError,
45
- MissingTenantIdError,
46
- ReservedPoolViolationError
47
- } from "../../../chunk-T4BIIU5E.js";
48
27
  import {
49
28
  BULLMQ_CONNECTION,
50
29
  BULLMQ_RESOLVED_CONFIG,
@@ -59,13 +38,8 @@ import {
59
38
  loadPoolConfig
60
39
  } from "../../../chunk-RHVN6NA7.js";
61
40
  import {
62
- HandlerRegistry,
63
- JOB_HANDLER_METADATA_KEY,
64
- JOB_HANDLER_REGISTRY,
65
- JobHandler,
66
- JobHandlerBase,
67
- ParentClosePolicy
68
- } from "../../../chunk-7P5ODGLA.js";
41
+ DrizzleJobOrchestrator
42
+ } from "../../../chunk-CUSMC2KK.js";
69
43
  import {
70
44
  collisionModeEnum,
71
45
  jobRunStatusEnum,
@@ -79,6 +53,15 @@ import {
79
53
  triggerSourceEnum,
80
54
  waitKindEnum
81
55
  } from "../../../chunk-OKXZ63IA.js";
56
+ import {
57
+ MemoryJobOrchestrator
58
+ } from "../../../chunk-FLYF76CU.js";
59
+ import {
60
+ MemoryJobStepService
61
+ } from "../../../chunk-PNZSGAB2.js";
62
+ import {
63
+ MemoryJobStore
64
+ } from "../../../chunk-SNQ3TOWP.js";
82
65
  import {
83
66
  JOBS_LISTEN_NOTIFY,
84
67
  JOBS_MULTI_TENANT,
@@ -86,6 +69,23 @@ import {
86
69
  JOB_RUN_SERVICE,
87
70
  JOB_STEP_SERVICE
88
71
  } from "../../../chunk-ZPL74UQN.js";
72
+ import {
73
+ BootValidationError,
74
+ JobCollisionError,
75
+ JobNotReplayableError,
76
+ JobTemplateFieldMissingError,
77
+ JobTypeNotFoundError,
78
+ MissingTenantIdError,
79
+ ReservedPoolViolationError
80
+ } from "../../../chunk-T4BIIU5E.js";
81
+ import {
82
+ HandlerRegistry,
83
+ JOB_HANDLER_METADATA_KEY,
84
+ JOB_HANDLER_REGISTRY,
85
+ JobHandler,
86
+ JobHandlerBase,
87
+ ParentClosePolicy
88
+ } from "../../../chunk-7P5ODGLA.js";
89
89
  import {
90
90
  EVENTS_WAKE_CHANNEL,
91
91
  JOBS_WAKE_CHANNEL,
@@ -1,14 +1,12 @@
1
- import {
2
- DrizzleJobOrchestrator
3
- } from "../../../chunk-7MMS36AN.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";
11
- import "../../../chunk-7P5ODGLA.js";
7
+ import {
8
+ DrizzleJobOrchestrator
9
+ } from "../../../chunk-CUSMC2KK.js";
12
10
  import {
13
11
  jobRuns,
14
12
  jobs
@@ -16,6 +14,8 @@ import {
16
14
  import {
17
15
  JOBS_MULTI_TENANT
18
16
  } from "../../../chunk-ZPL74UQN.js";
17
+ import "../../../chunk-T4BIIU5E.js";
18
+ import "../../../chunk-7P5ODGLA.js";
19
19
  import "../../../chunk-Q6LRJ4VI.js";
20
20
  import "../../../chunk-GYGNEQSC.js";
21
21
  import {
@@ -2,11 +2,11 @@ import {
2
2
  DrizzleJobOrchestrator,
3
3
  TERMINAL_STATUSES,
4
4
  evaluateKeyTemplate
5
- } from "../../../chunk-7MMS36AN.js";
6
- import "../../../chunk-T4BIIU5E.js";
7
- import "../../../chunk-7P5ODGLA.js";
5
+ } from "../../../chunk-CUSMC2KK.js";
8
6
  import "../../../chunk-OKXZ63IA.js";
9
7
  import "../../../chunk-ZPL74UQN.js";
8
+ import "../../../chunk-T4BIIU5E.js";
9
+ import "../../../chunk-7P5ODGLA.js";
10
10
  import "../../../chunk-Q6LRJ4VI.js";
11
11
  import "../../../chunk-GYGNEQSC.js";
12
12
  import "../../../chunk-U64T4YZE.js";
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  MemoryJobOrchestrator
3
- } from "../../../chunk-VQOAATIG.js";
3
+ } from "../../../chunk-FLYF76CU.js";
4
4
  import "../../../chunk-PNZSGAB2.js";
5
5
  import "../../../chunk-SNQ3TOWP.js";
6
+ import "../../../chunk-ZPL74UQN.js";
6
7
  import "../../../chunk-T4BIIU5E.js";
7
8
  import "../../../chunk-7P5ODGLA.js";
8
- import "../../../chunk-ZPL74UQN.js";
9
9
  import "../../../chunk-GYGNEQSC.js";
10
10
  import "../../../chunk-2E224ZSN.js";
11
11
  export {
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  DrizzleJobRunService
3
- } from "../../../chunk-3A34R6CI.js";
3
+ } from "../../../chunk-5LXOJGO2.js";
4
4
  import "../../../chunk-L3LZWWSX.js";
5
- import "../../../chunk-T4BIIU5E.js";
6
5
  import "../../../chunk-OKXZ63IA.js";
7
6
  import "../../../chunk-ZPL74UQN.js";
7
+ import "../../../chunk-T4BIIU5E.js";
8
8
  import "../../../chunk-GYGNEQSC.js";
9
9
  import "../../../chunk-U64T4YZE.js";
10
10
  import "../../../chunk-2E224ZSN.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  MemoryJobRunService
3
- } from "../../../chunk-IN3EWFB4.js";
4
- import "../../../chunk-SNQ3TOWP.js";
3
+ } from "../../../chunk-QSJ3J4HE.js";
5
4
  import "../../../chunk-L3LZWWSX.js";
6
- import "../../../chunk-T4BIIU5E.js";
5
+ import "../../../chunk-SNQ3TOWP.js";
7
6
  import "../../../chunk-ZPL74UQN.js";
7
+ import "../../../chunk-T4BIIU5E.js";
8
8
  import "../../../chunk-GYGNEQSC.js";
9
9
  import "../../../chunk-2E224ZSN.js";
10
10
  export {
@@ -1,9 +1,9 @@
1
- import {
2
- JOB_HANDLER_REGISTRY
3
- } from "../../../chunk-7P5ODGLA.js";
4
1
  import {
5
2
  jobRuns
6
3
  } from "../../../chunk-OKXZ63IA.js";
4
+ import {
5
+ JOB_HANDLER_REGISTRY
6
+ } from "../../../chunk-7P5ODGLA.js";
7
7
  import "../../../chunk-GYGNEQSC.js";
8
8
  import "../../../chunk-2E224ZSN.js";
9
9
 
@@ -6,10 +6,10 @@ import {
6
6
  buildStaleSweepQuery,
7
7
  classifyError,
8
8
  computeBackoff
9
- } from "../../../chunk-C5E7H553.js";
10
- import "../../../chunk-7P5ODGLA.js";
9
+ } from "../../../chunk-KBO5OOON.js";
11
10
  import "../../../chunk-OKXZ63IA.js";
12
11
  import "../../../chunk-ZPL74UQN.js";
12
+ import "../../../chunk-7P5ODGLA.js";
13
13
  import "../../../chunk-Q6LRJ4VI.js";
14
14
  import "../../../chunk-GYGNEQSC.js";
15
15
  import "../../../chunk-U64T4YZE.js";
@@ -2,23 +2,23 @@ import {
2
2
  JOB_WORKER_MODULE_OPTIONS,
3
3
  JobWorkerModule,
4
4
  JobWorkerOrchestrator
5
- } from "../../../chunk-X6BP6LI5.js";
6
- import "../../../chunk-C5E7H553.js";
7
- import "../../../chunk-EWYI5GGJ.js";
8
- import "../../../chunk-VQOAATIG.js";
9
- import "../../../chunk-PNZSGAB2.js";
10
- import "../../../chunk-3A34R6CI.js";
11
- import "../../../chunk-IN3EWFB4.js";
12
- import "../../../chunk-SNQ3TOWP.js";
5
+ } from "../../../chunk-3YCUIGPG.js";
6
+ import "../../../chunk-KBO5OOON.js";
7
+ import "../../../chunk-NYJYK6J4.js";
8
+ import "../../../chunk-5LXOJGO2.js";
9
+ import "../../../chunk-QSJ3J4HE.js";
13
10
  import "../../../chunk-L3LZWWSX.js";
14
11
  import "../../../chunk-DV4RV2DC.js";
15
- import "../../../chunk-7MMS36AN.js";
16
- import "../../../chunk-T4BIIU5E.js";
17
12
  import "../../../chunk-I6MVCB5A.js";
18
13
  import "../../../chunk-RHVN6NA7.js";
19
- import "../../../chunk-7P5ODGLA.js";
14
+ import "../../../chunk-CUSMC2KK.js";
20
15
  import "../../../chunk-OKXZ63IA.js";
16
+ import "../../../chunk-FLYF76CU.js";
17
+ import "../../../chunk-PNZSGAB2.js";
18
+ import "../../../chunk-SNQ3TOWP.js";
21
19
  import "../../../chunk-ZPL74UQN.js";
20
+ import "../../../chunk-T4BIIU5E.js";
21
+ import "../../../chunk-7P5ODGLA.js";
22
22
  import "../../../chunk-Q6LRJ4VI.js";
23
23
  import "../../../chunk-GYGNEQSC.js";
24
24
  import "../../../chunk-U64T4YZE.js";
@@ -1,20 +1,20 @@
1
1
  import {
2
2
  JobsDomainModule
3
- } from "../../../chunk-EWYI5GGJ.js";
4
- import "../../../chunk-VQOAATIG.js";
5
- import "../../../chunk-PNZSGAB2.js";
6
- import "../../../chunk-3A34R6CI.js";
7
- import "../../../chunk-IN3EWFB4.js";
8
- import "../../../chunk-SNQ3TOWP.js";
3
+ } from "../../../chunk-NYJYK6J4.js";
4
+ import "../../../chunk-5LXOJGO2.js";
5
+ import "../../../chunk-QSJ3J4HE.js";
9
6
  import "../../../chunk-L3LZWWSX.js";
10
7
  import "../../../chunk-DV4RV2DC.js";
11
- import "../../../chunk-7MMS36AN.js";
12
- import "../../../chunk-T4BIIU5E.js";
13
8
  import "../../../chunk-I6MVCB5A.js";
14
9
  import "../../../chunk-RHVN6NA7.js";
15
- import "../../../chunk-7P5ODGLA.js";
10
+ import "../../../chunk-CUSMC2KK.js";
16
11
  import "../../../chunk-OKXZ63IA.js";
12
+ import "../../../chunk-FLYF76CU.js";
13
+ import "../../../chunk-PNZSGAB2.js";
14
+ import "../../../chunk-SNQ3TOWP.js";
17
15
  import "../../../chunk-ZPL74UQN.js";
16
+ import "../../../chunk-T4BIIU5E.js";
17
+ import "../../../chunk-7P5ODGLA.js";
18
18
  import "../../../chunk-Q6LRJ4VI.js";
19
19
  import "../../../chunk-GYGNEQSC.js";
20
20
  import "../../../chunk-U64T4YZE.js";
@@ -1,16 +1,16 @@
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";
11
8
  import {
12
9
  MemoryStorageBackend
13
10
  } from "../../../chunk-3SZFUTXE.js";
11
+ import {
12
+ STORAGE
13
+ } from "../../../chunk-NYBCQZC7.js";
14
14
  import "../../../chunk-J6MN42LG.js";
15
15
  import "../../../chunk-GYGNEQSC.js";
16
16
  import "../../../chunk-2E224ZSN.js";
@@ -1,9 +1,9 @@
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";
6
+ import "../../../chunk-NYBCQZC7.js";
7
7
  import "../../../chunk-J6MN42LG.js";
8
8
  import "../../../chunk-GYGNEQSC.js";
9
9
  import "../../../chunk-2E224ZSN.js";
@@ -17,6 +17,7 @@ import {
17
17
  getManifestDir,
18
18
  getOrchestrationPatternNames,
19
19
  getPendingSuggestions,
20
+ isActiveProvider,
20
21
  isManifestStale,
21
22
  loadAppPatterns,
22
23
  loadEntities,
@@ -37,35 +38,35 @@ import {
37
38
  validateOrchestrationProject,
38
39
  validateProviders,
39
40
  writeManifest
40
- } from "../../chunk-CFFTPWHM.js";
41
+ } from "../../chunk-KK5A7B2T.js";
41
42
  import "../../chunk-KVOWSC5S.js";
42
- import "../../chunk-PKDS6QIJ.js";
43
- import "../../chunk-PRWIX6UW.js";
43
+ import "../../chunk-ATVGYF3D.js";
44
44
  import "../../chunk-YK5JEVLX.js";
45
45
  import "../../chunk-EO2QPOKH.js";
46
- import "../../chunk-SQDOBLBP.js";
47
- import "../../chunk-TDEHU73T.js";
48
- import "../../chunk-LG57S2SC.js";
46
+ import "../../chunk-PRWIX6UW.js";
49
47
  import "../../chunk-XWBK3XJK.js";
50
- import "../../chunk-S7C6TIIF.js";
51
- import "../../chunk-MZ6GV4YF.js";
52
- import "../../chunk-HNWZFNKP.js";
53
48
  import "../../chunk-AHV4GDYM.js";
54
- import "../../chunk-43SBT72G.js";
55
- import "../../chunk-4MF3HKJA.js";
56
- import "../../chunk-TIZXQU26.js";
49
+ import "../../chunk-SQDOBLBP.js";
57
50
  import "../../chunk-JEINYUJH.js";
58
51
  import {
59
52
  isDivisibleCursor
60
53
  } from "../../chunk-5TK7MEN4.js";
61
54
  import "../../chunk-4KNXX6TI.js";
62
55
  import "../../chunk-3CJFPU6Q.js";
56
+ import "../../chunk-TDEHU73T.js";
57
+ import "../../chunk-S7C6TIIF.js";
58
+ import "../../chunk-MZ6GV4YF.js";
59
+ import "../../chunk-LG57S2SC.js";
60
+ import "../../chunk-HNWZFNKP.js";
61
+ import "../../chunk-I6UXRJ3Q.js";
62
+ import "../../chunk-TIZXQU26.js";
63
+ import "../../chunk-4MF3HKJA.js";
63
64
  import "../../chunk-U64T4YZE.js";
64
65
  import "../../chunk-2E224ZSN.js";
65
66
 
66
67
  // src/cli/index.ts
67
68
  import { readFileSync as readFileSync6 } from "fs";
68
- import { join as join17 } from "path";
69
+ import { join as join18 } from "path";
69
70
  import { Builtins, Cli, Command as Command13 } from "clipanion";
70
71
 
71
72
  // src/cli/noun-module.ts
@@ -2443,6 +2444,11 @@ var REGISTRY_INTERFACE = [
2443
2444
  " destination?: string;",
2444
2445
  " version: number;",
2445
2446
  " retry: { attempts: number; backoff: 'linear' | 'exponential' };",
2447
+ // ADR-039 — declarative time-based emission. Present only on scheduled
2448
+ // events; the runtime EventScheduler reads it (+ direction/pool above) to
2449
+ // materialise ticks. `every` is ms-or-duration-string; the rest carry the
2450
+ // schema defaults.
2451
+ " schedule?: { every: string | number; align: boolean; catchUp: boolean; maxCatchUpSlots: number };",
2446
2452
  "}"
2447
2453
  ].join("\n");
2448
2454
  var REGISTRY_GETTER = [
@@ -2498,6 +2504,12 @@ function buildRegistryContent(events) {
2498
2504
  chunks.push(
2499
2505
  ` retry: { attempts: ${ev.retry.attempts}, backoff: '${ev.retry.backoff}' },`
2500
2506
  );
2507
+ if (ev.schedule !== void 0) {
2508
+ const every = typeof ev.schedule.every === "number" ? String(ev.schedule.every) : `'${ev.schedule.every}'`;
2509
+ chunks.push(
2510
+ ` schedule: { every: ${every}, align: ${ev.schedule.align}, catchUp: ${ev.schedule.catchUp}, maxCatchUpSlots: ${ev.schedule.maxCatchUpSlots} },`
2511
+ );
2512
+ }
2501
2513
  chunks.push(` },`);
2502
2514
  }
2503
2515
  chunks.push(
@@ -4415,8 +4427,9 @@ function emitAdapters(opts) {
4415
4427
  };
4416
4428
  const entitiesBySurface = collectEntitiesBySurface(opts.entities);
4417
4429
  const entityByName = new Map(opts.entities.map((e) => [e.entity.name, e]));
4430
+ const activeProviders = opts.providers.filter((p) => isActiveProvider(p.definition));
4418
4431
  const bySurface = /* @__PURE__ */ new Map();
4419
- for (const { definition } of opts.providers) {
4432
+ for (const { definition } of activeProviders) {
4420
4433
  for (const surface of definition.surfaces) {
4421
4434
  if (!SURFACE_REGISTRY[surface]) {
4422
4435
  result.skippedSurfaces.push({
@@ -4431,7 +4444,7 @@ function emitAdapters(opts) {
4431
4444
  bySurface.set(surface, list);
4432
4445
  }
4433
4446
  }
4434
- const defBySlug = new Map(opts.providers.map((p) => [p.definition.slug, p.definition]));
4447
+ const defBySlug = new Map(activeProviders.map((p) => [p.definition.slug, p.definition]));
4435
4448
  for (const [surface, slugs] of bySurface) {
4436
4449
  const surfaceDir = join8(opts.outputRoot, surface);
4437
4450
  const adaptersDir = join8(surfaceDir, "adapters");
@@ -4793,6 +4806,7 @@ function generateProviderModules(opts) {
4793
4806
  const mode = opts.mode ?? "package";
4794
4807
  const written = [];
4795
4808
  for (const { definition, filePath } of loaded) {
4809
+ if (!isActiveProvider(definition)) continue;
4796
4810
  const sourceYaml = relativeSource(filePath);
4797
4811
  const content = generateProviderModule(definition, sourceYaml, mode);
4798
4812
  const outPath = join9(
@@ -5671,8 +5685,105 @@ function emitFields(ctx, outDir) {
5671
5685
  return written;
5672
5686
  }
5673
5687
 
5674
- // src/emitters/frontend/emit-index.ts
5688
+ // src/emitters/frontend/emit-providers.ts
5675
5689
  import { join as join16 } from "path";
5690
+ var SOURCE_DESC2 = "definitions/providers";
5691
+ function vendorLiteral(p, indent) {
5692
+ const lines = [
5693
+ `${indent}{`,
5694
+ `${indent} provider: '${p.slug}',`,
5695
+ `${indent} name: '${(p.displayName ?? p.slug).replace(/'/g, "\\'")}',`,
5696
+ `${indent} planned: ${p.status === "planned"},`,
5697
+ `${indent} surfaces: [${p.surfaces.map((s) => `'${s}'`).join(", ")}],`
5698
+ ];
5699
+ if (p.display?.blurb) {
5700
+ lines.push(`${indent} blurb: '${p.display.blurb.replace(/'/g, "\\'")}',`);
5701
+ }
5702
+ if (p.display?.hint) {
5703
+ lines.push(`${indent} hint: '${p.display.hint.replace(/'/g, "\\'")}',`);
5704
+ }
5705
+ lines.push(`${indent}},`);
5706
+ return lines.join("\n");
5707
+ }
5708
+ function sortProviders(providers) {
5709
+ return [...providers].sort((a, b) => a.slug.localeCompare(b.slug));
5710
+ }
5711
+ function buildProvidersFile(ctx) {
5712
+ const providers = sortProviders(ctx.providers ?? []);
5713
+ const categories = ctx.config.catalogCategories;
5714
+ const flat = providers.map((p) => vendorLiteral(p, " ")).join("\n");
5715
+ const groups = categories.map((cat) => {
5716
+ const vendors = providers.filter((p) => p.display?.category === cat.id);
5717
+ const vendorBlock = vendors.map((p) => vendorLiteral(p, " ")).join("\n");
5718
+ return [
5719
+ " {",
5720
+ ` id: '${cat.id}',`,
5721
+ ` name: '${cat.name.replace(/'/g, "\\'")}',`,
5722
+ ` blurb: '${cat.blurb.replace(/'/g, "\\'")}',`,
5723
+ vendors.length > 0 ? ` vendors: [
5724
+ ${vendorBlock}
5725
+ ],` : " vendors: [],",
5726
+ " },"
5727
+ ].join("\n");
5728
+ }).join("\n");
5729
+ const body = `/**
5730
+ * Providers catalog \u2014 emitted from \`definitions/providers/*.yaml\` (slug,
5731
+ * display_name, surfaces, status, display) + \`frontend.catalog.categories\`
5732
+ * (codegen.config.yaml). Provider truth lives in the definitions; this file
5733
+ * is a projection \u2014 never hand-edit, never hand-duplicate.
5734
+ *
5735
+ * \`planned: true\` vendors are roadmap stubs (no backend integration yet) \u2014
5736
+ * render them as unconnectable tiles. Join live rows on \`provider\` (the
5737
+ * canonical slug, e.g. \`Connection.provider\`).
5738
+ */
5739
+
5740
+ export type ProviderStatus = 'active' | 'planned';
5741
+
5742
+ export interface CatalogVendor {
5743
+ /** Provider slug \u2014 joins to \`Connection.provider\` / STRATEGY_REGISTRY keys. */
5744
+ provider: string;
5745
+ name: string;
5746
+ /** True for roadmap stubs (\`status: planned\`) \u2014 no backend integration yet. */
5747
+ planned: boolean;
5748
+ /** Surfaces this provider serves (ADR-0006). */
5749
+ surfaces: string[];
5750
+ blurb?: string;
5751
+ /** Sub-line shown on an unconnected ("available") tile. */
5752
+ hint?: string;
5753
+ }
5754
+
5755
+ export interface CatalogCategory {
5756
+ id: string;
5757
+ name: string;
5758
+ blurb: string;
5759
+ vendors: CatalogVendor[];
5760
+ }
5761
+
5762
+ /** Every provider definition, flat (active + planned), slug-sorted. */
5763
+ export const PROVIDERS: CatalogVendor[] = [
5764
+ ${flat}
5765
+ ];
5766
+
5767
+ /**
5768
+ * Category-grouped catalog (\`frontend.catalog.categories\` order). Providers
5769
+ * join a group via \`display.category\`; uncategorized providers appear only
5770
+ * in \`PROVIDERS\`.
5771
+ */
5772
+ export const PROVIDER_CATALOG: CatalogCategory[] = [
5773
+ ${groups}
5774
+ ];
5775
+ `;
5776
+ return withBanner(SOURCE_DESC2, body);
5777
+ }
5778
+ function emitProviders(ctx, outDir) {
5779
+ if (!ctx.providers || ctx.providers.length === 0) return [];
5780
+ const path36 = join16(outDir, "providers.ts");
5781
+ writeFile2(path36, buildProvidersFile(ctx));
5782
+ return [path36];
5783
+ }
5784
+
5785
+ // src/emitters/frontend/emit-index.ts
5786
+ import { join as join17 } from "path";
5676
5787
 
5677
5788
  // src/emitters/frontend/deps.ts
5678
5789
  var FRONTEND_EMITTED_DEPS = {
@@ -5723,19 +5834,23 @@ export * from './entities/index';
5723
5834
 
5724
5835
  // Field metadata (DataGrid / forms / admin)
5725
5836
  export * from './fields/index';
5726
-
5837
+ ${ctx.providers && ctx.providers.length > 0 ? `
5838
+ // Providers catalog (definitions/providers + frontend.catalog.categories)
5839
+ export * from './providers';
5840
+ ` : ""}
5727
5841
  // Unified store (entities + collections + resolvers + lookups)
5728
5842
  export * from './store/module-index';
5729
5843
  `;
5730
5844
  return withBanner(SOURCE_DESC_SET6, body);
5731
5845
  }
5732
5846
  function emitIndex(ctx, outDir) {
5733
- const indexPath = join16(outDir, "index.ts");
5847
+ const indexPath = join17(outDir, "index.ts");
5734
5848
  writeFile2(indexPath, buildRootIndexFile(ctx));
5735
5849
  return [indexPath];
5736
5850
  }
5737
5851
 
5738
5852
  // src/emitters/frontend/load-context.ts
5853
+ import { existsSync as existsSync8, statSync as statSync5 } from "fs";
5739
5854
  import path12 from "path";
5740
5855
 
5741
5856
  // src/schema/codegen-config.schema.ts
@@ -5779,10 +5894,20 @@ var FrontendSyncConfigSchema = z.object({
5779
5894
  apiBaseUrlImport: z.string().nullable().default(null),
5780
5895
  apiUrl: z.string().default("/api")
5781
5896
  }).default({});
5897
+ var FrontendCatalogConfigSchema = z.object({
5898
+ categories: z.array(
5899
+ z.object({
5900
+ id: z.string(),
5901
+ name: z.string(),
5902
+ blurb: z.string().default("")
5903
+ }).strict()
5904
+ ).default([])
5905
+ }).default({});
5782
5906
  var FrontendConfigSchema = z.object({
5783
5907
  auth: FrontendAuthConfigSchema,
5784
5908
  parsers: z.record(z.string()).default({ timestamptz: "(date: string) => new Date(date)" }),
5785
- sync: FrontendSyncConfigSchema
5909
+ sync: FrontendSyncConfigSchema,
5910
+ catalog: FrontendCatalogConfigSchema
5786
5911
  }).strict().default({});
5787
5912
 
5788
5913
  // src/emitters/frontend/load-context.ts
@@ -5829,9 +5954,28 @@ function mapFrontendEmitConfig(config) {
5829
5954
  apiBaseUrlImport: fe.sync.apiBaseUrlImport,
5830
5955
  parsers: fe.parsers,
5831
5956
  architecture,
5832
- dbEntitiesImport: dbEntities.import
5957
+ dbEntitiesImport: dbEntities.import,
5958
+ catalogCategories: fe.catalog.categories
5833
5959
  };
5834
5960
  }
5961
+ function loadProviderCatalogInputs(cwd, config) {
5962
+ const providersDir = path12.resolve(
5963
+ cwd,
5964
+ config.paths?.providers ?? "definitions/providers"
5965
+ );
5966
+ if (!existsSync8(providersDir) || !statSync5(providersDir).isDirectory()) {
5967
+ return [];
5968
+ }
5969
+ const files = findYamlFiles(providersDir);
5970
+ if (files.length === 0) return [];
5971
+ return loadProvidersFromYaml(files).successes.map((s) => ({
5972
+ slug: s.definition.slug,
5973
+ displayName: s.definition.display_name,
5974
+ surfaces: s.definition.surfaces,
5975
+ status: s.definition.status,
5976
+ display: s.definition.display
5977
+ }));
5978
+ }
5835
5979
  function loadFrontendEmitContext(cwd, config, opts = {}) {
5836
5980
  const entitiesDir = opts.entitiesDir ?? path12.resolve(cwd, config.paths?.entities_dir ?? "entities");
5837
5981
  const { registry } = loadEntityRegistry(entitiesDir);
@@ -5846,6 +5990,7 @@ function loadFrontendEmitContext(cwd, config, opts = {}) {
5846
5990
  parsedList.map((p) => [p.name, p])
5847
5991
  );
5848
5992
  const emitConfig = mapFrontendEmitConfig(config);
5993
+ const providers = loadProviderCatalogInputs(cwd, config);
5849
5994
  const generated = resolveLocation(
5850
5995
  config,
5851
5996
  "frontendGenerated",
@@ -5854,7 +5999,7 @@ function loadFrontendEmitContext(cwd, config, opts = {}) {
5854
5999
  const outDir = path12.resolve(cwd, generated.path);
5855
6000
  return {
5856
6001
  skip: void 0,
5857
- ctx: { entities, parsed, config: emitConfig },
6002
+ ctx: { entities, parsed, config: emitConfig, providers },
5858
6003
  outDir
5859
6004
  };
5860
6005
  }
@@ -5868,6 +6013,7 @@ function emitFrontendSet(ctx, outDir) {
5868
6013
  ...emitEntities(ctx, outDir),
5869
6014
  ...emitStore(ctx, outDir),
5870
6015
  ...emitFields(ctx, outDir),
6016
+ ...emitProviders(ctx, outDir),
5871
6017
  ...emitIndex(ctx, outDir)
5872
6018
  ];
5873
6019
  }
@@ -12888,7 +13034,7 @@ var update_default = UpdateShortcut;
12888
13034
  // src/cli/index.ts
12889
13035
  function readVersion() {
12890
13036
  try {
12891
- const pkgPath = join17(import.meta.dirname, "..", "..", "package.json");
13037
+ const pkgPath = join18(import.meta.dirname, "..", "..", "package.json");
12892
13038
  const pkg = JSON.parse(readFileSync6(pkgPath, "utf-8"));
12893
13039
  return typeof pkg.version === "string" ? pkg.version : "0.0.0";
12894
13040
  } catch {