@zudello/modelcontextprotocol 1.0.0

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 (634) hide show
  1. package/README.md +667 -0
  2. package/dist/constants/zudello.d.ts +627 -0
  3. package/dist/constants/zudello.d.ts.map +1 -0
  4. package/dist/constants/zudello.js +1467 -0
  5. package/dist/constants/zudello.js.map +1 -0
  6. package/dist/context/auth.d.ts +22 -0
  7. package/dist/context/auth.d.ts.map +1 -0
  8. package/dist/context/auth.js +62 -0
  9. package/dist/context/auth.js.map +1 -0
  10. package/dist/index.d.ts +7 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +126 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/prompts/zudello-system.d.ts +6 -0
  15. package/dist/prompts/zudello-system.d.ts.map +1 -0
  16. package/dist/prompts/zudello-system.js +1821 -0
  17. package/dist/prompts/zudello-system.js.map +1 -0
  18. package/dist/services/zudello/admin.d.ts +93 -0
  19. package/dist/services/zudello/admin.d.ts.map +1 -0
  20. package/dist/services/zudello/admin.js +264 -0
  21. package/dist/services/zudello/admin.js.map +1 -0
  22. package/dist/services/zudello/automation.d.ts +92 -0
  23. package/dist/services/zudello/automation.d.ts.map +1 -0
  24. package/dist/services/zudello/automation.js +365 -0
  25. package/dist/services/zudello/automation.js.map +1 -0
  26. package/dist/services/zudello/connections.d.ts +111 -0
  27. package/dist/services/zudello/connections.d.ts.map +1 -0
  28. package/dist/services/zudello/connections.js +289 -0
  29. package/dist/services/zudello/connections.js.map +1 -0
  30. package/dist/services/zudello/core.d.ts +26 -0
  31. package/dist/services/zudello/core.d.ts.map +1 -0
  32. package/dist/services/zudello/core.js +51 -0
  33. package/dist/services/zudello/core.js.map +1 -0
  34. package/dist/services/zudello/document-context.d.ts +5 -0
  35. package/dist/services/zudello/document-context.d.ts.map +1 -0
  36. package/dist/services/zudello/document-context.js +33 -0
  37. package/dist/services/zudello/document-context.js.map +1 -0
  38. package/dist/services/zudello/documents.d.ts +110 -0
  39. package/dist/services/zudello/documents.d.ts.map +1 -0
  40. package/dist/services/zudello/documents.js +865 -0
  41. package/dist/services/zudello/documents.js.map +1 -0
  42. package/dist/services/zudello/inboxes.d.ts +13 -0
  43. package/dist/services/zudello/inboxes.d.ts.map +1 -0
  44. package/dist/services/zudello/inboxes.js +115 -0
  45. package/dist/services/zudello/inboxes.js.map +1 -0
  46. package/dist/services/zudello/index.d.ts +21 -0
  47. package/dist/services/zudello/index.d.ts.map +1 -0
  48. package/dist/services/zudello/index.js +55 -0
  49. package/dist/services/zudello/index.js.map +1 -0
  50. package/dist/services/zudello/language.d.ts +18 -0
  51. package/dist/services/zudello/language.d.ts.map +1 -0
  52. package/dist/services/zudello/language.js +83 -0
  53. package/dist/services/zudello/language.js.map +1 -0
  54. package/dist/services/zudello/notifications.d.ts +20 -0
  55. package/dist/services/zudello/notifications.d.ts.map +1 -0
  56. package/dist/services/zudello/notifications.js +106 -0
  57. package/dist/services/zudello/notifications.js.map +1 -0
  58. package/dist/services/zudello/organization.d.ts +125 -0
  59. package/dist/services/zudello/organization.d.ts.map +1 -0
  60. package/dist/services/zudello/organization.js +686 -0
  61. package/dist/services/zudello/organization.js.map +1 -0
  62. package/dist/services/zudello/resources.d.ts +83 -0
  63. package/dist/services/zudello/resources.d.ts.map +1 -0
  64. package/dist/services/zudello/resources.js +554 -0
  65. package/dist/services/zudello/resources.js.map +1 -0
  66. package/dist/services/zudello/sentences.d.ts +79 -0
  67. package/dist/services/zudello/sentences.d.ts.map +1 -0
  68. package/dist/services/zudello/sentences.js +357 -0
  69. package/dist/services/zudello/sentences.js.map +1 -0
  70. package/dist/services/zudello/types.d.ts +1126 -0
  71. package/dist/services/zudello/types.d.ts.map +1 -0
  72. package/dist/services/zudello/types.js +8 -0
  73. package/dist/services/zudello/types.js.map +1 -0
  74. package/dist/services/zudello/users.d.ts +66 -0
  75. package/dist/services/zudello/users.d.ts.map +1 -0
  76. package/dist/services/zudello/users.js +187 -0
  77. package/dist/services/zudello/users.js.map +1 -0
  78. package/dist/tools/admin/datasets/create-dataset.d.ts +44 -0
  79. package/dist/tools/admin/datasets/create-dataset.d.ts.map +1 -0
  80. package/dist/tools/admin/datasets/create-dataset.js +58 -0
  81. package/dist/tools/admin/datasets/create-dataset.js.map +1 -0
  82. package/dist/tools/admin/datasets/get-dataset.d.ts +27 -0
  83. package/dist/tools/admin/datasets/get-dataset.d.ts.map +1 -0
  84. package/dist/tools/admin/datasets/get-dataset.js +39 -0
  85. package/dist/tools/admin/datasets/get-dataset.js.map +1 -0
  86. package/dist/tools/admin/datasets/index.d.ts +5 -0
  87. package/dist/tools/admin/datasets/index.d.ts.map +1 -0
  88. package/dist/tools/admin/datasets/index.js +5 -0
  89. package/dist/tools/admin/datasets/index.js.map +1 -0
  90. package/dist/tools/admin/datasets/list-datasets.d.ts +35 -0
  91. package/dist/tools/admin/datasets/list-datasets.d.ts.map +1 -0
  92. package/dist/tools/admin/datasets/list-datasets.js +49 -0
  93. package/dist/tools/admin/datasets/list-datasets.js.map +1 -0
  94. package/dist/tools/admin/datasets/update-dataset.d.ts +44 -0
  95. package/dist/tools/admin/datasets/update-dataset.d.ts.map +1 -0
  96. package/dist/tools/admin/datasets/update-dataset.js +57 -0
  97. package/dist/tools/admin/datasets/update-dataset.js.map +1 -0
  98. package/dist/tools/admin/fields/create-field.d.ts +54 -0
  99. package/dist/tools/admin/fields/create-field.d.ts.map +1 -0
  100. package/dist/tools/admin/fields/create-field.js +68 -0
  101. package/dist/tools/admin/fields/create-field.js.map +1 -0
  102. package/dist/tools/admin/fields/get-field.d.ts +27 -0
  103. package/dist/tools/admin/fields/get-field.d.ts.map +1 -0
  104. package/dist/tools/admin/fields/get-field.js +39 -0
  105. package/dist/tools/admin/fields/get-field.js.map +1 -0
  106. package/dist/tools/admin/fields/index.d.ts +5 -0
  107. package/dist/tools/admin/fields/index.d.ts.map +1 -0
  108. package/dist/tools/admin/fields/index.js +5 -0
  109. package/dist/tools/admin/fields/index.js.map +1 -0
  110. package/dist/tools/admin/fields/list-fields.d.ts +36 -0
  111. package/dist/tools/admin/fields/list-fields.d.ts.map +1 -0
  112. package/dist/tools/admin/fields/list-fields.js +50 -0
  113. package/dist/tools/admin/fields/list-fields.js.map +1 -0
  114. package/dist/tools/admin/fields/update-field.d.ts +44 -0
  115. package/dist/tools/admin/fields/update-field.d.ts.map +1 -0
  116. package/dist/tools/admin/fields/update-field.js +57 -0
  117. package/dist/tools/admin/fields/update-field.js.map +1 -0
  118. package/dist/tools/admin/index.d.ts +4 -0
  119. package/dist/tools/admin/index.d.ts.map +1 -0
  120. package/dist/tools/admin/index.js +7 -0
  121. package/dist/tools/admin/index.js.map +1 -0
  122. package/dist/tools/admin/quick-actions/create-quick-action.d.ts +49 -0
  123. package/dist/tools/admin/quick-actions/create-quick-action.d.ts.map +1 -0
  124. package/dist/tools/admin/quick-actions/create-quick-action.js +63 -0
  125. package/dist/tools/admin/quick-actions/create-quick-action.js.map +1 -0
  126. package/dist/tools/admin/quick-actions/get-quick-action.d.ts +27 -0
  127. package/dist/tools/admin/quick-actions/get-quick-action.d.ts.map +1 -0
  128. package/dist/tools/admin/quick-actions/get-quick-action.js +39 -0
  129. package/dist/tools/admin/quick-actions/get-quick-action.js.map +1 -0
  130. package/dist/tools/admin/quick-actions/index.d.ts +6 -0
  131. package/dist/tools/admin/quick-actions/index.d.ts.map +1 -0
  132. package/dist/tools/admin/quick-actions/index.js +6 -0
  133. package/dist/tools/admin/quick-actions/index.js.map +1 -0
  134. package/dist/tools/admin/quick-actions/list-quick-actions.d.ts +35 -0
  135. package/dist/tools/admin/quick-actions/list-quick-actions.d.ts.map +1 -0
  136. package/dist/tools/admin/quick-actions/list-quick-actions.js +49 -0
  137. package/dist/tools/admin/quick-actions/list-quick-actions.js.map +1 -0
  138. package/dist/tools/admin/quick-actions/trigger-quick-action.d.ts +41 -0
  139. package/dist/tools/admin/quick-actions/trigger-quick-action.d.ts.map +1 -0
  140. package/dist/tools/admin/quick-actions/trigger-quick-action.js +53 -0
  141. package/dist/tools/admin/quick-actions/trigger-quick-action.js.map +1 -0
  142. package/dist/tools/admin/quick-actions/update-quick-action.d.ts +49 -0
  143. package/dist/tools/admin/quick-actions/update-quick-action.d.ts.map +1 -0
  144. package/dist/tools/admin/quick-actions/update-quick-action.js +62 -0
  145. package/dist/tools/admin/quick-actions/update-quick-action.js.map +1 -0
  146. package/dist/tools/approvals/get-approval-flows.d.ts +27 -0
  147. package/dist/tools/approvals/get-approval-flows.d.ts.map +1 -0
  148. package/dist/tools/approvals/get-approval-flows.js +35 -0
  149. package/dist/tools/approvals/get-approval-flows.js.map +1 -0
  150. package/dist/tools/approvals/index.d.ts +2 -0
  151. package/dist/tools/approvals/index.d.ts.map +1 -0
  152. package/dist/tools/approvals/index.js +2 -0
  153. package/dist/tools/approvals/index.js.map +1 -0
  154. package/dist/tools/automation/get-automation-logs.d.ts +59 -0
  155. package/dist/tools/automation/get-automation-logs.d.ts.map +1 -0
  156. package/dist/tools/automation/get-automation-logs.js +75 -0
  157. package/dist/tools/automation/get-automation-logs.js.map +1 -0
  158. package/dist/tools/automation/get-run-logs-content.d.ts +42 -0
  159. package/dist/tools/automation/get-run-logs-content.d.ts.map +1 -0
  160. package/dist/tools/automation/get-run-logs-content.js +27 -0
  161. package/dist/tools/automation/get-run-logs-content.js.map +1 -0
  162. package/dist/tools/automation/get-run-logs.d.ts +37 -0
  163. package/dist/tools/automation/get-run-logs.d.ts.map +1 -0
  164. package/dist/tools/automation/get-run-logs.js +27 -0
  165. package/dist/tools/automation/get-run-logs.js.map +1 -0
  166. package/dist/tools/automation/get-script.d.ts +33 -0
  167. package/dist/tools/automation/get-script.d.ts.map +1 -0
  168. package/dist/tools/automation/get-script.js +24 -0
  169. package/dist/tools/automation/get-script.js.map +1 -0
  170. package/dist/tools/automation/get-trigger.d.ts +27 -0
  171. package/dist/tools/automation/get-trigger.d.ts.map +1 -0
  172. package/dist/tools/automation/get-trigger.js +24 -0
  173. package/dist/tools/automation/get-trigger.js.map +1 -0
  174. package/dist/tools/automation/index.d.ts +16 -0
  175. package/dist/tools/automation/index.d.ts.map +1 -0
  176. package/dist/tools/automation/index.js +16 -0
  177. package/dist/tools/automation/index.js.map +1 -0
  178. package/dist/tools/automation/list-global-integrations.d.ts +23 -0
  179. package/dist/tools/automation/list-global-integrations.d.ts.map +1 -0
  180. package/dist/tools/automation/list-global-integrations.js +41 -0
  181. package/dist/tools/automation/list-global-integrations.js.map +1 -0
  182. package/dist/tools/automation/list-global-scripts-for-integration.d.ts +38 -0
  183. package/dist/tools/automation/list-global-scripts-for-integration.d.ts.map +1 -0
  184. package/dist/tools/automation/list-global-scripts-for-integration.js +50 -0
  185. package/dist/tools/automation/list-global-scripts-for-integration.js.map +1 -0
  186. package/dist/tools/automation/list-scripts.d.ts +26 -0
  187. package/dist/tools/automation/list-scripts.d.ts.map +1 -0
  188. package/dist/tools/automation/list-scripts.js +23 -0
  189. package/dist/tools/automation/list-scripts.js.map +1 -0
  190. package/dist/tools/automation/list-triggers.d.ts +23 -0
  191. package/dist/tools/automation/list-triggers.d.ts.map +1 -0
  192. package/dist/tools/automation/list-triggers.js +38 -0
  193. package/dist/tools/automation/list-triggers.js.map +1 -0
  194. package/dist/tools/automation/search-runs.d.ts +43 -0
  195. package/dist/tools/automation/search-runs.d.ts.map +1 -0
  196. package/dist/tools/automation/search-runs.js +32 -0
  197. package/dist/tools/automation/search-runs.js.map +1 -0
  198. package/dist/tools/bulk/approve-milestones.d.ts +59 -0
  199. package/dist/tools/bulk/approve-milestones.d.ts.map +1 -0
  200. package/dist/tools/bulk/approve-milestones.js +47 -0
  201. package/dist/tools/bulk/approve-milestones.js.map +1 -0
  202. package/dist/tools/bulk/index.d.ts +3 -0
  203. package/dist/tools/bulk/index.d.ts.map +1 -0
  204. package/dist/tools/bulk/index.js +3 -0
  205. package/dist/tools/bulk/index.js.map +1 -0
  206. package/dist/tools/bulk/send-reminders.d.ts +32 -0
  207. package/dist/tools/bulk/send-reminders.d.ts.map +1 -0
  208. package/dist/tools/bulk/send-reminders.js +37 -0
  209. package/dist/tools/bulk/send-reminders.js.map +1 -0
  210. package/dist/tools/config/create-config.d.ts +43 -0
  211. package/dist/tools/config/create-config.d.ts.map +1 -0
  212. package/dist/tools/config/create-config.js +61 -0
  213. package/dist/tools/config/create-config.js.map +1 -0
  214. package/dist/tools/config/get-config.d.ts +40 -0
  215. package/dist/tools/config/get-config.d.ts.map +1 -0
  216. package/dist/tools/config/get-config.js +52 -0
  217. package/dist/tools/config/get-config.js.map +1 -0
  218. package/dist/tools/config/index.d.ts +11 -0
  219. package/dist/tools/config/index.d.ts.map +1 -0
  220. package/dist/tools/config/index.js +11 -0
  221. package/dist/tools/config/index.js.map +1 -0
  222. package/dist/tools/config/list-configs.d.ts +48 -0
  223. package/dist/tools/config/list-configs.d.ts.map +1 -0
  224. package/dist/tools/config/list-configs.js +74 -0
  225. package/dist/tools/config/list-configs.js.map +1 -0
  226. package/dist/tools/config/update-config.d.ts +48 -0
  227. package/dist/tools/config/update-config.d.ts.map +1 -0
  228. package/dist/tools/config/update-config.js +64 -0
  229. package/dist/tools/config/update-config.js.map +1 -0
  230. package/dist/tools/config/update-configs-order.d.ts +39 -0
  231. package/dist/tools/config/update-configs-order.d.ts.map +1 -0
  232. package/dist/tools/config/update-configs-order.js +58 -0
  233. package/dist/tools/config/update-configs-order.js.map +1 -0
  234. package/dist/tools/connections/check-connection-status.d.ts +60 -0
  235. package/dist/tools/connections/check-connection-status.d.ts.map +1 -0
  236. package/dist/tools/connections/check-connection-status.js +94 -0
  237. package/dist/tools/connections/check-connection-status.js.map +1 -0
  238. package/dist/tools/connections/get-connection-template.d.ts +44 -0
  239. package/dist/tools/connections/get-connection-template.d.ts.map +1 -0
  240. package/dist/tools/connections/get-connection-template.js +55 -0
  241. package/dist/tools/connections/get-connection-template.js.map +1 -0
  242. package/dist/tools/connections/index.d.ts +11 -0
  243. package/dist/tools/connections/index.d.ts.map +1 -0
  244. package/dist/tools/connections/index.js +11 -0
  245. package/dist/tools/connections/index.js.map +1 -0
  246. package/dist/tools/connections/list-available-integrations.d.ts +29 -0
  247. package/dist/tools/connections/list-available-integrations.d.ts.map +1 -0
  248. package/dist/tools/connections/list-available-integrations.js +46 -0
  249. package/dist/tools/connections/list-available-integrations.js.map +1 -0
  250. package/dist/tools/connections/list-connections.d.ts +29 -0
  251. package/dist/tools/connections/list-connections.d.ts.map +1 -0
  252. package/dist/tools/connections/list-connections.js +48 -0
  253. package/dist/tools/connections/list-connections.js.map +1 -0
  254. package/dist/tools/connections/reconnect.d.ts +40 -0
  255. package/dist/tools/connections/reconnect.d.ts.map +1 -0
  256. package/dist/tools/connections/reconnect.js +67 -0
  257. package/dist/tools/connections/reconnect.js.map +1 -0
  258. package/dist/tools/control/index.d.ts +7 -0
  259. package/dist/tools/control/index.d.ts.map +1 -0
  260. package/dist/tools/control/index.js +7 -0
  261. package/dist/tools/control/index.js.map +1 -0
  262. package/dist/tools/control/initiate-sync.d.ts +38 -0
  263. package/dist/tools/control/initiate-sync.d.ts.map +1 -0
  264. package/dist/tools/control/initiate-sync.js +47 -0
  265. package/dist/tools/control/initiate-sync.js.map +1 -0
  266. package/dist/tools/control/set-trigger-enabled.d.ts +36 -0
  267. package/dist/tools/control/set-trigger-enabled.d.ts.map +1 -0
  268. package/dist/tools/control/set-trigger-enabled.js +46 -0
  269. package/dist/tools/control/set-trigger-enabled.js.map +1 -0
  270. package/dist/tools/core/fetch.d.ts +8 -0
  271. package/dist/tools/core/fetch.d.ts.map +1 -0
  272. package/dist/tools/core/fetch.js +48 -0
  273. package/dist/tools/core/fetch.js.map +1 -0
  274. package/dist/tools/core/index.d.ts +4 -0
  275. package/dist/tools/core/index.d.ts.map +1 -0
  276. package/dist/tools/core/index.js +4 -0
  277. package/dist/tools/core/index.js.map +1 -0
  278. package/dist/tools/core/push-message.d.ts +85 -0
  279. package/dist/tools/core/push-message.d.ts.map +1 -0
  280. package/dist/tools/core/push-message.js +116 -0
  281. package/dist/tools/core/push-message.js.map +1 -0
  282. package/dist/tools/core/search.d.ts +8 -0
  283. package/dist/tools/core/search.d.ts.map +1 -0
  284. package/dist/tools/core/search.js +38 -0
  285. package/dist/tools/core/search.js.map +1 -0
  286. package/dist/tools/document-context/check-contract-pricing.d.ts +30 -0
  287. package/dist/tools/document-context/check-contract-pricing.d.ts.map +1 -0
  288. package/dist/tools/document-context/check-contract-pricing.js +18 -0
  289. package/dist/tools/document-context/check-contract-pricing.js.map +1 -0
  290. package/dist/tools/document-context/check-document-budgets.d.ts +36 -0
  291. package/dist/tools/document-context/check-document-budgets.d.ts.map +1 -0
  292. package/dist/tools/document-context/check-document-budgets.js +18 -0
  293. package/dist/tools/document-context/check-document-budgets.js.map +1 -0
  294. package/dist/tools/document-context/index.d.ts +3 -0
  295. package/dist/tools/document-context/index.d.ts.map +1 -0
  296. package/dist/tools/document-context/index.js +3 -0
  297. package/dist/tools/document-context/index.js.map +1 -0
  298. package/dist/tools/documents/document-types/create-document-type.d.ts +19 -0
  299. package/dist/tools/documents/document-types/create-document-type.d.ts.map +1 -0
  300. package/dist/tools/documents/document-types/create-document-type.js +18 -0
  301. package/dist/tools/documents/document-types/create-document-type.js.map +1 -0
  302. package/dist/tools/documents/document-types/get-document-type.d.ts +24 -0
  303. package/dist/tools/documents/document-types/get-document-type.d.ts.map +1 -0
  304. package/dist/tools/documents/document-types/get-document-type.js +18 -0
  305. package/dist/tools/documents/document-types/get-document-type.js.map +1 -0
  306. package/dist/tools/documents/document-types/get-merged-form-metadata.d.ts +24 -0
  307. package/dist/tools/documents/document-types/get-merged-form-metadata.d.ts.map +1 -0
  308. package/dist/tools/documents/document-types/get-merged-form-metadata.js +18 -0
  309. package/dist/tools/documents/document-types/get-merged-form-metadata.js.map +1 -0
  310. package/dist/tools/documents/document-types/index.d.ts +6 -0
  311. package/dist/tools/documents/document-types/index.d.ts.map +1 -0
  312. package/dist/tools/documents/document-types/index.js +6 -0
  313. package/dist/tools/documents/document-types/index.js.map +1 -0
  314. package/dist/tools/documents/document-types/list-document-types.d.ts +21 -0
  315. package/dist/tools/documents/document-types/list-document-types.d.ts.map +1 -0
  316. package/dist/tools/documents/document-types/list-document-types.js +18 -0
  317. package/dist/tools/documents/document-types/list-document-types.js.map +1 -0
  318. package/dist/tools/documents/document-types/update-document-type.d.ts +24 -0
  319. package/dist/tools/documents/document-types/update-document-type.d.ts.map +1 -0
  320. package/dist/tools/documents/document-types/update-document-type.js +18 -0
  321. package/dist/tools/documents/document-types/update-document-type.js.map +1 -0
  322. package/dist/tools/documents/export-templates/create-export-template.d.ts +19 -0
  323. package/dist/tools/documents/export-templates/create-export-template.d.ts.map +1 -0
  324. package/dist/tools/documents/export-templates/create-export-template.js +18 -0
  325. package/dist/tools/documents/export-templates/create-export-template.js.map +1 -0
  326. package/dist/tools/documents/export-templates/get-export-download-url.d.ts +26 -0
  327. package/dist/tools/documents/export-templates/get-export-download-url.d.ts.map +1 -0
  328. package/dist/tools/documents/export-templates/get-export-download-url.js +18 -0
  329. package/dist/tools/documents/export-templates/get-export-download-url.js.map +1 -0
  330. package/dist/tools/documents/export-templates/get-export-template.d.ts +27 -0
  331. package/dist/tools/documents/export-templates/get-export-template.d.ts.map +1 -0
  332. package/dist/tools/documents/export-templates/get-export-template.js +33 -0
  333. package/dist/tools/documents/export-templates/get-export-template.js.map +1 -0
  334. package/dist/tools/documents/export-templates/index.d.ts +8 -0
  335. package/dist/tools/documents/export-templates/index.d.ts.map +1 -0
  336. package/dist/tools/documents/export-templates/index.js +8 -0
  337. package/dist/tools/documents/export-templates/index.js.map +1 -0
  338. package/dist/tools/documents/export-templates/list-export-templates.d.ts +21 -0
  339. package/dist/tools/documents/export-templates/list-export-templates.d.ts.map +1 -0
  340. package/dist/tools/documents/export-templates/list-export-templates.js +31 -0
  341. package/dist/tools/documents/export-templates/list-export-templates.js.map +1 -0
  342. package/dist/tools/documents/export-templates/list-exports.d.ts +21 -0
  343. package/dist/tools/documents/export-templates/list-exports.d.ts.map +1 -0
  344. package/dist/tools/documents/export-templates/list-exports.js +18 -0
  345. package/dist/tools/documents/export-templates/list-exports.js.map +1 -0
  346. package/dist/tools/documents/export-templates/run-export.d.ts +26 -0
  347. package/dist/tools/documents/export-templates/run-export.d.ts.map +1 -0
  348. package/dist/tools/documents/export-templates/run-export.js +18 -0
  349. package/dist/tools/documents/export-templates/run-export.js.map +1 -0
  350. package/dist/tools/documents/export-templates/update-export-template.d.ts +24 -0
  351. package/dist/tools/documents/export-templates/update-export-template.d.ts.map +1 -0
  352. package/dist/tools/documents/export-templates/update-export-template.js +18 -0
  353. package/dist/tools/documents/export-templates/update-export-template.js.map +1 -0
  354. package/dist/tools/documents/index.d.ts +3 -0
  355. package/dist/tools/documents/index.d.ts.map +1 -0
  356. package/dist/tools/documents/index.js +3 -0
  357. package/dist/tools/documents/index.js.map +1 -0
  358. package/dist/tools/exceptions/budget/create-budget-exception-reason.d.ts +42 -0
  359. package/dist/tools/exceptions/budget/create-budget-exception-reason.d.ts.map +1 -0
  360. package/dist/tools/exceptions/budget/create-budget-exception-reason.js +82 -0
  361. package/dist/tools/exceptions/budget/create-budget-exception-reason.js.map +1 -0
  362. package/dist/tools/exceptions/budget/index.d.ts +4 -0
  363. package/dist/tools/exceptions/budget/index.d.ts.map +1 -0
  364. package/dist/tools/exceptions/budget/index.js +4 -0
  365. package/dist/tools/exceptions/budget/index.js.map +1 -0
  366. package/dist/tools/exceptions/budget/list-budget-exception-reasons.d.ts +29 -0
  367. package/dist/tools/exceptions/budget/list-budget-exception-reasons.d.ts.map +1 -0
  368. package/dist/tools/exceptions/budget/list-budget-exception-reasons.js +60 -0
  369. package/dist/tools/exceptions/budget/list-budget-exception-reasons.js.map +1 -0
  370. package/dist/tools/exceptions/budget/update-budget-exception-reason.d.ts +47 -0
  371. package/dist/tools/exceptions/budget/update-budget-exception-reason.d.ts.map +1 -0
  372. package/dist/tools/exceptions/budget/update-budget-exception-reason.js +77 -0
  373. package/dist/tools/exceptions/budget/update-budget-exception-reason.js.map +1 -0
  374. package/dist/tools/exceptions/contract/create-contract-exception-reason.d.ts +42 -0
  375. package/dist/tools/exceptions/contract/create-contract-exception-reason.d.ts.map +1 -0
  376. package/dist/tools/exceptions/contract/create-contract-exception-reason.js +82 -0
  377. package/dist/tools/exceptions/contract/create-contract-exception-reason.js.map +1 -0
  378. package/dist/tools/exceptions/contract/index.d.ts +4 -0
  379. package/dist/tools/exceptions/contract/index.d.ts.map +1 -0
  380. package/dist/tools/exceptions/contract/index.js +4 -0
  381. package/dist/tools/exceptions/contract/index.js.map +1 -0
  382. package/dist/tools/exceptions/contract/list-contract-exception-reasons.d.ts +29 -0
  383. package/dist/tools/exceptions/contract/list-contract-exception-reasons.d.ts.map +1 -0
  384. package/dist/tools/exceptions/contract/list-contract-exception-reasons.js +60 -0
  385. package/dist/tools/exceptions/contract/list-contract-exception-reasons.js.map +1 -0
  386. package/dist/tools/exceptions/contract/update-contract-exception-reason.d.ts +47 -0
  387. package/dist/tools/exceptions/contract/update-contract-exception-reason.d.ts.map +1 -0
  388. package/dist/tools/exceptions/contract/update-contract-exception-reason.js +77 -0
  389. package/dist/tools/exceptions/contract/update-contract-exception-reason.js.map +1 -0
  390. package/dist/tools/exceptions/index.d.ts +3 -0
  391. package/dist/tools/exceptions/index.d.ts.map +1 -0
  392. package/dist/tools/exceptions/index.js +3 -0
  393. package/dist/tools/exceptions/index.js.map +1 -0
  394. package/dist/tools/history/get-history.d.ts +34 -0
  395. package/dist/tools/history/get-history.d.ts.map +1 -0
  396. package/dist/tools/history/get-history.js +29 -0
  397. package/dist/tools/history/get-history.js.map +1 -0
  398. package/dist/tools/history/index.d.ts +7 -0
  399. package/dist/tools/history/index.d.ts.map +1 -0
  400. package/dist/tools/history/index.js +7 -0
  401. package/dist/tools/history/index.js.map +1 -0
  402. package/dist/tools/inboxes/create-inbox-template.d.ts +23 -0
  403. package/dist/tools/inboxes/create-inbox-template.d.ts.map +1 -0
  404. package/dist/tools/inboxes/create-inbox-template.js +26 -0
  405. package/dist/tools/inboxes/create-inbox-template.js.map +1 -0
  406. package/dist/tools/inboxes/create-inbox.d.ts +26 -0
  407. package/dist/tools/inboxes/create-inbox.d.ts.map +1 -0
  408. package/dist/tools/inboxes/create-inbox.js +26 -0
  409. package/dist/tools/inboxes/create-inbox.js.map +1 -0
  410. package/dist/tools/inboxes/fetch-inbox.d.ts +24 -0
  411. package/dist/tools/inboxes/fetch-inbox.d.ts.map +1 -0
  412. package/dist/tools/inboxes/fetch-inbox.js +26 -0
  413. package/dist/tools/inboxes/fetch-inbox.js.map +1 -0
  414. package/dist/tools/inboxes/get-inbound-domain.d.ts +21 -0
  415. package/dist/tools/inboxes/get-inbound-domain.d.ts.map +1 -0
  416. package/dist/tools/inboxes/get-inbound-domain.js +26 -0
  417. package/dist/tools/inboxes/get-inbound-domain.js.map +1 -0
  418. package/dist/tools/inboxes/index.d.ts +9 -0
  419. package/dist/tools/inboxes/index.d.ts.map +1 -0
  420. package/dist/tools/inboxes/index.js +9 -0
  421. package/dist/tools/inboxes/index.js.map +1 -0
  422. package/dist/tools/inboxes/list-inbox-templates.d.ts +21 -0
  423. package/dist/tools/inboxes/list-inbox-templates.d.ts.map +1 -0
  424. package/dist/tools/inboxes/list-inbox-templates.js +26 -0
  425. package/dist/tools/inboxes/list-inbox-templates.js.map +1 -0
  426. package/dist/tools/inboxes/list-inboxes.d.ts +21 -0
  427. package/dist/tools/inboxes/list-inboxes.d.ts.map +1 -0
  428. package/dist/tools/inboxes/list-inboxes.js +26 -0
  429. package/dist/tools/inboxes/list-inboxes.js.map +1 -0
  430. package/dist/tools/inboxes/update-inbox-template.d.ts +23 -0
  431. package/dist/tools/inboxes/update-inbox-template.d.ts.map +1 -0
  432. package/dist/tools/inboxes/update-inbox-template.js +26 -0
  433. package/dist/tools/inboxes/update-inbox-template.js.map +1 -0
  434. package/dist/tools/inboxes/update-inbox.d.ts +23 -0
  435. package/dist/tools/inboxes/update-inbox.d.ts.map +1 -0
  436. package/dist/tools/inboxes/update-inbox.js +26 -0
  437. package/dist/tools/inboxes/update-inbox.js.map +1 -0
  438. package/dist/tools/index.d.ts +18 -0
  439. package/dist/tools/index.d.ts.map +1 -0
  440. package/dist/tools/index.js +171 -0
  441. package/dist/tools/index.js.map +1 -0
  442. package/dist/tools/language/get-language-placeholders.d.ts +27 -0
  443. package/dist/tools/language/get-language-placeholders.d.ts.map +1 -0
  444. package/dist/tools/language/get-language-placeholders.js +40 -0
  445. package/dist/tools/language/get-language-placeholders.js.map +1 -0
  446. package/dist/tools/language/index.d.ts +3 -0
  447. package/dist/tools/language/index.d.ts.map +1 -0
  448. package/dist/tools/language/index.js +3 -0
  449. package/dist/tools/language/index.js.map +1 -0
  450. package/dist/tools/language/update-language-placeholders.d.ts +39 -0
  451. package/dist/tools/language/update-language-placeholders.d.ts.map +1 -0
  452. package/dist/tools/language/update-language-placeholders.js +56 -0
  453. package/dist/tools/language/update-language-placeholders.js.map +1 -0
  454. package/dist/tools/models/get-field-metadata.d.ts +49 -0
  455. package/dist/tools/models/get-field-metadata.d.ts.map +1 -0
  456. package/dist/tools/models/get-field-metadata.js +77 -0
  457. package/dist/tools/models/get-field-metadata.js.map +1 -0
  458. package/dist/tools/models/get-model-metadata.d.ts +32 -0
  459. package/dist/tools/models/get-model-metadata.d.ts.map +1 -0
  460. package/dist/tools/models/get-model-metadata.js +46 -0
  461. package/dist/tools/models/get-model-metadata.js.map +1 -0
  462. package/dist/tools/models/get-model-relations.d.ts +32 -0
  463. package/dist/tools/models/get-model-relations.d.ts.map +1 -0
  464. package/dist/tools/models/get-model-relations.js +47 -0
  465. package/dist/tools/models/get-model-relations.js.map +1 -0
  466. package/dist/tools/models/get-model-schema.d.ts +32 -0
  467. package/dist/tools/models/get-model-schema.d.ts.map +1 -0
  468. package/dist/tools/models/get-model-schema.js +46 -0
  469. package/dist/tools/models/get-model-schema.js.map +1 -0
  470. package/dist/tools/models/index.d.ts +11 -0
  471. package/dist/tools/models/index.d.ts.map +1 -0
  472. package/dist/tools/models/index.js +11 -0
  473. package/dist/tools/models/index.js.map +1 -0
  474. package/dist/tools/models/list-models.d.ts +24 -0
  475. package/dist/tools/models/list-models.d.ts.map +1 -0
  476. package/dist/tools/models/list-models.js +45 -0
  477. package/dist/tools/models/list-models.js.map +1 -0
  478. package/dist/tools/notifications/get-notification-preferences.d.ts +41 -0
  479. package/dist/tools/notifications/get-notification-preferences.d.ts.map +1 -0
  480. package/dist/tools/notifications/get-notification-preferences.js +72 -0
  481. package/dist/tools/notifications/get-notification-preferences.js.map +1 -0
  482. package/dist/tools/notifications/index.d.ts +4 -0
  483. package/dist/tools/notifications/index.d.ts.map +1 -0
  484. package/dist/tools/notifications/index.js +4 -0
  485. package/dist/tools/notifications/index.js.map +1 -0
  486. package/dist/tools/notifications/list-notification-types.d.ts +23 -0
  487. package/dist/tools/notifications/list-notification-types.d.ts.map +1 -0
  488. package/dist/tools/notifications/list-notification-types.js +56 -0
  489. package/dist/tools/notifications/list-notification-types.js.map +1 -0
  490. package/dist/tools/notifications/update-notification-preferences.d.ts +65 -0
  491. package/dist/tools/notifications/update-notification-preferences.d.ts.map +1 -0
  492. package/dist/tools/notifications/update-notification-preferences.js +84 -0
  493. package/dist/tools/notifications/update-notification-preferences.js.map +1 -0
  494. package/dist/tools/org-admin/index.d.ts +3 -0
  495. package/dist/tools/org-admin/index.d.ts.map +1 -0
  496. package/dist/tools/org-admin/index.js +3 -0
  497. package/dist/tools/org-admin/index.js.map +1 -0
  498. package/dist/tools/org-admin/teams/fetch-org-team.d.ts +24 -0
  499. package/dist/tools/org-admin/teams/fetch-org-team.d.ts.map +1 -0
  500. package/dist/tools/org-admin/teams/fetch-org-team.js +18 -0
  501. package/dist/tools/org-admin/teams/fetch-org-team.js.map +1 -0
  502. package/dist/tools/org-admin/teams/index.d.ts +4 -0
  503. package/dist/tools/org-admin/teams/index.d.ts.map +1 -0
  504. package/dist/tools/org-admin/teams/index.js +4 -0
  505. package/dist/tools/org-admin/teams/index.js.map +1 -0
  506. package/dist/tools/org-admin/teams/list-org-teams.d.ts +21 -0
  507. package/dist/tools/org-admin/teams/list-org-teams.d.ts.map +1 -0
  508. package/dist/tools/org-admin/teams/list-org-teams.js +18 -0
  509. package/dist/tools/org-admin/teams/list-org-teams.js.map +1 -0
  510. package/dist/tools/org-admin/teams/update-org-team.d.ts +24 -0
  511. package/dist/tools/org-admin/teams/update-org-team.d.ts.map +1 -0
  512. package/dist/tools/org-admin/teams/update-org-team.js +18 -0
  513. package/dist/tools/org-admin/teams/update-org-team.js.map +1 -0
  514. package/dist/tools/org-admin/users/assign-user-to-team.d.ts +27 -0
  515. package/dist/tools/org-admin/users/assign-user-to-team.d.ts.map +1 -0
  516. package/dist/tools/org-admin/users/assign-user-to-team.js +22 -0
  517. package/dist/tools/org-admin/users/assign-user-to-team.js.map +1 -0
  518. package/dist/tools/org-admin/users/create-org-user.d.ts +19 -0
  519. package/dist/tools/org-admin/users/create-org-user.d.ts.map +1 -0
  520. package/dist/tools/org-admin/users/create-org-user.js +18 -0
  521. package/dist/tools/org-admin/users/create-org-user.js.map +1 -0
  522. package/dist/tools/org-admin/users/fetch-org-user.d.ts +24 -0
  523. package/dist/tools/org-admin/users/fetch-org-user.d.ts.map +1 -0
  524. package/dist/tools/org-admin/users/fetch-org-user.js +18 -0
  525. package/dist/tools/org-admin/users/fetch-org-user.js.map +1 -0
  526. package/dist/tools/org-admin/users/index.d.ts +7 -0
  527. package/dist/tools/org-admin/users/index.d.ts.map +1 -0
  528. package/dist/tools/org-admin/users/index.js +7 -0
  529. package/dist/tools/org-admin/users/index.js.map +1 -0
  530. package/dist/tools/org-admin/users/list-org-user-groups.d.ts +21 -0
  531. package/dist/tools/org-admin/users/list-org-user-groups.d.ts.map +1 -0
  532. package/dist/tools/org-admin/users/list-org-user-groups.js +18 -0
  533. package/dist/tools/org-admin/users/list-org-user-groups.js.map +1 -0
  534. package/dist/tools/org-admin/users/list-org-users.d.ts +21 -0
  535. package/dist/tools/org-admin/users/list-org-users.d.ts.map +1 -0
  536. package/dist/tools/org-admin/users/list-org-users.js +18 -0
  537. package/dist/tools/org-admin/users/list-org-users.js.map +1 -0
  538. package/dist/tools/org-admin/users/update-org-user.d.ts +24 -0
  539. package/dist/tools/org-admin/users/update-org-user.d.ts.map +1 -0
  540. package/dist/tools/org-admin/users/update-org-user.js +18 -0
  541. package/dist/tools/org-admin/users/update-org-user.js.map +1 -0
  542. package/dist/tools/resources/get-resources.d.ts +46 -0
  543. package/dist/tools/resources/get-resources.d.ts.map +1 -0
  544. package/dist/tools/resources/get-resources.js +56 -0
  545. package/dist/tools/resources/get-resources.js.map +1 -0
  546. package/dist/tools/resources/index.d.ts +8 -0
  547. package/dist/tools/resources/index.d.ts.map +1 -0
  548. package/dist/tools/resources/index.js +8 -0
  549. package/dist/tools/resources/index.js.map +1 -0
  550. package/dist/tools/resources/update-or-create-resources.d.ts +48 -0
  551. package/dist/tools/resources/update-or-create-resources.d.ts.map +1 -0
  552. package/dist/tools/resources/update-or-create-resources.js +64 -0
  553. package/dist/tools/resources/update-or-create-resources.js.map +1 -0
  554. package/dist/tools/sentences/create-sentence.d.ts +39 -0
  555. package/dist/tools/sentences/create-sentence.d.ts.map +1 -0
  556. package/dist/tools/sentences/create-sentence.js +33 -0
  557. package/dist/tools/sentences/create-sentence.js.map +1 -0
  558. package/dist/tools/sentences/get-sentence-template.d.ts +32 -0
  559. package/dist/tools/sentences/get-sentence-template.d.ts.map +1 -0
  560. package/dist/tools/sentences/get-sentence-template.js +27 -0
  561. package/dist/tools/sentences/get-sentence-template.js.map +1 -0
  562. package/dist/tools/sentences/get-sentence.d.ts +32 -0
  563. package/dist/tools/sentences/get-sentence.d.ts.map +1 -0
  564. package/dist/tools/sentences/get-sentence.js +27 -0
  565. package/dist/tools/sentences/get-sentence.js.map +1 -0
  566. package/dist/tools/sentences/index.d.ts +14 -0
  567. package/dist/tools/sentences/index.d.ts.map +1 -0
  568. package/dist/tools/sentences/index.js +14 -0
  569. package/dist/tools/sentences/index.js.map +1 -0
  570. package/dist/tools/sentences/list-sentence-resources.d.ts +46 -0
  571. package/dist/tools/sentences/list-sentence-resources.d.ts.map +1 -0
  572. package/dist/tools/sentences/list-sentence-resources.js +31 -0
  573. package/dist/tools/sentences/list-sentence-resources.js.map +1 -0
  574. package/dist/tools/sentences/list-sentence-templates.d.ts +34 -0
  575. package/dist/tools/sentences/list-sentence-templates.d.ts.map +1 -0
  576. package/dist/tools/sentences/list-sentence-templates.js +27 -0
  577. package/dist/tools/sentences/list-sentence-templates.js.map +1 -0
  578. package/dist/tools/sentences/list-sentences.d.ts +43 -0
  579. package/dist/tools/sentences/list-sentences.d.ts.map +1 -0
  580. package/dist/tools/sentences/list-sentences.js +35 -0
  581. package/dist/tools/sentences/list-sentences.js.map +1 -0
  582. package/dist/tools/sentences/update-sentence.d.ts +34 -0
  583. package/dist/tools/sentences/update-sentence.d.ts.map +1 -0
  584. package/dist/tools/sentences/update-sentence.js +31 -0
  585. package/dist/tools/sentences/update-sentence.js.map +1 -0
  586. package/dist/tools/sentences/update-sentences-order.d.ts +33 -0
  587. package/dist/tools/sentences/update-sentences-order.d.ts.map +1 -0
  588. package/dist/tools/sentences/update-sentences-order.js +33 -0
  589. package/dist/tools/sentences/update-sentences-order.js.map +1 -0
  590. package/dist/tools/statuses/create-status.d.ts +75 -0
  591. package/dist/tools/statuses/create-status.d.ts.map +1 -0
  592. package/dist/tools/statuses/create-status.js +115 -0
  593. package/dist/tools/statuses/create-status.js.map +1 -0
  594. package/dist/tools/statuses/get-status.d.ts +27 -0
  595. package/dist/tools/statuses/get-status.d.ts.map +1 -0
  596. package/dist/tools/statuses/get-status.js +37 -0
  597. package/dist/tools/statuses/get-status.js.map +1 -0
  598. package/dist/tools/statuses/index.d.ts +6 -0
  599. package/dist/tools/statuses/index.d.ts.map +1 -0
  600. package/dist/tools/statuses/index.js +6 -0
  601. package/dist/tools/statuses/index.js.map +1 -0
  602. package/dist/tools/statuses/list-statuses.d.ts +41 -0
  603. package/dist/tools/statuses/list-statuses.d.ts.map +1 -0
  604. package/dist/tools/statuses/list-statuses.js +58 -0
  605. package/dist/tools/statuses/list-statuses.js.map +1 -0
  606. package/dist/tools/statuses/reorder-statuses.d.ts +44 -0
  607. package/dist/tools/statuses/reorder-statuses.d.ts.map +1 -0
  608. package/dist/tools/statuses/reorder-statuses.js +55 -0
  609. package/dist/tools/statuses/reorder-statuses.js.map +1 -0
  610. package/dist/tools/statuses/update-status.d.ts +80 -0
  611. package/dist/tools/statuses/update-status.d.ts.map +1 -0
  612. package/dist/tools/statuses/update-status.js +79 -0
  613. package/dist/tools/statuses/update-status.js.map +1 -0
  614. package/dist/tools/users/get-user-groups.d.ts +38 -0
  615. package/dist/tools/users/get-user-groups.d.ts.map +1 -0
  616. package/dist/tools/users/get-user-groups.js +33 -0
  617. package/dist/tools/users/get-user-groups.js.map +1 -0
  618. package/dist/tools/users/get-users.d.ts +66 -0
  619. package/dist/tools/users/get-users.d.ts.map +1 -0
  620. package/dist/tools/users/get-users.js +46 -0
  621. package/dist/tools/users/get-users.js.map +1 -0
  622. package/dist/tools/users/index.d.ts +3 -0
  623. package/dist/tools/users/index.d.ts.map +1 -0
  624. package/dist/tools/users/index.js +3 -0
  625. package/dist/tools/users/index.js.map +1 -0
  626. package/dist/types/index.d.ts +49 -0
  627. package/dist/types/index.d.ts.map +1 -0
  628. package/dist/types/index.js +5 -0
  629. package/dist/types/index.js.map +1 -0
  630. package/dist/utils/logger.d.ts +10 -0
  631. package/dist/utils/logger.d.ts.map +1 -0
  632. package/dist/utils/logger.js +46 -0
  633. package/dist/utils/logger.js.map +1 -0
  634. package/package.json +64 -0
@@ -0,0 +1,1467 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Comprehensive Zudello model, module, and submodule definitions.
4
+ * This module provides shared knowledge of valid combinations across all Zudello tools.
5
+ *
6
+ * Data structure based on the official Zudello API specification.
7
+ */
8
+ // ============================================================================
9
+ // Core Types and Constants
10
+ // ============================================================================
11
+ /**
12
+ * Valid Zudello models
13
+ */
14
+ export const ZUDELLO_MODELS = [
15
+ // Budgets
16
+ "Budget",
17
+ // Contracts
18
+ "Contract",
19
+ // Dimensional data
20
+ "Account",
21
+ "AccountCategory",
22
+ "AccountGroup",
23
+ "AccountingPeriod",
24
+ "AmortizationSchedule",
25
+ "Batch",
26
+ "Bin",
27
+ "ContractCategory",
28
+ "ContractGroup",
29
+ "CostCentre",
30
+ "CostType",
31
+ "Currency",
32
+ "CustomerCategory",
33
+ "CustomerGroup",
34
+ "Department",
35
+ "ExpenseCategory",
36
+ "FixedAsset",
37
+ "ItemCategory",
38
+ "ItemGroup",
39
+ "Location",
40
+ "MileageRate",
41
+ "PaymentMethod",
42
+ "PaymentTerm",
43
+ "Project",
44
+ "ProjectGroup",
45
+ "ProjectTask",
46
+ "ProjectType",
47
+ "Subsidiary",
48
+ "SupplierCategory",
49
+ "SupplierGroup",
50
+ "TaxRate",
51
+ "TaxSolution",
52
+ "TeamAddress",
53
+ "UnitOfMeasure",
54
+ "Warehouse",
55
+ "Zone",
56
+ // Transactions (multi-module)
57
+ "Transaction",
58
+ // Items
59
+ "Item",
60
+ // Relationships
61
+ "Customer",
62
+ "Employee",
63
+ "Supplier",
64
+ ];
65
+ /**
66
+ * Valid Zudello modules
67
+ */
68
+ export const ZUDELLO_MODULES = [
69
+ "BUDGETS",
70
+ "CONTRACTS",
71
+ "DIMENSIONS",
72
+ "EXPENSES",
73
+ "INVENTORY",
74
+ "PURCHASING",
75
+ "RELATIONSHIPS",
76
+ "SALES",
77
+ ];
78
+ /**
79
+ * Valid Zudello submodules
80
+ */
81
+ export const ZUDELLO_SUBMODULES = [
82
+ // Budget submodules
83
+ "BUDGET",
84
+ // Contract submodules
85
+ "CONTRACT",
86
+ // Dimension submodules
87
+ "ACCOUNT",
88
+ "ACCOUNT_CATEGORY",
89
+ "ACCOUNT_GROUP",
90
+ "ACCOUNTING_PERIOD",
91
+ "AMORTIZATION_SCHEDULE",
92
+ "BATCH",
93
+ "BIN",
94
+ "CONTRACT_CATEGORY",
95
+ "CONTRACT_GROUP",
96
+ "COST_CENTRE",
97
+ "COST_TYPE",
98
+ "CURRENCY",
99
+ "CUSTOMER_CATEGORY",
100
+ "CUSTOMER_GROUP",
101
+ "DEPARTMENT",
102
+ "EXPENSE_CATEGORY",
103
+ "FIXED_ASSET",
104
+ "ITEM_CATEGORY",
105
+ "ITEM_GROUP",
106
+ "LOCATION",
107
+ "MILEAGE_RATE",
108
+ "PAYMENT_METHOD",
109
+ "PAYMENT_TERM",
110
+ "PROJECT",
111
+ "PROJECT_GROUP",
112
+ "PROJECT_TASK",
113
+ "PROJECT_TYPE",
114
+ "SUBSIDIARY",
115
+ "SUPPLIER_CATEGORY",
116
+ "SUPPLIER_GROUP",
117
+ "TAX_RATE",
118
+ "TAX_SOLUTION",
119
+ "TEAM_ADDRESS",
120
+ "UNIT_OF_MEASURE",
121
+ "WAREHOUSE",
122
+ "ZONE",
123
+ // Expense submodules
124
+ "CLAIM",
125
+ "EXPENSE",
126
+ "MILEAGE",
127
+ "PAYMENT",
128
+ "REFUND",
129
+ // Inventory submodules
130
+ "CATALOGUE",
131
+ "RECEIPT",
132
+ // Purchasing submodules
133
+ "CREDIT",
134
+ "INVOICE",
135
+ "ORDER",
136
+ "QUOTE",
137
+ "REQUISITION",
138
+ "RETURN",
139
+ "STATEMENT",
140
+ // Relationship submodules
141
+ "CUSTOMER",
142
+ "EMPLOYEE",
143
+ "SUPPLIER",
144
+ // Sales submodules
145
+ "REMITTANCE",
146
+ // Note: CREDIT, INVOICE, ORDER, QUOTE are reused from purchasing
147
+ ];
148
+ // ============================================================================
149
+ // Model/Module/Submodule Relationships
150
+ // ============================================================================
151
+ /**
152
+ * Valid combinations of model, module, and submodule.
153
+ * Based on the official Zudello API specification.
154
+ */
155
+ export const ZUDELLO_MODEL_COMBINATIONS = [
156
+ // Budgets
157
+ { model: "Budget", module: "BUDGETS", submodule: "BUDGET" },
158
+ // Contracts
159
+ { model: "Contract", module: "CONTRACTS", submodule: "CONTRACT" },
160
+ // Dimensions
161
+ { model: "Account", module: "DIMENSIONS", submodule: "ACCOUNT" },
162
+ { model: "AccountCategory", module: "DIMENSIONS", submodule: "ACCOUNT_CATEGORY" },
163
+ { model: "AccountGroup", module: "DIMENSIONS", submodule: "ACCOUNT_GROUP" },
164
+ { model: "AccountingPeriod", module: "DIMENSIONS", submodule: "ACCOUNTING_PERIOD" },
165
+ { model: "AmortizationSchedule", module: "DIMENSIONS", submodule: "AMORTIZATION_SCHEDULE" },
166
+ { model: "Batch", module: "DIMENSIONS", submodule: "BATCH" },
167
+ { model: "Bin", module: "DIMENSIONS", submodule: "BIN" },
168
+ { model: "ContractCategory", module: "DIMENSIONS", submodule: "CONTRACT_CATEGORY" },
169
+ { model: "ContractGroup", module: "DIMENSIONS", submodule: "CONTRACT_GROUP" },
170
+ { model: "CostCentre", module: "DIMENSIONS", submodule: "COST_CENTRE" },
171
+ { model: "CostType", module: "DIMENSIONS", submodule: "COST_TYPE" },
172
+ { model: "Currency", module: "DIMENSIONS", submodule: "CURRENCY" },
173
+ { model: "CustomerCategory", module: "DIMENSIONS", submodule: "CUSTOMER_CATEGORY" },
174
+ { model: "CustomerGroup", module: "DIMENSIONS", submodule: "CUSTOMER_GROUP" },
175
+ { model: "Department", module: "DIMENSIONS", submodule: "DEPARTMENT" },
176
+ { model: "ExpenseCategory", module: "DIMENSIONS", submodule: "EXPENSE_CATEGORY" },
177
+ { model: "FixedAsset", module: "DIMENSIONS", submodule: "FIXED_ASSET" },
178
+ { model: "ItemCategory", module: "DIMENSIONS", submodule: "ITEM_CATEGORY" },
179
+ { model: "ItemGroup", module: "DIMENSIONS", submodule: "ITEM_GROUP" },
180
+ { model: "Location", module: "DIMENSIONS", submodule: "LOCATION" },
181
+ { model: "MileageRate", module: "DIMENSIONS", submodule: "MILEAGE_RATE" },
182
+ { model: "PaymentMethod", module: "DIMENSIONS", submodule: "PAYMENT_METHOD" },
183
+ { model: "PaymentTerm", module: "DIMENSIONS", submodule: "PAYMENT_TERM" },
184
+ { model: "Project", module: "DIMENSIONS", submodule: "PROJECT" },
185
+ { model: "ProjectGroup", module: "DIMENSIONS", submodule: "PROJECT_GROUP" },
186
+ { model: "ProjectTask", module: "DIMENSIONS", submodule: "PROJECT_TASK" },
187
+ { model: "ProjectType", module: "DIMENSIONS", submodule: "PROJECT_TYPE" },
188
+ { model: "Subsidiary", module: "DIMENSIONS", submodule: "SUBSIDIARY" },
189
+ { model: "SupplierCategory", module: "DIMENSIONS", submodule: "SUPPLIER_CATEGORY" },
190
+ { model: "SupplierGroup", module: "DIMENSIONS", submodule: "SUPPLIER_GROUP" },
191
+ { model: "TaxRate", module: "DIMENSIONS", submodule: "TAX_RATE" },
192
+ { model: "TaxSolution", module: "DIMENSIONS", submodule: "TAX_SOLUTION" },
193
+ { model: "TeamAddress", module: "DIMENSIONS", submodule: "TEAM_ADDRESS" },
194
+ { model: "UnitOfMeasure", module: "DIMENSIONS", submodule: "UNIT_OF_MEASURE" },
195
+ { model: "Warehouse", module: "DIMENSIONS", submodule: "WAREHOUSE" },
196
+ { model: "Zone", module: "DIMENSIONS", submodule: "ZONE" },
197
+ // Expenses - Transaction model with multiple submodules
198
+ { model: "Transaction", module: "EXPENSES", submodule: "CLAIM" },
199
+ { model: "Transaction", module: "EXPENSES", submodule: "EXPENSE" },
200
+ { model: "Transaction", module: "EXPENSES", submodule: "MILEAGE" },
201
+ { model: "Transaction", module: "EXPENSES", submodule: "PAYMENT" },
202
+ { model: "Transaction", module: "EXPENSES", submodule: "REFUND" },
203
+ // Inventory
204
+ { model: "Item", module: "INVENTORY", submodule: "CATALOGUE" },
205
+ { model: "Transaction", module: "INVENTORY", submodule: "RECEIPT" },
206
+ // Purchasing - Transaction model with multiple submodules
207
+ { model: "Transaction", module: "PURCHASING", submodule: "CREDIT" },
208
+ { model: "Transaction", module: "PURCHASING", submodule: "INVOICE" },
209
+ { model: "Transaction", module: "PURCHASING", submodule: "ORDER" },
210
+ { model: "Transaction", module: "PURCHASING", submodule: "QUOTE" },
211
+ { model: "Transaction", module: "PURCHASING", submodule: "REQUISITION" },
212
+ { model: "Transaction", module: "PURCHASING", submodule: "RETURN" },
213
+ { model: "Transaction", module: "PURCHASING", submodule: "STATEMENT" },
214
+ // Relationships
215
+ { model: "Customer", module: "RELATIONSHIPS", submodule: "CUSTOMER" },
216
+ { model: "Employee", module: "RELATIONSHIPS", submodule: "EMPLOYEE" },
217
+ { model: "Supplier", module: "RELATIONSHIPS", submodule: "SUPPLIER" },
218
+ // Sales - Transaction model with multiple submodules
219
+ { model: "Transaction", module: "SALES", submodule: "CREDIT" },
220
+ { model: "Transaction", module: "SALES", submodule: "INVOICE" },
221
+ { model: "Transaction", module: "SALES", submodule: "ORDER" },
222
+ { model: "Transaction", module: "SALES", submodule: "QUOTE" },
223
+ { model: "Transaction", module: "SALES", submodule: "REMITTANCE" },
224
+ ];
225
+ // ============================================================================
226
+ // Status Keys and Configurations
227
+ // ============================================================================
228
+ /**
229
+ * All unique status keys used across Zudello modules.
230
+ * IMPORTANT: Statuses are user-configurable per organization.
231
+ * Use zudelloListConfigs with configType 'document_status' to get actual configured statuses.
232
+ */
233
+ export const ZUDELLO_STATUS_KEYS = [
234
+ // Common statuses
235
+ "DRAFT",
236
+ "ACTIVE",
237
+ "INACTIVE",
238
+ "DELETED",
239
+ "ARCHIVED",
240
+ "PROCESSING",
241
+ // Approval workflow statuses
242
+ "APPROVAL",
243
+ "REJECT",
244
+ "REJECTED",
245
+ "UNABLE",
246
+ // Document workflow statuses
247
+ "SCANNING",
248
+ "REVIEW",
249
+ "READY",
250
+ "COMPLETE",
251
+ "CLOSED",
252
+ "DUPLICATE",
253
+ // Purchasing-specific statuses
254
+ "NEW_VENDOR",
255
+ "PO_MISSING",
256
+ "PO_VARIANCE",
257
+ "GR_PENDING",
258
+ "PENDING",
259
+ "PLACED",
260
+ "PARTIALLY_RECEIVED",
261
+ "RECEIVED",
262
+ "PARTIALLY_INVOICED",
263
+ "INVOICED_NOT_RECEIVED",
264
+ // Statement-specific statuses
265
+ "READY_TO_RECONCILE",
266
+ "RECONCILE",
267
+ "REQUESTED",
268
+ // Sales-specific statuses
269
+ "CUSTOMER_CHECK",
270
+ "ITEM_CHECK",
271
+ "PRICE_CHECK",
272
+ "STOCK_CHECK",
273
+ "UNSUPPORTED",
274
+ ];
275
+ /**
276
+ * Default status configurations by module/submodule.
277
+ * IMPORTANT: These are default statuses. Organizations can configure custom statuses.
278
+ * Use zudelloListConfigs(configType: 'document_status', module, submodule) for actual configs.
279
+ */
280
+ export const ZUDELLO_STATUS_CONFIGURATIONS = [
281
+ // BUDGETS / BUDGET
282
+ { module: "BUDGETS", submodule: "BUDGET", statusName: "Draft", statusKey: "DRAFT" },
283
+ { module: "BUDGETS", submodule: "BUDGET", statusName: "Approval", statusKey: "APPROVAL" },
284
+ { module: "BUDGETS", submodule: "BUDGET", statusName: "Reject Review", statusKey: "REJECT" },
285
+ { module: "BUDGETS", submodule: "BUDGET", statusName: "Unable to Process", statusKey: "UNABLE" },
286
+ { module: "BUDGETS", submodule: "BUDGET", statusName: "Active", statusKey: "ACTIVE" },
287
+ { module: "BUDGETS", submodule: "BUDGET", statusName: "Inactive", statusKey: "INACTIVE" },
288
+ { module: "BUDGETS", submodule: "BUDGET", statusName: "Processing", statusKey: "PROCESSING" },
289
+ { module: "BUDGETS", submodule: "BUDGET", statusName: "Archived", statusKey: "ARCHIVED" },
290
+ { module: "BUDGETS", submodule: "BUDGET", statusName: "Deleted", statusKey: "DELETED" },
291
+ // CONTRACTS / CONTRACT
292
+ { module: "CONTRACTS", submodule: "CONTRACT", statusName: "Scanning", statusKey: "SCANNING" },
293
+ { module: "CONTRACTS", submodule: "CONTRACT", statusName: "Draft", statusKey: "DRAFT" },
294
+ { module: "CONTRACTS", submodule: "CONTRACT", statusName: "User Review", statusKey: "REVIEW" },
295
+ { module: "CONTRACTS", submodule: "CONTRACT", statusName: "Ready", statusKey: "READY" },
296
+ { module: "CONTRACTS", submodule: "CONTRACT", statusName: "Reject Review", statusKey: "REJECT" },
297
+ { module: "CONTRACTS", submodule: "CONTRACT", statusName: "Unable to Process", statusKey: "UNABLE" },
298
+ { module: "CONTRACTS", submodule: "CONTRACT", statusName: "Approval", statusKey: "APPROVAL" },
299
+ { module: "CONTRACTS", submodule: "CONTRACT", statusName: "Active", statusKey: "ACTIVE" },
300
+ { module: "CONTRACTS", submodule: "CONTRACT", statusName: "Rejected", statusKey: "REJECTED" },
301
+ { module: "CONTRACTS", submodule: "CONTRACT", statusName: "Inactive", statusKey: "INACTIVE" },
302
+ { module: "CONTRACTS", submodule: "CONTRACT", statusName: "Processing", statusKey: "PROCESSING" },
303
+ { module: "CONTRACTS", submodule: "CONTRACT", statusName: "Archived", statusKey: "ARCHIVED" },
304
+ { module: "CONTRACTS", submodule: "CONTRACT", statusName: "Deleted", statusKey: "DELETED" },
305
+ // DIMENSIONS - Simple statuses (Draft, Active, Inactive)
306
+ ...[
307
+ "ACCOUNT", "ACCOUNT_CATEGORY", "ACCOUNT_GROUP", "ACCOUNTING_PERIOD",
308
+ "AMORTIZATION_SCHEDULE", "BATCH", "BIN", "CONTRACT_CATEGORY", "CONTRACT_GROUP",
309
+ "COST_CENTRE", "COST_TYPE", "CURRENCY", "CUSTOMER_CATEGORY", "CUSTOMER_GROUP",
310
+ "DEPARTMENT", "EXPENSE_CATEGORY", "FIXED_ASSET", "ITEM_CATEGORY", "ITEM_GROUP",
311
+ "LOCATION", "MILEAGE_RATE", "PAYMENT_TERM", "PROJECT", "PROJECT_GROUP",
312
+ "PROJECT_TASK", "PROJECT_TYPE", "SUBSIDIARY", "SUPPLIER_CATEGORY", "SUPPLIER_GROUP",
313
+ "TAX_RATE", "TAX_SOLUTION", "TEAM_ADDRESS", "UNIT_OF_MEASURE", "WAREHOUSE", "ZONE"
314
+ ].flatMap(submodule => [
315
+ { module: "DIMENSIONS", submodule, statusName: "Draft", statusKey: "DRAFT" },
316
+ { module: "DIMENSIONS", submodule, statusName: "Active", statusKey: "ACTIVE" },
317
+ { module: "DIMENSIONS", submodule, statusName: "Inactive", statusKey: "INACTIVE" },
318
+ ]),
319
+ // DIMENSIONS / PAYMENT_METHOD (extended statuses)
320
+ { module: "DIMENSIONS", submodule: "PAYMENT_METHOD", statusName: "Approval", statusKey: "APPROVAL" },
321
+ { module: "DIMENSIONS", submodule: "PAYMENT_METHOD", statusName: "Reject Review", statusKey: "REJECT" },
322
+ { module: "DIMENSIONS", submodule: "PAYMENT_METHOD", statusName: "Unable to Process", statusKey: "UNABLE" },
323
+ { module: "DIMENSIONS", submodule: "PAYMENT_METHOD", statusName: "Rejected", statusKey: "REJECTED" },
324
+ { module: "DIMENSIONS", submodule: "PAYMENT_METHOD", statusName: "Processing", statusKey: "PROCESSING" },
325
+ { module: "DIMENSIONS", submodule: "PAYMENT_METHOD", statusName: "Archived", statusKey: "ARCHIVED" },
326
+ { module: "DIMENSIONS", submodule: "PAYMENT_METHOD", statusName: "Deleted", statusKey: "DELETED" },
327
+ // EXPENSES / CLAIM
328
+ { module: "EXPENSES", submodule: "CLAIM", statusName: "Draft", statusKey: "DRAFT" },
329
+ { module: "EXPENSES", submodule: "CLAIM", statusName: "User Review", statusKey: "REVIEW" },
330
+ { module: "EXPENSES", submodule: "CLAIM", statusName: "Approval", statusKey: "APPROVAL" },
331
+ { module: "EXPENSES", submodule: "CLAIM", statusName: "Reject Review", statusKey: "REJECT" },
332
+ { module: "EXPENSES", submodule: "CLAIM", statusName: "Unable to Process", statusKey: "UNABLE" },
333
+ { module: "EXPENSES", submodule: "CLAIM", statusName: "Completed", statusKey: "COMPLETE" },
334
+ { module: "EXPENSES", submodule: "CLAIM", statusName: "Rejected", statusKey: "REJECTED" },
335
+ { module: "EXPENSES", submodule: "CLAIM", statusName: "Processing", statusKey: "PROCESSING" },
336
+ { module: "EXPENSES", submodule: "CLAIM", statusName: "Archived", statusKey: "ARCHIVED" },
337
+ { module: "EXPENSES", submodule: "CLAIM", statusName: "Deleted", statusKey: "DELETED" },
338
+ // EXPENSES / EXPENSE
339
+ { module: "EXPENSES", submodule: "EXPENSE", statusName: "Scanning", statusKey: "SCANNING" },
340
+ { module: "EXPENSES", submodule: "EXPENSE", statusName: "User Review", statusKey: "REVIEW" },
341
+ { module: "EXPENSES", submodule: "EXPENSE", statusName: "Ready", statusKey: "READY" },
342
+ { module: "EXPENSES", submodule: "EXPENSE", statusName: "Approval", statusKey: "APPROVAL" },
343
+ { module: "EXPENSES", submodule: "EXPENSE", statusName: "Reject Review", statusKey: "REJECT" },
344
+ { module: "EXPENSES", submodule: "EXPENSE", statusName: "Unable to Process", statusKey: "UNABLE" },
345
+ { module: "EXPENSES", submodule: "EXPENSE", statusName: "Completed", statusKey: "COMPLETE" },
346
+ { module: "EXPENSES", submodule: "EXPENSE", statusName: "Rejected", statusKey: "REJECTED" },
347
+ { module: "EXPENSES", submodule: "EXPENSE", statusName: "Processing", statusKey: "PROCESSING" },
348
+ { module: "EXPENSES", submodule: "EXPENSE", statusName: "Archived", statusKey: "ARCHIVED" },
349
+ { module: "EXPENSES", submodule: "EXPENSE", statusName: "Duplicate", statusKey: "DUPLICATE" },
350
+ { module: "EXPENSES", submodule: "EXPENSE", statusName: "Deleted", statusKey: "DELETED" },
351
+ // EXPENSES / MILEAGE
352
+ { module: "EXPENSES", submodule: "MILEAGE", statusName: "Scanning", statusKey: "SCANNING" },
353
+ { module: "EXPENSES", submodule: "MILEAGE", statusName: "User Review", statusKey: "REVIEW" },
354
+ { module: "EXPENSES", submodule: "MILEAGE", statusName: "Approval", statusKey: "APPROVAL" },
355
+ { module: "EXPENSES", submodule: "MILEAGE", statusName: "Reject Review", statusKey: "REJECT" },
356
+ { module: "EXPENSES", submodule: "MILEAGE", statusName: "Unable to Process", statusKey: "UNABLE" },
357
+ { module: "EXPENSES", submodule: "MILEAGE", statusName: "Completed", statusKey: "COMPLETE" },
358
+ { module: "EXPENSES", submodule: "MILEAGE", statusName: "Rejected", statusKey: "REJECTED" },
359
+ { module: "EXPENSES", submodule: "MILEAGE", statusName: "Processing", statusKey: "PROCESSING" },
360
+ { module: "EXPENSES", submodule: "MILEAGE", statusName: "Archived", statusKey: "ARCHIVED" },
361
+ { module: "EXPENSES", submodule: "MILEAGE", statusName: "Deleted", statusKey: "DELETED" },
362
+ // EXPENSES / PAYMENT
363
+ { module: "EXPENSES", submodule: "PAYMENT", statusName: "User Review", statusKey: "REVIEW" },
364
+ { module: "EXPENSES", submodule: "PAYMENT", statusName: "Closed", statusKey: "CLOSED" },
365
+ { module: "EXPENSES", submodule: "PAYMENT", statusName: "Rejected", statusKey: "REJECTED" },
366
+ { module: "EXPENSES", submodule: "PAYMENT", statusName: "Completed", statusKey: "COMPLETE" },
367
+ // EXPENSES / REFUND
368
+ { module: "EXPENSES", submodule: "REFUND", statusName: "User Review", statusKey: "REVIEW" },
369
+ { module: "EXPENSES", submodule: "REFUND", statusName: "Closed", statusKey: "CLOSED" },
370
+ { module: "EXPENSES", submodule: "REFUND", statusName: "Rejected", statusKey: "REJECTED" },
371
+ // INVENTORY / CATALOGUE
372
+ { module: "INVENTORY", submodule: "CATALOGUE", statusName: "Draft", statusKey: "DRAFT" },
373
+ { module: "INVENTORY", submodule: "CATALOGUE", statusName: "Approval", statusKey: "APPROVAL" },
374
+ { module: "INVENTORY", submodule: "CATALOGUE", statusName: "Reject Review", statusKey: "REJECT" },
375
+ { module: "INVENTORY", submodule: "CATALOGUE", statusName: "Unable to Process", statusKey: "UNABLE" },
376
+ { module: "INVENTORY", submodule: "CATALOGUE", statusName: "Active", statusKey: "ACTIVE" },
377
+ { module: "INVENTORY", submodule: "CATALOGUE", statusName: "Rejected", statusKey: "REJECTED" },
378
+ { module: "INVENTORY", submodule: "CATALOGUE", statusName: "Inactive", statusKey: "INACTIVE" },
379
+ { module: "INVENTORY", submodule: "CATALOGUE", statusName: "Processing", statusKey: "PROCESSING" },
380
+ { module: "INVENTORY", submodule: "CATALOGUE", statusName: "Archived", statusKey: "ARCHIVED" },
381
+ { module: "INVENTORY", submodule: "CATALOGUE", statusName: "Duplicate", statusKey: "DUPLICATE" },
382
+ { module: "INVENTORY", submodule: "CATALOGUE", statusName: "Deleted", statusKey: "DELETED" },
383
+ // INVENTORY / RECEIPT
384
+ { module: "INVENTORY", submodule: "RECEIPT", statusName: "Scanning", statusKey: "SCANNING" },
385
+ { module: "INVENTORY", submodule: "RECEIPT", statusName: "User Review", statusKey: "REVIEW" },
386
+ { module: "INVENTORY", submodule: "RECEIPT", statusName: "Ready", statusKey: "READY" },
387
+ { module: "INVENTORY", submodule: "RECEIPT", statusName: "Approval", statusKey: "APPROVAL" },
388
+ { module: "INVENTORY", submodule: "RECEIPT", statusName: "Reject Review", statusKey: "REJECT" },
389
+ { module: "INVENTORY", submodule: "RECEIPT", statusName: "Unable to Process", statusKey: "UNABLE" },
390
+ { module: "INVENTORY", submodule: "RECEIPT", statusName: "Completed", statusKey: "COMPLETE" },
391
+ { module: "INVENTORY", submodule: "RECEIPT", statusName: "Rejected", statusKey: "REJECTED" },
392
+ { module: "INVENTORY", submodule: "RECEIPT", statusName: "Processing", statusKey: "PROCESSING" },
393
+ { module: "INVENTORY", submodule: "RECEIPT", statusName: "Archived", statusKey: "ARCHIVED" },
394
+ { module: "INVENTORY", submodule: "RECEIPT", statusName: "Duplicate", statusKey: "DUPLICATE" },
395
+ { module: "INVENTORY", submodule: "RECEIPT", statusName: "Deleted", statusKey: "DELETED" },
396
+ // PURCHASING / CREDIT
397
+ { module: "PURCHASING", submodule: "CREDIT", statusName: "Scanning", statusKey: "SCANNING" },
398
+ { module: "PURCHASING", submodule: "CREDIT", statusName: "User Review", statusKey: "REVIEW" },
399
+ { module: "PURCHASING", submodule: "CREDIT", statusName: "New Vendor", statusKey: "NEW_VENDOR" },
400
+ { module: "PURCHASING", submodule: "CREDIT", statusName: "Ready", statusKey: "READY" },
401
+ { module: "PURCHASING", submodule: "CREDIT", statusName: "Approval", statusKey: "APPROVAL" },
402
+ { module: "PURCHASING", submodule: "CREDIT", statusName: "Reject Review", statusKey: "REJECT" },
403
+ { module: "PURCHASING", submodule: "CREDIT", statusName: "Unable to Process", statusKey: "UNABLE" },
404
+ { module: "PURCHASING", submodule: "CREDIT", statusName: "Completed", statusKey: "COMPLETE" },
405
+ { module: "PURCHASING", submodule: "CREDIT", statusName: "Rejected", statusKey: "REJECTED" },
406
+ { module: "PURCHASING", submodule: "CREDIT", statusName: "Processing", statusKey: "PROCESSING" },
407
+ { module: "PURCHASING", submodule: "CREDIT", statusName: "Archived", statusKey: "ARCHIVED" },
408
+ { module: "PURCHASING", submodule: "CREDIT", statusName: "Duplicate", statusKey: "DUPLICATE" },
409
+ { module: "PURCHASING", submodule: "CREDIT", statusName: "Deleted", statusKey: "DELETED" },
410
+ // PURCHASING / INVOICE
411
+ { module: "PURCHASING", submodule: "INVOICE", statusName: "Scanning", statusKey: "SCANNING" },
412
+ { module: "PURCHASING", submodule: "INVOICE", statusName: "User Review", statusKey: "REVIEW" },
413
+ { module: "PURCHASING", submodule: "INVOICE", statusName: "New Vendor", statusKey: "NEW_VENDOR" },
414
+ { module: "PURCHASING", submodule: "INVOICE", statusName: "PO Missing", statusKey: "PO_MISSING" },
415
+ { module: "PURCHASING", submodule: "INVOICE", statusName: "PO Variance", statusKey: "PO_VARIANCE" },
416
+ { module: "PURCHASING", submodule: "INVOICE", statusName: "GR Pending", statusKey: "GR_PENDING" },
417
+ { module: "PURCHASING", submodule: "INVOICE", statusName: "Ready", statusKey: "READY" },
418
+ { module: "PURCHASING", submodule: "INVOICE", statusName: "Approval", statusKey: "APPROVAL" },
419
+ { module: "PURCHASING", submodule: "INVOICE", statusName: "Reject Review", statusKey: "REJECT" },
420
+ { module: "PURCHASING", submodule: "INVOICE", statusName: "Unable to Process", statusKey: "UNABLE" },
421
+ { module: "PURCHASING", submodule: "INVOICE", statusName: "Complete", statusKey: "COMPLETE" },
422
+ { module: "PURCHASING", submodule: "INVOICE", statusName: "Rejected", statusKey: "REJECTED" },
423
+ { module: "PURCHASING", submodule: "INVOICE", statusName: "Processing", statusKey: "PROCESSING" },
424
+ { module: "PURCHASING", submodule: "INVOICE", statusName: "Archived", statusKey: "ARCHIVED" },
425
+ { module: "PURCHASING", submodule: "INVOICE", statusName: "Duplicate", statusKey: "DUPLICATE" },
426
+ { module: "PURCHASING", submodule: "INVOICE", statusName: "Deleted", statusKey: "DELETED" },
427
+ // PURCHASING / ORDER
428
+ { module: "PURCHASING", submodule: "ORDER", statusName: "Scanning", statusKey: "SCANNING" },
429
+ { module: "PURCHASING", submodule: "ORDER", statusName: "User Review", statusKey: "REVIEW" },
430
+ { module: "PURCHASING", submodule: "ORDER", statusName: "Ready", statusKey: "READY" },
431
+ { module: "PURCHASING", submodule: "ORDER", statusName: "Approval", statusKey: "APPROVAL" },
432
+ { module: "PURCHASING", submodule: "ORDER", statusName: "Pending", statusKey: "PENDING" },
433
+ { module: "PURCHASING", submodule: "ORDER", statusName: "Placed", statusKey: "PLACED" },
434
+ { module: "PURCHASING", submodule: "ORDER", statusName: "Partially Received", statusKey: "PARTIALLY_RECEIVED" },
435
+ { module: "PURCHASING", submodule: "ORDER", statusName: "Received", statusKey: "RECEIVED" },
436
+ { module: "PURCHASING", submodule: "ORDER", statusName: "Partially Invoiced", statusKey: "PARTIALLY_INVOICED" },
437
+ { module: "PURCHASING", submodule: "ORDER", statusName: "Invoiced Not Received", statusKey: "INVOICED_NOT_RECEIVED" },
438
+ { module: "PURCHASING", submodule: "ORDER", statusName: "Reject Review", statusKey: "REJECT" },
439
+ { module: "PURCHASING", submodule: "ORDER", statusName: "Unable to Process", statusKey: "UNABLE" },
440
+ { module: "PURCHASING", submodule: "ORDER", statusName: "Closed", statusKey: "CLOSED" },
441
+ { module: "PURCHASING", submodule: "ORDER", statusName: "Complete", statusKey: "COMPLETE" },
442
+ { module: "PURCHASING", submodule: "ORDER", statusName: "Rejected", statusKey: "REJECTED" },
443
+ { module: "PURCHASING", submodule: "ORDER", statusName: "Processing", statusKey: "PROCESSING" },
444
+ { module: "PURCHASING", submodule: "ORDER", statusName: "Archived", statusKey: "ARCHIVED" },
445
+ { module: "PURCHASING", submodule: "ORDER", statusName: "Duplicate", statusKey: "DUPLICATE" },
446
+ { module: "PURCHASING", submodule: "ORDER", statusName: "Deleted", statusKey: "DELETED" },
447
+ // PURCHASING / QUOTE, REQUISITION, RETURN (similar pattern)
448
+ ...["QUOTE", "REQUISITION", "RETURN"].flatMap(submodule => [
449
+ { module: "PURCHASING", submodule, statusName: "Scanning", statusKey: "SCANNING" },
450
+ { module: "PURCHASING", submodule, statusName: "User Review", statusKey: "REVIEW" },
451
+ { module: "PURCHASING", submodule, statusName: "New Vendor", statusKey: "NEW_VENDOR" },
452
+ { module: "PURCHASING", submodule, statusName: "Ready", statusKey: "READY" },
453
+ { module: "PURCHASING", submodule, statusName: "Approval", statusKey: "APPROVAL" },
454
+ { module: "PURCHASING", submodule, statusName: "Reject Review", statusKey: "REJECT" },
455
+ { module: "PURCHASING", submodule, statusName: "Unable to Process", statusKey: "UNABLE" },
456
+ { module: "PURCHASING", submodule, statusName: "Completed", statusKey: "COMPLETE" },
457
+ { module: "PURCHASING", submodule, statusName: "Rejected", statusKey: "REJECTED" },
458
+ { module: "PURCHASING", submodule, statusName: "Processing", statusKey: "PROCESSING" },
459
+ { module: "PURCHASING", submodule, statusName: "Archived", statusKey: "ARCHIVED" },
460
+ { module: "PURCHASING", submodule, statusName: "Duplicate", statusKey: "DUPLICATE" },
461
+ { module: "PURCHASING", submodule, statusName: "Deleted", statusKey: "DELETED" },
462
+ ]),
463
+ // PURCHASING / STATEMENT
464
+ { module: "PURCHASING", submodule: "STATEMENT", statusName: "Scanning", statusKey: "SCANNING" },
465
+ { module: "PURCHASING", submodule: "STATEMENT", statusName: "User Review", statusKey: "REVIEW" },
466
+ { module: "PURCHASING", submodule: "STATEMENT", statusName: "Ready", statusKey: "READY" },
467
+ { module: "PURCHASING", submodule: "STATEMENT", statusName: "Ready to Reconcile", statusKey: "READY_TO_RECONCILE" },
468
+ { module: "PURCHASING", submodule: "STATEMENT", statusName: "Reconcile", statusKey: "RECONCILE" },
469
+ { module: "PURCHASING", submodule: "STATEMENT", statusName: "Requested", statusKey: "REQUESTED" },
470
+ { module: "PURCHASING", submodule: "STATEMENT", statusName: "Completed", statusKey: "COMPLETE" },
471
+ { module: "PURCHASING", submodule: "STATEMENT", statusName: "Processing", statusKey: "PROCESSING" },
472
+ { module: "PURCHASING", submodule: "STATEMENT", statusName: "Archived", statusKey: "ARCHIVED" },
473
+ { module: "PURCHASING", submodule: "STATEMENT", statusName: "Duplicate", statusKey: "DUPLICATE" },
474
+ { module: "PURCHASING", submodule: "STATEMENT", statusName: "Deleted", statusKey: "DELETED" },
475
+ // RELATIONSHIPS / CUSTOMER, EMPLOYEE, SUPPLIER
476
+ ...["CUSTOMER", "EMPLOYEE", "SUPPLIER"].flatMap(submodule => [
477
+ { module: "RELATIONSHIPS", submodule, statusName: "Draft", statusKey: "DRAFT" },
478
+ { module: "RELATIONSHIPS", submodule, statusName: "Approval", statusKey: "APPROVAL" },
479
+ { module: "RELATIONSHIPS", submodule, statusName: "Reject Review", statusKey: "REJECT" },
480
+ { module: "RELATIONSHIPS", submodule, statusName: "Unable to Process", statusKey: "UNABLE" },
481
+ { module: "RELATIONSHIPS", submodule, statusName: "Active", statusKey: "ACTIVE" },
482
+ { module: "RELATIONSHIPS", submodule, statusName: "Rejected", statusKey: "REJECTED" },
483
+ { module: "RELATIONSHIPS", submodule, statusName: "Inactive", statusKey: "INACTIVE" },
484
+ { module: "RELATIONSHIPS", submodule, statusName: "Processing", statusKey: "PROCESSING" },
485
+ { module: "RELATIONSHIPS", submodule, statusName: "Archived", statusKey: "ARCHIVED" },
486
+ { module: "RELATIONSHIPS", submodule, statusName: "Deleted", statusKey: "DELETED" },
487
+ ]),
488
+ // SALES / CREDIT, INVOICE, REMITTANCE (similar pattern)
489
+ ...["CREDIT", "INVOICE", "REMITTANCE"].flatMap(submodule => [
490
+ { module: "SALES", submodule, statusName: "Scanning", statusKey: "SCANNING" },
491
+ { module: "SALES", submodule, statusName: "User Review", statusKey: "REVIEW" },
492
+ { module: "SALES", submodule, statusName: "Ready", statusKey: "READY" },
493
+ { module: "SALES", submodule, statusName: "Approval", statusKey: "APPROVAL" },
494
+ { module: "SALES", submodule, statusName: "Reject Review", statusKey: "REJECT" },
495
+ { module: "SALES", submodule, statusName: "Unable to Process", statusKey: "UNABLE" },
496
+ { module: "SALES", submodule, statusName: "Completed", statusKey: "COMPLETE" },
497
+ { module: "SALES", submodule, statusName: "Rejected", statusKey: "REJECTED" },
498
+ { module: "SALES", submodule, statusName: "Processing", statusKey: "PROCESSING" },
499
+ { module: "SALES", submodule, statusName: "Archived", statusKey: "ARCHIVED" },
500
+ { module: "SALES", submodule, statusName: "Duplicate", statusKey: "DUPLICATE" },
501
+ { module: "SALES", submodule, statusName: "Deleted", statusKey: "DELETED" },
502
+ ]),
503
+ // SALES / ORDER, QUOTE (with check statuses)
504
+ ...["ORDER", "QUOTE"].flatMap(submodule => [
505
+ { module: "SALES", submodule, statusName: "Scanning", statusKey: "SCANNING" },
506
+ { module: "SALES", submodule, statusName: "User Review", statusKey: "REVIEW" },
507
+ { module: "SALES", submodule, statusName: "Customer Check", statusKey: "CUSTOMER_CHECK" },
508
+ { module: "SALES", submodule, statusName: "Item Check", statusKey: "ITEM_CHECK" },
509
+ { module: "SALES", submodule, statusName: "Price Check", statusKey: "PRICE_CHECK" },
510
+ { module: "SALES", submodule, statusName: "Stock Check", statusKey: "STOCK_CHECK" },
511
+ { module: "SALES", submodule, statusName: "Ready", statusKey: "READY" },
512
+ { module: "SALES", submodule, statusName: "Approval", statusKey: "APPROVAL" },
513
+ { module: "SALES", submodule, statusName: "Reject Review", statusKey: "REJECT" },
514
+ { module: "SALES", submodule, statusName: "Unable to Process", statusKey: "UNABLE" },
515
+ { module: "SALES", submodule, statusName: "Completed", statusKey: "COMPLETE" },
516
+ { module: "SALES", submodule, statusName: "Rejected", statusKey: "REJECTED" },
517
+ { module: "SALES", submodule, statusName: "Processing", statusKey: "PROCESSING" },
518
+ { module: "SALES", submodule, statusName: "Archived", statusKey: "ARCHIVED" },
519
+ { module: "SALES", submodule, statusName: "Duplicate", statusKey: "DUPLICATE" },
520
+ { module: "SALES", submodule, statusName: "Deleted", statusKey: "DELETED" },
521
+ ]),
522
+ // SALES / RETURN
523
+ { module: "SALES", submodule: "RETURN", statusName: "User Review", statusKey: "REVIEW" },
524
+ { module: "SALES", submodule: "RETURN", statusName: "Ready", statusKey: "READY" },
525
+ { module: "SALES", submodule: "RETURN", statusName: "Approval", statusKey: "APPROVAL" },
526
+ { module: "SALES", submodule: "RETURN", statusName: "Reject Review", statusKey: "REJECT" },
527
+ { module: "SALES", submodule: "RETURN", statusName: "Unable to Process", statusKey: "UNABLE" },
528
+ { module: "SALES", submodule: "RETURN", statusName: "Completed", statusKey: "COMPLETE" },
529
+ { module: "SALES", submodule: "RETURN", statusName: "Rejected", statusKey: "REJECTED" },
530
+ { module: "SALES", submodule: "RETURN", statusName: "Processing", statusKey: "PROCESSING" },
531
+ { module: "SALES", submodule: "RETURN", statusName: "Archived", statusKey: "ARCHIVED" },
532
+ { module: "SALES", submodule: "RETURN", statusName: "Duplicate", statusKey: "DUPLICATE" },
533
+ { module: "SALES", submodule: "RETURN", statusName: "Unsupported", statusKey: "UNSUPPORTED" },
534
+ { module: "SALES", submodule: "RETURN", statusName: "Deleted", statusKey: "DELETED" },
535
+ ];
536
+ // ============================================================================
537
+ // Validation Functions
538
+ // ============================================================================
539
+ /**
540
+ * Check if a model is valid
541
+ */
542
+ export function isValidZudelloModel(model) {
543
+ return ZUDELLO_MODELS.includes(model);
544
+ }
545
+ /**
546
+ * Check if a module is valid
547
+ */
548
+ export function isValidZudelloModule(module) {
549
+ return ZUDELLO_MODULES.includes(module);
550
+ }
551
+ /**
552
+ * Check if a submodule is valid
553
+ */
554
+ export function isValidZudelloSubmodule(submodule) {
555
+ return ZUDELLO_SUBMODULES.includes(submodule);
556
+ }
557
+ /**
558
+ * Check if a model/module/submodule combination is valid
559
+ */
560
+ export function isValidZudelloCombination(model, module, submodule) {
561
+ // If only model is provided, check if it's a valid model
562
+ if (!module && !submodule) {
563
+ return isValidZudelloModel(model);
564
+ }
565
+ // If module/submodule are provided, check the exact combination
566
+ return ZUDELLO_MODEL_COMBINATIONS.some(combo => {
567
+ const modelMatch = combo.model === model;
568
+ const moduleMatch = !module || combo.module === module;
569
+ const submoduleMatch = !submodule || combo.submodule === submodule;
570
+ return modelMatch && moduleMatch && submoduleMatch;
571
+ });
572
+ }
573
+ /**
574
+ * Get valid modules for a given model
575
+ */
576
+ export function getValidModulesForModel(model) {
577
+ return ZUDELLO_MODEL_COMBINATIONS
578
+ .filter(combo => combo.model === model)
579
+ .map(combo => combo.module);
580
+ }
581
+ /**
582
+ * Get valid submodules for a given model and module
583
+ */
584
+ export function getValidSubmodulesForModel(model, module) {
585
+ return ZUDELLO_MODEL_COMBINATIONS
586
+ .filter(combo => {
587
+ const modelMatch = combo.model === model;
588
+ const moduleMatch = !module || combo.module === module;
589
+ return modelMatch && moduleMatch;
590
+ })
591
+ .map(combo => combo.submodule);
592
+ }
593
+ /**
594
+ * Get model combinations by functional area
595
+ */
596
+ export function getModelsByModule(module) {
597
+ return ZUDELLO_MODEL_COMBINATIONS
598
+ .filter(combo => combo.module === module)
599
+ .map(combo => combo.model);
600
+ }
601
+ // ============================================================================
602
+ // Status Validation and Lookup Functions
603
+ // ============================================================================
604
+ /**
605
+ * Check if a status key is valid (exists in any context)
606
+ */
607
+ export function isValidStatusKey(statusKey) {
608
+ return ZUDELLO_STATUS_KEYS.includes(statusKey);
609
+ }
610
+ /**
611
+ * Check if a status key is valid for a specific module/submodule context
612
+ */
613
+ export function isValidStatusForContext(module, submodule, statusKey) {
614
+ return ZUDELLO_STATUS_CONFIGURATIONS.some(config => config.module === module && config.submodule === submodule && config.statusKey === statusKey);
615
+ }
616
+ /**
617
+ * Get default statuses for a module/submodule context.
618
+ * IMPORTANT: These are defaults. Use zudelloListConfigs with configType 'document_status' for actual configs.
619
+ */
620
+ export function getDefaultStatusesForContext(module, submodule) {
621
+ return ZUDELLO_STATUS_CONFIGURATIONS.filter(config => config.module === module && config.submodule === submodule);
622
+ }
623
+ /**
624
+ * Convert a user-friendly status name to its API key for a given context.
625
+ * Returns undefined if not found.
626
+ */
627
+ export function getStatusKeyByName(module, submodule, statusName) {
628
+ const config = ZUDELLO_STATUS_CONFIGURATIONS.find(c => c.module === module && c.submodule === submodule &&
629
+ c.statusName.toLowerCase() === statusName.toLowerCase());
630
+ return config?.statusKey;
631
+ }
632
+ /**
633
+ * Convert an API status key to its user-friendly name for a given context.
634
+ * Returns undefined if not found.
635
+ */
636
+ export function getStatusNameByKey(module, submodule, statusKey) {
637
+ const config = ZUDELLO_STATUS_CONFIGURATIONS.find(c => c.module === module && c.submodule === submodule && c.statusKey === statusKey);
638
+ return config?.statusName;
639
+ }
640
+ /**
641
+ * Get common statuses that appear in most contexts.
642
+ * Useful for general filtering when context is not known.
643
+ */
644
+ export function getCommonStatuses() {
645
+ return [
646
+ { name: "Draft", key: "DRAFT" },
647
+ { name: "User Review", key: "REVIEW" },
648
+ { name: "Approval", key: "APPROVAL" },
649
+ { name: "Ready", key: "READY" },
650
+ { name: "Complete/Completed", key: "COMPLETE" },
651
+ { name: "Active", key: "ACTIVE" },
652
+ { name: "Inactive", key: "INACTIVE" },
653
+ { name: "Rejected", key: "REJECTED" },
654
+ { name: "Processing", key: "PROCESSING" },
655
+ { name: "Archived", key: "ARCHIVED" },
656
+ { name: "Deleted", key: "DELETED" },
657
+ ];
658
+ }
659
+ /**
660
+ * Get a description of status usage for tool documentation.
661
+ */
662
+ export function getStatusUsageGuide() {
663
+ return `Common status keys: DRAFT, REVIEW (User Review), APPROVAL, READY, COMPLETE, ACTIVE, INACTIVE, REJECTED, PROCESSING, ARCHIVED, DELETED.
664
+ Module-specific statuses:
665
+ - PURCHASING/INVOICE: NEW_VENDOR, PO_MISSING, PO_VARIANCE, GR_PENDING
666
+ - PURCHASING/ORDER: PENDING, PLACED, RECEIVED, PARTIALLY_RECEIVED, PARTIALLY_INVOICED, CLOSED
667
+ - SALES/ORDER,QUOTE: CUSTOMER_CHECK, ITEM_CHECK, PRICE_CHECK, STOCK_CHECK
668
+ - PURCHASING/STATEMENT: READY_TO_RECONCILE, RECONCILE, REQUESTED
669
+ IMPORTANT: Statuses are user-configurable. If these don't work, use zudelloListConfigs with configType 'document_status' and module/submodule filters to get actual configured statuses.`;
670
+ }
671
+ // ============================================================================
672
+ // Zod Validation Schemas
673
+ // ============================================================================
674
+ /**
675
+ * Zod schema for Zudello models
676
+ */
677
+ export const zudelloModelSchema = z.enum(ZUDELLO_MODELS).describe("Valid Zudello model. Common models: Transaction (invoices, orders, receipts), Item (products, inventory), " +
678
+ "Supplier/Customer/Employee (business entities), Budget/Contract (financial documents), " +
679
+ "Account/Department/Location (dimensional data). Use zudelloListModels to discover all available models.");
680
+ /**
681
+ * Zod schema for Zudello modules
682
+ */
683
+ export const zudelloModuleSchema = z.enum(ZUDELLO_MODULES).describe("Zudello module. Functional areas: BUDGETS (budget planning), CONTRACTS (contract management), " +
684
+ "DIMENSIONS (reference data), EXPENSES (expense tracking), INVENTORY (stock management), " +
685
+ "PURCHASING (procurement), RELATIONSHIPS (entities), SALES (revenue tracking).");
686
+ /**
687
+ * Zod schema for Zudello submodules
688
+ */
689
+ export const zudelloSubmoduleSchema = z.enum(ZUDELLO_SUBMODULES).describe("Zudello submodule. Specific contexts within modules, e.g., INVOICE/ORDER/QUOTE for transactions, " +
690
+ "CATALOGUE for items, CUSTOMER/SUPPLIER/EMPLOYEE for relationships.");
691
+ /**
692
+ * Zod schema for Zudello status keys.
693
+ * IMPORTANT: Statuses are user-configurable. These are default values.
694
+ * Use zudelloListConfigs with configType 'document_status' for actual configs.
695
+ */
696
+ export const zudelloStatusKeySchema = z.enum(ZUDELLO_STATUS_KEYS).describe("Status key for filtering documents. Common values: DRAFT, REVIEW, APPROVAL, READY, COMPLETE, ACTIVE, INACTIVE, REJECTED, PROCESSING, ARCHIVED, DELETED. " +
697
+ "Module-specific: NEW_VENDOR, PO_MISSING, GR_PENDING (PURCHASING/INVOICE), PENDING, PLACED, RECEIVED (PURCHASING/ORDER). " +
698
+ "IMPORTANT: Statuses are user-configurable. Use zudelloListConfigs with configType 'document_status' if defaults don't match.");
699
+ /**
700
+ * Enhanced model schema with validation for combinations
701
+ */
702
+ export function createValidatedModelSchema(moduleParam, submoduleParam) {
703
+ return z.string().refine((model) => {
704
+ if (!isValidZudelloModel(model)) {
705
+ return false;
706
+ }
707
+ if (moduleParam || submoduleParam) {
708
+ return isValidZudelloCombination(model, moduleParam, submoduleParam);
709
+ }
710
+ return true;
711
+ }, {
712
+ message: "Invalid model or model/module/submodule combination. Use zudelloListModels to see valid options.",
713
+ });
714
+ }
715
+ // ============================================================================
716
+ // Utility Functions and Helpers
717
+ // ============================================================================
718
+ /**
719
+ * Get human-readable description for a model
720
+ */
721
+ export function getModelDescription(model) {
722
+ const descriptions = {
723
+ Budget: "Financial budget planning and tracking",
724
+ Contract: "Contract management and agreements",
725
+ Account: "Chart of accounts and accounting structure",
726
+ AccountCategory: "Grouping categories for accounts",
727
+ AccountGroup: "Account group classifications",
728
+ AccountingPeriod: "Financial reporting periods",
729
+ AmortizationSchedule: "Asset depreciation schedules",
730
+ Batch: "Inventory batches and lots",
731
+ Bin: "Storage location bins",
732
+ ContractCategory: "Contract classification categories",
733
+ ContractGroup: "Contract group classifications",
734
+ CostCentre: "Cost center definitions",
735
+ CostType: "Types of costs and expenses",
736
+ Currency: "Currency definitions and exchange rates",
737
+ CustomerCategory: "Customer classification categories",
738
+ CustomerGroup: "Customer group classifications",
739
+ Department: "Organizational departments",
740
+ ExpenseCategory: "Expense classification categories",
741
+ FixedAsset: "Fixed asset management",
742
+ ItemCategory: "Product/item classification categories",
743
+ ItemGroup: "Product/item group classifications",
744
+ Location: "Physical locations and sites",
745
+ MileageRate: "Mileage reimbursement rates",
746
+ PaymentMethod: "Payment method definitions",
747
+ PaymentTerm: "Payment terms and conditions",
748
+ Project: "Project management and tracking",
749
+ ProjectGroup: "Project group classifications",
750
+ ProjectTask: "Individual project tasks",
751
+ ProjectType: "Types of projects",
752
+ Subsidiary: "Company subsidiaries",
753
+ SupplierCategory: "Supplier classification categories",
754
+ SupplierGroup: "Supplier group classifications",
755
+ TaxRate: "Tax rate definitions",
756
+ TaxSolution: "Tax calculation solutions",
757
+ TeamAddress: "Team and address information",
758
+ UnitOfMeasure: "Measurement units (kg, m, etc.)",
759
+ Warehouse: "Warehouse and storage facilities",
760
+ Zone: "Geographic or functional zones",
761
+ Transaction: "Business transactions (invoices, orders, receipts, etc.)",
762
+ Item: "Products and inventory items",
763
+ Customer: "Customer relationship management",
764
+ Employee: "Employee information and management",
765
+ Supplier: "Supplier relationship management",
766
+ };
767
+ return descriptions[model] || "Zudello business entity";
768
+ }
769
+ /**
770
+ * Get all valid combinations for a specific model
771
+ */
772
+ export function getCombinationsForModel(model) {
773
+ return ZUDELLO_MODEL_COMBINATIONS.filter(combo => combo.model === model);
774
+ }
775
+ /**
776
+ * Format model combinations as human-readable strings
777
+ */
778
+ export function formatCombination(combination) {
779
+ return `${combination.model} (${combination.module}/${combination.submodule})`;
780
+ }
781
+ /**
782
+ * Get examples for tool descriptions
783
+ */
784
+ export function getModelExamples() {
785
+ const examples = [
786
+ "Transaction (invoices, orders, receipts)",
787
+ "Item (products, inventory)",
788
+ "Customer/Supplier/Employee (business entities)",
789
+ "Budget/Contract (financial documents)",
790
+ "Account/Department/Location (dimensional data)"
791
+ ];
792
+ return examples.join(", ");
793
+ }
794
+ // ============================================================================
795
+ // Sentence Automation Constants
796
+ // ============================================================================
797
+ /**
798
+ * Valid trigger event types for sentence automation.
799
+ * These determine when a sentence rule is evaluated.
800
+ */
801
+ export const ZUDELLO_TRIGGER_EVENTS = [
802
+ "submit",
803
+ "create",
804
+ "delete",
805
+ "update",
806
+ "converted",
807
+ "extract",
808
+ "approval",
809
+ "related_resource_updated",
810
+ "button",
811
+ ];
812
+ /**
813
+ * Descriptions for trigger event types
814
+ */
815
+ export const ZUDELLO_TRIGGER_EVENT_DESCRIPTIONS = {
816
+ submit: "When a document is submitted for processing",
817
+ create: "When a new document is created",
818
+ delete: "When a document is deleted",
819
+ update: "When a document is updated/modified",
820
+ converted: "When a document is converted to another type",
821
+ extract: "When data is extracted from a document (e.g., OCR processing)",
822
+ approval: "When an approval action occurs (approved/rejected)",
823
+ related_resource_updated: "When a related resource is updated",
824
+ button: "When a custom button is clicked",
825
+ };
826
+ /**
827
+ * Valid action codes for sentence automation.
828
+ * Use zudelloListSentenceResources with resourceType 'ACTION_TEMPLATE' to get full payload structure.
829
+ */
830
+ export const ZUDELLO_ACTION_CODES = [
831
+ "ASSIGN",
832
+ "UNASSIGN",
833
+ "UNASSIGN_ALL",
834
+ "COMPLETE",
835
+ "SET_STATUS",
836
+ "SET_FIELD",
837
+ "GET_APPROVAL",
838
+ "APPROVAL_DOA",
839
+ "APPROVAL_MANAGER",
840
+ "APPROVAL_SET_LIMIT",
841
+ "MARK_AS_APPROVED",
842
+ "RESTART_FLOW",
843
+ "CANCEL_PROCESSING",
844
+ "CONSOLIDATE_LINES",
845
+ "REMOVE_MATCHED_LINES",
846
+ "RUN_INTEGRATION_API_TRIGGER",
847
+ "START_WORKFLOW",
848
+ "POST_NOTICE",
849
+ "CONVERT",
850
+ "SEND_EMAIL",
851
+ "GENERATE_PDF",
852
+ "COMPUTE_FIELD",
853
+ ];
854
+ /**
855
+ * Descriptions for action codes
856
+ */
857
+ export const ZUDELLO_ACTION_CODE_DESCRIPTIONS = {
858
+ ASSIGN: "Assign users to a document",
859
+ UNASSIGN: "Remove specific users from assignment",
860
+ UNASSIGN_ALL: "Remove all assigned users",
861
+ COMPLETE: "Complete document processing",
862
+ SET_STATUS: "Set the document status",
863
+ SET_FIELD: "Set a specific field value",
864
+ GET_APPROVAL: "Request approval from specified users",
865
+ APPROVAL_DOA: "Request approval based on Delegation of Authority",
866
+ APPROVAL_MANAGER: "Request approval from management tree",
867
+ APPROVAL_SET_LIMIT: "Set approval limit from dataset",
868
+ MARK_AS_APPROVED: "Mark document as approved",
869
+ RESTART_FLOW: "Restart the approval flow",
870
+ CANCEL_PROCESSING: "Stop/cancel document processing",
871
+ CONSOLIDATE_LINES: "Consolidate document line items",
872
+ REMOVE_MATCHED_LINES: "Remove matched line items",
873
+ RUN_INTEGRATION_API_TRIGGER: "Run an integration API trigger",
874
+ START_WORKFLOW: "Start a workflow",
875
+ POST_NOTICE: "Post a notice/notification",
876
+ CONVERT: "Convert document to another type",
877
+ SEND_EMAIL: "Send an email notification",
878
+ GENERATE_PDF: "Generate a PDF document",
879
+ COMPUTE_FIELD: "Compute/calculate field values",
880
+ };
881
+ /**
882
+ * Valid condition codes for sentence automation.
883
+ * Use zudelloListSentenceResources with resourceType 'CONDITION_TEMPLATE' to get full payload structure.
884
+ */
885
+ export const ZUDELLO_CONDITION_CODES = [
886
+ "ALLOCATION_PO",
887
+ "ALLOCATION_RECEIPT",
888
+ "VARIANCE_AMOUNT",
889
+ "VARIANCE_PERC",
890
+ "APPROVED_TRUE",
891
+ "APPROVED_FALSE",
892
+ ];
893
+ /**
894
+ * Descriptions for condition codes
895
+ */
896
+ export const ZUDELLO_CONDITION_CODE_DESCRIPTIONS = {
897
+ ALLOCATION_PO: "Check allocation status against Purchase Order",
898
+ ALLOCATION_RECEIPT: "Check allocation status against Receipt",
899
+ VARIANCE_AMOUNT: "Check variance amount (e.g., PO vs Invoice)",
900
+ VARIANCE_PERC: "Check variance percentage",
901
+ APPROVED_TRUE: "Document has been approved",
902
+ APPROVED_FALSE: "Document has not been approved",
903
+ };
904
+ /**
905
+ * Sentence resource types for the listSentenceResources API
906
+ */
907
+ export const ZUDELLO_SENTENCE_RESOURCE_TYPES = [
908
+ "ACTION_TEMPLATE",
909
+ "CONDITION_TEMPLATE",
910
+ ];
911
+ // ============================================================================
912
+ // Sentence Validation and Helper Functions
913
+ // ============================================================================
914
+ /**
915
+ * Check if a trigger event is valid
916
+ */
917
+ export function isValidTriggerEvent(event) {
918
+ return ZUDELLO_TRIGGER_EVENTS.includes(event);
919
+ }
920
+ /**
921
+ * Check if an action code is valid
922
+ */
923
+ export function isValidActionCode(code) {
924
+ return ZUDELLO_ACTION_CODES.includes(code);
925
+ }
926
+ /**
927
+ * Check if a condition code is valid
928
+ */
929
+ export function isValidConditionCode(code) {
930
+ return ZUDELLO_CONDITION_CODES.includes(code);
931
+ }
932
+ /**
933
+ * Get description for a trigger event
934
+ */
935
+ export function getTriggerEventDescription(event) {
936
+ return ZUDELLO_TRIGGER_EVENT_DESCRIPTIONS[event];
937
+ }
938
+ /**
939
+ * Get description for an action code
940
+ */
941
+ export function getActionCodeDescription(code) {
942
+ return ZUDELLO_ACTION_CODE_DESCRIPTIONS[code];
943
+ }
944
+ /**
945
+ * Get description for a condition code
946
+ */
947
+ export function getConditionCodeDescription(code) {
948
+ return ZUDELLO_CONDITION_CODE_DESCRIPTIONS[code];
949
+ }
950
+ /**
951
+ * Get a usage guide for sentence automation.
952
+ * This can be referenced by tools for documentation.
953
+ */
954
+ export function getSentenceUsageGuide() {
955
+ return `Sentence Automation Guide:
956
+
957
+ Sentences are automation rules evaluated top-to-bottom when triggered.
958
+
959
+ TRIGGER EVENTS (when the rule fires):
960
+ - submit: Document submitted for processing
961
+ - create: New document created
962
+ - update: Document modified
963
+ - extract: Data extracted (OCR)
964
+ - approval: Approval action occurred
965
+ - converted: Document converted
966
+ - button: Custom button clicked
967
+ - related_resource_updated: Related resource changed
968
+ - delete: Document deleted
969
+
970
+ COMMON ACTIONS:
971
+ - ASSIGN/UNASSIGN: Manage document assignees
972
+ - SET_STATUS: Change document status
973
+ - SET_FIELD: Set field values
974
+ - COMPLETE: Complete processing
975
+ - GET_APPROVAL/APPROVAL_DOA/APPROVAL_MANAGER: Request approvals
976
+ - SEND_EMAIL: Send notifications
977
+ - RUN_INTEGRATION_API_TRIGGER: Execute integrations
978
+ - START_WORKFLOW: Begin workflows
979
+
980
+ CONDITIONS (optional filters):
981
+ - VARIANCE_AMOUNT/VARIANCE_PERC: Check variances
982
+ - APPROVED_TRUE/APPROVED_FALSE: Check approval status
983
+ - ALLOCATION_PO/ALLOCATION_RECEIPT: Check allocations
984
+
985
+ IMPORTANT:
986
+ 1. Use listSentenceResources to get full action/condition payload structures
987
+ 2. Sentence order matters - use updateSentencesOrder after creating
988
+ 3. Include ALL module sentences when reordering, not just submodule`;
989
+ }
990
+ // ============================================================================
991
+ // Sentence Zod Schemas
992
+ // ============================================================================
993
+ /**
994
+ * Zod schema for trigger events
995
+ */
996
+ export const zudelloTriggerEventSchema = z.enum(ZUDELLO_TRIGGER_EVENTS).describe("Trigger event type. Common: submit (document submitted), extract (OCR complete), approval (approval action), " +
997
+ "update (document modified), create (new document). Others: converted, button, related_resource_updated, delete.");
998
+ /**
999
+ * Zod schema for action codes
1000
+ */
1001
+ export const zudelloActionCodeSchema = z.enum(ZUDELLO_ACTION_CODES).describe("Action code. Common: ASSIGN (assign users), COMPLETE (finish processing), SET_STATUS, SET_FIELD, " +
1002
+ "GET_APPROVAL/APPROVAL_DOA/APPROVAL_MANAGER (request approvals), SEND_EMAIL, START_WORKFLOW. " +
1003
+ "Use listSentenceResources with resourceType 'ACTION_TEMPLATE' for full payload structure.");
1004
+ /**
1005
+ * Zod schema for condition codes
1006
+ */
1007
+ export const zudelloConditionCodeSchema = z.enum(ZUDELLO_CONDITION_CODES).describe("Condition code. VARIANCE_AMOUNT/VARIANCE_PERC (check variances), APPROVED_TRUE/APPROVED_FALSE (approval status), " +
1008
+ "ALLOCATION_PO/ALLOCATION_RECEIPT (allocation status). Use listSentenceResources with resourceType 'CONDITION_TEMPLATE' for full payload.");
1009
+ /**
1010
+ * Zod schema for sentence resource types
1011
+ */
1012
+ export const zudelloSentenceResourceTypeSchema = z.enum(ZUDELLO_SENTENCE_RESOURCE_TYPES).describe("Sentence resource type. ACTION_TEMPLATE: available actions for sentences. CONDITION_TEMPLATE: available conditions for sentences.");
1013
+ /**
1014
+ * Common action templates with complete payload structures
1015
+ * Extracted from sentence_actions.md
1016
+ */
1017
+ export const ZUDELLO_ACTION_TEMPLATES = {
1018
+ ASSIGN: {
1019
+ code: "ASSIGN",
1020
+ name: "assign",
1021
+ operator: {
1022
+ value: "add_to_array",
1023
+ default: "add_to_array",
1024
+ use: "uuid"
1025
+ },
1026
+ field: {
1027
+ value: "assignees",
1028
+ meta: {
1029
+ path: "assignees",
1030
+ type: "Relation",
1031
+ label: "Assignees",
1032
+ sentence_path: "assignees",
1033
+ display_format: "{first_name} {last_name}",
1034
+ options: {
1035
+ use: "uuid",
1036
+ model: "AssignedUser",
1037
+ source: "team-data",
1038
+ relation_type: "One-to-Many"
1039
+ }
1040
+ }
1041
+ },
1042
+ values: [],
1043
+ template: "assign {value}"
1044
+ },
1045
+ SET_STATUS: {
1046
+ code: "SET_STATUS",
1047
+ name: "set status",
1048
+ operator: {
1049
+ value: "set_value",
1050
+ default: "set_value",
1051
+ use: "key"
1052
+ },
1053
+ field: {
1054
+ value: "status",
1055
+ meta: {
1056
+ path: "status",
1057
+ type: "Relation",
1058
+ label: "Status",
1059
+ sentence_path: "status",
1060
+ display_format: "name",
1061
+ options: {
1062
+ use: "key",
1063
+ model: "Status",
1064
+ source: "general-store"
1065
+ }
1066
+ }
1067
+ },
1068
+ values: [],
1069
+ template: "set status to {value}"
1070
+ },
1071
+ GET_APPROVAL: {
1072
+ code: "GET_APPROVAL",
1073
+ name: "get approval",
1074
+ operator: {
1075
+ value: "approve_document",
1076
+ default: "approve_document"
1077
+ },
1078
+ values: [],
1079
+ template: "get approval {value}"
1080
+ },
1081
+ APPROVAL_DOA: {
1082
+ code: "APPROVAL_DOA",
1083
+ name: "get approval (DoA)",
1084
+ operator: {
1085
+ value: "approve_document_doa",
1086
+ default: "approve_document_doa"
1087
+ },
1088
+ values: [],
1089
+ template: "get approval {value}"
1090
+ },
1091
+ APPROVAL_MANAGER: {
1092
+ code: "APPROVAL_MANAGER",
1093
+ name: "get approval (Management Tree)",
1094
+ operator: {
1095
+ value: "approve_document_manager",
1096
+ default: "approve_document_manager"
1097
+ },
1098
+ values: [],
1099
+ template: "get approval {value}"
1100
+ },
1101
+ MARK_AS_APPROVED: {
1102
+ code: "MARK_AS_APPROVED",
1103
+ name: "mark as approved",
1104
+ operator: {
1105
+ value: "set_value",
1106
+ default: "set_value"
1107
+ },
1108
+ field: {
1109
+ value: "is_approved",
1110
+ meta: {
1111
+ path: "is_approved",
1112
+ type: "Boolean",
1113
+ label: "Is Approved",
1114
+ sentence_path: "is_approved"
1115
+ }
1116
+ },
1117
+ values: [{
1118
+ value: true,
1119
+ source: "internal",
1120
+ default: true
1121
+ }],
1122
+ template: "mark as approved"
1123
+ },
1124
+ CANCEL_PROCESSING: {
1125
+ code: "CANCEL_PROCESSING",
1126
+ name: "stop processing",
1127
+ operator: {
1128
+ value: "cancel",
1129
+ default: "cancel"
1130
+ },
1131
+ values: [],
1132
+ template: "stop processing"
1133
+ },
1134
+ COMPLETE: {
1135
+ code: "COMPLETE",
1136
+ name: "complete processing",
1137
+ operator: {
1138
+ value: "complete_document",
1139
+ default: "complete_document"
1140
+ },
1141
+ values: [],
1142
+ template: "complete processing"
1143
+ },
1144
+ SET_FIELD: {
1145
+ code: "SET_FIELD",
1146
+ name: "set field",
1147
+ operator: {
1148
+ value: "set_value",
1149
+ default: "set_value"
1150
+ },
1151
+ values: [],
1152
+ template: "set {field} to {value}"
1153
+ },
1154
+ SEND_EMAIL: {
1155
+ code: "SEND_EMAIL",
1156
+ name: "send email",
1157
+ operator: {
1158
+ value: "send_email",
1159
+ default: "send_email"
1160
+ },
1161
+ values: [],
1162
+ template: "send email {value}"
1163
+ },
1164
+ RUN_INTEGRATION_API_TRIGGER: {
1165
+ code: "RUN_INTEGRATION_API_TRIGGER",
1166
+ name: "run trigger",
1167
+ operator: {
1168
+ value: "run_integration_api_trigger",
1169
+ default: "run_integration_api_trigger"
1170
+ },
1171
+ values: [],
1172
+ template: "run {value}"
1173
+ },
1174
+ START_WORKFLOW: {
1175
+ code: "START_WORKFLOW",
1176
+ name: "start workflow",
1177
+ operator: {
1178
+ value: "run_workflow",
1179
+ default: "run_workflow"
1180
+ },
1181
+ values: [],
1182
+ template: "start workflow {value}"
1183
+ }
1184
+ };
1185
+ /**
1186
+ * Common condition templates with complete payload structures
1187
+ * Extracted from sentence_conditions.md
1188
+ */
1189
+ export const ZUDELLO_CONDITION_TEMPLATES = {
1190
+ APPROVED_TRUE: {
1191
+ code: "APPROVED_TRUE",
1192
+ name: "has been approved",
1193
+ operator: {
1194
+ value: "==",
1195
+ default: "=="
1196
+ },
1197
+ field: {
1198
+ value: "is_approved",
1199
+ meta: {
1200
+ path: "is_approved",
1201
+ type: "Boolean",
1202
+ label: "Is Approved",
1203
+ sentence_path: "is_approved"
1204
+ }
1205
+ },
1206
+ values: [{
1207
+ value: true,
1208
+ source: "internal",
1209
+ default: true
1210
+ }],
1211
+ template: "has been approved"
1212
+ },
1213
+ APPROVED_FALSE: {
1214
+ code: "APPROVED_FALSE",
1215
+ name: "has not been approved",
1216
+ operator: {
1217
+ value: "==",
1218
+ default: "=="
1219
+ },
1220
+ field: {
1221
+ value: "is_approved",
1222
+ meta: {
1223
+ path: "is_approved",
1224
+ type: "Boolean",
1225
+ label: "Is Approved",
1226
+ sentence_path: "is_approved"
1227
+ }
1228
+ },
1229
+ values: [{
1230
+ value: false,
1231
+ source: "internal",
1232
+ default: false
1233
+ }],
1234
+ template: "has not been approved"
1235
+ },
1236
+ VARIANCE_AMOUNT: {
1237
+ code: "VARIANCE_AMOUNT",
1238
+ name: "Variance Amount",
1239
+ operator: {
1240
+ value: ">=",
1241
+ default: ">="
1242
+ },
1243
+ field: {
1244
+ value: "variance_amount_local_json.purchasing_order",
1245
+ meta: {
1246
+ path: "variance_amount_local_json__purchasing_order",
1247
+ type: "Number",
1248
+ label: "Purchasing Order",
1249
+ sentence_path: "variance_amount_local_json.purchasing_order"
1250
+ }
1251
+ },
1252
+ values: [],
1253
+ template: "Variance Amount {operator} {value}"
1254
+ },
1255
+ VARIANCE_PERC: {
1256
+ code: "VARIANCE_PERC",
1257
+ name: "Variance Percentage",
1258
+ operator: {
1259
+ value: ">=",
1260
+ default: ">="
1261
+ },
1262
+ field: {
1263
+ value: "variance_percentage_json.purchasing_order",
1264
+ meta: {
1265
+ path: "variance_percentage_json__purchasing_order",
1266
+ type: "Number",
1267
+ label: "Purchasing Order",
1268
+ sentence_path: "variance_percentage_json.purchasing_order"
1269
+ }
1270
+ },
1271
+ values: [],
1272
+ template: "Variance Percentage {operator}{value}%"
1273
+ },
1274
+ ALLOCATION_PO: {
1275
+ code: "ALLOCATION_PO",
1276
+ name: "Allocation Status - PO",
1277
+ operator: {
1278
+ value: "==",
1279
+ default: "=="
1280
+ },
1281
+ field: {
1282
+ value: "allocation_status_json.purchasing_order",
1283
+ meta: {
1284
+ path: "allocation_status_json__purchasing_order",
1285
+ type: "String",
1286
+ label: "Purchasing Order",
1287
+ sentence_path: "allocation_status_json.purchasing_order"
1288
+ }
1289
+ },
1290
+ values: [],
1291
+ template: "Allocation Status - Purchase Order {operator} {value}"
1292
+ },
1293
+ ALLOCATION_RECEIPT: {
1294
+ code: "ALLOCATION_RECEIPT",
1295
+ name: "Allocation Status - Receipt",
1296
+ operator: {
1297
+ value: "==",
1298
+ default: "=="
1299
+ },
1300
+ field: {
1301
+ value: "allocation_status_json.inventory_receipt",
1302
+ meta: {
1303
+ path: "allocation_status_json__inventory_receipt",
1304
+ type: "String",
1305
+ label: "Inventory Receipt",
1306
+ sentence_path: "allocation_status_json.inventory_receipt"
1307
+ }
1308
+ },
1309
+ values: [],
1310
+ template: "Allocation Status - Receipt {operator} {value}"
1311
+ }
1312
+ };
1313
+ // ============================================================================
1314
+ // Template Generation Utilities
1315
+ // ============================================================================
1316
+ /**
1317
+ * Get an action template by code
1318
+ */
1319
+ export function getActionTemplate(code) {
1320
+ return ZUDELLO_ACTION_TEMPLATES[code];
1321
+ }
1322
+ /**
1323
+ * Get a condition template by code
1324
+ */
1325
+ export function getConditionTemplate(code) {
1326
+ return ZUDELLO_CONDITION_TEMPLATES[code];
1327
+ }
1328
+ /**
1329
+ * Generate a sentence action payload from template
1330
+ */
1331
+ export function generateActionPayload(code, values, field, operator, otherwise) {
1332
+ const template = getActionTemplate(code);
1333
+ if (!template) {
1334
+ throw new Error(`Action template not found for code: ${code}`);
1335
+ }
1336
+ return {
1337
+ code: template.code,
1338
+ name: template.name,
1339
+ operator: {
1340
+ value: operator || template.operator.value,
1341
+ default: template.operator.default,
1342
+ ...(template.operator.use && { use: template.operator.use })
1343
+ },
1344
+ ...(template.field && {
1345
+ field: {
1346
+ value: field || template.field.value,
1347
+ meta: template.field.meta
1348
+ }
1349
+ }),
1350
+ values: values || template.values || [],
1351
+ template: template.template,
1352
+ ...(otherwise !== undefined && { otherwise })
1353
+ };
1354
+ }
1355
+ /**
1356
+ * Generate a sentence condition payload from template
1357
+ */
1358
+ export function generateConditionPayload(code, values, field, operator) {
1359
+ const template = getConditionTemplate(code);
1360
+ if (!template) {
1361
+ throw new Error(`Condition template not found for code: ${code}`);
1362
+ }
1363
+ return {
1364
+ code: template.code,
1365
+ name: template.name,
1366
+ operator: {
1367
+ value: operator || template.operator.value,
1368
+ default: template.operator.default,
1369
+ ...(template.operator.use && { use: template.operator.use })
1370
+ },
1371
+ field: {
1372
+ value: field || template.field.value,
1373
+ meta: template.field.meta
1374
+ },
1375
+ values: values || template.values
1376
+ };
1377
+ }
1378
+ /**
1379
+ * Generate a complete sentence recipe with trigger, conditions, and actions
1380
+ */
1381
+ export function generateSentenceRecipe(options) {
1382
+ return {
1383
+ changeable: options.changeable ?? true,
1384
+ trigger: {
1385
+ trigger: "TEAM_DATA",
1386
+ event_type: options.trigger.event_type,
1387
+ event_model: options.trigger.event_model || "Transaction",
1388
+ module: options.trigger.module,
1389
+ submodule: options.trigger.submodule,
1390
+ enabled: options.trigger.enabled ?? true,
1391
+ changeable: true
1392
+ },
1393
+ conditions: (options.conditions || []).map(condition => ({
1394
+ ...generateConditionPayload(condition.code, condition.values, condition.field, condition.operator),
1395
+ changeable: true
1396
+ })),
1397
+ actions: options.actions.map(action => ({
1398
+ ...generateActionPayload(action.code, action.values, action.field, action.operator, action.otherwise),
1399
+ changeable: true
1400
+ }))
1401
+ };
1402
+ }
1403
+ /**
1404
+ * Common sentence recipe templates for typical workflows
1405
+ */
1406
+ export const SENTENCE_RECIPE_TEMPLATES = {
1407
+ /**
1408
+ * Simple status change on document submit
1409
+ */
1410
+ SIMPLE_STATUS_CHANGE: (module, submodule, statusKey) => generateSentenceRecipe({
1411
+ trigger: {
1412
+ module,
1413
+ submodule,
1414
+ event_type: "submit"
1415
+ },
1416
+ actions: [{
1417
+ code: "SET_STATUS",
1418
+ values: [{ value: { key: statusKey }, source: "internal" }]
1419
+ }]
1420
+ }),
1421
+ /**
1422
+ * Approval workflow with fallback to rejected status
1423
+ */
1424
+ APPROVAL_WITH_FALLBACK: (module, submodule, approvalType = "GET_APPROVAL") => generateSentenceRecipe({
1425
+ trigger: {
1426
+ module,
1427
+ submodule,
1428
+ event_type: "submit"
1429
+ },
1430
+ actions: [
1431
+ {
1432
+ code: approvalType,
1433
+ values: [] // Must be populated with approval configuration
1434
+ },
1435
+ {
1436
+ code: "SET_STATUS",
1437
+ values: [{ value: { key: "REJECT" }, source: "internal" }],
1438
+ otherwise: true
1439
+ },
1440
+ {
1441
+ code: "ASSIGN",
1442
+ values: [{ value: "submitted_by", source: "external", meta: { path: "submitted_by", type: "Relation" } }]
1443
+ },
1444
+ {
1445
+ code: "CANCEL_PROCESSING"
1446
+ }
1447
+ ]
1448
+ }),
1449
+ /**
1450
+ * Conditional processing based on document type
1451
+ */
1452
+ CONDITIONAL_BY_DOCUMENT_TYPE: (module, submodule, documentTypeProperty, actions) => generateSentenceRecipe({
1453
+ trigger: {
1454
+ module,
1455
+ submodule,
1456
+ event_type: "submit"
1457
+ },
1458
+ conditions: [{
1459
+ code: "CUSTOM_CONDITION", // This would need to be added to condition templates
1460
+ field: "document_type",
1461
+ operator: "==",
1462
+ values: [{ value: { property: documentTypeProperty }, source: "internal" }]
1463
+ }],
1464
+ actions
1465
+ })
1466
+ };
1467
+ //# sourceMappingURL=zudello.js.map