digital-tools 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (452) hide show
  1. package/.turbo/turbo-build.log +5 -0
  2. package/CHANGELOG.md +9 -0
  3. package/README.md +1144 -0
  4. package/dist/define.d.ts +109 -0
  5. package/dist/define.d.ts.map +1 -0
  6. package/dist/define.js +268 -0
  7. package/dist/define.js.map +1 -0
  8. package/dist/entities/advertising.d.ts +79 -0
  9. package/dist/entities/advertising.d.ts.map +1 -0
  10. package/dist/entities/advertising.js +1000 -0
  11. package/dist/entities/advertising.js.map +1 -0
  12. package/dist/entities/ai.d.ts +69 -0
  13. package/dist/entities/ai.d.ts.map +1 -0
  14. package/dist/entities/ai.js +757 -0
  15. package/dist/entities/ai.js.map +1 -0
  16. package/dist/entities/analytics.d.ts +83 -0
  17. package/dist/entities/analytics.d.ts.map +1 -0
  18. package/dist/entities/analytics.js +1589 -0
  19. package/dist/entities/analytics.js.map +1 -0
  20. package/dist/entities/automation.d.ts +61 -0
  21. package/dist/entities/automation.d.ts.map +1 -0
  22. package/dist/entities/automation.js +602 -0
  23. package/dist/entities/automation.js.map +1 -0
  24. package/dist/entities/communication.d.ts +96 -0
  25. package/dist/entities/communication.d.ts.map +1 -0
  26. package/dist/entities/communication.js +1151 -0
  27. package/dist/entities/communication.js.map +1 -0
  28. package/dist/entities/crm.d.ts +91 -0
  29. package/dist/entities/crm.d.ts.map +1 -0
  30. package/dist/entities/crm.js +1387 -0
  31. package/dist/entities/crm.js.map +1 -0
  32. package/dist/entities/design.d.ts +61 -0
  33. package/dist/entities/design.d.ts.map +1 -0
  34. package/dist/entities/design.js +547 -0
  35. package/dist/entities/design.js.map +1 -0
  36. package/dist/entities/development.d.ts +145 -0
  37. package/dist/entities/development.d.ts.map +1 -0
  38. package/dist/entities/development.js +2213 -0
  39. package/dist/entities/development.js.map +1 -0
  40. package/dist/entities/document.d.ts +54 -0
  41. package/dist/entities/document.d.ts.map +1 -0
  42. package/dist/entities/document.js +875 -0
  43. package/dist/entities/document.js.map +1 -0
  44. package/dist/entities/ecommerce.d.ts +93 -0
  45. package/dist/entities/ecommerce.d.ts.map +1 -0
  46. package/dist/entities/ecommerce.js +1430 -0
  47. package/dist/entities/ecommerce.js.map +1 -0
  48. package/dist/entities/experiment.d.ts +89 -0
  49. package/dist/entities/experiment.d.ts.map +1 -0
  50. package/dist/entities/experiment.js +1040 -0
  51. package/dist/entities/experiment.js.map +1 -0
  52. package/dist/entities/finance.d.ts +272 -0
  53. package/dist/entities/finance.d.ts.map +1 -0
  54. package/dist/entities/finance.js +3479 -0
  55. package/dist/entities/finance.js.map +1 -0
  56. package/dist/entities/forms.d.ts +91 -0
  57. package/dist/entities/forms.d.ts.map +1 -0
  58. package/dist/entities/forms.js +1893 -0
  59. package/dist/entities/forms.js.map +1 -0
  60. package/dist/entities/hr.d.ts +62 -0
  61. package/dist/entities/hr.d.ts.map +1 -0
  62. package/dist/entities/hr.js +662 -0
  63. package/dist/entities/hr.js.map +1 -0
  64. package/dist/entities/identity.d.ts +90 -0
  65. package/dist/entities/identity.d.ts.map +1 -0
  66. package/dist/entities/identity.js +998 -0
  67. package/dist/entities/identity.js.map +1 -0
  68. package/dist/entities/index.d.ts +410 -0
  69. package/dist/entities/index.d.ts.map +1 -0
  70. package/dist/entities/index.js +283 -0
  71. package/dist/entities/index.js.map +1 -0
  72. package/dist/entities/infrastructure.d.ts +98 -0
  73. package/dist/entities/infrastructure.d.ts.map +1 -0
  74. package/dist/entities/infrastructure.js +1154 -0
  75. package/dist/entities/infrastructure.js.map +1 -0
  76. package/dist/entities/knowledge.d.ts +98 -0
  77. package/dist/entities/knowledge.d.ts.map +1 -0
  78. package/dist/entities/knowledge.js +1439 -0
  79. package/dist/entities/knowledge.js.map +1 -0
  80. package/dist/entities/marketing.d.ts +82 -0
  81. package/dist/entities/marketing.d.ts.map +1 -0
  82. package/dist/entities/marketing.js +1611 -0
  83. package/dist/entities/marketing.js.map +1 -0
  84. package/dist/entities/media.d.ts +83 -0
  85. package/dist/entities/media.d.ts.map +1 -0
  86. package/dist/entities/media.js +1635 -0
  87. package/dist/entities/media.js.map +1 -0
  88. package/dist/entities/notification.d.ts +76 -0
  89. package/dist/entities/notification.d.ts.map +1 -0
  90. package/dist/entities/notification.js +1200 -0
  91. package/dist/entities/notification.js.map +1 -0
  92. package/dist/entities/presentation.d.ts +61 -0
  93. package/dist/entities/presentation.d.ts.map +1 -0
  94. package/dist/entities/presentation.js +1275 -0
  95. package/dist/entities/presentation.js.map +1 -0
  96. package/dist/entities/productivity.d.ts +92 -0
  97. package/dist/entities/productivity.d.ts.map +1 -0
  98. package/dist/entities/productivity.js +1318 -0
  99. package/dist/entities/productivity.js.map +1 -0
  100. package/dist/entities/project-management.d.ts +89 -0
  101. package/dist/entities/project-management.d.ts.map +1 -0
  102. package/dist/entities/project-management.js +1137 -0
  103. package/dist/entities/project-management.js.map +1 -0
  104. package/dist/entities/recruiting.d.ts +54 -0
  105. package/dist/entities/recruiting.d.ts.map +1 -0
  106. package/dist/entities/recruiting.js +737 -0
  107. package/dist/entities/recruiting.js.map +1 -0
  108. package/dist/entities/shipping.d.ts +52 -0
  109. package/dist/entities/shipping.d.ts.map +1 -0
  110. package/dist/entities/shipping.js +510 -0
  111. package/dist/entities/shipping.js.map +1 -0
  112. package/dist/entities/signature.d.ts +83 -0
  113. package/dist/entities/signature.d.ts.map +1 -0
  114. package/dist/entities/signature.js +1103 -0
  115. package/dist/entities/signature.js.map +1 -0
  116. package/dist/entities/site.d.ts +33 -0
  117. package/dist/entities/site.d.ts.map +1 -0
  118. package/dist/entities/site.js +223 -0
  119. package/dist/entities/site.js.map +1 -0
  120. package/dist/entities/spreadsheet.d.ts +68 -0
  121. package/dist/entities/spreadsheet.d.ts.map +1 -0
  122. package/dist/entities/spreadsheet.js +1342 -0
  123. package/dist/entities/spreadsheet.js.map +1 -0
  124. package/dist/entities/storage.d.ts +74 -0
  125. package/dist/entities/storage.d.ts.map +1 -0
  126. package/dist/entities/storage.js +1199 -0
  127. package/dist/entities/storage.js.map +1 -0
  128. package/dist/entities/support.d.ts +83 -0
  129. package/dist/entities/support.d.ts.map +1 -0
  130. package/dist/entities/support.js +1167 -0
  131. package/dist/entities/support.js.map +1 -0
  132. package/dist/entities/video-conferencing.d.ts +129 -0
  133. package/dist/entities/video-conferencing.d.ts.map +1 -0
  134. package/dist/entities/video-conferencing.js +1751 -0
  135. package/dist/entities/video-conferencing.js.map +1 -0
  136. package/dist/entities/video.d.ts +76 -0
  137. package/dist/entities/video.d.ts.map +1 -0
  138. package/dist/entities/video.js +951 -0
  139. package/dist/entities/video.js.map +1 -0
  140. package/dist/entities.d.ts +147 -0
  141. package/dist/entities.d.ts.map +1 -0
  142. package/dist/entities.js +1664 -0
  143. package/dist/entities.js.map +1 -0
  144. package/dist/index.d.ts +29 -0
  145. package/dist/index.d.ts.map +1 -0
  146. package/dist/index.js +75 -0
  147. package/dist/index.js.map +1 -0
  148. package/dist/providers/analytics/index.d.ts +19 -0
  149. package/dist/providers/analytics/index.d.ts.map +1 -0
  150. package/dist/providers/analytics/index.js +18 -0
  151. package/dist/providers/analytics/index.js.map +1 -0
  152. package/dist/providers/analytics/mixpanel.d.ts +25 -0
  153. package/dist/providers/analytics/mixpanel.d.ts.map +1 -0
  154. package/dist/providers/analytics/mixpanel.js +256 -0
  155. package/dist/providers/analytics/mixpanel.js.map +1 -0
  156. package/dist/providers/calendar/cal-com.d.ts +26 -0
  157. package/dist/providers/calendar/cal-com.d.ts.map +1 -0
  158. package/dist/providers/calendar/cal-com.js +304 -0
  159. package/dist/providers/calendar/cal-com.js.map +1 -0
  160. package/dist/providers/calendar/google-calendar.d.ts +25 -0
  161. package/dist/providers/calendar/google-calendar.d.ts.map +1 -0
  162. package/dist/providers/calendar/google-calendar.js +336 -0
  163. package/dist/providers/calendar/google-calendar.js.map +1 -0
  164. package/dist/providers/calendar/index.d.ts +20 -0
  165. package/dist/providers/calendar/index.d.ts.map +1 -0
  166. package/dist/providers/calendar/index.js +21 -0
  167. package/dist/providers/calendar/index.js.map +1 -0
  168. package/dist/providers/crm/hubspot.d.ts +25 -0
  169. package/dist/providers/crm/hubspot.d.ts.map +1 -0
  170. package/dist/providers/crm/hubspot.js +567 -0
  171. package/dist/providers/crm/hubspot.js.map +1 -0
  172. package/dist/providers/crm/index.d.ts +19 -0
  173. package/dist/providers/crm/index.d.ts.map +1 -0
  174. package/dist/providers/crm/index.js +18 -0
  175. package/dist/providers/crm/index.js.map +1 -0
  176. package/dist/providers/development/github.d.ts +25 -0
  177. package/dist/providers/development/github.d.ts.map +1 -0
  178. package/dist/providers/development/github.js +473 -0
  179. package/dist/providers/development/github.js.map +1 -0
  180. package/dist/providers/development/index.d.ts +19 -0
  181. package/dist/providers/development/index.d.ts.map +1 -0
  182. package/dist/providers/development/index.js +18 -0
  183. package/dist/providers/development/index.js.map +1 -0
  184. package/dist/providers/ecommerce/index.d.ts +19 -0
  185. package/dist/providers/ecommerce/index.d.ts.map +1 -0
  186. package/dist/providers/ecommerce/index.js +18 -0
  187. package/dist/providers/ecommerce/index.js.map +1 -0
  188. package/dist/providers/ecommerce/shopify.d.ts +25 -0
  189. package/dist/providers/ecommerce/shopify.d.ts.map +1 -0
  190. package/dist/providers/ecommerce/shopify.js +379 -0
  191. package/dist/providers/ecommerce/shopify.js.map +1 -0
  192. package/dist/providers/email/index.d.ts +20 -0
  193. package/dist/providers/email/index.d.ts.map +1 -0
  194. package/dist/providers/email/index.js +21 -0
  195. package/dist/providers/email/index.js.map +1 -0
  196. package/dist/providers/email/resend.d.ts +25 -0
  197. package/dist/providers/email/resend.d.ts.map +1 -0
  198. package/dist/providers/email/resend.js +259 -0
  199. package/dist/providers/email/resend.js.map +1 -0
  200. package/dist/providers/email/sendgrid.d.ts +25 -0
  201. package/dist/providers/email/sendgrid.d.ts.map +1 -0
  202. package/dist/providers/email/sendgrid.js +162 -0
  203. package/dist/providers/email/sendgrid.js.map +1 -0
  204. package/dist/providers/finance/index.d.ts +19 -0
  205. package/dist/providers/finance/index.d.ts.map +1 -0
  206. package/dist/providers/finance/index.js +18 -0
  207. package/dist/providers/finance/index.js.map +1 -0
  208. package/dist/providers/finance/stripe.d.ts +25 -0
  209. package/dist/providers/finance/stripe.d.ts.map +1 -0
  210. package/dist/providers/finance/stripe.js +550 -0
  211. package/dist/providers/finance/stripe.js.map +1 -0
  212. package/dist/providers/forms/index.d.ts +19 -0
  213. package/dist/providers/forms/index.d.ts.map +1 -0
  214. package/dist/providers/forms/index.js +18 -0
  215. package/dist/providers/forms/index.js.map +1 -0
  216. package/dist/providers/forms/typeform.d.ts +25 -0
  217. package/dist/providers/forms/typeform.d.ts.map +1 -0
  218. package/dist/providers/forms/typeform.js +501 -0
  219. package/dist/providers/forms/typeform.js.map +1 -0
  220. package/dist/providers/index.d.ts +56 -0
  221. package/dist/providers/index.d.ts.map +1 -0
  222. package/dist/providers/index.js +124 -0
  223. package/dist/providers/index.js.map +1 -0
  224. package/dist/providers/knowledge/index.d.ts +19 -0
  225. package/dist/providers/knowledge/index.d.ts.map +1 -0
  226. package/dist/providers/knowledge/index.js +18 -0
  227. package/dist/providers/knowledge/index.js.map +1 -0
  228. package/dist/providers/knowledge/notion.d.ts +25 -0
  229. package/dist/providers/knowledge/notion.d.ts.map +1 -0
  230. package/dist/providers/knowledge/notion.js +390 -0
  231. package/dist/providers/knowledge/notion.js.map +1 -0
  232. package/dist/providers/marketing/index.d.ts +19 -0
  233. package/dist/providers/marketing/index.d.ts.map +1 -0
  234. package/dist/providers/marketing/index.js +18 -0
  235. package/dist/providers/marketing/index.js.map +1 -0
  236. package/dist/providers/marketing/mailchimp.d.ts +25 -0
  237. package/dist/providers/marketing/mailchimp.d.ts.map +1 -0
  238. package/dist/providers/marketing/mailchimp.js +444 -0
  239. package/dist/providers/marketing/mailchimp.js.map +1 -0
  240. package/dist/providers/media/cloudinary.d.ts +25 -0
  241. package/dist/providers/media/cloudinary.d.ts.map +1 -0
  242. package/dist/providers/media/cloudinary.js +319 -0
  243. package/dist/providers/media/cloudinary.js.map +1 -0
  244. package/dist/providers/media/index.d.ts +19 -0
  245. package/dist/providers/media/index.d.ts.map +1 -0
  246. package/dist/providers/media/index.js +18 -0
  247. package/dist/providers/media/index.js.map +1 -0
  248. package/dist/providers/messaging/index.d.ts +24 -0
  249. package/dist/providers/messaging/index.d.ts.map +1 -0
  250. package/dist/providers/messaging/index.js +21 -0
  251. package/dist/providers/messaging/index.js.map +1 -0
  252. package/dist/providers/messaging/slack.d.ts +25 -0
  253. package/dist/providers/messaging/slack.d.ts.map +1 -0
  254. package/dist/providers/messaging/slack.js +394 -0
  255. package/dist/providers/messaging/slack.js.map +1 -0
  256. package/dist/providers/messaging/twilio-sms.d.ts +25 -0
  257. package/dist/providers/messaging/twilio-sms.d.ts.map +1 -0
  258. package/dist/providers/messaging/twilio-sms.js +250 -0
  259. package/dist/providers/messaging/twilio-sms.js.map +1 -0
  260. package/dist/providers/project-management/index.d.ts +19 -0
  261. package/dist/providers/project-management/index.d.ts.map +1 -0
  262. package/dist/providers/project-management/index.js +18 -0
  263. package/dist/providers/project-management/index.js.map +1 -0
  264. package/dist/providers/project-management/linear.d.ts +25 -0
  265. package/dist/providers/project-management/linear.d.ts.map +1 -0
  266. package/dist/providers/project-management/linear.js +576 -0
  267. package/dist/providers/project-management/linear.js.map +1 -0
  268. package/dist/providers/registry.d.ts +41 -0
  269. package/dist/providers/registry.d.ts.map +1 -0
  270. package/dist/providers/registry.js +87 -0
  271. package/dist/providers/registry.js.map +1 -0
  272. package/dist/providers/spreadsheet/google-sheets.d.ts +25 -0
  273. package/dist/providers/spreadsheet/google-sheets.d.ts.map +1 -0
  274. package/dist/providers/spreadsheet/google-sheets.js +376 -0
  275. package/dist/providers/spreadsheet/google-sheets.js.map +1 -0
  276. package/dist/providers/spreadsheet/index.d.ts +20 -0
  277. package/dist/providers/spreadsheet/index.d.ts.map +1 -0
  278. package/dist/providers/spreadsheet/index.js +21 -0
  279. package/dist/providers/spreadsheet/index.js.map +1 -0
  280. package/dist/providers/spreadsheet/xlsx.d.ts +26 -0
  281. package/dist/providers/spreadsheet/xlsx.d.ts.map +1 -0
  282. package/dist/providers/spreadsheet/xlsx.js +424 -0
  283. package/dist/providers/spreadsheet/xlsx.js.map +1 -0
  284. package/dist/providers/storage/index.d.ts +30 -0
  285. package/dist/providers/storage/index.d.ts.map +1 -0
  286. package/dist/providers/storage/index.js +25 -0
  287. package/dist/providers/storage/index.js.map +1 -0
  288. package/dist/providers/storage/s3.d.ts +25 -0
  289. package/dist/providers/storage/s3.d.ts.map +1 -0
  290. package/dist/providers/storage/s3.js +420 -0
  291. package/dist/providers/storage/s3.js.map +1 -0
  292. package/dist/providers/support/index.d.ts +19 -0
  293. package/dist/providers/support/index.d.ts.map +1 -0
  294. package/dist/providers/support/index.js +18 -0
  295. package/dist/providers/support/index.js.map +1 -0
  296. package/dist/providers/support/zendesk.d.ts +25 -0
  297. package/dist/providers/support/zendesk.d.ts.map +1 -0
  298. package/dist/providers/support/zendesk.js +374 -0
  299. package/dist/providers/support/zendesk.js.map +1 -0
  300. package/dist/providers/tasks/index.d.ts +19 -0
  301. package/dist/providers/tasks/index.d.ts.map +1 -0
  302. package/dist/providers/tasks/index.js +18 -0
  303. package/dist/providers/tasks/index.js.map +1 -0
  304. package/dist/providers/tasks/todoist.d.ts +25 -0
  305. package/dist/providers/tasks/todoist.d.ts.map +1 -0
  306. package/dist/providers/tasks/todoist.js +287 -0
  307. package/dist/providers/tasks/todoist.js.map +1 -0
  308. package/dist/providers/types.d.ts +1753 -0
  309. package/dist/providers/types.d.ts.map +1 -0
  310. package/dist/providers/types.js +10 -0
  311. package/dist/providers/types.js.map +1 -0
  312. package/dist/providers/video-conferencing/google-meet.d.ts +26 -0
  313. package/dist/providers/video-conferencing/google-meet.d.ts.map +1 -0
  314. package/dist/providers/video-conferencing/google-meet.js +287 -0
  315. package/dist/providers/video-conferencing/google-meet.js.map +1 -0
  316. package/dist/providers/video-conferencing/index.d.ts +22 -0
  317. package/dist/providers/video-conferencing/index.d.ts.map +1 -0
  318. package/dist/providers/video-conferencing/index.js +32 -0
  319. package/dist/providers/video-conferencing/index.js.map +1 -0
  320. package/dist/providers/video-conferencing/jitsi.d.ts +26 -0
  321. package/dist/providers/video-conferencing/jitsi.d.ts.map +1 -0
  322. package/dist/providers/video-conferencing/jitsi.js +255 -0
  323. package/dist/providers/video-conferencing/jitsi.js.map +1 -0
  324. package/dist/providers/video-conferencing/teams.d.ts +26 -0
  325. package/dist/providers/video-conferencing/teams.d.ts.map +1 -0
  326. package/dist/providers/video-conferencing/teams.js +271 -0
  327. package/dist/providers/video-conferencing/teams.js.map +1 -0
  328. package/dist/providers/video-conferencing/zoom.d.ts +25 -0
  329. package/dist/providers/video-conferencing/zoom.d.ts.map +1 -0
  330. package/dist/providers/video-conferencing/zoom.js +333 -0
  331. package/dist/providers/video-conferencing/zoom.js.map +1 -0
  332. package/dist/providers/voice/vapi.d.ts +27 -0
  333. package/dist/providers/voice/vapi.d.ts.map +1 -0
  334. package/dist/providers/voice/vapi.js +440 -0
  335. package/dist/providers/voice/vapi.js.map +1 -0
  336. package/dist/registry.d.ts +38 -0
  337. package/dist/registry.d.ts.map +1 -0
  338. package/dist/registry.js +129 -0
  339. package/dist/registry.js.map +1 -0
  340. package/dist/tools/communication.d.ts +94 -0
  341. package/dist/tools/communication.d.ts.map +1 -0
  342. package/dist/tools/communication.js +185 -0
  343. package/dist/tools/communication.js.map +1 -0
  344. package/dist/tools/data.d.ts +61 -0
  345. package/dist/tools/data.d.ts.map +1 -0
  346. package/dist/tools/data.js +206 -0
  347. package/dist/tools/data.js.map +1 -0
  348. package/dist/tools/index.d.ts +12 -0
  349. package/dist/tools/index.d.ts.map +1 -0
  350. package/dist/tools/index.js +12 -0
  351. package/dist/tools/index.js.map +1 -0
  352. package/dist/tools/web.d.ts +45 -0
  353. package/dist/tools/web.d.ts.map +1 -0
  354. package/dist/tools/web.js +138 -0
  355. package/dist/tools/web.js.map +1 -0
  356. package/dist/types.d.ts +330 -0
  357. package/dist/types.d.ts.map +1 -0
  358. package/dist/types.js +11 -0
  359. package/dist/types.js.map +1 -0
  360. package/package.json +45 -0
  361. package/src/define.ts +321 -0
  362. package/src/entities/advertising.ts +1086 -0
  363. package/src/entities/ai.ts +835 -0
  364. package/src/entities/analytics.ts +1690 -0
  365. package/src/entities/automation.ts +669 -0
  366. package/src/entities/communication.ts +1255 -0
  367. package/src/entities/crm.ts +1481 -0
  368. package/src/entities/design.ts +606 -0
  369. package/src/entities/development.ts +2392 -0
  370. package/src/entities/document.ts +930 -0
  371. package/src/entities/ecommerce.ts +1539 -0
  372. package/src/entities/experiment.ts +1139 -0
  373. package/src/entities/finance.ts +3907 -0
  374. package/src/entities/forms.ts +2021 -0
  375. package/src/entities/hr.ts +725 -0
  376. package/src/entities/identity.ts +1093 -0
  377. package/src/entities/index.ts +731 -0
  378. package/src/entities/infrastructure.ts +1254 -0
  379. package/src/entities/knowledge.ts +1547 -0
  380. package/src/entities/marketing.ts +1718 -0
  381. package/src/entities/media.ts +1747 -0
  382. package/src/entities/notification.ts +1260 -0
  383. package/src/entities/presentation.ts +1360 -0
  384. package/src/entities/productivity.ts +1411 -0
  385. package/src/entities/project-management.ts +1222 -0
  386. package/src/entities/recruiting.ts +797 -0
  387. package/src/entities/shipping.ts +566 -0
  388. package/src/entities/signature.ts +1204 -0
  389. package/src/entities/site.ts +244 -0
  390. package/src/entities/spreadsheet.ts +1434 -0
  391. package/src/entities/storage.ts +1290 -0
  392. package/src/entities/support.ts +1267 -0
  393. package/src/entities/video-conferencing.ts +1874 -0
  394. package/src/entities/video.ts +1035 -0
  395. package/src/entities.ts +1795 -0
  396. package/src/index.ts +176 -0
  397. package/src/providers/analytics/index.ts +21 -0
  398. package/src/providers/analytics/mixpanel.ts +311 -0
  399. package/src/providers/calendar/cal-com.ts +435 -0
  400. package/src/providers/calendar/google-calendar.ts +412 -0
  401. package/src/providers/calendar/index.ts +24 -0
  402. package/src/providers/crm/hubspot.ts +667 -0
  403. package/src/providers/crm/index.ts +21 -0
  404. package/src/providers/development/github.ts +608 -0
  405. package/src/providers/development/index.ts +21 -0
  406. package/src/providers/ecommerce/index.ts +21 -0
  407. package/src/providers/ecommerce/shopify.ts +451 -0
  408. package/src/providers/email/index.ts +24 -0
  409. package/src/providers/email/resend.ts +301 -0
  410. package/src/providers/email/sendgrid.ts +196 -0
  411. package/src/providers/finance/index.ts +21 -0
  412. package/src/providers/finance/stripe.ts +665 -0
  413. package/src/providers/forms/index.ts +21 -0
  414. package/src/providers/forms/typeform.ts +598 -0
  415. package/src/providers/index.ts +281 -0
  416. package/src/providers/knowledge/index.ts +21 -0
  417. package/src/providers/knowledge/notion.ts +497 -0
  418. package/src/providers/marketing/index.ts +21 -0
  419. package/src/providers/marketing/mailchimp.ts +656 -0
  420. package/src/providers/media/cloudinary.ts +373 -0
  421. package/src/providers/media/index.ts +21 -0
  422. package/src/providers/messaging/index.ts +24 -0
  423. package/src/providers/messaging/slack.ts +487 -0
  424. package/src/providers/messaging/twilio-sms.ts +301 -0
  425. package/src/providers/project-management/index.ts +21 -0
  426. package/src/providers/project-management/linear.ts +693 -0
  427. package/src/providers/registry.ts +119 -0
  428. package/src/providers/spreadsheet/google-sheets.ts +464 -0
  429. package/src/providers/spreadsheet/index.ts +24 -0
  430. package/src/providers/spreadsheet/xlsx.ts +542 -0
  431. package/src/providers/storage/index.ts +35 -0
  432. package/src/providers/storage/s3.ts +513 -0
  433. package/src/providers/support/index.ts +21 -0
  434. package/src/providers/support/zendesk.ts +417 -0
  435. package/src/providers/tasks/index.ts +21 -0
  436. package/src/providers/tasks/todoist.ts +407 -0
  437. package/src/providers/types.ts +2113 -0
  438. package/src/providers/video-conferencing/google-meet.ts +412 -0
  439. package/src/providers/video-conferencing/index.ts +35 -0
  440. package/src/providers/video-conferencing/jitsi.ts +324 -0
  441. package/src/providers/video-conferencing/teams.ts +408 -0
  442. package/src/providers/video-conferencing/zoom.ts +451 -0
  443. package/src/registry.ts +172 -0
  444. package/src/tools/communication.ts +256 -0
  445. package/src/tools/data.ts +236 -0
  446. package/src/tools/index.ts +12 -0
  447. package/src/tools/web.ts +161 -0
  448. package/src/types.ts +539 -0
  449. package/test/define.test.ts +367 -0
  450. package/test/registry.test.ts +444 -0
  451. package/test/tools.test.ts +453 -0
  452. package/tsconfig.json +20 -0
@@ -0,0 +1,2392 @@
1
+ /**
2
+ * Development Tool Entity Types (Nouns)
3
+ *
4
+ * Semantic type definitions for code development and version control tools.
5
+ * 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
+ import type { Noun, NounProperty, NounRelationship, Verb } from 'ai-database'
14
+
15
+ // =============================================================================
16
+ // Repository
17
+ // =============================================================================
18
+
19
+ /**
20
+ * Code repository entity
21
+ *
22
+ * Represents a version control repository for managing source code
23
+ */
24
+ export const Repository: Noun = {
25
+ singular: 'repository',
26
+ plural: 'repositories',
27
+ description: 'A code repository for version control and collaboration',
28
+
29
+ properties: {
30
+ // Identity
31
+ name: {
32
+ type: 'string',
33
+ description: 'Repository name',
34
+ },
35
+ fullName: {
36
+ type: 'string',
37
+ optional: true,
38
+ description: 'Full repository name including owner (e.g., owner/repo)',
39
+ },
40
+ description: {
41
+ type: 'string',
42
+ optional: true,
43
+ description: 'Repository description',
44
+ },
45
+
46
+ // Configuration
47
+ visibility: {
48
+ type: 'string',
49
+ description: 'Repository visibility: public, private, internal',
50
+ examples: ['public', 'private', 'internal'],
51
+ },
52
+ defaultBranch: {
53
+ type: 'string',
54
+ description: 'Default branch name (e.g., main, master)',
55
+ },
56
+ language: {
57
+ type: 'string',
58
+ optional: true,
59
+ description: 'Primary programming language',
60
+ },
61
+ topics: {
62
+ type: 'string',
63
+ array: true,
64
+ optional: true,
65
+ description: 'Repository topics/tags',
66
+ },
67
+
68
+ // Settings
69
+ allowForking: {
70
+ type: 'boolean',
71
+ optional: true,
72
+ description: 'Whether forking is allowed',
73
+ },
74
+ allowMergeCommit: {
75
+ type: 'boolean',
76
+ optional: true,
77
+ description: 'Whether merge commits are allowed',
78
+ },
79
+ allowSquashMerge: {
80
+ type: 'boolean',
81
+ optional: true,
82
+ description: 'Whether squash merging is allowed',
83
+ },
84
+ allowRebaseMerge: {
85
+ type: 'boolean',
86
+ optional: true,
87
+ description: 'Whether rebase merging is allowed',
88
+ },
89
+ deleteBranchOnMerge: {
90
+ type: 'boolean',
91
+ optional: true,
92
+ description: 'Whether to auto-delete branches after merge',
93
+ },
94
+
95
+ // Status
96
+ archived: {
97
+ type: 'boolean',
98
+ optional: true,
99
+ description: 'Whether the repository is archived',
100
+ },
101
+ disabled: {
102
+ type: 'boolean',
103
+ optional: true,
104
+ description: 'Whether the repository is disabled',
105
+ },
106
+
107
+ // Statistics
108
+ size: {
109
+ type: 'number',
110
+ optional: true,
111
+ description: 'Repository size in kilobytes',
112
+ },
113
+ starCount: {
114
+ type: 'number',
115
+ optional: true,
116
+ description: 'Number of stars',
117
+ },
118
+ forkCount: {
119
+ type: 'number',
120
+ optional: true,
121
+ description: 'Number of forks',
122
+ },
123
+ watcherCount: {
124
+ type: 'number',
125
+ optional: true,
126
+ description: 'Number of watchers',
127
+ },
128
+ openIssueCount: {
129
+ type: 'number',
130
+ optional: true,
131
+ description: 'Number of open issues',
132
+ },
133
+
134
+ // URLs
135
+ url: {
136
+ type: 'url',
137
+ optional: true,
138
+ description: 'Repository web URL',
139
+ },
140
+ cloneUrl: {
141
+ type: 'url',
142
+ optional: true,
143
+ description: 'Git clone URL',
144
+ },
145
+ sshUrl: {
146
+ type: 'string',
147
+ optional: true,
148
+ description: 'SSH clone URL',
149
+ },
150
+ homepage: {
151
+ type: 'url',
152
+ optional: true,
153
+ description: 'Project homepage URL',
154
+ },
155
+
156
+ // Metadata
157
+ license: {
158
+ type: 'string',
159
+ optional: true,
160
+ description: 'Repository license (e.g., MIT, Apache-2.0)',
161
+ },
162
+ hasIssues: {
163
+ type: 'boolean',
164
+ optional: true,
165
+ description: 'Whether issues are enabled',
166
+ },
167
+ hasProjects: {
168
+ type: 'boolean',
169
+ optional: true,
170
+ description: 'Whether projects are enabled',
171
+ },
172
+ hasWiki: {
173
+ type: 'boolean',
174
+ optional: true,
175
+ description: 'Whether wiki is enabled',
176
+ },
177
+ },
178
+
179
+ relationships: {
180
+ owner: {
181
+ type: 'Contact',
182
+ description: 'Repository owner/organization',
183
+ },
184
+ branches: {
185
+ type: 'Branch[]',
186
+ backref: 'repository',
187
+ description: 'Branches in this repository',
188
+ },
189
+ commits: {
190
+ type: 'Commit[]',
191
+ backref: 'repository',
192
+ description: 'Commits in this repository',
193
+ },
194
+ pullRequests: {
195
+ type: 'PullRequest[]',
196
+ backref: 'repository',
197
+ description: 'Pull requests in this repository',
198
+ },
199
+ issues: {
200
+ type: 'CodeIssue[]',
201
+ backref: 'repository',
202
+ description: 'Issues in this repository',
203
+ },
204
+ releases: {
205
+ type: 'Release[]',
206
+ backref: 'repository',
207
+ description: 'Releases/tags in this repository',
208
+ },
209
+ workflows: {
210
+ type: 'Workflow[]',
211
+ backref: 'repository',
212
+ description: 'CI/CD workflows in this repository',
213
+ },
214
+ collaborators: {
215
+ type: 'Contact[]',
216
+ description: 'Repository collaborators',
217
+ },
218
+ },
219
+
220
+ actions: [
221
+ 'create',
222
+ 'clone',
223
+ 'fork',
224
+ 'archive',
225
+ 'unarchive',
226
+ 'delete',
227
+ 'transfer',
228
+ 'rename',
229
+ 'updateSettings',
230
+ 'addCollaborator',
231
+ 'removeCollaborator',
232
+ 'star',
233
+ 'unstar',
234
+ 'watch',
235
+ 'unwatch',
236
+ 'enableFeature',
237
+ 'disableFeature',
238
+ ],
239
+
240
+ events: [
241
+ 'created',
242
+ 'cloned',
243
+ 'forked',
244
+ 'archived',
245
+ 'unarchived',
246
+ 'deleted',
247
+ 'transferred',
248
+ 'renamed',
249
+ 'settingsUpdated',
250
+ 'collaboratorAdded',
251
+ 'collaboratorRemoved',
252
+ 'starred',
253
+ 'unstarred',
254
+ 'watched',
255
+ 'unwatched',
256
+ 'pushed',
257
+ ],
258
+ }
259
+
260
+ // =============================================================================
261
+ // Branch
262
+ // =============================================================================
263
+
264
+ /**
265
+ * Git branch entity
266
+ *
267
+ * Represents a branch in a git repository
268
+ */
269
+ export const Branch: Noun = {
270
+ singular: 'branch',
271
+ plural: 'branches',
272
+ description: 'A git branch for parallel development',
273
+
274
+ properties: {
275
+ name: {
276
+ type: 'string',
277
+ description: 'Branch name',
278
+ },
279
+ fullName: {
280
+ type: 'string',
281
+ optional: true,
282
+ description: 'Full reference name (e.g., refs/heads/main)',
283
+ },
284
+
285
+ // Status
286
+ isDefault: {
287
+ type: 'boolean',
288
+ optional: true,
289
+ description: 'Whether this is the default branch',
290
+ },
291
+ isProtected: {
292
+ type: 'boolean',
293
+ optional: true,
294
+ description: 'Whether this branch is protected',
295
+ },
296
+
297
+ // Commit info
298
+ sha: {
299
+ type: 'string',
300
+ optional: true,
301
+ description: 'SHA of the latest commit',
302
+ },
303
+ commitMessage: {
304
+ type: 'string',
305
+ optional: true,
306
+ description: 'Latest commit message',
307
+ },
308
+
309
+ // Comparison
310
+ aheadBy: {
311
+ type: 'number',
312
+ optional: true,
313
+ description: 'Commits ahead of base branch',
314
+ },
315
+ behindBy: {
316
+ type: 'number',
317
+ optional: true,
318
+ description: 'Commits behind base branch',
319
+ },
320
+
321
+ // Protection rules
322
+ requirePullRequest: {
323
+ type: 'boolean',
324
+ optional: true,
325
+ description: 'Whether pull requests are required for changes',
326
+ },
327
+ requiredReviewers: {
328
+ type: 'number',
329
+ optional: true,
330
+ description: 'Number of required reviewers',
331
+ },
332
+ requireStatusChecks: {
333
+ type: 'boolean',
334
+ optional: true,
335
+ description: 'Whether status checks must pass',
336
+ },
337
+ requireSignedCommits: {
338
+ type: 'boolean',
339
+ optional: true,
340
+ description: 'Whether commits must be signed',
341
+ },
342
+ allowForcePush: {
343
+ type: 'boolean',
344
+ optional: true,
345
+ description: 'Whether force pushing is allowed',
346
+ },
347
+ allowDeletion: {
348
+ type: 'boolean',
349
+ optional: true,
350
+ description: 'Whether branch deletion is allowed',
351
+ },
352
+ },
353
+
354
+ relationships: {
355
+ repository: {
356
+ type: 'Repository',
357
+ backref: 'branches',
358
+ description: 'Repository this branch belongs to',
359
+ },
360
+ latestCommit: {
361
+ type: 'Commit',
362
+ description: 'The latest commit on this branch',
363
+ },
364
+ pullRequests: {
365
+ type: 'PullRequest[]',
366
+ description: 'Pull requests for this branch',
367
+ },
368
+ },
369
+
370
+ actions: [
371
+ 'create',
372
+ 'delete',
373
+ 'rename',
374
+ 'protect',
375
+ 'unprotect',
376
+ 'merge',
377
+ 'rebase',
378
+ 'checkout',
379
+ 'push',
380
+ 'pull',
381
+ 'reset',
382
+ 'compare',
383
+ ],
384
+
385
+ events: [
386
+ 'created',
387
+ 'deleted',
388
+ 'renamed',
389
+ 'protected',
390
+ 'unprotected',
391
+ 'merged',
392
+ 'rebased',
393
+ 'pushed',
394
+ 'pulled',
395
+ 'updated',
396
+ ],
397
+ }
398
+
399
+ // =============================================================================
400
+ // Commit
401
+ // =============================================================================
402
+
403
+ /**
404
+ * Git commit entity
405
+ *
406
+ * Represents a git commit with changes to the codebase
407
+ */
408
+ export const Commit: Noun = {
409
+ singular: 'commit',
410
+ plural: 'commits',
411
+ description: 'A git commit representing a set of changes',
412
+
413
+ properties: {
414
+ // Identity
415
+ sha: {
416
+ type: 'string',
417
+ description: 'Commit SHA hash',
418
+ },
419
+ shortSha: {
420
+ type: 'string',
421
+ optional: true,
422
+ description: 'Short SHA (first 7 characters)',
423
+ },
424
+
425
+ // Content
426
+ message: {
427
+ type: 'string',
428
+ description: 'Commit message',
429
+ },
430
+ title: {
431
+ type: 'string',
432
+ optional: true,
433
+ description: 'First line of commit message',
434
+ },
435
+ body: {
436
+ type: 'string',
437
+ optional: true,
438
+ description: 'Remaining lines of commit message',
439
+ },
440
+
441
+ // Author info
442
+ authorName: {
443
+ type: 'string',
444
+ description: 'Author name',
445
+ },
446
+ authorEmail: {
447
+ type: 'string',
448
+ description: 'Author email',
449
+ },
450
+ authoredAt: {
451
+ type: 'datetime',
452
+ description: 'When the commit was authored',
453
+ },
454
+
455
+ // Committer info (may differ from author)
456
+ committerName: {
457
+ type: 'string',
458
+ optional: true,
459
+ description: 'Committer name',
460
+ },
461
+ committerEmail: {
462
+ type: 'string',
463
+ optional: true,
464
+ description: 'Committer email',
465
+ },
466
+ committedAt: {
467
+ type: 'datetime',
468
+ optional: true,
469
+ description: 'When the commit was committed',
470
+ },
471
+
472
+ // Changes
473
+ filesChanged: {
474
+ type: 'number',
475
+ optional: true,
476
+ description: 'Number of files changed',
477
+ },
478
+ additions: {
479
+ type: 'number',
480
+ optional: true,
481
+ description: 'Lines added',
482
+ },
483
+ deletions: {
484
+ type: 'number',
485
+ optional: true,
486
+ description: 'Lines deleted',
487
+ },
488
+ changedFiles: {
489
+ type: 'json',
490
+ optional: true,
491
+ description: 'List of changed files with their changes',
492
+ },
493
+
494
+ // Verification
495
+ verified: {
496
+ type: 'boolean',
497
+ optional: true,
498
+ description: 'Whether the commit signature is verified',
499
+ },
500
+ signature: {
501
+ type: 'string',
502
+ optional: true,
503
+ description: 'GPG signature',
504
+ },
505
+
506
+ // Relationships to other commits
507
+ parentShas: {
508
+ type: 'string',
509
+ array: true,
510
+ optional: true,
511
+ description: 'Parent commit SHAs',
512
+ },
513
+ treeSha: {
514
+ type: 'string',
515
+ optional: true,
516
+ description: 'Git tree SHA',
517
+ },
518
+
519
+ // URLs
520
+ url: {
521
+ type: 'url',
522
+ optional: true,
523
+ description: 'Commit web URL',
524
+ },
525
+ htmlUrl: {
526
+ type: 'url',
527
+ optional: true,
528
+ description: 'Commit HTML page URL',
529
+ },
530
+ },
531
+
532
+ relationships: {
533
+ repository: {
534
+ type: 'Repository',
535
+ backref: 'commits',
536
+ description: 'Repository this commit belongs to',
537
+ },
538
+ author: {
539
+ type: 'Contact',
540
+ description: 'Commit author',
541
+ },
542
+ committer: {
543
+ type: 'Contact',
544
+ required: false,
545
+ description: 'Person who committed (if different from author)',
546
+ },
547
+ parents: {
548
+ type: 'Commit[]',
549
+ description: 'Parent commits',
550
+ },
551
+ branch: {
552
+ type: 'Branch',
553
+ required: false,
554
+ description: 'Branch this commit is on',
555
+ },
556
+ pullRequest: {
557
+ type: 'PullRequest',
558
+ required: false,
559
+ description: 'Pull request this commit is part of',
560
+ },
561
+ },
562
+
563
+ actions: [
564
+ 'create',
565
+ 'amend',
566
+ 'revert',
567
+ 'cherryPick',
568
+ 'view',
569
+ 'compare',
570
+ 'blame',
571
+ 'sign',
572
+ 'verify',
573
+ ],
574
+
575
+ events: [
576
+ 'created',
577
+ 'amended',
578
+ 'reverted',
579
+ 'cherryPicked',
580
+ 'pushed',
581
+ 'signed',
582
+ 'verified',
583
+ ],
584
+ }
585
+
586
+ // =============================================================================
587
+ // Pull Request
588
+ // =============================================================================
589
+
590
+ /**
591
+ * Pull request entity
592
+ *
593
+ * Represents a pull request for code review and merging
594
+ */
595
+ export const PullRequest: Noun = {
596
+ singular: 'pull request',
597
+ plural: 'pull requests',
598
+ description: 'A pull request for reviewing and merging code changes',
599
+
600
+ properties: {
601
+ // Identity
602
+ number: {
603
+ type: 'number',
604
+ description: 'Pull request number',
605
+ },
606
+ title: {
607
+ type: 'string',
608
+ description: 'Pull request title',
609
+ },
610
+ description: {
611
+ type: 'string',
612
+ optional: true,
613
+ description: 'Pull request description/body',
614
+ },
615
+
616
+ // Status
617
+ status: {
618
+ type: 'string',
619
+ description: 'PR status: open, closed, merged, draft',
620
+ examples: ['open', 'closed', 'merged', 'draft'],
621
+ },
622
+ state: {
623
+ type: 'string',
624
+ description: 'State: open, closed',
625
+ examples: ['open', 'closed'],
626
+ },
627
+ isDraft: {
628
+ type: 'boolean',
629
+ optional: true,
630
+ description: 'Whether this is a draft PR',
631
+ },
632
+ mergeable: {
633
+ type: 'boolean',
634
+ optional: true,
635
+ description: 'Whether the PR can be merged',
636
+ },
637
+ mergeableState: {
638
+ type: 'string',
639
+ optional: true,
640
+ description: 'Mergeable state: clean, dirty, unstable, blocked',
641
+ examples: ['clean', 'dirty', 'unstable', 'blocked'],
642
+ },
643
+
644
+ // Branches
645
+ headBranch: {
646
+ type: 'string',
647
+ description: 'Source branch name',
648
+ },
649
+ baseBranch: {
650
+ type: 'string',
651
+ description: 'Target branch name',
652
+ },
653
+ headSha: {
654
+ type: 'string',
655
+ optional: true,
656
+ description: 'SHA of the head commit',
657
+ },
658
+ baseSha: {
659
+ type: 'string',
660
+ optional: true,
661
+ description: 'SHA of the base commit',
662
+ },
663
+
664
+ // Changes
665
+ filesChanged: {
666
+ type: 'number',
667
+ optional: true,
668
+ description: 'Number of files changed',
669
+ },
670
+ additions: {
671
+ type: 'number',
672
+ optional: true,
673
+ description: 'Lines added',
674
+ },
675
+ deletions: {
676
+ type: 'number',
677
+ optional: true,
678
+ description: 'Lines deleted',
679
+ },
680
+ commits: {
681
+ type: 'number',
682
+ optional: true,
683
+ description: 'Number of commits',
684
+ },
685
+
686
+ // Review
687
+ reviewDecision: {
688
+ type: 'string',
689
+ optional: true,
690
+ description: 'Review decision: approved, changes_requested, review_required',
691
+ examples: ['approved', 'changes_requested', 'review_required'],
692
+ },
693
+ requestedReviewers: {
694
+ type: 'string',
695
+ array: true,
696
+ optional: true,
697
+ description: 'Usernames of requested reviewers',
698
+ },
699
+ assignees: {
700
+ type: 'string',
701
+ array: true,
702
+ optional: true,
703
+ description: 'Usernames of assignees',
704
+ },
705
+
706
+ // Checks
707
+ checksStatus: {
708
+ type: 'string',
709
+ optional: true,
710
+ description: 'Status checks state: pending, success, failure',
711
+ examples: ['pending', 'success', 'failure'],
712
+ },
713
+ requiredChecksPass: {
714
+ type: 'boolean',
715
+ optional: true,
716
+ description: 'Whether all required checks pass',
717
+ },
718
+
719
+ // Merge
720
+ merged: {
721
+ type: 'boolean',
722
+ optional: true,
723
+ description: 'Whether the PR has been merged',
724
+ },
725
+ mergedAt: {
726
+ type: 'datetime',
727
+ optional: true,
728
+ description: 'When the PR was merged',
729
+ },
730
+ mergedBy: {
731
+ type: 'string',
732
+ optional: true,
733
+ description: 'Username who merged the PR',
734
+ },
735
+ mergeCommitSha: {
736
+ type: 'string',
737
+ optional: true,
738
+ description: 'SHA of the merge commit',
739
+ },
740
+ autoMerge: {
741
+ type: 'boolean',
742
+ optional: true,
743
+ description: 'Whether auto-merge is enabled',
744
+ },
745
+
746
+ // Metadata
747
+ labels: {
748
+ type: 'string',
749
+ array: true,
750
+ optional: true,
751
+ description: 'Labels applied to the PR',
752
+ },
753
+ milestone: {
754
+ type: 'string',
755
+ optional: true,
756
+ description: 'Milestone name',
757
+ },
758
+ locked: {
759
+ type: 'boolean',
760
+ optional: true,
761
+ description: 'Whether the PR is locked',
762
+ },
763
+
764
+ // URLs
765
+ url: {
766
+ type: 'url',
767
+ optional: true,
768
+ description: 'PR API URL',
769
+ },
770
+ htmlUrl: {
771
+ type: 'url',
772
+ optional: true,
773
+ description: 'PR web page URL',
774
+ },
775
+ diffUrl: {
776
+ type: 'url',
777
+ optional: true,
778
+ description: 'URL to view the diff',
779
+ },
780
+ patchUrl: {
781
+ type: 'url',
782
+ optional: true,
783
+ description: 'URL to download the patch',
784
+ },
785
+ },
786
+
787
+ relationships: {
788
+ repository: {
789
+ type: 'Repository',
790
+ backref: 'pullRequests',
791
+ description: 'Repository this PR belongs to',
792
+ },
793
+ author: {
794
+ type: 'Contact',
795
+ description: 'PR author',
796
+ },
797
+ headBranchRef: {
798
+ type: 'Branch',
799
+ description: 'Source branch',
800
+ },
801
+ baseBranchRef: {
802
+ type: 'Branch',
803
+ description: 'Target branch',
804
+ },
805
+ commits: {
806
+ type: 'Commit[]',
807
+ description: 'Commits in this PR',
808
+ },
809
+ reviews: {
810
+ type: 'CodeReview[]',
811
+ backref: 'pullRequest',
812
+ description: 'Code reviews on this PR',
813
+ },
814
+ reviewers: {
815
+ type: 'Contact[]',
816
+ description: 'Requested reviewers',
817
+ },
818
+ assignedTo: {
819
+ type: 'Contact[]',
820
+ description: 'People assigned to this PR',
821
+ },
822
+ workflowRuns: {
823
+ type: 'WorkflowRun[]',
824
+ description: 'CI/CD workflow runs for this PR',
825
+ },
826
+ linkedIssues: {
827
+ type: 'CodeIssue[]',
828
+ description: 'Issues linked to this PR',
829
+ },
830
+ },
831
+
832
+ actions: [
833
+ 'create',
834
+ 'update',
835
+ 'close',
836
+ 'reopen',
837
+ 'merge',
838
+ 'squashMerge',
839
+ 'rebaseMerge',
840
+ 'approve',
841
+ 'requestChanges',
842
+ 'requestReview',
843
+ 'assign',
844
+ 'unassign',
845
+ 'label',
846
+ 'unlabel',
847
+ 'lock',
848
+ 'unlock',
849
+ 'enableAutoMerge',
850
+ 'disableAutoMerge',
851
+ 'convertToDraft',
852
+ 'markReadyForReview',
853
+ ],
854
+
855
+ events: [
856
+ 'created',
857
+ 'updated',
858
+ 'closed',
859
+ 'reopened',
860
+ 'merged',
861
+ 'approved',
862
+ 'changesRequested',
863
+ 'reviewRequested',
864
+ 'assigned',
865
+ 'unassigned',
866
+ 'labeled',
867
+ 'unlabeled',
868
+ 'locked',
869
+ 'unlocked',
870
+ 'autoMergeEnabled',
871
+ 'autoMergeDisabled',
872
+ 'convertedToDraft',
873
+ 'markedReadyForReview',
874
+ 'synchronize',
875
+ ],
876
+ }
877
+
878
+ // =============================================================================
879
+ // Code Review
880
+ // =============================================================================
881
+
882
+ /**
883
+ * Code review entity
884
+ *
885
+ * Represents a code review or review comment on a pull request
886
+ */
887
+ export const CodeReview: Noun = {
888
+ singular: 'code review',
889
+ plural: 'code reviews',
890
+ description: 'A code review on a pull request',
891
+
892
+ properties: {
893
+ // Content
894
+ body: {
895
+ type: 'string',
896
+ optional: true,
897
+ description: 'Review comment body',
898
+ },
899
+
900
+ // Type
901
+ reviewType: {
902
+ type: 'string',
903
+ description: 'Type: comment, approve, request_changes',
904
+ examples: ['comment', 'approve', 'request_changes'],
905
+ },
906
+ state: {
907
+ type: 'string',
908
+ description: 'Review state: pending, commented, approved, changes_requested, dismissed',
909
+ examples: ['pending', 'commented', 'approved', 'changes_requested', 'dismissed'],
910
+ },
911
+
912
+ // Line-specific (for inline comments)
913
+ path: {
914
+ type: 'string',
915
+ optional: true,
916
+ description: 'File path for inline comment',
917
+ },
918
+ line: {
919
+ type: 'number',
920
+ optional: true,
921
+ description: 'Line number for inline comment',
922
+ },
923
+ startLine: {
924
+ type: 'number',
925
+ optional: true,
926
+ description: 'Start line for multi-line comment',
927
+ },
928
+ side: {
929
+ type: 'string',
930
+ optional: true,
931
+ description: 'Side of diff: LEFT or RIGHT',
932
+ examples: ['LEFT', 'RIGHT'],
933
+ },
934
+ commitId: {
935
+ type: 'string',
936
+ optional: true,
937
+ description: 'Commit SHA this comment is on',
938
+ },
939
+
940
+ // Status
941
+ resolved: {
942
+ type: 'boolean',
943
+ optional: true,
944
+ description: 'Whether the comment is resolved',
945
+ },
946
+ outdated: {
947
+ type: 'boolean',
948
+ optional: true,
949
+ description: 'Whether the comment is outdated',
950
+ },
951
+
952
+ // URLs
953
+ htmlUrl: {
954
+ type: 'url',
955
+ optional: true,
956
+ description: 'Review web page URL',
957
+ },
958
+ },
959
+
960
+ relationships: {
961
+ pullRequest: {
962
+ type: 'PullRequest',
963
+ backref: 'reviews',
964
+ description: 'Pull request this review is on',
965
+ },
966
+ reviewer: {
967
+ type: 'Contact',
968
+ description: 'Person who wrote the review',
969
+ },
970
+ commit: {
971
+ type: 'Commit',
972
+ required: false,
973
+ description: 'Specific commit being reviewed',
974
+ },
975
+ inReplyTo: {
976
+ type: 'CodeReview',
977
+ required: false,
978
+ description: 'Parent comment if this is a reply',
979
+ },
980
+ replies: {
981
+ type: 'CodeReview[]',
982
+ description: 'Replies to this review comment',
983
+ },
984
+ },
985
+
986
+ actions: [
987
+ 'create',
988
+ 'submit',
989
+ 'update',
990
+ 'delete',
991
+ 'dismiss',
992
+ 'resolve',
993
+ 'unresolve',
994
+ 'reply',
995
+ ],
996
+
997
+ events: [
998
+ 'created',
999
+ 'submitted',
1000
+ 'updated',
1001
+ 'deleted',
1002
+ 'dismissed',
1003
+ 'resolved',
1004
+ 'unresolved',
1005
+ 'replied',
1006
+ ],
1007
+ }
1008
+
1009
+ // =============================================================================
1010
+ // Code Issue
1011
+ // =============================================================================
1012
+
1013
+ /**
1014
+ * Code issue entity
1015
+ *
1016
+ * Represents a GitHub/GitLab style issue for tracking bugs, features, and tasks
1017
+ */
1018
+ export const CodeIssue: Noun = {
1019
+ singular: 'code issue',
1020
+ plural: 'code issues',
1021
+ description: 'An issue for tracking bugs, features, and tasks in code',
1022
+
1023
+ properties: {
1024
+ // Identity
1025
+ number: {
1026
+ type: 'number',
1027
+ description: 'Issue number',
1028
+ },
1029
+ title: {
1030
+ type: 'string',
1031
+ description: 'Issue title',
1032
+ },
1033
+ description: {
1034
+ type: 'string',
1035
+ optional: true,
1036
+ description: 'Issue description/body',
1037
+ },
1038
+
1039
+ // Status
1040
+ state: {
1041
+ type: 'string',
1042
+ description: 'Issue state: open, closed',
1043
+ examples: ['open', 'closed'],
1044
+ },
1045
+ stateReason: {
1046
+ type: 'string',
1047
+ optional: true,
1048
+ description: 'Reason for state: completed, not_planned, reopened',
1049
+ examples: ['completed', 'not_planned', 'reopened'],
1050
+ },
1051
+
1052
+ // Classification
1053
+ labels: {
1054
+ type: 'string',
1055
+ array: true,
1056
+ optional: true,
1057
+ description: 'Labels applied to the issue',
1058
+ },
1059
+ milestone: {
1060
+ type: 'string',
1061
+ optional: true,
1062
+ description: 'Milestone name',
1063
+ },
1064
+ assignees: {
1065
+ type: 'string',
1066
+ array: true,
1067
+ optional: true,
1068
+ description: 'Usernames of assignees',
1069
+ },
1070
+
1071
+ // Interaction
1072
+ commentCount: {
1073
+ type: 'number',
1074
+ optional: true,
1075
+ description: 'Number of comments',
1076
+ },
1077
+ locked: {
1078
+ type: 'boolean',
1079
+ optional: true,
1080
+ description: 'Whether the issue is locked',
1081
+ },
1082
+
1083
+ // Dates
1084
+ closedAt: {
1085
+ type: 'datetime',
1086
+ optional: true,
1087
+ description: 'When the issue was closed',
1088
+ },
1089
+ closedBy: {
1090
+ type: 'string',
1091
+ optional: true,
1092
+ description: 'Username who closed the issue',
1093
+ },
1094
+
1095
+ // URLs
1096
+ url: {
1097
+ type: 'url',
1098
+ optional: true,
1099
+ description: 'Issue API URL',
1100
+ },
1101
+ htmlUrl: {
1102
+ type: 'url',
1103
+ optional: true,
1104
+ description: 'Issue web page URL',
1105
+ },
1106
+ },
1107
+
1108
+ relationships: {
1109
+ repository: {
1110
+ type: 'Repository',
1111
+ backref: 'issues',
1112
+ description: 'Repository this issue belongs to',
1113
+ },
1114
+ author: {
1115
+ type: 'Contact',
1116
+ description: 'Issue author',
1117
+ },
1118
+ assignedTo: {
1119
+ type: 'Contact[]',
1120
+ description: 'People assigned to this issue',
1121
+ },
1122
+ linkedPullRequests: {
1123
+ type: 'PullRequest[]',
1124
+ description: 'Pull requests that reference this issue',
1125
+ },
1126
+ },
1127
+
1128
+ actions: [
1129
+ 'create',
1130
+ 'update',
1131
+ 'close',
1132
+ 'reopen',
1133
+ 'assign',
1134
+ 'unassign',
1135
+ 'label',
1136
+ 'unlabel',
1137
+ 'lock',
1138
+ 'unlock',
1139
+ 'comment',
1140
+ 'transfer',
1141
+ 'pin',
1142
+ 'unpin',
1143
+ ],
1144
+
1145
+ events: [
1146
+ 'created',
1147
+ 'updated',
1148
+ 'closed',
1149
+ 'reopened',
1150
+ 'assigned',
1151
+ 'unassigned',
1152
+ 'labeled',
1153
+ 'unlabeled',
1154
+ 'locked',
1155
+ 'unlocked',
1156
+ 'commented',
1157
+ 'transferred',
1158
+ 'pinned',
1159
+ 'unpinned',
1160
+ ],
1161
+ }
1162
+
1163
+ // =============================================================================
1164
+ // Release
1165
+ // =============================================================================
1166
+
1167
+ /**
1168
+ * Release entity
1169
+ *
1170
+ * Represents a release or tag with version information
1171
+ */
1172
+ export const Release: Noun = {
1173
+ singular: 'release',
1174
+ plural: 'releases',
1175
+ description: 'A release or version tag with distribution artifacts',
1176
+
1177
+ properties: {
1178
+ // Identity
1179
+ tagName: {
1180
+ type: 'string',
1181
+ description: 'Git tag name (e.g., v1.0.0)',
1182
+ },
1183
+ name: {
1184
+ type: 'string',
1185
+ optional: true,
1186
+ description: 'Release name/title',
1187
+ },
1188
+ description: {
1189
+ type: 'string',
1190
+ optional: true,
1191
+ description: 'Release notes/description',
1192
+ },
1193
+
1194
+ // Version
1195
+ version: {
1196
+ type: 'string',
1197
+ optional: true,
1198
+ description: 'Semantic version number',
1199
+ },
1200
+ targetCommitish: {
1201
+ type: 'string',
1202
+ optional: true,
1203
+ description: 'Target branch or commit SHA',
1204
+ },
1205
+
1206
+ // Status
1207
+ draft: {
1208
+ type: 'boolean',
1209
+ optional: true,
1210
+ description: 'Whether this is a draft release',
1211
+ },
1212
+ prerelease: {
1213
+ type: 'boolean',
1214
+ optional: true,
1215
+ description: 'Whether this is a pre-release',
1216
+ },
1217
+ latest: {
1218
+ type: 'boolean',
1219
+ optional: true,
1220
+ description: 'Whether this is the latest release',
1221
+ },
1222
+
1223
+ // Publishing
1224
+ publishedAt: {
1225
+ type: 'datetime',
1226
+ optional: true,
1227
+ description: 'When the release was published',
1228
+ },
1229
+ publishedBy: {
1230
+ type: 'string',
1231
+ optional: true,
1232
+ description: 'Username who published the release',
1233
+ },
1234
+
1235
+ // URLs
1236
+ htmlUrl: {
1237
+ type: 'url',
1238
+ optional: true,
1239
+ description: 'Release web page URL',
1240
+ },
1241
+ tarballUrl: {
1242
+ type: 'url',
1243
+ optional: true,
1244
+ description: 'URL to download tarball',
1245
+ },
1246
+ zipballUrl: {
1247
+ type: 'url',
1248
+ optional: true,
1249
+ description: 'URL to download zipball',
1250
+ },
1251
+ },
1252
+
1253
+ relationships: {
1254
+ repository: {
1255
+ type: 'Repository',
1256
+ backref: 'releases',
1257
+ description: 'Repository this release belongs to',
1258
+ },
1259
+ author: {
1260
+ type: 'Contact',
1261
+ description: 'Release author',
1262
+ },
1263
+ commit: {
1264
+ type: 'Commit',
1265
+ required: false,
1266
+ description: 'Commit this release points to',
1267
+ },
1268
+ assets: {
1269
+ type: 'Attachment[]',
1270
+ description: 'Release assets (binaries, packages, etc.)',
1271
+ },
1272
+ },
1273
+
1274
+ actions: [
1275
+ 'create',
1276
+ 'update',
1277
+ 'delete',
1278
+ 'publish',
1279
+ 'unpublish',
1280
+ 'addAsset',
1281
+ 'removeAsset',
1282
+ 'setLatest',
1283
+ ],
1284
+
1285
+ events: [
1286
+ 'created',
1287
+ 'updated',
1288
+ 'deleted',
1289
+ 'published',
1290
+ 'unpublished',
1291
+ 'assetAdded',
1292
+ 'assetRemoved',
1293
+ 'edited',
1294
+ ],
1295
+ }
1296
+
1297
+ // =============================================================================
1298
+ // Workflow
1299
+ // =============================================================================
1300
+
1301
+ /**
1302
+ * CI/CD workflow entity
1303
+ *
1304
+ * Represents a continuous integration/deployment workflow or action
1305
+ */
1306
+ export const Workflow: Noun = {
1307
+ singular: 'workflow',
1308
+ plural: 'workflows',
1309
+ description: 'A CI/CD workflow for automated testing and deployment',
1310
+
1311
+ properties: {
1312
+ // Identity
1313
+ name: {
1314
+ type: 'string',
1315
+ description: 'Workflow name',
1316
+ },
1317
+ path: {
1318
+ type: 'string',
1319
+ optional: true,
1320
+ description: 'Path to workflow file (e.g., .github/workflows/ci.yml)',
1321
+ },
1322
+
1323
+ // Status
1324
+ state: {
1325
+ type: 'string',
1326
+ description: 'Workflow state: active, deleted, disabled_manually, disabled_inactivity',
1327
+ examples: ['active', 'deleted', 'disabled_manually', 'disabled_inactivity'],
1328
+ },
1329
+
1330
+ // Triggers
1331
+ triggers: {
1332
+ type: 'string',
1333
+ array: true,
1334
+ optional: true,
1335
+ description: 'Events that trigger this workflow (push, pull_request, schedule, etc.)',
1336
+ examples: ['push', 'pull_request', 'workflow_dispatch', 'schedule', 'release'],
1337
+ },
1338
+
1339
+ // Configuration
1340
+ steps: {
1341
+ type: 'json',
1342
+ optional: true,
1343
+ description: 'Workflow steps configuration',
1344
+ },
1345
+ jobs: {
1346
+ type: 'json',
1347
+ optional: true,
1348
+ description: 'Workflow jobs configuration',
1349
+ },
1350
+ environment: {
1351
+ type: 'json',
1352
+ optional: true,
1353
+ description: 'Environment variables and secrets',
1354
+ },
1355
+
1356
+ // Timing
1357
+ timeout: {
1358
+ type: 'number',
1359
+ optional: true,
1360
+ description: 'Workflow timeout in minutes',
1361
+ },
1362
+
1363
+ // URLs
1364
+ htmlUrl: {
1365
+ type: 'url',
1366
+ optional: true,
1367
+ description: 'Workflow web page URL',
1368
+ },
1369
+ badgeUrl: {
1370
+ type: 'url',
1371
+ optional: true,
1372
+ description: 'Status badge URL',
1373
+ },
1374
+ },
1375
+
1376
+ relationships: {
1377
+ repository: {
1378
+ type: 'Repository',
1379
+ backref: 'workflows',
1380
+ description: 'Repository this workflow belongs to',
1381
+ },
1382
+ runs: {
1383
+ type: 'WorkflowRun[]',
1384
+ backref: 'workflow',
1385
+ description: 'Executions of this workflow',
1386
+ },
1387
+ },
1388
+
1389
+ actions: [
1390
+ 'create',
1391
+ 'update',
1392
+ 'delete',
1393
+ 'enable',
1394
+ 'disable',
1395
+ 'trigger',
1396
+ 'dispatch',
1397
+ ],
1398
+
1399
+ events: [
1400
+ 'created',
1401
+ 'updated',
1402
+ 'deleted',
1403
+ 'enabled',
1404
+ 'disabled',
1405
+ 'triggered',
1406
+ 'dispatched',
1407
+ ],
1408
+ }
1409
+
1410
+ // =============================================================================
1411
+ // Workflow Run
1412
+ // =============================================================================
1413
+
1414
+ /**
1415
+ * Workflow run entity
1416
+ *
1417
+ * Represents a single execution of a workflow
1418
+ */
1419
+ export const WorkflowRun: Noun = {
1420
+ singular: 'workflow run',
1421
+ plural: 'workflow runs',
1422
+ description: 'An execution instance of a workflow',
1423
+
1424
+ properties: {
1425
+ // Identity
1426
+ runNumber: {
1427
+ type: 'number',
1428
+ description: 'Run number for this workflow',
1429
+ },
1430
+ runAttempt: {
1431
+ type: 'number',
1432
+ optional: true,
1433
+ description: 'Attempt number for this run',
1434
+ },
1435
+
1436
+ // Status
1437
+ status: {
1438
+ type: 'string',
1439
+ description: 'Run status: queued, in_progress, completed, waiting',
1440
+ examples: ['queued', 'in_progress', 'completed', 'waiting'],
1441
+ },
1442
+ conclusion: {
1443
+ type: 'string',
1444
+ optional: true,
1445
+ description: 'Run conclusion: success, failure, cancelled, skipped, timed_out, action_required',
1446
+ examples: ['success', 'failure', 'cancelled', 'skipped', 'timed_out', 'action_required'],
1447
+ },
1448
+
1449
+ // Trigger
1450
+ event: {
1451
+ type: 'string',
1452
+ description: 'Event that triggered the run',
1453
+ },
1454
+ triggeredBy: {
1455
+ type: 'string',
1456
+ optional: true,
1457
+ description: 'Username who triggered the run',
1458
+ },
1459
+
1460
+ // Timing
1461
+ startedAt: {
1462
+ type: 'datetime',
1463
+ optional: true,
1464
+ description: 'When the run started',
1465
+ },
1466
+ completedAt: {
1467
+ type: 'datetime',
1468
+ optional: true,
1469
+ description: 'When the run completed',
1470
+ },
1471
+ duration: {
1472
+ type: 'number',
1473
+ optional: true,
1474
+ description: 'Run duration in seconds',
1475
+ },
1476
+
1477
+ // Context
1478
+ headBranch: {
1479
+ type: 'string',
1480
+ optional: true,
1481
+ description: 'Branch name',
1482
+ },
1483
+ headSha: {
1484
+ type: 'string',
1485
+ optional: true,
1486
+ description: 'Commit SHA',
1487
+ },
1488
+
1489
+ // Jobs
1490
+ jobsUrl: {
1491
+ type: 'url',
1492
+ optional: true,
1493
+ description: 'URL to view jobs',
1494
+ },
1495
+ logsUrl: {
1496
+ type: 'url',
1497
+ optional: true,
1498
+ description: 'URL to view logs',
1499
+ },
1500
+
1501
+ // Results
1502
+ steps: {
1503
+ type: 'json',
1504
+ optional: true,
1505
+ description: 'Individual step results',
1506
+ },
1507
+ artifacts: {
1508
+ type: 'json',
1509
+ optional: true,
1510
+ description: 'Build artifacts produced',
1511
+ },
1512
+
1513
+ // URLs
1514
+ htmlUrl: {
1515
+ type: 'url',
1516
+ optional: true,
1517
+ description: 'Run web page URL',
1518
+ },
1519
+ },
1520
+
1521
+ relationships: {
1522
+ workflow: {
1523
+ type: 'Workflow',
1524
+ backref: 'runs',
1525
+ description: 'Workflow that was executed',
1526
+ },
1527
+ repository: {
1528
+ type: 'Repository',
1529
+ description: 'Repository the workflow ran in',
1530
+ },
1531
+ commit: {
1532
+ type: 'Commit',
1533
+ required: false,
1534
+ description: 'Commit that triggered the run',
1535
+ },
1536
+ branch: {
1537
+ type: 'Branch',
1538
+ required: false,
1539
+ description: 'Branch the run executed on',
1540
+ },
1541
+ pullRequest: {
1542
+ type: 'PullRequest',
1543
+ required: false,
1544
+ description: 'Pull request that triggered the run',
1545
+ },
1546
+ triggeredBy: {
1547
+ type: 'Contact',
1548
+ required: false,
1549
+ description: 'User who triggered the run',
1550
+ },
1551
+ },
1552
+
1553
+ actions: [
1554
+ 'start',
1555
+ 'cancel',
1556
+ 'rerun',
1557
+ 'approve',
1558
+ 'viewLogs',
1559
+ 'downloadArtifacts',
1560
+ ],
1561
+
1562
+ events: [
1563
+ 'started',
1564
+ 'queued',
1565
+ 'inProgress',
1566
+ 'completed',
1567
+ 'succeeded',
1568
+ 'failed',
1569
+ 'cancelled',
1570
+ 'skipped',
1571
+ 'timedOut',
1572
+ 'requiresApproval',
1573
+ 'approved',
1574
+ 'rerun',
1575
+ ],
1576
+ }
1577
+
1578
+ // =============================================================================
1579
+ // Discussion
1580
+ // =============================================================================
1581
+
1582
+ /**
1583
+ * Discussion entity
1584
+ *
1585
+ * Represents a GitHub-style discussion thread
1586
+ */
1587
+ export const Discussion: Noun = {
1588
+ singular: 'discussion',
1589
+ plural: 'discussions',
1590
+ description: 'A discussion thread for community conversations',
1591
+
1592
+ properties: {
1593
+ // Identity
1594
+ number: {
1595
+ type: 'number',
1596
+ description: 'Discussion number',
1597
+ },
1598
+ title: {
1599
+ type: 'string',
1600
+ description: 'Discussion title',
1601
+ },
1602
+ body: {
1603
+ type: 'string',
1604
+ description: 'Discussion body content',
1605
+ },
1606
+
1607
+ // Category
1608
+ category: {
1609
+ type: 'string',
1610
+ optional: true,
1611
+ description: 'Discussion category',
1612
+ },
1613
+ categoryEmoji: {
1614
+ type: 'string',
1615
+ optional: true,
1616
+ description: 'Category emoji icon',
1617
+ },
1618
+
1619
+ // Status
1620
+ answered: {
1621
+ type: 'boolean',
1622
+ optional: true,
1623
+ description: 'Whether discussion has an accepted answer',
1624
+ },
1625
+ locked: {
1626
+ type: 'boolean',
1627
+ optional: true,
1628
+ description: 'Whether discussion is locked',
1629
+ },
1630
+ pinned: {
1631
+ type: 'boolean',
1632
+ optional: true,
1633
+ description: 'Whether discussion is pinned',
1634
+ },
1635
+
1636
+ // Engagement
1637
+ upvoteCount: {
1638
+ type: 'number',
1639
+ optional: true,
1640
+ description: 'Number of upvotes',
1641
+ },
1642
+ commentCount: {
1643
+ type: 'number',
1644
+ optional: true,
1645
+ description: 'Number of comments',
1646
+ },
1647
+
1648
+ // URLs
1649
+ url: {
1650
+ type: 'url',
1651
+ optional: true,
1652
+ description: 'Discussion URL',
1653
+ },
1654
+ },
1655
+
1656
+ relationships: {
1657
+ repository: {
1658
+ type: 'Repository',
1659
+ description: 'Repository this discussion belongs to',
1660
+ },
1661
+ author: {
1662
+ type: 'Contact',
1663
+ description: 'Discussion author',
1664
+ },
1665
+ answer: {
1666
+ type: 'Comment',
1667
+ required: false,
1668
+ description: 'Accepted answer comment',
1669
+ },
1670
+ comments: {
1671
+ type: 'Comment[]',
1672
+ description: 'Discussion comments',
1673
+ },
1674
+ },
1675
+
1676
+ actions: [
1677
+ 'create',
1678
+ 'update',
1679
+ 'delete',
1680
+ 'lock',
1681
+ 'unlock',
1682
+ 'pin',
1683
+ 'unpin',
1684
+ 'upvote',
1685
+ 'removeUpvote',
1686
+ 'markAnswer',
1687
+ 'unmarkAnswer',
1688
+ 'transfer',
1689
+ ],
1690
+
1691
+ events: [
1692
+ 'created',
1693
+ 'updated',
1694
+ 'deleted',
1695
+ 'locked',
1696
+ 'unlocked',
1697
+ 'pinned',
1698
+ 'unpinned',
1699
+ 'upvoted',
1700
+ 'answered',
1701
+ 'transferred',
1702
+ 'commented',
1703
+ ],
1704
+ }
1705
+
1706
+ // =============================================================================
1707
+ // Package
1708
+ // =============================================================================
1709
+
1710
+ /**
1711
+ * Package entity
1712
+ *
1713
+ * Represents a package in a package registry (npm, containers, etc.)
1714
+ */
1715
+ export const Package: Noun = {
1716
+ singular: 'package',
1717
+ plural: 'packages',
1718
+ description: 'A package in a package registry',
1719
+
1720
+ properties: {
1721
+ // Identity
1722
+ name: {
1723
+ type: 'string',
1724
+ description: 'Package name',
1725
+ },
1726
+ namespace: {
1727
+ type: 'string',
1728
+ optional: true,
1729
+ description: 'Package namespace/scope',
1730
+ },
1731
+ packageType: {
1732
+ type: 'string',
1733
+ description: 'Package type: npm, maven, docker, nuget, rubygems',
1734
+ examples: ['npm', 'maven', 'docker', 'nuget', 'rubygems', 'container'],
1735
+ },
1736
+
1737
+ // Version
1738
+ latestVersion: {
1739
+ type: 'string',
1740
+ optional: true,
1741
+ description: 'Latest version tag',
1742
+ },
1743
+ versionCount: {
1744
+ type: 'number',
1745
+ optional: true,
1746
+ description: 'Number of versions published',
1747
+ },
1748
+
1749
+ // Visibility
1750
+ visibility: {
1751
+ type: 'string',
1752
+ description: 'Package visibility: public, private',
1753
+ examples: ['public', 'private'],
1754
+ },
1755
+
1756
+ // Metadata
1757
+ description: {
1758
+ type: 'string',
1759
+ optional: true,
1760
+ description: 'Package description',
1761
+ },
1762
+ license: {
1763
+ type: 'string',
1764
+ optional: true,
1765
+ description: 'Package license',
1766
+ },
1767
+ homepage: {
1768
+ type: 'url',
1769
+ optional: true,
1770
+ description: 'Package homepage',
1771
+ },
1772
+ repository: {
1773
+ type: 'url',
1774
+ optional: true,
1775
+ description: 'Source repository URL',
1776
+ },
1777
+
1778
+ // Stats
1779
+ downloadCount: {
1780
+ type: 'number',
1781
+ optional: true,
1782
+ description: 'Total downloads',
1783
+ },
1784
+ size: {
1785
+ type: 'number',
1786
+ optional: true,
1787
+ description: 'Package size in bytes',
1788
+ },
1789
+ },
1790
+
1791
+ relationships: {
1792
+ owner: {
1793
+ type: 'Contact',
1794
+ description: 'Package owner',
1795
+ },
1796
+ versions: {
1797
+ type: 'PackageVersion[]',
1798
+ description: 'Package versions',
1799
+ },
1800
+ repository: {
1801
+ type: 'Repository',
1802
+ required: false,
1803
+ description: 'Source repository',
1804
+ },
1805
+ },
1806
+
1807
+ actions: [
1808
+ 'create',
1809
+ 'publish',
1810
+ 'unpublish',
1811
+ 'deprecate',
1812
+ 'undeprecate',
1813
+ 'delete',
1814
+ 'transfer',
1815
+ 'setVisibility',
1816
+ 'addCollaborator',
1817
+ 'removeCollaborator',
1818
+ ],
1819
+
1820
+ events: [
1821
+ 'created',
1822
+ 'published',
1823
+ 'unpublished',
1824
+ 'deprecated',
1825
+ 'deleted',
1826
+ 'transferred',
1827
+ 'visibilityChanged',
1828
+ 'collaboratorAdded',
1829
+ 'collaboratorRemoved',
1830
+ 'downloaded',
1831
+ ],
1832
+ }
1833
+
1834
+ /**
1835
+ * Package version entity
1836
+ */
1837
+ export const PackageVersion: Noun = {
1838
+ singular: 'package version',
1839
+ plural: 'package versions',
1840
+ description: 'A specific version of a package',
1841
+
1842
+ properties: {
1843
+ version: {
1844
+ type: 'string',
1845
+ description: 'Version string (semver)',
1846
+ },
1847
+ tag: {
1848
+ type: 'string',
1849
+ optional: true,
1850
+ description: 'Version tag (latest, beta, etc.)',
1851
+ },
1852
+ digest: {
1853
+ type: 'string',
1854
+ optional: true,
1855
+ description: 'Content digest/hash',
1856
+ },
1857
+ size: {
1858
+ type: 'number',
1859
+ optional: true,
1860
+ description: 'Version size in bytes',
1861
+ },
1862
+ deprecated: {
1863
+ type: 'boolean',
1864
+ optional: true,
1865
+ description: 'Whether version is deprecated',
1866
+ },
1867
+ deprecationMessage: {
1868
+ type: 'string',
1869
+ optional: true,
1870
+ description: 'Deprecation message',
1871
+ },
1872
+ publishedAt: {
1873
+ type: 'datetime',
1874
+ optional: true,
1875
+ description: 'Publication timestamp',
1876
+ },
1877
+ },
1878
+
1879
+ relationships: {
1880
+ package: {
1881
+ type: 'Package',
1882
+ backref: 'versions',
1883
+ description: 'Parent package',
1884
+ },
1885
+ publisher: {
1886
+ type: 'Contact',
1887
+ description: 'Who published this version',
1888
+ },
1889
+ },
1890
+
1891
+ actions: ['publish', 'deprecate', 'undeprecate', 'delete', 'download'],
1892
+
1893
+ events: ['published', 'deprecated', 'deleted', 'downloaded'],
1894
+ }
1895
+
1896
+ // =============================================================================
1897
+ // Gist
1898
+ // =============================================================================
1899
+
1900
+ /**
1901
+ * Gist entity
1902
+ *
1903
+ * Represents a code snippet or file sharing gist
1904
+ */
1905
+ export const Gist: Noun = {
1906
+ singular: 'gist',
1907
+ plural: 'gists',
1908
+ description: 'A code snippet or file sharing gist',
1909
+
1910
+ properties: {
1911
+ // Content
1912
+ description: {
1913
+ type: 'string',
1914
+ optional: true,
1915
+ description: 'Gist description',
1916
+ },
1917
+ files: {
1918
+ type: 'json',
1919
+ description: 'Files in the gist (filename -> content)',
1920
+ },
1921
+ fileCount: {
1922
+ type: 'number',
1923
+ optional: true,
1924
+ description: 'Number of files',
1925
+ },
1926
+
1927
+ // Visibility
1928
+ public: {
1929
+ type: 'boolean',
1930
+ description: 'Whether gist is public',
1931
+ },
1932
+
1933
+ // Stats
1934
+ forkCount: {
1935
+ type: 'number',
1936
+ optional: true,
1937
+ description: 'Number of forks',
1938
+ },
1939
+ starCount: {
1940
+ type: 'number',
1941
+ optional: true,
1942
+ description: 'Number of stars',
1943
+ },
1944
+ commentCount: {
1945
+ type: 'number',
1946
+ optional: true,
1947
+ description: 'Number of comments',
1948
+ },
1949
+
1950
+ // URLs
1951
+ url: {
1952
+ type: 'url',
1953
+ optional: true,
1954
+ description: 'Gist web URL',
1955
+ },
1956
+ rawUrl: {
1957
+ type: 'url',
1958
+ optional: true,
1959
+ description: 'Raw content URL',
1960
+ },
1961
+ embedUrl: {
1962
+ type: 'url',
1963
+ optional: true,
1964
+ description: 'Embed script URL',
1965
+ },
1966
+ },
1967
+
1968
+ relationships: {
1969
+ owner: {
1970
+ type: 'Contact',
1971
+ description: 'Gist owner',
1972
+ },
1973
+ forks: {
1974
+ type: 'Gist[]',
1975
+ description: 'Forked gists',
1976
+ },
1977
+ comments: {
1978
+ type: 'Comment[]',
1979
+ description: 'Gist comments',
1980
+ },
1981
+ },
1982
+
1983
+ actions: [
1984
+ 'create',
1985
+ 'update',
1986
+ 'delete',
1987
+ 'fork',
1988
+ 'star',
1989
+ 'unstar',
1990
+ 'comment',
1991
+ 'embed',
1992
+ 'share',
1993
+ ],
1994
+
1995
+ events: [
1996
+ 'created',
1997
+ 'updated',
1998
+ 'deleted',
1999
+ 'forked',
2000
+ 'starred',
2001
+ 'unstarred',
2002
+ 'commented',
2003
+ ],
2004
+ }
2005
+
2006
+ // =============================================================================
2007
+ // Secret
2008
+ // =============================================================================
2009
+
2010
+ /**
2011
+ * Secret entity
2012
+ *
2013
+ * Represents a secret or credential stored securely
2014
+ */
2015
+ export const Secret: Noun = {
2016
+ singular: 'secret',
2017
+ plural: 'secrets',
2018
+ description: 'A secret or credential stored securely',
2019
+
2020
+ properties: {
2021
+ // Identity
2022
+ name: {
2023
+ type: 'string',
2024
+ description: 'Secret name (typically uppercase with underscores)',
2025
+ },
2026
+
2027
+ // Scope
2028
+ scope: {
2029
+ type: 'string',
2030
+ description: 'Secret scope: repository, environment, organization',
2031
+ examples: ['repository', 'environment', 'organization'],
2032
+ },
2033
+ environment: {
2034
+ type: 'string',
2035
+ optional: true,
2036
+ description: 'Environment name if environment-scoped',
2037
+ },
2038
+
2039
+ // Metadata
2040
+ visibility: {
2041
+ type: 'string',
2042
+ optional: true,
2043
+ description: 'Visibility for org secrets: all, private, selected',
2044
+ examples: ['all', 'private', 'selected'],
2045
+ },
2046
+ selectedRepositories: {
2047
+ type: 'string',
2048
+ array: true,
2049
+ optional: true,
2050
+ description: 'Selected repositories for org secrets',
2051
+ },
2052
+
2053
+ // Audit
2054
+ lastUpdatedAt: {
2055
+ type: 'datetime',
2056
+ optional: true,
2057
+ description: 'When the secret was last updated',
2058
+ },
2059
+ updatedBy: {
2060
+ type: 'string',
2061
+ optional: true,
2062
+ description: 'Who last updated the secret',
2063
+ },
2064
+ },
2065
+
2066
+ relationships: {
2067
+ repository: {
2068
+ type: 'Repository',
2069
+ required: false,
2070
+ description: 'Repository if repo-scoped',
2071
+ },
2072
+ environment: {
2073
+ type: 'Environment',
2074
+ required: false,
2075
+ description: 'Environment if environment-scoped',
2076
+ },
2077
+ },
2078
+
2079
+ actions: [
2080
+ 'create',
2081
+ 'update',
2082
+ 'delete',
2083
+ 'rotate',
2084
+ 'setVisibility',
2085
+ 'addRepository',
2086
+ 'removeRepository',
2087
+ ],
2088
+
2089
+ events: [
2090
+ 'created',
2091
+ 'updated',
2092
+ 'deleted',
2093
+ 'rotated',
2094
+ 'visibilityChanged',
2095
+ 'accessed',
2096
+ ],
2097
+ }
2098
+
2099
+ // =============================================================================
2100
+ // Webhook
2101
+ // =============================================================================
2102
+
2103
+ /**
2104
+ * Webhook entity (development context)
2105
+ *
2106
+ * Represents a webhook for receiving event notifications
2107
+ */
2108
+ export const Webhook: Noun = {
2109
+ singular: 'webhook',
2110
+ plural: 'webhooks',
2111
+ description: 'A webhook for receiving event notifications',
2112
+
2113
+ properties: {
2114
+ // Configuration
2115
+ url: {
2116
+ type: 'url',
2117
+ description: 'Webhook delivery URL',
2118
+ },
2119
+ contentType: {
2120
+ type: 'string',
2121
+ description: 'Content type: json, form',
2122
+ examples: ['json', 'form'],
2123
+ },
2124
+ secret: {
2125
+ type: 'string',
2126
+ optional: true,
2127
+ description: 'Webhook secret for signature verification',
2128
+ },
2129
+
2130
+ // Events
2131
+ events: {
2132
+ type: 'string',
2133
+ array: true,
2134
+ description: 'Events to trigger webhook',
2135
+ },
2136
+
2137
+ // Status
2138
+ active: {
2139
+ type: 'boolean',
2140
+ description: 'Whether webhook is active',
2141
+ },
2142
+ insecureSsl: {
2143
+ type: 'boolean',
2144
+ optional: true,
2145
+ description: 'Whether to skip SSL verification',
2146
+ },
2147
+
2148
+ // Delivery stats
2149
+ lastDeliveredAt: {
2150
+ type: 'datetime',
2151
+ optional: true,
2152
+ description: 'Timestamp of last delivery',
2153
+ },
2154
+ lastStatus: {
2155
+ type: 'string',
2156
+ optional: true,
2157
+ description: 'Status of last delivery',
2158
+ },
2159
+ deliveryCount: {
2160
+ type: 'number',
2161
+ optional: true,
2162
+ description: 'Total deliveries',
2163
+ },
2164
+ failureCount: {
2165
+ type: 'number',
2166
+ optional: true,
2167
+ description: 'Failed deliveries',
2168
+ },
2169
+ },
2170
+
2171
+ relationships: {
2172
+ repository: {
2173
+ type: 'Repository',
2174
+ required: false,
2175
+ description: 'Repository if repo webhook',
2176
+ },
2177
+ deliveries: {
2178
+ type: 'WebhookDelivery[]',
2179
+ description: 'Delivery history',
2180
+ },
2181
+ },
2182
+
2183
+ actions: [
2184
+ 'create',
2185
+ 'update',
2186
+ 'delete',
2187
+ 'enable',
2188
+ 'disable',
2189
+ 'test',
2190
+ 'redeliver',
2191
+ ],
2192
+
2193
+ events: [
2194
+ 'created',
2195
+ 'updated',
2196
+ 'deleted',
2197
+ 'enabled',
2198
+ 'disabled',
2199
+ 'delivered',
2200
+ 'failed',
2201
+ ],
2202
+ }
2203
+
2204
+ /**
2205
+ * Webhook delivery entity
2206
+ */
2207
+ export const WebhookDelivery: Noun = {
2208
+ singular: 'webhook delivery',
2209
+ plural: 'webhook deliveries',
2210
+ description: 'A webhook delivery attempt',
2211
+
2212
+ properties: {
2213
+ event: {
2214
+ type: 'string',
2215
+ description: 'Event type that triggered delivery',
2216
+ },
2217
+ action: {
2218
+ type: 'string',
2219
+ optional: true,
2220
+ description: 'Event action',
2221
+ },
2222
+ status: {
2223
+ type: 'string',
2224
+ description: 'Delivery status: pending, success, failed',
2225
+ examples: ['pending', 'success', 'failed'],
2226
+ },
2227
+ statusCode: {
2228
+ type: 'number',
2229
+ optional: true,
2230
+ description: 'HTTP response status code',
2231
+ },
2232
+ duration: {
2233
+ type: 'number',
2234
+ optional: true,
2235
+ description: 'Delivery duration in ms',
2236
+ },
2237
+ requestHeaders: {
2238
+ type: 'json',
2239
+ optional: true,
2240
+ description: 'Request headers sent',
2241
+ },
2242
+ requestPayload: {
2243
+ type: 'json',
2244
+ optional: true,
2245
+ description: 'Request payload sent',
2246
+ },
2247
+ responseHeaders: {
2248
+ type: 'json',
2249
+ optional: true,
2250
+ description: 'Response headers received',
2251
+ },
2252
+ responseBody: {
2253
+ type: 'string',
2254
+ optional: true,
2255
+ description: 'Response body received',
2256
+ },
2257
+ deliveredAt: {
2258
+ type: 'datetime',
2259
+ description: 'Delivery timestamp',
2260
+ },
2261
+ },
2262
+
2263
+ relationships: {
2264
+ webhook: {
2265
+ type: 'Webhook',
2266
+ backref: 'deliveries',
2267
+ description: 'Parent webhook',
2268
+ },
2269
+ },
2270
+
2271
+ actions: ['redeliver', 'view'],
2272
+
2273
+ events: ['delivered', 'failed', 'redelivered'],
2274
+ }
2275
+
2276
+ // =============================================================================
2277
+ // DeployKey
2278
+ // =============================================================================
2279
+
2280
+ /**
2281
+ * Deploy key entity
2282
+ *
2283
+ * Represents a deploy key for repository access
2284
+ */
2285
+ export const DeployKey: Noun = {
2286
+ singular: 'deploy key',
2287
+ plural: 'deploy keys',
2288
+ description: 'A deploy key for repository access',
2289
+
2290
+ properties: {
2291
+ // Identity
2292
+ title: {
2293
+ type: 'string',
2294
+ description: 'Deploy key title',
2295
+ },
2296
+ key: {
2297
+ type: 'string',
2298
+ description: 'Public SSH key',
2299
+ },
2300
+ fingerprint: {
2301
+ type: 'string',
2302
+ optional: true,
2303
+ description: 'Key fingerprint',
2304
+ },
2305
+
2306
+ // Permissions
2307
+ readOnly: {
2308
+ type: 'boolean',
2309
+ description: 'Whether key has read-only access',
2310
+ },
2311
+
2312
+ // Status
2313
+ verified: {
2314
+ type: 'boolean',
2315
+ optional: true,
2316
+ description: 'Whether key has been verified',
2317
+ },
2318
+ lastUsedAt: {
2319
+ type: 'datetime',
2320
+ optional: true,
2321
+ description: 'Last time key was used',
2322
+ },
2323
+ },
2324
+
2325
+ relationships: {
2326
+ repository: {
2327
+ type: 'Repository',
2328
+ description: 'Repository this key grants access to',
2329
+ },
2330
+ addedBy: {
2331
+ type: 'Contact',
2332
+ description: 'Who added the key',
2333
+ },
2334
+ },
2335
+
2336
+ actions: ['create', 'delete', 'rotate'],
2337
+
2338
+ events: ['created', 'deleted', 'used'],
2339
+ }
2340
+
2341
+ // =============================================================================
2342
+ // Export all entities as a schema
2343
+ // =============================================================================
2344
+
2345
+ /**
2346
+ * All development tool entity types
2347
+ */
2348
+ export const DevelopmentEntities = {
2349
+ // Version Control
2350
+ Repository,
2351
+ Branch,
2352
+ Commit,
2353
+
2354
+ // Code Review
2355
+ PullRequest,
2356
+ CodeReview,
2357
+
2358
+ // Issues & Discussions
2359
+ CodeIssue,
2360
+ Discussion,
2361
+
2362
+ // Releases & Packages
2363
+ Release,
2364
+ Package,
2365
+ PackageVersion,
2366
+
2367
+ // CI/CD
2368
+ Workflow,
2369
+ WorkflowRun,
2370
+
2371
+ // Sharing
2372
+ Gist,
2373
+
2374
+ // Security & Access
2375
+ Secret,
2376
+ Webhook,
2377
+ WebhookDelivery,
2378
+ DeployKey,
2379
+ }
2380
+
2381
+ /**
2382
+ * Entity categories for organization
2383
+ */
2384
+ export const DevelopmentCategories = {
2385
+ versionControl: ['Repository', 'Branch', 'Commit'],
2386
+ codeReview: ['PullRequest', 'CodeReview'],
2387
+ issueTracking: ['CodeIssue', 'Discussion'],
2388
+ releases: ['Release', 'Package', 'PackageVersion'],
2389
+ cicd: ['Workflow', 'WorkflowRun'],
2390
+ sharing: ['Gist'],
2391
+ security: ['Secret', 'Webhook', 'WebhookDelivery', 'DeployKey'],
2392
+ } as const