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,154 @@
1
+ -- Transactional proposal save (replace-children).
2
+ --
3
+ -- The builder always persists its full state. Done as separate PostgREST
4
+ -- calls (delete options/add-ons, then re-insert), a failure between the
5
+ -- delete and the inserts left the stored proposal empty or partially
6
+ -- rebuilt — losing previously saved packages if the user walked away
7
+ -- instead of retrying. One function, one transaction: a failed save leaves
8
+ -- the previous proposal intact.
9
+ --
10
+ -- security invoker: called by authenticated staff sessions (mobile calls it
11
+ -- directly, web's /api/proposals calls it after its entitlement check), so
12
+ -- every read and write inside runs under the caller's RLS. p_company_id is
13
+ -- belt only — an authenticated caller cannot see or write another tenant's
14
+ -- rows regardless, and the composite FKs (see create_estimate_proposal)
15
+ -- make cross-tenant references unrepresentable.
16
+
17
+ create or replace function "public"."save_estimate_proposal"(
18
+ "p_company_id" uuid,
19
+ "p_estimate_id" uuid,
20
+ "p_options" jsonb,
21
+ "p_addons" jsonb
22
+ ) returns uuid
23
+ language plpgsql
24
+ security invoker
25
+ set search_path = public
26
+ as $$
27
+ declare
28
+ v_estimate_status text;
29
+ v_proposal_id uuid;
30
+ v_proposal_status text;
31
+ v_option jsonb;
32
+ v_option_id uuid;
33
+ v_option_index integer := 0;
34
+ v_item jsonb;
35
+ v_item_index integer;
36
+ v_addon jsonb;
37
+ v_addon_index integer := 0;
38
+ begin
39
+ if p_options is null
40
+ or jsonb_typeof(p_options) <> 'array'
41
+ or jsonb_array_length(p_options) < 1
42
+ or jsonb_array_length(p_options) > 3 then
43
+ raise exception 'a proposal needs 1-3 options'
44
+ using errcode = 'P0006';
45
+ end if;
46
+
47
+ select "status" into v_estimate_status
48
+ from "public"."estimate"
49
+ where "id" = p_estimate_id and "company_id" = p_company_id
50
+ for update;
51
+ if not found then
52
+ raise exception 'estimate not found'
53
+ using errcode = 'P0002';
54
+ end if;
55
+
56
+ select "id", "status" into v_proposal_id, v_proposal_status
57
+ from "public"."estimate_proposal"
58
+ where "estimate_id" = p_estimate_id
59
+ for update;
60
+
61
+ if v_proposal_id is not null then
62
+ if v_proposal_status = 'Approved' then
63
+ raise exception 'proposal is approved and can no longer be edited'
64
+ using errcode = 'P0003';
65
+ end if;
66
+ delete from "public"."estimate_proposal_option"
67
+ where "proposal_id" = v_proposal_id;
68
+ delete from "public"."estimate_proposal_addon"
69
+ where "proposal_id" = v_proposal_id;
70
+ else
71
+ if v_estimate_status = 'Approved' then
72
+ raise exception 'estimate is already approved'
73
+ using errcode = 'P0007';
74
+ end if;
75
+ insert into "public"."estimate_proposal" ("company_id", "estimate_id")
76
+ values (p_company_id, p_estimate_id)
77
+ returning "id" into v_proposal_id;
78
+ end if;
79
+
80
+ for v_option in select * from jsonb_array_elements(p_options) loop
81
+ insert into "public"."estimate_proposal_option"
82
+ ("company_id", "proposal_id", "sort_order")
83
+ values (p_company_id, v_proposal_id, v_option_index)
84
+ returning "id" into v_option_id;
85
+
86
+ v_item_index := 0;
87
+ for v_item in
88
+ select * from jsonb_array_elements(coalesce(v_option->'items', '[]'::jsonb))
89
+ loop
90
+ insert into "public"."estimate_proposal_option_item" (
91
+ "company_id", "option_id", "item_name", "item_price",
92
+ "item_cost", "quantity", "taxable", "description",
93
+ "payment_upfront", "sort_order"
94
+ ) values (
95
+ p_company_id,
96
+ v_option_id,
97
+ v_item->>'item_name',
98
+ (v_item->>'item_price')::numeric,
99
+ coalesce((v_item->>'item_cost')::numeric, 0),
100
+ (v_item->>'quantity')::numeric,
101
+ coalesce((v_item->>'taxable')::boolean, false),
102
+ v_item->>'description',
103
+ (v_item->>'payment_upfront')::boolean,
104
+ v_item_index
105
+ );
106
+ v_item_index := v_item_index + 1;
107
+ end loop;
108
+
109
+ v_option_index := v_option_index + 1;
110
+ end loop;
111
+
112
+ for v_addon in
113
+ select * from jsonb_array_elements(coalesce(p_addons, '[]'::jsonb))
114
+ loop
115
+ insert into "public"."estimate_proposal_addon" (
116
+ "company_id", "proposal_id", "item_name", "item_price",
117
+ "item_cost", "quantity", "taxable", "description",
118
+ "is_selected", "sort_order"
119
+ ) values (
120
+ p_company_id,
121
+ v_proposal_id,
122
+ v_addon->>'item_name',
123
+ (v_addon->>'item_price')::numeric,
124
+ coalesce((v_addon->>'item_cost')::numeric, 0),
125
+ coalesce((v_addon->>'quantity')::numeric, 1),
126
+ coalesce((v_addon->>'taxable')::boolean, false),
127
+ v_addon->>'description',
128
+ coalesce((v_addon->>'is_selected')::boolean, false),
129
+ v_addon_index
130
+ );
131
+ v_addon_index := v_addon_index + 1;
132
+ end loop;
133
+
134
+ return v_proposal_id;
135
+ end;
136
+ $$;
137
+
138
+ alter function "public"."save_estimate_proposal"(uuid, uuid, jsonb, jsonb)
139
+ owner to "postgres";
140
+
141
+ -- Authenticated staff and the web server's admin client may call it; anon
142
+ -- (the public estimate page) never saves proposals.
143
+ revoke all on function "public"."save_estimate_proposal"(
144
+ uuid, uuid, jsonb, jsonb
145
+ ) from public;
146
+ revoke all on function "public"."save_estimate_proposal"(
147
+ uuid, uuid, jsonb, jsonb
148
+ ) from "anon";
149
+ grant execute on function "public"."save_estimate_proposal"(
150
+ uuid, uuid, jsonb, jsonb
151
+ ) to "authenticated";
152
+ grant execute on function "public"."save_estimate_proposal"(
153
+ uuid, uuid, jsonb, jsonb
154
+ ) to "service_role";
@@ -0,0 +1,6 @@
1
+ -- Additive and backward-compatible: existing rows default to false (branding shows).
2
+ alter table public.settings_company
3
+ add column if not exists hide_autopilot_branding boolean not null default false;
4
+
5
+ comment on column public.settings_company.hide_autopilot_branding is
6
+ 'Hide "Powered by Autopilot" branding on customer-facing documents, forms, and emails. Only effective when the plan includes the hide_autopilot_branding entitlement (Grow and Scale); enforcement is serve-time, so a downgrade restores branding without rewriting this value.';
@@ -0,0 +1,9 @@
1
+ alter table "public"."client"
2
+ add column "billing_address" text,
3
+ add column "billing_address2" text,
4
+ add column "billing_city" text,
5
+ add column "billing_state" text,
6
+ add column "billing_zip_code" text;
7
+
8
+ comment on column "public"."client"."billing_address" is
9
+ 'Billing street address. Rows in the address table are the client''s service addresses; these columns are the single billing address, populated only when it differs from the service address (null = same as service address). No lat/lng by design.';
@@ -0,0 +1,93 @@
1
+ -- api_create_client: accept the client billing address columns.
2
+ -- Same body as 20260719215148, with billing_address/billing_address2/
3
+ -- billing_city/billing_state/billing_zip_code added to the client insert.
4
+ -- Null billing columns mean "same as the service address" — the function
5
+ -- stores them only when the payload provides them.
6
+
7
+ create or replace function "public"."api_create_client"("p" jsonb)
8
+ returns uuid
9
+ language "plpgsql"
10
+ security definer
11
+ set search_path = 'public'
12
+ as $$
13
+ declare
14
+ v_company_id uuid := (p ->> 'company_id')::uuid;
15
+ v_client_id uuid;
16
+ v_addresses jsonb := coalesce(p -> 'addresses', '[]'::jsonb);
17
+ v_primary_count integer;
18
+ a jsonb;
19
+ v_idx integer := 0;
20
+ v_tag_id uuid;
21
+ begin
22
+ perform api_assert_company_ref('job_source', (p ->> 'source_id')::uuid, v_company_id);
23
+
24
+ insert into client (
25
+ company_id, email, first_name, last_name, client_company_name,
26
+ client_notes, client_or_lead, primary_phone_number, source_id,
27
+ is_do_not_service, is_do_not_sms, is_do_not_marketing_sms,
28
+ billing_address, billing_address2, billing_city, billing_state,
29
+ billing_zip_code
30
+ ) values (
31
+ v_company_id,
32
+ p ->> 'email',
33
+ p ->> 'first_name',
34
+ p ->> 'last_name',
35
+ p ->> 'client_company_name',
36
+ p ->> 'client_notes',
37
+ coalesce((p ->> 'client_or_lead')::client_or_lead_enum, 'client'),
38
+ p ->> 'primary_phone_number',
39
+ (p ->> 'source_id')::uuid,
40
+ coalesce((p ->> 'is_do_not_service')::boolean, false),
41
+ coalesce((p ->> 'is_do_not_sms')::boolean, false),
42
+ coalesce((p ->> 'is_do_not_marketing_sms')::boolean, false),
43
+ p ->> 'billing_address',
44
+ p ->> 'billing_address2',
45
+ p ->> 'billing_city',
46
+ p ->> 'billing_state',
47
+ p ->> 'billing_zip_code'
48
+ ) returning id into v_client_id;
49
+
50
+ -- exactly one primary address: error on several; when NONE is marked
51
+ -- true (absent or explicit false alike), the first becomes primary —
52
+ -- a client with addresses but no primary is an app-level anomaly
53
+ select count(*) into v_primary_count
54
+ from jsonb_array_elements(v_addresses) as t(addr)
55
+ where (addr ->> 'is_primary')::boolean;
56
+ if v_primary_count > 1 then
57
+ raise exception 'at most one address may be primary' using errcode = '23514';
58
+ end if;
59
+
60
+ for a in select * from jsonb_array_elements(v_addresses) loop
61
+ insert into address (
62
+ company_id, client_id, address, address2, city, state, zip_code,
63
+ is_primary, latitude, longitude
64
+ ) values (
65
+ v_company_id,
66
+ v_client_id,
67
+ a ->> 'address',
68
+ a ->> 'address2',
69
+ a ->> 'city',
70
+ a ->> 'state',
71
+ a ->> 'zip_code',
72
+ coalesce((a ->> 'is_primary')::boolean, false)
73
+ or (v_primary_count = 0 and v_idx = 0),
74
+ (a ->> 'latitude')::double precision,
75
+ (a ->> 'longitude')::double precision
76
+ );
77
+ v_idx := v_idx + 1;
78
+ end loop;
79
+
80
+ for v_tag_id in select value::uuid from jsonb_array_elements_text(coalesce(p -> 'tag_ids', '[]'::jsonb)) loop
81
+ perform api_assert_company_ref('client_tag', v_tag_id, v_company_id);
82
+ insert into client_tag_link (company_id, client_id, client_tag_id)
83
+ values (v_company_id, v_client_id, v_tag_id);
84
+ end loop;
85
+
86
+ return v_client_id;
87
+ end;
88
+ $$;
89
+
90
+ revoke all on function "public"."api_create_client"(jsonb) from public;
91
+ revoke all on function "public"."api_create_client"(jsonb) from "anon";
92
+ revoke all on function "public"."api_create_client"(jsonb) from "authenticated";
93
+ grant execute on function "public"."api_create_client"(jsonb) to "service_role";
@@ -0,0 +1,20 @@
1
+ -- Backing unique keys for composite tenant-consistent foreign keys.
2
+ --
3
+ -- The contract table (next migration) references job, invoice, client, and
4
+ -- item via composite (fk, company_id) foreign keys so a contract can never
5
+ -- point at another tenant's parent — the same rationale as
6
+ -- estimate_id_company_id_key in 20260731234245_create_estimate_proposal.sql,
7
+ -- which already covers estimate. (id) is already the primary key on each of
8
+ -- these tables, so the composite uniqueness holds for every existing row.
9
+
10
+ alter table only "public"."job"
11
+ add constraint "job_id_company_id_key" unique ("id", "company_id");
12
+
13
+ alter table only "public"."invoice"
14
+ add constraint "invoice_id_company_id_key" unique ("id", "company_id");
15
+
16
+ alter table only "public"."client"
17
+ add constraint "client_id_company_id_key" unique ("id", "company_id");
18
+
19
+ alter table only "public"."item"
20
+ add constraint "item_id_company_id_key" unique ("id", "company_id");
@@ -0,0 +1,30 @@
1
+ -- The "contracts book": reusable contract templates a company maintains in
2
+ -- Contract Settings. Attaching a contract to a job/invoice/estimate/client
3
+ -- snapshots the template's title/body onto the contract instance (next
4
+ -- migration), so editing a template never mutates contracts already created
5
+ -- from it.
6
+ --
7
+ -- is_archived removes a template from the book without breaking the
8
+ -- provenance link from instances that were created from it.
9
+
10
+ create table if not exists "public"."contract_template" (
11
+ "id" "uuid" default "gen_random_uuid"() not null,
12
+ "created_at" timestamp with time zone default "now"() not null,
13
+ "updated_at" timestamp with time zone,
14
+ "company_id" "uuid" not null,
15
+ "name" "text" not null,
16
+ -- Plain text, rendered with pre-wrap; never interpreted as HTML.
17
+ "body" "text" default '' not null,
18
+ "is_archived" boolean default false not null,
19
+ constraint "contract_template_pkey" primary key ("id"),
20
+ constraint "contract_template_id_company_id_key" unique ("id", "company_id")
21
+ );
22
+
23
+ alter table "public"."contract_template" owner to "postgres";
24
+
25
+ alter table only "public"."contract_template"
26
+ add constraint "contract_template_company_id_fkey"
27
+ foreign key ("company_id") references "public"."company"("id") on delete cascade;
28
+
29
+ create index "contract_template_company_id_idx"
30
+ on "public"."contract_template" ("company_id");
@@ -0,0 +1,233 @@
1
+ -- Contract instances: an actual contract attached to exactly one of a job,
2
+ -- invoice, estimate, or client (a "lead" is a client row with
3
+ -- client_or_lead = 'lead', so lead contracts use client_id).
4
+ --
5
+ -- title/body are denormalized snapshots taken when the contract is created
6
+ -- from a template (or typed for a one-off), so later template edits never
7
+ -- change an existing contract — same rationale as the estimate proposal
8
+ -- option-item snapshots. template_id is provenance only; its composite FK
9
+ -- uses the PG15 column-list ON DELETE SET NULL form so deleting a template
10
+ -- nulls only template_id, never company_id (the trap that forced
11
+ -- selected_option_id in the proposals migration to stay single-column).
12
+ --
13
+ -- Parent references are composite (fk, company_id) foreign keys onto
14
+ -- (id, company_id) so a contract can never point at another tenant's parent
15
+ -- (backing unique keys added in 20260807014702).
16
+ --
17
+ -- access_token_nonce backs the public signing link: the link token is
18
+ -- HMAC-SHA256(AUTOPILOT_API_KEY, contract id + nonce), computed and verified
19
+ -- only on the web server (see autopilot-web's contractSignToken.ts, same
20
+ -- model as bookingBillingToken.ts). The DB never holds the token itself, so
21
+ -- a database dump alone cannot forge signing links, while the server can
22
+ -- always rebuild the link for "Copy link"/re-send. Rotating the nonce
23
+ -- revokes every previously issued link.
24
+
25
+ create table if not exists "public"."contract" (
26
+ "id" "uuid" default "gen_random_uuid"() not null,
27
+ "created_at" timestamp with time zone default "now"() not null,
28
+ "updated_at" timestamp with time zone,
29
+ "company_id" "uuid" not null,
30
+ -- Set by set_contract_number() below; user-editable like job/invoice/
31
+ -- estimate numbers, guarded by update_contract_number().
32
+ "contract_number" integer not null,
33
+ "template_id" "uuid",
34
+ "job_id" "uuid",
35
+ "invoice_id" "uuid",
36
+ "estimate_id" "uuid",
37
+ "client_id" "uuid",
38
+ "title" "text" not null,
39
+ -- Plain text, rendered with pre-wrap; never interpreted as HTML.
40
+ "body" "text" not null,
41
+ "status" "text" default 'Unsent' not null,
42
+ "access_token_nonce" "uuid",
43
+ "sent_at" timestamp with time zone,
44
+ "signed_at" timestamp with time zone,
45
+ constraint "contract_pkey" primary key ("id"),
46
+ constraint "contract_id_company_id_key" unique ("id", "company_id"),
47
+ constraint "contract_company_id_contract_number_key" unique ("company_id", "contract_number"),
48
+ constraint "contract_status_check" check ("status" in (
49
+ 'Unsent', 'Sent', 'Opened', 'Signed', 'Voided'
50
+ )),
51
+ constraint "contract_exactly_one_parent_check" check (
52
+ num_nonnulls("job_id", "invoice_id", "estimate_id", "client_id") = 1
53
+ )
54
+ );
55
+
56
+ alter table "public"."contract" owner to "postgres";
57
+
58
+ alter table only "public"."contract"
59
+ add constraint "contract_company_id_fkey"
60
+ foreign key ("company_id") references "public"."company"("id") on delete cascade;
61
+
62
+ alter table only "public"."contract"
63
+ add constraint "contract_template_id_fkey"
64
+ foreign key ("template_id", "company_id")
65
+ references "public"."contract_template"("id", "company_id")
66
+ on delete set null ("template_id");
67
+
68
+ alter table only "public"."contract"
69
+ add constraint "contract_job_id_fkey"
70
+ foreign key ("job_id", "company_id")
71
+ references "public"."job"("id", "company_id") on delete cascade;
72
+
73
+ alter table only "public"."contract"
74
+ add constraint "contract_invoice_id_fkey"
75
+ foreign key ("invoice_id", "company_id")
76
+ references "public"."invoice"("id", "company_id") on delete cascade;
77
+
78
+ alter table only "public"."contract"
79
+ add constraint "contract_estimate_id_fkey"
80
+ foreign key ("estimate_id", "company_id")
81
+ references "public"."estimate"("id", "company_id") on delete cascade;
82
+
83
+ alter table only "public"."contract"
84
+ add constraint "contract_client_id_fkey"
85
+ foreign key ("client_id", "company_id")
86
+ references "public"."client"("id", "company_id") on delete cascade;
87
+
88
+ create index "contract_company_id_idx" on "public"."contract" ("company_id");
89
+ create index "contract_template_id_idx" on "public"."contract" ("template_id");
90
+ create index "contract_job_id_idx" on "public"."contract" ("job_id");
91
+ create index "contract_invoice_id_idx" on "public"."contract" ("invoice_id");
92
+ create index "contract_estimate_id_idx" on "public"."contract" ("estimate_id");
93
+ create index "contract_client_id_idx" on "public"."contract" ("client_id");
94
+ -- Contract Settings renders a newest-first history of every contract.
95
+ create index "contract_company_id_created_at_idx"
96
+ on "public"."contract" ("company_id", "created_at" desc);
97
+
98
+ -- Per-company numbering, same model as job/invoice/estimate numbers but with
99
+ -- a unique company_id + upsert increment instead of the PERFORM ... FOR
100
+ -- UPDATE idiom in set_job_number(): that idiom locks nothing when the
101
+ -- counter row doesn't exist yet, so the first two concurrent inserts for a
102
+ -- company can race to the same number. The upsert takes a real row lock in
103
+ -- both cases.
104
+
105
+ create table if not exists "public"."contract_counter" (
106
+ "id" "uuid" default "gen_random_uuid"() not null,
107
+ "created_at" timestamp with time zone default "now"() not null,
108
+ "company_id" "uuid" not null,
109
+ "next_contract_number" integer not null,
110
+ constraint "contract_counter_pkey" primary key ("id"),
111
+ constraint "contract_counter_company_id_key" unique ("company_id")
112
+ );
113
+
114
+ alter table "public"."contract_counter" owner to "postgres";
115
+
116
+ alter table only "public"."contract_counter"
117
+ add constraint "contract_counter_company_id_fkey"
118
+ foreign key ("company_id") references "public"."company"("id") on delete cascade;
119
+
120
+ create or replace function "public"."set_contract_number"() returns "trigger"
121
+ language "plpgsql"
122
+ as $$
123
+ declare
124
+ next_number integer;
125
+ begin
126
+ -- Row is locked by the upsert whether it existed or not; the returned
127
+ -- value is the counter AFTER increment, so the assigned number is one
128
+ -- less.
129
+ insert into contract_counter (company_id, next_contract_number)
130
+ values (new.company_id, 2)
131
+ on conflict (company_id)
132
+ do update set next_contract_number = contract_counter.next_contract_number + 1
133
+ returning next_contract_number into next_number;
134
+
135
+ new.contract_number := next_number - 1;
136
+
137
+ return new;
138
+ end;
139
+ $$;
140
+
141
+ alter function "public"."set_contract_number"() owner to "postgres";
142
+
143
+ -- Guard for manual number edits, mirroring update_job_number(): reject
144
+ -- duplicates within the company and keep the counter above the high-water
145
+ -- mark so future automatic numbers never collide.
146
+ create or replace function "public"."update_contract_number"() returns "trigger"
147
+ language "plpgsql"
148
+ as $$
149
+ declare
150
+ next_number integer;
151
+ begin
152
+ perform * from contract_counter
153
+ where company_id = new.company_id for update;
154
+
155
+ if exists (
156
+ select 1 from contract
157
+ where company_id = new.company_id
158
+ and contract_number = new.contract_number
159
+ ) then
160
+ raise exception 'Contract number % already exists', new.contract_number;
161
+ end if;
162
+
163
+ select next_contract_number into next_number
164
+ from contract_counter
165
+ where company_id = new.company_id;
166
+
167
+ if new.contract_number >= next_number then
168
+ update contract_counter
169
+ set next_contract_number = new.contract_number + 1
170
+ where company_id = new.company_id;
171
+ end if;
172
+
173
+ return new;
174
+ end;
175
+ $$;
176
+
177
+ alter function "public"."update_contract_number"() owner to "postgres";
178
+
179
+ -- DB backstop for signing integrity, closing both direct-update bypasses of
180
+ -- the sign_contract() workflow:
181
+ --
182
+ -- * Once Signed, a contract is frozen entirely — title, body, status, and
183
+ -- signed_at. Without the status clause, staff could move a row out of
184
+ -- Signed, edit the text, and restore the status, leaving the body
185
+ -- diverged from the audited body_sha256; without the signed_at clause,
186
+ -- the contract's timestamp could be rewritten to conflict with the
187
+ -- audit row's.
188
+ -- * Entering Signed requires the contract_signature audit row to already
189
+ -- exist. sign_contract() inserts it in the same transaction before its
190
+ -- status update, and staff have no insert grant on contract_signature,
191
+ -- so a directly forged Signed status (with no audit evidence) is
192
+ -- unrepresentable.
193
+ create or replace function "public"."enforce_contract_signing_integrity"() returns "trigger"
194
+ language "plpgsql"
195
+ as $$
196
+ begin
197
+ if old.status = 'Signed' then
198
+ if new.status is distinct from old.status
199
+ or new.body is distinct from old.body
200
+ or new.title is distinct from old.title
201
+ or new.signed_at is distinct from old.signed_at
202
+ then
203
+ raise exception 'signed contracts cannot be modified'
204
+ using errcode = 'P0010';
205
+ end if;
206
+ elsif new.status = 'Signed' then
207
+ if not exists (
208
+ select 1 from "public"."contract_signature"
209
+ where "contract_id" = new.id
210
+ ) then
211
+ raise exception 'contracts can only be signed through sign_contract()'
212
+ using errcode = 'P0011';
213
+ end if;
214
+ end if;
215
+
216
+ return new;
217
+ end;
218
+ $$;
219
+
220
+ alter function "public"."enforce_contract_signing_integrity"() owner to "postgres";
221
+
222
+ create or replace trigger "set_contract_number_trigger"
223
+ before insert on "public"."contract"
224
+ for each row execute function "public"."set_contract_number"();
225
+
226
+ create or replace trigger "update_contract_number_trigger"
227
+ before update of "contract_number" on "public"."contract"
228
+ for each row when (("old"."contract_number" is distinct from "new"."contract_number"))
229
+ execute function "public"."update_contract_number"();
230
+
231
+ create or replace trigger "enforce_contract_signing_integrity_trigger"
232
+ before update on "public"."contract"
233
+ for each row execute function "public"."enforce_contract_signing_integrity"();
@@ -0,0 +1,39 @@
1
+ -- Immutable audit record of a contract signing. One row per contract,
2
+ -- written exclusively by the service-role sign_contract() function
3
+ -- (20260807014709) in the same transaction that flips the contract to
4
+ -- Signed — staff get no insert/update/delete grants at all (see the rls
5
+ -- migration).
6
+ --
7
+ -- body_sha256 hashes contract.body as it stood inside the signing
8
+ -- transaction, so the row proves exactly what text was agreed to even
9
+ -- though the contract row itself is also frozen by trigger after signing.
10
+
11
+ create table if not exists "public"."contract_signature" (
12
+ "id" "uuid" default "gen_random_uuid"() not null,
13
+ "company_id" "uuid" not null,
14
+ "contract_id" "uuid" not null,
15
+ "signed_at" timestamp with time zone default "now"() not null,
16
+ -- Name the customer typed on the signing page.
17
+ "signer_name" "text" not null,
18
+ "signer_ip" "text",
19
+ "signer_user_agent" "text",
20
+ "body_sha256" "text" not null,
21
+ -- Path of the drawn-signature PNG in the company storage bucket.
22
+ "signature_storage_path" "text" not null,
23
+ constraint "contract_signature_pkey" primary key ("id"),
24
+ constraint "contract_signature_contract_id_key" unique ("contract_id")
25
+ );
26
+
27
+ alter table "public"."contract_signature" owner to "postgres";
28
+
29
+ alter table only "public"."contract_signature"
30
+ add constraint "contract_signature_company_id_fkey"
31
+ foreign key ("company_id") references "public"."company"("id") on delete cascade;
32
+
33
+ alter table only "public"."contract_signature"
34
+ add constraint "contract_signature_contract_id_fkey"
35
+ foreign key ("contract_id", "company_id")
36
+ references "public"."contract"("id", "company_id") on delete cascade;
37
+
38
+ create index "contract_signature_company_id_idx"
39
+ on "public"."contract_signature" ("company_id");
@@ -0,0 +1,38 @@
1
+ -- Which contract templates a booking item requires. When the online booking
2
+ -- form takes an upfront payment and the cart contains items with rows here,
3
+ -- the customer must sign one contract per distinct required template before
4
+ -- the payment step unlocks.
5
+ --
6
+ -- Composite (fk, company_id) foreign keys keep both sides of the join
7
+ -- tenant-consistent (backing unique keys: item in 20260807014702,
8
+ -- contract_template in 20260807014703).
9
+
10
+ create table if not exists "public"."item_contract_requirement" (
11
+ "created_at" timestamp with time zone default "now"() not null,
12
+ "company_id" "uuid" not null,
13
+ "item_id" "uuid" not null,
14
+ "contract_template_id" "uuid" not null,
15
+ constraint "item_contract_requirement_pkey"
16
+ primary key ("item_id", "contract_template_id")
17
+ );
18
+
19
+ alter table "public"."item_contract_requirement" owner to "postgres";
20
+
21
+ alter table only "public"."item_contract_requirement"
22
+ add constraint "item_contract_requirement_company_id_fkey"
23
+ foreign key ("company_id") references "public"."company"("id") on delete cascade;
24
+
25
+ alter table only "public"."item_contract_requirement"
26
+ add constraint "item_contract_requirement_item_id_fkey"
27
+ foreign key ("item_id", "company_id")
28
+ references "public"."item"("id", "company_id") on delete cascade;
29
+
30
+ alter table only "public"."item_contract_requirement"
31
+ add constraint "item_contract_requirement_contract_template_id_fkey"
32
+ foreign key ("contract_template_id", "company_id")
33
+ references "public"."contract_template"("id", "company_id") on delete cascade;
34
+
35
+ create index "item_contract_requirement_company_id_idx"
36
+ on "public"."item_contract_requirement" ("company_id");
37
+ create index "item_contract_requirement_contract_template_id_idx"
38
+ on "public"."item_contract_requirement" ("contract_template_id");
@@ -0,0 +1,23 @@
1
+ -- Company-level contracts settings. One row per company, created lazily on
2
+ -- first save; an absent row means enabled (default-on opt-out idiom, same
3
+ -- as settings_estimate.proposals_enabled — the dumpster_asset_tracking
4
+ -- entitlement is what actually gates the feature, so is_enabled grants
5
+ -- nothing by itself and turning it off is never blocked).
6
+ --
7
+ -- When is_enabled is false, contract cards are hidden on jobs, invoices,
8
+ -- estimates, clients, and leads, and online booking skips required
9
+ -- contracts.
10
+
11
+ create table if not exists "public"."settings_contract" (
12
+ "company_id" "uuid" not null,
13
+ "created_at" timestamp with time zone default "now"() not null,
14
+ "updated_at" timestamp with time zone,
15
+ "is_enabled" boolean default true not null,
16
+ constraint "settings_contract_pkey" primary key ("company_id")
17
+ );
18
+
19
+ alter table "public"."settings_contract" owner to "postgres";
20
+
21
+ alter table only "public"."settings_contract"
22
+ add constraint "settings_contract_company_id_fkey"
23
+ foreign key ("company_id") references "public"."company"("id") on delete cascade;