@litusarchieve18/agricore-utils 1.0.12 → 1.0.13

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.mjs CHANGED
@@ -1,3 +1,52 @@
1
+ import {
2
+ ACCESS_RANK,
3
+ ACT,
4
+ AccessLevel,
5
+ ApprovalStatus,
6
+ ApprovalType,
7
+ AuditStatus,
8
+ AuditType,
9
+ CAT,
10
+ CropCycleStatus,
11
+ DOCUMENT_MENU_MAP,
12
+ DocumentType,
13
+ ERROR_DICTIONARY,
14
+ EVERYONE,
15
+ EmitterType,
16
+ EnabledModule,
17
+ FORM_REGISTRY,
18
+ FacilityType,
19
+ HarvestMethod,
20
+ LinkedStatus,
21
+ MOD,
22
+ MODULE_LABELS,
23
+ MicroclimateZone,
24
+ MimeType,
25
+ NettingType,
26
+ NotificationMode,
27
+ OrderStatus,
28
+ PhysicalState,
29
+ PlantingMethod,
30
+ RESOURCE_MODULE_MAP,
31
+ RESOURCE_PATHS,
32
+ RESOURCE_REQUIREMENTS,
33
+ ROLE_SECTIONS_BY_KEY,
34
+ RelationshipType,
35
+ RowOrientation,
36
+ SENTINEL_UUID,
37
+ SoilTexture,
38
+ TASK_TYPE_REGISTRY,
39
+ TargetEntityType,
40
+ TaskStatus,
41
+ TaskType,
42
+ TransactionType,
43
+ TrellisType,
44
+ UserPrivilege,
45
+ UserRole,
46
+ VigorRating,
47
+ WaterSource
48
+ } from "./chunk-QI4YXI4P.mjs";
49
+
1
50
  // src/index.ts
2
51
  import { jwtVerify } from "jose";
3
52
 
@@ -188,36 +237,6 @@ var Converter = {
188
237
  };
189
238
 
190
239
  // src/index.ts
191
- var MOD = {
192
- OPERATIONS: "OPR",
193
- EQUIPMENT: "EQP",
194
- PACKHOUSE: "PCK",
195
- FARM: "FRM",
196
- SAFETY: "SAF",
197
- TEAM_HR: "THR",
198
- RECORDS: "REC",
199
- ADMIN: "ADM",
200
- DOCUMENTS: "DOC",
201
- ALERTS: "ALT",
202
- INFRA: "INF",
203
- SESSION: "SES"
204
- // ← added: used in generateSessionContext but was missing from errorRegistry.js
205
- };
206
- var CAT = {
207
- SUBSCRIPTION: "1",
208
- PERMISSION: "2",
209
- VALIDATION: "3",
210
- INTEGRITY: "4"
211
- };
212
- var ACT = {
213
- GENERIC: "00",
214
- VIEW: "01",
215
- CREATE: "02",
216
- EDIT: "03",
217
- DELETE: "04",
218
- UPLOAD: "05"
219
- };
220
- var SENTINEL_UUID = "00000000-0000-0000-0000-000000000000";
221
240
  var AppError = class extends Error {
222
241
  status;
223
242
  appCode;
@@ -255,43 +274,6 @@ var handleAppErrorResponse = (error, mod = MOD.ADMIN) => {
255
274
  { status: 500 }
256
275
  );
257
276
  };
258
- var MODULE_LABELS = {
259
- [MOD.OPERATIONS]: "Operations",
260
- [MOD.EQUIPMENT]: "Equipment & Fleet",
261
- [MOD.PACKHOUSE]: "Packhouse",
262
- [MOD.FARM]: "Farm Management",
263
- [MOD.SAFETY]: "Safety & Compliance",
264
- [MOD.TEAM_HR]: "Team & HR",
265
- [MOD.RECORDS]: "Records & Reports",
266
- [MOD.ADMIN]: "Admin Settings",
267
- [MOD.DOCUMENTS]: "Documents",
268
- [MOD.ALERTS]: "Alerts",
269
- [MOD.INFRA]: "Infrastructure",
270
- [MOD.SESSION]: "Session"
271
- };
272
- var ERROR_DICTIONARY = {
273
- // ── Gate 1: Subscription ──────────────────────────────────────────────────
274
- "100": { title: "Module Locked", text: "This feature is part of a module not enabled for your company. Contact your administrator to unlock it." },
275
- // ── Gate 2: Permission ────────────────────────────────────────────────────
276
- "200": { title: "Access Denied", text: "You do not have permission to perform this action. Contact your manager." },
277
- "201": { title: "Restricted View", text: "Viewing this section requires higher access. Contact your administrator." },
278
- "202": { title: "Creation Restricted", text: "You are not permitted to create new records here." },
279
- "203": { title: "Edit Restricted", text: "You do not have permission to edit this record." },
280
- "204": { title: "Protected Record", text: "You do not have permission to delete this record. Contact your administrator." },
281
- "205": { title: "Upload Restricted", text: "You are not permitted to upload files here." },
282
- // ── Gate 3: Validation ────────────────────────────────────────────────────
283
- "300": { title: "Invalid Input", text: "Something is wrong with the data provided. Please review and try again." },
284
- "301": { title: "Cannot Load Data", text: "Required information is missing to load this page." },
285
- "302": { title: "Missing Fields", text: "Please fill in all required fields before saving." },
286
- "303": { title: "Invalid Update", text: "The data you are trying to save is not valid. Please check your inputs." },
287
- "304": { title: "Cannot Delete", text: "The record cannot be deleted due to a validation issue." },
288
- "305": { title: "Upload Failed", text: "The file could not be uploaded. Please check the file type and size." },
289
- // ── Gate 4: Integrity ─────────────────────────────────────────────────────
290
- "400": { title: "Data Conflict", text: "A conflict occurred with an existing record. Please review and try again." },
291
- "402": { title: "Duplicate Entry", text: "A record with this name or identifier already exists." },
292
- "403": { title: "Edit Conflict", text: "This record was recently updated by someone else. Please refresh and try again." },
293
- "404": { title: "Record In Use", text: "This record cannot be deleted because it is referenced by other data." }
294
- };
295
277
  var FALLBACK = {
296
278
  title: "Something Went Wrong",
297
279
  text: "An unexpected error occurred. Please try again or contact your administrator."
@@ -433,458 +415,6 @@ function isTabVisible(session, activeScopeId, tabConfig) {
433
415
  function isTabWritable(session, activeScopeId, tabConfig) {
434
416
  return resolveAccess(session, activeScopeId, tabConfig) === "WRITE";
435
417
  }
436
- var UserRole = {
437
- OWNER: "owner",
438
- MANAGER: "manager",
439
- SUPERVISOR: "supervisor",
440
- LEADING_HAND: "leadingHand",
441
- WORKER: "worker"
442
- };
443
- var UserPrivilege = {
444
- FINANCE: "finance",
445
- HR: "hr",
446
- MECHANIC: "mechanic",
447
- AUDIT_COMPLIANCE: "auditCompliance",
448
- ADMIN: "admin"
449
- };
450
- var AccessLevel = {
451
- NONE: "NONE",
452
- READ: "READ",
453
- WRITE: "WRITE"
454
- };
455
- var EnabledModule = {
456
- FARM_MANAGEMENT: "farm_management",
457
- PACKHOUSE: "packhouse",
458
- ACCOMMODATION: "accommodation"
459
- };
460
- var FacilityType = {
461
- FARM: "farm",
462
- PACKHOUSE: "packhouse",
463
- ACCOMMODATION: "accommodation"
464
- };
465
- var LinkedStatus = {
466
- NOT_LINKED: "not_linked",
467
- PENDING_LINK: "pending_link",
468
- LINKED: "linked"
469
- };
470
- var RelationshipType = {
471
- SUPPLIER: "supplier",
472
- CUSTOMER: "customer",
473
- BOTH: "both"
474
- };
475
- var ApprovalType = {
476
- ROLE: "role",
477
- PRIVILEGE: "privilege",
478
- SPECIFIC_USERS: "specific_users"
479
- };
480
- var TransactionType = {
481
- PURCHASE_ORDER: "purchase_order",
482
- SALES_ORDER: "sales_order",
483
- REPAIR: "repair",
484
- FUEL: "fuel",
485
- OTHER: "other"
486
- };
487
- var ApprovalStatus = {
488
- PENDING: "pending",
489
- APPROVED: "approved",
490
- REJECTED: "rejected"
491
- };
492
- var OrderStatus = {
493
- DRAFT: "draft",
494
- PENDING_FINANCE: "pending_finance",
495
- NEW: "new",
496
- ACKNOWLEDGED: "acknowledged",
497
- IN_PROGRESS: "in_progress",
498
- SHIPPED: "shipped",
499
- RECEIVED: "received",
500
- CANCELLED: "cancelled"
501
- };
502
- var NotificationMode = {
503
- INTERNAL: "internal",
504
- EXTERNAL_EMAIL: "external_email",
505
- NONE: "none"
506
- };
507
- var TaskType = {
508
- KML_PARSE: "KML_PARSE",
509
- INVOICE_OCR: "INVOICE_OCR",
510
- AUDIT_UPLOAD: "AUDIT_UPLOAD",
511
- REPORT_GEN: "REPORT_GEN"
512
- };
513
- var TaskStatus = {
514
- PENDING: "PENDING",
515
- PROCESSING: "PROCESSING",
516
- COMPLETED: "COMPLETED",
517
- FAILED: "FAILED",
518
- AWAITING_REVIEW: "AWAITING_REVIEW",
519
- VERIFIED: "VERIFIED",
520
- REJECTED: "REJECTED"
521
- };
522
- var MimeType = {
523
- KML: "application/vnd.google-earth.kml+xml",
524
- KMZ: "application/vnd.google-earth.kmz",
525
- PDF: "application/pdf",
526
- XLSX: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
527
- XLS: "application/vnd.ms-excel",
528
- JPEG: "image/jpeg",
529
- PNG: "image/png"
530
- };
531
- var TargetEntityType = {
532
- FARM: "FARM",
533
- ZONE: "ZONE",
534
- BLOCK: "BLOCK",
535
- INFRASTRUCTURE: "INFRASTRUCTURE",
536
- AUTO: "AUTO"
537
- };
538
- var AuditType = {
539
- FRESHCARE: "Freshcare",
540
- HACCP: "HACCP",
541
- WHS: "WHS",
542
- CUSTOM: "Custom"
543
- };
544
- var AuditStatus = {
545
- DRAFT: "DRAFT",
546
- IN_REVIEW: "IN_REVIEW",
547
- FINALIZED: "FINALIZED"
548
- };
549
- var SoilTexture = {
550
- SAND: "SAND",
551
- LOAMY_SAND: "LOAMY_SAND",
552
- SANDY_LOAM: "SANDY_LOAM",
553
- LOAM: "LOAM",
554
- SILT_LOAM: "SILT_LOAM",
555
- SILT: "SILT",
556
- SANDY_CLAY_LOAM: "SANDY_CLAY_LOAM",
557
- CLAY_LOAM: "CLAY_LOAM",
558
- SILTY_CLAY_LOAM: "SILTY_CLAY_LOAM",
559
- SANDY_CLAY: "SANDY_CLAY",
560
- SILTY_CLAY: "SILTY_CLAY",
561
- CLAY: "CLAY"
562
- };
563
- var MicroclimateZone = {
564
- STANDARD: "STANDARD",
565
- FROST_POCKET: "FROST_POCKET",
566
- WIND_CORRIDOR: "WIND_CORRIDOR",
567
- EXPOSED_RIDGE: "EXPOSED_RIDGE",
568
- HEAT_TRAP: "HEAT_TRAP",
569
- RIPARIAN: "RIPARIAN"
570
- };
571
- var PlantingMethod = {
572
- SQUARE: "SQUARE",
573
- RECTANGULAR: "RECTANGULAR",
574
- HEXAGONAL: "HEXAGONAL",
575
- QUINCUNX: "QUINCUNX",
576
- CONTOUR: "CONTOUR"
577
- };
578
- var RowOrientation = {
579
- NORTH_SOUTH: "NORTH_SOUTH",
580
- EAST_WEST: "EAST_WEST",
581
- NORTHEAST_SOUTHWEST: "NORTHEAST_SOUTHWEST",
582
- NORTHWEST_SOUTHEAST: "NORTHWEST_SOUTHEAST"
583
- };
584
- var EmitterType = {
585
- SURFACE_DRIP: "SURFACE_DRIP",
586
- SUBSURFACE_DRIP: "SUBSURFACE_DRIP",
587
- MICRO_SPRINKLER: "MICRO_SPRINKLER",
588
- JET_SPRAY: "JET_SPRAY",
589
- INLINE_DRIPPER: "INLINE_DRIPPER",
590
- PRESSURE_COMPENSATED: "PRESSURE_COMPENSATED"
591
- };
592
- var TrellisType = {
593
- NONE: "NONE",
594
- VERTICAL_AXIS: "VERTICAL_AXIS",
595
- TWO_D_PLANE: "2D_PLANE",
596
- V_TRELLIS: "V_TRELLIS",
597
- T_BAR: "T_BAR",
598
- PERGOLA: "PERGOLA",
599
- Y_TRELLIS: "Y_TRELLIS"
600
- };
601
- var NettingType = {
602
- NONE: "NONE",
603
- OVERHEAD_HAIL: "OVERHEAD_HAIL",
604
- SIDE_BIRD: "SIDE_BIRD",
605
- FULL_EXCLUSION: "FULL_EXCLUSION",
606
- SHADE_30: "SHADE_30",
607
- SHADE_50: "SHADE_50",
608
- CROSS_OVER: "CROSS_OVER"
609
- };
610
- var HarvestMethod = {
611
- HAND: "HAND",
612
- MACHINE: "MACHINE"
613
- };
614
- var VigorRating = {
615
- VERY_LOW: "VERY_LOW",
616
- LOW: "LOW",
617
- MODERATE: "MODERATE",
618
- HIGH: "HIGH",
619
- VERY_HIGH: "VERY_HIGH"
620
- };
621
- var CropCycleStatus = {
622
- NEW: "NEW",
623
- CONFIRMED: "CONFIRMED",
624
- ACTIVE: "ACTIVE",
625
- COMPLETED: "COMPLETED"
626
- };
627
- var WaterSource = {
628
- BORE_WELL: "BORE_WELL",
629
- RIVER_STREAM: "RIVER_STREAM",
630
- ON_FARM_DAM: "ON_FARM_DAM",
631
- IRRIGATION_SCHEME: "IRRIGATION_SCHEME",
632
- MUNICIPAL: "MUNICIPAL",
633
- RECLAIMED_WASTE: "RECLAIMED_WASTE",
634
- RAINWATER: "RAINWATER"
635
- };
636
- var PhysicalState = {
637
- LIQUID: "LIQUID",
638
- GAS: "GAS"
639
- };
640
- var FORM_REGISTRY = {
641
- // ── Farm Management ──────────────────────────────────────────────────────
642
- farmForm: { label: "Farm Profile", menuUrl: "/admin", module: "Farm Management" },
643
- zoneForm: { label: "Zone Mapping", menuUrl: "/admin", module: "Farm Management" },
644
- blockForm: { label: "Block Definition", menuUrl: "/admin", module: "Farm Management" },
645
- // ── Crop & Variety ───────────────────────────────────────────────────────
646
- cropForm: { label: "Crop Profile", menuUrl: "/admin", module: "Crop Library" },
647
- varietyForm: { label: "Variety Blueprint", menuUrl: "/admin", module: "Crop Library" },
648
- // ── Administration ───────────────────────────────────────────────────────
649
- userAccessForm: { label: "User Access & Roles", menuUrl: "/admin/users", module: "Administration" },
650
- companySettingsForm: { label: "Company Settings", menuUrl: "/admin/company", module: "Administration" },
651
- financeTierForm: { label: "Finance Approval Tier", menuUrl: "/admin/company", module: "Administration" },
652
- // ── Audit & Compliance ───────────────────────────────────────────────────
653
- auditProjectForm: { label: "Audit Project", menuUrl: "/admin", module: "Audit & Compliance" }
654
- };
655
- function getFormMeta(componentId) {
656
- return FORM_REGISTRY[componentId] ?? null;
657
- }
658
- function getFormsGroupedByModule() {
659
- const groups = {};
660
- for (const [id, meta] of Object.entries(FORM_REGISTRY)) {
661
- if (!groups[meta.module]) groups[meta.module] = [];
662
- groups[meta.module].push({ id, ...meta });
663
- }
664
- return groups;
665
- }
666
- var TASK_TYPE_REGISTRY = {
667
- INVOICE_OCR: {
668
- label: "Invoice / Receipt OCR",
669
- targetEntity: "FuelInvoice",
670
- description: "Extract invoice data (supplier, amount, date, line items) using AI.",
671
- mimeTypes: [MimeType.PDF, MimeType.JPEG, MimeType.PNG],
672
- icon: "FileText",
673
- approveAction: "CREATE_FUEL_INVOICE"
674
- },
675
- KML_PARSE: {
676
- label: "KML / Farm Boundary",
677
- targetEntity: "Zone",
678
- description: "Parse KML file to extract GPS polygon boundaries for a farm zone.",
679
- mimeTypes: [MimeType.KML],
680
- icon: "MapPin",
681
- approveAction: "UPDATE_ZONE_POLYGON"
682
- },
683
- AUDIT_UPLOAD: {
684
- label: "Audit / Compliance Document",
685
- targetEntity: "AuditManifest",
686
- description: "Attach evidence documents to a compliance audit project.",
687
- mimeTypes: [MimeType.PDF, MimeType.JPEG, MimeType.PNG, MimeType.XLSX],
688
- icon: "ShieldCheck",
689
- approveAction: "LINK_AUDIT_MANIFEST"
690
- },
691
- REPORT_GEN: {
692
- label: "Report Generation",
693
- targetEntity: "AuditProject",
694
- description: "Upload a completed audit report for storage and linking.",
695
- mimeTypes: [MimeType.PDF],
696
- icon: "BarChart2",
697
- approveAction: "ATTACH_REPORT_FILE"
698
- }
699
- };
700
- var getTaskTypeOptions = () => Object.entries(TASK_TYPE_REGISTRY).map(([value, config]) => ({
701
- value,
702
- label: config.label,
703
- description: config.description,
704
- mimeTypes: config.mimeTypes,
705
- icon: config.icon
706
- }));
707
- var getAcceptedMimeTypes = (taskType) => {
708
- const config = TASK_TYPE_REGISTRY[taskType];
709
- return config ? config.mimeTypes.join(",") : "*/*";
710
- };
711
- var getApproveAction = (taskType) => {
712
- return TASK_TYPE_REGISTRY[taskType]?.approveAction ?? null;
713
- };
714
- var RESOURCE_PATHS = {
715
- // ── Top-level menu sections ────────────────────────────────────────────────
716
- dashboard: "dashboard",
717
- operations: "operations",
718
- equipment: "equipment",
719
- safety: "safety",
720
- team: "team",
721
- records: "records",
722
- adminSettings: "adminSettings",
723
- // ── Records & Reports ──────────────────────────────────────────────────────
724
- documentHub: "records.documentHub",
725
- documentHubTemplates: "records.documentHub.templates",
726
- documentHubFolder: "records.documentHub.companyFolder",
727
- documentHubExtraction: "records.documentHub.extractionHub",
728
- documentHubQueue: "records.documentHub.verificationQueue",
729
- analytics: "records.analytics",
730
- // ── Admin Settings ─────────────────────────────────────────────────────────
731
- adminUserRoster: "adminSettings.userRoster",
732
- adminRolesPermissions: "adminSettings.rolesPermissions",
733
- adminBlueprintsSites: "adminSettings.blueprintsSites",
734
- adminCompanySettings: "adminSettings.companySettings",
735
- // ── Operations ────────────────────────────────────────────────────────────
736
- farmManagement: "operations.farmManagement",
737
- packhouse: "operations.packhouse",
738
- accommodation: "operations.accommodation",
739
- // ── Equipment & Fleet ──────────────────────────────────────────────────────
740
- equipPreStart: "equipment.preStart",
741
- equipMaintenance: "equipment.maintenance",
742
- equipFuelRegister: "equipment.fuelRegister",
743
- equipCalibration: "equipment.calibration",
744
- equipFleet: "equipment.fleetManagement",
745
- // ── Safety, Quality & Compliance ──────────────────────────────────────────
746
- safetyAuditing: "safety.auditing",
747
- safetyFood: "safety.foodSafety",
748
- safetyWhs: "safety.whs",
749
- safetyCleaning: "safety.cleaning",
750
- // ── Team & HR ──────────────────────────────────────────────────────────────
751
- teamStaff: "team.staff",
752
- teamTraining: "team.training"
753
- };
754
- var ALL_OPERATIONS = [
755
- EnabledModule.FARM_MANAGEMENT,
756
- EnabledModule.PACKHOUSE,
757
- EnabledModule.ACCOMMODATION
758
- ];
759
- var AGRI_ONLY = [
760
- EnabledModule.FARM_MANAGEMENT,
761
- EnabledModule.PACKHOUSE
762
- ];
763
- var RESOURCE_MODULE_MAP = {
764
- // ── Top-level menu sections ────────────────────────────────────────────────
765
- // CORE features (accessible to everyone with an account)
766
- [RESOURCE_PATHS.dashboard]: [],
767
- [RESOURCE_PATHS.operations]: ALL_OPERATIONS,
768
- [RESOURCE_PATHS.equipment]: ALL_OPERATIONS,
769
- [RESOURCE_PATHS.safety]: ALL_OPERATIONS,
770
- [RESOURCE_PATHS.team]: ALL_OPERATIONS,
771
- [RESOURCE_PATHS.records]: ALL_OPERATIONS,
772
- [RESOURCE_PATHS.adminSettings]: ALL_OPERATIONS,
773
- // ── Records & Reports ──────────────────────────────────────────────────────
774
- [RESOURCE_PATHS.documentHub]: ALL_OPERATIONS,
775
- [RESOURCE_PATHS.documentHubTemplates]: ALL_OPERATIONS,
776
- [RESOURCE_PATHS.documentHubFolder]: ALL_OPERATIONS,
777
- [RESOURCE_PATHS.documentHubExtraction]: ALL_OPERATIONS,
778
- [RESOURCE_PATHS.documentHubQueue]: ALL_OPERATIONS,
779
- [RESOURCE_PATHS.analytics]: ALL_OPERATIONS,
780
- // ── Admin Settings ─────────────────────────────────────────────────────────
781
- [RESOURCE_PATHS.adminUserRoster]: ALL_OPERATIONS,
782
- [RESOURCE_PATHS.adminBlueprintsSites]: ALL_OPERATIONS,
783
- [RESOURCE_PATHS.adminRolesPermissions]: ALL_OPERATIONS,
784
- [RESOURCE_PATHS.adminCompanySettings]: ALL_OPERATIONS,
785
- // ── Operations ────────────────────────────────────────────────────────────
786
- [RESOURCE_PATHS.farmManagement]: [EnabledModule.FARM_MANAGEMENT],
787
- [RESOURCE_PATHS.packhouse]: [EnabledModule.PACKHOUSE],
788
- [RESOURCE_PATHS.accommodation]: [EnabledModule.ACCOMMODATION],
789
- // ── Equipment & Fleet ──────────────────────────────────────────────────────
790
- [RESOURCE_PATHS.equipPreStart]: ALL_OPERATIONS,
791
- [RESOURCE_PATHS.equipMaintenance]: ALL_OPERATIONS,
792
- [RESOURCE_PATHS.equipFuelRegister]: ALL_OPERATIONS,
793
- [RESOURCE_PATHS.equipCalibration]: AGRI_ONLY,
794
- [RESOURCE_PATHS.equipFleet]: ALL_OPERATIONS,
795
- // ── Safety, Quality & Compliance ──────────────────────────────────────────
796
- [RESOURCE_PATHS.safetyAuditing]: ALL_OPERATIONS,
797
- [RESOURCE_PATHS.safetyFood]: AGRI_ONLY,
798
- [RESOURCE_PATHS.safetyWhs]: ALL_OPERATIONS,
799
- [RESOURCE_PATHS.safetyCleaning]: ALL_OPERATIONS,
800
- // ── Team & HR ──────────────────────────────────────────────────────────────
801
- [RESOURCE_PATHS.teamStaff]: ALL_OPERATIONS,
802
- [RESOURCE_PATHS.teamTraining]: ALL_OPERATIONS
803
- };
804
- var ACCESS_RANK = {
805
- NONE: 0,
806
- READ: 1,
807
- WRITE: 2
808
- };
809
- var ROLE_SECTIONS_BY_KEY = {
810
- dashboard: [UserRole.OWNER, UserRole.MANAGER, UserRole.SUPERVISOR, UserRole.LEADING_HAND, UserRole.WORKER],
811
- operations: [UserRole.OWNER, UserRole.MANAGER, UserRole.SUPERVISOR, UserRole.LEADING_HAND, UserRole.WORKER],
812
- equipment: [UserRole.OWNER, UserRole.MANAGER, UserRole.SUPERVISOR, UserRole.LEADING_HAND, UserRole.WORKER],
813
- safety: [UserRole.OWNER, UserRole.MANAGER, UserRole.SUPERVISOR],
814
- team: [UserRole.OWNER, UserRole.MANAGER],
815
- records: [UserRole.OWNER, UserRole.MANAGER],
816
- adminSettings: []
817
- };
818
- var EVERYONE = Object.values(UserRole);
819
- var RESOURCE_REQUIREMENTS = {
820
- [RESOURCE_PATHS.dashboard]: {
821
- allowedRoles: EVERYONE
822
- },
823
- [RESOURCE_PATHS.operations]: {
824
- allowedRoles: EVERYONE
825
- },
826
- // [RESOURCE_PATHS.equipment]: EVERYONE,
827
- // [RESOURCE_PATHS.safety]: ALL_OPERATIONS,
828
- // [RESOURCE_PATHS.team]: ALL_OPERATIONS,
829
- // [RESOURCE_PATHS.records]: ALL_OPERATIONS,
830
- // [RESOURCE_PATHS.adminSettings]: ALL_OPERATIONS,
831
- // ── Records & Reports ──────────────────────────────────────────────────────
832
- [RESOURCE_PATHS.documentHub]: {
833
- allowedRoles: [UserRole.OWNER, UserRole.MANAGER, UserRole.SUPERVISOR],
834
- requiredPrivileges: [UserPrivilege.ADMIN, UserPrivilege.AUDIT_COMPLIANCE, UserPrivilege.FINANCE, UserPrivilege.HR]
835
- },
836
- [RESOURCE_PATHS.documentHubTemplates]: {
837
- allowedRoles: [UserRole.OWNER, UserRole.MANAGER, UserRole.SUPERVISOR],
838
- requiredPrivileges: [UserPrivilege.ADMIN, UserPrivilege.AUDIT_COMPLIANCE, UserPrivilege.FINANCE, UserPrivilege.HR]
839
- },
840
- [RESOURCE_PATHS.documentHubFolder]: {
841
- allowedRoles: [UserRole.OWNER, UserRole.MANAGER, UserRole.SUPERVISOR],
842
- requiredPrivileges: [UserPrivilege.ADMIN, UserPrivilege.AUDIT_COMPLIANCE, UserPrivilege.FINANCE, UserPrivilege.HR]
843
- },
844
- [RESOURCE_PATHS.documentHubExtraction]: {
845
- allowedRoles: [UserRole.OWNER, UserRole.MANAGER, UserRole.SUPERVISOR],
846
- requiredPrivileges: [UserPrivilege.ADMIN, UserPrivilege.AUDIT_COMPLIANCE, UserPrivilege.FINANCE, UserPrivilege.HR]
847
- },
848
- [RESOURCE_PATHS.documentHubQueue]: {
849
- allowedRoles: [UserRole.OWNER, UserRole.MANAGER, UserRole.SUPERVISOR],
850
- requiredPrivileges: [UserPrivilege.ADMIN, UserPrivilege.AUDIT_COMPLIANCE, UserPrivilege.FINANCE, UserPrivilege.HR]
851
- },
852
- // [RESOURCE_PATHS.analytics]: ALL_OPERATIONS,
853
- // ── Admin Settings ─────────────────────────────────────────────────────────
854
- [RESOURCE_PATHS.adminUserRoster]: {
855
- allowedRoles: [UserRole.OWNER],
856
- requiredPrivileges: [UserPrivilege.ADMIN]
857
- },
858
- [RESOURCE_PATHS.adminBlueprintsSites]: {
859
- allowedRoles: [UserRole.OWNER],
860
- requiredPrivileges: [UserPrivilege.ADMIN]
861
- },
862
- [RESOURCE_PATHS.adminRolesPermissions]: {
863
- allowedRoles: [UserRole.OWNER],
864
- requiredPrivileges: [UserPrivilege.ADMIN]
865
- },
866
- [RESOURCE_PATHS.adminCompanySettings]: {
867
- allowedRoles: [UserRole.OWNER]
868
- }
869
- // // ── Operations ────────────────────────────────────────────────────────────
870
- // [RESOURCE_PATHS.farmManagement]: [EnabledModule.FARM_MANAGEMENT],
871
- // [RESOURCE_PATHS.packhouse]: [EnabledModule.PACKHOUSE],
872
- // [RESOURCE_PATHS.accommodation]: [EnabledModule.ACCOMMODATION],
873
- // // ── Equipment & Fleet ──────────────────────────────────────────────────────
874
- // [RESOURCE_PATHS.equipPreStart]: ALL_OPERATIONS,
875
- // [RESOURCE_PATHS.equipMaintenance]: ALL_OPERATIONS,
876
- // [RESOURCE_PATHS.equipFuelRegister]: ALL_OPERATIONS,
877
- // [RESOURCE_PATHS.equipCalibration]: AGRI_ONLY,
878
- // [RESOURCE_PATHS.equipFleet]: ALL_OPERATIONS,
879
- // // ── Safety, Quality & Compliance ──────────────────────────────────────────
880
- // [RESOURCE_PATHS.safetyAuditing]: ALL_OPERATIONS,
881
- // [RESOURCE_PATHS.safetyFood]: AGRI_ONLY,
882
- // [RESOURCE_PATHS.safetyWhs]: ALL_OPERATIONS,
883
- // [RESOURCE_PATHS.safetyCleaning]: ALL_OPERATIONS,
884
- // // ── Team & HR ──────────────────────────────────────────────────────────────
885
- // [RESOURCE_PATHS.teamStaff]: ALL_OPERATIONS,
886
- // [RESOURCE_PATHS.teamTraining]: ALL_OPERATIONS,
887
- };
888
418
  function evaluateBaseAccess(resourcePath, session, requirements = {}) {
889
419
  if (!session?.role) return "NONE";
890
420
  if (session.role === UserRole.OWNER) return "WRITE";
@@ -961,42 +491,31 @@ async function verifyAndExtractSession(token, secret) {
961
491
  throw ErrorFactory.unauthorized(MOD.SESSION, "UNAUTHORIZED: No secure session token provided.");
962
492
  }
963
493
  }
964
- var DocumentType = /* @__PURE__ */ ((DocumentType2) => {
965
- DocumentType2["SPRAY_RECORD"] = "SPRAY_RECORD";
966
- DocumentType2["FERTIGATION_RECORD"] = "FERTIGATION_RECORD";
967
- DocumentType2["FERTILIZER_RECORD"] = "FERTILIZER_RECORD";
968
- DocumentType2["QA"] = "QA";
969
- DocumentType2["CLEANING"] = "CLEANING";
970
- DocumentType2["PEST"] = "PEST";
971
- DocumentType2["EQUIPMENT_CALIBRATION_RECORD"] = "EQUIPMENT_CALIBRATION_RECORD";
972
- DocumentType2["INVENTORY_CONSUMABLES"] = "INVENTORY_CONSUMABLES";
973
- DocumentType2["INVENTORY_BOX_CARTON"] = "INVENTORY_BOX_CARTON";
974
- DocumentType2["INVENTORY_CHEMICALS"] = "INVENTORY_CHEMICALS";
975
- DocumentType2["STOCKTAKE"] = "STOCKTAKE";
976
- DocumentType2["STOCKTAKE_MSDS"] = "STOCKTAKE_MSDS";
977
- DocumentType2["MAPPING_FARM_MAPS"] = "MAPPING_FARM_MAPS";
978
- DocumentType2["MAPPING_TRAFIC_MANAGEMENT"] = "MAPPING_TRAFIC_MANAGEMENT";
979
- DocumentType2["MAPPING_EMERGENCY"] = "MAPPING_EMERGENCY";
980
- DocumentType2["INCIDENT_REPORT"] = "INCIDENT_REPORT";
981
- DocumentType2["TRAINING_RECORDS"] = "TRAINING_RECORDS";
982
- DocumentType2["SOPS"] = "SOPS";
983
- DocumentType2["RISK_ASSESSMENTS"] = "RISK_ASSESSMENTS";
984
- DocumentType2["SERVICING_MAINTENANCE"] = "SERVICING_MAINTENANCE";
985
- DocumentType2["SOIL_TEST"] = "SOIL_TEST";
986
- DocumentType2["LEAF_TEST"] = "LEAF_TEST";
987
- DocumentType2["WATER_TEST"] = "WATER_TEST";
988
- DocumentType2["MRL_TESTING"] = "MRL_TESTING";
989
- DocumentType2["HEAVY_METAL"] = "HEAVY_METAL";
990
- DocumentType2["MICROBIAL"] = "MICROBIAL";
991
- DocumentType2["HARVEST_LOG"] = "HARVEST_LOG";
992
- DocumentType2["PACKHOUSE_INSPECTION"] = "PACKHOUSE_INSPECTION";
993
- DocumentType2["TRAINING_CERTIFICATE"] = "TRAINING_CERTIFICATE";
994
- DocumentType2["INVOICE"] = "INVOICE";
995
- DocumentType2["LEGAL_CONTRACT"] = "LEGAL_CONTRACT";
996
- DocumentType2["AUDIT_REPORT"] = "AUDIT_REPORT";
997
- DocumentType2["SENSITIVE_IDENTITY"] = "SENSITIVE_IDENTITY";
998
- return DocumentType2;
999
- })(DocumentType || {});
494
+ function getFormMeta(componentId) {
495
+ return FORM_REGISTRY[componentId] ?? null;
496
+ }
497
+ function getFormsGroupedByModule() {
498
+ const groups = {};
499
+ for (const [id, meta] of Object.entries(FORM_REGISTRY)) {
500
+ if (!groups[meta.module]) groups[meta.module] = [];
501
+ groups[meta.module].push({ id, ...meta });
502
+ }
503
+ return groups;
504
+ }
505
+ var getTaskTypeOptions = () => Object.entries(TASK_TYPE_REGISTRY).map(([value, config]) => ({
506
+ value,
507
+ label: config.label,
508
+ description: config.description,
509
+ mimeTypes: config.mimeTypes,
510
+ icon: config.icon
511
+ }));
512
+ var getAcceptedMimeTypes = (taskType) => {
513
+ const config = TASK_TYPE_REGISTRY[taskType];
514
+ return config ? config.mimeTypes.join(",") : "*/*";
515
+ };
516
+ var getApproveAction = (taskType) => {
517
+ return TASK_TYPE_REGISTRY[taskType]?.approveAction ?? null;
518
+ };
1000
519
  function generateDocumentPath(params) {
1001
520
  const sanitizedName = params.siteName.replace(/[^a-z0-9]/gi, "_");
1002
521
  if (params.isStatic) {
@@ -1047,6 +566,7 @@ export {
1047
566
  CAT,
1048
567
  Converter,
1049
568
  CropCycleStatus,
569
+ DOCUMENT_MENU_MAP,
1050
570
  DocumentType,
1051
571
  ERROR_DICTIONARY,
1052
572
  EVERYONE,