autopilot-core-sandbox 0.0.1

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 (822) hide show
  1. package/README.md +53 -0
  2. package/dist/Provider.d.ts +21 -0
  3. package/dist/Provider.d.ts.map +1 -0
  4. package/dist/Provider.js +61 -0
  5. package/dist/Provider.js.map +1 -0
  6. package/dist/dist/Provider.d.ts +21 -0
  7. package/dist/dist/Provider.d.ts.map +1 -0
  8. package/dist/dist/Provider.js +61 -0
  9. package/dist/dist/Provider.js.map +1 -0
  10. package/dist/dist/index.d.ts +45 -0
  11. package/dist/dist/index.d.ts.map +1 -0
  12. package/dist/dist/index.js +61 -0
  13. package/dist/dist/index.js.map +1 -0
  14. package/dist/dist/interfaces/index.d.ts +1238 -0
  15. package/dist/dist/interfaces/index.d.ts.map +1 -0
  16. package/dist/dist/interfaces/index.js +3 -0
  17. package/dist/dist/interfaces/index.js.map +1 -0
  18. package/dist/dist/migrations/20260608222757_remote_schema.sql +5666 -0
  19. package/dist/dist/migrations/20260611174826_add_job_item_recurring_id_to_job_item.sql +7 -0
  20. package/dist/dist/migrations/20260625224612_add_dashboard_guided_tour_dismissed_to_settings_user.sql +5 -0
  21. package/dist/dist/migrations/20260627031433_support_chat_tables.sql +115 -0
  22. package/dist/dist/migrations/20260627031434_support_chat_rls.sql +37 -0
  23. package/dist/dist/migrations/20260704170209_add_estimate_scheduling.sql +121 -0
  24. package/dist/dist/migrations/20260704170210_add_estimate_scheduling_rls.sql +42 -0
  25. package/dist/dist/migrations/20260704235034_add_estimate_reminder_settings.sql +11 -0
  26. package/dist/dist/migrations/20260707003825_blocked_number_table.sql +32 -0
  27. package/dist/dist/migrations/20260707003826_blocked_number_rls.sql +22 -0
  28. package/dist/dist/migrations/20260709191055_sms_opt_out_table.sql +38 -0
  29. package/dist/dist/migrations/20260709191056_sms_opt_out_rls.sql +21 -0
  30. package/dist/dist/migrations/20260709214507_job_time_entry_table.sql +70 -0
  31. package/dist/dist/migrations/20260709214508_job_time_entry_rls.sql +21 -0
  32. package/dist/dist/migrations/20260711185956_phone_call_table.sql +99 -0
  33. package/dist/dist/migrations/20260711185957_phone_call_rls.sql +25 -0
  34. package/dist/dist/migrations/20260712014705_ai_voice_assistant_settings.sql +71 -0
  35. package/dist/dist/migrations/20260712014706_ai_voice_assistant_settings_rls.sql +14 -0
  36. package/dist/dist/migrations/20260712014707_ai_prompt_templates.sql +28 -0
  37. package/dist/dist/migrations/20260712014708_ai_prompt_templates_rls.sql +5 -0
  38. package/dist/dist/migrations/20260712014709_ai_prompt_templates_seed.sql +77 -0
  39. package/dist/dist/migrations/20260715011550_reminder_dispatch_table.sql +47 -0
  40. package/dist/dist/migrations/20260715011551_reminder_dispatch_rls.sql +22 -0
  41. package/dist/dist/migrations/20260715192923_dedup_sequence_contact_add_unique_constraint.sql +27 -0
  42. package/dist/dist/migrations/20260716194420_add_employee_location_tracking.sql +146 -0
  43. package/dist/dist/migrations/20260716194421_add_employee_location_tracking_rls.sql +154 -0
  44. package/dist/dist/migrations/20260716194422_get_client_map_last_completed_jobs.sql +28 -0
  45. package/dist/dist/migrations/20260717144535_add_blast_email_invalid_skipped_count.sql +2 -0
  46. package/dist/dist/migrations/20260717162900_create_blast_email_chunk.sql +36 -0
  47. package/dist/dist/migrations/20260717162901_add_blast_email_chunk_rls.sql +5 -0
  48. package/dist/dist/migrations/20260717162902_add_blast_email_chunk_progress_columns.sql +3 -0
  49. package/dist/dist/migrations/20260717162903_add_blast_email_bounce_tracking_columns.sql +4 -0
  50. package/dist/dist/migrations/20260717162904_create_email_hard_bounced.sql +23 -0
  51. package/dist/dist/migrations/20260717162905_add_email_hard_bounced_rls.sql +5 -0
  52. package/dist/dist/migrations/20260717164837_add_sequence_contact_sent_at.sql +19 -0
  53. package/dist/dist/migrations/20260717170920_add_sequence_contact_claim_index.sql +12 -0
  54. package/dist/dist/migrations/20260719215139_create_outbound_event.sql +59 -0
  55. package/dist/dist/migrations/20260719215140_create_outbound_event_rls.sql +16 -0
  56. package/dist/dist/migrations/20260719215141_create_webhook_delivery.sql +99 -0
  57. package/dist/dist/migrations/20260719215142_create_webhook_delivery_rls.sql +11 -0
  58. package/dist/dist/migrations/20260719215143_outbound_event_triggers.sql +219 -0
  59. package/dist/dist/migrations/20260719215144_create_api_key.sql +34 -0
  60. package/dist/dist/migrations/20260719215146_create_api_key_rls.sql +12 -0
  61. package/dist/dist/migrations/20260719215147_webhook_subscription_add_secret_active.sql +28 -0
  62. package/dist/dist/migrations/20260719215148_api_aggregate_create_functions.sql +479 -0
  63. package/dist/dist/migrations/20260721174837_webhook_subscription_generic_endpoints.sql +41 -0
  64. package/dist/dist/migrations/20260721185631_webhook_outbox_retention.sql +87 -0
  65. package/dist/dist/migrations/20260721190304_create_qb_sync_task.sql +120 -0
  66. package/dist/dist/migrations/20260721190306_qb_sync_task_rls.sql +8 -0
  67. package/dist/dist/migrations/20260721190307_qb_mapping_orphan_fks.sql +29 -0
  68. package/dist/dist/migrations/20260721190308_qb_task_retention.sql +90 -0
  69. package/dist/dist/migrations/20260721234401_create_permission_role.sql +83 -0
  70. package/dist/dist/migrations/20260721234402_permission_role_rls.sql +22 -0
  71. package/dist/dist/migrations/20260721234403_user_role_add_permission_role_id.sql +12 -0
  72. package/dist/dist/migrations/20260721234404_seed_permission_roles.sql +100 -0
  73. package/dist/dist/migrations/20260721234405_backfill_user_role_permission_role_id.sql +20 -0
  74. package/dist/dist/migrations/20260722193800_permission_role_add_manage_employees.sql +56 -0
  75. package/dist/dist/migrations/20260723025606_staging_new_employee_company_read_rls.sql +10 -0
  76. package/dist/dist/migrations/20260723134328_create_google_lsa_integration.sql +1016 -0
  77. package/dist/dist/migrations/20260723134329_google_lsa_integration_rls.sql +205 -0
  78. package/dist/dist/migrations/20260723150640_google_lsa_hardening.sql +169 -0
  79. package/dist/dist/migrations/20260723150641_google_lsa_hardening_rls.sql +12 -0
  80. package/dist/dist/migrations/20260724230721_google_lsa_facebook_exclusivity_attach.sql +104 -0
  81. package/dist/dist/migrations/20260724230722_google_lsa_facebook_exclusivity_attach_rls.sql +20 -0
  82. package/dist/dist/migrations/20260725172630_add_message_pagination_and_search.sql +265 -0
  83. package/dist/dist/migrations/20260725172631_add_message_pagination_and_search_rls.sql +72 -0
  84. package/dist/dist/migrations/20260725172632_optimize_message_thread_pagination_search.sql +245 -0
  85. package/dist/dist/migrations/20260725172633_harden_message_search_and_photo_pagination.sql +256 -0
  86. package/dist/dist/migrations/20260725172634_fix_message_thread_line_filter.sql +250 -0
  87. package/dist/dist/migrations/20260725174948_google_lsa_attach_bing_exclusivity_guard.sql +23 -0
  88. package/dist/dist/migrations/20260725200430_client_portal_settings.sql +41 -0
  89. package/dist/dist/migrations/20260725200431_client_portal_settings_rls.sql +21 -0
  90. package/dist/dist/migrations/20260725200433_client_portal_auth_tables.sql +81 -0
  91. package/dist/dist/migrations/20260725200434_client_portal_auth_rls.sql +18 -0
  92. package/dist/dist/migrations/20260725200435_portal_claim_login_attempt.sql +36 -0
  93. package/dist/dist/migrations/20260725200436_portal_appointment_request.sql +39 -0
  94. package/dist/dist/migrations/20260725200437_portal_appointment_request_rls.sql +10 -0
  95. package/dist/dist/migrations/20260725210000_google_reserve_integration.sql +85 -0
  96. package/dist/dist/migrations/20260725210001_google_reserve_integration_rls.sql +10 -0
  97. package/dist/dist/migrations/20260725220000_add_analytics_query_indexes.sql +47 -0
  98. package/dist/dist/migrations/20260725230000_onboarding_preload_data.sql +1074 -0
  99. package/dist/dist/migrations/20260725230001_onboarding_preload_data_rls.sql +40 -0
  100. package/dist/dist/migrations/20260725230002_add_pricebook_query_indexes.sql +13 -0
  101. package/dist/dist/migrations/20260726000000_facebook_ads_integration.sql +1538 -0
  102. package/dist/dist/migrations/20260726000001_facebook_ads_integration_rls.sql +356 -0
  103. package/dist/dist/migrations/20260726000002_facebook_ads_attach_lsa_exclusivity_guard.sql +25 -0
  104. package/dist/dist/migrations/20260726000003_facebook_ads_attach_bing_exclusivity_guard.sql +22 -0
  105. package/dist/dist/migrations/20260726010000_create_bing_ads_integration.sql +1112 -0
  106. package/dist/dist/migrations/20260726010001_bing_ads_integration_rls.sql +227 -0
  107. package/dist/dist/migrations/20260726220000_add_document_theme_settings.sql +11 -0
  108. package/dist/dist/migrations/20260726220001_update_document_theme_comments.sql +7 -0
  109. package/dist/dist/migrations/20260727210319_evolve_tier_for_pricing.sql +68 -0
  110. package/dist/dist/migrations/20260727210320_create_billing_addon.sql +85 -0
  111. package/dist/dist/migrations/20260727210321_create_billing_addon_rls.sql +21 -0
  112. package/dist/dist/migrations/20260728213930_create_usage_metering.sql +189 -0
  113. package/dist/dist/migrations/20260728213931_create_usage_metering_rls.sql +32 -0
  114. package/dist/dist/migrations/20260729004305_marketing_charge_txn_functions.sql +242 -0
  115. package/dist/dist/migrations/20260729004306_marketing_charge_txn_functions_rls.sql +37 -0
  116. package/dist/dist/migrations/20260729005524_update_deduct_from_balance_errcode.sql +42 -0
  117. package/dist/dist/migrations/20260730193601_fix_deduct_from_balance_lost_update.sql +46 -0
  118. package/dist/dist/migrations/20260730193602_add_blast_sms_chunk_reaper_columns.sql +27 -0
  119. package/dist/dist/migrations/20260731011415_create_google_calendar_connection.sql +84 -0
  120. package/dist/dist/migrations/20260731011416_google_calendar_connection_rls.sql +23 -0
  121. package/dist/dist/migrations/20260731011417_create_google_calendar_sync.sql +157 -0
  122. package/dist/dist/migrations/20260731011418_google_calendar_sync_rls.sql +26 -0
  123. package/dist/dist/migrations/20260731011419_event_outbound_triggers.sql +28 -0
  124. package/dist/dist/migrations/20260731011420_add_google_calendar_addon_key.sql +24 -0
  125. package/dist/dist/migrations/20260731011421_gcal_task_retention.sql +109 -0
  126. package/dist/dist/migrations/20260731234245_create_estimate_proposal.sql +157 -0
  127. package/dist/dist/migrations/20260731234247_estimate_proposal_rls.sql +46 -0
  128. package/dist/dist/migrations/20260731234248_add_proposal_estimate_settings.sql +17 -0
  129. package/dist/dist/migrations/20260731234249_add_estimate_proposals_addon_key.sql +25 -0
  130. package/dist/dist/migrations/20260731234250_approve_estimate_proposal_function.sql +133 -0
  131. package/dist/dist/migrations/20260801010609_save_estimate_proposal_function.sql +154 -0
  132. package/dist/dist/migrations/20260801173554_add_hide_autopilot_branding_setting.sql +6 -0
  133. package/dist/dist/migrations/20260806230917_add_client_billing_address_columns.sql +9 -0
  134. package/dist/dist/migrations/20260806230944_api_create_client_billing_address.sql +93 -0
  135. package/dist/dist/migrations/20260807014702_create_parent_id_company_id_keys.sql +20 -0
  136. package/dist/dist/migrations/20260807014703_create_contract_template.sql +30 -0
  137. package/dist/dist/migrations/20260807014704_create_contract.sql +233 -0
  138. package/dist/dist/migrations/20260807014705_create_contract_signature.sql +39 -0
  139. package/dist/dist/migrations/20260807014706_create_item_contract_requirement.sql +38 -0
  140. package/dist/dist/migrations/20260807014707_create_settings_contract.sql +23 -0
  141. package/dist/dist/migrations/20260807014708_contract_rls.sql +74 -0
  142. package/dist/dist/migrations/20260807014709_sign_contract_function.sql +92 -0
  143. package/dist/dist/migrations/20260807014710_create_settings_rental.sql +34 -0
  144. package/dist/dist/migrations/20260807014711_create_saved_location.sql +56 -0
  145. package/dist/dist/migrations/20260807014712_create_rental_task_option.sql +52 -0
  146. package/dist/dist/migrations/20260807014713_create_asset.sql +90 -0
  147. package/dist/dist/migrations/20260807014714_add_job_schedule_asset_fkeys.sql +39 -0
  148. package/dist/dist/migrations/20260807014715_rental_rls.sql +48 -0
  149. package/dist/dist/migrations/20260807014716_add_job_schedule_any_time.sql +7 -0
  150. package/dist/dist/migrations/20260807014717_add_job_schedule_target_location.sql +48 -0
  151. package/dist/dist/migrations/20260807014718_job_schedule_completion_guard.sql +53 -0
  152. package/dist/dist/migrations/20260807014719_add_job_schedule_list_sort_key.sql +7 -0
  153. package/dist/dist/migrations/20260807014720_add_item_duration.sql +11 -0
  154. package/dist/dist/migrations/20260807014721_add_settings_booking_enforce_rental_availability.sql +9 -0
  155. package/dist/dist/migrations/20260807014722_add_job_unsigned_rental_agreement.sql +10 -0
  156. package/dist/dist/migrations/20260807014723_add_item_size.sql +12 -0
  157. package/dist/dist/migrations/20260809193533_add_booking_path_button_labels.sql +11 -0
  158. package/dist/dist/migrations/20260809231721_add_route_distance_cache.sql +37 -0
  159. package/dist/dist/migrations/20260809231722_route_distance_cache_rls.sql +15 -0
  160. package/dist/dist/migrations/20260809231723_apply_rental_route_plan_function.sql +275 -0
  161. package/dist/dist/migrations/20260810171550_add_settings_job_default_job_types.sql +9 -0
  162. package/dist/dist/migrations/20260810212430_backfill_rental_task_option_sort_order.sql +61 -0
  163. package/dist/dist/migrations/20260811224317_add_settings_user_dnd_hint_dismissed.sql +9 -0
  164. package/dist/dist/migrations/20260813174503_repair_user_role_email_drift.sql +59 -0
  165. package/dist/dist/migrations/20260813174504_sync_user_role_email_trigger.sql +30 -0
  166. package/dist/dist/migrations/20260813175210_add_event_list_sort_key.sql +5 -0
  167. package/dist/dist/migrations/20260814172222_add_client_auto_bill_on_completion.sql +6 -0
  168. package/dist/dist/migrations/20260816160252_create_automation_rule.sql +99 -0
  169. package/dist/dist/migrations/20260816160253_automation_rule_rls.sql +19 -0
  170. package/dist/dist/migrations/20260816160254_create_settings_automation.sql +36 -0
  171. package/dist/dist/migrations/20260816160255_settings_automation_rls.sql +18 -0
  172. package/dist/dist/migrations/20260816160256_create_automation_event.sql +71 -0
  173. package/dist/dist/migrations/20260816160257_automation_event_rls.sql +12 -0
  174. package/dist/dist/migrations/20260816160258_create_automation_run.sql +129 -0
  175. package/dist/dist/migrations/20260816160259_automation_run_rls.sql +19 -0
  176. package/dist/dist/migrations/20260816160300_add_client_created_via.sql +25 -0
  177. package/dist/dist/migrations/20260816160301_add_estimate_sent_at.sql +39 -0
  178. package/dist/dist/migrations/20260816160302_add_message_automation_ref.sql +10 -0
  179. package/dist/dist/migrations/20260816160303_automation_event_triggers.sql +236 -0
  180. package/dist/dist/migrations/20260816160304_automation_retention.sql +142 -0
  181. package/dist/dist/migrations/20260816202404_add_automation_center_addon_key.sql +26 -0
  182. package/dist/dist/migrations/20260816225501_widen_automation_rule_trigger_action_checks.sql +25 -0
  183. package/dist/dist/migrations/20260816225502_widen_automation_event_type_check.sql +18 -0
  184. package/dist/dist/migrations/20260816225503_add_invoice_id_to_automation_tables.sql +18 -0
  185. package/dist/dist/migrations/20260816225504_add_job_rescheduled_capture_trigger.sql +51 -0
  186. package/dist/dist/migrations/20260816225505_add_lead_converted_capture_trigger.sql +26 -0
  187. package/dist/dist/migrations/20260816225506_fix_booking_request_import_guard.sql +27 -0
  188. package/dist/dist/migrations/20260816225507_widen_outbound_event_for_automation.sql +38 -0
  189. package/dist/dist/migrations/20260817002626_add_user_last_login_platform_columns.sql +14 -0
  190. package/dist/dist/migrations/20260817221703_create_deletion.sql +34 -0
  191. package/dist/dist/migrations/20260817221707_deletion_rls.sql +21 -0
  192. package/dist/dist/migrations/20260817221708_add_soft_delete_columns.sql +82 -0
  193. package/dist/dist/migrations/20260817221709_trash_functions.sql +434 -0
  194. package/dist/dist/migrations/20260817221710_outbound_event_soft_delete.sql +55 -0
  195. package/dist/dist/migrations/20260817221711_automation_soft_delete_events.sql +77 -0
  196. package/dist/dist/migrations/20260817221712_fix_estimate_address_cascade.sql +14 -0
  197. package/dist/dist/migrations/20260817232630_trash_batch_function.sql +67 -0
  198. package/dist/dist/migrations/20260819170204_create_email_spam_complaint.sql +23 -0
  199. package/dist/dist/migrations/20260819170205_add_email_spam_complaint_rls.sql +5 -0
  200. package/dist/dist/migrations/20260819170206_email_unsubscribed_upsert_constraints.sql +14 -0
  201. package/dist/dist/migrations/20260819180151_get_suppressed_emails_function.sql +23 -0
  202. package/dist/dist/migrations/20260819191143_is_deleted_backfill_guard.sql +29 -0
  203. package/dist/dist/migrations/20260819191144_trash_functions_no_dual_write.sql +319 -0
  204. package/dist/dist/migrations/20260819191145_client_map_jobs_deleted_at.sql +33 -0
  205. package/dist/dist/migrations/20260819191147_booking_declined_deleted_at.sql +28 -0
  206. package/dist/dist/migrations/20260819191148_onboarding_preload_no_address_is_deleted.sql +1019 -0
  207. package/dist/dist/migrations/20260820222756_add_settings_job_hide_task_timer.sql +2 -0
  208. package/dist/dist/migrations/20260824234151_add_blast_chunk_recipients.sql +13 -0
  209. package/dist/dist/migrations/20260824234152_add_blast_pause_cancel_columns.sql +10 -0
  210. package/dist/dist/migrations/20260825014725_get_job_ids_in_range.sql +42 -0
  211. package/dist/dist/migrations/20260825194452_add_failed_job_status.sql +15 -0
  212. package/dist/dist/migrations/20260825194457_remove_take_to_rental_task_options.sql +24 -0
  213. package/dist/dist/migrations/20260825194458_remove_take_to_job_schedules.sql +12 -0
  214. package/dist/dist/migrations/20260825194459_rework_apply_rental_route_plan_no_take_to.sql +168 -0
  215. package/dist/dist/migrations/20260825194500_drop_job_schedule_target_location.sql +24 -0
  216. package/dist/dist/migrations/20260825194501_add_job_schedule_size.sql +17 -0
  217. package/dist/dist/migrations/20260825233001_add_job_schedule_id_company_id_key.sql +11 -0
  218. package/dist/dist/migrations/20260825233002_create_route_plan.sql +52 -0
  219. package/dist/dist/migrations/20260825233003_create_route_plan_stop.sql +159 -0
  220. package/dist/dist/migrations/20260825233004_route_plan_rls.sql +32 -0
  221. package/dist/dist/migrations/20260825233005_apply_rental_route_plan_v2.sql +351 -0
  222. package/dist/dist/migrations/20260826150934_facebook_ads_lead_ingestion.sql +1711 -0
  223. package/dist/dist/migrations/20260826151141_facebook_ads_lead_ingestion_rls_v2.sql +43 -0
  224. package/dist/dist/migrations/20260826234722_facebook_messenger_ingestion.sql +703 -0
  225. package/dist/dist/migrations/20260826234723_facebook_messenger_ingestion_rls.sql +80 -0
  226. package/dist/dist/migrations/20260826234724_widen_automations_messenger.sql +46 -0
  227. package/dist/dist/migrations/20260827100001_add_route_plan_minutes.sql +10 -0
  228. package/dist/dist/migrations/20260827100002_add_route_plan_stop_leg_minutes.sql +9 -0
  229. package/dist/dist/migrations/20260827100003_apply_rental_route_plan_v3.sql +341 -0
  230. package/dist/dist/migrations/20260827230346_apply_rental_route_plan_v4.sql +366 -0
  231. package/dist/dist/migrations/20260829090911_create_fleet_schema.sql +3698 -0
  232. package/dist/dist/migrations/20260829090912_fleet_rls.sql +1011 -0
  233. package/dist/dist/migrations/20260831102212_add_online_booking_address_display.sql +8 -0
  234. package/dist/dist/providers/AddressProvider.d.ts +9 -0
  235. package/dist/dist/providers/AddressProvider.d.ts.map +1 -0
  236. package/dist/dist/providers/AddressProvider.js +207 -0
  237. package/dist/dist/providers/AddressProvider.js.map +1 -0
  238. package/dist/dist/providers/AutomationsProvider.d.ts +11 -0
  239. package/dist/dist/providers/AutomationsProvider.d.ts.map +1 -0
  240. package/dist/dist/providers/AutomationsProvider.js +170 -0
  241. package/dist/dist/providers/AutomationsProvider.js.map +1 -0
  242. package/dist/dist/providers/BlockedNumbersProvider.d.ts +13 -0
  243. package/dist/dist/providers/BlockedNumbersProvider.d.ts.map +1 -0
  244. package/dist/dist/providers/BlockedNumbersProvider.js +71 -0
  245. package/dist/dist/providers/BlockedNumbersProvider.js.map +1 -0
  246. package/dist/dist/providers/CategoryProvider.d.ts +8 -0
  247. package/dist/dist/providers/CategoryProvider.d.ts.map +1 -0
  248. package/dist/dist/providers/CategoryProvider.js +95 -0
  249. package/dist/dist/providers/CategoryProvider.js.map +1 -0
  250. package/dist/dist/providers/ClientProvider.d.ts +39 -0
  251. package/dist/dist/providers/ClientProvider.d.ts.map +1 -0
  252. package/dist/dist/providers/ClientProvider.js +253 -0
  253. package/dist/dist/providers/ClientProvider.js.map +1 -0
  254. package/dist/dist/providers/CompanyProvider.d.ts +7 -0
  255. package/dist/dist/providers/CompanyProvider.d.ts.map +1 -0
  256. package/dist/dist/providers/CompanyProvider.js +114 -0
  257. package/dist/dist/providers/CompanyProvider.js.map +1 -0
  258. package/dist/dist/providers/DashboardProvider.d.ts +78 -0
  259. package/dist/dist/providers/DashboardProvider.d.ts.map +1 -0
  260. package/dist/dist/providers/DashboardProvider.js +568 -0
  261. package/dist/dist/providers/DashboardProvider.js.map +1 -0
  262. package/dist/dist/providers/DiscountProvider.d.ts +8 -0
  263. package/dist/dist/providers/DiscountProvider.d.ts.map +1 -0
  264. package/dist/dist/providers/DiscountProvider.js +92 -0
  265. package/dist/dist/providers/DiscountProvider.js.map +1 -0
  266. package/dist/dist/providers/EmployeesProvider.d.ts +6 -0
  267. package/dist/dist/providers/EmployeesProvider.d.ts.map +1 -0
  268. package/dist/dist/providers/EmployeesProvider.js +185 -0
  269. package/dist/dist/providers/EmployeesProvider.js.map +1 -0
  270. package/dist/dist/providers/EstimatesProvider.d.ts +16 -0
  271. package/dist/dist/providers/EstimatesProvider.d.ts.map +1 -0
  272. package/dist/dist/providers/EstimatesProvider.js +251 -0
  273. package/dist/dist/providers/EstimatesProvider.js.map +1 -0
  274. package/dist/dist/providers/EventsProvider.d.ts +4 -0
  275. package/dist/dist/providers/EventsProvider.d.ts.map +1 -0
  276. package/dist/dist/providers/EventsProvider.js +24 -0
  277. package/dist/dist/providers/EventsProvider.js.map +1 -0
  278. package/dist/dist/providers/FilesProvider.d.ts +17 -0
  279. package/dist/dist/providers/FilesProvider.d.ts.map +1 -0
  280. package/dist/dist/providers/FilesProvider.js +201 -0
  281. package/dist/dist/providers/FilesProvider.js.map +1 -0
  282. package/dist/dist/providers/InvoicesProvider.d.ts +13 -0
  283. package/dist/dist/providers/InvoicesProvider.d.ts.map +1 -0
  284. package/dist/dist/providers/InvoicesProvider.js +207 -0
  285. package/dist/dist/providers/InvoicesProvider.js.map +1 -0
  286. package/dist/dist/providers/ItemProvider.d.ts +9 -0
  287. package/dist/dist/providers/ItemProvider.d.ts.map +1 -0
  288. package/dist/dist/providers/ItemProvider.js +201 -0
  289. package/dist/dist/providers/ItemProvider.js.map +1 -0
  290. package/dist/dist/providers/JobSourceProvider.d.ts +8 -0
  291. package/dist/dist/providers/JobSourceProvider.d.ts.map +1 -0
  292. package/dist/dist/providers/JobSourceProvider.js +75 -0
  293. package/dist/dist/providers/JobSourceProvider.js.map +1 -0
  294. package/dist/dist/providers/JobTypeProvider.d.ts +8 -0
  295. package/dist/dist/providers/JobTypeProvider.d.ts.map +1 -0
  296. package/dist/dist/providers/JobTypeProvider.js +75 -0
  297. package/dist/dist/providers/JobTypeProvider.js.map +1 -0
  298. package/dist/dist/providers/JobsProvider.d.ts +35 -0
  299. package/dist/dist/providers/JobsProvider.d.ts.map +1 -0
  300. package/dist/dist/providers/JobsProvider.js +863 -0
  301. package/dist/dist/providers/JobsProvider.js.map +1 -0
  302. package/dist/dist/providers/MessagesProvider.d.ts +33 -0
  303. package/dist/dist/providers/MessagesProvider.d.ts.map +1 -0
  304. package/dist/dist/providers/MessagesProvider.js +415 -0
  305. package/dist/dist/providers/MessagesProvider.js.map +1 -0
  306. package/dist/dist/providers/PaymentProvider.d.ts +9 -0
  307. package/dist/dist/providers/PaymentProvider.d.ts.map +1 -0
  308. package/dist/dist/providers/PaymentProvider.js +48 -0
  309. package/dist/dist/providers/PaymentProvider.js.map +1 -0
  310. package/dist/dist/providers/PermissionRolesProvider.d.ts +5 -0
  311. package/dist/dist/providers/PermissionRolesProvider.d.ts.map +1 -0
  312. package/dist/dist/providers/PermissionRolesProvider.js +30 -0
  313. package/dist/dist/providers/PermissionRolesProvider.js.map +1 -0
  314. package/dist/dist/providers/PhoneNumberProvider.d.ts +12 -0
  315. package/dist/dist/providers/PhoneNumberProvider.d.ts.map +1 -0
  316. package/dist/dist/providers/PhoneNumberProvider.js +184 -0
  317. package/dist/dist/providers/PhoneNumberProvider.js.map +1 -0
  318. package/dist/dist/providers/ProfileProvider.d.ts +6 -0
  319. package/dist/dist/providers/ProfileProvider.d.ts.map +1 -0
  320. package/dist/dist/providers/ProfileProvider.js +71 -0
  321. package/dist/dist/providers/ProfileProvider.js.map +1 -0
  322. package/dist/dist/providers/RentalsProvider.d.ts +28 -0
  323. package/dist/dist/providers/RentalsProvider.d.ts.map +1 -0
  324. package/dist/dist/providers/RentalsProvider.js +438 -0
  325. package/dist/dist/providers/RentalsProvider.js.map +1 -0
  326. package/dist/dist/providers/SettingsBookingProvider.d.ts +9 -0
  327. package/dist/dist/providers/SettingsBookingProvider.d.ts.map +1 -0
  328. package/dist/dist/providers/SettingsBookingProvider.js +163 -0
  329. package/dist/dist/providers/SettingsBookingProvider.js.map +1 -0
  330. package/dist/dist/providers/SettingsProvider.d.ts +8 -0
  331. package/dist/dist/providers/SettingsProvider.d.ts.map +1 -0
  332. package/dist/dist/providers/SettingsProvider.js +86 -0
  333. package/dist/dist/providers/SettingsProvider.js.map +1 -0
  334. package/dist/dist/providers/TagsProvider.d.ts +12 -0
  335. package/dist/dist/providers/TagsProvider.d.ts.map +1 -0
  336. package/dist/dist/providers/TagsProvider.js +210 -0
  337. package/dist/dist/providers/TagsProvider.js.map +1 -0
  338. package/dist/dist/providers/TimeCardProvider.d.ts +8 -0
  339. package/dist/dist/providers/TimeCardProvider.d.ts.map +1 -0
  340. package/dist/dist/providers/TimeCardProvider.js +93 -0
  341. package/dist/dist/providers/TimeCardProvider.js.map +1 -0
  342. package/dist/dist/providers/TrashProvider.d.ts +13 -0
  343. package/dist/dist/providers/TrashProvider.d.ts.map +1 -0
  344. package/dist/dist/providers/TrashProvider.js +98 -0
  345. package/dist/dist/providers/TrashProvider.js.map +1 -0
  346. package/dist/dist/providers/dashboardAnalytics.d.ts +9 -0
  347. package/dist/dist/providers/dashboardAnalytics.d.ts.map +1 -0
  348. package/dist/dist/providers/dashboardAnalytics.js +41 -0
  349. package/dist/dist/providers/dashboardAnalytics.js.map +1 -0
  350. package/dist/dist/providers/dashboardAnalytics.test.d.ts +2 -0
  351. package/dist/dist/providers/dashboardAnalytics.test.d.ts.map +1 -0
  352. package/dist/dist/providers/dashboardAnalytics.test.js +111 -0
  353. package/dist/dist/providers/dashboardAnalytics.test.js.map +1 -0
  354. package/dist/dist/server-safe/BlockedNumberFunctions.d.ts +11 -0
  355. package/dist/dist/server-safe/BlockedNumberFunctions.d.ts.map +1 -0
  356. package/dist/dist/server-safe/BlockedNumberFunctions.js +16 -0
  357. package/dist/dist/server-safe/BlockedNumberFunctions.js.map +1 -0
  358. package/dist/dist/server-safe/EmployeeFunctions.d.ts +14 -0
  359. package/dist/dist/server-safe/EmployeeFunctions.d.ts.map +1 -0
  360. package/dist/dist/server-safe/EmployeeFunctions.js +70 -0
  361. package/dist/dist/server-safe/EmployeeFunctions.js.map +1 -0
  362. package/dist/dist/server-safe/EmployeeLocationFunctions.d.ts +7 -0
  363. package/dist/dist/server-safe/EmployeeLocationFunctions.d.ts.map +1 -0
  364. package/dist/dist/server-safe/EmployeeLocationFunctions.js +47 -0
  365. package/dist/dist/server-safe/EmployeeLocationFunctions.js.map +1 -0
  366. package/dist/dist/server-safe/EstimateFunctions.d.ts +15 -0
  367. package/dist/dist/server-safe/EstimateFunctions.d.ts.map +1 -0
  368. package/dist/dist/server-safe/EstimateFunctions.js +34 -0
  369. package/dist/dist/server-safe/EstimateFunctions.js.map +1 -0
  370. package/dist/dist/server-safe/InvoiceFunctions.d.ts +21 -0
  371. package/dist/dist/server-safe/InvoiceFunctions.d.ts.map +1 -0
  372. package/dist/dist/server-safe/InvoiceFunctions.js +124 -0
  373. package/dist/dist/server-safe/InvoiceFunctions.js.map +1 -0
  374. package/dist/dist/server-safe/JobFunctions.d.ts +15 -0
  375. package/dist/dist/server-safe/JobFunctions.d.ts.map +1 -0
  376. package/dist/dist/server-safe/JobFunctions.js +56 -0
  377. package/dist/dist/server-safe/JobFunctions.js.map +1 -0
  378. package/dist/dist/server-safe/PaymentFunctions.d.ts +16 -0
  379. package/dist/dist/server-safe/PaymentFunctions.d.ts.map +1 -0
  380. package/dist/dist/server-safe/PaymentFunctions.js +80 -0
  381. package/dist/dist/server-safe/PaymentFunctions.js.map +1 -0
  382. package/dist/dist/server-safe/PermissionFunctions.d.ts +7 -0
  383. package/dist/dist/server-safe/PermissionFunctions.d.ts.map +1 -0
  384. package/dist/dist/server-safe/PermissionFunctions.js +39 -0
  385. package/dist/dist/server-safe/PermissionFunctions.js.map +1 -0
  386. package/dist/dist/server-safe/TagFunctions.d.ts +18 -0
  387. package/dist/dist/server-safe/TagFunctions.d.ts.map +1 -0
  388. package/dist/dist/server-safe/TagFunctions.js +52 -0
  389. package/dist/dist/server-safe/TagFunctions.js.map +1 -0
  390. package/dist/dist/server-safe/autoJobType.d.ts +16 -0
  391. package/dist/dist/server-safe/autoJobType.d.ts.map +1 -0
  392. package/dist/dist/server-safe/autoJobType.js +39 -0
  393. package/dist/dist/server-safe/autoJobType.js.map +1 -0
  394. package/dist/dist/server-safe/autoJobType.test.d.ts +2 -0
  395. package/dist/dist/server-safe/autoJobType.test.d.ts.map +1 -0
  396. package/dist/dist/server-safe/autoJobType.test.js +83 -0
  397. package/dist/dist/server-safe/autoJobType.test.js.map +1 -0
  398. package/dist/dist/server-safe/automations.d.ts +197 -0
  399. package/dist/dist/server-safe/automations.d.ts.map +1 -0
  400. package/dist/dist/server-safe/automations.js +757 -0
  401. package/dist/dist/server-safe/automations.js.map +1 -0
  402. package/dist/dist/server-safe/automations.test.d.ts +2 -0
  403. package/dist/dist/server-safe/automations.test.d.ts.map +1 -0
  404. package/dist/dist/server-safe/automations.test.js +441 -0
  405. package/dist/dist/server-safe/automations.test.js.map +1 -0
  406. package/dist/dist/server-safe/constants.d.ts +156 -0
  407. package/dist/dist/server-safe/constants.d.ts.map +1 -0
  408. package/dist/dist/server-safe/constants.js +186 -0
  409. package/dist/dist/server-safe/constants.js.map +1 -0
  410. package/dist/dist/server-safe/contracts.d.ts +3 -0
  411. package/dist/dist/server-safe/contracts.d.ts.map +1 -0
  412. package/dist/dist/server-safe/contracts.js +15 -0
  413. package/dist/dist/server-safe/contracts.js.map +1 -0
  414. package/dist/dist/server-safe/database.types.d.ts +9510 -0
  415. package/dist/dist/server-safe/database.types.d.ts.map +1 -0
  416. package/dist/dist/server-safe/database.types.js +40 -0
  417. package/dist/dist/server-safe/database.types.js.map +1 -0
  418. package/dist/dist/server-safe/entitlements.d.ts +99 -0
  419. package/dist/dist/server-safe/entitlements.d.ts.map +1 -0
  420. package/dist/dist/server-safe/entitlements.js +487 -0
  421. package/dist/dist/server-safe/entitlements.js.map +1 -0
  422. package/dist/dist/server-safe/facebookAdsLeads.d.ts +225 -0
  423. package/dist/dist/server-safe/facebookAdsLeads.d.ts.map +1 -0
  424. package/dist/dist/server-safe/facebookAdsLeads.js +376 -0
  425. package/dist/dist/server-safe/facebookAdsLeads.js.map +1 -0
  426. package/dist/dist/server-safe/facebookAdsLeads.test.d.ts +2 -0
  427. package/dist/dist/server-safe/facebookAdsLeads.test.d.ts.map +1 -0
  428. package/dist/dist/server-safe/facebookAdsLeads.test.js +189 -0
  429. package/dist/dist/server-safe/facebookAdsLeads.test.js.map +1 -0
  430. package/dist/dist/server-safe/facebookAdsLeadsSql.test.d.ts +2 -0
  431. package/dist/dist/server-safe/facebookAdsLeadsSql.test.d.ts.map +1 -0
  432. package/dist/dist/server-safe/facebookAdsLeadsSql.test.js +32 -0
  433. package/dist/dist/server-safe/facebookAdsLeadsSql.test.js.map +1 -0
  434. package/dist/dist/server-safe/facebookMessenger.d.ts +20 -0
  435. package/dist/dist/server-safe/facebookMessenger.d.ts.map +1 -0
  436. package/dist/dist/server-safe/facebookMessenger.js +63 -0
  437. package/dist/dist/server-safe/facebookMessenger.js.map +1 -0
  438. package/dist/dist/server-safe/facebookMessenger.test.d.ts +2 -0
  439. package/dist/dist/server-safe/facebookMessenger.test.d.ts.map +1 -0
  440. package/dist/dist/server-safe/facebookMessenger.test.js +51 -0
  441. package/dist/dist/server-safe/facebookMessenger.test.js.map +1 -0
  442. package/dist/dist/server-safe/helpers.d.ts +78 -0
  443. package/dist/dist/server-safe/helpers.d.ts.map +1 -0
  444. package/dist/dist/server-safe/helpers.js +569 -0
  445. package/dist/dist/server-safe/helpers.js.map +1 -0
  446. package/dist/dist/server-safe/index.d.ts +30 -0
  447. package/dist/dist/server-safe/index.d.ts.map +1 -0
  448. package/dist/dist/server-safe/index.js +46 -0
  449. package/dist/dist/server-safe/index.js.map +1 -0
  450. package/dist/dist/server-safe/permissions.d.ts +29 -0
  451. package/dist/dist/server-safe/permissions.d.ts.map +1 -0
  452. package/dist/dist/server-safe/permissions.js +180 -0
  453. package/dist/dist/server-safe/permissions.js.map +1 -0
  454. package/dist/dist/server-safe/proposals.d.ts +6 -0
  455. package/dist/dist/server-safe/proposals.d.ts.map +1 -0
  456. package/dist/dist/server-safe/proposals.js +58 -0
  457. package/dist/dist/server-safe/proposals.js.map +1 -0
  458. package/dist/dist/server-safe/rentalAvailability.d.ts +56 -0
  459. package/dist/dist/server-safe/rentalAvailability.d.ts.map +1 -0
  460. package/dist/dist/server-safe/rentalAvailability.js +124 -0
  461. package/dist/dist/server-safe/rentalAvailability.js.map +1 -0
  462. package/dist/dist/server-safe/rentalAvailability.test.d.ts +2 -0
  463. package/dist/dist/server-safe/rentalAvailability.test.d.ts.map +1 -0
  464. package/dist/dist/server-safe/rentalAvailability.test.js +290 -0
  465. package/dist/dist/server-safe/rentalAvailability.test.js.map +1 -0
  466. package/dist/dist/server-safe/rentals.d.ts +95 -0
  467. package/dist/dist/server-safe/rentals.d.ts.map +1 -0
  468. package/dist/dist/server-safe/rentals.js +432 -0
  469. package/dist/dist/server-safe/rentals.js.map +1 -0
  470. package/dist/dist/server-safe/rentals.test.d.ts +2 -0
  471. package/dist/dist/server-safe/rentals.test.d.ts.map +1 -0
  472. package/dist/dist/server-safe/rentals.test.js +1034 -0
  473. package/dist/dist/server-safe/rentals.test.js.map +1 -0
  474. package/dist/dist/server-safe/routeOptimization.d.ts +155 -0
  475. package/dist/dist/server-safe/routeOptimization.d.ts.map +1 -0
  476. package/dist/dist/server-safe/routeOptimization.js +120 -0
  477. package/dist/dist/server-safe/routeOptimization.js.map +1 -0
  478. package/dist/dist/server-safe/routeOptimization.test.d.ts +2 -0
  479. package/dist/dist/server-safe/routeOptimization.test.d.ts.map +1 -0
  480. package/dist/dist/server-safe/routeOptimization.test.js +234 -0
  481. package/dist/dist/server-safe/routeOptimization.test.js.map +1 -0
  482. package/dist/dist/server-safe/routePlanFingerprint.d.ts +13 -0
  483. package/dist/dist/server-safe/routePlanFingerprint.d.ts.map +1 -0
  484. package/dist/dist/server-safe/routePlanFingerprint.js +49 -0
  485. package/dist/dist/server-safe/routePlanFingerprint.js.map +1 -0
  486. package/dist/dist/server-safe/routePlanFingerprint.test.d.ts +2 -0
  487. package/dist/dist/server-safe/routePlanFingerprint.test.d.ts.map +1 -0
  488. package/dist/dist/server-safe/routePlanFingerprint.test.js +68 -0
  489. package/dist/dist/server-safe/routePlanFingerprint.test.js.map +1 -0
  490. package/dist/dist/server-safe/scheduleListOrder.d.ts +18 -0
  491. package/dist/dist/server-safe/scheduleListOrder.d.ts.map +1 -0
  492. package/dist/dist/server-safe/scheduleListOrder.js +92 -0
  493. package/dist/dist/server-safe/scheduleListOrder.js.map +1 -0
  494. package/dist/dist/server-safe/scheduleListOrder.test.d.ts +2 -0
  495. package/dist/dist/server-safe/scheduleListOrder.test.d.ts.map +1 -0
  496. package/dist/dist/server-safe/scheduleListOrder.test.js +260 -0
  497. package/dist/dist/server-safe/scheduleListOrder.test.js.map +1 -0
  498. package/dist/dist/server-safe/serviceMinutes.d.ts +13 -0
  499. package/dist/dist/server-safe/serviceMinutes.d.ts.map +1 -0
  500. package/dist/dist/server-safe/serviceMinutes.js +38 -0
  501. package/dist/dist/server-safe/serviceMinutes.js.map +1 -0
  502. package/dist/dist/server-safe/serviceMinutes.test.d.ts +2 -0
  503. package/dist/dist/server-safe/serviceMinutes.test.d.ts.map +1 -0
  504. package/dist/dist/server-safe/serviceMinutes.test.js +86 -0
  505. package/dist/dist/server-safe/serviceMinutes.test.js.map +1 -0
  506. package/dist/dist/server-safe/settingsSearch.d.ts +24 -0
  507. package/dist/dist/server-safe/settingsSearch.d.ts.map +1 -0
  508. package/dist/dist/server-safe/settingsSearch.js +8 -0
  509. package/dist/dist/server-safe/settingsSearch.js.map +1 -0
  510. package/dist/dist/server-safe/supportChat.d.ts +59 -0
  511. package/dist/dist/server-safe/supportChat.d.ts.map +1 -0
  512. package/dist/dist/server-safe/supportChat.js +56 -0
  513. package/dist/dist/server-safe/supportChat.js.map +1 -0
  514. package/dist/dist/server-safe/templates.d.ts +15 -0
  515. package/dist/dist/server-safe/templates.d.ts.map +1 -0
  516. package/dist/dist/server-safe/templates.js +91 -0
  517. package/dist/dist/server-safe/templates.js.map +1 -0
  518. package/dist/dist/server-safe/templates.test.d.ts +2 -0
  519. package/dist/dist/server-safe/templates.test.d.ts.map +1 -0
  520. package/dist/dist/server-safe/templates.test.js +62 -0
  521. package/dist/dist/server-safe/templates.test.js.map +1 -0
  522. package/dist/dist/server-safe/trash.d.ts +50 -0
  523. package/dist/dist/server-safe/trash.d.ts.map +1 -0
  524. package/dist/dist/server-safe/trash.js +100 -0
  525. package/dist/dist/server-safe/trash.js.map +1 -0
  526. package/dist/dist/utils/LogHandler.d.ts +3 -0
  527. package/dist/dist/utils/LogHandler.d.ts.map +1 -0
  528. package/dist/dist/utils/LogHandler.js +16 -0
  529. package/dist/dist/utils/LogHandler.js.map +1 -0
  530. package/dist/dist/utils/convertSupabaseImagesToAssets.d.ts +28 -0
  531. package/dist/dist/utils/convertSupabaseImagesToAssets.d.ts.map +1 -0
  532. package/dist/dist/utils/convertSupabaseImagesToAssets.js +14 -0
  533. package/dist/dist/utils/convertSupabaseImagesToAssets.js.map +1 -0
  534. package/dist/index.d.ts +45 -0
  535. package/dist/index.d.ts.map +1 -0
  536. package/dist/index.js +61 -0
  537. package/dist/index.js.map +1 -0
  538. package/dist/interfaces/index.d.ts +1238 -0
  539. package/dist/interfaces/index.d.ts.map +1 -0
  540. package/dist/interfaces/index.js +3 -0
  541. package/dist/interfaces/index.js.map +1 -0
  542. package/dist/providers/AddressProvider.d.ts +9 -0
  543. package/dist/providers/AddressProvider.d.ts.map +1 -0
  544. package/dist/providers/AddressProvider.js +207 -0
  545. package/dist/providers/AddressProvider.js.map +1 -0
  546. package/dist/providers/AutomationsProvider.d.ts +11 -0
  547. package/dist/providers/AutomationsProvider.d.ts.map +1 -0
  548. package/dist/providers/AutomationsProvider.js +170 -0
  549. package/dist/providers/AutomationsProvider.js.map +1 -0
  550. package/dist/providers/BlockedNumbersProvider.d.ts +7 -0
  551. package/dist/providers/BlockedNumbersProvider.d.ts.map +1 -0
  552. package/dist/providers/BlockedNumbersProvider.js +71 -0
  553. package/dist/providers/BlockedNumbersProvider.js.map +1 -0
  554. package/dist/providers/CategoryProvider.d.ts +8 -0
  555. package/dist/providers/CategoryProvider.d.ts.map +1 -0
  556. package/dist/providers/CategoryProvider.js +95 -0
  557. package/dist/providers/CategoryProvider.js.map +1 -0
  558. package/dist/providers/ClientProvider.d.ts +39 -0
  559. package/dist/providers/ClientProvider.d.ts.map +1 -0
  560. package/dist/providers/ClientProvider.js +253 -0
  561. package/dist/providers/ClientProvider.js.map +1 -0
  562. package/dist/providers/CompanyProvider.d.ts +7 -0
  563. package/dist/providers/CompanyProvider.d.ts.map +1 -0
  564. package/dist/providers/CompanyProvider.js +114 -0
  565. package/dist/providers/CompanyProvider.js.map +1 -0
  566. package/dist/providers/DashboardProvider.d.ts +78 -0
  567. package/dist/providers/DashboardProvider.d.ts.map +1 -0
  568. package/dist/providers/DashboardProvider.js +568 -0
  569. package/dist/providers/DashboardProvider.js.map +1 -0
  570. package/dist/providers/DiscountProvider.d.ts +8 -0
  571. package/dist/providers/DiscountProvider.d.ts.map +1 -0
  572. package/dist/providers/DiscountProvider.js +92 -0
  573. package/dist/providers/DiscountProvider.js.map +1 -0
  574. package/dist/providers/EmployeesProvider.d.ts +6 -0
  575. package/dist/providers/EmployeesProvider.d.ts.map +1 -0
  576. package/dist/providers/EmployeesProvider.js +185 -0
  577. package/dist/providers/EmployeesProvider.js.map +1 -0
  578. package/dist/providers/EstimatesProvider.d.ts +16 -0
  579. package/dist/providers/EstimatesProvider.d.ts.map +1 -0
  580. package/dist/providers/EstimatesProvider.js +251 -0
  581. package/dist/providers/EstimatesProvider.js.map +1 -0
  582. package/dist/providers/EventsProvider.d.ts +4 -0
  583. package/dist/providers/EventsProvider.d.ts.map +1 -0
  584. package/dist/providers/EventsProvider.js +24 -0
  585. package/dist/providers/EventsProvider.js.map +1 -0
  586. package/dist/providers/FilesProvider.d.ts +17 -0
  587. package/dist/providers/FilesProvider.d.ts.map +1 -0
  588. package/dist/providers/FilesProvider.js +201 -0
  589. package/dist/providers/FilesProvider.js.map +1 -0
  590. package/dist/providers/InvoicesProvider.d.ts +13 -0
  591. package/dist/providers/InvoicesProvider.d.ts.map +1 -0
  592. package/dist/providers/InvoicesProvider.js +207 -0
  593. package/dist/providers/InvoicesProvider.js.map +1 -0
  594. package/dist/providers/ItemProvider.d.ts +9 -0
  595. package/dist/providers/ItemProvider.d.ts.map +1 -0
  596. package/dist/providers/ItemProvider.js +201 -0
  597. package/dist/providers/ItemProvider.js.map +1 -0
  598. package/dist/providers/JobSourceProvider.d.ts +8 -0
  599. package/dist/providers/JobSourceProvider.d.ts.map +1 -0
  600. package/dist/providers/JobSourceProvider.js +75 -0
  601. package/dist/providers/JobSourceProvider.js.map +1 -0
  602. package/dist/providers/JobTypeProvider.d.ts +8 -0
  603. package/dist/providers/JobTypeProvider.d.ts.map +1 -0
  604. package/dist/providers/JobTypeProvider.js +75 -0
  605. package/dist/providers/JobTypeProvider.js.map +1 -0
  606. package/dist/providers/JobsProvider.d.ts +20 -0
  607. package/dist/providers/JobsProvider.d.ts.map +1 -0
  608. package/dist/providers/JobsProvider.js +863 -0
  609. package/dist/providers/JobsProvider.js.map +1 -0
  610. package/dist/providers/MessagesProvider.d.ts +14 -0
  611. package/dist/providers/MessagesProvider.d.ts.map +1 -0
  612. package/dist/providers/MessagesProvider.js +415 -0
  613. package/dist/providers/MessagesProvider.js.map +1 -0
  614. package/dist/providers/PaymentProvider.d.ts +9 -0
  615. package/dist/providers/PaymentProvider.d.ts.map +1 -0
  616. package/dist/providers/PaymentProvider.js +48 -0
  617. package/dist/providers/PaymentProvider.js.map +1 -0
  618. package/dist/providers/PermissionRolesProvider.d.ts +5 -0
  619. package/dist/providers/PermissionRolesProvider.d.ts.map +1 -0
  620. package/dist/providers/PermissionRolesProvider.js +30 -0
  621. package/dist/providers/PermissionRolesProvider.js.map +1 -0
  622. package/dist/providers/PhoneNumberProvider.d.ts +12 -0
  623. package/dist/providers/PhoneNumberProvider.d.ts.map +1 -0
  624. package/dist/providers/PhoneNumberProvider.js +184 -0
  625. package/dist/providers/PhoneNumberProvider.js.map +1 -0
  626. package/dist/providers/ProfileProvider.d.ts +6 -0
  627. package/dist/providers/ProfileProvider.d.ts.map +1 -0
  628. package/dist/providers/ProfileProvider.js +71 -0
  629. package/dist/providers/ProfileProvider.js.map +1 -0
  630. package/dist/providers/RentalsProvider.d.ts +28 -0
  631. package/dist/providers/RentalsProvider.d.ts.map +1 -0
  632. package/dist/providers/RentalsProvider.js +438 -0
  633. package/dist/providers/RentalsProvider.js.map +1 -0
  634. package/dist/providers/SettingsBookingProvider.d.ts +9 -0
  635. package/dist/providers/SettingsBookingProvider.d.ts.map +1 -0
  636. package/dist/providers/SettingsBookingProvider.js +163 -0
  637. package/dist/providers/SettingsBookingProvider.js.map +1 -0
  638. package/dist/providers/SettingsProvider.d.ts +8 -0
  639. package/dist/providers/SettingsProvider.d.ts.map +1 -0
  640. package/dist/providers/SettingsProvider.js +86 -0
  641. package/dist/providers/SettingsProvider.js.map +1 -0
  642. package/dist/providers/TagsProvider.d.ts +12 -0
  643. package/dist/providers/TagsProvider.d.ts.map +1 -0
  644. package/dist/providers/TagsProvider.js +210 -0
  645. package/dist/providers/TagsProvider.js.map +1 -0
  646. package/dist/providers/TimeCardProvider.d.ts +8 -0
  647. package/dist/providers/TimeCardProvider.d.ts.map +1 -0
  648. package/dist/providers/TimeCardProvider.js +93 -0
  649. package/dist/providers/TimeCardProvider.js.map +1 -0
  650. package/dist/providers/TrashProvider.d.ts +13 -0
  651. package/dist/providers/TrashProvider.d.ts.map +1 -0
  652. package/dist/providers/TrashProvider.js +98 -0
  653. package/dist/providers/TrashProvider.js.map +1 -0
  654. package/dist/providers/dashboardAnalytics.d.ts +9 -0
  655. package/dist/providers/dashboardAnalytics.d.ts.map +1 -0
  656. package/dist/providers/dashboardAnalytics.js +41 -0
  657. package/dist/providers/dashboardAnalytics.js.map +1 -0
  658. package/dist/providers/dashboardAnalytics.test.d.ts +2 -0
  659. package/dist/providers/dashboardAnalytics.test.d.ts.map +1 -0
  660. package/dist/providers/dashboardAnalytics.test.js +111 -0
  661. package/dist/providers/dashboardAnalytics.test.js.map +1 -0
  662. package/dist/server-safe/BlockedNumberFunctions.d.ts +11 -0
  663. package/dist/server-safe/BlockedNumberFunctions.d.ts.map +1 -0
  664. package/dist/server-safe/BlockedNumberFunctions.js +16 -0
  665. package/dist/server-safe/BlockedNumberFunctions.js.map +1 -0
  666. package/dist/server-safe/EmployeeFunctions.d.ts +14 -0
  667. package/dist/server-safe/EmployeeFunctions.d.ts.map +1 -0
  668. package/dist/server-safe/EmployeeFunctions.js +70 -0
  669. package/dist/server-safe/EmployeeFunctions.js.map +1 -0
  670. package/dist/server-safe/EmployeeLocationFunctions.d.ts +7 -0
  671. package/dist/server-safe/EmployeeLocationFunctions.d.ts.map +1 -0
  672. package/dist/server-safe/EmployeeLocationFunctions.js +47 -0
  673. package/dist/server-safe/EmployeeLocationFunctions.js.map +1 -0
  674. package/dist/server-safe/EstimateFunctions.d.ts +15 -0
  675. package/dist/server-safe/EstimateFunctions.d.ts.map +1 -0
  676. package/dist/server-safe/EstimateFunctions.js +34 -0
  677. package/dist/server-safe/EstimateFunctions.js.map +1 -0
  678. package/dist/server-safe/InvoiceFunctions.d.ts +21 -0
  679. package/dist/server-safe/InvoiceFunctions.d.ts.map +1 -0
  680. package/dist/server-safe/InvoiceFunctions.js +124 -0
  681. package/dist/server-safe/InvoiceFunctions.js.map +1 -0
  682. package/dist/server-safe/JobFunctions.d.ts +15 -0
  683. package/dist/server-safe/JobFunctions.d.ts.map +1 -0
  684. package/dist/server-safe/JobFunctions.js +56 -0
  685. package/dist/server-safe/JobFunctions.js.map +1 -0
  686. package/dist/server-safe/PaymentFunctions.d.ts +16 -0
  687. package/dist/server-safe/PaymentFunctions.d.ts.map +1 -0
  688. package/dist/server-safe/PaymentFunctions.js +80 -0
  689. package/dist/server-safe/PaymentFunctions.js.map +1 -0
  690. package/dist/server-safe/PermissionFunctions.d.ts +7 -0
  691. package/dist/server-safe/PermissionFunctions.d.ts.map +1 -0
  692. package/dist/server-safe/PermissionFunctions.js +39 -0
  693. package/dist/server-safe/PermissionFunctions.js.map +1 -0
  694. package/dist/server-safe/TagFunctions.d.ts +18 -0
  695. package/dist/server-safe/TagFunctions.d.ts.map +1 -0
  696. package/dist/server-safe/TagFunctions.js +52 -0
  697. package/dist/server-safe/TagFunctions.js.map +1 -0
  698. package/dist/server-safe/autoJobType.d.ts +16 -0
  699. package/dist/server-safe/autoJobType.d.ts.map +1 -0
  700. package/dist/server-safe/autoJobType.js +39 -0
  701. package/dist/server-safe/autoJobType.js.map +1 -0
  702. package/dist/server-safe/autoJobType.test.d.ts +2 -0
  703. package/dist/server-safe/autoJobType.test.d.ts.map +1 -0
  704. package/dist/server-safe/autoJobType.test.js +83 -0
  705. package/dist/server-safe/autoJobType.test.js.map +1 -0
  706. package/dist/server-safe/automations.d.ts +197 -0
  707. package/dist/server-safe/automations.d.ts.map +1 -0
  708. package/dist/server-safe/automations.js +757 -0
  709. package/dist/server-safe/automations.js.map +1 -0
  710. package/dist/server-safe/automations.test.d.ts +2 -0
  711. package/dist/server-safe/automations.test.d.ts.map +1 -0
  712. package/dist/server-safe/automations.test.js +441 -0
  713. package/dist/server-safe/automations.test.js.map +1 -0
  714. package/dist/server-safe/constants.d.ts +156 -0
  715. package/dist/server-safe/constants.d.ts.map +1 -0
  716. package/dist/server-safe/constants.js +186 -0
  717. package/dist/server-safe/constants.js.map +1 -0
  718. package/dist/server-safe/contracts.d.ts +3 -0
  719. package/dist/server-safe/contracts.d.ts.map +1 -0
  720. package/dist/server-safe/contracts.js +15 -0
  721. package/dist/server-safe/contracts.js.map +1 -0
  722. package/dist/server-safe/database.types.d.ts +9510 -0
  723. package/dist/server-safe/database.types.d.ts.map +1 -0
  724. package/dist/server-safe/database.types.js +40 -0
  725. package/dist/server-safe/database.types.js.map +1 -0
  726. package/dist/server-safe/entitlements.d.ts +99 -0
  727. package/dist/server-safe/entitlements.d.ts.map +1 -0
  728. package/dist/server-safe/entitlements.js +487 -0
  729. package/dist/server-safe/entitlements.js.map +1 -0
  730. package/dist/server-safe/helpers.d.ts +78 -0
  731. package/dist/server-safe/helpers.d.ts.map +1 -0
  732. package/dist/server-safe/helpers.js +569 -0
  733. package/dist/server-safe/helpers.js.map +1 -0
  734. package/dist/server-safe/index.d.ts +30 -0
  735. package/dist/server-safe/index.d.ts.map +1 -0
  736. package/dist/server-safe/index.js +46 -0
  737. package/dist/server-safe/index.js.map +1 -0
  738. package/dist/server-safe/permissions.d.ts +29 -0
  739. package/dist/server-safe/permissions.d.ts.map +1 -0
  740. package/dist/server-safe/permissions.js +180 -0
  741. package/dist/server-safe/permissions.js.map +1 -0
  742. package/dist/server-safe/proposals.d.ts +6 -0
  743. package/dist/server-safe/proposals.d.ts.map +1 -0
  744. package/dist/server-safe/proposals.js +58 -0
  745. package/dist/server-safe/proposals.js.map +1 -0
  746. package/dist/server-safe/rentalAvailability.d.ts +56 -0
  747. package/dist/server-safe/rentalAvailability.d.ts.map +1 -0
  748. package/dist/server-safe/rentalAvailability.js +124 -0
  749. package/dist/server-safe/rentalAvailability.js.map +1 -0
  750. package/dist/server-safe/rentalAvailability.test.d.ts +2 -0
  751. package/dist/server-safe/rentalAvailability.test.d.ts.map +1 -0
  752. package/dist/server-safe/rentalAvailability.test.js +290 -0
  753. package/dist/server-safe/rentalAvailability.test.js.map +1 -0
  754. package/dist/server-safe/rentals.d.ts +95 -0
  755. package/dist/server-safe/rentals.d.ts.map +1 -0
  756. package/dist/server-safe/rentals.js +432 -0
  757. package/dist/server-safe/rentals.js.map +1 -0
  758. package/dist/server-safe/rentals.test.d.ts +2 -0
  759. package/dist/server-safe/rentals.test.d.ts.map +1 -0
  760. package/dist/server-safe/rentals.test.js +1034 -0
  761. package/dist/server-safe/rentals.test.js.map +1 -0
  762. package/dist/server-safe/routeOptimization.d.ts +155 -0
  763. package/dist/server-safe/routeOptimization.d.ts.map +1 -0
  764. package/dist/server-safe/routeOptimization.js +120 -0
  765. package/dist/server-safe/routeOptimization.js.map +1 -0
  766. package/dist/server-safe/routeOptimization.test.d.ts +2 -0
  767. package/dist/server-safe/routeOptimization.test.d.ts.map +1 -0
  768. package/dist/server-safe/routeOptimization.test.js +234 -0
  769. package/dist/server-safe/routeOptimization.test.js.map +1 -0
  770. package/dist/server-safe/routePlanFingerprint.d.ts +13 -0
  771. package/dist/server-safe/routePlanFingerprint.d.ts.map +1 -0
  772. package/dist/server-safe/routePlanFingerprint.js +49 -0
  773. package/dist/server-safe/routePlanFingerprint.js.map +1 -0
  774. package/dist/server-safe/routePlanFingerprint.test.d.ts +2 -0
  775. package/dist/server-safe/routePlanFingerprint.test.d.ts.map +1 -0
  776. package/dist/server-safe/routePlanFingerprint.test.js +68 -0
  777. package/dist/server-safe/routePlanFingerprint.test.js.map +1 -0
  778. package/dist/server-safe/scheduleListOrder.d.ts +18 -0
  779. package/dist/server-safe/scheduleListOrder.d.ts.map +1 -0
  780. package/dist/server-safe/scheduleListOrder.js +92 -0
  781. package/dist/server-safe/scheduleListOrder.js.map +1 -0
  782. package/dist/server-safe/scheduleListOrder.test.d.ts +2 -0
  783. package/dist/server-safe/scheduleListOrder.test.d.ts.map +1 -0
  784. package/dist/server-safe/scheduleListOrder.test.js +260 -0
  785. package/dist/server-safe/scheduleListOrder.test.js.map +1 -0
  786. package/dist/server-safe/serviceMinutes.d.ts +13 -0
  787. package/dist/server-safe/serviceMinutes.d.ts.map +1 -0
  788. package/dist/server-safe/serviceMinutes.js +38 -0
  789. package/dist/server-safe/serviceMinutes.js.map +1 -0
  790. package/dist/server-safe/serviceMinutes.test.d.ts +2 -0
  791. package/dist/server-safe/serviceMinutes.test.d.ts.map +1 -0
  792. package/dist/server-safe/serviceMinutes.test.js +86 -0
  793. package/dist/server-safe/serviceMinutes.test.js.map +1 -0
  794. package/dist/server-safe/settingsSearch.d.ts +24 -0
  795. package/dist/server-safe/settingsSearch.d.ts.map +1 -0
  796. package/dist/server-safe/settingsSearch.js +8 -0
  797. package/dist/server-safe/settingsSearch.js.map +1 -0
  798. package/dist/server-safe/supportChat.d.ts +59 -0
  799. package/dist/server-safe/supportChat.d.ts.map +1 -0
  800. package/dist/server-safe/supportChat.js +56 -0
  801. package/dist/server-safe/supportChat.js.map +1 -0
  802. package/dist/server-safe/templates.d.ts +15 -0
  803. package/dist/server-safe/templates.d.ts.map +1 -0
  804. package/dist/server-safe/templates.js +91 -0
  805. package/dist/server-safe/templates.js.map +1 -0
  806. package/dist/server-safe/templates.test.d.ts +2 -0
  807. package/dist/server-safe/templates.test.d.ts.map +1 -0
  808. package/dist/server-safe/templates.test.js +62 -0
  809. package/dist/server-safe/templates.test.js.map +1 -0
  810. package/dist/server-safe/trash.d.ts +50 -0
  811. package/dist/server-safe/trash.d.ts.map +1 -0
  812. package/dist/server-safe/trash.js +100 -0
  813. package/dist/server-safe/trash.js.map +1 -0
  814. package/dist/utils/LogHandler.d.ts +3 -0
  815. package/dist/utils/LogHandler.d.ts.map +1 -0
  816. package/dist/utils/LogHandler.js +16 -0
  817. package/dist/utils/LogHandler.js.map +1 -0
  818. package/dist/utils/convertSupabaseImagesToAssets.d.ts +28 -0
  819. package/dist/utils/convertSupabaseImagesToAssets.d.ts.map +1 -0
  820. package/dist/utils/convertSupabaseImagesToAssets.js +14 -0
  821. package/dist/utils/convertSupabaseImagesToAssets.js.map +1 -0
  822. package/package.json +37 -0
@@ -0,0 +1,1011 @@
1
+ -- Row-level security and least-privilege grants for Autopilot Fleet V1.
2
+ --
3
+ -- Affected tables:
4
+ -- fleet_organization, fleet_member, fleet_vehicle,
5
+ -- fleet_form_template, fleet_form_template_version, fleet_form_section,
6
+ -- fleet_form_question, fleet_form_assignment, fleet_inspection,
7
+ -- fleet_inspection_answer, fleet_media, fleet_issue,
8
+ -- fleet_issue_status_history, fleet_issue_comment, fleet_repair_order,
9
+ -- fleet_repair_order_line_item, fleet_pm_schedule, fleet_service_record,
10
+ -- fleet_notification_preference, fleet_audit_event, storage.objects
11
+ -- (policies scoped only to the private fleet-media bucket).
12
+ --
13
+ -- Every policy first proves the JWT company claim and an active Fleet
14
+ -- membership backed by a current, visible public.user employee row. Helpers
15
+ -- are SECURITY DEFINER to avoid recursive fleet_member RLS evaluation; each
16
+ -- helper binds its decision to auth.uid() and the JWT company claim.
17
+
18
+ -- ============================================================
19
+ -- Policy helpers
20
+ -- ============================================================
21
+
22
+ create or replace function "public"."fleet_current_company_id"()
23
+ returns uuid
24
+ language sql
25
+ stable
26
+ set search_path = ''
27
+ as $$
28
+ select nullif(
29
+ trim(both '"' from (
30
+ "public"."get_my_claim"('autopilot_company_id'::text)
31
+ )::text),
32
+ ''
33
+ )::uuid;
34
+ $$;
35
+
36
+ alter function "public"."fleet_current_company_id"() owner to "postgres";
37
+
38
+ create or replace function "public"."fleet_has_any_role"(
39
+ "p_company_id" uuid,
40
+ "p_roles" text[]
41
+ )
42
+ returns boolean
43
+ language sql
44
+ stable
45
+ security definer
46
+ set search_path = ''
47
+ as $$
48
+ select
49
+ "p_company_id" is not null
50
+ and "p_company_id" = "public"."fleet_current_company_id"()
51
+ and exists (
52
+ select 1
53
+ from "public"."fleet_member" as "member"
54
+ join "public"."user" as "employee"
55
+ on "employee"."id" = "member"."user_id"
56
+ and "employee"."company_id" = "member"."company_id"
57
+ where "member"."company_id" = "p_company_id"
58
+ and "member"."user_id" = (select auth.uid())
59
+ and "member"."is_active"
60
+ and "member"."role" = any("p_roles")
61
+ and "employee"."is_current_employee"
62
+ and not "employee"."is_hidden"
63
+ );
64
+ $$;
65
+
66
+ alter function "public"."fleet_has_any_role"(uuid, text[]) owner to "postgres";
67
+
68
+ create or replace function "public"."fleet_is_member"("p_company_id" uuid)
69
+ returns boolean
70
+ language sql
71
+ stable
72
+ security definer
73
+ set search_path = ''
74
+ as $$
75
+ select "public"."fleet_has_any_role"(
76
+ "p_company_id",
77
+ array['owner', 'manager', 'operator', 'technician', 'viewer']::text[]
78
+ );
79
+ $$;
80
+
81
+ alter function "public"."fleet_is_member"(uuid) owner to "postgres";
82
+
83
+ create or replace function "public"."fleet_can_bootstrap_owner"(
84
+ "p_company_id" uuid,
85
+ "p_user_id" uuid
86
+ )
87
+ returns boolean
88
+ language sql
89
+ stable
90
+ security definer
91
+ set search_path = ''
92
+ as $$
93
+ select
94
+ "p_company_id" is not null
95
+ and "p_company_id" = "public"."fleet_current_company_id"()
96
+ and "p_user_id" = (select auth.uid())
97
+ and coalesce(
98
+ "public"."get_my_claim"('autopilot_role'::text)::text,
99
+ ''::text
100
+ ) = '"owner"'::text
101
+ and exists (
102
+ select 1
103
+ from "public"."user_role" as "autopilot_membership"
104
+ where "autopilot_membership"."company_id" = "p_company_id"
105
+ and "autopilot_membership"."user_id" = "p_user_id"
106
+ and "autopilot_membership"."role_id" = 1
107
+ )
108
+ and exists (
109
+ select 1
110
+ from "public"."user" as "employee"
111
+ where "employee"."id" = "p_user_id"
112
+ and "employee"."company_id" = "p_company_id"
113
+ and "employee"."is_current_employee"
114
+ and not "employee"."is_hidden"
115
+ )
116
+ -- Permit recovery when old Fleet rows exist but no current, visible
117
+ -- employee still holds active Fleet ownership. The canonical
118
+ -- Autopilot owner can reactivate/upgrade their own membership below.
119
+ and not exists (
120
+ select 1
121
+ from "public"."fleet_member" as "existing_owner"
122
+ join "public"."user" as "owner_employee"
123
+ on "owner_employee"."id" = "existing_owner"."user_id"
124
+ and "owner_employee"."company_id" = "existing_owner"."company_id"
125
+ where "existing_owner"."company_id" = "p_company_id"
126
+ and "existing_owner"."user_id" <> "p_user_id"
127
+ and "existing_owner"."role" = 'owner'
128
+ and "existing_owner"."is_active"
129
+ and "owner_employee"."is_current_employee"
130
+ and not "owner_employee"."is_hidden"
131
+ );
132
+ $$;
133
+
134
+ alter function "public"."fleet_can_bootstrap_owner"(uuid, uuid)
135
+ owner to "postgres";
136
+
137
+ create or replace function "public"."fleet_can_edit_inspection"(
138
+ "p_company_id" uuid,
139
+ "p_inspection_id" uuid
140
+ )
141
+ returns boolean
142
+ language sql
143
+ stable
144
+ security definer
145
+ set search_path = ''
146
+ as $$
147
+ select
148
+ "public"."fleet_has_any_role"(
149
+ "p_company_id",
150
+ array['owner', 'manager', 'operator', 'technician']::text[]
151
+ )
152
+ and exists (
153
+ select 1
154
+ from "public"."fleet_inspection" as "inspection"
155
+ where "inspection"."id" = "p_inspection_id"
156
+ and "inspection"."company_id" = "p_company_id"
157
+ and "inspection"."inspector_user_id" = (select auth.uid())
158
+ and "inspection"."status" = 'draft'
159
+ );
160
+ $$;
161
+
162
+ alter function "public"."fleet_can_edit_inspection"(uuid, uuid)
163
+ owner to "postgres";
164
+
165
+ create or replace function "public"."fleet_can_write_media"(
166
+ "p_company_id" uuid,
167
+ "p_inspection_id" uuid,
168
+ "p_answer_id" uuid,
169
+ "p_issue_id" uuid,
170
+ "p_issue_comment_id" uuid,
171
+ "p_repair_order_id" uuid,
172
+ "p_service_record_id" uuid
173
+ )
174
+ returns boolean
175
+ language sql
176
+ stable
177
+ security definer
178
+ set search_path = ''
179
+ as $$
180
+ select case
181
+ when "p_inspection_id" is not null then
182
+ "public"."fleet_can_edit_inspection"(
183
+ "p_company_id", "p_inspection_id"
184
+ )
185
+ when "p_answer_id" is not null then
186
+ exists (
187
+ select 1
188
+ from "public"."fleet_inspection_answer" as "answer"
189
+ where "answer"."id" = "p_answer_id"
190
+ and "answer"."company_id" = "p_company_id"
191
+ and "public"."fleet_can_edit_inspection"(
192
+ "p_company_id", "answer"."inspection_id"
193
+ )
194
+ )
195
+ when "p_issue_id" is not null then
196
+ "public"."fleet_has_any_role"(
197
+ "p_company_id",
198
+ array['owner', 'manager', 'operator', 'technician']::text[]
199
+ )
200
+ and exists (
201
+ select 1
202
+ from "public"."fleet_issue" as "issue"
203
+ where "issue"."id" = "p_issue_id"
204
+ and "issue"."company_id" = "p_company_id"
205
+ )
206
+ when "p_issue_comment_id" is not null then
207
+ "public"."fleet_has_any_role"(
208
+ "p_company_id",
209
+ array['owner', 'manager', 'operator', 'technician']::text[]
210
+ )
211
+ and exists (
212
+ select 1
213
+ from "public"."fleet_issue_comment" as "comment"
214
+ where "comment"."id" = "p_issue_comment_id"
215
+ and "comment"."company_id" = "p_company_id"
216
+ )
217
+ when "p_repair_order_id" is not null then
218
+ "public"."fleet_has_any_role"(
219
+ "p_company_id", array['owner', 'manager', 'technician']::text[]
220
+ )
221
+ and exists (
222
+ select 1
223
+ from "public"."fleet_repair_order" as "repair_order"
224
+ where "repair_order"."id" = "p_repair_order_id"
225
+ and "repair_order"."company_id" = "p_company_id"
226
+ )
227
+ when "p_service_record_id" is not null then
228
+ "public"."fleet_has_any_role"(
229
+ "p_company_id", array['owner', 'manager', 'technician']::text[]
230
+ )
231
+ and exists (
232
+ select 1
233
+ from "public"."fleet_service_record" as "service_record"
234
+ where "service_record"."id" = "p_service_record_id"
235
+ and "service_record"."company_id" = "p_company_id"
236
+ )
237
+ else false
238
+ end;
239
+ $$;
240
+
241
+ alter function "public"."fleet_can_write_media"(
242
+ uuid, uuid, uuid, uuid, uuid, uuid, uuid
243
+ ) owner to "postgres";
244
+
245
+ -- Keep internal lifecycle functions out of the PostgREST/RPC surface. Trigger
246
+ -- execution does not depend on caller EXECUTE privileges.
247
+ revoke all on function "public"."fleet_set_updated_at"() from public, anon, authenticated;
248
+ revoke all on function "public"."fleet_guard_vehicle_status"()
249
+ from public, anon, authenticated;
250
+ revoke all on function "public"."fleet_prepare_member"() from public, anon, authenticated;
251
+ revoke all on function "public"."fleet_build_form_version_snapshot"(uuid)
252
+ from public, anon, authenticated;
253
+ revoke all on function "public"."fleet_prepare_form_version"() from public, anon, authenticated;
254
+ revoke all on function "public"."fleet_guard_form_version_child"()
255
+ from public, anon, authenticated;
256
+ revoke all on function "public"."fleet_validate_form_assignment"()
257
+ from public, anon, authenticated;
258
+ revoke all on function "public"."fleet_prepare_inspection_answer"()
259
+ from public, anon, authenticated;
260
+ revoke all on function "public"."fleet_question_condition_met"(uuid, uuid, jsonb)
261
+ from public, anon, authenticated;
262
+ revoke all on function "public"."fleet_prepare_inspection"() from public, anon, authenticated;
263
+ revoke all on function "public"."fleet_guard_inspection_media"()
264
+ from public, anon, authenticated;
265
+ revoke all on function "public"."fleet_prepare_issue"() from public, anon, authenticated;
266
+ revoke all on function "public"."fleet_record_issue_status"()
267
+ from public, anon, authenticated;
268
+ revoke all on function "public"."fleet_reject_mutation"() from public, anon, authenticated;
269
+ revoke all on function "public"."fleet_prepare_repair_order"()
270
+ from public, anon, authenticated;
271
+ revoke all on function "public"."fleet_guard_repair_line_item"()
272
+ from public, anon, authenticated;
273
+ revoke all on function "public"."fleet_prepare_pm_schedule"()
274
+ from public, anon, authenticated;
275
+ revoke all on function "public"."fleet_prepare_service_record"()
276
+ from public, anon, authenticated;
277
+ revoke all on function "public"."fleet_apply_service_record"()
278
+ from public, anon, authenticated;
279
+ revoke all on function "public"."fleet_write_audit_event"()
280
+ from public, anon, authenticated;
281
+ revoke all on function "public"."fleet_seed_default_form_templates"(uuid, uuid)
282
+ from public, anon, authenticated;
283
+ revoke all on function "public"."fleet_seed_default_form_templates_trigger"()
284
+ from public, anon, authenticated;
285
+
286
+ revoke all on function "public"."fleet_current_company_id"()
287
+ from public, anon;
288
+ revoke all on function "public"."fleet_has_any_role"(uuid, text[])
289
+ from public, anon;
290
+ revoke all on function "public"."fleet_is_member"(uuid)
291
+ from public, anon;
292
+ revoke all on function "public"."fleet_can_bootstrap_owner"(uuid, uuid)
293
+ from public, anon;
294
+ revoke all on function "public"."fleet_can_edit_inspection"(uuid, uuid)
295
+ from public, anon;
296
+ revoke all on function "public"."fleet_can_write_media"(
297
+ uuid, uuid, uuid, uuid, uuid, uuid, uuid
298
+ ) from public, anon;
299
+
300
+ grant execute on function "public"."fleet_current_company_id"()
301
+ to authenticated, service_role;
302
+ grant execute on function "public"."fleet_has_any_role"(uuid, text[])
303
+ to authenticated, service_role;
304
+ grant execute on function "public"."fleet_is_member"(uuid)
305
+ to authenticated, service_role;
306
+ grant execute on function "public"."fleet_can_bootstrap_owner"(uuid, uuid)
307
+ to authenticated, service_role;
308
+ grant execute on function "public"."fleet_can_edit_inspection"(uuid, uuid)
309
+ to authenticated, service_role;
310
+ grant execute on function "public"."fleet_can_write_media"(
311
+ uuid, uuid, uuid, uuid, uuid, uuid, uuid
312
+ ) to authenticated, service_role;
313
+ grant execute on function "public"."fleet_seed_default_form_templates"(uuid, uuid)
314
+ to service_role;
315
+
316
+ -- ============================================================
317
+ -- RLS enablement and base grants
318
+ -- ============================================================
319
+
320
+ alter table "public"."fleet_organization" enable row level security;
321
+ alter table "public"."fleet_member" enable row level security;
322
+ alter table "public"."fleet_vehicle" enable row level security;
323
+ alter table "public"."fleet_form_template" enable row level security;
324
+ alter table "public"."fleet_form_template_version" enable row level security;
325
+ alter table "public"."fleet_form_section" enable row level security;
326
+ alter table "public"."fleet_form_question" enable row level security;
327
+ alter table "public"."fleet_form_assignment" enable row level security;
328
+ alter table "public"."fleet_inspection" enable row level security;
329
+ alter table "public"."fleet_inspection_answer" enable row level security;
330
+ alter table "public"."fleet_media" enable row level security;
331
+ alter table "public"."fleet_issue" enable row level security;
332
+ alter table "public"."fleet_issue_status_history" enable row level security;
333
+ alter table "public"."fleet_issue_comment" enable row level security;
334
+ alter table "public"."fleet_repair_order" enable row level security;
335
+ alter table "public"."fleet_repair_order_line_item" enable row level security;
336
+ alter table "public"."fleet_pm_schedule" enable row level security;
337
+ alter table "public"."fleet_service_record" enable row level security;
338
+ alter table "public"."fleet_notification_preference" enable row level security;
339
+ alter table "public"."fleet_audit_event" enable row level security;
340
+
341
+ do $$
342
+ declare
343
+ "v_table" text;
344
+ begin
345
+ foreach "v_table" in array array[
346
+ 'fleet_organization', 'fleet_member', 'fleet_vehicle',
347
+ 'fleet_form_template', 'fleet_form_template_version',
348
+ 'fleet_form_section', 'fleet_form_question', 'fleet_form_assignment',
349
+ 'fleet_inspection', 'fleet_inspection_answer', 'fleet_media',
350
+ 'fleet_issue', 'fleet_issue_status_history', 'fleet_issue_comment',
351
+ 'fleet_repair_order', 'fleet_repair_order_line_item',
352
+ 'fleet_pm_schedule', 'fleet_service_record',
353
+ 'fleet_notification_preference', 'fleet_audit_event'
354
+ ]
355
+ loop
356
+ execute format(
357
+ 'revoke all on table public.%I from public, anon, authenticated',
358
+ "v_table"
359
+ );
360
+ execute format('grant all on table public.%I to service_role', "v_table");
361
+ end loop;
362
+ end;
363
+ $$;
364
+
365
+ grant select, insert, update on table "public"."fleet_organization" to authenticated;
366
+ grant select, insert, update on table "public"."fleet_member" to authenticated;
367
+ grant select, insert, update on table "public"."fleet_vehicle" to authenticated;
368
+ grant select, insert, update on table "public"."fleet_form_template" to authenticated;
369
+ grant select, insert, update, delete on table "public"."fleet_form_template_version"
370
+ to authenticated;
371
+ grant select, insert, update, delete on table "public"."fleet_form_section"
372
+ to authenticated;
373
+ grant select, insert, update, delete on table "public"."fleet_form_question"
374
+ to authenticated;
375
+ grant select, insert, update, delete on table "public"."fleet_form_assignment"
376
+ to authenticated;
377
+ grant select, insert, update on table "public"."fleet_inspection" to authenticated;
378
+ grant select, insert, update, delete on table "public"."fleet_inspection_answer"
379
+ to authenticated;
380
+ grant select, insert, update, delete on table "public"."fleet_media" to authenticated;
381
+ grant select, insert, update on table "public"."fleet_issue" to authenticated;
382
+ grant select on table "public"."fleet_issue_status_history" to authenticated;
383
+ grant select, insert on table "public"."fleet_issue_comment" to authenticated;
384
+ grant select, insert, update on table "public"."fleet_repair_order" to authenticated;
385
+ grant select, insert, update, delete on table "public"."fleet_repair_order_line_item"
386
+ to authenticated;
387
+ grant select, insert, update on table "public"."fleet_pm_schedule" to authenticated;
388
+ grant select, insert, update on table "public"."fleet_service_record" to authenticated;
389
+ grant select, insert, update, delete on table "public"."fleet_notification_preference"
390
+ to authenticated;
391
+ grant select on table "public"."fleet_audit_event" to authenticated;
392
+
393
+ -- ============================================================
394
+ -- Organization, membership, vehicles, and form configuration
395
+ -- ============================================================
396
+
397
+ create policy "Fleet members can view their organization"
398
+ on "public"."fleet_organization"
399
+ for select to authenticated
400
+ using ((select "public"."fleet_is_member"("company_id")));
401
+
402
+ create policy "Autopilot owner can create first Fleet organization"
403
+ on "public"."fleet_organization"
404
+ for insert to authenticated
405
+ with check ((select "public"."fleet_can_bootstrap_owner"(
406
+ "company_id", (select auth.uid())
407
+ )) and "created_by" = (select auth.uid()));
408
+
409
+ create policy "Fleet owners and managers can update organization"
410
+ on "public"."fleet_organization"
411
+ for update to authenticated
412
+ using ((select "public"."fleet_has_any_role"(
413
+ "company_id", array['owner', 'manager']::text[]
414
+ )))
415
+ with check ((select "public"."fleet_has_any_role"(
416
+ "company_id", array['owner', 'manager']::text[]
417
+ )));
418
+
419
+ create policy "Fleet members can view memberships"
420
+ on "public"."fleet_member"
421
+ for select to authenticated
422
+ using (
423
+ (select "public"."fleet_is_member"("company_id"))
424
+ or (
425
+ "user_id" = (select auth.uid())
426
+ and (select "public"."fleet_can_bootstrap_owner"(
427
+ "company_id", "user_id"
428
+ ))
429
+ )
430
+ );
431
+
432
+ create policy "Fleet owner bootstrap or leadership can add memberships"
433
+ on "public"."fleet_member"
434
+ for insert to authenticated
435
+ with check (
436
+ "created_by" = (select auth.uid())
437
+ and (
438
+ (select "public"."fleet_has_any_role"(
439
+ "company_id", array['owner']::text[]
440
+ ))
441
+ or (
442
+ "role" <> 'owner'
443
+ and (select "public"."fleet_has_any_role"(
444
+ "company_id", array['manager']::text[]
445
+ ))
446
+ )
447
+ or (
448
+ "role" = 'owner'
449
+ and "is_active"
450
+ and (select "public"."fleet_can_bootstrap_owner"(
451
+ "company_id", "user_id"
452
+ ))
453
+ )
454
+ )
455
+ );
456
+
457
+ create policy "Fleet leadership can update memberships"
458
+ on "public"."fleet_member"
459
+ for update to authenticated
460
+ using (
461
+ (select "public"."fleet_has_any_role"(
462
+ "company_id", array['owner']::text[]
463
+ ))
464
+ or (
465
+ "role" <> 'owner'
466
+ and (select "public"."fleet_has_any_role"(
467
+ "company_id", array['manager']::text[]
468
+ ))
469
+ )
470
+ or (
471
+ "user_id" = (select auth.uid())
472
+ and (select "public"."fleet_can_bootstrap_owner"(
473
+ "company_id", "user_id"
474
+ ))
475
+ )
476
+ )
477
+ with check (
478
+ (select "public"."fleet_has_any_role"(
479
+ "company_id", array['owner']::text[]
480
+ ))
481
+ or (
482
+ "role" <> 'owner'
483
+ and (select "public"."fleet_has_any_role"(
484
+ "company_id", array['manager']::text[]
485
+ ))
486
+ )
487
+ or (
488
+ "user_id" = (select auth.uid())
489
+ and "role" = 'owner'
490
+ and "is_active"
491
+ and (select "public"."fleet_can_bootstrap_owner"(
492
+ "company_id", "user_id"
493
+ ))
494
+ )
495
+ );
496
+
497
+ create policy "Fleet members can view vehicles"
498
+ on "public"."fleet_vehicle"
499
+ for select to authenticated
500
+ using ((select "public"."fleet_is_member"("company_id")));
501
+
502
+ create policy "Fleet owners and managers can add vehicles"
503
+ on "public"."fleet_vehicle"
504
+ for insert to authenticated
505
+ with check ((select "public"."fleet_has_any_role"(
506
+ "company_id", array['owner', 'manager']::text[]
507
+ )) and "created_by" = (select auth.uid()));
508
+
509
+ create policy "Fleet owners and managers can update vehicles"
510
+ on "public"."fleet_vehicle"
511
+ for update to authenticated
512
+ using ((select "public"."fleet_has_any_role"(
513
+ "company_id", array['owner', 'manager']::text[]
514
+ )))
515
+ with check ((select "public"."fleet_has_any_role"(
516
+ "company_id", array['owner', 'manager']::text[]
517
+ )));
518
+
519
+ create policy "Fleet members can view form templates"
520
+ on "public"."fleet_form_template"
521
+ for select to authenticated
522
+ using ((select "public"."fleet_is_member"("company_id")));
523
+
524
+ create policy "Fleet leadership can add form templates"
525
+ on "public"."fleet_form_template"
526
+ for insert to authenticated
527
+ with check ((select "public"."fleet_has_any_role"(
528
+ "company_id", array['owner', 'manager']::text[]
529
+ )) and "created_by" = (select auth.uid()));
530
+
531
+ create policy "Fleet leadership can update form templates"
532
+ on "public"."fleet_form_template"
533
+ for update to authenticated
534
+ using ((select "public"."fleet_has_any_role"(
535
+ "company_id", array['owner', 'manager']::text[]
536
+ )))
537
+ with check ((select "public"."fleet_has_any_role"(
538
+ "company_id", array['owner', 'manager']::text[]
539
+ )));
540
+
541
+ create policy "Fleet members can view form versions"
542
+ on "public"."fleet_form_template_version"
543
+ for select to authenticated
544
+ using ((select "public"."fleet_is_member"("company_id")));
545
+
546
+ create policy "Fleet leadership can add form versions"
547
+ on "public"."fleet_form_template_version"
548
+ for insert to authenticated
549
+ with check ((select "public"."fleet_has_any_role"(
550
+ "company_id", array['owner', 'manager']::text[]
551
+ )) and "created_by" = (select auth.uid()));
552
+
553
+ create policy "Fleet leadership can update form versions"
554
+ on "public"."fleet_form_template_version"
555
+ for update to authenticated
556
+ using ((select "public"."fleet_has_any_role"(
557
+ "company_id", array['owner', 'manager']::text[]
558
+ )))
559
+ with check ((select "public"."fleet_has_any_role"(
560
+ "company_id", array['owner', 'manager']::text[]
561
+ )));
562
+
563
+ create policy "Fleet leadership can delete draft form versions"
564
+ on "public"."fleet_form_template_version"
565
+ for delete to authenticated
566
+ using (
567
+ "status" = 'draft'
568
+ and (select "public"."fleet_has_any_role"(
569
+ "company_id", array['owner', 'manager']::text[]
570
+ ))
571
+ );
572
+
573
+ create policy "Fleet members can view form sections"
574
+ on "public"."fleet_form_section"
575
+ for select to authenticated
576
+ using ((select "public"."fleet_is_member"("company_id")));
577
+
578
+ create policy "Fleet leadership can add form sections"
579
+ on "public"."fleet_form_section"
580
+ for insert to authenticated
581
+ with check ((select "public"."fleet_has_any_role"(
582
+ "company_id", array['owner', 'manager']::text[]
583
+ )));
584
+
585
+ create policy "Fleet leadership can update form sections"
586
+ on "public"."fleet_form_section"
587
+ for update to authenticated
588
+ using ((select "public"."fleet_has_any_role"(
589
+ "company_id", array['owner', 'manager']::text[]
590
+ )))
591
+ with check ((select "public"."fleet_has_any_role"(
592
+ "company_id", array['owner', 'manager']::text[]
593
+ )));
594
+
595
+ create policy "Fleet leadership can delete form sections"
596
+ on "public"."fleet_form_section"
597
+ for delete to authenticated
598
+ using ((select "public"."fleet_has_any_role"(
599
+ "company_id", array['owner', 'manager']::text[]
600
+ )));
601
+
602
+ create policy "Fleet members can view form questions"
603
+ on "public"."fleet_form_question"
604
+ for select to authenticated
605
+ using ((select "public"."fleet_is_member"("company_id")));
606
+
607
+ create policy "Fleet leadership can add form questions"
608
+ on "public"."fleet_form_question"
609
+ for insert to authenticated
610
+ with check ((select "public"."fleet_has_any_role"(
611
+ "company_id", array['owner', 'manager']::text[]
612
+ )));
613
+
614
+ create policy "Fleet leadership can update form questions"
615
+ on "public"."fleet_form_question"
616
+ for update to authenticated
617
+ using ((select "public"."fleet_has_any_role"(
618
+ "company_id", array['owner', 'manager']::text[]
619
+ )))
620
+ with check ((select "public"."fleet_has_any_role"(
621
+ "company_id", array['owner', 'manager']::text[]
622
+ )));
623
+
624
+ create policy "Fleet leadership can delete form questions"
625
+ on "public"."fleet_form_question"
626
+ for delete to authenticated
627
+ using ((select "public"."fleet_has_any_role"(
628
+ "company_id", array['owner', 'manager']::text[]
629
+ )));
630
+
631
+ create policy "Fleet members can view form assignments"
632
+ on "public"."fleet_form_assignment"
633
+ for select to authenticated
634
+ using ((select "public"."fleet_is_member"("company_id")));
635
+
636
+ create policy "Fleet leadership can add form assignments"
637
+ on "public"."fleet_form_assignment"
638
+ for insert to authenticated
639
+ with check ((select "public"."fleet_has_any_role"(
640
+ "company_id", array['owner', 'manager']::text[]
641
+ )) and "created_by" = (select auth.uid()));
642
+
643
+ create policy "Fleet leadership can update form assignments"
644
+ on "public"."fleet_form_assignment"
645
+ for update to authenticated
646
+ using ((select "public"."fleet_has_any_role"(
647
+ "company_id", array['owner', 'manager']::text[]
648
+ )))
649
+ with check ((select "public"."fleet_has_any_role"(
650
+ "company_id", array['owner', 'manager']::text[]
651
+ )));
652
+
653
+ create policy "Fleet leadership can delete form assignments"
654
+ on "public"."fleet_form_assignment"
655
+ for delete to authenticated
656
+ using ((select "public"."fleet_has_any_role"(
657
+ "company_id", array['owner', 'manager']::text[]
658
+ )));
659
+
660
+ -- ============================================================
661
+ -- Inspection execution, evidence, and issue lifecycle
662
+ -- ============================================================
663
+
664
+ create policy "Fleet members can view inspections"
665
+ on "public"."fleet_inspection"
666
+ for select to authenticated
667
+ using ((select "public"."fleet_is_member"("company_id")));
668
+
669
+ create policy "Fleet operational roles can start inspections"
670
+ on "public"."fleet_inspection"
671
+ for insert to authenticated
672
+ with check (
673
+ "inspector_user_id" = (select auth.uid())
674
+ and "created_by" = (select auth.uid())
675
+ and (select "public"."fleet_has_any_role"(
676
+ "company_id", array['owner', 'manager', 'operator', 'technician']::text[]
677
+ ))
678
+ );
679
+
680
+ create policy "Fleet inspectors can update their drafts"
681
+ on "public"."fleet_inspection"
682
+ for update to authenticated
683
+ using ((select "public"."fleet_can_edit_inspection"(
684
+ "company_id", "id"
685
+ )))
686
+ with check (
687
+ "inspector_user_id" = (select auth.uid())
688
+ and (select "public"."fleet_has_any_role"(
689
+ "company_id", array['owner', 'manager', 'operator', 'technician']::text[]
690
+ ))
691
+ );
692
+
693
+ create policy "Fleet members can view inspection answers"
694
+ on "public"."fleet_inspection_answer"
695
+ for select to authenticated
696
+ using ((select "public"."fleet_is_member"("company_id")));
697
+
698
+ create policy "Fleet inspection editors can add answers"
699
+ on "public"."fleet_inspection_answer"
700
+ for insert to authenticated
701
+ with check (
702
+ (select "public"."fleet_can_edit_inspection"(
703
+ "company_id", "inspection_id"
704
+ ))
705
+ and "answered_by" = (select auth.uid())
706
+ );
707
+
708
+ create policy "Fleet inspection editors can update answers"
709
+ on "public"."fleet_inspection_answer"
710
+ for update to authenticated
711
+ using (
712
+ "answered_by" = (select auth.uid())
713
+ and (select "public"."fleet_can_edit_inspection"(
714
+ "company_id", "inspection_id"
715
+ ))
716
+ )
717
+ with check (
718
+ (select "public"."fleet_can_edit_inspection"(
719
+ "company_id", "inspection_id"
720
+ ))
721
+ and "answered_by" = (select auth.uid())
722
+ );
723
+
724
+ create policy "Fleet inspection editors can delete draft answers"
725
+ on "public"."fleet_inspection_answer"
726
+ for delete to authenticated
727
+ using ((select "public"."fleet_can_edit_inspection"(
728
+ "company_id", "inspection_id"
729
+ )) and "answered_by" = (select auth.uid()));
730
+
731
+ create policy "Fleet members can view media metadata"
732
+ on "public"."fleet_media"
733
+ for select to authenticated
734
+ using ((select "public"."fleet_is_member"("company_id")));
735
+
736
+ create policy "Fleet operational roles can add media metadata"
737
+ on "public"."fleet_media"
738
+ for insert to authenticated
739
+ with check (
740
+ "uploaded_by" = (select auth.uid())
741
+ and "storage_bucket" = 'fleet-media'
742
+ and ("storage"."foldername"("storage_object_path"))[1] = "company_id"::text
743
+ and ("storage"."foldername"("storage_object_path"))[2]
744
+ = (select auth.uid()::text)
745
+ and (select "public"."fleet_can_write_media"(
746
+ "company_id", "inspection_id", "answer_id", "issue_id",
747
+ "issue_comment_id", "repair_order_id", "service_record_id"
748
+ ))
749
+ );
750
+
751
+ create policy "Fleet media uploaders can update authorized metadata"
752
+ on "public"."fleet_media"
753
+ for update to authenticated
754
+ using (
755
+ "uploaded_by" = (select auth.uid())
756
+ and (select "public"."fleet_can_write_media"(
757
+ "company_id", "inspection_id", "answer_id", "issue_id",
758
+ "issue_comment_id", "repair_order_id", "service_record_id"
759
+ ))
760
+ )
761
+ with check (
762
+ "uploaded_by" = (select auth.uid())
763
+ and "storage_bucket" = 'fleet-media'
764
+ and ("storage"."foldername"("storage_object_path"))[1] = "company_id"::text
765
+ and ("storage"."foldername"("storage_object_path"))[2]
766
+ = (select auth.uid()::text)
767
+ and (select "public"."fleet_can_write_media"(
768
+ "company_id", "inspection_id", "answer_id", "issue_id",
769
+ "issue_comment_id", "repair_order_id", "service_record_id"
770
+ ))
771
+ );
772
+
773
+ create policy "Fleet media uploaders can delete authorized metadata"
774
+ on "public"."fleet_media"
775
+ for delete to authenticated
776
+ using (
777
+ "uploaded_by" = (select auth.uid())
778
+ and (select "public"."fleet_can_write_media"(
779
+ "company_id", "inspection_id", "answer_id", "issue_id",
780
+ "issue_comment_id", "repair_order_id", "service_record_id"
781
+ ))
782
+ );
783
+
784
+ create policy "Fleet members can view issues"
785
+ on "public"."fleet_issue"
786
+ for select to authenticated
787
+ using ((select "public"."fleet_is_member"("company_id")));
788
+
789
+ create policy "Fleet operational roles can report issues"
790
+ on "public"."fleet_issue"
791
+ for insert to authenticated
792
+ with check (
793
+ "reported_by" = (select auth.uid())
794
+ and
795
+ (select "public"."fleet_has_any_role"(
796
+ "company_id", array['owner', 'manager', 'operator', 'technician']::text[]
797
+ ))
798
+ );
799
+
800
+ create policy "Fleet leadership and technicians can update issues"
801
+ on "public"."fleet_issue"
802
+ for update to authenticated
803
+ using ((select "public"."fleet_has_any_role"(
804
+ "company_id", array['owner', 'manager', 'technician']::text[]
805
+ )))
806
+ with check ((select "public"."fleet_has_any_role"(
807
+ "company_id", array['owner', 'manager', 'technician']::text[]
808
+ )));
809
+
810
+ create policy "Fleet members can view issue status history"
811
+ on "public"."fleet_issue_status_history"
812
+ for select to authenticated
813
+ using ((select "public"."fleet_is_member"("company_id")));
814
+
815
+ create policy "Fleet members can view issue comments"
816
+ on "public"."fleet_issue_comment"
817
+ for select to authenticated
818
+ using ((select "public"."fleet_is_member"("company_id")));
819
+
820
+ create policy "Fleet operational roles can add issue comments"
821
+ on "public"."fleet_issue_comment"
822
+ for insert to authenticated
823
+ with check (
824
+ "author_user_id" = (select auth.uid())
825
+ and (select "public"."fleet_has_any_role"(
826
+ "company_id", array['owner', 'manager', 'operator', 'technician']::text[]
827
+ ))
828
+ );
829
+
830
+ -- ============================================================
831
+ -- Repairs, preventive maintenance, preferences, and audit
832
+ -- ============================================================
833
+
834
+ create policy "Fleet members can view repair orders"
835
+ on "public"."fleet_repair_order"
836
+ for select to authenticated
837
+ using ((select "public"."fleet_is_member"("company_id")));
838
+
839
+ create policy "Fleet leadership and technicians can add repair orders"
840
+ on "public"."fleet_repair_order"
841
+ for insert to authenticated
842
+ with check ((select "public"."fleet_has_any_role"(
843
+ "company_id", array['owner', 'manager', 'technician']::text[]
844
+ )) and "created_by" = (select auth.uid()));
845
+
846
+ create policy "Fleet leadership and technicians can update repair orders"
847
+ on "public"."fleet_repair_order"
848
+ for update to authenticated
849
+ using ((select "public"."fleet_has_any_role"(
850
+ "company_id", array['owner', 'manager', 'technician']::text[]
851
+ )))
852
+ with check ((select "public"."fleet_has_any_role"(
853
+ "company_id", array['owner', 'manager', 'technician']::text[]
854
+ )));
855
+
856
+ create policy "Fleet members can view repair line items"
857
+ on "public"."fleet_repair_order_line_item"
858
+ for select to authenticated
859
+ using ((select "public"."fleet_is_member"("company_id")));
860
+
861
+ create policy "Fleet leadership and technicians can add repair line items"
862
+ on "public"."fleet_repair_order_line_item"
863
+ for insert to authenticated
864
+ with check ((select "public"."fleet_has_any_role"(
865
+ "company_id", array['owner', 'manager', 'technician']::text[]
866
+ )));
867
+
868
+ create policy "Fleet leadership and technicians can update repair line items"
869
+ on "public"."fleet_repair_order_line_item"
870
+ for update to authenticated
871
+ using ((select "public"."fleet_has_any_role"(
872
+ "company_id", array['owner', 'manager', 'technician']::text[]
873
+ )))
874
+ with check ((select "public"."fleet_has_any_role"(
875
+ "company_id", array['owner', 'manager', 'technician']::text[]
876
+ )));
877
+
878
+ create policy "Fleet leadership and technicians can delete repair line items"
879
+ on "public"."fleet_repair_order_line_item"
880
+ for delete to authenticated
881
+ using ((select "public"."fleet_has_any_role"(
882
+ "company_id", array['owner', 'manager', 'technician']::text[]
883
+ )));
884
+
885
+ create policy "Fleet members can view PM schedules"
886
+ on "public"."fleet_pm_schedule"
887
+ for select to authenticated
888
+ using ((select "public"."fleet_is_member"("company_id")));
889
+
890
+ create policy "Fleet leadership and technicians can add PM schedules"
891
+ on "public"."fleet_pm_schedule"
892
+ for insert to authenticated
893
+ with check ((select "public"."fleet_has_any_role"(
894
+ "company_id", array['owner', 'manager', 'technician']::text[]
895
+ )) and "created_by" = (select auth.uid()));
896
+
897
+ create policy "Fleet leadership and technicians can update PM schedules"
898
+ on "public"."fleet_pm_schedule"
899
+ for update to authenticated
900
+ using ((select "public"."fleet_has_any_role"(
901
+ "company_id", array['owner', 'manager', 'technician']::text[]
902
+ )))
903
+ with check ((select "public"."fleet_has_any_role"(
904
+ "company_id", array['owner', 'manager', 'technician']::text[]
905
+ )));
906
+
907
+ create policy "Fleet members can view service records"
908
+ on "public"."fleet_service_record"
909
+ for select to authenticated
910
+ using ((select "public"."fleet_is_member"("company_id")));
911
+
912
+ create policy "Fleet leadership and technicians can add service records"
913
+ on "public"."fleet_service_record"
914
+ for insert to authenticated
915
+ with check ((select "public"."fleet_has_any_role"(
916
+ "company_id", array['owner', 'manager', 'technician']::text[]
917
+ ))
918
+ and "created_by" = (select auth.uid())
919
+ and (
920
+ "performed_by_user_id" is null
921
+ or "performed_by_user_id" = (select auth.uid())
922
+ ));
923
+
924
+ create policy "Fleet leadership and technicians can correct service notes"
925
+ on "public"."fleet_service_record"
926
+ for update to authenticated
927
+ using ((select "public"."fleet_has_any_role"(
928
+ "company_id", array['owner', 'manager', 'technician']::text[]
929
+ )))
930
+ with check ((select "public"."fleet_has_any_role"(
931
+ "company_id", array['owner', 'manager', 'technician']::text[]
932
+ )));
933
+
934
+ create policy "Fleet users or leadership can view notification preferences"
935
+ on "public"."fleet_notification_preference"
936
+ for select to authenticated
937
+ using (
938
+ (
939
+ "user_id" = (select auth.uid())
940
+ and (select "public"."fleet_is_member"("company_id"))
941
+ )
942
+ or (select "public"."fleet_has_any_role"(
943
+ "company_id", array['owner', 'manager']::text[]
944
+ ))
945
+ );
946
+
947
+ create policy "Fleet users can add their notification preferences"
948
+ on "public"."fleet_notification_preference"
949
+ for insert to authenticated
950
+ with check (
951
+ "user_id" = (select auth.uid())
952
+ and (select "public"."fleet_is_member"("company_id"))
953
+ );
954
+
955
+ create policy "Fleet users can update their notification preferences"
956
+ on "public"."fleet_notification_preference"
957
+ for update to authenticated
958
+ using (
959
+ "user_id" = (select auth.uid())
960
+ and (select "public"."fleet_is_member"("company_id"))
961
+ )
962
+ with check (
963
+ "user_id" = (select auth.uid())
964
+ and (select "public"."fleet_is_member"("company_id"))
965
+ );
966
+
967
+ create policy "Fleet users can delete their notification preferences"
968
+ on "public"."fleet_notification_preference"
969
+ for delete to authenticated
970
+ using (
971
+ "user_id" = (select auth.uid())
972
+ and (select "public"."fleet_is_member"("company_id"))
973
+ );
974
+
975
+ create policy "Fleet reporting roles can view audit events"
976
+ on "public"."fleet_audit_event"
977
+ for select to authenticated
978
+ using ((select "public"."fleet_has_any_role"(
979
+ "company_id", array['owner', 'manager']::text[]
980
+ )));
981
+
982
+ -- ============================================================
983
+ -- Private Supabase Storage objects
984
+ -- ============================================================
985
+
986
+ create policy "Fleet members can read tenant media objects"
987
+ on "storage"."objects"
988
+ for select to authenticated
989
+ using (
990
+ "bucket_id" = 'fleet-media'
991
+ and ("storage"."foldername"("name"))[1]
992
+ = (select "public"."fleet_current_company_id"()::text)
993
+ and (select "public"."fleet_is_member"(
994
+ "public"."fleet_current_company_id"()
995
+ ))
996
+ );
997
+
998
+ create policy "Fleet operational roles can upload tenant media objects"
999
+ on "storage"."objects"
1000
+ for insert to authenticated
1001
+ with check (
1002
+ "bucket_id" = 'fleet-media'
1003
+ and ("storage"."foldername"("name"))[1]
1004
+ = (select "public"."fleet_current_company_id"()::text)
1005
+ and ("storage"."foldername"("name"))[2]
1006
+ = (select auth.uid()::text)
1007
+ and (select "public"."fleet_has_any_role"(
1008
+ "public"."fleet_current_company_id"(),
1009
+ array['owner', 'manager', 'operator', 'technician']::text[]
1010
+ ))
1011
+ );