evo360-types 1.3.405 → 1.3.407

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.zMedCalendarIntegrationSchema = exports.zSyncConfigSchema = exports.zSyncWindowConfigSchema = exports.zSyncRunEventSchema = exports.zSyncRunEventErrorSchema = exports.zSyncStateSchema = exports.zSyncedHashesSchema = exports.zCoveredWindowSchema = exports.zSyncWindowTypeSchema = exports.zIntegrationsCredentialSchema = exports.zIntegrationsAdapterDocSchema = exports.zCapabilityNameSchema = void 0;
3
+ exports.zMedCalendarIntegrationSchema = exports.zSyncRunEventSchema = exports.zSyncRunEventErrorSchema = exports.zSyncStateSchema = exports.zSyncedHashesSchema = exports.zCoveredWindowSchema = exports.zSyncWindowTypeSchema = exports.zIntegrationsCredentialSchema = exports.zIntegrationsAdapterDocSchema = exports.zSyncConfigSchema = exports.zSyncWindowConfigSchema = exports.zCapabilityNameSchema = void 0;
4
4
  const zod_1 = require("zod");
5
5
  const zod_schemas_1 = require("../shared/zod-schemas");
6
6
  // ----- Capability name (mantém sincronizado com CapabilityName em types/evo-integrations/index.ts)
@@ -20,6 +20,27 @@ exports.zCapabilityNameSchema = zod_1.z.enum([
20
20
  "payment.update",
21
21
  "sync.appointments",
22
22
  ]);
23
+ // ----- Sync window config
24
+ // Campos opcionais: a config resolvida é um merge campo-a-campo
25
+ // (calendar.integration.sync_config → adapter.default_sync_config → código).
26
+ // `window_days` continua indivisível — o resolver consome o par past/future.
27
+ exports.zSyncWindowConfigSchema = zod_1.z.object({
28
+ enabled: zod_1.z.boolean().optional(),
29
+ cadence_minutes: zod_1.z.number().int().min(1).optional(),
30
+ window_days: zod_1.z
31
+ .object({
32
+ past: zod_1.z.number().int().min(0),
33
+ // Pode ser negativo: janela que termina no passado (recent_reconcile).
34
+ future: zod_1.z.number().int(),
35
+ })
36
+ .optional(),
37
+ });
38
+ exports.zSyncConfigSchema = zod_1.z.object({
39
+ hot: exports.zSyncWindowConfigSchema.optional(),
40
+ warm: exports.zSyncWindowConfigSchema.optional(),
41
+ recent_reconcile: exports.zSyncWindowConfigSchema.optional(),
42
+ cold: exports.zSyncWindowConfigSchema.optional(),
43
+ });
23
44
  // ----- Adapter doc (platform-level, Nexus-managed)
24
45
  exports.zIntegrationsAdapterDocSchema = zod_schemas_1.zFireDocSchema.extend({
25
46
  name: zod_1.z.string().min(1).max(100),
@@ -30,6 +51,7 @@ exports.zIntegrationsAdapterDocSchema = zod_schemas_1.zFireDocSchema.extend({
30
51
  default_workflow_urls: zod_1.z
31
52
  .record(exports.zCapabilityNameSchema, zod_1.z.string().url())
32
53
  .default({}),
54
+ default_sync_config: exports.zSyncConfigSchema.nullable().optional(),
33
55
  supported_capabilities: zod_1.z.array(exports.zCapabilityNameSchema),
34
56
  auth_schema_version: zod_1.z.number().int().optional(),
35
57
  });
@@ -61,7 +83,14 @@ exports.zSyncStateSchema = zod_schemas_1.zFireDocSchema.extend({
61
83
  calendar_id: zod_1.z.string().min(1).max(100),
62
84
  last_sync_at: zod_1.z.coerce.date().nullable().optional(),
63
85
  last_window_type: exports.zSyncWindowTypeSchema.optional(),
86
+ // Frescor POR janela — `last_sync_at` é escalar e não distingue qual rodou.
87
+ last_run_by_window: zod_1.z
88
+ .record(exports.zSyncWindowTypeSchema, zod_1.z.coerce.date())
89
+ .optional(),
64
90
  last_synced_hashes: exports.zSyncedHashesSchema,
91
+ // Sucessor de `last_synced_hashes`: um bucket por janela (ou chunk), pra que
92
+ // janelas disjuntas não destruam o cache uma da outra.
93
+ hashes_by_bucket: zod_1.z.record(zod_1.z.string(), exports.zSyncedHashesSchema).optional(),
65
94
  last_coveredWindow: exports.zCoveredWindowSchema.nullable().optional(),
66
95
  });
67
96
  // ----- Sync run event (PubSub → BigQuery)
@@ -92,20 +121,8 @@ exports.zSyncRunEventSchema = zod_1.z.object({
92
121
  errors: zod_1.z.array(exports.zSyncRunEventErrorSchema).optional(),
93
122
  });
94
123
  // ----- Calendar integration config (inline no calendar doc)
95
- exports.zSyncWindowConfigSchema = zod_1.z.object({
96
- enabled: zod_1.z.boolean(),
97
- cadence_minutes: zod_1.z.number().int().min(1),
98
- window_days: zod_1.z.object({
99
- past: zod_1.z.number().int().min(0),
100
- future: zod_1.z.number().int().min(0),
101
- }),
102
- });
103
- exports.zSyncConfigSchema = zod_1.z.object({
104
- hot: exports.zSyncWindowConfigSchema.optional(),
105
- warm: exports.zSyncWindowConfigSchema.optional(),
106
- recent_reconcile: exports.zSyncWindowConfigSchema.optional(),
107
- cold: exports.zSyncWindowConfigSchema.optional(),
108
- });
124
+ // zSyncWindowConfigSchema / zSyncConfigSchema estão declarados no topo — o doc
125
+ // do adapter (default_sync_config) também os consome.
109
126
  exports.zMedCalendarIntegrationSchema = zod_1.z.object({
110
127
  adapter_id: zod_1.z.string().min(1),
111
128
  credentials_id: zod_1.z.string().min(1),
@@ -19,6 +19,29 @@ export const zCapabilityNameSchema = z.enum([
19
19
  "sync.appointments",
20
20
  ]);
21
21
 
22
+ // ----- Sync window config
23
+ // Campos opcionais: a config resolvida é um merge campo-a-campo
24
+ // (calendar.integration.sync_config → adapter.default_sync_config → código).
25
+ // `window_days` continua indivisível — o resolver consome o par past/future.
26
+ export const zSyncWindowConfigSchema = z.object({
27
+ enabled: z.boolean().optional(),
28
+ cadence_minutes: z.number().int().min(1).optional(),
29
+ window_days: z
30
+ .object({
31
+ past: z.number().int().min(0),
32
+ // Pode ser negativo: janela que termina no passado (recent_reconcile).
33
+ future: z.number().int(),
34
+ })
35
+ .optional(),
36
+ });
37
+
38
+ export const zSyncConfigSchema = z.object({
39
+ hot: zSyncWindowConfigSchema.optional(),
40
+ warm: zSyncWindowConfigSchema.optional(),
41
+ recent_reconcile: zSyncWindowConfigSchema.optional(),
42
+ cold: zSyncWindowConfigSchema.optional(),
43
+ });
44
+
22
45
  // ----- Adapter doc (platform-level, Nexus-managed)
23
46
  export const zIntegrationsAdapterDocSchema = zFireDocSchema.extend({
24
47
  name: z.string().min(1).max(100),
@@ -29,6 +52,7 @@ export const zIntegrationsAdapterDocSchema = zFireDocSchema.extend({
29
52
  default_workflow_urls: z
30
53
  .record(zCapabilityNameSchema, z.string().url())
31
54
  .default({}),
55
+ default_sync_config: zSyncConfigSchema.nullable().optional(),
32
56
  supported_capabilities: z.array(zCapabilityNameSchema),
33
57
  auth_schema_version: z.number().int().optional(),
34
58
  });
@@ -69,7 +93,14 @@ export const zSyncStateSchema = zFireDocSchema.extend({
69
93
  calendar_id: z.string().min(1).max(100),
70
94
  last_sync_at: z.coerce.date().nullable().optional(),
71
95
  last_window_type: zSyncWindowTypeSchema.optional(),
96
+ // Frescor POR janela — `last_sync_at` é escalar e não distingue qual rodou.
97
+ last_run_by_window: z
98
+ .record(zSyncWindowTypeSchema, z.coerce.date())
99
+ .optional(),
72
100
  last_synced_hashes: zSyncedHashesSchema,
101
+ // Sucessor de `last_synced_hashes`: um bucket por janela (ou chunk), pra que
102
+ // janelas disjuntas não destruam o cache uma da outra.
103
+ hashes_by_bucket: z.record(z.string(), zSyncedHashesSchema).optional(),
73
104
  last_coveredWindow: zCoveredWindowSchema.nullable().optional(),
74
105
  });
75
106
 
@@ -103,22 +134,8 @@ export const zSyncRunEventSchema = z.object({
103
134
  });
104
135
 
105
136
  // ----- Calendar integration config (inline no calendar doc)
106
- export const zSyncWindowConfigSchema = z.object({
107
- enabled: z.boolean(),
108
- cadence_minutes: z.number().int().min(1),
109
- window_days: z.object({
110
- past: z.number().int().min(0),
111
- future: z.number().int().min(0),
112
- }),
113
- });
114
-
115
- export const zSyncConfigSchema = z.object({
116
- hot: zSyncWindowConfigSchema.optional(),
117
- warm: zSyncWindowConfigSchema.optional(),
118
- recent_reconcile: zSyncWindowConfigSchema.optional(),
119
- cold: zSyncWindowConfigSchema.optional(),
120
- });
121
-
137
+ // zSyncWindowConfigSchema / zSyncConfigSchema estão declarados no topo — o doc
138
+ // do adapter (default_sync_config) também os consome.
122
139
  export const zMedCalendarIntegrationSchema = z.object({
123
140
  adapter_id: z.string().min(1),
124
141
  credentials_id: z.string().min(1),