@deepintel-ltd/farmpro-contracts 1.34.1 → 1.34.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.
@@ -12,14 +12,18 @@ export declare const cropCareRouter: {
12
12
  plantingDate: z.ZodOptional<z.ZodString>;
13
13
  transplantedAt: z.ZodOptional<z.ZodString>;
14
14
  cropStage: z.ZodOptional<z.ZodString>;
15
+ /** Client calendar date, so the stage matches the farmer's day rather than the server's. */
16
+ today: z.ZodOptional<z.ZodString>;
15
17
  }, "strip", z.ZodTypeAny, {
16
18
  plantingDate?: string | undefined;
17
19
  transplantedAt?: string | undefined;
18
20
  cropStage?: string | undefined;
21
+ today?: string | undefined;
19
22
  }, {
20
23
  plantingDate?: string | undefined;
21
24
  transplantedAt?: string | undefined;
22
25
  cropStage?: string | undefined;
26
+ today?: string | undefined;
23
27
  }>;
24
28
  summary: "Resolve the stored care plan for a crop and planting clock";
25
29
  method: "GET";
@@ -866,6 +870,28 @@ export declare const cropCareRouter: {
866
870
  checks: z.ZodArray<z.ZodString, "many">;
867
871
  }, z.ZodTypeAny, "passthrough">>;
868
872
  needsDate: z.ZodBoolean;
873
+ assumedTransplant: z.ZodOptional<z.ZodBoolean>;
874
+ stageSource: z.ZodOptional<z.ZodEnum<["calendar", "observed"]>>;
875
+ reviewNote: z.ZodOptional<z.ZodString>;
876
+ adjustments: z.ZodOptional<z.ZodArray<z.ZodObject<{
877
+ id: z.ZodString;
878
+ severity: z.ZodEnum<["info", "watch", "act"]>;
879
+ title: z.ZodString;
880
+ detail: z.ZodString;
881
+ source: z.ZodString;
882
+ }, "strip", z.ZodTypeAny, {
883
+ id: string;
884
+ title: string;
885
+ detail: string;
886
+ source: string;
887
+ severity: "info" | "watch" | "act";
888
+ }, {
889
+ id: string;
890
+ title: string;
891
+ detail: string;
892
+ source: string;
893
+ severity: "info" | "watch" | "act";
894
+ }>, "many">>;
869
895
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
870
896
  origin: z.ZodEnum<["file", "database", "generic"]>;
871
897
  plan: z.ZodObject<{
@@ -1707,6 +1733,28 @@ export declare const cropCareRouter: {
1707
1733
  checks: z.ZodArray<z.ZodString, "many">;
1708
1734
  }, z.ZodTypeAny, "passthrough">>;
1709
1735
  needsDate: z.ZodBoolean;
1736
+ assumedTransplant: z.ZodOptional<z.ZodBoolean>;
1737
+ stageSource: z.ZodOptional<z.ZodEnum<["calendar", "observed"]>>;
1738
+ reviewNote: z.ZodOptional<z.ZodString>;
1739
+ adjustments: z.ZodOptional<z.ZodArray<z.ZodObject<{
1740
+ id: z.ZodString;
1741
+ severity: z.ZodEnum<["info", "watch", "act"]>;
1742
+ title: z.ZodString;
1743
+ detail: z.ZodString;
1744
+ source: z.ZodString;
1745
+ }, "strip", z.ZodTypeAny, {
1746
+ id: string;
1747
+ title: string;
1748
+ detail: string;
1749
+ source: string;
1750
+ severity: "info" | "watch" | "act";
1751
+ }, {
1752
+ id: string;
1753
+ title: string;
1754
+ detail: string;
1755
+ source: string;
1756
+ severity: "info" | "watch" | "act";
1757
+ }>, "many">>;
1710
1758
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
1711
1759
  origin: z.ZodEnum<["file", "database", "generic"]>;
1712
1760
  plan: z.ZodObject<{
@@ -2548,8 +2596,103 @@ export declare const cropCareRouter: {
2548
2596
  checks: z.ZodArray<z.ZodString, "many">;
2549
2597
  }, z.ZodTypeAny, "passthrough">>;
2550
2598
  needsDate: z.ZodBoolean;
2599
+ assumedTransplant: z.ZodOptional<z.ZodBoolean>;
2600
+ stageSource: z.ZodOptional<z.ZodEnum<["calendar", "observed"]>>;
2601
+ reviewNote: z.ZodOptional<z.ZodString>;
2602
+ adjustments: z.ZodOptional<z.ZodArray<z.ZodObject<{
2603
+ id: z.ZodString;
2604
+ severity: z.ZodEnum<["info", "watch", "act"]>;
2605
+ title: z.ZodString;
2606
+ detail: z.ZodString;
2607
+ source: z.ZodString;
2608
+ }, "strip", z.ZodTypeAny, {
2609
+ id: string;
2610
+ title: string;
2611
+ detail: string;
2612
+ source: string;
2613
+ severity: "info" | "watch" | "act";
2614
+ }, {
2615
+ id: string;
2616
+ title: string;
2617
+ detail: string;
2618
+ source: string;
2619
+ severity: "info" | "watch" | "act";
2620
+ }>, "many">>;
2551
2621
  }, z.ZodTypeAny, "passthrough">>;
2552
2622
  };
2553
2623
  };
2624
+ adjustments: {
2625
+ pathParams: z.ZodObject<{
2626
+ farmId: z.ZodString;
2627
+ fieldId: z.ZodString;
2628
+ }, "strip", z.ZodTypeAny, {
2629
+ farmId: string;
2630
+ fieldId: string;
2631
+ }, {
2632
+ farmId: string;
2633
+ fieldId: string;
2634
+ }>;
2635
+ summary: "Adjust a field care plan for weather, soil test and locality";
2636
+ method: "GET";
2637
+ path: "/farms/:farmId/fields/:fieldId/care-adjustments";
2638
+ responses: {
2639
+ 200: z.ZodObject<{
2640
+ crop: z.ZodNullable<z.ZodString>;
2641
+ stage: z.ZodNullable<z.ZodString>;
2642
+ adjustments: z.ZodArray<z.ZodObject<{
2643
+ id: z.ZodString;
2644
+ severity: z.ZodEnum<["info", "watch", "act"]>;
2645
+ title: z.ZodString;
2646
+ detail: z.ZodString;
2647
+ source: z.ZodString;
2648
+ }, "strip", z.ZodTypeAny, {
2649
+ id: string;
2650
+ title: string;
2651
+ detail: string;
2652
+ source: string;
2653
+ severity: "info" | "watch" | "act";
2654
+ }, {
2655
+ id: string;
2656
+ title: string;
2657
+ detail: string;
2658
+ source: string;
2659
+ severity: "info" | "watch" | "act";
2660
+ }>, "many">;
2661
+ weatherAvailable: z.ZodBoolean;
2662
+ generatedAt: z.ZodString;
2663
+ }, "strip", z.ZodTypeAny, {
2664
+ crop: string | null;
2665
+ generatedAt: string;
2666
+ stage: string | null;
2667
+ adjustments: {
2668
+ id: string;
2669
+ title: string;
2670
+ detail: string;
2671
+ source: string;
2672
+ severity: "info" | "watch" | "act";
2673
+ }[];
2674
+ weatherAvailable: boolean;
2675
+ }, {
2676
+ crop: string | null;
2677
+ generatedAt: string;
2678
+ stage: string | null;
2679
+ adjustments: {
2680
+ id: string;
2681
+ title: string;
2682
+ detail: string;
2683
+ source: string;
2684
+ severity: "info" | "watch" | "act";
2685
+ }[];
2686
+ weatherAvailable: boolean;
2687
+ }>;
2688
+ 404: z.ZodObject<{
2689
+ message: z.ZodString;
2690
+ }, "strip", z.ZodTypeAny, {
2691
+ message: string;
2692
+ }, {
2693
+ message: string;
2694
+ }>;
2695
+ };
2696
+ };
2554
2697
  };
2555
2698
  //# sourceMappingURL=crop-care.routes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"crop-care.routes.d.ts","sourceRoot":"","sources":["../../src/routes/crop-care.routes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqBzB,CAAC"}
1
+ {"version":3,"file":"crop-care.routes.d.ts","sourceRoot":"","sources":["../../src/routes/crop-care.routes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,cAAc;;;;;;;;;;;;;YAerB,4FAA4F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyBhG,CAAC"}
@@ -1,7 +1,8 @@
1
1
  import { initContract } from '@ts-rest/core';
2
2
  import { z } from 'zod';
3
- import { resolvedCareSchema } from '../schemas/crop-care.schemas';
3
+ import { careAdjustmentsResponseSchema, resolvedCareSchema } from '../schemas/crop-care.schemas';
4
4
  const c = initContract();
5
+ const ymd = z.string().regex(/^\d{4}-\d{2}-\d{2}/);
5
6
  export const cropCareRouter = c.router({
6
7
  /**
7
8
  * File bank, then the database, then the generic card.
@@ -11,16 +12,35 @@ export const cropCareRouter = c.router({
11
12
  method: 'GET',
12
13
  path: '/crop-care/plans/:cropId',
13
14
  pathParams: z.object({
14
- cropId: z.string().min(1),
15
+ cropId: z.string().min(1).max(120),
15
16
  }),
16
17
  query: z.object({
17
- plantingDate: z.string().optional(),
18
- transplantedAt: z.string().optional(),
19
- cropStage: z.string().optional(),
18
+ plantingDate: ymd.optional(),
19
+ transplantedAt: ymd.optional(),
20
+ cropStage: z.string().max(40).optional(),
21
+ /** Client calendar date, so the stage matches the farmer's day rather than the server's. */
22
+ today: ymd.optional(),
20
23
  }),
21
24
  responses: {
22
25
  200: resolvedCareSchema,
23
26
  },
24
27
  summary: 'Resolve the stored care plan for a crop and planting clock',
25
28
  },
29
+ /**
30
+ * Weather, soil and locality adjustments for a field's current care stage.
31
+ * Deterministic rules over stored evidence; does not call a model.
32
+ */
33
+ adjustments: {
34
+ method: 'GET',
35
+ path: '/farms/:farmId/fields/:fieldId/care-adjustments',
36
+ pathParams: z.object({
37
+ farmId: z.string().min(1),
38
+ fieldId: z.string().min(1),
39
+ }),
40
+ responses: {
41
+ 200: careAdjustmentsResponseSchema,
42
+ 404: z.object({ message: z.string() }),
43
+ },
44
+ summary: 'Adjust a field care plan for weather, soil test and locality',
45
+ },
26
46
  });
@@ -929,6 +929,76 @@ export declare const carePlanSchema: z.ZodObject<{
929
929
  }, z.ZodTypeAny, "passthrough">>, "many">>;
930
930
  }, z.ZodTypeAny, "passthrough">>>;
931
931
  }, z.ZodTypeAny, "passthrough">>;
932
+ export declare const careAdjustmentSchema: z.ZodObject<{
933
+ id: z.ZodString;
934
+ severity: z.ZodEnum<["info", "watch", "act"]>;
935
+ title: z.ZodString;
936
+ detail: z.ZodString;
937
+ source: z.ZodString;
938
+ }, "strip", z.ZodTypeAny, {
939
+ id: string;
940
+ title: string;
941
+ detail: string;
942
+ source: string;
943
+ severity: "info" | "watch" | "act";
944
+ }, {
945
+ id: string;
946
+ title: string;
947
+ detail: string;
948
+ source: string;
949
+ severity: "info" | "watch" | "act";
950
+ }>;
951
+ export declare const careAdjustmentsResponseSchema: z.ZodObject<{
952
+ crop: z.ZodNullable<z.ZodString>;
953
+ stage: z.ZodNullable<z.ZodString>;
954
+ adjustments: z.ZodArray<z.ZodObject<{
955
+ id: z.ZodString;
956
+ severity: z.ZodEnum<["info", "watch", "act"]>;
957
+ title: z.ZodString;
958
+ detail: z.ZodString;
959
+ source: z.ZodString;
960
+ }, "strip", z.ZodTypeAny, {
961
+ id: string;
962
+ title: string;
963
+ detail: string;
964
+ source: string;
965
+ severity: "info" | "watch" | "act";
966
+ }, {
967
+ id: string;
968
+ title: string;
969
+ detail: string;
970
+ source: string;
971
+ severity: "info" | "watch" | "act";
972
+ }>, "many">;
973
+ /** False when no forecast could be loaded, so weather rules were skipped. */
974
+ weatherAvailable: z.ZodBoolean;
975
+ generatedAt: z.ZodString;
976
+ }, "strip", z.ZodTypeAny, {
977
+ crop: string | null;
978
+ generatedAt: string;
979
+ stage: string | null;
980
+ adjustments: {
981
+ id: string;
982
+ title: string;
983
+ detail: string;
984
+ source: string;
985
+ severity: "info" | "watch" | "act";
986
+ }[];
987
+ weatherAvailable: boolean;
988
+ }, {
989
+ crop: string | null;
990
+ generatedAt: string;
991
+ stage: string | null;
992
+ adjustments: {
993
+ id: string;
994
+ title: string;
995
+ detail: string;
996
+ source: string;
997
+ severity: "info" | "watch" | "act";
998
+ }[];
999
+ weatherAvailable: boolean;
1000
+ }>;
1001
+ export type CareAdjustmentsResponse = z.infer<typeof careAdjustmentsResponseSchema>;
932
1002
  export declare const resolvedCareSchema: z.ZodObject<{
933
1003
  origin: z.ZodEnum<["file", "database", "generic"]>;
934
1004
  plan: z.ZodObject<{
@@ -1770,6 +1840,28 @@ export declare const resolvedCareSchema: z.ZodObject<{
1770
1840
  checks: z.ZodArray<z.ZodString, "many">;
1771
1841
  }, z.ZodTypeAny, "passthrough">>;
1772
1842
  needsDate: z.ZodBoolean;
1843
+ assumedTransplant: z.ZodOptional<z.ZodBoolean>;
1844
+ stageSource: z.ZodOptional<z.ZodEnum<["calendar", "observed"]>>;
1845
+ reviewNote: z.ZodOptional<z.ZodString>;
1846
+ adjustments: z.ZodOptional<z.ZodArray<z.ZodObject<{
1847
+ id: z.ZodString;
1848
+ severity: z.ZodEnum<["info", "watch", "act"]>;
1849
+ title: z.ZodString;
1850
+ detail: z.ZodString;
1851
+ source: z.ZodString;
1852
+ }, "strip", z.ZodTypeAny, {
1853
+ id: string;
1854
+ title: string;
1855
+ detail: string;
1856
+ source: string;
1857
+ severity: "info" | "watch" | "act";
1858
+ }, {
1859
+ id: string;
1860
+ title: string;
1861
+ detail: string;
1862
+ source: string;
1863
+ severity: "info" | "watch" | "act";
1864
+ }>, "many">>;
1773
1865
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
1774
1866
  origin: z.ZodEnum<["file", "database", "generic"]>;
1775
1867
  plan: z.ZodObject<{
@@ -2611,6 +2703,28 @@ export declare const resolvedCareSchema: z.ZodObject<{
2611
2703
  checks: z.ZodArray<z.ZodString, "many">;
2612
2704
  }, z.ZodTypeAny, "passthrough">>;
2613
2705
  needsDate: z.ZodBoolean;
2706
+ assumedTransplant: z.ZodOptional<z.ZodBoolean>;
2707
+ stageSource: z.ZodOptional<z.ZodEnum<["calendar", "observed"]>>;
2708
+ reviewNote: z.ZodOptional<z.ZodString>;
2709
+ adjustments: z.ZodOptional<z.ZodArray<z.ZodObject<{
2710
+ id: z.ZodString;
2711
+ severity: z.ZodEnum<["info", "watch", "act"]>;
2712
+ title: z.ZodString;
2713
+ detail: z.ZodString;
2714
+ source: z.ZodString;
2715
+ }, "strip", z.ZodTypeAny, {
2716
+ id: string;
2717
+ title: string;
2718
+ detail: string;
2719
+ source: string;
2720
+ severity: "info" | "watch" | "act";
2721
+ }, {
2722
+ id: string;
2723
+ title: string;
2724
+ detail: string;
2725
+ source: string;
2726
+ severity: "info" | "watch" | "act";
2727
+ }>, "many">>;
2614
2728
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
2615
2729
  origin: z.ZodEnum<["file", "database", "generic"]>;
2616
2730
  plan: z.ZodObject<{
@@ -3452,6 +3566,28 @@ export declare const resolvedCareSchema: z.ZodObject<{
3452
3566
  checks: z.ZodArray<z.ZodString, "many">;
3453
3567
  }, z.ZodTypeAny, "passthrough">>;
3454
3568
  needsDate: z.ZodBoolean;
3569
+ assumedTransplant: z.ZodOptional<z.ZodBoolean>;
3570
+ stageSource: z.ZodOptional<z.ZodEnum<["calendar", "observed"]>>;
3571
+ reviewNote: z.ZodOptional<z.ZodString>;
3572
+ adjustments: z.ZodOptional<z.ZodArray<z.ZodObject<{
3573
+ id: z.ZodString;
3574
+ severity: z.ZodEnum<["info", "watch", "act"]>;
3575
+ title: z.ZodString;
3576
+ detail: z.ZodString;
3577
+ source: z.ZodString;
3578
+ }, "strip", z.ZodTypeAny, {
3579
+ id: string;
3580
+ title: string;
3581
+ detail: string;
3582
+ source: string;
3583
+ severity: "info" | "watch" | "act";
3584
+ }, {
3585
+ id: string;
3586
+ title: string;
3587
+ detail: string;
3588
+ source: string;
3589
+ severity: "info" | "watch" | "act";
3590
+ }>, "many">>;
3455
3591
  }, z.ZodTypeAny, "passthrough">>;
3456
3592
  export type ResolvedCareContract = z.infer<typeof resolvedCareSchema>;
3457
3593
  //# sourceMappingURL=crop-care.schemas.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"crop-care.schemas.d.ts","sourceRoot":"","sources":["../../src/schemas/crop-care.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAWZ,CAAC;AAEjB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAMZ,CAAC;AAEjB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAkCX,CAAC;AAEjB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCASf,CAAC;AAEjB,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
1
+ {"version":3,"file":"crop-care.schemas.d.ts","sourceRoot":"","sources":["../../src/schemas/crop-care.schemas.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAuBf,CAAC;AAEjB,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
@@ -51,6 +51,21 @@ export const carePlanSchema = z
51
51
  .optional(),
52
52
  })
53
53
  .passthrough();
54
+ export const careAdjustmentSchema = z.object({
55
+ id: z.string(),
56
+ severity: z.enum(['info', 'watch', 'act']),
57
+ title: z.string(),
58
+ detail: z.string(),
59
+ source: z.string(),
60
+ });
61
+ export const careAdjustmentsResponseSchema = z.object({
62
+ crop: z.string().nullable(),
63
+ stage: z.string().nullable(),
64
+ adjustments: z.array(careAdjustmentSchema),
65
+ /** False when no forecast could be loaded, so weather rules were skipped. */
66
+ weatherAvailable: z.boolean(),
67
+ generatedAt: z.string(),
68
+ });
54
69
  export const resolvedCareSchema = z
55
70
  .object({
56
71
  origin: z.enum(['file', 'database', 'generic']),
@@ -59,5 +74,17 @@ export const resolvedCareSchema = z
59
74
  day: z.number().nullable(),
60
75
  stage: careStageSchema,
61
76
  needsDate: z.boolean(),
77
+ assumedTransplant: z.boolean().optional(),
78
+ stageSource: z.enum(['calendar', 'observed']).optional(),
79
+ reviewNote: z.string().optional(),
80
+ adjustments: z
81
+ .array(z.object({
82
+ id: z.string(),
83
+ severity: z.enum(['info', 'watch', 'act']),
84
+ title: z.string(),
85
+ detail: z.string(),
86
+ source: z.string(),
87
+ }))
88
+ .optional(),
62
89
  })
63
90
  .passthrough();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deepintel-ltd/farmpro-contracts",
3
- "version": "1.34.1",
3
+ "version": "1.34.3",
4
4
  "description": "Type-safe API contracts for FarmPro API",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",