@deepintel-ltd/farmpro-contracts 1.5.7 → 1.5.9
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/index.js +50 -92
- package/dist/routes/admin.routes.js +13 -16
- package/dist/routes/agent-workflows.routes.js +81 -84
- package/dist/routes/agents.routes.js +29 -32
- package/dist/routes/analytics.routes.js +11 -14
- package/dist/routes/auth.routes.js +55 -58
- package/dist/routes/categories.routes.js +23 -26
- package/dist/routes/documents.routes.js +67 -70
- package/dist/routes/equipment.routes.js +55 -58
- package/dist/routes/farms.routes.js +32 -35
- package/dist/routes/field-monitoring.routes.js +70 -73
- package/dist/routes/field-observations.routes.js +41 -44
- package/dist/routes/fields.routes.js +44 -47
- package/dist/routes/finance.routes.js +121 -124
- package/dist/routes/harvest.routes.js +46 -49
- package/dist/routes/health.routes.js +6 -9
- package/dist/routes/index.js +51 -54
- package/dist/routes/input-usage.routes.js +14 -17
- package/dist/routes/inventory.routes.js +57 -60
- package/dist/routes/seasonal-plans.routes.js +14 -17
- package/dist/routes/soil-tests.routes.js +45 -48
- package/dist/routes/suppliers.routes.js +70 -73
- package/dist/routes/tasks.routes.js +65 -68
- package/dist/routes/team.routes.js +57 -60
- package/dist/routes/users.routes.js +13 -16
- package/dist/routes/weather.routes.js +10 -13
- package/dist/schemas/admin.schemas.js +43 -46
- package/dist/schemas/agent-workflows.schemas.js +34 -37
- package/dist/schemas/agents.schemas.js +46 -49
- package/dist/schemas/analytics.schemas.js +51 -54
- package/dist/schemas/auth.schemas.js +96 -99
- package/dist/schemas/categories.schemas.js +27 -30
- package/dist/schemas/common.schemas.js +89 -95
- package/dist/schemas/documents.schemas.js +59 -62
- package/dist/schemas/equipment.schemas.js +86 -89
- package/dist/schemas/farms.schemas.js +40 -43
- package/dist/schemas/field-monitoring.schemas.js +207 -210
- package/dist/schemas/field-observations.schemas.js +93 -96
- package/dist/schemas/fields.schemas.js +82 -85
- package/dist/schemas/finance.schemas.js +134 -137
- package/dist/schemas/harvest.schemas.js +46 -49
- package/dist/schemas/health.schemas.js +14 -17
- package/dist/schemas/input-usage.schemas.js +21 -24
- package/dist/schemas/inventory.schemas.js +58 -61
- package/dist/schemas/recommendations.schemas.js +22 -25
- package/dist/schemas/seasonal-plans.schemas.js +21 -24
- package/dist/schemas/soil-tests.schemas.js +70 -73
- package/dist/schemas/suppliers.schemas.js +90 -93
- package/dist/schemas/tasks.schemas.js +93 -96
- package/dist/schemas/team.schemas.js +35 -38
- package/dist/schemas/users.schemas.js +19 -22
- package/dist/schemas/weather.schemas.js +32 -35
- package/package.json +9 -1
package/dist/index.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* FarmPro API Contracts
|
|
4
3
|
*
|
|
@@ -6,103 +5,62 @@
|
|
|
6
5
|
*
|
|
7
6
|
* @module @farmpro/contracts
|
|
8
7
|
*/
|
|
9
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
-
}
|
|
15
|
-
Object.defineProperty(o, k2, desc);
|
|
16
|
-
}) : (function(o, m, k, k2) {
|
|
17
|
-
if (k2 === undefined) k2 = k;
|
|
18
|
-
o[k2] = m[k];
|
|
19
|
-
}));
|
|
20
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
21
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
22
|
-
};
|
|
23
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
-
exports.inputUsageRouter = exports.seasonalPlansRouter = exports.healthRouter = exports.adminRouter = exports.fieldObservationsRouter = exports.fieldMonitoringRouter = exports.agentWorkflowsRouter = exports.agentsRouter = exports.categoriesRouter = exports.analyticsRouter = exports.suppliersRouter = exports.documentsRouter = exports.equipmentRouter = exports.teamRouter = exports.weatherRouter = exports.soilTestsRouter = exports.harvestRouter = exports.financeRouter = exports.inventoryRouter = exports.tasksRouter = exports.fieldsRouter = exports.farmsRouter = exports.usersRouter = exports.authRouter = exports.apiContract = void 0;
|
|
25
8
|
// =============================================================================
|
|
26
9
|
// Main API Contract
|
|
27
10
|
// =============================================================================
|
|
28
|
-
|
|
29
|
-
Object.defineProperty(exports, "apiContract", { enumerable: true, get: function () { return routes_1.apiContract; } });
|
|
11
|
+
export { apiContract } from './routes';
|
|
30
12
|
// =============================================================================
|
|
31
13
|
// Individual Routers
|
|
32
14
|
// =============================================================================
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
var documents_routes_1 = require("./routes/documents.routes");
|
|
58
|
-
Object.defineProperty(exports, "documentsRouter", { enumerable: true, get: function () { return documents_routes_1.documentsRouter; } });
|
|
59
|
-
var suppliers_routes_1 = require("./routes/suppliers.routes");
|
|
60
|
-
Object.defineProperty(exports, "suppliersRouter", { enumerable: true, get: function () { return suppliers_routes_1.suppliersRouter; } });
|
|
61
|
-
var analytics_routes_1 = require("./routes/analytics.routes");
|
|
62
|
-
Object.defineProperty(exports, "analyticsRouter", { enumerable: true, get: function () { return analytics_routes_1.analyticsRouter; } });
|
|
63
|
-
var categories_routes_1 = require("./routes/categories.routes");
|
|
64
|
-
Object.defineProperty(exports, "categoriesRouter", { enumerable: true, get: function () { return categories_routes_1.categoriesRouter; } });
|
|
65
|
-
var agents_routes_1 = require("./routes/agents.routes");
|
|
66
|
-
Object.defineProperty(exports, "agentsRouter", { enumerable: true, get: function () { return agents_routes_1.agentsRouter; } });
|
|
67
|
-
var agent_workflows_routes_1 = require("./routes/agent-workflows.routes");
|
|
68
|
-
Object.defineProperty(exports, "agentWorkflowsRouter", { enumerable: true, get: function () { return agent_workflows_routes_1.agentWorkflowsRouter; } });
|
|
69
|
-
var field_monitoring_routes_1 = require("./routes/field-monitoring.routes");
|
|
70
|
-
Object.defineProperty(exports, "fieldMonitoringRouter", { enumerable: true, get: function () { return field_monitoring_routes_1.fieldMonitoringRouter; } });
|
|
71
|
-
var field_observations_routes_1 = require("./routes/field-observations.routes");
|
|
72
|
-
Object.defineProperty(exports, "fieldObservationsRouter", { enumerable: true, get: function () { return field_observations_routes_1.fieldObservationsRouter; } });
|
|
73
|
-
var admin_routes_1 = require("./routes/admin.routes");
|
|
74
|
-
Object.defineProperty(exports, "adminRouter", { enumerable: true, get: function () { return admin_routes_1.adminRouter; } });
|
|
75
|
-
var health_routes_1 = require("./routes/health.routes");
|
|
76
|
-
Object.defineProperty(exports, "healthRouter", { enumerable: true, get: function () { return health_routes_1.healthRouter; } });
|
|
77
|
-
var seasonal_plans_routes_1 = require("./routes/seasonal-plans.routes");
|
|
78
|
-
Object.defineProperty(exports, "seasonalPlansRouter", { enumerable: true, get: function () { return seasonal_plans_routes_1.seasonalPlansRouter; } });
|
|
79
|
-
var input_usage_routes_1 = require("./routes/input-usage.routes");
|
|
80
|
-
Object.defineProperty(exports, "inputUsageRouter", { enumerable: true, get: function () { return input_usage_routes_1.inputUsageRouter; } });
|
|
15
|
+
export { authRouter } from './routes/auth.routes';
|
|
16
|
+
export { usersRouter } from './routes/users.routes';
|
|
17
|
+
export { farmsRouter } from './routes/farms.routes';
|
|
18
|
+
export { fieldsRouter } from './routes/fields.routes';
|
|
19
|
+
export { tasksRouter } from './routes/tasks.routes';
|
|
20
|
+
export { inventoryRouter } from './routes/inventory.routes';
|
|
21
|
+
export { financeRouter } from './routes/finance.routes';
|
|
22
|
+
export { harvestRouter } from './routes/harvest.routes';
|
|
23
|
+
export { soilTestsRouter } from './routes/soil-tests.routes';
|
|
24
|
+
export { weatherRouter } from './routes/weather.routes';
|
|
25
|
+
export { teamRouter } from './routes/team.routes';
|
|
26
|
+
export { equipmentRouter } from './routes/equipment.routes';
|
|
27
|
+
export { documentsRouter } from './routes/documents.routes';
|
|
28
|
+
export { suppliersRouter } from './routes/suppliers.routes';
|
|
29
|
+
export { analyticsRouter } from './routes/analytics.routes';
|
|
30
|
+
export { categoriesRouter } from './routes/categories.routes';
|
|
31
|
+
export { agentsRouter } from './routes/agents.routes';
|
|
32
|
+
export { agentWorkflowsRouter } from './routes/agent-workflows.routes';
|
|
33
|
+
export { fieldMonitoringRouter } from './routes/field-monitoring.routes';
|
|
34
|
+
export { fieldObservationsRouter } from './routes/field-observations.routes';
|
|
35
|
+
export { adminRouter } from './routes/admin.routes';
|
|
36
|
+
export { healthRouter } from './routes/health.routes';
|
|
37
|
+
export { seasonalPlansRouter } from './routes/seasonal-plans.routes';
|
|
38
|
+
export { inputUsageRouter } from './routes/input-usage.routes';
|
|
81
39
|
// =============================================================================
|
|
82
40
|
// Schemas
|
|
83
41
|
// =============================================================================
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
42
|
+
export * from './schemas/common.schemas';
|
|
43
|
+
export * from './schemas/auth.schemas';
|
|
44
|
+
export * from './schemas/users.schemas';
|
|
45
|
+
export * from './schemas/farms.schemas';
|
|
46
|
+
export * from './schemas/fields.schemas';
|
|
47
|
+
export * from './schemas/tasks.schemas';
|
|
48
|
+
export * from './schemas/inventory.schemas';
|
|
49
|
+
export * from './schemas/finance.schemas';
|
|
50
|
+
export * from './schemas/harvest.schemas';
|
|
51
|
+
export * from './schemas/soil-tests.schemas';
|
|
52
|
+
export * from './schemas/weather.schemas';
|
|
53
|
+
export * from './schemas/team.schemas';
|
|
54
|
+
export * from './schemas/equipment.schemas';
|
|
55
|
+
export * from './schemas/documents.schemas';
|
|
56
|
+
export * from './schemas/suppliers.schemas';
|
|
57
|
+
export * from './schemas/analytics.schemas';
|
|
58
|
+
export * from './schemas/categories.schemas';
|
|
59
|
+
export * from './schemas/agents.schemas';
|
|
60
|
+
export * from './schemas/agent-workflows.schemas';
|
|
61
|
+
export * from './schemas/recommendations.schemas';
|
|
62
|
+
export * from './schemas/field-monitoring.schemas';
|
|
63
|
+
export * from './schemas/field-observations.schemas';
|
|
64
|
+
export * from './schemas/health.schemas';
|
|
65
|
+
export * from './schemas/seasonal-plans.schemas';
|
|
66
|
+
export * from './schemas/input-usage.schemas';
|
|
@@ -1,24 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const common_schemas_1 = require("../schemas/common.schemas");
|
|
8
|
-
const c = (0, core_1.initContract)();
|
|
9
|
-
exports.adminRouter = c.router({
|
|
1
|
+
import { initContract } from '@ts-rest/core';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { autonomousMonitoringStatsResponseSchema, } from '../schemas/admin.schemas';
|
|
4
|
+
import { jsonApiErrorResponseSchema } from '../schemas/common.schemas';
|
|
5
|
+
const c = initContract();
|
|
6
|
+
export const adminRouter = c.router({
|
|
10
7
|
getAutonomousMonitoringStats: {
|
|
11
8
|
method: 'GET',
|
|
12
9
|
path: '/admin/autonomous-monitoring/stats',
|
|
13
|
-
query:
|
|
14
|
-
startDate:
|
|
15
|
-
endDate:
|
|
10
|
+
query: z.object({
|
|
11
|
+
startDate: z.string().datetime().optional(),
|
|
12
|
+
endDate: z.string().datetime().optional(),
|
|
16
13
|
}),
|
|
17
14
|
responses: {
|
|
18
|
-
200:
|
|
19
|
-
401:
|
|
20
|
-
403:
|
|
21
|
-
500:
|
|
15
|
+
200: autonomousMonitoringStatsResponseSchema,
|
|
16
|
+
401: jsonApiErrorResponseSchema,
|
|
17
|
+
403: jsonApiErrorResponseSchema,
|
|
18
|
+
500: jsonApiErrorResponseSchema,
|
|
22
19
|
},
|
|
23
20
|
summary: 'Get autonomous monitoring analytics',
|
|
24
21
|
description: 'Get comprehensive analytics for the autonomous multi-agent monitoring system',
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
const zod_1 = require("zod");
|
|
6
|
-
const agent_workflows_schemas_1 = require("../schemas/agent-workflows.schemas");
|
|
7
|
-
const c = (0, core_1.initContract)();
|
|
1
|
+
import { initContract } from '@ts-rest/core';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { agentWorkflowResponseSchema, agentWorkflowListResponseSchema, agentWorkflowStatusSchema, } from '../schemas/agent-workflows.schemas';
|
|
4
|
+
const c = initContract();
|
|
8
5
|
/**
|
|
9
6
|
* Agent Workflows Routes
|
|
10
7
|
*
|
|
@@ -12,31 +9,31 @@ const c = (0, core_1.initContract)();
|
|
|
12
9
|
* These workflows track the system's automated decision-making process
|
|
13
10
|
* for converting recommendations into tasks.
|
|
14
11
|
*/
|
|
15
|
-
|
|
12
|
+
export const agentWorkflowsRouter = c.router({
|
|
16
13
|
/**
|
|
17
14
|
* List agent workflows with filters
|
|
18
15
|
*/
|
|
19
16
|
listWorkflows: {
|
|
20
17
|
method: 'GET',
|
|
21
18
|
path: '/agent-workflows',
|
|
22
|
-
query:
|
|
23
|
-
farmId:
|
|
24
|
-
fieldId:
|
|
25
|
-
status:
|
|
26
|
-
triggerEvent:
|
|
27
|
-
startDate:
|
|
28
|
-
endDate:
|
|
29
|
-
limit:
|
|
30
|
-
offset:
|
|
19
|
+
query: z.object({
|
|
20
|
+
farmId: z.string().uuid().optional(),
|
|
21
|
+
fieldId: z.string().uuid().optional(),
|
|
22
|
+
status: agentWorkflowStatusSchema.optional(),
|
|
23
|
+
triggerEvent: z.string().optional(), // e.g., 'observation.analysis.completed'
|
|
24
|
+
startDate: z.string().datetime().optional(),
|
|
25
|
+
endDate: z.string().datetime().optional(),
|
|
26
|
+
limit: z.coerce.number().int().min(1).max(100).default(20),
|
|
27
|
+
offset: z.coerce.number().int().min(0).default(0),
|
|
31
28
|
}),
|
|
32
29
|
responses: {
|
|
33
|
-
200:
|
|
34
|
-
400:
|
|
35
|
-
errors:
|
|
36
|
-
status:
|
|
37
|
-
code:
|
|
38
|
-
title:
|
|
39
|
-
detail:
|
|
30
|
+
200: agentWorkflowListResponseSchema,
|
|
31
|
+
400: z.object({
|
|
32
|
+
errors: z.array(z.object({
|
|
33
|
+
status: z.string(),
|
|
34
|
+
code: z.string(),
|
|
35
|
+
title: z.string(),
|
|
36
|
+
detail: z.string(),
|
|
40
37
|
})),
|
|
41
38
|
}),
|
|
42
39
|
},
|
|
@@ -49,13 +46,13 @@ exports.agentWorkflowsRouter = c.router({
|
|
|
49
46
|
method: 'GET',
|
|
50
47
|
path: '/agent-workflows/:id',
|
|
51
48
|
responses: {
|
|
52
|
-
200:
|
|
53
|
-
404:
|
|
54
|
-
errors:
|
|
55
|
-
status:
|
|
56
|
-
code:
|
|
57
|
-
title:
|
|
58
|
-
detail:
|
|
49
|
+
200: agentWorkflowResponseSchema,
|
|
50
|
+
404: z.object({
|
|
51
|
+
errors: z.array(z.object({
|
|
52
|
+
status: z.literal('404'),
|
|
53
|
+
code: z.string(),
|
|
54
|
+
title: z.string(),
|
|
55
|
+
detail: z.string(),
|
|
59
56
|
})),
|
|
60
57
|
}),
|
|
61
58
|
},
|
|
@@ -67,19 +64,19 @@ exports.agentWorkflowsRouter = c.router({
|
|
|
67
64
|
getWorkflowsByFarm: {
|
|
68
65
|
method: 'GET',
|
|
69
66
|
path: '/farms/:farmId/agent-workflows',
|
|
70
|
-
query:
|
|
71
|
-
status:
|
|
72
|
-
limit:
|
|
73
|
-
offset:
|
|
67
|
+
query: z.object({
|
|
68
|
+
status: agentWorkflowStatusSchema.optional(),
|
|
69
|
+
limit: z.coerce.number().int().min(1).max(100).default(20),
|
|
70
|
+
offset: z.coerce.number().int().min(0).default(0),
|
|
74
71
|
}),
|
|
75
72
|
responses: {
|
|
76
|
-
200:
|
|
77
|
-
404:
|
|
78
|
-
errors:
|
|
79
|
-
status:
|
|
80
|
-
code:
|
|
81
|
-
title:
|
|
82
|
-
detail:
|
|
73
|
+
200: agentWorkflowListResponseSchema,
|
|
74
|
+
404: z.object({
|
|
75
|
+
errors: z.array(z.object({
|
|
76
|
+
status: z.literal('404'),
|
|
77
|
+
code: z.string(),
|
|
78
|
+
title: z.string(),
|
|
79
|
+
detail: z.string(),
|
|
83
80
|
})),
|
|
84
81
|
}),
|
|
85
82
|
},
|
|
@@ -91,19 +88,19 @@ exports.agentWorkflowsRouter = c.router({
|
|
|
91
88
|
getWorkflowsByField: {
|
|
92
89
|
method: 'GET',
|
|
93
90
|
path: '/fields/:fieldId/agent-workflows',
|
|
94
|
-
query:
|
|
95
|
-
status:
|
|
96
|
-
limit:
|
|
97
|
-
offset:
|
|
91
|
+
query: z.object({
|
|
92
|
+
status: agentWorkflowStatusSchema.optional(),
|
|
93
|
+
limit: z.coerce.number().int().min(1).max(100).default(20),
|
|
94
|
+
offset: z.coerce.number().int().min(0).default(0),
|
|
98
95
|
}),
|
|
99
96
|
responses: {
|
|
100
|
-
200:
|
|
101
|
-
404:
|
|
102
|
-
errors:
|
|
103
|
-
status:
|
|
104
|
-
code:
|
|
105
|
-
title:
|
|
106
|
-
detail:
|
|
97
|
+
200: agentWorkflowListResponseSchema,
|
|
98
|
+
404: z.object({
|
|
99
|
+
errors: z.array(z.object({
|
|
100
|
+
status: z.literal('404'),
|
|
101
|
+
code: z.string(),
|
|
102
|
+
title: z.string(),
|
|
103
|
+
detail: z.string(),
|
|
107
104
|
})),
|
|
108
105
|
}),
|
|
109
106
|
},
|
|
@@ -115,42 +112,42 @@ exports.agentWorkflowsRouter = c.router({
|
|
|
115
112
|
getWorkflowStats: {
|
|
116
113
|
method: 'GET',
|
|
117
114
|
path: '/agent-workflows/stats',
|
|
118
|
-
query:
|
|
119
|
-
farmId:
|
|
120
|
-
startDate:
|
|
121
|
-
endDate:
|
|
115
|
+
query: z.object({
|
|
116
|
+
farmId: z.string().uuid().optional(),
|
|
117
|
+
startDate: z.string().datetime().optional(),
|
|
118
|
+
endDate: z.string().datetime().optional(),
|
|
122
119
|
}),
|
|
123
120
|
responses: {
|
|
124
|
-
200:
|
|
125
|
-
data:
|
|
126
|
-
overall:
|
|
127
|
-
totalWorkflows:
|
|
128
|
-
successRate:
|
|
129
|
-
avgProcessingTime:
|
|
130
|
-
tasksCreated:
|
|
131
|
-
tasksUpdated:
|
|
132
|
-
skipped:
|
|
121
|
+
200: z.object({
|
|
122
|
+
data: z.object({
|
|
123
|
+
overall: z.object({
|
|
124
|
+
totalWorkflows: z.number().int(),
|
|
125
|
+
successRate: z.number(),
|
|
126
|
+
avgProcessingTime: z.number(),
|
|
127
|
+
tasksCreated: z.number().int(),
|
|
128
|
+
tasksUpdated: z.number().int(),
|
|
129
|
+
skipped: z.number().int(),
|
|
133
130
|
}),
|
|
134
|
-
bySource:
|
|
135
|
-
workflows:
|
|
136
|
-
tasksCreated:
|
|
137
|
-
tasksUpdated:
|
|
138
|
-
skipped:
|
|
139
|
-
skipRate:
|
|
140
|
-
avgConfidence:
|
|
131
|
+
bySource: z.record(z.object({
|
|
132
|
+
workflows: z.number().int(),
|
|
133
|
+
tasksCreated: z.number().int(),
|
|
134
|
+
tasksUpdated: z.number().int(),
|
|
135
|
+
skipped: z.number().int(),
|
|
136
|
+
skipRate: z.number(),
|
|
137
|
+
avgConfidence: z.number().optional(),
|
|
141
138
|
})),
|
|
142
|
-
deduplication:
|
|
143
|
-
exactMatches:
|
|
144
|
-
semanticMatches:
|
|
145
|
-
categoryMatches:
|
|
146
|
-
crossSourceMatches:
|
|
147
|
-
avgSimilarityScore:
|
|
139
|
+
deduplication: z.object({
|
|
140
|
+
exactMatches: z.number().int(),
|
|
141
|
+
semanticMatches: z.number().int(),
|
|
142
|
+
categoryMatches: z.number().int(),
|
|
143
|
+
crossSourceMatches: z.number().int(),
|
|
144
|
+
avgSimilarityScore: z.number(),
|
|
148
145
|
}),
|
|
149
|
-
outcomes:
|
|
150
|
-
tasksCompleted:
|
|
151
|
-
tasksPending:
|
|
152
|
-
tasksInProgress:
|
|
153
|
-
completionRate:
|
|
146
|
+
outcomes: z.object({
|
|
147
|
+
tasksCompleted: z.number().int(),
|
|
148
|
+
tasksPending: z.number().int(),
|
|
149
|
+
tasksInProgress: z.number().int(),
|
|
150
|
+
completionRate: z.number(),
|
|
154
151
|
}),
|
|
155
152
|
}),
|
|
156
153
|
}),
|
|
@@ -1,22 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const common_schemas_1 = require("../schemas/common.schemas");
|
|
8
|
-
const c = (0, core_1.initContract)();
|
|
9
|
-
exports.agentsRouter = c.router({
|
|
1
|
+
import { initContract } from '@ts-rest/core';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { chatRequestSchema, agentChatResponseSchema, conversationHistoryResponseSchema, conversationListResponseSchema, } from '../schemas/agents.schemas';
|
|
4
|
+
import { jsonApiErrorResponseSchema } from '../schemas/common.schemas';
|
|
5
|
+
const c = initContract();
|
|
6
|
+
export const agentsRouter = c.router({
|
|
10
7
|
// Chat with agronomics agent
|
|
11
8
|
chatWithAgronomics: {
|
|
12
9
|
method: 'POST',
|
|
13
10
|
path: '/agents/agronomics/chat',
|
|
14
|
-
body:
|
|
11
|
+
body: z.object({ data: chatRequestSchema }),
|
|
15
12
|
responses: {
|
|
16
|
-
200:
|
|
17
|
-
400:
|
|
18
|
-
401:
|
|
19
|
-
500:
|
|
13
|
+
200: agentChatResponseSchema,
|
|
14
|
+
400: jsonApiErrorResponseSchema,
|
|
15
|
+
401: jsonApiErrorResponseSchema,
|
|
16
|
+
500: jsonApiErrorResponseSchema,
|
|
20
17
|
},
|
|
21
18
|
summary: 'Chat with the agronomics AI agent',
|
|
22
19
|
description: 'Send a message to the agronomics agent and receive AI-powered farming advice based on your farm data',
|
|
@@ -37,18 +34,18 @@ exports.agentsRouter = c.router({
|
|
|
37
34
|
getConversationHistory: {
|
|
38
35
|
method: 'GET',
|
|
39
36
|
path: '/agents/agronomics/conversations/:conversationId/history',
|
|
40
|
-
pathParams:
|
|
41
|
-
conversationId:
|
|
37
|
+
pathParams: z.object({
|
|
38
|
+
conversationId: z.string().uuid(),
|
|
42
39
|
}),
|
|
43
|
-
query:
|
|
44
|
-
limit:
|
|
40
|
+
query: z.object({
|
|
41
|
+
limit: z.coerce.number().int().min(1).max(100).optional().default(50),
|
|
45
42
|
}),
|
|
46
43
|
responses: {
|
|
47
|
-
200:
|
|
48
|
-
400:
|
|
49
|
-
401:
|
|
50
|
-
404:
|
|
51
|
-
500:
|
|
44
|
+
200: conversationHistoryResponseSchema,
|
|
45
|
+
400: jsonApiErrorResponseSchema,
|
|
46
|
+
401: jsonApiErrorResponseSchema,
|
|
47
|
+
404: jsonApiErrorResponseSchema,
|
|
48
|
+
500: jsonApiErrorResponseSchema,
|
|
52
49
|
},
|
|
53
50
|
summary: 'Get conversation history',
|
|
54
51
|
description: 'Retrieve the message history for a specific conversation',
|
|
@@ -57,18 +54,18 @@ exports.agentsRouter = c.router({
|
|
|
57
54
|
listConversations: {
|
|
58
55
|
method: 'GET',
|
|
59
56
|
path: '/farms/:farmId/agents/conversations',
|
|
60
|
-
pathParams:
|
|
61
|
-
farmId:
|
|
57
|
+
pathParams: z.object({
|
|
58
|
+
farmId: z.string().uuid(),
|
|
62
59
|
}),
|
|
63
|
-
query:
|
|
64
|
-
limit:
|
|
65
|
-
offset:
|
|
60
|
+
query: z.object({
|
|
61
|
+
limit: z.coerce.number().int().min(1).max(100).optional().default(20),
|
|
62
|
+
offset: z.coerce.number().int().min(0).optional().default(0),
|
|
66
63
|
}),
|
|
67
64
|
responses: {
|
|
68
|
-
200:
|
|
69
|
-
400:
|
|
70
|
-
401:
|
|
71
|
-
500:
|
|
65
|
+
200: conversationListResponseSchema,
|
|
66
|
+
400: jsonApiErrorResponseSchema,
|
|
67
|
+
401: jsonApiErrorResponseSchema,
|
|
68
|
+
500: jsonApiErrorResponseSchema,
|
|
72
69
|
},
|
|
73
70
|
summary: 'List all conversations for a farm',
|
|
74
71
|
description: 'Retrieve a list of all conversations for a specific farm, ordered by most recent first',
|
|
@@ -1,22 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const common_schemas_1 = require("../schemas/common.schemas");
|
|
8
|
-
const c = (0, core_1.initContract)();
|
|
9
|
-
exports.analyticsRouter = c.router({
|
|
1
|
+
import { initContract } from '@ts-rest/core';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { analyticsResponseSchema } from '../schemas/analytics.schemas';
|
|
4
|
+
import { jsonApiErrorResponseSchema, jsonApiFilterQuerySchema } from '../schemas/common.schemas';
|
|
5
|
+
const c = initContract();
|
|
6
|
+
export const analyticsRouter = c.router({
|
|
10
7
|
// Get analytics for a farm
|
|
11
8
|
getAnalytics: {
|
|
12
9
|
method: 'GET',
|
|
13
10
|
path: '/farms/:farmId/analytics',
|
|
14
|
-
pathParams:
|
|
15
|
-
query:
|
|
11
|
+
pathParams: z.object({ farmId: z.string().uuid() }),
|
|
12
|
+
query: jsonApiFilterQuerySchema.optional(),
|
|
16
13
|
responses: {
|
|
17
|
-
200:
|
|
18
|
-
404:
|
|
19
|
-
401:
|
|
14
|
+
200: analyticsResponseSchema,
|
|
15
|
+
404: jsonApiErrorResponseSchema,
|
|
16
|
+
401: jsonApiErrorResponseSchema,
|
|
20
17
|
},
|
|
21
18
|
summary: 'Get analytics',
|
|
22
19
|
description: 'Get comprehensive analytics including performance trends, yield, market data, and profitability',
|