@deepintel-ltd/farmpro-contracts 1.28.0 → 1.29.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.
- package/dist/routes/agents.routes.d.ts +2 -2
- package/dist/routes/documents.routes.d.ts +38 -0
- package/dist/routes/documents.routes.d.ts.map +1 -1
- package/dist/routes/documents.routes.js +3 -1
- package/dist/routes/farm-enterprises.routes.d.ts +0 -14
- package/dist/routes/farm-enterprises.routes.d.ts.map +1 -1
- package/dist/routes/farm-updates.routes.d.ts +17 -0
- package/dist/routes/farm-updates.routes.d.ts.map +1 -1
- package/dist/routes/farms.routes.d.ts +8 -22
- package/dist/routes/farms.routes.d.ts.map +1 -1
- package/dist/routes/finance.routes.d.ts +62 -0
- package/dist/routes/finance.routes.d.ts.map +1 -1
- package/dist/routes/finance.routes.js +4 -1
- package/dist/routes/market-intelligence.routes.d.ts +10 -10
- package/dist/routes/notifications.routes.d.ts +245 -0
- package/dist/routes/notifications.routes.d.ts.map +1 -1
- package/dist/routes/notifications.routes.js +25 -0
- package/dist/routes/session.routes.d.ts +4 -4
- package/dist/routes/tasks.routes.d.ts +45 -0
- package/dist/routes/tasks.routes.d.ts.map +1 -1
- package/dist/routes/tasks.routes.js +7 -2
- package/dist/routes/weather.routes.d.ts +131 -0
- package/dist/routes/weather.routes.d.ts.map +1 -1
- package/dist/schemas/agents.schemas.d.ts +2 -2
- package/dist/schemas/documents.schemas.d.ts +22 -0
- package/dist/schemas/documents.schemas.d.ts.map +1 -1
- package/dist/schemas/documents.schemas.js +15 -4
- package/dist/schemas/farm-enterprises.schemas.d.ts +0 -30
- package/dist/schemas/farm-enterprises.schemas.d.ts.map +1 -1
- package/dist/schemas/farm-enterprises.schemas.js +0 -1
- package/dist/schemas/farm-updates.schemas.d.ts +25 -0
- package/dist/schemas/farm-updates.schemas.d.ts.map +1 -1
- package/dist/schemas/farm-updates.schemas.js +7 -2
- package/dist/schemas/farms.schemas.d.ts +10 -26
- package/dist/schemas/farms.schemas.d.ts.map +1 -1
- package/dist/schemas/farms.schemas.js +0 -4
- package/dist/schemas/finance.schemas.d.ts +68 -0
- package/dist/schemas/finance.schemas.d.ts.map +1 -1
- package/dist/schemas/finance.schemas.js +45 -27
- package/dist/schemas/session.schemas.d.ts +4 -4
- package/dist/schemas/tasks.schemas.d.ts +34 -0
- package/dist/schemas/tasks.schemas.d.ts.map +1 -1
- package/dist/schemas/tasks.schemas.js +40 -19
- package/dist/schemas/weather.schemas.d.ts +210 -0
- package/dist/schemas/weather.schemas.d.ts.map +1 -1
- package/dist/schemas/weather.schemas.js +13 -0
- package/package.json +1 -1
|
@@ -1,19 +1,16 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { timestampsSchema, createJsonApiResourceSchema, jsonApiSingleResponseSchema, jsonApiCollectionResponseSchema } from './common.schemas';
|
|
2
|
+
import { timestampsSchema, createJsonApiResourceSchema, jsonApiSingleResponseSchema, jsonApiCollectionResponseSchema, } from './common.schemas';
|
|
3
|
+
import { workspaceKeySchema } from './workspace.schemas';
|
|
3
4
|
/**
|
|
4
5
|
* Finance schemas - JSON:API compliant
|
|
5
6
|
*/
|
|
6
7
|
// Expense allocation type
|
|
7
|
-
export const expenseAllocationTypeSchema = z.enum([
|
|
8
|
-
'field',
|
|
9
|
-
'crop',
|
|
10
|
-
'general',
|
|
11
|
-
'livestock_group',
|
|
12
|
-
]);
|
|
8
|
+
export const expenseAllocationTypeSchema = z.enum(['field', 'crop', 'general', 'livestock_group']);
|
|
13
9
|
// Budget period type
|
|
14
10
|
export const budgetPeriodSchema = z.enum(['monthly', 'quarterly', 'annual', 'custom', 'legacy']);
|
|
15
11
|
// Budget attributes schema (for JSON:API attributes object)
|
|
16
|
-
export const budgetAttributesSchema = z
|
|
12
|
+
export const budgetAttributesSchema = z
|
|
13
|
+
.object({
|
|
17
14
|
category: z.string(),
|
|
18
15
|
planned: z.number().nonnegative(),
|
|
19
16
|
actual: z.number().nonnegative().optional(), // Calculated from expenses
|
|
@@ -21,7 +18,8 @@ export const budgetAttributesSchema = z.object({
|
|
|
21
18
|
startDate: z.string().datetime(), // Start of budget period
|
|
22
19
|
endDate: z.string().datetime(), // End of budget period
|
|
23
20
|
period: budgetPeriodSchema.optional(), // Optional: "monthly", "quarterly", "annual", "custom", "legacy"
|
|
24
|
-
})
|
|
21
|
+
})
|
|
22
|
+
.merge(timestampsSchema);
|
|
25
23
|
// Budget attributes for creation (input)
|
|
26
24
|
export const createBudgetAttributesSchema = z.object({
|
|
27
25
|
category: z.string().min(1).max(100),
|
|
@@ -39,7 +37,8 @@ export const updateBudgetAttributesSchema = z.object({
|
|
|
39
37
|
period: budgetPeriodSchema.optional(), // Optional: Update period type
|
|
40
38
|
});
|
|
41
39
|
// Expense attributes schema (for JSON:API attributes object)
|
|
42
|
-
export const expenseAttributesSchema = z
|
|
40
|
+
export const expenseAttributesSchema = z
|
|
41
|
+
.object({
|
|
43
42
|
date: z.string().datetime(),
|
|
44
43
|
category: z.string(),
|
|
45
44
|
description: z.string(),
|
|
@@ -56,9 +55,12 @@ export const expenseAttributesSchema = z.object({
|
|
|
56
55
|
ledgerSourceType: z.string().nullable().optional(),
|
|
57
56
|
ledgerSourceId: z.string().nullable().optional(),
|
|
58
57
|
documentId: z.string().uuid().nullable().optional(),
|
|
59
|
-
|
|
58
|
+
workspace: workspaceKeySchema.nullable().optional(),
|
|
59
|
+
})
|
|
60
|
+
.merge(timestampsSchema);
|
|
60
61
|
// Expense attributes for creation (input)
|
|
61
|
-
export const createExpenseAttributesSchema = z
|
|
62
|
+
export const createExpenseAttributesSchema = z
|
|
63
|
+
.object({
|
|
62
64
|
date: z.string().datetime(),
|
|
63
65
|
category: z.string().min(1).optional(),
|
|
64
66
|
description: z.string().min(1).max(500),
|
|
@@ -68,7 +70,8 @@ export const createExpenseAttributesSchema = z.object({
|
|
|
68
70
|
fieldId: z.string().uuid().optional(),
|
|
69
71
|
cropId: z.string().optional(),
|
|
70
72
|
groupId: z.string().uuid().optional(),
|
|
71
|
-
})
|
|
73
|
+
})
|
|
74
|
+
.refine((data) => {
|
|
72
75
|
// If allocationType is 'field', fieldId must be provided
|
|
73
76
|
if (data.allocationType === 'field' && !data.fieldId) {
|
|
74
77
|
return false;
|
|
@@ -96,7 +99,8 @@ export const updateExpenseAttributesSchema = z.object({
|
|
|
96
99
|
groupId: z.string().uuid().nullable().optional(),
|
|
97
100
|
});
|
|
98
101
|
// Revenue attributes schema (for JSON:API attributes object)
|
|
99
|
-
export const revenueAttributesSchema = z
|
|
102
|
+
export const revenueAttributesSchema = z
|
|
103
|
+
.object({
|
|
100
104
|
date: z.string().datetime(),
|
|
101
105
|
crop: z.string(),
|
|
102
106
|
quantity: z.number().positive(),
|
|
@@ -114,7 +118,9 @@ export const revenueAttributesSchema = z.object({
|
|
|
114
118
|
ledgerSourceId: z.string().nullable().optional(),
|
|
115
119
|
createdById: z.string().uuid().nullable(),
|
|
116
120
|
createdByName: z.string().nullable(),
|
|
117
|
-
|
|
121
|
+
workspace: workspaceKeySchema.nullable().optional(),
|
|
122
|
+
})
|
|
123
|
+
.merge(timestampsSchema);
|
|
118
124
|
// Revenue attributes for creation (input)
|
|
119
125
|
export const createRevenueAttributesSchema = z
|
|
120
126
|
.object({
|
|
@@ -183,27 +189,37 @@ export const expenseResourceSchema = createJsonApiResourceSchema('expenses', exp
|
|
|
183
189
|
export const revenueResourceSchema = createJsonApiResourceSchema('revenues', revenueAttributesSchema);
|
|
184
190
|
// Detail resource schemas with relationships
|
|
185
191
|
export const expenseDetailResourceSchema = expenseResourceSchema.extend({
|
|
186
|
-
relationships: z
|
|
187
|
-
|
|
192
|
+
relationships: z
|
|
193
|
+
.object({
|
|
194
|
+
field: z
|
|
195
|
+
.object({
|
|
188
196
|
links: z.object({
|
|
189
197
|
related: z.string(),
|
|
190
198
|
}),
|
|
191
|
-
})
|
|
192
|
-
|
|
199
|
+
})
|
|
200
|
+
.optional(),
|
|
201
|
+
})
|
|
202
|
+
.optional(),
|
|
193
203
|
});
|
|
194
204
|
export const revenueDetailResourceSchema = revenueResourceSchema.extend({
|
|
195
|
-
relationships: z
|
|
196
|
-
|
|
205
|
+
relationships: z
|
|
206
|
+
.object({
|
|
207
|
+
field: z
|
|
208
|
+
.object({
|
|
197
209
|
links: z.object({
|
|
198
210
|
related: z.string(),
|
|
199
211
|
}),
|
|
200
|
-
})
|
|
201
|
-
|
|
212
|
+
})
|
|
213
|
+
.optional(),
|
|
214
|
+
harvest: z
|
|
215
|
+
.object({
|
|
202
216
|
links: z.object({
|
|
203
217
|
related: z.string(),
|
|
204
218
|
}),
|
|
205
|
-
})
|
|
206
|
-
|
|
219
|
+
})
|
|
220
|
+
.optional(),
|
|
221
|
+
})
|
|
222
|
+
.optional(),
|
|
207
223
|
});
|
|
208
224
|
// Response schemas (JSON:API format)
|
|
209
225
|
export const budgetResponseSchema = jsonApiSingleResponseSchema(budgetResourceSchema);
|
|
@@ -224,7 +240,8 @@ export const financeSummaryResourceSchema = createJsonApiResourceSchema('finance
|
|
|
224
240
|
profitMargin: z.number(), // Percentage
|
|
225
241
|
}));
|
|
226
242
|
export const financeSummaryResponseSchema = jsonApiSingleResponseSchema(financeSummaryResourceSchema.extend({
|
|
227
|
-
relationships: z
|
|
243
|
+
relationships: z
|
|
244
|
+
.object({
|
|
228
245
|
budgets: z.object({
|
|
229
246
|
data: z.array(z.object({
|
|
230
247
|
type: z.literal('budgets'),
|
|
@@ -234,7 +251,8 @@ export const financeSummaryResponseSchema = jsonApiSingleResponseSchema(financeS
|
|
|
234
251
|
related: z.string(),
|
|
235
252
|
}),
|
|
236
253
|
}),
|
|
237
|
-
})
|
|
254
|
+
})
|
|
255
|
+
.optional(),
|
|
238
256
|
}));
|
|
239
257
|
// Financial Intelligence (Phase 2.1)
|
|
240
258
|
export const pnlDashboardResponseSchema = z.object({
|
|
@@ -131,12 +131,12 @@ export declare const bootstrapResponseSchema: z.ZodObject<{
|
|
|
131
131
|
data?: unknown;
|
|
132
132
|
error?: string | undefined;
|
|
133
133
|
};
|
|
134
|
-
|
|
134
|
+
farms: {
|
|
135
135
|
ok: boolean;
|
|
136
136
|
data?: unknown;
|
|
137
137
|
error?: string | undefined;
|
|
138
138
|
};
|
|
139
|
-
|
|
139
|
+
enterprises: {
|
|
140
140
|
ok: boolean;
|
|
141
141
|
data?: unknown;
|
|
142
142
|
error?: string | undefined;
|
|
@@ -172,12 +172,12 @@ export declare const bootstrapResponseSchema: z.ZodObject<{
|
|
|
172
172
|
data?: unknown;
|
|
173
173
|
error?: string | undefined;
|
|
174
174
|
};
|
|
175
|
-
|
|
175
|
+
farms: {
|
|
176
176
|
ok: boolean;
|
|
177
177
|
data?: unknown;
|
|
178
178
|
error?: string | undefined;
|
|
179
179
|
};
|
|
180
|
-
|
|
180
|
+
enterprises: {
|
|
181
181
|
ok: boolean;
|
|
182
182
|
data?: unknown;
|
|
183
183
|
error?: string | undefined;
|
|
@@ -139,6 +139,7 @@ export declare const taskAttributesSchema: z.ZodObject<{
|
|
|
139
139
|
type: string;
|
|
140
140
|
id: string;
|
|
141
141
|
}>, "many">>;
|
|
142
|
+
workspace: z.ZodOptional<z.ZodNullable<z.ZodEnum<["farm:CROPS", "farm:POULTRY", "farm:AQUACULTURE", "farm:CATTLE", "farm:GOAT", "farm:SHEEP", "farm:HQ", "org:TRADE"]>>>;
|
|
142
143
|
} & {
|
|
143
144
|
createdAt: z.ZodString;
|
|
144
145
|
updatedAt: z.ZodString;
|
|
@@ -182,6 +183,7 @@ export declare const taskAttributesSchema: z.ZodObject<{
|
|
|
182
183
|
type: string;
|
|
183
184
|
id: string;
|
|
184
185
|
}[] | undefined;
|
|
186
|
+
workspace?: "farm:CROPS" | "farm:POULTRY" | "farm:AQUACULTURE" | "farm:CATTLE" | "farm:GOAT" | "farm:SHEEP" | "farm:HQ" | "org:TRADE" | null | undefined;
|
|
185
187
|
}, {
|
|
186
188
|
status: "pending" | "in-progress" | "completed" | "cancelled";
|
|
187
189
|
date: string;
|
|
@@ -222,6 +224,7 @@ export declare const taskAttributesSchema: z.ZodObject<{
|
|
|
222
224
|
type: string;
|
|
223
225
|
id: string;
|
|
224
226
|
}[] | undefined;
|
|
227
|
+
workspace?: "farm:CROPS" | "farm:POULTRY" | "farm:AQUACULTURE" | "farm:CATTLE" | "farm:GOAT" | "farm:SHEEP" | "farm:HQ" | "org:TRADE" | null | undefined;
|
|
225
228
|
}>;
|
|
226
229
|
export declare const createTaskAttributesSchema: z.ZodObject<{
|
|
227
230
|
title: z.ZodString;
|
|
@@ -582,6 +585,7 @@ export declare const taskResourceSchema: z.ZodObject<{
|
|
|
582
585
|
type: string;
|
|
583
586
|
id: string;
|
|
584
587
|
}>, "many">>;
|
|
588
|
+
workspace: z.ZodOptional<z.ZodNullable<z.ZodEnum<["farm:CROPS", "farm:POULTRY", "farm:AQUACULTURE", "farm:CATTLE", "farm:GOAT", "farm:SHEEP", "farm:HQ", "org:TRADE"]>>>;
|
|
585
589
|
} & {
|
|
586
590
|
createdAt: z.ZodString;
|
|
587
591
|
updatedAt: z.ZodString;
|
|
@@ -625,6 +629,7 @@ export declare const taskResourceSchema: z.ZodObject<{
|
|
|
625
629
|
type: string;
|
|
626
630
|
id: string;
|
|
627
631
|
}[] | undefined;
|
|
632
|
+
workspace?: "farm:CROPS" | "farm:POULTRY" | "farm:AQUACULTURE" | "farm:CATTLE" | "farm:GOAT" | "farm:SHEEP" | "farm:HQ" | "org:TRADE" | null | undefined;
|
|
628
633
|
}, {
|
|
629
634
|
status: "pending" | "in-progress" | "completed" | "cancelled";
|
|
630
635
|
date: string;
|
|
@@ -665,6 +670,7 @@ export declare const taskResourceSchema: z.ZodObject<{
|
|
|
665
670
|
type: string;
|
|
666
671
|
id: string;
|
|
667
672
|
}[] | undefined;
|
|
673
|
+
workspace?: "farm:CROPS" | "farm:POULTRY" | "farm:AQUACULTURE" | "farm:CATTLE" | "farm:GOAT" | "farm:SHEEP" | "farm:HQ" | "org:TRADE" | null | undefined;
|
|
668
674
|
}>;
|
|
669
675
|
relationships: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
670
676
|
links: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
@@ -712,6 +718,7 @@ export declare const taskResourceSchema: z.ZodObject<{
|
|
|
712
718
|
type: string;
|
|
713
719
|
id: string;
|
|
714
720
|
}[] | undefined;
|
|
721
|
+
workspace?: "farm:CROPS" | "farm:POULTRY" | "farm:AQUACULTURE" | "farm:CATTLE" | "farm:GOAT" | "farm:SHEEP" | "farm:HQ" | "org:TRADE" | null | undefined;
|
|
715
722
|
};
|
|
716
723
|
relationships?: Record<string, unknown> | undefined;
|
|
717
724
|
links?: Record<string, string> | undefined;
|
|
@@ -759,6 +766,7 @@ export declare const taskResourceSchema: z.ZodObject<{
|
|
|
759
766
|
type: string;
|
|
760
767
|
id: string;
|
|
761
768
|
}[] | undefined;
|
|
769
|
+
workspace?: "farm:CROPS" | "farm:POULTRY" | "farm:AQUACULTURE" | "farm:CATTLE" | "farm:GOAT" | "farm:SHEEP" | "farm:HQ" | "org:TRADE" | null | undefined;
|
|
762
770
|
};
|
|
763
771
|
relationships?: Record<string, unknown> | undefined;
|
|
764
772
|
links?: Record<string, string> | undefined;
|
|
@@ -853,6 +861,7 @@ export declare const taskDetailResourceSchema: z.ZodObject<{
|
|
|
853
861
|
type: string;
|
|
854
862
|
id: string;
|
|
855
863
|
}>, "many">>;
|
|
864
|
+
workspace: z.ZodOptional<z.ZodNullable<z.ZodEnum<["farm:CROPS", "farm:POULTRY", "farm:AQUACULTURE", "farm:CATTLE", "farm:GOAT", "farm:SHEEP", "farm:HQ", "org:TRADE"]>>>;
|
|
856
865
|
} & {
|
|
857
866
|
createdAt: z.ZodString;
|
|
858
867
|
updatedAt: z.ZodString;
|
|
@@ -896,6 +905,7 @@ export declare const taskDetailResourceSchema: z.ZodObject<{
|
|
|
896
905
|
type: string;
|
|
897
906
|
id: string;
|
|
898
907
|
}[] | undefined;
|
|
908
|
+
workspace?: "farm:CROPS" | "farm:POULTRY" | "farm:AQUACULTURE" | "farm:CATTLE" | "farm:GOAT" | "farm:SHEEP" | "farm:HQ" | "org:TRADE" | null | undefined;
|
|
899
909
|
}, {
|
|
900
910
|
status: "pending" | "in-progress" | "completed" | "cancelled";
|
|
901
911
|
date: string;
|
|
@@ -936,6 +946,7 @@ export declare const taskDetailResourceSchema: z.ZodObject<{
|
|
|
936
946
|
type: string;
|
|
937
947
|
id: string;
|
|
938
948
|
}[] | undefined;
|
|
949
|
+
workspace?: "farm:CROPS" | "farm:POULTRY" | "farm:AQUACULTURE" | "farm:CATTLE" | "farm:GOAT" | "farm:SHEEP" | "farm:HQ" | "org:TRADE" | null | undefined;
|
|
939
950
|
}>;
|
|
940
951
|
links: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
941
952
|
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
@@ -1068,6 +1079,7 @@ export declare const taskDetailResourceSchema: z.ZodObject<{
|
|
|
1068
1079
|
type: string;
|
|
1069
1080
|
id: string;
|
|
1070
1081
|
}[] | undefined;
|
|
1082
|
+
workspace?: "farm:CROPS" | "farm:POULTRY" | "farm:AQUACULTURE" | "farm:CATTLE" | "farm:GOAT" | "farm:SHEEP" | "farm:HQ" | "org:TRADE" | null | undefined;
|
|
1071
1083
|
};
|
|
1072
1084
|
relationships?: {
|
|
1073
1085
|
field?: {
|
|
@@ -1131,6 +1143,7 @@ export declare const taskDetailResourceSchema: z.ZodObject<{
|
|
|
1131
1143
|
type: string;
|
|
1132
1144
|
id: string;
|
|
1133
1145
|
}[] | undefined;
|
|
1146
|
+
workspace?: "farm:CROPS" | "farm:POULTRY" | "farm:AQUACULTURE" | "farm:CATTLE" | "farm:GOAT" | "farm:SHEEP" | "farm:HQ" | "org:TRADE" | null | undefined;
|
|
1134
1147
|
};
|
|
1135
1148
|
relationships?: {
|
|
1136
1149
|
field?: {
|
|
@@ -1242,6 +1255,7 @@ export declare const taskResponseSchema: z.ZodObject<{
|
|
|
1242
1255
|
type: string;
|
|
1243
1256
|
id: string;
|
|
1244
1257
|
}>, "many">>;
|
|
1258
|
+
workspace: z.ZodOptional<z.ZodNullable<z.ZodEnum<["farm:CROPS", "farm:POULTRY", "farm:AQUACULTURE", "farm:CATTLE", "farm:GOAT", "farm:SHEEP", "farm:HQ", "org:TRADE"]>>>;
|
|
1245
1259
|
} & {
|
|
1246
1260
|
createdAt: z.ZodString;
|
|
1247
1261
|
updatedAt: z.ZodString;
|
|
@@ -1285,6 +1299,7 @@ export declare const taskResponseSchema: z.ZodObject<{
|
|
|
1285
1299
|
type: string;
|
|
1286
1300
|
id: string;
|
|
1287
1301
|
}[] | undefined;
|
|
1302
|
+
workspace?: "farm:CROPS" | "farm:POULTRY" | "farm:AQUACULTURE" | "farm:CATTLE" | "farm:GOAT" | "farm:SHEEP" | "farm:HQ" | "org:TRADE" | null | undefined;
|
|
1288
1303
|
}, {
|
|
1289
1304
|
status: "pending" | "in-progress" | "completed" | "cancelled";
|
|
1290
1305
|
date: string;
|
|
@@ -1325,6 +1340,7 @@ export declare const taskResponseSchema: z.ZodObject<{
|
|
|
1325
1340
|
type: string;
|
|
1326
1341
|
id: string;
|
|
1327
1342
|
}[] | undefined;
|
|
1343
|
+
workspace?: "farm:CROPS" | "farm:POULTRY" | "farm:AQUACULTURE" | "farm:CATTLE" | "farm:GOAT" | "farm:SHEEP" | "farm:HQ" | "org:TRADE" | null | undefined;
|
|
1328
1344
|
}>;
|
|
1329
1345
|
relationships: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
1330
1346
|
links: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
@@ -1372,6 +1388,7 @@ export declare const taskResponseSchema: z.ZodObject<{
|
|
|
1372
1388
|
type: string;
|
|
1373
1389
|
id: string;
|
|
1374
1390
|
}[] | undefined;
|
|
1391
|
+
workspace?: "farm:CROPS" | "farm:POULTRY" | "farm:AQUACULTURE" | "farm:CATTLE" | "farm:GOAT" | "farm:SHEEP" | "farm:HQ" | "org:TRADE" | null | undefined;
|
|
1375
1392
|
};
|
|
1376
1393
|
relationships?: Record<string, unknown> | undefined;
|
|
1377
1394
|
links?: Record<string, string> | undefined;
|
|
@@ -1419,6 +1436,7 @@ export declare const taskResponseSchema: z.ZodObject<{
|
|
|
1419
1436
|
type: string;
|
|
1420
1437
|
id: string;
|
|
1421
1438
|
}[] | undefined;
|
|
1439
|
+
workspace?: "farm:CROPS" | "farm:POULTRY" | "farm:AQUACULTURE" | "farm:CATTLE" | "farm:GOAT" | "farm:SHEEP" | "farm:HQ" | "org:TRADE" | null | undefined;
|
|
1422
1440
|
};
|
|
1423
1441
|
relationships?: Record<string, unknown> | undefined;
|
|
1424
1442
|
links?: Record<string, string> | undefined;
|
|
@@ -1492,6 +1510,7 @@ export declare const taskResponseSchema: z.ZodObject<{
|
|
|
1492
1510
|
type: string;
|
|
1493
1511
|
id: string;
|
|
1494
1512
|
}[] | undefined;
|
|
1513
|
+
workspace?: "farm:CROPS" | "farm:POULTRY" | "farm:AQUACULTURE" | "farm:CATTLE" | "farm:GOAT" | "farm:SHEEP" | "farm:HQ" | "org:TRADE" | null | undefined;
|
|
1495
1514
|
};
|
|
1496
1515
|
relationships?: Record<string, unknown> | undefined;
|
|
1497
1516
|
links?: Record<string, string> | undefined;
|
|
@@ -1551,6 +1570,7 @@ export declare const taskResponseSchema: z.ZodObject<{
|
|
|
1551
1570
|
type: string;
|
|
1552
1571
|
id: string;
|
|
1553
1572
|
}[] | undefined;
|
|
1573
|
+
workspace?: "farm:CROPS" | "farm:POULTRY" | "farm:AQUACULTURE" | "farm:CATTLE" | "farm:GOAT" | "farm:SHEEP" | "farm:HQ" | "org:TRADE" | null | undefined;
|
|
1554
1574
|
};
|
|
1555
1575
|
relationships?: Record<string, unknown> | undefined;
|
|
1556
1576
|
links?: Record<string, string> | undefined;
|
|
@@ -1657,6 +1677,7 @@ export declare const taskDetailResponseSchema: z.ZodObject<{
|
|
|
1657
1677
|
type: string;
|
|
1658
1678
|
id: string;
|
|
1659
1679
|
}>, "many">>;
|
|
1680
|
+
workspace: z.ZodOptional<z.ZodNullable<z.ZodEnum<["farm:CROPS", "farm:POULTRY", "farm:AQUACULTURE", "farm:CATTLE", "farm:GOAT", "farm:SHEEP", "farm:HQ", "org:TRADE"]>>>;
|
|
1660
1681
|
} & {
|
|
1661
1682
|
createdAt: z.ZodString;
|
|
1662
1683
|
updatedAt: z.ZodString;
|
|
@@ -1700,6 +1721,7 @@ export declare const taskDetailResponseSchema: z.ZodObject<{
|
|
|
1700
1721
|
type: string;
|
|
1701
1722
|
id: string;
|
|
1702
1723
|
}[] | undefined;
|
|
1724
|
+
workspace?: "farm:CROPS" | "farm:POULTRY" | "farm:AQUACULTURE" | "farm:CATTLE" | "farm:GOAT" | "farm:SHEEP" | "farm:HQ" | "org:TRADE" | null | undefined;
|
|
1703
1725
|
}, {
|
|
1704
1726
|
status: "pending" | "in-progress" | "completed" | "cancelled";
|
|
1705
1727
|
date: string;
|
|
@@ -1740,6 +1762,7 @@ export declare const taskDetailResponseSchema: z.ZodObject<{
|
|
|
1740
1762
|
type: string;
|
|
1741
1763
|
id: string;
|
|
1742
1764
|
}[] | undefined;
|
|
1765
|
+
workspace?: "farm:CROPS" | "farm:POULTRY" | "farm:AQUACULTURE" | "farm:CATTLE" | "farm:GOAT" | "farm:SHEEP" | "farm:HQ" | "org:TRADE" | null | undefined;
|
|
1743
1766
|
}>;
|
|
1744
1767
|
links: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
1745
1768
|
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
@@ -1872,6 +1895,7 @@ export declare const taskDetailResponseSchema: z.ZodObject<{
|
|
|
1872
1895
|
type: string;
|
|
1873
1896
|
id: string;
|
|
1874
1897
|
}[] | undefined;
|
|
1898
|
+
workspace?: "farm:CROPS" | "farm:POULTRY" | "farm:AQUACULTURE" | "farm:CATTLE" | "farm:GOAT" | "farm:SHEEP" | "farm:HQ" | "org:TRADE" | null | undefined;
|
|
1875
1899
|
};
|
|
1876
1900
|
relationships?: {
|
|
1877
1901
|
field?: {
|
|
@@ -1935,6 +1959,7 @@ export declare const taskDetailResponseSchema: z.ZodObject<{
|
|
|
1935
1959
|
type: string;
|
|
1936
1960
|
id: string;
|
|
1937
1961
|
}[] | undefined;
|
|
1962
|
+
workspace?: "farm:CROPS" | "farm:POULTRY" | "farm:AQUACULTURE" | "farm:CATTLE" | "farm:GOAT" | "farm:SHEEP" | "farm:HQ" | "org:TRADE" | null | undefined;
|
|
1938
1963
|
};
|
|
1939
1964
|
relationships?: {
|
|
1940
1965
|
field?: {
|
|
@@ -2024,6 +2049,7 @@ export declare const taskDetailResponseSchema: z.ZodObject<{
|
|
|
2024
2049
|
type: string;
|
|
2025
2050
|
id: string;
|
|
2026
2051
|
}[] | undefined;
|
|
2052
|
+
workspace?: "farm:CROPS" | "farm:POULTRY" | "farm:AQUACULTURE" | "farm:CATTLE" | "farm:GOAT" | "farm:SHEEP" | "farm:HQ" | "org:TRADE" | null | undefined;
|
|
2027
2053
|
};
|
|
2028
2054
|
relationships?: {
|
|
2029
2055
|
field?: {
|
|
@@ -2099,6 +2125,7 @@ export declare const taskDetailResponseSchema: z.ZodObject<{
|
|
|
2099
2125
|
type: string;
|
|
2100
2126
|
id: string;
|
|
2101
2127
|
}[] | undefined;
|
|
2128
|
+
workspace?: "farm:CROPS" | "farm:POULTRY" | "farm:AQUACULTURE" | "farm:CATTLE" | "farm:GOAT" | "farm:SHEEP" | "farm:HQ" | "org:TRADE" | null | undefined;
|
|
2102
2129
|
};
|
|
2103
2130
|
relationships?: {
|
|
2104
2131
|
field?: {
|
|
@@ -2221,6 +2248,7 @@ export declare const taskListResponseSchema: z.ZodObject<{
|
|
|
2221
2248
|
type: string;
|
|
2222
2249
|
id: string;
|
|
2223
2250
|
}>, "many">>;
|
|
2251
|
+
workspace: z.ZodOptional<z.ZodNullable<z.ZodEnum<["farm:CROPS", "farm:POULTRY", "farm:AQUACULTURE", "farm:CATTLE", "farm:GOAT", "farm:SHEEP", "farm:HQ", "org:TRADE"]>>>;
|
|
2224
2252
|
} & {
|
|
2225
2253
|
createdAt: z.ZodString;
|
|
2226
2254
|
updatedAt: z.ZodString;
|
|
@@ -2264,6 +2292,7 @@ export declare const taskListResponseSchema: z.ZodObject<{
|
|
|
2264
2292
|
type: string;
|
|
2265
2293
|
id: string;
|
|
2266
2294
|
}[] | undefined;
|
|
2295
|
+
workspace?: "farm:CROPS" | "farm:POULTRY" | "farm:AQUACULTURE" | "farm:CATTLE" | "farm:GOAT" | "farm:SHEEP" | "farm:HQ" | "org:TRADE" | null | undefined;
|
|
2267
2296
|
}, {
|
|
2268
2297
|
status: "pending" | "in-progress" | "completed" | "cancelled";
|
|
2269
2298
|
date: string;
|
|
@@ -2304,6 +2333,7 @@ export declare const taskListResponseSchema: z.ZodObject<{
|
|
|
2304
2333
|
type: string;
|
|
2305
2334
|
id: string;
|
|
2306
2335
|
}[] | undefined;
|
|
2336
|
+
workspace?: "farm:CROPS" | "farm:POULTRY" | "farm:AQUACULTURE" | "farm:CATTLE" | "farm:GOAT" | "farm:SHEEP" | "farm:HQ" | "org:TRADE" | null | undefined;
|
|
2307
2337
|
}>;
|
|
2308
2338
|
relationships: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
2309
2339
|
links: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
@@ -2351,6 +2381,7 @@ export declare const taskListResponseSchema: z.ZodObject<{
|
|
|
2351
2381
|
type: string;
|
|
2352
2382
|
id: string;
|
|
2353
2383
|
}[] | undefined;
|
|
2384
|
+
workspace?: "farm:CROPS" | "farm:POULTRY" | "farm:AQUACULTURE" | "farm:CATTLE" | "farm:GOAT" | "farm:SHEEP" | "farm:HQ" | "org:TRADE" | null | undefined;
|
|
2354
2385
|
};
|
|
2355
2386
|
relationships?: Record<string, unknown> | undefined;
|
|
2356
2387
|
links?: Record<string, string> | undefined;
|
|
@@ -2398,6 +2429,7 @@ export declare const taskListResponseSchema: z.ZodObject<{
|
|
|
2398
2429
|
type: string;
|
|
2399
2430
|
id: string;
|
|
2400
2431
|
}[] | undefined;
|
|
2432
|
+
workspace?: "farm:CROPS" | "farm:POULTRY" | "farm:AQUACULTURE" | "farm:CATTLE" | "farm:GOAT" | "farm:SHEEP" | "farm:HQ" | "org:TRADE" | null | undefined;
|
|
2401
2433
|
};
|
|
2402
2434
|
relationships?: Record<string, unknown> | undefined;
|
|
2403
2435
|
links?: Record<string, string> | undefined;
|
|
@@ -2471,6 +2503,7 @@ export declare const taskListResponseSchema: z.ZodObject<{
|
|
|
2471
2503
|
type: string;
|
|
2472
2504
|
id: string;
|
|
2473
2505
|
}[] | undefined;
|
|
2506
|
+
workspace?: "farm:CROPS" | "farm:POULTRY" | "farm:AQUACULTURE" | "farm:CATTLE" | "farm:GOAT" | "farm:SHEEP" | "farm:HQ" | "org:TRADE" | null | undefined;
|
|
2474
2507
|
};
|
|
2475
2508
|
relationships?: Record<string, unknown> | undefined;
|
|
2476
2509
|
links?: Record<string, string> | undefined;
|
|
@@ -2530,6 +2563,7 @@ export declare const taskListResponseSchema: z.ZodObject<{
|
|
|
2530
2563
|
type: string;
|
|
2531
2564
|
id: string;
|
|
2532
2565
|
}[] | undefined;
|
|
2566
|
+
workspace?: "farm:CROPS" | "farm:POULTRY" | "farm:AQUACULTURE" | "farm:CATTLE" | "farm:GOAT" | "farm:SHEEP" | "farm:HQ" | "org:TRADE" | null | undefined;
|
|
2533
2567
|
};
|
|
2534
2568
|
relationships?: Record<string, unknown> | undefined;
|
|
2535
2569
|
links?: Record<string, string> | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.schemas.d.ts","sourceRoot":"","sources":["../../src/schemas/tasks.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"tasks.schemas.d.ts","sourceRoot":"","sources":["../../src/schemas/tasks.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB;;GAEG;AAGH,eAAO,MAAM,gBAAgB,iEAA+D,CAAC;AAG7F,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiBzB,CAAC;AAGH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuCP,CAAC;AAG3B,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYrC,CAAC;AAGH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUrC,CAAC;AAGH,eAAO,MAAM,4BAA4B;;;;;;;;;EAGvC,CAAC;AAGH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;EAgBrC,CAAC;AAGJ,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAG3B,CAAC;AAGH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAI3B,CAAC;AAGH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAI7B,CAAC;AAGH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAG5B,CAAC;AAGH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAA6D,CAAC;AAG7F,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BnC,CAAC;AAGH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAkD,CAAC;AAClF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAwD,CAAC;AAC9F,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAsD,CAAC;AAG1F,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAClF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAChF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC/D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC/D,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACnE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACjE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { timestampsSchema, createJsonApiResourceSchema, jsonApiSingleResponseSchema, jsonApiCollectionResponseSchema } from './common.schemas';
|
|
2
|
+
import { timestampsSchema, createJsonApiResourceSchema, jsonApiSingleResponseSchema, jsonApiCollectionResponseSchema, } from './common.schemas';
|
|
3
|
+
import { workspaceKeySchema } from './workspace.schemas';
|
|
3
4
|
/**
|
|
4
5
|
* Task schemas - JSON:API compliant
|
|
5
6
|
*/
|
|
@@ -13,15 +14,18 @@ export const taskNoteSchema = z.object({
|
|
|
13
14
|
text: z.string(),
|
|
14
15
|
timestamp: z.string().datetime(),
|
|
15
16
|
documentIds: z.array(z.string().uuid()).optional(), // Document IDs referenced in this note
|
|
16
|
-
documents: z
|
|
17
|
+
documents: z
|
|
18
|
+
.array(z.object({
|
|
17
19
|
id: z.string().uuid(),
|
|
18
20
|
fileUrl: z.string(), // View URL path: /documents/view/{docId}
|
|
19
21
|
fileExtension: z.string().nullable().optional(),
|
|
20
22
|
fileName: z.string().optional(),
|
|
21
|
-
}))
|
|
23
|
+
}))
|
|
24
|
+
.optional(), // Document relationships (included when fetching)
|
|
22
25
|
});
|
|
23
26
|
// Task attributes schema (for JSON:API attributes object)
|
|
24
|
-
export const taskAttributesSchema = z
|
|
27
|
+
export const taskAttributesSchema = z
|
|
28
|
+
.object({
|
|
25
29
|
title: z.string(),
|
|
26
30
|
fieldId: z.string().uuid(),
|
|
27
31
|
fieldName: z.string().optional(), // Included for convenience
|
|
@@ -42,15 +46,22 @@ export const taskAttributesSchema = z.object({
|
|
|
42
46
|
notes: z.array(taskNoteSchema).optional(),
|
|
43
47
|
noteCount: z.number().int().nonnegative().optional(),
|
|
44
48
|
// Autonomous Agent Source Tracking
|
|
45
|
-
source: z
|
|
49
|
+
source: z
|
|
50
|
+
.object({
|
|
46
51
|
type: z.string(), // e.g., 'observation', 'satellite_monitoring', 'manual'
|
|
47
52
|
id: z.string(), // The ID of the source entity (e.g., observationId, alertId)
|
|
48
|
-
})
|
|
49
|
-
|
|
53
|
+
})
|
|
54
|
+
.nullable()
|
|
55
|
+
.optional(),
|
|
56
|
+
contributingSources: z
|
|
57
|
+
.array(z.object({
|
|
50
58
|
type: z.string(),
|
|
51
59
|
id: z.string(),
|
|
52
|
-
}))
|
|
53
|
-
|
|
60
|
+
}))
|
|
61
|
+
.optional(),
|
|
62
|
+
workspace: workspaceKeySchema.nullable().optional(),
|
|
63
|
+
})
|
|
64
|
+
.merge(timestampsSchema);
|
|
54
65
|
// Task attributes for creation (input)
|
|
55
66
|
export const createTaskAttributesSchema = z.object({
|
|
56
67
|
title: z.string().min(1).max(200),
|
|
@@ -83,10 +94,12 @@ export const completeTaskAttributesSchema = z.object({
|
|
|
83
94
|
notes: z.string().optional(), // Completion notes
|
|
84
95
|
});
|
|
85
96
|
// Add note to task attributes
|
|
86
|
-
export const addTaskNoteAttributesSchema = z
|
|
97
|
+
export const addTaskNoteAttributesSchema = z
|
|
98
|
+
.object({
|
|
87
99
|
text: z.string().default(''),
|
|
88
100
|
documentIds: z.array(z.string().uuid()).optional(), // Document IDs to attach to this note
|
|
89
|
-
})
|
|
101
|
+
})
|
|
102
|
+
.refine((data) => {
|
|
90
103
|
// At least one of text (non-empty) or documentIds must be provided
|
|
91
104
|
const hasText = data.text && data.text.trim().length > 0;
|
|
92
105
|
const hasDocuments = data.documentIds && data.documentIds.length > 0;
|
|
@@ -121,23 +134,31 @@ export const addTaskNoteSchema = z.object({
|
|
|
121
134
|
export const taskResourceSchema = createJsonApiResourceSchema('tasks', taskAttributesSchema);
|
|
122
135
|
// Task detail resource with relationships
|
|
123
136
|
export const taskDetailResourceSchema = taskResourceSchema.extend({
|
|
124
|
-
relationships: z
|
|
125
|
-
|
|
137
|
+
relationships: z
|
|
138
|
+
.object({
|
|
139
|
+
field: z
|
|
140
|
+
.object({
|
|
126
141
|
links: z.object({
|
|
127
142
|
related: z.string(),
|
|
128
143
|
}),
|
|
129
|
-
})
|
|
130
|
-
|
|
144
|
+
})
|
|
145
|
+
.optional(),
|
|
146
|
+
inventory_item: z
|
|
147
|
+
.object({
|
|
131
148
|
links: z.object({
|
|
132
149
|
related: z.string(),
|
|
133
150
|
}),
|
|
134
|
-
})
|
|
135
|
-
|
|
151
|
+
})
|
|
152
|
+
.optional(),
|
|
153
|
+
assigned_to: z
|
|
154
|
+
.object({
|
|
136
155
|
links: z.object({
|
|
137
156
|
related: z.string(),
|
|
138
157
|
}),
|
|
139
|
-
})
|
|
140
|
-
|
|
158
|
+
})
|
|
159
|
+
.optional(),
|
|
160
|
+
})
|
|
161
|
+
.optional(),
|
|
141
162
|
});
|
|
142
163
|
// Task responses (JSON:API format)
|
|
143
164
|
export const taskResponseSchema = jsonApiSingleResponseSchema(taskResourceSchema);
|