@pattern-stack/codegen 0.27.2 → 0.28.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 (50) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/dist/{chunk-YQA5PMOD.js → chunk-3GMQKHJD.js} +2 -2
  3. package/dist/{chunk-5TK7MEN4.js → chunk-CPUSJPAP.js} +1 -1
  4. package/dist/{chunk-5TK7MEN4.js.map → chunk-CPUSJPAP.js.map} +1 -1
  5. package/dist/{chunk-PBENHIN2.js → chunk-IB733A6R.js} +2 -2
  6. package/dist/{chunk-YHVZAL6U.js → chunk-K6LH4PXZ.js} +2 -2
  7. package/dist/{chunk-XW4XKN3F.js → chunk-KS4BZHIA.js} +7 -7
  8. package/dist/{chunk-BK5ICA2F.js → chunk-RUSUZZAF.js} +4 -4
  9. package/dist/{chunk-7LKAMLV4.js → chunk-T6SCOJF4.js} +4 -4
  10. package/dist/{chunk-LQZESSM3.js → chunk-WE6DIDMM.js} +1 -1
  11. package/dist/chunk-WE6DIDMM.js.map +1 -0
  12. package/dist/{chunk-K4BQQ2NN.js → chunk-YUVEJNRE.js} +133 -10
  13. package/dist/chunk-YUVEJNRE.js.map +1 -0
  14. package/dist/{chunk-EGXFEZ2N.js → chunk-Z7YFYK6H.js} +4 -4
  15. package/dist/runtime/subsystems/auth/auth.module.js +2 -2
  16. package/dist/runtime/subsystems/auth/index.js +11 -11
  17. package/dist/runtime/subsystems/bridge/bridge.module.js +6 -6
  18. package/dist/runtime/subsystems/bridge/index.js +6 -6
  19. package/dist/runtime/subsystems/events/events.module.js +3 -3
  20. package/dist/runtime/subsystems/events/generated/bus.js +2 -2
  21. package/dist/runtime/subsystems/events/generated/index.js +2 -2
  22. package/dist/runtime/subsystems/events/generated/registry.d.ts +6 -0
  23. package/dist/runtime/subsystems/events/generated/registry.js +1 -1
  24. package/dist/runtime/subsystems/events/index.js +3 -3
  25. package/dist/runtime/subsystems/index.js +34 -34
  26. package/dist/runtime/subsystems/integration/detection-config.schema.d.ts +6 -4
  27. package/dist/runtime/subsystems/integration/detection-config.schema.js +1 -1
  28. package/dist/runtime/subsystems/integration/index.js +1 -1
  29. package/dist/runtime/subsystems/jobs/index.js +13 -13
  30. package/dist/runtime/subsystems/jobs/job-worker.module.js +5 -5
  31. package/dist/runtime/subsystems/jobs/jobs-domain.module.js +3 -3
  32. package/dist/runtime/subsystems/observability/index.js +3 -3
  33. package/dist/runtime/subsystems/storage/index.js +4 -4
  34. package/dist/runtime/subsystems/storage/storage.module.js +2 -2
  35. package/dist/src/cli/index.js +81 -25
  36. package/dist/src/cli/index.js.map +1 -1
  37. package/dist/src/index.js +2 -2
  38. package/package.json +1 -1
  39. package/runtime/subsystems/events/generated/registry.ts +1 -0
  40. package/runtime/subsystems/integration/detection-config.schema.ts +7 -5
  41. package/templates/entity/new/clean-lite-ps/dto/output.ejs.t +6 -0
  42. package/dist/chunk-K4BQQ2NN.js.map +0 -1
  43. package/dist/chunk-LQZESSM3.js.map +0 -1
  44. /package/dist/{chunk-YQA5PMOD.js.map → chunk-3GMQKHJD.js.map} +0 -0
  45. /package/dist/{chunk-PBENHIN2.js.map → chunk-IB733A6R.js.map} +0 -0
  46. /package/dist/{chunk-YHVZAL6U.js.map → chunk-K6LH4PXZ.js.map} +0 -0
  47. /package/dist/{chunk-XW4XKN3F.js.map → chunk-KS4BZHIA.js.map} +0 -0
  48. /package/dist/{chunk-BK5ICA2F.js.map → chunk-RUSUZZAF.js.map} +0 -0
  49. /package/dist/{chunk-7LKAMLV4.js.map → chunk-T6SCOJF4.js.map} +0 -0
  50. /package/dist/{chunk-EGXFEZ2N.js.map → chunk-Z7YFYK6H.js.map} +0 -0
package/dist/src/index.js CHANGED
@@ -45,7 +45,7 @@ import {
45
45
  validateOrchestrationProject,
46
46
  validatePatternComposition,
47
47
  validatePatternProject
48
- } from "../chunk-K4BQQ2NN.js";
48
+ } from "../chunk-YUVEJNRE.js";
49
49
  import "../chunk-KVOWSC5S.js";
50
50
  import "../chunk-VCXOPBYY.js";
51
51
  import "../chunk-PRWIX6UW.js";
@@ -63,7 +63,7 @@ import "../chunk-43SBT72G.js";
63
63
  import "../chunk-4MF3HKJA.js";
64
64
  import "../chunk-TIZXQU26.js";
65
65
  import "../chunk-JEINYUJH.js";
66
- import "../chunk-5TK7MEN4.js";
66
+ import "../chunk-CPUSJPAP.js";
67
67
  import "../chunk-4KNXX6TI.js";
68
68
  import "../chunk-3CJFPU6Q.js";
69
69
  import "../chunk-U64T4YZE.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pattern-stack/codegen",
3
- "version": "0.27.2",
3
+ "version": "0.28.0",
4
4
  "description": "Entity-driven code generation for full-stack TypeScript applications",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -15,6 +15,7 @@ export interface EventMetadata {
15
15
  version: number;
16
16
  retry: { attempts: number; backoff: 'linear' | 'exponential' };
17
17
  schedule?: { every: string | number; align: boolean; catchUp: boolean; maxCatchUpSlots: number };
18
+ trigger?: { surface: string; label?: string; description?: string; fields: string[] };
18
19
  }
19
20
 
20
21
  export const eventRegistry = {
@@ -13,10 +13,12 @@
13
13
  * Locked decisions (see ADR-033 + decision memo Q1–Q6):
14
14
  * - Filter vocabulary is flat AND of `{ field, op, value }` triples; richer
15
15
  * boolean expressions (OR / NOT / nested) are deferred per epic open Q3.
16
- * - Cursor strategy is a tagged union over the four shapes the three modes
17
- * need (`systemModstamp`, `replayId`, `timestamp`, `eventId`). Each
18
- * strategy types its cursor internally; the orchestrator persists what
19
- * the iterator last yielded (integration skill rule 2).
16
+ * - Cursor strategy is a tagged union over the six shapes the modes need
17
+ * (`systemModstamp`, `replayId`, `timestamp`, `eventId`, plus `historyId`
18
+ * and `syncToken` added in RFC-0003). Each strategy types its cursor
19
+ * internally; the orchestrator persists what the iterator last yielded
20
+ * (integration skill rule 2). Divisibility per strategy is tabled in
21
+ * `CURSOR_DIVISIBILITY` below.
20
22
  * - `mode: 'poll'` may opt into `provenance: 'cdc'` so Stripe-style event
21
23
  * endpoints (mechanically a poll, semantically CDC) reuse the poll
22
24
  * primitive while emitting `Change<T>.source = 'cdc'`. Long-lived
@@ -64,7 +66,7 @@ export const ResolvedFilterSchema = z.object({
64
66
  export type ResolvedFilter = z.infer<typeof ResolvedFilterSchema>;
65
67
 
66
68
  // ============================================================================
67
- // Cursor strategy — tagged union over the four shapes the modes need
69
+ // Cursor strategy — tagged union over the six shapes the modes need
68
70
  // ============================================================================
69
71
 
70
72
  const SystemModstampCursorSchema = z.object({
@@ -14,6 +14,12 @@ export const <%= classNames.outputSchema %> = z.object({
14
14
  <%_ clpOutputDtoFields.forEach(field => { _%>
15
15
  <%= field.camelName %>: <%- field.zodChainOutput %>,
16
16
  <%_ }) _%>
17
+ <%_ if (hasExternalIdTracking) { _%>
18
+ // external_id_tracking behavior — external_id is the public cross-entity join
19
+ // key (a referenced entity exposes it so consumers can join), so it rides the
20
+ // output DTO read-only. provider / provider_metadata stay internal.
21
+ externalId: z.string().nullable(),
22
+ <%_ } _%>
17
23
  <%_ if (hasTimestamps) { _%>
18
24
  createdAt: z.coerce.date(),
19
25
  updatedAt: z.coerce.date(),