@shipfox/api-definitions 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (401) hide show
  1. package/.turbo/turbo-build.log +2 -0
  2. package/.turbo/turbo-type$colon$emit.log +1 -0
  3. package/.turbo/turbo-type.log +1 -0
  4. package/CHANGELOG.md +215 -0
  5. package/LICENSE +21 -0
  6. package/dist/config.d.ts +10 -0
  7. package/dist/config.d.ts.map +1 -0
  8. package/dist/config.js +35 -0
  9. package/dist/config.js.map +1 -0
  10. package/dist/core/entities/index.d.ts +5 -0
  11. package/dist/core/entities/index.d.ts.map +1 -0
  12. package/dist/core/entities/index.js +6 -0
  13. package/dist/core/entities/index.js.map +1 -0
  14. package/dist/core/entities/integration-context.d.ts +11 -0
  15. package/dist/core/entities/integration-context.d.ts.map +1 -0
  16. package/dist/core/entities/integration-context.js +3 -0
  17. package/dist/core/entities/integration-context.js.map +1 -0
  18. package/dist/core/entities/sync-state.d.ts +19 -0
  19. package/dist/core/entities/sync-state.d.ts.map +1 -0
  20. package/dist/core/entities/sync-state.js +20 -0
  21. package/dist/core/entities/sync-state.js.map +1 -0
  22. package/dist/core/entities/workflow-definition.d.ts +35 -0
  23. package/dist/core/entities/workflow-definition.d.ts.map +1 -0
  24. package/dist/core/entities/workflow-definition.js +3 -0
  25. package/dist/core/entities/workflow-definition.js.map +1 -0
  26. package/dist/core/entities/workflow-model.d.ts +138 -0
  27. package/dist/core/entities/workflow-model.d.ts.map +1 -0
  28. package/dist/core/entities/workflow-model.js +3 -0
  29. package/dist/core/entities/workflow-model.js.map +1 -0
  30. package/dist/core/errors.d.ts +10 -0
  31. package/dist/core/errors.d.ts.map +1 -0
  32. package/dist/core/errors.js +14 -0
  33. package/dist/core/errors.js.map +1 -0
  34. package/dist/core/has-agent-step-integrations.d.ts +3 -0
  35. package/dist/core/has-agent-step-integrations.d.ts.map +1 -0
  36. package/dist/core/has-agent-step-integrations.js +5 -0
  37. package/dist/core/has-agent-step-integrations.js.map +1 -0
  38. package/dist/core/index.d.ts +9 -0
  39. package/dist/core/index.d.ts.map +1 -0
  40. package/dist/core/index.js +9 -0
  41. package/dist/core/index.js.map +1 -0
  42. package/dist/core/parse-definition.d.ts +9 -0
  43. package/dist/core/parse-definition.d.ts.map +1 -0
  44. package/dist/core/parse-definition.js +17 -0
  45. package/dist/core/parse-definition.js.map +1 -0
  46. package/dist/core/sync-definitions.d.ts +44 -0
  47. package/dist/core/sync-definitions.d.ts.map +1 -0
  48. package/dist/core/sync-definitions.js +140 -0
  49. package/dist/core/sync-definitions.js.map +1 -0
  50. package/dist/core/validate-definition.d.ts +20 -0
  51. package/dist/core/validate-definition.d.ts.map +1 -0
  52. package/dist/core/validate-definition.js +61 -0
  53. package/dist/core/validate-definition.js.map +1 -0
  54. package/dist/core/workflow-model/constants.d.ts +2 -0
  55. package/dist/core/workflow-model/constants.d.ts.map +1 -0
  56. package/dist/core/workflow-model/constants.js +3 -0
  57. package/dist/core/workflow-model/constants.js.map +1 -0
  58. package/dist/core/workflow-model/cron-trigger.d.ts +16 -0
  59. package/dist/core/workflow-model/cron-trigger.d.ts.map +1 -0
  60. package/dist/core/workflow-model/cron-trigger.js +85 -0
  61. package/dist/core/workflow-model/cron-trigger.js.map +1 -0
  62. package/dist/core/workflow-model/index.d.ts +4 -0
  63. package/dist/core/workflow-model/index.d.ts.map +1 -0
  64. package/dist/core/workflow-model/index.js +5 -0
  65. package/dist/core/workflow-model/index.js.map +1 -0
  66. package/dist/core/workflow-model/invalid-workflow-model-error.d.ts +15 -0
  67. package/dist/core/workflow-model/invalid-workflow-model-error.d.ts.map +1 -0
  68. package/dist/core/workflow-model/invalid-workflow-model-error.js +9 -0
  69. package/dist/core/workflow-model/invalid-workflow-model-error.js.map +1 -0
  70. package/dist/core/workflow-model/map-job-ids.d.ts +4 -0
  71. package/dist/core/workflow-model/map-job-ids.d.ts.map +1 -0
  72. package/dist/core/workflow-model/map-job-ids.js +33 -0
  73. package/dist/core/workflow-model/map-job-ids.js.map +1 -0
  74. package/dist/core/workflow-model/normalize-agent-integrations.d.ts +12 -0
  75. package/dist/core/workflow-model/normalize-agent-integrations.d.ts.map +1 -0
  76. package/dist/core/workflow-model/normalize-agent-integrations.js +157 -0
  77. package/dist/core/workflow-model/normalize-agent-integrations.js.map +1 -0
  78. package/dist/core/workflow-model/normalize-dependencies.d.ts +6 -0
  79. package/dist/core/workflow-model/normalize-dependencies.d.ts.map +1 -0
  80. package/dist/core/workflow-model/normalize-dependencies.js +119 -0
  81. package/dist/core/workflow-model/normalize-dependencies.js.map +1 -0
  82. package/dist/core/workflow-model/normalize-env.d.ts +17 -0
  83. package/dist/core/workflow-model/normalize-env.d.ts.map +1 -0
  84. package/dist/core/workflow-model/normalize-env.js +40 -0
  85. package/dist/core/workflow-model/normalize-env.js.map +1 -0
  86. package/dist/core/workflow-model/normalize-if-condition.d.ts +14 -0
  87. package/dist/core/workflow-model/normalize-if-condition.d.ts.map +1 -0
  88. package/dist/core/workflow-model/normalize-if-condition.js +75 -0
  89. package/dist/core/workflow-model/normalize-if-condition.js.map +1 -0
  90. package/dist/core/workflow-model/normalize-job-checkout.d.ts +5 -0
  91. package/dist/core/workflow-model/normalize-job-checkout.d.ts.map +1 -0
  92. package/dist/core/workflow-model/normalize-job-checkout.js +16 -0
  93. package/dist/core/workflow-model/normalize-job-checkout.js.map +1 -0
  94. package/dist/core/workflow-model/normalize-job-listening.d.ts +10 -0
  95. package/dist/core/workflow-model/normalize-job-listening.d.ts.map +1 -0
  96. package/dist/core/workflow-model/normalize-job-listening.js +125 -0
  97. package/dist/core/workflow-model/normalize-job-listening.js.map +1 -0
  98. package/dist/core/workflow-model/normalize-job-success.d.ts +11 -0
  99. package/dist/core/workflow-model/normalize-job-success.d.ts.map +1 -0
  100. package/dist/core/workflow-model/normalize-job-success.js +23 -0
  101. package/dist/core/workflow-model/normalize-job-success.js.map +1 -0
  102. package/dist/core/workflow-model/normalize-jobs.d.ts +12 -0
  103. package/dist/core/workflow-model/normalize-jobs.d.ts.map +1 -0
  104. package/dist/core/workflow-model/normalize-jobs.js +935 -0
  105. package/dist/core/workflow-model/normalize-jobs.js.map +1 -0
  106. package/dist/core/workflow-model/normalize-needs.d.ts +2 -0
  107. package/dist/core/workflow-model/normalize-needs.d.ts.map +1 -0
  108. package/dist/core/workflow-model/normalize-needs.js +16 -0
  109. package/dist/core/workflow-model/normalize-needs.js.map +1 -0
  110. package/dist/core/workflow-model/normalize-step-gate.d.ts +15 -0
  111. package/dist/core/workflow-model/normalize-step-gate.d.ts.map +1 -0
  112. package/dist/core/workflow-model/normalize-step-gate.js +89 -0
  113. package/dist/core/workflow-model/normalize-step-gate.js.map +1 -0
  114. package/dist/core/workflow-model/normalize-step-outputs.d.ts +10 -0
  115. package/dist/core/workflow-model/normalize-step-outputs.d.ts.map +1 -0
  116. package/dist/core/workflow-model/normalize-step-outputs.js +32 -0
  117. package/dist/core/workflow-model/normalize-step-outputs.js.map +1 -0
  118. package/dist/core/workflow-model/normalize-triggers.d.ts +11 -0
  119. package/dist/core/workflow-model/normalize-triggers.d.ts.map +1 -0
  120. package/dist/core/workflow-model/normalize-triggers.js +128 -0
  121. package/dist/core/workflow-model/normalize-triggers.js.map +1 -0
  122. package/dist/core/workflow-model/normalize-workflow-document.d.ts +11 -0
  123. package/dist/core/workflow-model/normalize-workflow-document.d.ts.map +1 -0
  124. package/dist/core/workflow-model/normalize-workflow-document.js +43 -0
  125. package/dist/core/workflow-model/normalize-workflow-document.js.map +1 -0
  126. package/dist/core/workflow-model/parse-duration-ms.d.ts +11 -0
  127. package/dist/core/workflow-model/parse-duration-ms.d.ts.map +1 -0
  128. package/dist/core/workflow-model/parse-duration-ms.js +47 -0
  129. package/dist/core/workflow-model/parse-duration-ms.js.map +1 -0
  130. package/dist/core/workflow-model/parse-interpolation-field.d.ts +14 -0
  131. package/dist/core/workflow-model/parse-interpolation-field.d.ts.map +1 -0
  132. package/dist/core/workflow-model/parse-interpolation-field.js +377 -0
  133. package/dist/core/workflow-model/parse-interpolation-field.js.map +1 -0
  134. package/dist/core/workflow-model/stable-id.d.ts +2 -0
  135. package/dist/core/workflow-model/stable-id.d.ts.map +1 -0
  136. package/dist/core/workflow-model/stable-id.js +8 -0
  137. package/dist/core/workflow-model/stable-id.js.map +1 -0
  138. package/dist/core/workflow-model/validate-job-references.d.ts +10 -0
  139. package/dist/core/workflow-model/validate-job-references.d.ts.map +1 -0
  140. package/dist/core/workflow-model/validate-job-references.js +42 -0
  141. package/dist/core/workflow-model/validate-job-references.js.map +1 -0
  142. package/dist/core/workflow-model/validate-predicate-expression.d.ts +14 -0
  143. package/dist/core/workflow-model/validate-predicate-expression.d.ts.map +1 -0
  144. package/dist/core/workflow-model/validate-predicate-expression.js +273 -0
  145. package/dist/core/workflow-model/validate-predicate-expression.js.map +1 -0
  146. package/dist/core/workflow-model/validation-issue.d.ts +8 -0
  147. package/dist/core/workflow-model/validation-issue.d.ts.map +1 -0
  148. package/dist/core/workflow-model/validation-issue.js +17 -0
  149. package/dist/core/workflow-model/validation-issue.js.map +1 -0
  150. package/dist/core/workflow-model/workflow-field-label.d.ts +3 -0
  151. package/dist/core/workflow-model/workflow-field-label.d.ts.map +1 -0
  152. package/dist/core/workflow-model/workflow-field-label.js +47 -0
  153. package/dist/core/workflow-model/workflow-field-label.js.map +1 -0
  154. package/dist/core/workflow-yaml/index.d.ts +3 -0
  155. package/dist/core/workflow-yaml/index.d.ts.map +1 -0
  156. package/dist/core/workflow-yaml/index.js +4 -0
  157. package/dist/core/workflow-yaml/index.js.map +1 -0
  158. package/dist/core/workflow-yaml/invalid-workflow-yaml-error.d.ts +16 -0
  159. package/dist/core/workflow-yaml/invalid-workflow-yaml-error.d.ts.map +1 -0
  160. package/dist/core/workflow-yaml/invalid-workflow-yaml-error.js +12 -0
  161. package/dist/core/workflow-yaml/invalid-workflow-yaml-error.js.map +1 -0
  162. package/dist/core/workflow-yaml/parse-workflow-yaml.d.ts +9 -0
  163. package/dist/core/workflow-yaml/parse-workflow-yaml.d.ts.map +1 -0
  164. package/dist/core/workflow-yaml/parse-workflow-yaml.js +52 -0
  165. package/dist/core/workflow-yaml/parse-workflow-yaml.js.map +1 -0
  166. package/dist/core/workflow-yaml/source-locations.d.ts +3 -0
  167. package/dist/core/workflow-yaml/source-locations.d.ts.map +1 -0
  168. package/dist/core/workflow-yaml/source-locations.js +48 -0
  169. package/dist/core/workflow-yaml/source-locations.js.map +1 -0
  170. package/dist/db/db.d.ts +1277 -0
  171. package/dist/db/db.d.ts.map +1 -0
  172. package/dist/db/db.js +22 -0
  173. package/dist/db/db.js.map +1 -0
  174. package/dist/db/definition-triggers.d.ts +4 -0
  175. package/dist/db/definition-triggers.d.ts.map +1 -0
  176. package/dist/db/definition-triggers.js +17 -0
  177. package/dist/db/definition-triggers.js.map +1 -0
  178. package/dist/db/definitions.d.ts +63 -0
  179. package/dist/db/definitions.d.ts.map +1 -0
  180. package/dist/db/definitions.js +208 -0
  181. package/dist/db/definitions.js.map +1 -0
  182. package/dist/db/index.d.ts +8 -0
  183. package/dist/db/index.d.ts.map +1 -0
  184. package/dist/db/index.js +10 -0
  185. package/dist/db/index.js.map +1 -0
  186. package/dist/db/schema/common.d.ts +2 -0
  187. package/dist/db/schema/common.d.ts.map +1 -0
  188. package/dist/db/schema/common.js +4 -0
  189. package/dist/db/schema/common.js.map +1 -0
  190. package/dist/db/schema/definitions.d.ts +237 -0
  191. package/dist/db/schema/definitions.d.ts.map +1 -0
  192. package/dist/db/schema/definitions.js +63 -0
  193. package/dist/db/schema/definitions.js.map +1 -0
  194. package/dist/db/schema/outbox.d.ts +195 -0
  195. package/dist/db/schema/outbox.d.ts.map +1 -0
  196. package/dist/db/schema/outbox.js +5 -0
  197. package/dist/db/schema/outbox.js.map +1 -0
  198. package/dist/db/schema/sync-states.d.ts +218 -0
  199. package/dist/db/schema/sync-states.d.ts.map +1 -0
  200. package/dist/db/schema/sync-states.js +68 -0
  201. package/dist/db/schema/sync-states.js.map +1 -0
  202. package/dist/db/sync-states.d.ts +21 -0
  203. package/dist/db/sync-states.d.ts.map +1 -0
  204. package/dist/db/sync-states.js +47 -0
  205. package/dist/db/sync-states.js.map +1 -0
  206. package/dist/index.d.ts +14 -0
  207. package/dist/index.d.ts.map +1 -0
  208. package/dist/index.js +63 -0
  209. package/dist/index.js.map +1 -0
  210. package/dist/presentation/dto/definition.d.ts +6 -0
  211. package/dist/presentation/dto/definition.d.ts.map +1 -0
  212. package/dist/presentation/dto/definition.js +35 -0
  213. package/dist/presentation/dto/definition.js.map +1 -0
  214. package/dist/presentation/dto/index.d.ts +2 -0
  215. package/dist/presentation/dto/index.d.ts.map +1 -0
  216. package/dist/presentation/dto/index.js +3 -0
  217. package/dist/presentation/dto/index.js.map +1 -0
  218. package/dist/presentation/index.d.ts +2 -0
  219. package/dist/presentation/index.d.ts.map +1 -0
  220. package/dist/presentation/index.js +3 -0
  221. package/dist/presentation/index.js.map +1 -0
  222. package/dist/presentation/routes/create-definition.d.ts +9 -0
  223. package/dist/presentation/routes/create-definition.d.ts.map +1 -0
  224. package/dist/presentation/routes/create-definition.js +76 -0
  225. package/dist/presentation/routes/create-definition.js.map +1 -0
  226. package/dist/presentation/routes/get-definition.d.ts +2 -0
  227. package/dist/presentation/routes/get-definition.d.ts.map +1 -0
  228. package/dist/presentation/routes/get-definition.js +43 -0
  229. package/dist/presentation/routes/get-definition.js.map +1 -0
  230. package/dist/presentation/routes/index.d.ts +7 -0
  231. package/dist/presentation/routes/index.d.ts.map +1 -0
  232. package/dist/presentation/routes/index.js +22 -0
  233. package/dist/presentation/routes/index.js.map +1 -0
  234. package/dist/presentation/routes/list-definitions.d.ts +2 -0
  235. package/dist/presentation/routes/list-definitions.d.ts.map +1 -0
  236. package/dist/presentation/routes/list-definitions.js +56 -0
  237. package/dist/presentation/routes/list-definitions.js.map +1 -0
  238. package/dist/presentation/routes/validate-definition.d.ts +2 -0
  239. package/dist/presentation/routes/validate-definition.d.ts.map +1 -0
  240. package/dist/presentation/routes/validate-definition.js +43 -0
  241. package/dist/presentation/routes/validate-definition.js.map +1 -0
  242. package/dist/presentation/subscribers/index.d.ts +3 -0
  243. package/dist/presentation/subscribers/index.d.ts.map +1 -0
  244. package/dist/presentation/subscribers/index.js +4 -0
  245. package/dist/presentation/subscribers/index.js.map +1 -0
  246. package/dist/presentation/subscribers/on-project-source-bound.d.ts +3 -0
  247. package/dist/presentation/subscribers/on-project-source-bound.d.ts.map +1 -0
  248. package/dist/presentation/subscribers/on-project-source-bound.js +11 -0
  249. package/dist/presentation/subscribers/on-project-source-bound.js.map +1 -0
  250. package/dist/presentation/subscribers/on-project-source-commit-observed.d.ts +3 -0
  251. package/dist/presentation/subscribers/on-project-source-commit-observed.d.ts.map +1 -0
  252. package/dist/presentation/subscribers/on-project-source-commit-observed.js +13 -0
  253. package/dist/presentation/subscribers/on-project-source-commit-observed.js.map +1 -0
  254. package/dist/presentation/subscribers/start-definition-sync.d.ts +10 -0
  255. package/dist/presentation/subscribers/start-definition-sync.d.ts.map +1 -0
  256. package/dist/presentation/subscribers/start-definition-sync.js +26 -0
  257. package/dist/presentation/subscribers/start-definition-sync.js.map +1 -0
  258. package/dist/temporal/activities/index.d.ts +3 -0
  259. package/dist/temporal/activities/index.d.ts.map +1 -0
  260. package/dist/temporal/activities/index.js +3 -0
  261. package/dist/temporal/activities/index.js.map +1 -0
  262. package/dist/temporal/activities/sync-activities.d.ts +47 -0
  263. package/dist/temporal/activities/sync-activities.d.ts.map +1 -0
  264. package/dist/temporal/activities/sync-activities.js +128 -0
  265. package/dist/temporal/activities/sync-activities.js.map +1 -0
  266. package/dist/temporal/constants.d.ts +3 -0
  267. package/dist/temporal/constants.d.ts.map +1 -0
  268. package/dist/temporal/constants.js +4 -0
  269. package/dist/temporal/constants.js.map +1 -0
  270. package/dist/temporal/index.d.ts +3 -0
  271. package/dist/temporal/index.d.ts.map +1 -0
  272. package/dist/temporal/index.js +4 -0
  273. package/dist/temporal/index.js.map +1 -0
  274. package/dist/temporal/workflows/definition-sync.d.ts +20 -0
  275. package/dist/temporal/workflows/definition-sync.d.ts.map +1 -0
  276. package/dist/temporal/workflows/definition-sync.js +95 -0
  277. package/dist/temporal/workflows/definition-sync.js.map +1 -0
  278. package/dist/temporal/workflows/index.d.ts +2 -0
  279. package/dist/temporal/workflows/index.d.ts.map +1 -0
  280. package/dist/temporal/workflows/index.js +3 -0
  281. package/dist/temporal/workflows/index.js.map +1 -0
  282. package/dist/tsconfig.test.tsbuildinfo +1 -0
  283. package/drizzle/0000_initial.sql +64 -0
  284. package/drizzle/0001_definition_list_pagination.sql +1 -0
  285. package/drizzle/meta/0000_snapshot.json +527 -0
  286. package/drizzle/meta/_journal.json +20 -0
  287. package/drizzle.config.ts +11 -0
  288. package/package.json +89 -0
  289. package/src/config.test.ts +23 -0
  290. package/src/config.ts +50 -0
  291. package/src/core/entities/index.ts +4 -0
  292. package/src/core/entities/integration-context.ts +21 -0
  293. package/src/core/entities/sync-state.ts +40 -0
  294. package/src/core/entities/workflow-definition.ts +38 -0
  295. package/src/core/entities/workflow-model.ts +162 -0
  296. package/src/core/errors.ts +21 -0
  297. package/src/core/has-agent-step-integrations.ts +7 -0
  298. package/src/core/index.ts +23 -0
  299. package/src/core/parse-definition.test.ts +200 -0
  300. package/src/core/parse-definition.ts +28 -0
  301. package/src/core/sync-definitions.test.ts +390 -0
  302. package/src/core/sync-definitions.ts +216 -0
  303. package/src/core/validate-definition.test.ts +152 -0
  304. package/src/core/validate-definition.ts +72 -0
  305. package/src/core/workflow-model/README.md +129 -0
  306. package/src/core/workflow-model/constants.ts +1 -0
  307. package/src/core/workflow-model/cron-trigger.test.ts +29 -0
  308. package/src/core/workflow-model/cron-trigger.ts +83 -0
  309. package/src/core/workflow-model/index.ts +9 -0
  310. package/src/core/workflow-model/invalid-workflow-model-error.ts +71 -0
  311. package/src/core/workflow-model/map-job-ids.ts +33 -0
  312. package/src/core/workflow-model/normalize-agent-integrations.ts +208 -0
  313. package/src/core/workflow-model/normalize-dependencies.ts +139 -0
  314. package/src/core/workflow-model/normalize-env.ts +48 -0
  315. package/src/core/workflow-model/normalize-if-condition.ts +126 -0
  316. package/src/core/workflow-model/normalize-job-checkout.ts +19 -0
  317. package/src/core/workflow-model/normalize-job-listening.ts +121 -0
  318. package/src/core/workflow-model/normalize-job-success.ts +28 -0
  319. package/src/core/workflow-model/normalize-jobs.ts +1010 -0
  320. package/src/core/workflow-model/normalize-needs.ts +12 -0
  321. package/src/core/workflow-model/normalize-step-gate.ts +90 -0
  322. package/src/core/workflow-model/normalize-step-outputs.ts +36 -0
  323. package/src/core/workflow-model/normalize-triggers.ts +130 -0
  324. package/src/core/workflow-model/normalize-workflow-document.test.ts +4463 -0
  325. package/src/core/workflow-model/normalize-workflow-document.ts +63 -0
  326. package/src/core/workflow-model/parse-duration-ms.ts +58 -0
  327. package/src/core/workflow-model/parse-interpolation-field.ts +566 -0
  328. package/src/core/workflow-model/stable-id.ts +12 -0
  329. package/src/core/workflow-model/validate-job-references.ts +54 -0
  330. package/src/core/workflow-model/validate-predicate-expression.test.ts +161 -0
  331. package/src/core/workflow-model/validate-predicate-expression.ts +406 -0
  332. package/src/core/workflow-model/validation-issue.ts +27 -0
  333. package/src/core/workflow-model/workflow-field-label.ts +50 -0
  334. package/src/core/workflow-yaml/README.md +77 -0
  335. package/src/core/workflow-yaml/index.ts +11 -0
  336. package/src/core/workflow-yaml/invalid-workflow-yaml-error.ts +23 -0
  337. package/src/core/workflow-yaml/parse-workflow-yaml.test.ts +71 -0
  338. package/src/core/workflow-yaml/parse-workflow-yaml.ts +74 -0
  339. package/src/core/workflow-yaml/source-locations.ts +62 -0
  340. package/src/db/db.ts +18 -0
  341. package/src/db/definition-triggers.test.ts +95 -0
  342. package/src/db/definition-triggers.ts +17 -0
  343. package/src/db/definitions.test.ts +1309 -0
  344. package/src/db/definitions.ts +357 -0
  345. package/src/db/index.ts +31 -0
  346. package/src/db/schema/common.ts +3 -0
  347. package/src/db/schema/definitions.test.ts +36 -0
  348. package/src/db/schema/definitions.ts +76 -0
  349. package/src/db/schema/outbox.ts +4 -0
  350. package/src/db/schema/sync-states.ts +79 -0
  351. package/src/db/sync-states.test.ts +90 -0
  352. package/src/db/sync-states.ts +86 -0
  353. package/src/index.ts +104 -0
  354. package/src/presentation/dto/definition.test.ts +59 -0
  355. package/src/presentation/dto/definition.ts +41 -0
  356. package/src/presentation/dto/index.ts +1 -0
  357. package/src/presentation/index.ts +1 -0
  358. package/src/presentation/routes/create-definition.test.ts +356 -0
  359. package/src/presentation/routes/create-definition.ts +101 -0
  360. package/src/presentation/routes/get-definition.test.ts +79 -0
  361. package/src/presentation/routes/get-definition.ts +37 -0
  362. package/src/presentation/routes/index.test.ts +41 -0
  363. package/src/presentation/routes/index.ts +28 -0
  364. package/src/presentation/routes/list-definitions.test.ts +195 -0
  365. package/src/presentation/routes/list-definitions.ts +49 -0
  366. package/src/presentation/routes/validate-definition.test.ts +63 -0
  367. package/src/presentation/routes/validate-definition.ts +46 -0
  368. package/src/presentation/subscribers/index.ts +2 -0
  369. package/src/presentation/subscribers/on-project-source-bound.test.ts +65 -0
  370. package/src/presentation/subscribers/on-project-source-bound.ts +11 -0
  371. package/src/presentation/subscribers/on-project-source-commit-observed.test.ts +56 -0
  372. package/src/presentation/subscribers/on-project-source-commit-observed.ts +15 -0
  373. package/src/presentation/subscribers/start-definition-sync.ts +38 -0
  374. package/src/temporal/activities/index.ts +10 -0
  375. package/src/temporal/activities/sync-activities.test.ts +337 -0
  376. package/src/temporal/activities/sync-activities.ts +206 -0
  377. package/src/temporal/constants.ts +2 -0
  378. package/src/temporal/index.ts +2 -0
  379. package/src/temporal/workflows/definition-sync.test.ts +59 -0
  380. package/src/temporal/workflows/definition-sync.ts +116 -0
  381. package/src/temporal/workflows/index.ts +1 -0
  382. package/test/env.ts +7 -0
  383. package/test/factories/definition.ts +66 -0
  384. package/test/fixtures/invalid-cycle.yml +13 -0
  385. package/test/fixtures/invalid-missing-name.yml +4 -0
  386. package/test/fixtures/invalid-yaml-syntax.yml +6 -0
  387. package/test/fixtures/valid-dag.yml +25 -0
  388. package/test/fixtures/valid-listening-job.yml +21 -0
  389. package/test/fixtures/valid-simple.yml +18 -0
  390. package/test/fixtures/workflow-yaml/invalid/invalid-yaml-syntax.yaml +6 -0
  391. package/test/fixtures/workflow-yaml/invalid/missing-step-run.yaml +5 -0
  392. package/test/fixtures/workflow-yaml/valid/simple-build.document.json +26 -0
  393. package/test/fixtures/workflow-yaml/valid/simple-build.yaml +14 -0
  394. package/test/globalSetup.ts +25 -0
  395. package/test/index.ts +1 -0
  396. package/test/setup.ts +17 -0
  397. package/tsconfig.build.json +9 -0
  398. package/tsconfig.build.tsbuildinfo +1 -0
  399. package/tsconfig.json +3 -0
  400. package/tsconfig.test.json +8 -0
  401. package/vitest.config.ts +11 -0
@@ -0,0 +1,128 @@
1
+ import { Context } from '@temporalio/activity';
2
+ import { ApplicationFailure } from '@temporalio/common';
3
+ import { classifySyncFailure, discoverWorkflowFiles, fetchAndParseWorkflows, resolveSyncSource, UNRESOLVED_SYNC_REF } from '#core/index.js';
4
+ import { applyVcsDefinitionsBatch, markDefinitionSyncState } from '#db/index.js';
5
+ export function createDefinitionSyncActivities(sourceControl, integrationValidation) {
6
+ return {
7
+ prepareDefinitionSync: createPrepareDefinitionSyncActivity(sourceControl),
8
+ discoverDefinitionWorkflows: createDiscoverDefinitionWorkflowsActivity(sourceControl),
9
+ fetchAndApplyDefinitionWorkflows: createFetchAndApplyActivity(sourceControl, integrationValidation),
10
+ markDefinitionSyncSucceeded: createMarkSyncSucceededActivity(),
11
+ markDefinitionSyncFailed: createMarkSyncFailedActivity()
12
+ };
13
+ }
14
+ function createPrepareDefinitionSyncActivity(sourceControl) {
15
+ return async function prepareDefinitionSync(input) {
16
+ return await runWithPermanentTranslation(async ()=>{
17
+ const sourceRef = input.sourceRef ?? (await resolveSyncSource({
18
+ ...input,
19
+ sourceControl
20
+ })).ref;
21
+ await markDefinitionSyncState({
22
+ projectId: input.projectId,
23
+ sourceConnectionId: input.sourceConnectionId,
24
+ sourceExternalRepositoryId: input.sourceExternalRepositoryId,
25
+ ref: sourceRef,
26
+ status: 'syncing',
27
+ lastErrorCode: null,
28
+ lastErrorMessage: null,
29
+ startedAt: new Date(),
30
+ finishedAt: null
31
+ });
32
+ return {
33
+ sourceRef,
34
+ sourceCommitSha: input.sourceCommitSha
35
+ };
36
+ });
37
+ };
38
+ }
39
+ function createDiscoverDefinitionWorkflowsActivity(sourceControl) {
40
+ return async function discoverDefinitionWorkflows(input) {
41
+ return await runWithPermanentTranslation(async ()=>{
42
+ return await discoverWorkflowFiles({
43
+ ...input,
44
+ ref: input.sourceCommitSha ?? input.sourceRef,
45
+ sourceControl
46
+ });
47
+ });
48
+ };
49
+ }
50
+ function createFetchAndApplyActivity(sourceControl, integrationValidation) {
51
+ return async function fetchAndApplyDefinitionWorkflows(input) {
52
+ return await runWithPermanentTranslation(async ()=>{
53
+ const definitions = await fetchAndParseWorkflows({
54
+ ...input,
55
+ ref: input.sourceCommitSha ?? input.sourceRef,
56
+ sourceControl,
57
+ onProgress: (path)=>Context.current().heartbeat({
58
+ path
59
+ }),
60
+ loadIntegrationValidationContext: integrationValidation === undefined ? undefined : async ()=>{
61
+ const sourceConnection = await integrationValidation.getIntegrationConnectionById(input.sourceConnectionId);
62
+ return {
63
+ agentToolSelectionCatalogs: integrationValidation.agentToolSelectionCatalogs,
64
+ workspaceConnectionSnapshot: await integrationValidation.loadWorkspaceConnectionSnapshot(input.workspaceId),
65
+ defaultConnectionSlug: sourceConnection?.slug
66
+ };
67
+ }
68
+ });
69
+ return await applyVcsDefinitionsBatch({
70
+ projectId: input.projectId,
71
+ workspaceId: input.workspaceId,
72
+ ref: input.sourceRef,
73
+ upserts: definitions.map((entry)=>({
74
+ configPath: entry.path,
75
+ name: entry.name,
76
+ document: entry.definition.document,
77
+ model: entry.definition.model,
78
+ sourceSnapshot: entry.definition.sourceSnapshot,
79
+ contentHash: entry.contentHash
80
+ }))
81
+ });
82
+ });
83
+ };
84
+ }
85
+ function createMarkSyncSucceededActivity() {
86
+ return async function markDefinitionSyncSucceeded(input) {
87
+ await markDefinitionSyncState({
88
+ projectId: input.projectId,
89
+ sourceConnectionId: input.sourceConnectionId,
90
+ sourceExternalRepositoryId: input.sourceExternalRepositoryId,
91
+ ref: input.sourceRef,
92
+ status: 'succeeded',
93
+ lastErrorCode: null,
94
+ lastErrorMessage: null,
95
+ finishedAt: new Date()
96
+ });
97
+ };
98
+ }
99
+ function createMarkSyncFailedActivity() {
100
+ return async function markDefinitionSyncFailed(input) {
101
+ await markDefinitionSyncState({
102
+ projectId: input.projectId,
103
+ sourceConnectionId: input.sourceConnectionId,
104
+ sourceExternalRepositoryId: input.sourceExternalRepositoryId,
105
+ ref: input.sourceRef ?? UNRESOLVED_SYNC_REF,
106
+ status: 'failed',
107
+ lastErrorCode: input.code,
108
+ lastErrorMessage: input.message,
109
+ finishedAt: new Date()
110
+ });
111
+ };
112
+ }
113
+ async function runWithPermanentTranslation(operation) {
114
+ try {
115
+ return await operation();
116
+ } catch (error) {
117
+ if (error instanceof ApplicationFailure) {
118
+ throw error;
119
+ }
120
+ const failure = classifySyncFailure(error);
121
+ if (!failure.retryable) {
122
+ throw ApplicationFailure.nonRetryable(failure.message, failure.code);
123
+ }
124
+ throw ApplicationFailure.retryable(failure.message, failure.code);
125
+ }
126
+ }
127
+
128
+ //# sourceMappingURL=sync-activities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/temporal/activities/sync-activities.ts"],"sourcesContent":["import type {\n AgentToolSelectionCatalogs,\n IntegrationSourceControlService,\n LoadWorkspaceConnectionSnapshot,\n} from '@shipfox/api-integration-core';\nimport {Context} from '@temporalio/activity';\nimport {ApplicationFailure} from '@temporalio/common';\nimport type {DefinitionSyncErrorCode} from '#core/entities/sync-state.js';\nimport {\n classifySyncFailure,\n discoverWorkflowFiles,\n fetchAndParseWorkflows,\n resolveSyncSource,\n UNRESOLVED_SYNC_REF,\n} from '#core/index.js';\nimport {applyVcsDefinitionsBatch, markDefinitionSyncState} from '#db/index.js';\n\nexport interface SyncWorkflowInput {\n projectId: string;\n workspaceId: string;\n sourceConnectionId: string;\n sourceExternalRepositoryId: string;\n sourceRef?: string | undefined;\n sourceCommitSha?: string | undefined;\n}\n\nexport interface SyncRefScopedInput extends SyncWorkflowInput {\n sourceRef: string;\n}\n\nexport interface FetchAndApplyActivityInput extends SyncRefScopedInput {\n paths: string[];\n}\n\nexport interface MarkSyncFailedActivityInput extends Omit<SyncWorkflowInput, 'sourceRef'> {\n sourceRef: string | null;\n code: DefinitionSyncErrorCode;\n message: string;\n}\n\nexport interface PrepareSyncResult {\n sourceRef: string;\n sourceCommitSha?: string | undefined;\n}\n\nexport interface DiscoverWorkflowsActivityResult {\n paths: string[];\n}\n\nexport interface FetchAndApplyActivityResult {\n appliedCount: number;\n deletedCount: number;\n}\n\nexport interface DefinitionSyncIntegrationValidationOptions {\n agentToolSelectionCatalogs: AgentToolSelectionCatalogs;\n loadWorkspaceConnectionSnapshot: LoadWorkspaceConnectionSnapshot;\n getIntegrationConnectionById: (id: string) => Promise<{slug: string} | undefined>;\n}\n\nexport function createDefinitionSyncActivities(\n sourceControl: IntegrationSourceControlService,\n integrationValidation?: DefinitionSyncIntegrationValidationOptions | undefined,\n) {\n return {\n prepareDefinitionSync: createPrepareDefinitionSyncActivity(sourceControl),\n discoverDefinitionWorkflows: createDiscoverDefinitionWorkflowsActivity(sourceControl),\n fetchAndApplyDefinitionWorkflows: createFetchAndApplyActivity(\n sourceControl,\n integrationValidation,\n ),\n markDefinitionSyncSucceeded: createMarkSyncSucceededActivity(),\n markDefinitionSyncFailed: createMarkSyncFailedActivity(),\n };\n}\n\nfunction createPrepareDefinitionSyncActivity(sourceControl: IntegrationSourceControlService) {\n return async function prepareDefinitionSync(\n input: SyncWorkflowInput,\n ): Promise<PrepareSyncResult> {\n return await runWithPermanentTranslation(async () => {\n const sourceRef = input.sourceRef ?? (await resolveSyncSource({...input, sourceControl})).ref;\n\n await markDefinitionSyncState({\n projectId: input.projectId,\n sourceConnectionId: input.sourceConnectionId,\n sourceExternalRepositoryId: input.sourceExternalRepositoryId,\n ref: sourceRef,\n status: 'syncing',\n lastErrorCode: null,\n lastErrorMessage: null,\n startedAt: new Date(),\n finishedAt: null,\n });\n\n return {sourceRef, sourceCommitSha: input.sourceCommitSha};\n });\n };\n}\n\nfunction createDiscoverDefinitionWorkflowsActivity(sourceControl: IntegrationSourceControlService) {\n return async function discoverDefinitionWorkflows(\n input: SyncRefScopedInput,\n ): Promise<DiscoverWorkflowsActivityResult> {\n return await runWithPermanentTranslation(async () => {\n return await discoverWorkflowFiles({\n ...input,\n ref: input.sourceCommitSha ?? input.sourceRef,\n sourceControl,\n });\n });\n };\n}\n\nfunction createFetchAndApplyActivity(\n sourceControl: IntegrationSourceControlService,\n integrationValidation?: DefinitionSyncIntegrationValidationOptions | undefined,\n) {\n return async function fetchAndApplyDefinitionWorkflows(\n input: FetchAndApplyActivityInput,\n ): Promise<FetchAndApplyActivityResult> {\n return await runWithPermanentTranslation(async () => {\n const definitions = await fetchAndParseWorkflows({\n ...input,\n ref: input.sourceCommitSha ?? input.sourceRef,\n sourceControl,\n onProgress: (path) => Context.current().heartbeat({path}),\n loadIntegrationValidationContext:\n integrationValidation === undefined\n ? undefined\n : async () => {\n const sourceConnection = await integrationValidation.getIntegrationConnectionById(\n input.sourceConnectionId,\n );\n return {\n agentToolSelectionCatalogs: integrationValidation.agentToolSelectionCatalogs,\n workspaceConnectionSnapshot:\n await integrationValidation.loadWorkspaceConnectionSnapshot(input.workspaceId),\n defaultConnectionSlug: sourceConnection?.slug,\n };\n },\n });\n\n return await applyVcsDefinitionsBatch({\n projectId: input.projectId,\n workspaceId: input.workspaceId,\n ref: input.sourceRef,\n upserts: definitions.map((entry) => ({\n configPath: entry.path,\n name: entry.name,\n document: entry.definition.document,\n model: entry.definition.model,\n sourceSnapshot: entry.definition.sourceSnapshot,\n contentHash: entry.contentHash,\n })),\n });\n });\n };\n}\n\nfunction createMarkSyncSucceededActivity() {\n return async function markDefinitionSyncSucceeded(input: SyncRefScopedInput): Promise<void> {\n await markDefinitionSyncState({\n projectId: input.projectId,\n sourceConnectionId: input.sourceConnectionId,\n sourceExternalRepositoryId: input.sourceExternalRepositoryId,\n ref: input.sourceRef,\n status: 'succeeded',\n lastErrorCode: null,\n lastErrorMessage: null,\n finishedAt: new Date(),\n });\n };\n}\n\nfunction createMarkSyncFailedActivity() {\n return async function markDefinitionSyncFailed(\n input: MarkSyncFailedActivityInput,\n ): Promise<void> {\n await markDefinitionSyncState({\n projectId: input.projectId,\n sourceConnectionId: input.sourceConnectionId,\n sourceExternalRepositoryId: input.sourceExternalRepositoryId,\n ref: input.sourceRef ?? UNRESOLVED_SYNC_REF,\n status: 'failed',\n lastErrorCode: input.code,\n lastErrorMessage: input.message,\n finishedAt: new Date(),\n });\n };\n}\n\nasync function runWithPermanentTranslation<T>(operation: () => Promise<T>): Promise<T> {\n try {\n return await operation();\n } catch (error) {\n if (error instanceof ApplicationFailure) {\n throw error;\n }\n const failure = classifySyncFailure(error);\n if (!failure.retryable) {\n throw ApplicationFailure.nonRetryable(failure.message, failure.code);\n }\n throw ApplicationFailure.retryable(failure.message, failure.code);\n }\n}\n"],"names":["Context","ApplicationFailure","classifySyncFailure","discoverWorkflowFiles","fetchAndParseWorkflows","resolveSyncSource","UNRESOLVED_SYNC_REF","applyVcsDefinitionsBatch","markDefinitionSyncState","createDefinitionSyncActivities","sourceControl","integrationValidation","prepareDefinitionSync","createPrepareDefinitionSyncActivity","discoverDefinitionWorkflows","createDiscoverDefinitionWorkflowsActivity","fetchAndApplyDefinitionWorkflows","createFetchAndApplyActivity","markDefinitionSyncSucceeded","createMarkSyncSucceededActivity","markDefinitionSyncFailed","createMarkSyncFailedActivity","input","runWithPermanentTranslation","sourceRef","ref","projectId","sourceConnectionId","sourceExternalRepositoryId","status","lastErrorCode","lastErrorMessage","startedAt","Date","finishedAt","sourceCommitSha","definitions","onProgress","path","current","heartbeat","loadIntegrationValidationContext","undefined","sourceConnection","getIntegrationConnectionById","agentToolSelectionCatalogs","workspaceConnectionSnapshot","loadWorkspaceConnectionSnapshot","workspaceId","defaultConnectionSlug","slug","upserts","map","entry","configPath","name","document","definition","model","sourceSnapshot","contentHash","code","message","operation","error","failure","retryable","nonRetryable"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare const DEFINITIONS_TASK_QUEUE = "definitions-sync";
2
+ export declare const DEFINITION_SYNC_WORKFLOW = "definitionSyncWorkflow";
3
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/temporal/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,qBAAqB,CAAC;AACzD,eAAO,MAAM,wBAAwB,2BAA2B,CAAC"}
@@ -0,0 +1,4 @@
1
+ export const DEFINITIONS_TASK_QUEUE = 'definitions-sync';
2
+ export const DEFINITION_SYNC_WORKFLOW = 'definitionSyncWorkflow';
3
+
4
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/temporal/constants.ts"],"sourcesContent":["export const DEFINITIONS_TASK_QUEUE = 'definitions-sync';\nexport const DEFINITION_SYNC_WORKFLOW = 'definitionSyncWorkflow';\n"],"names":["DEFINITIONS_TASK_QUEUE","DEFINITION_SYNC_WORKFLOW"],"mappings":"AAAA,OAAO,MAAMA,yBAAyB,mBAAmB;AACzD,OAAO,MAAMC,2BAA2B,yBAAyB"}
@@ -0,0 +1,3 @@
1
+ export { createDefinitionSyncActivities } from './activities/index.js';
2
+ export { DEFINITION_SYNC_WORKFLOW, DEFINITIONS_TASK_QUEUE } from './constants.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/temporal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,8BAA8B,EAAC,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAC,wBAAwB,EAAE,sBAAsB,EAAC,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { createDefinitionSyncActivities } from './activities/index.js';
2
+ export { DEFINITION_SYNC_WORKFLOW, DEFINITIONS_TASK_QUEUE } from './constants.js';
3
+
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/temporal/index.ts"],"sourcesContent":["export {createDefinitionSyncActivities} from './activities/index.js';\nexport {DEFINITION_SYNC_WORKFLOW, DEFINITIONS_TASK_QUEUE} from './constants.js';\n"],"names":["createDefinitionSyncActivities","DEFINITION_SYNC_WORKFLOW","DEFINITIONS_TASK_QUEUE"],"mappings":"AAAA,SAAQA,8BAA8B,QAAO,wBAAwB;AACrE,SAAQC,wBAAwB,EAAEC,sBAAsB,QAAO,iBAAiB"}
@@ -0,0 +1,20 @@
1
+ import { type DefinitionSyncErrorCode } from '#core/entities/sync-state.js';
2
+ export interface DefinitionSyncWorkflowInput {
3
+ projectId: string;
4
+ workspaceId: string;
5
+ sourceConnectionId: string;
6
+ sourceExternalRepositoryId: string;
7
+ sourceRef?: string | undefined;
8
+ sourceCommitSha?: string | undefined;
9
+ }
10
+ export interface DefinitionSyncWorkflowResult {
11
+ sourceRef: string;
12
+ appliedCount: number;
13
+ deletedCount: number;
14
+ }
15
+ export declare function definitionSyncWorkflow(input: DefinitionSyncWorkflowInput): Promise<DefinitionSyncWorkflowResult>;
16
+ export declare function classifyWorkflowError(error: unknown): {
17
+ code: DefinitionSyncErrorCode;
18
+ message: string;
19
+ };
20
+ //# sourceMappingURL=definition-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definition-sync.d.ts","sourceRoot":"","sources":["../../../src/temporal/workflows/definition-sync.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,8BAA8B,CAAC;AAGtC,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,0BAA0B,EAAE,MAAM,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,WAAW,4BAA4B;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AA8BD,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,2BAA2B,GACjC,OAAO,CAAC,4BAA4B,CAAC,CA6CvC;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG;IACrD,IAAI,EAAE,uBAAuB,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB,CASA"}
@@ -0,0 +1,95 @@
1
+ import { ActivityFailure, ApplicationFailure, proxyActivities } from '@temporalio/workflow';
2
+ import { isDefinitionSyncErrorCode } from '#core/entities/sync-state.js';
3
+ const PROVIDER_RETRY = {
4
+ initialInterval: '5 seconds',
5
+ backoffCoefficient: 2,
6
+ maximumInterval: '1 minute',
7
+ maximumAttempts: 5
8
+ };
9
+ const DB_RETRY = {
10
+ initialInterval: '1 second',
11
+ backoffCoefficient: 2,
12
+ maximumInterval: '15 seconds',
13
+ maximumAttempts: 5
14
+ };
15
+ const { prepareDefinitionSync, discoverDefinitionWorkflows, fetchAndApplyDefinitionWorkflows } = proxyActivities({
16
+ startToCloseTimeout: '5 minutes',
17
+ heartbeatTimeout: '30 seconds',
18
+ retry: PROVIDER_RETRY
19
+ });
20
+ const { markDefinitionSyncSucceeded, markDefinitionSyncFailed } = proxyActivities({
21
+ startToCloseTimeout: '30 seconds',
22
+ retry: DB_RETRY
23
+ });
24
+ export async function definitionSyncWorkflow(input) {
25
+ let sourceRef = null;
26
+ try {
27
+ const prepared = await prepareDefinitionSync(input);
28
+ sourceRef = prepared.sourceRef;
29
+ const source = {
30
+ ...input,
31
+ sourceRef: prepared.sourceRef,
32
+ sourceCommitSha: prepared.sourceCommitSha
33
+ };
34
+ const { paths } = await discoverDefinitionWorkflows(source);
35
+ const applied = await fetchAndApplyDefinitionWorkflows({
36
+ ...source,
37
+ paths
38
+ });
39
+ await markDefinitionSyncSucceeded(source);
40
+ return {
41
+ sourceRef,
42
+ appliedCount: applied.appliedCount,
43
+ deletedCount: applied.deletedCount
44
+ };
45
+ } catch (error) {
46
+ const { code, message } = classifyWorkflowError(error);
47
+ try {
48
+ await markDefinitionSyncFailed({
49
+ ...input,
50
+ sourceRef,
51
+ code,
52
+ message
53
+ });
54
+ } catch (markFailedError) {
55
+ const failureOptions = {
56
+ message: `Definition sync failed with ${code}: ${message}; additionally failed to persist failure state: ${formatWorkflowError(markFailedError)}`,
57
+ type: 'definition-sync-failure-persistence-failed',
58
+ nonRetryable: true,
59
+ details: [
60
+ {
61
+ syncFailureCode: code,
62
+ syncFailureMessage: message,
63
+ failurePersistenceMessage: formatWorkflowError(markFailedError)
64
+ }
65
+ ]
66
+ };
67
+ throw ApplicationFailure.create(error instanceof Error ? {
68
+ ...failureOptions,
69
+ cause: error
70
+ } : failureOptions);
71
+ }
72
+ throw error;
73
+ }
74
+ }
75
+ export function classifyWorkflowError(error) {
76
+ if (error instanceof ActivityFailure && error.cause instanceof ApplicationFailure) {
77
+ return classifyWorkflowError(error.cause);
78
+ }
79
+ if (error instanceof ApplicationFailure) {
80
+ const code = isDefinitionSyncErrorCode(error.type) ? error.type : 'unknown';
81
+ return {
82
+ code,
83
+ message: error.message ?? code
84
+ };
85
+ }
86
+ return {
87
+ code: 'unknown',
88
+ message: error instanceof Error ? error.message : String(error)
89
+ };
90
+ }
91
+ function formatWorkflowError(error) {
92
+ return error instanceof Error ? error.message : String(error);
93
+ }
94
+
95
+ //# sourceMappingURL=definition-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/temporal/workflows/definition-sync.ts"],"sourcesContent":["import {ActivityFailure, ApplicationFailure, proxyActivities} from '@temporalio/workflow';\nimport {\n type DefinitionSyncErrorCode,\n isDefinitionSyncErrorCode,\n} from '#core/entities/sync-state.js';\nimport type {createDefinitionSyncActivities} from '../activities/index.js';\n\nexport interface DefinitionSyncWorkflowInput {\n projectId: string;\n workspaceId: string;\n sourceConnectionId: string;\n sourceExternalRepositoryId: string;\n sourceRef?: string | undefined;\n sourceCommitSha?: string | undefined;\n}\n\nexport interface DefinitionSyncWorkflowResult {\n sourceRef: string;\n appliedCount: number;\n deletedCount: number;\n}\n\nconst PROVIDER_RETRY = {\n initialInterval: '5 seconds',\n backoffCoefficient: 2,\n maximumInterval: '1 minute',\n maximumAttempts: 5,\n} as const;\n\nconst DB_RETRY = {\n initialInterval: '1 second',\n backoffCoefficient: 2,\n maximumInterval: '15 seconds',\n maximumAttempts: 5,\n} as const;\n\nconst {prepareDefinitionSync, discoverDefinitionWorkflows, fetchAndApplyDefinitionWorkflows} =\n proxyActivities<ReturnType<typeof createDefinitionSyncActivities>>({\n startToCloseTimeout: '5 minutes',\n heartbeatTimeout: '30 seconds',\n retry: PROVIDER_RETRY,\n });\n\nconst {markDefinitionSyncSucceeded, markDefinitionSyncFailed} = proxyActivities<\n ReturnType<typeof createDefinitionSyncActivities>\n>({\n startToCloseTimeout: '30 seconds',\n retry: DB_RETRY,\n});\n\nexport async function definitionSyncWorkflow(\n input: DefinitionSyncWorkflowInput,\n): Promise<DefinitionSyncWorkflowResult> {\n let sourceRef: string | null = null;\n\n try {\n const prepared = await prepareDefinitionSync(input);\n sourceRef = prepared.sourceRef;\n\n const source = {\n ...input,\n sourceRef: prepared.sourceRef,\n sourceCommitSha: prepared.sourceCommitSha,\n };\n const {paths} = await discoverDefinitionWorkflows(source);\n const applied = await fetchAndApplyDefinitionWorkflows({...source, paths});\n\n await markDefinitionSyncSucceeded(source);\n\n return {\n sourceRef,\n appliedCount: applied.appliedCount,\n deletedCount: applied.deletedCount,\n };\n } catch (error) {\n const {code, message} = classifyWorkflowError(error);\n try {\n await markDefinitionSyncFailed({...input, sourceRef, code, message});\n } catch (markFailedError) {\n const failureOptions = {\n message: `Definition sync failed with ${code}: ${message}; additionally failed to persist failure state: ${formatWorkflowError(markFailedError)}`,\n type: 'definition-sync-failure-persistence-failed',\n nonRetryable: true,\n details: [\n {\n syncFailureCode: code,\n syncFailureMessage: message,\n failurePersistenceMessage: formatWorkflowError(markFailedError),\n },\n ],\n };\n throw ApplicationFailure.create(\n error instanceof Error ? {...failureOptions, cause: error} : failureOptions,\n );\n }\n throw error;\n }\n}\n\nexport function classifyWorkflowError(error: unknown): {\n code: DefinitionSyncErrorCode;\n message: string;\n} {\n if (error instanceof ActivityFailure && error.cause instanceof ApplicationFailure) {\n return classifyWorkflowError(error.cause);\n }\n if (error instanceof ApplicationFailure) {\n const code = isDefinitionSyncErrorCode(error.type) ? error.type : 'unknown';\n return {code, message: error.message ?? code};\n }\n return {code: 'unknown', message: error instanceof Error ? error.message : String(error)};\n}\n\nfunction formatWorkflowError(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n"],"names":["ActivityFailure","ApplicationFailure","proxyActivities","isDefinitionSyncErrorCode","PROVIDER_RETRY","initialInterval","backoffCoefficient","maximumInterval","maximumAttempts","DB_RETRY","prepareDefinitionSync","discoverDefinitionWorkflows","fetchAndApplyDefinitionWorkflows","startToCloseTimeout","heartbeatTimeout","retry","markDefinitionSyncSucceeded","markDefinitionSyncFailed","definitionSyncWorkflow","input","sourceRef","prepared","source","sourceCommitSha","paths","applied","appliedCount","deletedCount","error","code","message","classifyWorkflowError","markFailedError","failureOptions","formatWorkflowError","type","nonRetryable","details","syncFailureCode","syncFailureMessage","failurePersistenceMessage","create","Error","cause","String"],"mappings":"AAAA,SAAQA,eAAe,EAAEC,kBAAkB,EAAEC,eAAe,QAAO,uBAAuB;AAC1F,SAEEC,yBAAyB,QACpB,+BAA+B;AAkBtC,MAAMC,iBAAiB;IACrBC,iBAAiB;IACjBC,oBAAoB;IACpBC,iBAAiB;IACjBC,iBAAiB;AACnB;AAEA,MAAMC,WAAW;IACfJ,iBAAiB;IACjBC,oBAAoB;IACpBC,iBAAiB;IACjBC,iBAAiB;AACnB;AAEA,MAAM,EAACE,qBAAqB,EAAEC,2BAA2B,EAAEC,gCAAgC,EAAC,GAC1FV,gBAAmE;IACjEW,qBAAqB;IACrBC,kBAAkB;IAClBC,OAAOX;AACT;AAEF,MAAM,EAACY,2BAA2B,EAAEC,wBAAwB,EAAC,GAAGf,gBAE9D;IACAW,qBAAqB;IACrBE,OAAON;AACT;AAEA,OAAO,eAAeS,uBACpBC,KAAkC;IAElC,IAAIC,YAA2B;IAE/B,IAAI;QACF,MAAMC,WAAW,MAAMX,sBAAsBS;QAC7CC,YAAYC,SAASD,SAAS;QAE9B,MAAME,SAAS;YACb,GAAGH,KAAK;YACRC,WAAWC,SAASD,SAAS;YAC7BG,iBAAiBF,SAASE,eAAe;QAC3C;QACA,MAAM,EAACC,KAAK,EAAC,GAAG,MAAMb,4BAA4BW;QAClD,MAAMG,UAAU,MAAMb,iCAAiC;YAAC,GAAGU,MAAM;YAAEE;QAAK;QAExE,MAAMR,4BAA4BM;QAElC,OAAO;YACLF;YACAM,cAAcD,QAAQC,YAAY;YAClCC,cAAcF,QAAQE,YAAY;QACpC;IACF,EAAE,OAAOC,OAAO;QACd,MAAM,EAACC,IAAI,EAAEC,OAAO,EAAC,GAAGC,sBAAsBH;QAC9C,IAAI;YACF,MAAMX,yBAAyB;gBAAC,GAAGE,KAAK;gBAAEC;gBAAWS;gBAAMC;YAAO;QACpE,EAAE,OAAOE,iBAAiB;YACxB,MAAMC,iBAAiB;gBACrBH,SAAS,CAAC,4BAA4B,EAAED,KAAK,EAAE,EAAEC,QAAQ,gDAAgD,EAAEI,oBAAoBF,kBAAkB;gBACjJG,MAAM;gBACNC,cAAc;gBACdC,SAAS;oBACP;wBACEC,iBAAiBT;wBACjBU,oBAAoBT;wBACpBU,2BAA2BN,oBAAoBF;oBACjD;iBACD;YACH;YACA,MAAM/B,mBAAmBwC,MAAM,CAC7Bb,iBAAiBc,QAAQ;gBAAC,GAAGT,cAAc;gBAAEU,OAAOf;YAAK,IAAIK;QAEjE;QACA,MAAML;IACR;AACF;AAEA,OAAO,SAASG,sBAAsBH,KAAc;IAIlD,IAAIA,iBAAiB5B,mBAAmB4B,MAAMe,KAAK,YAAY1C,oBAAoB;QACjF,OAAO8B,sBAAsBH,MAAMe,KAAK;IAC1C;IACA,IAAIf,iBAAiB3B,oBAAoB;QACvC,MAAM4B,OAAO1B,0BAA0ByB,MAAMO,IAAI,IAAIP,MAAMO,IAAI,GAAG;QAClE,OAAO;YAACN;YAAMC,SAASF,MAAME,OAAO,IAAID;QAAI;IAC9C;IACA,OAAO;QAACA,MAAM;QAAWC,SAASF,iBAAiBc,QAAQd,MAAME,OAAO,GAAGc,OAAOhB;IAAM;AAC1F;AAEA,SAASM,oBAAoBN,KAAc;IACzC,OAAOA,iBAAiBc,QAAQd,MAAME,OAAO,GAAGc,OAAOhB;AACzD"}
@@ -0,0 +1,2 @@
1
+ export { definitionSyncWorkflow } from './definition-sync.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/temporal/workflows/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAC,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { definitionSyncWorkflow } from './definition-sync.js';
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/temporal/workflows/index.ts"],"sourcesContent":["export {definitionSyncWorkflow} from './definition-sync.js';\n"],"names":["definitionSyncWorkflow"],"mappings":"AAAA,SAAQA,sBAAsB,QAAO,uBAAuB"}