@deepintel-ltd/farmpro-contracts 1.3.0 → 1.3.3

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 (44) hide show
  1. package/dist/index.d.ts +7 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +10 -1
  4. package/dist/routes/admin.routes.d.ts +747 -0
  5. package/dist/routes/admin.routes.d.ts.map +1 -0
  6. package/dist/routes/admin.routes.js +26 -0
  7. package/dist/routes/agent-workflows.routes.d.ts +2900 -0
  8. package/dist/routes/agent-workflows.routes.d.ts.map +1 -0
  9. package/dist/routes/agent-workflows.routes.js +160 -0
  10. package/dist/routes/field-monitoring.routes.d.ts +588 -23
  11. package/dist/routes/field-monitoring.routes.d.ts.map +1 -1
  12. package/dist/routes/field-monitoring.routes.js +66 -0
  13. package/dist/routes/field-observations.routes.d.ts +3591 -0
  14. package/dist/routes/field-observations.routes.d.ts.map +1 -0
  15. package/dist/routes/field-observations.routes.js +116 -0
  16. package/dist/routes/index.d.ts +9 -0
  17. package/dist/routes/index.d.ts.map +1 -1
  18. package/dist/routes/index.js +6 -0
  19. package/dist/routes/tasks.routes.d.ts +408 -0
  20. package/dist/routes/tasks.routes.d.ts.map +1 -1
  21. package/dist/routes/weather.routes.d.ts +264 -17
  22. package/dist/routes/weather.routes.d.ts.map +1 -1
  23. package/dist/schemas/admin.schemas.d.ts +1063 -0
  24. package/dist/schemas/admin.schemas.d.ts.map +1 -0
  25. package/dist/schemas/admin.schemas.js +63 -0
  26. package/dist/schemas/agent-workflows.schemas.d.ts +2399 -0
  27. package/dist/schemas/agent-workflows.schemas.d.ts.map +1 -0
  28. package/dist/schemas/agent-workflows.schemas.js +70 -0
  29. package/dist/schemas/field-monitoring.schemas.d.ts +215 -9
  30. package/dist/schemas/field-monitoring.schemas.d.ts.map +1 -1
  31. package/dist/schemas/field-monitoring.schemas.js +26 -2
  32. package/dist/schemas/field-observations.schemas.d.ts +2820 -0
  33. package/dist/schemas/field-observations.schemas.d.ts.map +1 -0
  34. package/dist/schemas/field-observations.schemas.js +160 -0
  35. package/dist/schemas/recommendations.schemas.d.ts +112 -0
  36. package/dist/schemas/recommendations.schemas.d.ts.map +1 -0
  37. package/dist/schemas/recommendations.schemas.js +32 -0
  38. package/dist/schemas/tasks.schemas.d.ts +344 -0
  39. package/dist/schemas/tasks.schemas.d.ts.map +1 -1
  40. package/dist/schemas/tasks.schemas.js +9 -0
  41. package/dist/schemas/weather.schemas.d.ts +780 -44
  42. package/dist/schemas/weather.schemas.d.ts.map +1 -1
  43. package/dist/schemas/weather.schemas.js +2 -1
  44. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-observations.schemas.d.ts","sourceRoot":"","sources":["../../src/schemas/field-observations.schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.observationStatsQuerySchema = exports.observationListQuerySchema = exports.observationListResponseSchema = exports.observationResponseSchema = exports.updateObservationActionInputSchema = exports.createObservationInputSchema = exports.observationResourceSchema = exports.updateObservationActionAttributesSchema = exports.createObservationAttributesSchema = exports.observationAttributesSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const common_schemas_1 = require("./common.schemas");
6
+ const recommendations_schemas_1 = require("./recommendations.schemas");
7
+ /**
8
+ * Field Observation schemas - JSON:API compliant
9
+ */
10
+ // Observation attributes schema
11
+ exports.observationAttributesSchema = zod_1.z.object({
12
+ fieldId: zod_1.z.string().uuid().nullable(),
13
+ farmId: zod_1.z.string().uuid(),
14
+ uploadedBy: zod_1.z.string().uuid(),
15
+ photoUrl: zod_1.z.string().url(),
16
+ photoThumbnail: zod_1.z.string().url().nullable(),
17
+ location: zod_1.z
18
+ .object({
19
+ lat: zod_1.z.number().min(-90).max(90),
20
+ lng: zod_1.z.number().min(-180).max(180),
21
+ accuracy: zod_1.z.number().positive().optional(),
22
+ })
23
+ .nullable(),
24
+ capturedAt: zod_1.z.date(),
25
+ observationType: zod_1.z.enum([
26
+ 'disease',
27
+ 'pest',
28
+ 'nutrient',
29
+ 'weed',
30
+ 'general',
31
+ 'health_check',
32
+ ]),
33
+ userNotes: zod_1.z.string().nullable(),
34
+ cropStageAtTime: zod_1.z
35
+ .enum([
36
+ 'planted',
37
+ 'germination',
38
+ 'vegetative',
39
+ 'flowering',
40
+ 'fruiting',
41
+ 'mature',
42
+ 'harvested',
43
+ ])
44
+ .nullable(),
45
+ analysisStatus: zod_1.z.enum(['pending', 'processing', 'completed', 'failed']),
46
+ analysisCompletedAt: zod_1.z.date().nullable(),
47
+ identifiedCrop: zod_1.z.string().nullable(),
48
+ identifiedCropConfidence: zod_1.z.number().min(0).max(1).nullable(),
49
+ diagnosisType: zod_1.z.string().nullable(),
50
+ diagnosisConfidence: zod_1.z.number().min(0).max(1).nullable(),
51
+ severity: zod_1.z.enum(['low', 'medium', 'high', 'critical']).nullable(),
52
+ affectedArea: zod_1.z
53
+ .enum(['localized', 'widespread', 'entire_field'])
54
+ .nullable(),
55
+ healthScore: zod_1.z.number().min(0).max(100).nullable(),
56
+ analysisDetails: zod_1.z
57
+ .object({
58
+ plantIdentification: zod_1.z
59
+ .object({
60
+ scientificName: zod_1.z.string(),
61
+ commonNames: zod_1.z.array(zod_1.z.string()),
62
+ confidence: zod_1.z.number(),
63
+ provider: zod_1.z.string(),
64
+ })
65
+ .optional(),
66
+ primaryIssue: zod_1.z
67
+ .object({
68
+ name: zod_1.z.string(),
69
+ category: zod_1.z.string(),
70
+ confidence: zod_1.z.number(),
71
+ provider: zod_1.z.string(),
72
+ visualIndicators: zod_1.z.array(zod_1.z.string()),
73
+ })
74
+ .optional(),
75
+ secondaryIssues: zod_1.z
76
+ .array(zod_1.z.object({
77
+ name: zod_1.z.string(),
78
+ confidence: zod_1.z.number(),
79
+ reasoning: zod_1.z.string(),
80
+ }))
81
+ .optional(),
82
+ environmentalFactors: zod_1.z.record(zod_1.z.string()).optional(),
83
+ satelliteCorrelation: zod_1.z.record(zod_1.z.any()).optional(),
84
+ historicalMatches: zod_1.z.array(zod_1.z.any()).optional(),
85
+ })
86
+ .nullable(),
87
+ recommendations: zod_1.z.array(recommendations_schemas_1.recommendationSchema).nullable(),
88
+ estimatedCost: zod_1.z.number().nullable(),
89
+ urgencyScore: zod_1.z.number().min(1).max(10).nullable(),
90
+ similarCasesCount: zod_1.z.number().nullable(),
91
+ actionStatus: zod_1.z.enum(['pending', 'in_progress', 'completed', 'dismissed']),
92
+ actionTakenAt: zod_1.z.date().nullable(),
93
+ actionNotes: zod_1.z.string().nullable(),
94
+ generatedAlertId: zod_1.z.string().uuid().nullable(),
95
+ relatedTaskId: zod_1.z.string().uuid().nullable(),
96
+ analysisProvider: zod_1.z.string().nullable(),
97
+ processingTime: zod_1.z.number().nullable(),
98
+ modelVersion: zod_1.z.string().nullable(),
99
+ phase: zod_1.z.string().nullable(),
100
+ }).merge(common_schemas_1.timestampsSchema);
101
+ // Observation attributes for creation (input)
102
+ exports.createObservationAttributesSchema = zod_1.z.object({
103
+ fieldId: zod_1.z.string().uuid().optional(),
104
+ observationType: zod_1.z.enum([
105
+ 'disease',
106
+ 'pest',
107
+ 'nutrient',
108
+ 'weed',
109
+ 'general',
110
+ 'health_check',
111
+ ]),
112
+ userNotes: zod_1.z.string().max(1000).optional(),
113
+ cropStageAtTime: zod_1.z
114
+ .enum([
115
+ 'planted',
116
+ 'germination',
117
+ 'vegetative',
118
+ 'flowering',
119
+ 'fruiting',
120
+ 'mature',
121
+ 'harvested',
122
+ ])
123
+ .optional(),
124
+ location: zod_1.z
125
+ .object({
126
+ lat: zod_1.z.number().min(-90).max(90),
127
+ lng: zod_1.z.number().min(-180).max(180),
128
+ accuracy: zod_1.z.number().positive().optional(),
129
+ })
130
+ .optional(),
131
+ capturedAt: zod_1.z.string().datetime().optional(),
132
+ });
133
+ // Observation attributes for update (input)
134
+ exports.updateObservationActionAttributesSchema = zod_1.z.object({
135
+ actionStatus: zod_1.z.enum(['in_progress', 'completed', 'dismissed']),
136
+ actionNotes: zod_1.z.string().max(2000).optional(),
137
+ relatedTaskId: zod_1.z.string().uuid().optional(),
138
+ });
139
+ // JSON:API resource schemas
140
+ exports.observationResourceSchema = (0, common_schemas_1.createJsonApiResourceSchema)('observations', exports.observationAttributesSchema);
141
+ exports.createObservationInputSchema = (0, common_schemas_1.createJsonApiResourceSchema)('observations', exports.createObservationAttributesSchema);
142
+ exports.updateObservationActionInputSchema = (0, common_schemas_1.createJsonApiResourceSchema)('observations', exports.updateObservationActionAttributesSchema);
143
+ // Response schemas
144
+ exports.observationResponseSchema = (0, common_schemas_1.jsonApiSingleResponseSchema)(exports.observationResourceSchema);
145
+ exports.observationListResponseSchema = (0, common_schemas_1.jsonApiCollectionResponseSchema)(exports.observationResourceSchema);
146
+ // Query schemas
147
+ exports.observationListQuerySchema = zod_1.z.object({
148
+ fieldId: zod_1.z.string().uuid().optional(),
149
+ status: zod_1.z.enum(['pending', 'processing', 'completed', 'failed']).optional(),
150
+ observationType: zod_1.z.string().optional(),
151
+ severity: zod_1.z.enum(['low', 'medium', 'high', 'critical']).optional(),
152
+ startDate: zod_1.z.string().datetime().optional(),
153
+ endDate: zod_1.z.string().datetime().optional(),
154
+ page: zod_1.z.string().default('1'),
155
+ pageSize: zod_1.z.string().default('20'),
156
+ });
157
+ exports.observationStatsQuerySchema = zod_1.z.object({
158
+ startDate: zod_1.z.string().datetime().optional(),
159
+ endDate: zod_1.z.string().datetime().optional(),
160
+ });
@@ -0,0 +1,112 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Centralized Recommendation Schemas
4
+ */
5
+ export declare const recommendationMaterialSchema: z.ZodObject<{
6
+ inventoryItemId: z.ZodOptional<z.ZodString>;
7
+ name: z.ZodString;
8
+ quantity: z.ZodNumber;
9
+ unit: z.ZodString;
10
+ costPerUnit: z.ZodOptional<z.ZodNumber>;
11
+ totalCost: z.ZodOptional<z.ZodNumber>;
12
+ availability: z.ZodOptional<z.ZodString>;
13
+ }, "strip", z.ZodTypeAny, {
14
+ name: string;
15
+ unit: string;
16
+ quantity: number;
17
+ inventoryItemId?: string | undefined;
18
+ totalCost?: number | undefined;
19
+ costPerUnit?: number | undefined;
20
+ availability?: string | undefined;
21
+ }, {
22
+ name: string;
23
+ unit: string;
24
+ quantity: number;
25
+ inventoryItemId?: string | undefined;
26
+ totalCost?: number | undefined;
27
+ costPerUnit?: number | undefined;
28
+ availability?: string | undefined;
29
+ }>;
30
+ export declare const recommendationSchema: z.ZodObject<{
31
+ priority: z.ZodNumber;
32
+ action: z.ZodString;
33
+ details: z.ZodString;
34
+ timing: z.ZodString;
35
+ severity: z.ZodOptional<z.ZodEnum<["low", "medium", "high", "critical"]>>;
36
+ confidence: z.ZodOptional<z.ZodNumber>;
37
+ materials: z.ZodOptional<z.ZodArray<z.ZodObject<{
38
+ inventoryItemId: z.ZodOptional<z.ZodString>;
39
+ name: z.ZodString;
40
+ quantity: z.ZodNumber;
41
+ unit: z.ZodString;
42
+ costPerUnit: z.ZodOptional<z.ZodNumber>;
43
+ totalCost: z.ZodOptional<z.ZodNumber>;
44
+ availability: z.ZodOptional<z.ZodString>;
45
+ }, "strip", z.ZodTypeAny, {
46
+ name: string;
47
+ unit: string;
48
+ quantity: number;
49
+ inventoryItemId?: string | undefined;
50
+ totalCost?: number | undefined;
51
+ costPerUnit?: number | undefined;
52
+ availability?: string | undefined;
53
+ }, {
54
+ name: string;
55
+ unit: string;
56
+ quantity: number;
57
+ inventoryItemId?: string | undefined;
58
+ totalCost?: number | undefined;
59
+ costPerUnit?: number | undefined;
60
+ availability?: string | undefined;
61
+ }>, "many">>;
62
+ applicationMethod: z.ZodOptional<z.ZodString>;
63
+ expectedOutcome: z.ZodOptional<z.ZodString>;
64
+ preventiveMeasures: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
65
+ estimatedTime: z.ZodOptional<z.ZodString>;
66
+ riskLevel: z.ZodOptional<z.ZodString>;
67
+ }, "strip", z.ZodTypeAny, {
68
+ priority: number;
69
+ action: string;
70
+ details: string;
71
+ timing: string;
72
+ severity?: "critical" | "low" | "medium" | "high" | undefined;
73
+ confidence?: number | undefined;
74
+ materials?: {
75
+ name: string;
76
+ unit: string;
77
+ quantity: number;
78
+ inventoryItemId?: string | undefined;
79
+ totalCost?: number | undefined;
80
+ costPerUnit?: number | undefined;
81
+ availability?: string | undefined;
82
+ }[] | undefined;
83
+ applicationMethod?: string | undefined;
84
+ expectedOutcome?: string | undefined;
85
+ preventiveMeasures?: string[] | undefined;
86
+ estimatedTime?: string | undefined;
87
+ riskLevel?: string | undefined;
88
+ }, {
89
+ priority: number;
90
+ action: string;
91
+ details: string;
92
+ timing: string;
93
+ severity?: "critical" | "low" | "medium" | "high" | undefined;
94
+ confidence?: number | undefined;
95
+ materials?: {
96
+ name: string;
97
+ unit: string;
98
+ quantity: number;
99
+ inventoryItemId?: string | undefined;
100
+ totalCost?: number | undefined;
101
+ costPerUnit?: number | undefined;
102
+ availability?: string | undefined;
103
+ }[] | undefined;
104
+ applicationMethod?: string | undefined;
105
+ expectedOutcome?: string | undefined;
106
+ preventiveMeasures?: string[] | undefined;
107
+ estimatedTime?: string | undefined;
108
+ riskLevel?: string | undefined;
109
+ }>;
110
+ export type RecommendationMaterial = z.infer<typeof recommendationMaterialSchema>;
111
+ export type Recommendation = z.infer<typeof recommendationSchema>;
112
+ //# sourceMappingURL=recommendations.schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recommendations.schemas.d.ts","sourceRoot":"","sources":["../../src/schemas/recommendations.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AAGH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;EAQvC,CAAC;AAGH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAa/B,CAAC;AAGH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAClF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.recommendationSchema = exports.recommendationMaterialSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ /**
6
+ * Centralized Recommendation Schemas
7
+ */
8
+ // Schema for materials suggested in a recommendation
9
+ exports.recommendationMaterialSchema = zod_1.z.object({
10
+ inventoryItemId: zod_1.z.string().uuid().optional(),
11
+ name: zod_1.z.string(),
12
+ quantity: zod_1.z.number(),
13
+ unit: zod_1.z.string(),
14
+ costPerUnit: zod_1.z.number().optional(),
15
+ totalCost: zod_1.z.number().optional(),
16
+ availability: zod_1.z.string().optional(),
17
+ });
18
+ // The core, reusable recommendation schema
19
+ exports.recommendationSchema = zod_1.z.object({
20
+ priority: zod_1.z.number().min(1).max(5),
21
+ action: zod_1.z.string(),
22
+ details: zod_1.z.string(),
23
+ timing: zod_1.z.string(),
24
+ severity: zod_1.z.enum(['low', 'medium', 'high', 'critical']).optional(),
25
+ confidence: zod_1.z.number().min(0).max(1).optional(),
26
+ materials: zod_1.z.array(exports.recommendationMaterialSchema).optional(),
27
+ applicationMethod: zod_1.z.string().optional(),
28
+ expectedOutcome: zod_1.z.string().optional(),
29
+ preventiveMeasures: zod_1.z.array(zod_1.z.string()).optional(),
30
+ estimatedTime: zod_1.z.string().optional(),
31
+ riskLevel: zod_1.z.string().optional(),
32
+ });