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,1136 +0,0 @@
1
- /**
2
- * Project Management Entity Types (Nouns)
3
- *
4
- * Semantic type definitions for project management tools that can be used by
5
- * both remote human workers AND AI agents. Each entity defines:
6
- * - Properties: The data fields
7
- * - Actions: Operations that can be performed (Verbs)
8
- * - Events: State changes that occur
9
- *
10
- * @packageDocumentation
11
- */
12
- // =============================================================================
13
- // Project
14
- // =============================================================================
15
- /**
16
- * Project entity
17
- *
18
- * Represents a project with goals, deliverables, team members, and timeline.
19
- * Used by tools like Jira, Linear, Asana, Monday, ClickUp, etc.
20
- */
21
- export const Project = {
22
- singular: 'project',
23
- plural: 'projects',
24
- description: 'A project with defined scope, timeline, and team members',
25
- properties: {
26
- // Identity
27
- name: {
28
- type: 'string',
29
- description: 'Project name',
30
- },
31
- key: {
32
- type: 'string',
33
- optional: true,
34
- description: 'Unique project key/identifier (e.g., PROJ, WEB)',
35
- },
36
- description: {
37
- type: 'string',
38
- optional: true,
39
- description: 'Detailed project description',
40
- },
41
- icon: {
42
- type: 'string',
43
- optional: true,
44
- description: 'Project icon/emoji',
45
- },
46
- color: {
47
- type: 'string',
48
- optional: true,
49
- description: 'Project color code',
50
- },
51
- // Status & Progress
52
- status: {
53
- type: 'string',
54
- description: 'Project status: planning, active, on-hold, completed, cancelled',
55
- examples: ['planning', 'active', 'on-hold', 'completed', 'cancelled'],
56
- },
57
- progress: {
58
- type: 'number',
59
- optional: true,
60
- description: 'Overall completion percentage (0-100)',
61
- },
62
- health: {
63
- type: 'string',
64
- optional: true,
65
- description: 'Project health: on-track, at-risk, off-track',
66
- examples: ['on-track', 'at-risk', 'off-track'],
67
- },
68
- // Timeline
69
- startDate: {
70
- type: 'date',
71
- optional: true,
72
- description: 'Project start date',
73
- },
74
- endDate: {
75
- type: 'date',
76
- optional: true,
77
- description: 'Project end date',
78
- },
79
- targetDate: {
80
- type: 'date',
81
- optional: true,
82
- description: 'Target completion date',
83
- },
84
- // Organization
85
- visibility: {
86
- type: 'string',
87
- description: 'Project visibility: public, private, team',
88
- examples: ['public', 'private', 'team'],
89
- },
90
- archived: {
91
- type: 'boolean',
92
- optional: true,
93
- description: 'Whether the project is archived',
94
- },
95
- // Metrics
96
- issueCount: {
97
- type: 'number',
98
- optional: true,
99
- description: 'Total number of issues',
100
- },
101
- openIssueCount: {
102
- type: 'number',
103
- optional: true,
104
- description: 'Number of open issues',
105
- },
106
- memberCount: {
107
- type: 'number',
108
- optional: true,
109
- description: 'Number of team members',
110
- },
111
- // Settings
112
- template: {
113
- type: 'string',
114
- optional: true,
115
- description: 'Project template used',
116
- },
117
- workflow: {
118
- type: 'json',
119
- optional: true,
120
- description: 'Custom workflow configuration',
121
- },
122
- },
123
- relationships: {
124
- owner: {
125
- type: 'Contact',
126
- description: 'Project owner/lead',
127
- },
128
- team: {
129
- type: 'Contact[]',
130
- description: 'Team members assigned to the project',
131
- },
132
- issues: {
133
- type: 'Issue[]',
134
- backref: 'project',
135
- description: 'Issues/tickets in this project',
136
- },
137
- epics: {
138
- type: 'Epic[]',
139
- backref: 'project',
140
- description: 'Epics in this project',
141
- },
142
- sprints: {
143
- type: 'Sprint[]',
144
- backref: 'project',
145
- description: 'Sprints/iterations for this project',
146
- },
147
- milestones: {
148
- type: 'Milestone[]',
149
- backref: 'project',
150
- description: 'Project milestones',
151
- },
152
- boards: {
153
- type: 'Board[]',
154
- backref: 'project',
155
- description: 'Kanban boards for this project',
156
- },
157
- },
158
- actions: [
159
- 'create',
160
- 'update',
161
- 'delete',
162
- 'archive',
163
- 'restore',
164
- 'duplicate',
165
- 'setStatus',
166
- 'addMember',
167
- 'removeMember',
168
- 'setOwner',
169
- 'setDates',
170
- 'updateProgress',
171
- 'export',
172
- ],
173
- events: [
174
- 'created',
175
- 'updated',
176
- 'deleted',
177
- 'archived',
178
- 'restored',
179
- 'duplicated',
180
- 'statusChanged',
181
- 'memberAdded',
182
- 'memberRemoved',
183
- 'ownerChanged',
184
- 'datesChanged',
185
- 'progressUpdated',
186
- 'completed',
187
- 'cancelled',
188
- ],
189
- };
190
- // =============================================================================
191
- // Issue
192
- // =============================================================================
193
- /**
194
- * Issue/Ticket entity
195
- *
196
- * Represents a work item, task, bug, or feature request.
197
- * Brand-agnostic equivalent of:
198
- * - Jira Issue
199
- * - Linear Issue
200
- * - GitHub Issue
201
- * - Asana Task
202
- */
203
- export const Issue = {
204
- singular: 'issue',
205
- plural: 'issues',
206
- description: 'A work item, task, bug, or feature request',
207
- properties: {
208
- // Identity
209
- title: {
210
- type: 'string',
211
- description: 'Issue title/summary',
212
- },
213
- identifier: {
214
- type: 'string',
215
- optional: true,
216
- description: 'Issue identifier (e.g., PROJ-123, #456)',
217
- },
218
- description: {
219
- type: 'markdown',
220
- optional: true,
221
- description: 'Detailed issue description',
222
- },
223
- // Type & Classification
224
- type: {
225
- type: 'string',
226
- description: 'Issue type: task, bug, feature, story, epic, subtask',
227
- examples: ['task', 'bug', 'feature', 'story', 'epic', 'subtask'],
228
- },
229
- priority: {
230
- type: 'string',
231
- description: 'Priority level: none, low, medium, high, urgent',
232
- examples: ['none', 'low', 'medium', 'high', 'urgent'],
233
- },
234
- severity: {
235
- type: 'string',
236
- optional: true,
237
- description: 'Bug severity: minor, major, critical, blocker',
238
- examples: ['minor', 'major', 'critical', 'blocker'],
239
- },
240
- // Status & Progress
241
- status: {
242
- type: 'string',
243
- description: 'Issue status: backlog, todo, in-progress, review, done, cancelled',
244
- examples: ['backlog', 'todo', 'in-progress', 'review', 'done', 'cancelled'],
245
- },
246
- progress: {
247
- type: 'number',
248
- optional: true,
249
- description: 'Completion percentage (0-100)',
250
- },
251
- resolution: {
252
- type: 'string',
253
- optional: true,
254
- description: 'Resolution: fixed, wont-fix, duplicate, works-as-designed',
255
- examples: ['fixed', 'wont-fix', 'duplicate', 'works-as-designed'],
256
- },
257
- // Timeline
258
- createdAt: {
259
- type: 'datetime',
260
- description: 'When the issue was created',
261
- },
262
- updatedAt: {
263
- type: 'datetime',
264
- description: 'When the issue was last updated',
265
- },
266
- startDate: {
267
- type: 'date',
268
- optional: true,
269
- description: 'Planned start date',
270
- },
271
- dueDate: {
272
- type: 'date',
273
- optional: true,
274
- description: 'Due date',
275
- },
276
- completedAt: {
277
- type: 'datetime',
278
- optional: true,
279
- description: 'When the issue was completed',
280
- },
281
- // Estimation
282
- estimate: {
283
- type: 'number',
284
- optional: true,
285
- description: 'Story points or time estimate',
286
- },
287
- estimateType: {
288
- type: 'string',
289
- optional: true,
290
- description: 'Estimation unit: points, hours, days',
291
- examples: ['points', 'hours', 'days'],
292
- },
293
- timeSpent: {
294
- type: 'number',
295
- optional: true,
296
- description: 'Actual time spent in hours',
297
- },
298
- timeRemaining: {
299
- type: 'number',
300
- optional: true,
301
- description: 'Estimated time remaining in hours',
302
- },
303
- // Context
304
- storyPoints: {
305
- type: 'number',
306
- optional: true,
307
- description: 'Story points for agile estimation',
308
- },
309
- environment: {
310
- type: 'string',
311
- optional: true,
312
- description: 'Environment where issue occurs: dev, staging, production',
313
- examples: ['dev', 'staging', 'production'],
314
- },
315
- // Organization
316
- archived: {
317
- type: 'boolean',
318
- optional: true,
319
- description: 'Whether the issue is archived',
320
- },
321
- },
322
- relationships: {
323
- project: {
324
- type: 'Project',
325
- backref: 'issues',
326
- description: 'Project this issue belongs to',
327
- },
328
- epic: {
329
- type: 'Epic',
330
- required: false,
331
- backref: 'issues',
332
- description: 'Parent epic if this is part of one',
333
- },
334
- sprint: {
335
- type: 'Sprint',
336
- required: false,
337
- backref: 'issues',
338
- description: 'Sprint this issue is assigned to',
339
- },
340
- milestone: {
341
- type: 'Milestone',
342
- required: false,
343
- backref: 'issues',
344
- description: 'Milestone this issue is part of',
345
- },
346
- assignee: {
347
- type: 'Contact',
348
- required: false,
349
- description: 'Person assigned to work on this issue',
350
- },
351
- reporter: {
352
- type: 'Contact',
353
- description: 'Person who reported/created the issue',
354
- },
355
- labels: {
356
- type: 'Label[]',
357
- description: 'Labels applied to this issue',
358
- },
359
- parent: {
360
- type: 'Issue',
361
- required: false,
362
- description: 'Parent issue (for subtasks)',
363
- },
364
- subtasks: {
365
- type: 'Issue[]',
366
- description: 'Child issues/subtasks',
367
- },
368
- blockedBy: {
369
- type: 'Issue[]',
370
- description: 'Issues blocking this one',
371
- },
372
- blocks: {
373
- type: 'Issue[]',
374
- description: 'Issues this one blocks',
375
- },
376
- relatedTo: {
377
- type: 'Issue[]',
378
- description: 'Related issues',
379
- },
380
- comments: {
381
- type: 'Comment[]',
382
- backref: 'issue',
383
- description: 'Comments on this issue',
384
- },
385
- attachments: {
386
- type: 'Attachment[]',
387
- description: 'Files attached to this issue',
388
- },
389
- column: {
390
- type: 'Column',
391
- required: false,
392
- description: 'Board column this issue is in',
393
- },
394
- },
395
- actions: [
396
- 'create',
397
- 'update',
398
- 'delete',
399
- 'archive',
400
- 'restore',
401
- 'duplicate',
402
- 'assign',
403
- 'unassign',
404
- 'setStatus',
405
- 'setPriority',
406
- 'setType',
407
- 'addLabel',
408
- 'removeLabel',
409
- 'addSubtask',
410
- 'link',
411
- 'unlink',
412
- 'block',
413
- 'unblock',
414
- 'move',
415
- 'comment',
416
- 'estimate',
417
- 'logTime',
418
- 'watch',
419
- 'unwatch',
420
- ],
421
- events: [
422
- 'created',
423
- 'updated',
424
- 'deleted',
425
- 'archived',
426
- 'restored',
427
- 'duplicated',
428
- 'assigned',
429
- 'unassigned',
430
- 'statusChanged',
431
- 'priorityChanged',
432
- 'typeChanged',
433
- 'labeled',
434
- 'unlabeled',
435
- 'subtaskAdded',
436
- 'linked',
437
- 'unlinked',
438
- 'blocked',
439
- 'unblocked',
440
- 'moved',
441
- 'commented',
442
- 'estimated',
443
- 'timeLogged',
444
- 'completed',
445
- 'reopened',
446
- ],
447
- };
448
- // =============================================================================
449
- // Sprint
450
- // =============================================================================
451
- /**
452
- * Sprint/Iteration entity
453
- *
454
- * Represents a time-boxed iteration for agile development.
455
- */
456
- export const Sprint = {
457
- singular: 'sprint',
458
- plural: 'sprints',
459
- description: 'A time-boxed iteration for agile development',
460
- properties: {
461
- // Identity
462
- name: {
463
- type: 'string',
464
- description: 'Sprint name',
465
- },
466
- number: {
467
- type: 'number',
468
- optional: true,
469
- description: 'Sprint number/sequence',
470
- },
471
- goal: {
472
- type: 'string',
473
- optional: true,
474
- description: 'Sprint goal or objective',
475
- },
476
- // Status
477
- status: {
478
- type: 'string',
479
- description: 'Sprint status: planning, active, completed, cancelled',
480
- examples: ['planning', 'active', 'completed', 'cancelled'],
481
- },
482
- // Timeline
483
- startDate: {
484
- type: 'date',
485
- description: 'Sprint start date',
486
- },
487
- endDate: {
488
- type: 'date',
489
- description: 'Sprint end date',
490
- },
491
- duration: {
492
- type: 'number',
493
- optional: true,
494
- description: 'Sprint duration in days',
495
- },
496
- // Metrics
497
- capacity: {
498
- type: 'number',
499
- optional: true,
500
- description: 'Team capacity in story points or hours',
501
- },
502
- commitment: {
503
- type: 'number',
504
- optional: true,
505
- description: 'Committed story points or hours',
506
- },
507
- completed: {
508
- type: 'number',
509
- optional: true,
510
- description: 'Completed story points or hours',
511
- },
512
- velocity: {
513
- type: 'number',
514
- optional: true,
515
- description: 'Actual velocity (completed work)',
516
- },
517
- issueCount: {
518
- type: 'number',
519
- optional: true,
520
- description: 'Total number of issues',
521
- },
522
- completedIssueCount: {
523
- type: 'number',
524
- optional: true,
525
- description: 'Number of completed issues',
526
- },
527
- // Settings
528
- autoComplete: {
529
- type: 'boolean',
530
- optional: true,
531
- description: 'Whether to auto-complete the sprint when end date is reached',
532
- },
533
- },
534
- relationships: {
535
- project: {
536
- type: 'Project',
537
- backref: 'sprints',
538
- description: 'Project this sprint belongs to',
539
- },
540
- issues: {
541
- type: 'Issue[]',
542
- backref: 'sprint',
543
- description: 'Issues in this sprint',
544
- },
545
- team: {
546
- type: 'Contact[]',
547
- description: 'Team members working in this sprint',
548
- },
549
- },
550
- actions: [
551
- 'create',
552
- 'update',
553
- 'delete',
554
- 'start',
555
- 'complete',
556
- 'cancel',
557
- 'addIssue',
558
- 'removeIssue',
559
- 'setGoal',
560
- 'setCapacity',
561
- 'extend',
562
- ],
563
- events: [
564
- 'created',
565
- 'updated',
566
- 'deleted',
567
- 'started',
568
- 'completed',
569
- 'cancelled',
570
- 'issueAdded',
571
- 'issueRemoved',
572
- 'goalChanged',
573
- 'capacityChanged',
574
- 'extended',
575
- ],
576
- };
577
- // =============================================================================
578
- // Milestone
579
- // =============================================================================
580
- /**
581
- * Milestone/Release entity
582
- *
583
- * Represents a significant point in project timeline, often a release or major deliverable.
584
- */
585
- export const Milestone = {
586
- singular: 'milestone',
587
- plural: 'milestones',
588
- description: 'A significant point in project timeline or a release',
589
- properties: {
590
- // Identity
591
- name: {
592
- type: 'string',
593
- description: 'Milestone name',
594
- },
595
- description: {
596
- type: 'string',
597
- optional: true,
598
- description: 'Milestone description',
599
- },
600
- version: {
601
- type: 'string',
602
- optional: true,
603
- description: 'Version number for releases (e.g., v1.2.0)',
604
- },
605
- // Status
606
- status: {
607
- type: 'string',
608
- description: 'Milestone status: planned, active, completed, cancelled',
609
- examples: ['planned', 'active', 'completed', 'cancelled'],
610
- },
611
- progress: {
612
- type: 'number',
613
- optional: true,
614
- description: 'Overall completion percentage (0-100)',
615
- },
616
- // Timeline
617
- startDate: {
618
- type: 'date',
619
- optional: true,
620
- description: 'Milestone start date',
621
- },
622
- targetDate: {
623
- type: 'date',
624
- description: 'Target completion date',
625
- },
626
- completedAt: {
627
- type: 'datetime',
628
- optional: true,
629
- description: 'When the milestone was completed',
630
- },
631
- // Metrics
632
- issueCount: {
633
- type: 'number',
634
- optional: true,
635
- description: 'Total number of issues',
636
- },
637
- openIssueCount: {
638
- type: 'number',
639
- optional: true,
640
- description: 'Number of open issues',
641
- },
642
- closedIssueCount: {
643
- type: 'number',
644
- optional: true,
645
- description: 'Number of closed issues',
646
- },
647
- // Organization
648
- archived: {
649
- type: 'boolean',
650
- optional: true,
651
- description: 'Whether the milestone is archived',
652
- },
653
- },
654
- relationships: {
655
- project: {
656
- type: 'Project',
657
- backref: 'milestones',
658
- description: 'Project this milestone belongs to',
659
- },
660
- issues: {
661
- type: 'Issue[]',
662
- backref: 'milestone',
663
- description: 'Issues associated with this milestone',
664
- },
665
- owner: {
666
- type: 'Contact',
667
- required: false,
668
- description: 'Person responsible for this milestone',
669
- },
670
- },
671
- actions: [
672
- 'create',
673
- 'update',
674
- 'delete',
675
- 'archive',
676
- 'restore',
677
- 'complete',
678
- 'cancel',
679
- 'addIssue',
680
- 'removeIssue',
681
- 'setTargetDate',
682
- ],
683
- events: [
684
- 'created',
685
- 'updated',
686
- 'deleted',
687
- 'archived',
688
- 'restored',
689
- 'completed',
690
- 'cancelled',
691
- 'issueAdded',
692
- 'issueRemoved',
693
- 'targetDateChanged',
694
- 'delayed',
695
- ],
696
- };
697
- // =============================================================================
698
- // Board
699
- // =============================================================================
700
- /**
701
- * Board entity
702
- *
703
- * Represents a Kanban board for visualizing work and workflow.
704
- */
705
- export const Board = {
706
- singular: 'board',
707
- plural: 'boards',
708
- description: 'A Kanban board for visualizing work and workflow',
709
- properties: {
710
- // Identity
711
- name: {
712
- type: 'string',
713
- description: 'Board name',
714
- },
715
- description: {
716
- type: 'string',
717
- optional: true,
718
- description: 'Board description',
719
- },
720
- icon: {
721
- type: 'string',
722
- optional: true,
723
- description: 'Board icon/emoji',
724
- },
725
- // Type
726
- type: {
727
- type: 'string',
728
- description: 'Board type: kanban, scrum, list',
729
- examples: ['kanban', 'scrum', 'list'],
730
- },
731
- // Settings
732
- swimlanes: {
733
- type: 'string',
734
- optional: true,
735
- description: 'Swimlane grouping: none, assignee, priority, epic',
736
- examples: ['none', 'assignee', 'priority', 'epic'],
737
- },
738
- cardStyle: {
739
- type: 'string',
740
- optional: true,
741
- description: 'Card display style: compact, detailed, custom',
742
- examples: ['compact', 'detailed', 'custom'],
743
- },
744
- autoArchive: {
745
- type: 'boolean',
746
- optional: true,
747
- description: 'Whether to automatically archive completed issues',
748
- },
749
- // Organization
750
- visibility: {
751
- type: 'string',
752
- description: 'Board visibility: public, private, team',
753
- examples: ['public', 'private', 'team'],
754
- },
755
- archived: {
756
- type: 'boolean',
757
- optional: true,
758
- description: 'Whether the board is archived',
759
- },
760
- },
761
- relationships: {
762
- project: {
763
- type: 'Project',
764
- backref: 'boards',
765
- description: 'Project this board belongs to',
766
- },
767
- columns: {
768
- type: 'Column[]',
769
- backref: 'board',
770
- description: 'Columns in this board',
771
- },
772
- owner: {
773
- type: 'Contact',
774
- description: 'Board owner',
775
- },
776
- members: {
777
- type: 'Contact[]',
778
- description: 'Members with access to this board',
779
- },
780
- },
781
- actions: [
782
- 'create',
783
- 'update',
784
- 'delete',
785
- 'archive',
786
- 'restore',
787
- 'duplicate',
788
- 'addColumn',
789
- 'removeColumn',
790
- 'reorderColumns',
791
- 'addMember',
792
- 'removeMember',
793
- 'setSwimlanes',
794
- ],
795
- events: [
796
- 'created',
797
- 'updated',
798
- 'deleted',
799
- 'archived',
800
- 'restored',
801
- 'duplicated',
802
- 'columnAdded',
803
- 'columnRemoved',
804
- 'columnsReordered',
805
- 'memberAdded',
806
- 'memberRemoved',
807
- 'swimlanesChanged',
808
- ],
809
- };
810
- // =============================================================================
811
- // Column
812
- // =============================================================================
813
- /**
814
- * Column entity
815
- *
816
- * Represents a column in a Kanban board (e.g., Todo, In Progress, Done).
817
- */
818
- export const Column = {
819
- singular: 'column',
820
- plural: 'columns',
821
- description: 'A column in a Kanban board representing a workflow state',
822
- properties: {
823
- // Identity
824
- name: {
825
- type: 'string',
826
- description: 'Column name',
827
- },
828
- description: {
829
- type: 'string',
830
- optional: true,
831
- description: 'Column description',
832
- },
833
- // Visual
834
- color: {
835
- type: 'string',
836
- optional: true,
837
- description: 'Column color code',
838
- },
839
- icon: {
840
- type: 'string',
841
- optional: true,
842
- description: 'Column icon/emoji',
843
- },
844
- // Position
845
- position: {
846
- type: 'number',
847
- description: 'Column position/order (0-indexed)',
848
- },
849
- // Constraints
850
- wipLimit: {
851
- type: 'number',
852
- optional: true,
853
- description: 'Work-in-progress limit for this column',
854
- },
855
- issueCount: {
856
- type: 'number',
857
- optional: true,
858
- description: 'Current number of issues in this column',
859
- },
860
- // Status Mapping
861
- statusCategory: {
862
- type: 'string',
863
- description: 'Status category: todo, in-progress, done',
864
- examples: ['todo', 'in-progress', 'done'],
865
- },
866
- },
867
- relationships: {
868
- board: {
869
- type: 'Board',
870
- backref: 'columns',
871
- description: 'Board this column belongs to',
872
- },
873
- issues: {
874
- type: 'Issue[]',
875
- description: 'Issues currently in this column',
876
- },
877
- },
878
- actions: [
879
- 'create',
880
- 'update',
881
- 'delete',
882
- 'rename',
883
- 'move',
884
- 'setColor',
885
- 'setWipLimit',
886
- ],
887
- events: [
888
- 'created',
889
- 'updated',
890
- 'deleted',
891
- 'renamed',
892
- 'moved',
893
- 'colorChanged',
894
- 'wipLimitChanged',
895
- 'wipLimitExceeded',
896
- ],
897
- };
898
- // =============================================================================
899
- // Label
900
- // =============================================================================
901
- /**
902
- * Label entity
903
- *
904
- * Represents a label/tag for categorizing and filtering issues.
905
- */
906
- export const Label = {
907
- singular: 'label',
908
- plural: 'labels',
909
- description: 'A label or tag for categorizing and filtering issues',
910
- properties: {
911
- // Identity
912
- name: {
913
- type: 'string',
914
- description: 'Label name',
915
- },
916
- description: {
917
- type: 'string',
918
- optional: true,
919
- description: 'Label description',
920
- },
921
- // Visual
922
- color: {
923
- type: 'string',
924
- description: 'Label color code (hex)',
925
- },
926
- icon: {
927
- type: 'string',
928
- optional: true,
929
- description: 'Label icon/emoji',
930
- },
931
- // Organization
932
- category: {
933
- type: 'string',
934
- optional: true,
935
- description: 'Label category or group',
936
- },
937
- },
938
- relationships: {
939
- project: {
940
- type: 'Project',
941
- required: false,
942
- description: 'Project this label is scoped to (if any)',
943
- },
944
- issues: {
945
- type: 'Issue[]',
946
- description: 'Issues with this label',
947
- },
948
- },
949
- actions: [
950
- 'create',
951
- 'update',
952
- 'delete',
953
- 'rename',
954
- 'setColor',
955
- 'merge',
956
- ],
957
- events: [
958
- 'created',
959
- 'updated',
960
- 'deleted',
961
- 'renamed',
962
- 'colorChanged',
963
- 'merged',
964
- 'applied',
965
- 'removed',
966
- ],
967
- };
968
- // =============================================================================
969
- // Epic
970
- // =============================================================================
971
- /**
972
- * Epic entity
973
- *
974
- * Represents a large body of work that can be broken down into smaller issues.
975
- */
976
- export const Epic = {
977
- singular: 'epic',
978
- plural: 'epics',
979
- description: 'A large body of work containing multiple related issues',
980
- properties: {
981
- // Identity
982
- name: {
983
- type: 'string',
984
- description: 'Epic name/title',
985
- },
986
- identifier: {
987
- type: 'string',
988
- optional: true,
989
- description: 'Epic identifier (e.g., PROJ-E1)',
990
- },
991
- description: {
992
- type: 'markdown',
993
- optional: true,
994
- description: 'Detailed epic description',
995
- },
996
- // Visual
997
- color: {
998
- type: 'string',
999
- optional: true,
1000
- description: 'Epic color code',
1001
- },
1002
- icon: {
1003
- type: 'string',
1004
- optional: true,
1005
- description: 'Epic icon/emoji',
1006
- },
1007
- // Status & Progress
1008
- status: {
1009
- type: 'string',
1010
- description: 'Epic status: planned, active, completed, cancelled',
1011
- examples: ['planned', 'active', 'completed', 'cancelled'],
1012
- },
1013
- progress: {
1014
- type: 'number',
1015
- optional: true,
1016
- description: 'Overall completion percentage (0-100)',
1017
- },
1018
- // Timeline
1019
- startDate: {
1020
- type: 'date',
1021
- optional: true,
1022
- description: 'Epic start date',
1023
- },
1024
- targetDate: {
1025
- type: 'date',
1026
- optional: true,
1027
- description: 'Target completion date',
1028
- },
1029
- completedAt: {
1030
- type: 'datetime',
1031
- optional: true,
1032
- description: 'When the epic was completed',
1033
- },
1034
- // Metrics
1035
- issueCount: {
1036
- type: 'number',
1037
- optional: true,
1038
- description: 'Total number of issues in this epic',
1039
- },
1040
- completedIssueCount: {
1041
- type: 'number',
1042
- optional: true,
1043
- description: 'Number of completed issues',
1044
- },
1045
- storyPoints: {
1046
- type: 'number',
1047
- optional: true,
1048
- description: 'Total story points',
1049
- },
1050
- completedStoryPoints: {
1051
- type: 'number',
1052
- optional: true,
1053
- description: 'Completed story points',
1054
- },
1055
- // Organization
1056
- archived: {
1057
- type: 'boolean',
1058
- optional: true,
1059
- description: 'Whether the epic is archived',
1060
- },
1061
- },
1062
- relationships: {
1063
- project: {
1064
- type: 'Project',
1065
- backref: 'epics',
1066
- description: 'Project this epic belongs to',
1067
- },
1068
- issues: {
1069
- type: 'Issue[]',
1070
- backref: 'epic',
1071
- description: 'Issues in this epic',
1072
- },
1073
- owner: {
1074
- type: 'Contact',
1075
- required: false,
1076
- description: 'Person responsible for this epic',
1077
- },
1078
- labels: {
1079
- type: 'Label[]',
1080
- description: 'Labels applied to this epic',
1081
- },
1082
- },
1083
- actions: [
1084
- 'create',
1085
- 'update',
1086
- 'delete',
1087
- 'archive',
1088
- 'restore',
1089
- 'setStatus',
1090
- 'addIssue',
1091
- 'removeIssue',
1092
- 'setDates',
1093
- 'addLabel',
1094
- 'removeLabel',
1095
- ],
1096
- events: [
1097
- 'created',
1098
- 'updated',
1099
- 'deleted',
1100
- 'archived',
1101
- 'restored',
1102
- 'statusChanged',
1103
- 'issueAdded',
1104
- 'issueRemoved',
1105
- 'datesChanged',
1106
- 'labeled',
1107
- 'unlabeled',
1108
- 'completed',
1109
- 'cancelled',
1110
- ],
1111
- };
1112
- // =============================================================================
1113
- // Export all entities as a schema
1114
- // =============================================================================
1115
- /**
1116
- * All project management entity types
1117
- */
1118
- export const ProjectManagementEntities = {
1119
- Project,
1120
- Issue,
1121
- Sprint,
1122
- Milestone,
1123
- Board,
1124
- Column,
1125
- Label,
1126
- Epic,
1127
- };
1128
- /**
1129
- * Entity categories for organization
1130
- */
1131
- export const ProjectManagementCategories = {
1132
- core: ['Project', 'Issue', 'Epic'],
1133
- planning: ['Sprint', 'Milestone'],
1134
- visualization: ['Board', 'Column'],
1135
- organization: ['Label'],
1136
- };