digital-tools 2.1.1 → 2.3.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 (293) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +2 -0
  3. package/dist/client.d.ts +109 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +69 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/define.d.ts +2 -2
  8. package/dist/define.d.ts.map +1 -1
  9. package/dist/define.js +22 -20
  10. package/dist/define.js.map +1 -1
  11. package/dist/function-ref.d.ts +229 -0
  12. package/dist/function-ref.d.ts.map +1 -0
  13. package/dist/function-ref.js +28 -0
  14. package/dist/function-ref.js.map +1 -0
  15. package/dist/function-sugar.d.ts +57 -0
  16. package/dist/function-sugar.d.ts.map +1 -0
  17. package/dist/function-sugar.js +79 -0
  18. package/dist/function-sugar.js.map +1 -0
  19. package/dist/index.d.ts +10 -3
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +24 -4
  22. package/dist/index.js.map +1 -1
  23. package/dist/providers/analytics/mixpanel.d.ts.map +1 -1
  24. package/dist/providers/analytics/mixpanel.js +21 -18
  25. package/dist/providers/analytics/mixpanel.js.map +1 -1
  26. package/dist/providers/calendar/cal-com.d.ts.map +1 -1
  27. package/dist/providers/calendar/cal-com.js +10 -10
  28. package/dist/providers/calendar/cal-com.js.map +1 -1
  29. package/dist/providers/calendar/google-calendar.d.ts.map +1 -1
  30. package/dist/providers/calendar/google-calendar.js +4 -4
  31. package/dist/providers/calendar/google-calendar.js.map +1 -1
  32. package/dist/providers/crm/hubspot.d.ts.map +1 -1
  33. package/dist/providers/crm/hubspot.js +107 -85
  34. package/dist/providers/crm/hubspot.js.map +1 -1
  35. package/dist/providers/development/github.d.ts.map +1 -1
  36. package/dist/providers/development/github.js +40 -43
  37. package/dist/providers/development/github.js.map +1 -1
  38. package/dist/providers/ecommerce/shopify.d.ts.map +1 -1
  39. package/dist/providers/ecommerce/shopify.js +79 -62
  40. package/dist/providers/ecommerce/shopify.js.map +1 -1
  41. package/dist/providers/email/resend.d.ts.map +1 -1
  42. package/dist/providers/email/resend.js +20 -16
  43. package/dist/providers/email/resend.js.map +1 -1
  44. package/dist/providers/email/sendgrid.d.ts.map +1 -1
  45. package/dist/providers/email/sendgrid.js +12 -9
  46. package/dist/providers/email/sendgrid.js.map +1 -1
  47. package/dist/providers/finance/stripe.d.ts.map +1 -1
  48. package/dist/providers/finance/stripe.js +44 -42
  49. package/dist/providers/finance/stripe.js.map +1 -1
  50. package/dist/providers/forms/typeform.d.ts.map +1 -1
  51. package/dist/providers/forms/typeform.js +68 -58
  52. package/dist/providers/forms/typeform.js.map +1 -1
  53. package/dist/providers/knowledge/notion.d.ts.map +1 -1
  54. package/dist/providers/knowledge/notion.js +75 -41
  55. package/dist/providers/knowledge/notion.js.map +1 -1
  56. package/dist/providers/marketing/mailchimp.d.ts.map +1 -1
  57. package/dist/providers/marketing/mailchimp.js +74 -61
  58. package/dist/providers/marketing/mailchimp.js.map +1 -1
  59. package/dist/providers/media/cloudinary.d.ts.map +1 -1
  60. package/dist/providers/media/cloudinary.js +30 -28
  61. package/dist/providers/media/cloudinary.js.map +1 -1
  62. package/dist/providers/messaging/slack.d.ts.map +1 -1
  63. package/dist/providers/messaging/slack.js +75 -58
  64. package/dist/providers/messaging/slack.js.map +1 -1
  65. package/dist/providers/messaging/twilio-sms.d.ts.map +1 -1
  66. package/dist/providers/messaging/twilio-sms.js +33 -15
  67. package/dist/providers/messaging/twilio-sms.js.map +1 -1
  68. package/dist/providers/project-management/linear.d.ts.map +1 -1
  69. package/dist/providers/project-management/linear.js +31 -27
  70. package/dist/providers/project-management/linear.js.map +1 -1
  71. package/dist/providers/spreadsheet/google-sheets.d.ts.map +1 -1
  72. package/dist/providers/spreadsheet/google-sheets.js +21 -18
  73. package/dist/providers/spreadsheet/google-sheets.js.map +1 -1
  74. package/dist/providers/spreadsheet/xlsx.d.ts.map +1 -1
  75. package/dist/providers/spreadsheet/xlsx.js +4 -4
  76. package/dist/providers/spreadsheet/xlsx.js.map +1 -1
  77. package/dist/providers/storage/index.js +1 -0
  78. package/dist/providers/storage/index.js.map +1 -1
  79. package/dist/providers/storage/s3.d.ts.map +1 -1
  80. package/dist/providers/storage/s3.js +36 -27
  81. package/dist/providers/storage/s3.js.map +1 -1
  82. package/dist/providers/support/zendesk.d.ts.map +1 -1
  83. package/dist/providers/support/zendesk.js +24 -25
  84. package/dist/providers/support/zendesk.js.map +1 -1
  85. package/dist/providers/tasks/todoist.d.ts.map +1 -1
  86. package/dist/providers/tasks/todoist.js +18 -18
  87. package/dist/providers/tasks/todoist.js.map +1 -1
  88. package/dist/providers/video-conferencing/google-meet.d.ts.map +1 -1
  89. package/dist/providers/video-conferencing/google-meet.js +11 -11
  90. package/dist/providers/video-conferencing/google-meet.js.map +1 -1
  91. package/dist/providers/video-conferencing/jitsi.js +14 -14
  92. package/dist/providers/video-conferencing/jitsi.js.map +1 -1
  93. package/dist/providers/video-conferencing/teams.d.ts.map +1 -1
  94. package/dist/providers/video-conferencing/teams.js +9 -7
  95. package/dist/providers/video-conferencing/teams.js.map +1 -1
  96. package/dist/providers/video-conferencing/zoom.d.ts.map +1 -1
  97. package/dist/providers/video-conferencing/zoom.js +26 -24
  98. package/dist/providers/video-conferencing/zoom.js.map +1 -1
  99. package/dist/tools/data.d.ts.map +1 -1
  100. package/dist/tools/data.js +5 -12
  101. package/dist/tools/data.js.map +1 -1
  102. package/dist/tools/index.d.ts +1 -0
  103. package/dist/tools/index.d.ts.map +1 -1
  104. package/dist/tools/index.js +1 -0
  105. package/dist/tools/index.js.map +1 -1
  106. package/dist/tools/system.d.ts +289 -0
  107. package/dist/tools/system.d.ts.map +1 -0
  108. package/dist/tools/system.js +752 -0
  109. package/dist/tools/system.js.map +1 -0
  110. package/dist/tools/web.d.ts.map +1 -1
  111. package/dist/tools/web.js +22 -10
  112. package/dist/tools/web.js.map +1 -1
  113. package/dist/track-record.d.ts +101 -0
  114. package/dist/track-record.d.ts.map +1 -0
  115. package/dist/track-record.js +17 -0
  116. package/dist/track-record.js.map +1 -0
  117. package/dist/types.d.ts +210 -9
  118. package/dist/types.d.ts.map +1 -1
  119. package/dist/verb-registration.d.ts +122 -0
  120. package/dist/verb-registration.d.ts.map +1 -0
  121. package/dist/verb-registration.js +176 -0
  122. package/dist/verb-registration.js.map +1 -0
  123. package/dist/worker.d.ts +93 -0
  124. package/dist/worker.d.ts.map +1 -0
  125. package/dist/worker.js +315 -0
  126. package/dist/worker.js.map +1 -0
  127. package/dist/wrap.d.ts +89 -0
  128. package/dist/wrap.d.ts.map +1 -0
  129. package/dist/wrap.js +225 -0
  130. package/dist/wrap.js.map +1 -0
  131. package/package.json +21 -4
  132. package/src/client.ts +136 -0
  133. package/src/define.ts +31 -37
  134. package/src/function-ref.ts +264 -0
  135. package/src/function-sugar.ts +134 -0
  136. package/src/index.ts +132 -10
  137. package/src/providers/analytics/mixpanel.ts +19 -18
  138. package/src/providers/calendar/cal-com.ts +29 -18
  139. package/src/providers/calendar/google-calendar.ts +20 -14
  140. package/src/providers/crm/hubspot.ts +225 -99
  141. package/src/providers/development/github.ts +206 -135
  142. package/src/providers/ecommerce/shopify.ts +250 -89
  143. package/src/providers/email/resend.ts +101 -28
  144. package/src/providers/email/sendgrid.ts +12 -9
  145. package/src/providers/finance/stripe.ts +128 -49
  146. package/src/providers/forms/typeform.ts +74 -58
  147. package/src/providers/knowledge/notion.ts +340 -88
  148. package/src/providers/marketing/mailchimp.ts +86 -70
  149. package/src/providers/media/cloudinary.ts +99 -41
  150. package/src/providers/messaging/slack.ts +283 -85
  151. package/src/providers/messaging/twilio-sms.ts +35 -15
  152. package/src/providers/project-management/linear.ts +143 -55
  153. package/src/providers/spreadsheet/google-sheets.ts +222 -56
  154. package/src/providers/spreadsheet/xlsx.ts +47 -16
  155. package/src/providers/storage/s3.ts +119 -47
  156. package/src/providers/support/zendesk.ts +196 -46
  157. package/src/providers/tasks/todoist.ts +20 -26
  158. package/src/providers/video-conferencing/google-meet.ts +17 -20
  159. package/src/providers/video-conferencing/jitsi.ts +14 -14
  160. package/src/providers/video-conferencing/teams.ts +14 -13
  161. package/src/providers/video-conferencing/zoom.ts +54 -49
  162. package/src/tools/data.ts +6 -16
  163. package/src/tools/index.ts +1 -0
  164. package/src/tools/system.ts +887 -0
  165. package/src/tools/web.ts +22 -10
  166. package/src/track-record.ts +106 -0
  167. package/src/types.ts +241 -13
  168. package/src/verb-registration.ts +197 -0
  169. package/src/worker.ts +370 -0
  170. package/src/wrap.ts +260 -0
  171. package/test/client.test.ts +146 -0
  172. package/test/communication-tools-extended.test.ts +734 -0
  173. package/test/data-tools-extended.test.ts +743 -0
  174. package/test/define-extended.test.ts +819 -0
  175. package/test/define.test.ts +150 -41
  176. package/test/entities.test.ts +623 -0
  177. package/test/extended-entities.test.ts +1228 -0
  178. package/test/provider-implementations.test.ts +725 -0
  179. package/test/provider-registry-extended.test.ts +583 -0
  180. package/test/providers/google-sheets.test.ts +851 -0
  181. package/test/providers/helpers.ts +554 -0
  182. package/test/providers/hubspot.test.ts +576 -0
  183. package/test/providers/slack.test.ts +932 -0
  184. package/test/providers/stripe.test.ts +701 -0
  185. package/test/providers.test.ts +578 -0
  186. package/test/system-tools-extended.test.ts +632 -0
  187. package/test/system.test.ts +673 -0
  188. package/test/tools.test.ts +15 -11
  189. package/test/types.test.ts +402 -0
  190. package/test/verb-registration.test.ts +395 -0
  191. package/test/web-tools.test.ts +553 -0
  192. package/test/worker-extended.test.ts +699 -0
  193. package/test/worker.test.ts +576 -0
  194. package/test/wrap.test.ts +366 -0
  195. package/tsconfig.json +3 -13
  196. package/vitest.config.ts +37 -0
  197. package/wrangler.jsonc +9 -0
  198. package/.turbo/turbo-build.log +0 -5
  199. package/dist/providers/voice/vapi.d.ts +0 -27
  200. package/dist/providers/voice/vapi.d.ts.map +0 -1
  201. package/dist/providers/voice/vapi.js +0 -440
  202. package/dist/providers/voice/vapi.js.map +0 -1
  203. package/src/define.js +0 -267
  204. package/src/entities/advertising.js +0 -999
  205. package/src/entities/ai.js +0 -756
  206. package/src/entities/analytics.js +0 -1588
  207. package/src/entities/automation.js +0 -601
  208. package/src/entities/communication.js +0 -1150
  209. package/src/entities/crm.js +0 -1386
  210. package/src/entities/design.js +0 -546
  211. package/src/entities/development.js +0 -2212
  212. package/src/entities/document.js +0 -874
  213. package/src/entities/ecommerce.js +0 -1429
  214. package/src/entities/experiment.js +0 -1039
  215. package/src/entities/finance.js +0 -3478
  216. package/src/entities/forms.js +0 -1892
  217. package/src/entities/hr.js +0 -661
  218. package/src/entities/identity.js +0 -997
  219. package/src/entities/index.js +0 -282
  220. package/src/entities/infrastructure.js +0 -1153
  221. package/src/entities/knowledge.js +0 -1438
  222. package/src/entities/marketing.js +0 -1610
  223. package/src/entities/media.js +0 -1634
  224. package/src/entities/notification.js +0 -1199
  225. package/src/entities/presentation.js +0 -1274
  226. package/src/entities/productivity.js +0 -1317
  227. package/src/entities/project-management.js +0 -1136
  228. package/src/entities/recruiting.js +0 -736
  229. package/src/entities/shipping.js +0 -509
  230. package/src/entities/signature.js +0 -1102
  231. package/src/entities/site.js +0 -222
  232. package/src/entities/spreadsheet.js +0 -1341
  233. package/src/entities/storage.js +0 -1198
  234. package/src/entities/support.js +0 -1166
  235. package/src/entities/video-conferencing.js +0 -1750
  236. package/src/entities/video.js +0 -950
  237. package/src/entities.js +0 -1663
  238. package/src/index.js +0 -74
  239. package/src/providers/analytics/index.js +0 -17
  240. package/src/providers/analytics/mixpanel.js +0 -255
  241. package/src/providers/calendar/cal-com.js +0 -303
  242. package/src/providers/calendar/google-calendar.js +0 -335
  243. package/src/providers/calendar/index.js +0 -20
  244. package/src/providers/crm/hubspot.js +0 -566
  245. package/src/providers/crm/index.js +0 -17
  246. package/src/providers/development/github.js +0 -472
  247. package/src/providers/development/index.js +0 -17
  248. package/src/providers/ecommerce/index.js +0 -17
  249. package/src/providers/ecommerce/shopify.js +0 -378
  250. package/src/providers/email/index.js +0 -20
  251. package/src/providers/email/resend.js +0 -258
  252. package/src/providers/email/sendgrid.js +0 -161
  253. package/src/providers/finance/index.js +0 -17
  254. package/src/providers/finance/stripe.js +0 -549
  255. package/src/providers/forms/index.js +0 -17
  256. package/src/providers/forms/typeform.js +0 -500
  257. package/src/providers/index.js +0 -123
  258. package/src/providers/knowledge/index.js +0 -17
  259. package/src/providers/knowledge/notion.js +0 -389
  260. package/src/providers/marketing/index.js +0 -17
  261. package/src/providers/marketing/mailchimp.js +0 -443
  262. package/src/providers/media/cloudinary.js +0 -318
  263. package/src/providers/media/index.js +0 -17
  264. package/src/providers/messaging/index.js +0 -20
  265. package/src/providers/messaging/slack.js +0 -393
  266. package/src/providers/messaging/twilio-sms.js +0 -249
  267. package/src/providers/project-management/index.js +0 -17
  268. package/src/providers/project-management/linear.js +0 -575
  269. package/src/providers/registry.js +0 -86
  270. package/src/providers/spreadsheet/google-sheets.js +0 -375
  271. package/src/providers/spreadsheet/index.js +0 -20
  272. package/src/providers/spreadsheet/xlsx.js +0 -423
  273. package/src/providers/storage/index.js +0 -24
  274. package/src/providers/storage/s3.js +0 -419
  275. package/src/providers/support/index.js +0 -17
  276. package/src/providers/support/zendesk.js +0 -373
  277. package/src/providers/tasks/index.js +0 -17
  278. package/src/providers/tasks/todoist.js +0 -286
  279. package/src/providers/types.js +0 -9
  280. package/src/providers/video-conferencing/google-meet.js +0 -286
  281. package/src/providers/video-conferencing/index.js +0 -31
  282. package/src/providers/video-conferencing/jitsi.js +0 -254
  283. package/src/providers/video-conferencing/teams.js +0 -270
  284. package/src/providers/video-conferencing/zoom.js +0 -332
  285. package/src/registry.js +0 -128
  286. package/src/tools/communication.js +0 -184
  287. package/src/tools/data.js +0 -205
  288. package/src/tools/index.js +0 -11
  289. package/src/tools/web.js +0 -137
  290. package/src/types.js +0 -10
  291. package/test/define.test.js +0 -306
  292. package/test/registry.test.js +0 -357
  293. package/test/tools.test.js +0 -363
@@ -1,661 +0,0 @@
1
- /**
2
- * HR Entity Types (Nouns)
3
- *
4
- * Human Resources entities for employee management, teams, time off,
5
- * performance reviews, and organizational structure.
6
- *
7
- * @packageDocumentation
8
- */
9
- // =============================================================================
10
- // Employee
11
- // =============================================================================
12
- /**
13
- * Employee entity
14
- *
15
- * Represents an employee in the organization.
16
- */
17
- export const Employee = {
18
- singular: 'employee',
19
- plural: 'employees',
20
- description: 'An employee in the organization',
21
- properties: {
22
- // Identity
23
- firstName: {
24
- type: 'string',
25
- description: 'First name',
26
- },
27
- lastName: {
28
- type: 'string',
29
- description: 'Last name',
30
- },
31
- displayName: {
32
- type: 'string',
33
- optional: true,
34
- description: 'Preferred display name',
35
- },
36
- email: {
37
- type: 'string',
38
- description: 'Work email address',
39
- },
40
- personalEmail: {
41
- type: 'string',
42
- optional: true,
43
- description: 'Personal email address',
44
- },
45
- phone: {
46
- type: 'string',
47
- optional: true,
48
- description: 'Work phone number',
49
- },
50
- employeeId: {
51
- type: 'string',
52
- optional: true,
53
- description: 'Internal employee ID',
54
- },
55
- // Employment
56
- status: {
57
- type: 'string',
58
- description: 'Employment status',
59
- examples: ['active', 'onboarding', 'on-leave', 'offboarding', 'terminated'],
60
- },
61
- type: {
62
- type: 'string',
63
- description: 'Employment type',
64
- examples: ['full-time', 'part-time', 'contractor', 'intern', 'temporary'],
65
- },
66
- title: {
67
- type: 'string',
68
- description: 'Job title',
69
- },
70
- department: {
71
- type: 'string',
72
- optional: true,
73
- description: 'Department name',
74
- },
75
- location: {
76
- type: 'string',
77
- optional: true,
78
- description: 'Work location',
79
- },
80
- workType: {
81
- type: 'string',
82
- optional: true,
83
- description: 'Work arrangement',
84
- examples: ['remote', 'hybrid', 'onsite'],
85
- },
86
- // Dates
87
- startDate: {
88
- type: 'datetime',
89
- description: 'Start date',
90
- },
91
- endDate: {
92
- type: 'datetime',
93
- optional: true,
94
- description: 'End date (if terminated)',
95
- },
96
- // Compensation
97
- salary: {
98
- type: 'number',
99
- optional: true,
100
- description: 'Annual salary',
101
- },
102
- currency: {
103
- type: 'string',
104
- optional: true,
105
- description: 'Currency for salary',
106
- },
107
- payFrequency: {
108
- type: 'string',
109
- optional: true,
110
- description: 'Pay frequency',
111
- examples: ['weekly', 'biweekly', 'semimonthly', 'monthly'],
112
- },
113
- // Profile
114
- avatarUrl: {
115
- type: 'url',
116
- optional: true,
117
- description: 'Profile photo URL',
118
- },
119
- bio: {
120
- type: 'string',
121
- optional: true,
122
- description: 'Short bio',
123
- },
124
- timezone: {
125
- type: 'string',
126
- optional: true,
127
- description: 'Preferred timezone',
128
- },
129
- },
130
- relationships: {
131
- manager: {
132
- type: 'Employee',
133
- required: false,
134
- description: 'Direct manager',
135
- },
136
- directReports: {
137
- type: 'Employee[]',
138
- description: 'Direct reports',
139
- },
140
- team: {
141
- type: 'Team',
142
- required: false,
143
- description: 'Primary team',
144
- },
145
- teams: {
146
- type: 'Team[]',
147
- description: 'All teams',
148
- },
149
- },
150
- actions: [
151
- 'create',
152
- 'update',
153
- 'onboard',
154
- 'offboard',
155
- 'terminate',
156
- 'promote',
157
- 'transfer',
158
- 'updateCompensation',
159
- ],
160
- events: [
161
- 'created',
162
- 'updated',
163
- 'onboarded',
164
- 'offboarded',
165
- 'terminated',
166
- 'promoted',
167
- 'transferred',
168
- 'compensationUpdated',
169
- ],
170
- };
171
- // =============================================================================
172
- // Team
173
- // =============================================================================
174
- /**
175
- * Team entity
176
- *
177
- * Represents a team or group within the organization.
178
- */
179
- export const Team = {
180
- singular: 'team',
181
- plural: 'teams',
182
- description: 'A team or group within the organization',
183
- properties: {
184
- // Identity
185
- name: {
186
- type: 'string',
187
- description: 'Team name',
188
- },
189
- slug: {
190
- type: 'string',
191
- optional: true,
192
- description: 'URL-friendly identifier',
193
- },
194
- description: {
195
- type: 'string',
196
- optional: true,
197
- description: 'Team description',
198
- },
199
- type: {
200
- type: 'string',
201
- optional: true,
202
- description: 'Team type',
203
- examples: ['department', 'project', 'squad', 'working-group', 'committee'],
204
- },
205
- // Status
206
- status: {
207
- type: 'string',
208
- description: 'Team status',
209
- examples: ['active', 'inactive', 'archived'],
210
- },
211
- // Settings
212
- isPrivate: {
213
- type: 'boolean',
214
- optional: true,
215
- description: 'Whether team is private',
216
- },
217
- iconUrl: {
218
- type: 'url',
219
- optional: true,
220
- description: 'Team icon URL',
221
- },
222
- },
223
- relationships: {
224
- lead: {
225
- type: 'Employee',
226
- required: false,
227
- description: 'Team lead',
228
- },
229
- members: {
230
- type: 'Employee[]',
231
- description: 'Team members',
232
- },
233
- parentTeam: {
234
- type: 'Team',
235
- required: false,
236
- description: 'Parent team (for hierarchy)',
237
- },
238
- subteams: {
239
- type: 'Team[]',
240
- description: 'Sub-teams',
241
- },
242
- },
243
- actions: [
244
- 'create',
245
- 'update',
246
- 'archive',
247
- 'addMember',
248
- 'removeMember',
249
- 'setLead',
250
- ],
251
- events: [
252
- 'created',
253
- 'updated',
254
- 'archived',
255
- 'memberAdded',
256
- 'memberRemoved',
257
- 'leadChanged',
258
- ],
259
- };
260
- // =============================================================================
261
- // TimeOff
262
- // =============================================================================
263
- /**
264
- * TimeOff entity
265
- *
266
- * Represents a time off request or record.
267
- */
268
- export const TimeOff = {
269
- singular: 'time-off',
270
- plural: 'time-off-requests',
271
- description: 'A time off request or record',
272
- properties: {
273
- // Type
274
- type: {
275
- type: 'string',
276
- description: 'Time off type',
277
- examples: ['vacation', 'sick', 'personal', 'bereavement', 'parental', 'jury-duty', 'unpaid'],
278
- },
279
- // Status
280
- status: {
281
- type: 'string',
282
- description: 'Request status',
283
- examples: ['pending', 'approved', 'denied', 'cancelled', 'taken'],
284
- },
285
- // Dates
286
- startDate: {
287
- type: 'datetime',
288
- description: 'Start date',
289
- },
290
- endDate: {
291
- type: 'datetime',
292
- description: 'End date',
293
- },
294
- hours: {
295
- type: 'number',
296
- optional: true,
297
- description: 'Total hours requested',
298
- },
299
- // Details
300
- reason: {
301
- type: 'string',
302
- optional: true,
303
- description: 'Reason for time off',
304
- },
305
- notes: {
306
- type: 'string',
307
- optional: true,
308
- description: 'Additional notes',
309
- },
310
- denialReason: {
311
- type: 'string',
312
- optional: true,
313
- description: 'Reason for denial',
314
- },
315
- // Dates
316
- requestedAt: {
317
- type: 'datetime',
318
- description: 'When request was submitted',
319
- },
320
- respondedAt: {
321
- type: 'datetime',
322
- optional: true,
323
- description: 'When request was responded to',
324
- },
325
- },
326
- relationships: {
327
- employee: {
328
- type: 'Employee',
329
- description: 'Employee requesting time off',
330
- },
331
- approver: {
332
- type: 'Employee',
333
- required: false,
334
- description: 'Manager who approved/denied',
335
- },
336
- },
337
- actions: [
338
- 'request',
339
- 'approve',
340
- 'deny',
341
- 'cancel',
342
- 'modify',
343
- ],
344
- events: [
345
- 'requested',
346
- 'approved',
347
- 'denied',
348
- 'cancelled',
349
- 'modified',
350
- ],
351
- };
352
- // =============================================================================
353
- // PerformanceReview
354
- // =============================================================================
355
- /**
356
- * PerformanceReview entity
357
- *
358
- * Represents a performance review or evaluation.
359
- */
360
- export const PerformanceReview = {
361
- singular: 'performance-review',
362
- plural: 'performance-reviews',
363
- description: 'A performance review or evaluation',
364
- properties: {
365
- // Type
366
- type: {
367
- type: 'string',
368
- description: 'Review type',
369
- examples: ['annual', 'semi-annual', 'quarterly', 'probation', '360', 'self'],
370
- },
371
- // Period
372
- periodStart: {
373
- type: 'datetime',
374
- description: 'Review period start',
375
- },
376
- periodEnd: {
377
- type: 'datetime',
378
- description: 'Review period end',
379
- },
380
- // Status
381
- status: {
382
- type: 'string',
383
- description: 'Review status',
384
- examples: ['draft', 'pending-self', 'pending-manager', 'completed', 'acknowledged'],
385
- },
386
- // Ratings
387
- overallRating: {
388
- type: 'number',
389
- optional: true,
390
- description: 'Overall rating (1-5 scale)',
391
- },
392
- ratings: {
393
- type: 'json',
394
- optional: true,
395
- description: 'Detailed ratings by category',
396
- },
397
- // Content
398
- accomplishments: {
399
- type: 'string',
400
- optional: true,
401
- description: 'Key accomplishments',
402
- },
403
- areasForImprovement: {
404
- type: 'string',
405
- optional: true,
406
- description: 'Areas for improvement',
407
- },
408
- goals: {
409
- type: 'json',
410
- optional: true,
411
- description: 'Goals for next period',
412
- },
413
- managerFeedback: {
414
- type: 'string',
415
- optional: true,
416
- description: 'Manager feedback',
417
- },
418
- selfAssessment: {
419
- type: 'string',
420
- optional: true,
421
- description: 'Self assessment',
422
- },
423
- // Dates
424
- dueDate: {
425
- type: 'datetime',
426
- optional: true,
427
- description: 'Due date',
428
- },
429
- completedAt: {
430
- type: 'datetime',
431
- optional: true,
432
- description: 'Completion date',
433
- },
434
- acknowledgedAt: {
435
- type: 'datetime',
436
- optional: true,
437
- description: 'When employee acknowledged',
438
- },
439
- },
440
- relationships: {
441
- employee: {
442
- type: 'Employee',
443
- description: 'Employee being reviewed',
444
- },
445
- reviewer: {
446
- type: 'Employee',
447
- description: 'Manager conducting review',
448
- },
449
- peerReviewers: {
450
- type: 'Employee[]',
451
- description: 'Peer reviewers (for 360)',
452
- },
453
- },
454
- actions: [
455
- 'create',
456
- 'submitSelfAssessment',
457
- 'submitManagerReview',
458
- 'complete',
459
- 'acknowledge',
460
- 'reopen',
461
- ],
462
- events: [
463
- 'created',
464
- 'selfAssessmentSubmitted',
465
- 'managerReviewSubmitted',
466
- 'completed',
467
- 'acknowledged',
468
- 'reopened',
469
- ],
470
- };
471
- // =============================================================================
472
- // Benefit
473
- // =============================================================================
474
- /**
475
- * Benefit entity
476
- *
477
- * Represents an employee benefit enrollment.
478
- */
479
- export const Benefit = {
480
- singular: 'benefit',
481
- plural: 'benefits',
482
- description: 'An employee benefit enrollment',
483
- properties: {
484
- // Type
485
- type: {
486
- type: 'string',
487
- description: 'Benefit type',
488
- examples: ['health', 'dental', 'vision', '401k', 'hsa', 'fsa', 'life', 'disability', 'pto'],
489
- },
490
- plan: {
491
- type: 'string',
492
- optional: true,
493
- description: 'Specific plan name',
494
- },
495
- // Status
496
- status: {
497
- type: 'string',
498
- description: 'Enrollment status',
499
- examples: ['pending', 'active', 'cancelled', 'expired'],
500
- },
501
- // Coverage
502
- coverageLevel: {
503
- type: 'string',
504
- optional: true,
505
- description: 'Coverage level',
506
- examples: ['individual', 'individual-plus-spouse', 'family'],
507
- },
508
- dependents: {
509
- type: 'json',
510
- optional: true,
511
- description: 'Covered dependents',
512
- },
513
- // Cost
514
- employeeContribution: {
515
- type: 'number',
516
- optional: true,
517
- description: 'Employee contribution per pay period',
518
- },
519
- employerContribution: {
520
- type: 'number',
521
- optional: true,
522
- description: 'Employer contribution per pay period',
523
- },
524
- // Dates
525
- effectiveDate: {
526
- type: 'datetime',
527
- description: 'Coverage effective date',
528
- },
529
- endDate: {
530
- type: 'datetime',
531
- optional: true,
532
- description: 'Coverage end date',
533
- },
534
- },
535
- relationships: {
536
- employee: {
537
- type: 'Employee',
538
- description: 'Employee enrolled',
539
- },
540
- },
541
- actions: [
542
- 'enroll',
543
- 'update',
544
- 'cancel',
545
- 'renew',
546
- ],
547
- events: [
548
- 'enrolled',
549
- 'updated',
550
- 'cancelled',
551
- 'renewed',
552
- 'expired',
553
- ],
554
- };
555
- // =============================================================================
556
- // Payroll
557
- // =============================================================================
558
- /**
559
- * Payroll entity
560
- *
561
- * Represents a payroll record or pay stub.
562
- */
563
- export const Payroll = {
564
- singular: 'payroll',
565
- plural: 'payrolls',
566
- description: 'A payroll record or pay stub',
567
- properties: {
568
- // Period
569
- payPeriodStart: {
570
- type: 'datetime',
571
- description: 'Pay period start',
572
- },
573
- payPeriodEnd: {
574
- type: 'datetime',
575
- description: 'Pay period end',
576
- },
577
- payDate: {
578
- type: 'datetime',
579
- description: 'Pay date',
580
- },
581
- // Status
582
- status: {
583
- type: 'string',
584
- description: 'Payroll status',
585
- examples: ['pending', 'processed', 'paid', 'cancelled'],
586
- },
587
- // Earnings
588
- grossPay: {
589
- type: 'number',
590
- description: 'Gross pay',
591
- },
592
- netPay: {
593
- type: 'number',
594
- description: 'Net pay',
595
- },
596
- regularHours: {
597
- type: 'number',
598
- optional: true,
599
- description: 'Regular hours worked',
600
- },
601
- overtimeHours: {
602
- type: 'number',
603
- optional: true,
604
- description: 'Overtime hours worked',
605
- },
606
- // Deductions
607
- deductions: {
608
- type: 'json',
609
- optional: true,
610
- description: 'Itemized deductions',
611
- },
612
- taxes: {
613
- type: 'json',
614
- optional: true,
615
- description: 'Itemized taxes',
616
- },
617
- // Currency
618
- currency: {
619
- type: 'string',
620
- description: 'Currency',
621
- },
622
- },
623
- relationships: {
624
- employee: {
625
- type: 'Employee',
626
- description: 'Employee paid',
627
- },
628
- },
629
- actions: [
630
- 'create',
631
- 'process',
632
- 'approve',
633
- 'cancel',
634
- ],
635
- events: [
636
- 'created',
637
- 'processed',
638
- 'approved',
639
- 'paid',
640
- 'cancelled',
641
- ],
642
- };
643
- // =============================================================================
644
- // Exports
645
- // =============================================================================
646
- export const HREntities = {
647
- Employee,
648
- Team,
649
- TimeOff,
650
- PerformanceReview,
651
- Benefit,
652
- Payroll,
653
- };
654
- export const HRCategories = {
655
- employees: ['Employee'],
656
- teams: ['Team'],
657
- timeOff: ['TimeOff'],
658
- performance: ['PerformanceReview'],
659
- benefits: ['Benefit'],
660
- payroll: ['Payroll'],
661
- };