evo360-types 1.3.242 → 1.3.247
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.
|
@@ -484,6 +484,7 @@ export declare const zTaskSchema: z.ZodObject<{
|
|
|
484
484
|
label: z.ZodOptional<z.ZodString>;
|
|
485
485
|
ref: z.ZodOptional<z.ZodAny>;
|
|
486
486
|
}, z.ZodTypeAny, "passthrough">>, "many">>;
|
|
487
|
+
externalLinkKeys: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
487
488
|
idempotency_key: z.ZodOptional<z.ZodString>;
|
|
488
489
|
dedup: z.ZodOptional<z.ZodObject<{
|
|
489
490
|
enabled: z.ZodBoolean;
|
|
@@ -905,6 +906,7 @@ export declare const zTaskSchema: z.ZodObject<{
|
|
|
905
906
|
label: z.ZodOptional<z.ZodString>;
|
|
906
907
|
ref: z.ZodOptional<z.ZodAny>;
|
|
907
908
|
}, z.ZodTypeAny, "passthrough">>, "many">>;
|
|
909
|
+
externalLinkKeys: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
908
910
|
idempotency_key: z.ZodOptional<z.ZodString>;
|
|
909
911
|
dedup: z.ZodOptional<z.ZodObject<{
|
|
910
912
|
enabled: z.ZodBoolean;
|
|
@@ -1326,6 +1328,7 @@ export declare const zTaskSchema: z.ZodObject<{
|
|
|
1326
1328
|
label: z.ZodOptional<z.ZodString>;
|
|
1327
1329
|
ref: z.ZodOptional<z.ZodAny>;
|
|
1328
1330
|
}, z.ZodTypeAny, "passthrough">>, "many">>;
|
|
1331
|
+
externalLinkKeys: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
1329
1332
|
idempotency_key: z.ZodOptional<z.ZodString>;
|
|
1330
1333
|
dedup: z.ZodOptional<z.ZodObject<{
|
|
1331
1334
|
enabled: z.ZodBoolean;
|
|
@@ -46,34 +46,43 @@ exports.zExternalObjectTypeSchema = zod_1.z.enum([
|
|
|
46
46
|
exports.zTaskExternalObjectTypeSchema = exports.zExternalObjectTypeSchema;
|
|
47
47
|
exports.zTaskExecutionStatusSchema = zod_1.z.enum(["success", "error", "retry"]);
|
|
48
48
|
// Schema para IExternalLink (promoted to shared, renamed from Task-specific)
|
|
49
|
-
exports.zExternalLinkSchema = zod_1.z
|
|
49
|
+
exports.zExternalLinkSchema = zod_1.z
|
|
50
|
+
.object({
|
|
50
51
|
type: exports.zExternalObjectTypeSchema,
|
|
51
52
|
id: zod_1.z.string(),
|
|
52
53
|
label: zod_1.z.string().optional(),
|
|
53
54
|
ref: zod_1.z.any().optional(), // FirestoreDocumentReference
|
|
54
|
-
})
|
|
55
|
+
})
|
|
56
|
+
.passthrough();
|
|
55
57
|
// Backward compatibility alias
|
|
56
58
|
exports.zTaskExternalLinkSchema = exports.zExternalLinkSchema;
|
|
57
59
|
// Schema para ITaskSchedule
|
|
58
|
-
exports.zTaskScheduleSchema = zod_1.z
|
|
60
|
+
exports.zTaskScheduleSchema = zod_1.z
|
|
61
|
+
.object({
|
|
59
62
|
execute_at: zod_1.z.coerce.date().optional(),
|
|
60
63
|
due_at: zod_1.z.coerce.date().optional(),
|
|
61
64
|
timezone: zod_1.z.string().optional(),
|
|
62
|
-
})
|
|
65
|
+
})
|
|
66
|
+
.passthrough();
|
|
63
67
|
// Schema para ITaskUserAssignee
|
|
64
68
|
// kind: aceita "user", undefined ou variações de case ("User") e normaliza para "user"
|
|
65
|
-
exports.zTaskUserAssigneeSchema = zod_1.z
|
|
69
|
+
exports.zTaskUserAssigneeSchema = zod_1.z
|
|
70
|
+
.object({
|
|
66
71
|
kind: zod_1.z.preprocess((val) => (typeof val === "string" ? val.toLowerCase() : val), zod_1.z.union([zod_1.z.literal("user"), zod_1.z.undefined()]).default("user")),
|
|
67
72
|
name: zod_1.z.string().optional(),
|
|
68
73
|
ref: zod_1.z.any().optional(), // FirestoreDocumentReference
|
|
69
|
-
})
|
|
74
|
+
})
|
|
75
|
+
.passthrough();
|
|
70
76
|
// Schema para ITaskLock
|
|
71
|
-
exports.zTaskLockSchema = zod_1.z
|
|
77
|
+
exports.zTaskLockSchema = zod_1.z
|
|
78
|
+
.object({
|
|
72
79
|
locked_by: zod_1.z.string(),
|
|
73
80
|
lock_until: zod_1.z.coerce.date(),
|
|
74
|
-
})
|
|
81
|
+
})
|
|
82
|
+
.passthrough();
|
|
75
83
|
// Schema para ITaskRetryPolicy
|
|
76
|
-
exports.zTaskRetryPolicySchema = zod_1.z
|
|
84
|
+
exports.zTaskRetryPolicySchema = zod_1.z
|
|
85
|
+
.object({
|
|
77
86
|
max_attempts: zod_1.z.number(),
|
|
78
87
|
attempt: zod_1.z.number(),
|
|
79
88
|
strategy: exports.zTaskRetryStrategySchema,
|
|
@@ -87,9 +96,11 @@ exports.zTaskRetryPolicySchema = zod_1.z.object({
|
|
|
87
96
|
details: zod_1.z.record(zod_1.z.unknown()).optional(),
|
|
88
97
|
})
|
|
89
98
|
.optional(),
|
|
90
|
-
})
|
|
99
|
+
})
|
|
100
|
+
.passthrough();
|
|
91
101
|
// Schema para ITaskDedup
|
|
92
|
-
exports.zTaskDedupSchema = zod_1.z
|
|
102
|
+
exports.zTaskDedupSchema = zod_1.z
|
|
103
|
+
.object({
|
|
93
104
|
enabled: zod_1.z.boolean(),
|
|
94
105
|
key: zod_1.z.string(),
|
|
95
106
|
group_key: zod_1.z.string().optional(),
|
|
@@ -97,17 +108,21 @@ exports.zTaskDedupSchema = zod_1.z.object({
|
|
|
97
108
|
window: exports.zTaskDedupWindowSchema.optional(),
|
|
98
109
|
window_hours: zod_1.z.number().optional(),
|
|
99
110
|
importance: zod_1.z.number().optional(),
|
|
100
|
-
})
|
|
111
|
+
})
|
|
112
|
+
.passthrough();
|
|
101
113
|
// Schema para ITaskAutoSpec
|
|
102
|
-
exports.zTaskAutoSpecSchema = zod_1.z
|
|
114
|
+
exports.zTaskAutoSpecSchema = zod_1.z
|
|
115
|
+
.object({
|
|
103
116
|
handler: exports.zTaskAutoHandlerSchema,
|
|
104
117
|
kind: zod_1.z.string(),
|
|
105
118
|
version: zod_1.z.union([zod_1.z.number(), zod_1.z.string()]).optional(),
|
|
106
119
|
payload: zod_1.z.record(zod_1.z.unknown()),
|
|
107
120
|
idempotency_key: zod_1.z.string().optional(),
|
|
108
|
-
})
|
|
121
|
+
})
|
|
122
|
+
.passthrough();
|
|
109
123
|
// Schema para ITaskOnFailure
|
|
110
|
-
exports.zTaskOnFailureSchema = zod_1.z
|
|
124
|
+
exports.zTaskOnFailureSchema = zod_1.z
|
|
125
|
+
.object({
|
|
111
126
|
handoff_to_user: zod_1.z
|
|
112
127
|
.object({
|
|
113
128
|
name: zod_1.z.string().optional(),
|
|
@@ -129,12 +144,15 @@ exports.zTaskOnFailureSchema = zod_1.z.object({
|
|
|
129
144
|
payload: zod_1.z.record(zod_1.z.unknown()),
|
|
130
145
|
}))
|
|
131
146
|
.optional(),
|
|
132
|
-
})
|
|
147
|
+
})
|
|
148
|
+
.passthrough();
|
|
133
149
|
// Schema para creator object
|
|
134
|
-
exports.zTaskCreatorSchema = zod_1.z
|
|
150
|
+
exports.zTaskCreatorSchema = zod_1.z
|
|
151
|
+
.object({
|
|
135
152
|
name: zod_1.z.string(),
|
|
136
153
|
ref: zod_1.z.any().optional(), // FirestoreDocumentReference
|
|
137
|
-
})
|
|
154
|
+
})
|
|
155
|
+
.passthrough();
|
|
138
156
|
// Schema para ITaskBase / ITask
|
|
139
157
|
exports.zTaskSchema = zod_schemas_1.zFireDocSchema
|
|
140
158
|
.extend({
|
|
@@ -148,6 +166,7 @@ exports.zTaskSchema = zod_schemas_1.zFireDocSchema
|
|
|
148
166
|
schedule: exports.zTaskScheduleSchema.optional(),
|
|
149
167
|
tags: zod_1.z.array(zod_schemas_1.zTagSchema).nullable().optional(),
|
|
150
168
|
externalLinks: zod_1.z.array(exports.zTaskExternalLinkSchema).optional(),
|
|
169
|
+
externalLinkKeys: zod_1.z.array(zod_1.z.string()).optional(),
|
|
151
170
|
idempotency_key: zod_1.z.string().optional(),
|
|
152
171
|
dedup: exports.zTaskDedupSchema.optional(),
|
|
153
172
|
metadata: zod_1.z.record(zod_1.z.unknown()).optional(),
|
|
@@ -175,15 +194,19 @@ exports.zTaskCommentSchema = zod_schemas_1.zFireDocSchema
|
|
|
175
194
|
})
|
|
176
195
|
.passthrough();
|
|
177
196
|
// Schema para ITaskExecution
|
|
178
|
-
exports.zTaskExecutionErrorSchema = zod_1.z
|
|
197
|
+
exports.zTaskExecutionErrorSchema = zod_1.z
|
|
198
|
+
.object({
|
|
179
199
|
message: zod_1.z.string(),
|
|
180
200
|
code: zod_1.z.union([zod_1.z.string(), zod_1.z.number()]).optional(),
|
|
181
201
|
details: zod_1.z.record(zod_1.z.unknown()).optional(),
|
|
182
|
-
})
|
|
183
|
-
|
|
202
|
+
})
|
|
203
|
+
.passthrough();
|
|
204
|
+
exports.zTaskExecutionProviderSchema = zod_1.z
|
|
205
|
+
.object({
|
|
184
206
|
name: zod_1.z.string().optional(),
|
|
185
207
|
message_id: zod_1.z.string().optional(),
|
|
186
|
-
})
|
|
208
|
+
})
|
|
209
|
+
.passthrough();
|
|
187
210
|
exports.zTaskExecutionSchema = zod_schemas_1.zFireDocSchema
|
|
188
211
|
.extend({
|
|
189
212
|
taskId: zod_1.z.string(),
|
|
@@ -56,109 +56,127 @@ export const zTaskExternalObjectTypeSchema = zExternalObjectTypeSchema;
|
|
|
56
56
|
export const zTaskExecutionStatusSchema = z.enum(["success", "error", "retry"]);
|
|
57
57
|
|
|
58
58
|
// Schema para IExternalLink (promoted to shared, renamed from Task-specific)
|
|
59
|
-
export const zExternalLinkSchema = z
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
59
|
+
export const zExternalLinkSchema = z
|
|
60
|
+
.object({
|
|
61
|
+
type: zExternalObjectTypeSchema,
|
|
62
|
+
id: z.string(),
|
|
63
|
+
label: z.string().optional(),
|
|
64
|
+
ref: z.any().optional(), // FirestoreDocumentReference
|
|
65
|
+
})
|
|
66
|
+
.passthrough();
|
|
65
67
|
|
|
66
68
|
// Backward compatibility alias
|
|
67
69
|
export const zTaskExternalLinkSchema = zExternalLinkSchema;
|
|
68
70
|
|
|
69
71
|
// Schema para ITaskSchedule
|
|
70
|
-
export const zTaskScheduleSchema = z
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
72
|
+
export const zTaskScheduleSchema = z
|
|
73
|
+
.object({
|
|
74
|
+
execute_at: z.coerce.date().optional(),
|
|
75
|
+
due_at: z.coerce.date().optional(),
|
|
76
|
+
timezone: z.string().optional(),
|
|
77
|
+
})
|
|
78
|
+
.passthrough();
|
|
75
79
|
|
|
76
80
|
// Schema para ITaskUserAssignee
|
|
77
81
|
// kind: aceita "user", undefined ou variações de case ("User") e normaliza para "user"
|
|
78
|
-
export const zTaskUserAssigneeSchema = z
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
82
|
+
export const zTaskUserAssigneeSchema = z
|
|
83
|
+
.object({
|
|
84
|
+
kind: z.preprocess(
|
|
85
|
+
(val) => (typeof val === "string" ? val.toLowerCase() : val),
|
|
86
|
+
z.union([z.literal("user"), z.undefined()]).default("user"),
|
|
87
|
+
),
|
|
88
|
+
name: z.string().optional(),
|
|
89
|
+
ref: z.any().optional(), // FirestoreDocumentReference
|
|
90
|
+
})
|
|
91
|
+
.passthrough();
|
|
86
92
|
|
|
87
93
|
// Schema para ITaskLock
|
|
88
|
-
export const zTaskLockSchema = z
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
94
|
+
export const zTaskLockSchema = z
|
|
95
|
+
.object({
|
|
96
|
+
locked_by: z.string(),
|
|
97
|
+
lock_until: z.coerce.date(),
|
|
98
|
+
})
|
|
99
|
+
.passthrough();
|
|
92
100
|
|
|
93
101
|
// Schema para ITaskRetryPolicy
|
|
94
|
-
export const zTaskRetryPolicySchema = z
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
102
|
+
export const zTaskRetryPolicySchema = z
|
|
103
|
+
.object({
|
|
104
|
+
max_attempts: z.number(),
|
|
105
|
+
attempt: z.number(),
|
|
106
|
+
strategy: zTaskRetryStrategySchema,
|
|
107
|
+
backoff_seconds: z.number(),
|
|
108
|
+
next_attempt_at: z.coerce.date().optional(),
|
|
109
|
+
last_error: z
|
|
110
|
+
.object({
|
|
111
|
+
message: z.string(),
|
|
112
|
+
code: z.union([z.string(), z.number()]).optional(),
|
|
113
|
+
at: z.coerce.date(),
|
|
114
|
+
details: z.record(z.unknown()).optional(),
|
|
115
|
+
})
|
|
116
|
+
.optional(),
|
|
117
|
+
})
|
|
118
|
+
.passthrough();
|
|
109
119
|
|
|
110
120
|
// Schema para ITaskDedup
|
|
111
|
-
export const zTaskDedupSchema = z
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
121
|
+
export const zTaskDedupSchema = z
|
|
122
|
+
.object({
|
|
123
|
+
enabled: z.boolean(),
|
|
124
|
+
key: z.string(),
|
|
125
|
+
group_key: z.string().optional(),
|
|
126
|
+
scope: zTaskDedupScopeSchema.optional(),
|
|
127
|
+
window: zTaskDedupWindowSchema.optional(),
|
|
128
|
+
window_hours: z.number().optional(),
|
|
129
|
+
importance: z.number().optional(),
|
|
130
|
+
})
|
|
131
|
+
.passthrough();
|
|
120
132
|
|
|
121
133
|
// Schema para ITaskAutoSpec
|
|
122
|
-
export const zTaskAutoSpecSchema = z
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
134
|
+
export const zTaskAutoSpecSchema = z
|
|
135
|
+
.object({
|
|
136
|
+
handler: zTaskAutoHandlerSchema,
|
|
137
|
+
kind: z.string(),
|
|
138
|
+
version: z.union([z.number(), z.string()]).optional(),
|
|
139
|
+
payload: z.record(z.unknown()),
|
|
140
|
+
idempotency_key: z.string().optional(),
|
|
141
|
+
})
|
|
142
|
+
.passthrough();
|
|
129
143
|
|
|
130
144
|
// Schema para ITaskOnFailure
|
|
131
|
-
export const zTaskOnFailureSchema = z
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
.optional(),
|
|
146
|
-
auto_fallbacks: z
|
|
147
|
-
.array(
|
|
148
|
-
z.object({
|
|
149
|
-
handler: zTaskAutoHandlerSchema,
|
|
150
|
-
kind: z.string(),
|
|
151
|
-
payload: z.record(z.unknown()),
|
|
145
|
+
export const zTaskOnFailureSchema = z
|
|
146
|
+
.object({
|
|
147
|
+
handoff_to_user: z
|
|
148
|
+
.object({
|
|
149
|
+
name: z.string().optional(),
|
|
150
|
+
ref: z.any().optional(), // FirestoreDocumentReference
|
|
151
|
+
})
|
|
152
|
+
.optional(),
|
|
153
|
+
create_handoff_task: z
|
|
154
|
+
.object({
|
|
155
|
+
title: z.string().optional(),
|
|
156
|
+
description: z.string().optional(),
|
|
157
|
+
priority: zTaskPrioritySchema.optional(),
|
|
158
|
+
tags: z.array(zTagSchema).nullable().optional(),
|
|
152
159
|
})
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
160
|
+
.optional(),
|
|
161
|
+
auto_fallbacks: z
|
|
162
|
+
.array(
|
|
163
|
+
z.object({
|
|
164
|
+
handler: zTaskAutoHandlerSchema,
|
|
165
|
+
kind: z.string(),
|
|
166
|
+
payload: z.record(z.unknown()),
|
|
167
|
+
}),
|
|
168
|
+
)
|
|
169
|
+
.optional(),
|
|
170
|
+
})
|
|
171
|
+
.passthrough();
|
|
156
172
|
|
|
157
173
|
// Schema para creator object
|
|
158
|
-
export const zTaskCreatorSchema = z
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
174
|
+
export const zTaskCreatorSchema = z
|
|
175
|
+
.object({
|
|
176
|
+
name: z.string(),
|
|
177
|
+
ref: z.any().optional(), // FirestoreDocumentReference
|
|
178
|
+
})
|
|
179
|
+
.passthrough();
|
|
162
180
|
|
|
163
181
|
// Schema para ITaskBase / ITask
|
|
164
182
|
export const zTaskSchema = zFireDocSchema
|
|
@@ -173,6 +191,7 @@ export const zTaskSchema = zFireDocSchema
|
|
|
173
191
|
schedule: zTaskScheduleSchema.optional(),
|
|
174
192
|
tags: z.array(zTagSchema).nullable().optional(),
|
|
175
193
|
externalLinks: z.array(zTaskExternalLinkSchema).optional(),
|
|
194
|
+
externalLinkKeys: z.array(z.string()).optional(),
|
|
176
195
|
idempotency_key: z.string().optional(),
|
|
177
196
|
dedup: zTaskDedupSchema.optional(),
|
|
178
197
|
metadata: z.record(z.unknown()).optional(),
|
|
@@ -203,16 +222,20 @@ export const zTaskCommentSchema = zFireDocSchema
|
|
|
203
222
|
.passthrough();
|
|
204
223
|
|
|
205
224
|
// Schema para ITaskExecution
|
|
206
|
-
export const zTaskExecutionErrorSchema = z
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
225
|
+
export const zTaskExecutionErrorSchema = z
|
|
226
|
+
.object({
|
|
227
|
+
message: z.string(),
|
|
228
|
+
code: z.union([z.string(), z.number()]).optional(),
|
|
229
|
+
details: z.record(z.unknown()).optional(),
|
|
230
|
+
})
|
|
231
|
+
.passthrough();
|
|
232
|
+
|
|
233
|
+
export const zTaskExecutionProviderSchema = z
|
|
234
|
+
.object({
|
|
235
|
+
name: z.string().optional(),
|
|
236
|
+
message_id: z.string().optional(),
|
|
237
|
+
})
|
|
238
|
+
.passthrough();
|
|
216
239
|
|
|
217
240
|
export const zTaskExecutionSchema = zFireDocSchema
|
|
218
241
|
.extend({
|
|
@@ -95,8 +95,8 @@ export interface ITaskDedup {
|
|
|
95
95
|
importance?: number;
|
|
96
96
|
[key: string]: unknown;
|
|
97
97
|
}
|
|
98
|
-
export type { ExternalObjectType, ExternalObjectTypeEnum, IExternalLink } from "../shared";
|
|
99
|
-
export type { ExternalObjectType as TaskExternalObjectType, ExternalObjectTypeEnum as TaskExternalObjectTypeEnum, IExternalLink as ITaskExternalLink } from "../shared";
|
|
98
|
+
export type { ExternalObjectType, ExternalObjectTypeEnum, IExternalLink, } from "../shared";
|
|
99
|
+
export type { ExternalObjectType as TaskExternalObjectType, ExternalObjectTypeEnum as TaskExternalObjectTypeEnum, IExternalLink as ITaskExternalLink, } from "../shared";
|
|
100
100
|
export interface ITaskUserAssignee {
|
|
101
101
|
kind: "user";
|
|
102
102
|
name?: string;
|
|
@@ -149,6 +149,7 @@ export interface ITaskBase extends IFireDoc {
|
|
|
149
149
|
schedule?: ITaskSchedule;
|
|
150
150
|
tags?: ITag[] | null;
|
|
151
151
|
externalLinks?: IExternalLink[];
|
|
152
|
+
externalLinkKeys?: string[];
|
|
152
153
|
idempotency_key?: string;
|
|
153
154
|
dedup?: ITaskDedup;
|
|
154
155
|
metadata?: Record<string, unknown>;
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
export * from "./fb_collections";
|
|
2
|
-
import type {
|
|
2
|
+
import type {
|
|
3
|
+
FirestoreDocumentReference,
|
|
4
|
+
IFireDoc,
|
|
5
|
+
ITag,
|
|
6
|
+
IExternalLink,
|
|
7
|
+
} from "../shared";
|
|
3
8
|
|
|
4
9
|
// Permissões para o task
|
|
5
10
|
export const EvoTaskPermissions = {
|
|
@@ -151,8 +156,16 @@ export interface ITaskDedup {
|
|
|
151
156
|
// ----- External object links (for unified UI views)
|
|
152
157
|
// Types moved to shared/external-links.ts for reuse across modules
|
|
153
158
|
// Re-export both original names (from shared) and Task-specific aliases for backward compatibility
|
|
154
|
-
export type {
|
|
155
|
-
|
|
159
|
+
export type {
|
|
160
|
+
ExternalObjectType,
|
|
161
|
+
ExternalObjectTypeEnum,
|
|
162
|
+
IExternalLink,
|
|
163
|
+
} from "../shared";
|
|
164
|
+
export type {
|
|
165
|
+
ExternalObjectType as TaskExternalObjectType,
|
|
166
|
+
ExternalObjectTypeEnum as TaskExternalObjectTypeEnum,
|
|
167
|
+
IExternalLink as ITaskExternalLink,
|
|
168
|
+
} from "../shared";
|
|
156
169
|
|
|
157
170
|
// ----- Assignee (human)
|
|
158
171
|
export interface ITaskUserAssignee {
|
|
@@ -229,6 +242,7 @@ export interface ITaskBase extends IFireDoc {
|
|
|
229
242
|
// Links and taxonomy
|
|
230
243
|
tags?: ITag[] | null;
|
|
231
244
|
externalLinks?: IExternalLink[];
|
|
245
|
+
externalLinkKeys?: string[];
|
|
232
246
|
|
|
233
247
|
// Optional deterministic key to avoid duplicates on rebuild/events
|
|
234
248
|
idempotency_key?: string;
|