@sprinterai/runtime 0.6.0 → 0.8.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 (521) hide show
  1. package/dist/agent/heartbeat-scheduler.d.ts +36 -0
  2. package/dist/agent/heartbeat-scheduler.d.ts.map +1 -0
  3. package/dist/agent/heartbeat-scheduler.js +57 -0
  4. package/dist/agent/heartbeat-scheduler.js.map +1 -0
  5. package/dist/agent/heartbeat-scheduler.test.d.ts +2 -0
  6. package/dist/agent/heartbeat-scheduler.test.d.ts.map +1 -0
  7. package/dist/agent/heartbeat-scheduler.test.js +216 -0
  8. package/dist/agent/heartbeat-scheduler.test.js.map +1 -0
  9. package/dist/agent/index.d.ts +3 -0
  10. package/dist/agent/index.d.ts.map +1 -1
  11. package/dist/agent/index.js +2 -0
  12. package/dist/agent/index.js.map +1 -1
  13. package/dist/agent/versioning.d.ts +22 -0
  14. package/dist/agent/versioning.d.ts.map +1 -0
  15. package/dist/agent/versioning.js +47 -0
  16. package/dist/agent/versioning.js.map +1 -0
  17. package/dist/agent/versioning.test.d.ts +2 -0
  18. package/dist/agent/versioning.test.d.ts.map +1 -0
  19. package/dist/agent/versioning.test.js +147 -0
  20. package/dist/agent/versioning.test.js.map +1 -0
  21. package/dist/analytics/analytics-recorder.d.ts +12 -0
  22. package/dist/analytics/analytics-recorder.d.ts.map +1 -0
  23. package/dist/analytics/analytics-recorder.js +27 -0
  24. package/dist/analytics/analytics-recorder.js.map +1 -0
  25. package/dist/analytics/analytics-recorder.test.d.ts +2 -0
  26. package/dist/analytics/analytics-recorder.test.d.ts.map +1 -0
  27. package/dist/analytics/analytics-recorder.test.js +98 -0
  28. package/dist/analytics/analytics-recorder.test.js.map +1 -0
  29. package/dist/analytics/analytics-types.d.ts +13 -0
  30. package/dist/analytics/analytics-types.d.ts.map +1 -0
  31. package/dist/analytics/analytics-types.js +2 -0
  32. package/dist/analytics/analytics-types.js.map +1 -0
  33. package/dist/analytics/index.d.ts +4 -0
  34. package/dist/analytics/index.d.ts.map +1 -0
  35. package/dist/analytics/index.js +2 -0
  36. package/dist/analytics/index.js.map +1 -0
  37. package/dist/automation/index.d.ts +77 -0
  38. package/dist/automation/index.d.ts.map +1 -0
  39. package/dist/automation/index.js +119 -0
  40. package/dist/automation/index.js.map +1 -0
  41. package/dist/automation/index.test.d.ts +2 -0
  42. package/dist/automation/index.test.d.ts.map +1 -0
  43. package/dist/automation/index.test.js +135 -0
  44. package/dist/automation/index.test.js.map +1 -0
  45. package/dist/capture/capture-parser.d.ts +13 -0
  46. package/dist/capture/capture-parser.d.ts.map +1 -0
  47. package/dist/capture/capture-parser.js +55 -0
  48. package/dist/capture/capture-parser.js.map +1 -0
  49. package/dist/capture/capture-parser.test.d.ts +2 -0
  50. package/dist/capture/capture-parser.test.d.ts.map +1 -0
  51. package/dist/capture/capture-parser.test.js +134 -0
  52. package/dist/capture/capture-parser.test.js.map +1 -0
  53. package/dist/capture/capture-schema.d.ts +38 -0
  54. package/dist/capture/capture-schema.d.ts.map +1 -0
  55. package/dist/capture/capture-schema.js +16 -0
  56. package/dist/capture/capture-schema.js.map +1 -0
  57. package/dist/capture/capture-schema.test.d.ts +2 -0
  58. package/dist/capture/capture-schema.test.d.ts.map +1 -0
  59. package/dist/capture/capture-schema.test.js +72 -0
  60. package/dist/capture/capture-schema.test.js.map +1 -0
  61. package/dist/capture/create-from-capture.d.ts +14 -0
  62. package/dist/capture/create-from-capture.d.ts.map +1 -0
  63. package/dist/capture/create-from-capture.js +30 -0
  64. package/dist/capture/create-from-capture.js.map +1 -0
  65. package/dist/capture/create-from-capture.test.d.ts +2 -0
  66. package/dist/capture/create-from-capture.test.d.ts.map +1 -0
  67. package/dist/capture/create-from-capture.test.js +148 -0
  68. package/dist/capture/create-from-capture.test.js.map +1 -0
  69. package/dist/capture/index.d.ts +7 -0
  70. package/dist/capture/index.d.ts.map +1 -0
  71. package/dist/capture/index.js +4 -0
  72. package/dist/capture/index.js.map +1 -0
  73. package/dist/chat/inbox.d.ts +96 -0
  74. package/dist/chat/inbox.d.ts.map +1 -0
  75. package/dist/chat/inbox.js +170 -0
  76. package/dist/chat/inbox.js.map +1 -0
  77. package/dist/chat/inbox.test.d.ts +2 -0
  78. package/dist/chat/inbox.test.d.ts.map +1 -0
  79. package/dist/chat/inbox.test.js +520 -0
  80. package/dist/chat/inbox.test.js.map +1 -0
  81. package/dist/chat/index.d.ts +5 -3
  82. package/dist/chat/index.d.ts.map +1 -1
  83. package/dist/chat/index.js +3 -2
  84. package/dist/chat/index.js.map +1 -1
  85. package/dist/context/context-keys.d.ts +7 -0
  86. package/dist/context/context-keys.d.ts.map +1 -0
  87. package/dist/context/context-keys.js +6 -0
  88. package/dist/context/context-keys.js.map +1 -0
  89. package/dist/context/format-context.d.ts +14 -0
  90. package/dist/context/format-context.d.ts.map +1 -0
  91. package/dist/context/format-context.js +82 -0
  92. package/dist/context/format-context.js.map +1 -0
  93. package/dist/context/format-context.test.d.ts +2 -0
  94. package/dist/context/format-context.test.d.ts.map +1 -0
  95. package/dist/context/format-context.test.js +130 -0
  96. package/dist/context/format-context.test.js.map +1 -0
  97. package/dist/context/index.d.ts +6 -0
  98. package/dist/context/index.d.ts.map +1 -0
  99. package/dist/context/index.js +5 -0
  100. package/dist/context/index.js.map +1 -0
  101. package/dist/context/load-context.d.ts +8 -0
  102. package/dist/context/load-context.d.ts.map +1 -0
  103. package/dist/context/load-context.js +22 -0
  104. package/dist/context/load-context.js.map +1 -0
  105. package/dist/context/load-context.test.d.ts +2 -0
  106. package/dist/context/load-context.test.d.ts.map +1 -0
  107. package/dist/context/load-context.test.js +111 -0
  108. package/dist/context/load-context.test.js.map +1 -0
  109. package/dist/context/shared-context.d.ts +11 -0
  110. package/dist/context/shared-context.d.ts.map +1 -0
  111. package/dist/context/shared-context.js +14 -0
  112. package/dist/context/shared-context.js.map +1 -0
  113. package/dist/context/shared-context.test.d.ts +2 -0
  114. package/dist/context/shared-context.test.d.ts.map +1 -0
  115. package/dist/context/shared-context.test.js +90 -0
  116. package/dist/context/shared-context.test.js.map +1 -0
  117. package/dist/document/deletion.d.ts +17 -0
  118. package/dist/document/deletion.d.ts.map +1 -0
  119. package/dist/document/deletion.js +11 -0
  120. package/dist/document/deletion.js.map +1 -0
  121. package/dist/document/deletion.test.d.ts +2 -0
  122. package/dist/document/deletion.test.d.ts.map +1 -0
  123. package/dist/document/deletion.test.js +33 -0
  124. package/dist/document/deletion.test.js.map +1 -0
  125. package/dist/document/index.d.ts +12 -0
  126. package/dist/document/index.d.ts.map +1 -1
  127. package/dist/document/index.js +7 -0
  128. package/dist/document/index.js.map +1 -1
  129. package/dist/document/linking.d.ts +42 -0
  130. package/dist/document/linking.d.ts.map +1 -0
  131. package/dist/document/linking.js +49 -0
  132. package/dist/document/linking.js.map +1 -0
  133. package/dist/document/linking.test.d.ts +2 -0
  134. package/dist/document/linking.test.d.ts.map +1 -0
  135. package/dist/document/linking.test.js +86 -0
  136. package/dist/document/linking.test.js.map +1 -0
  137. package/dist/document/pagination.d.ts +24 -0
  138. package/dist/document/pagination.d.ts.map +1 -0
  139. package/dist/document/pagination.js +24 -0
  140. package/dist/document/pagination.js.map +1 -0
  141. package/dist/document/pagination.test.d.ts +2 -0
  142. package/dist/document/pagination.test.d.ts.map +1 -0
  143. package/dist/document/pagination.test.js +84 -0
  144. package/dist/document/pagination.test.js.map +1 -0
  145. package/dist/document/search.d.ts +37 -0
  146. package/dist/document/search.d.ts.map +1 -0
  147. package/dist/document/search.js +37 -0
  148. package/dist/document/search.js.map +1 -0
  149. package/dist/document/search.test.d.ts +2 -0
  150. package/dist/document/search.test.d.ts.map +1 -0
  151. package/dist/document/search.test.js +97 -0
  152. package/dist/document/search.test.js.map +1 -0
  153. package/dist/document/upload.d.ts +15 -0
  154. package/dist/document/upload.d.ts.map +1 -0
  155. package/dist/document/upload.js +12 -0
  156. package/dist/document/upload.js.map +1 -0
  157. package/dist/document/upload.test.d.ts +2 -0
  158. package/dist/document/upload.test.d.ts.map +1 -0
  159. package/dist/document/upload.test.js +70 -0
  160. package/dist/document/upload.test.js.map +1 -0
  161. package/dist/document/url-generation.d.ts +21 -0
  162. package/dist/document/url-generation.d.ts.map +1 -0
  163. package/dist/document/url-generation.js +14 -0
  164. package/dist/document/url-generation.js.map +1 -0
  165. package/dist/document/url-generation.test.d.ts +2 -0
  166. package/dist/document/url-generation.test.d.ts.map +1 -0
  167. package/dist/document/url-generation.test.js +38 -0
  168. package/dist/document/url-generation.test.js.map +1 -0
  169. package/dist/email/engine.d.ts +19 -0
  170. package/dist/email/engine.d.ts.map +1 -0
  171. package/dist/email/engine.js +30 -0
  172. package/dist/email/engine.js.map +1 -0
  173. package/dist/email/engine.test.d.ts +2 -0
  174. package/dist/email/engine.test.d.ts.map +1 -0
  175. package/dist/email/engine.test.js +128 -0
  176. package/dist/email/engine.test.js.map +1 -0
  177. package/dist/email/index.d.ts +5 -0
  178. package/dist/email/index.d.ts.map +1 -0
  179. package/dist/email/index.js +3 -0
  180. package/dist/email/index.js.map +1 -0
  181. package/dist/email/templates.d.ts +33 -0
  182. package/dist/email/templates.d.ts.map +1 -0
  183. package/dist/email/templates.js +132 -0
  184. package/dist/email/templates.js.map +1 -0
  185. package/dist/email/templates.test.d.ts +2 -0
  186. package/dist/email/templates.test.d.ts.map +1 -0
  187. package/dist/email/templates.test.js +158 -0
  188. package/dist/email/templates.test.js.map +1 -0
  189. package/dist/entity/bulk-operations.d.ts +39 -0
  190. package/dist/entity/bulk-operations.d.ts.map +1 -0
  191. package/dist/entity/bulk-operations.js +127 -0
  192. package/dist/entity/bulk-operations.js.map +1 -0
  193. package/dist/entity/bulk-operations.test.d.ts +2 -0
  194. package/dist/entity/bulk-operations.test.d.ts.map +1 -0
  195. package/dist/entity/bulk-operations.test.js +212 -0
  196. package/dist/entity/bulk-operations.test.js.map +1 -0
  197. package/dist/entity/collections.d.ts +17 -0
  198. package/dist/entity/collections.d.ts.map +1 -0
  199. package/dist/entity/collections.js +22 -0
  200. package/dist/entity/collections.js.map +1 -0
  201. package/dist/entity/collections.test.d.ts +2 -0
  202. package/dist/entity/collections.test.d.ts.map +1 -0
  203. package/dist/entity/collections.test.js +92 -0
  204. package/dist/entity/collections.test.js.map +1 -0
  205. package/dist/entity/index.d.ts +9 -0
  206. package/dist/entity/index.d.ts.map +1 -0
  207. package/dist/entity/index.js +6 -0
  208. package/dist/entity/index.js.map +1 -0
  209. package/dist/entity/relations.d.ts +65 -0
  210. package/dist/entity/relations.d.ts.map +1 -0
  211. package/dist/entity/relations.js +110 -0
  212. package/dist/entity/relations.js.map +1 -0
  213. package/dist/entity/relations.test.d.ts +2 -0
  214. package/dist/entity/relations.test.d.ts.map +1 -0
  215. package/dist/entity/relations.test.js +202 -0
  216. package/dist/entity/relations.test.js.map +1 -0
  217. package/dist/entity/resolve-relation-columns.d.ts +31 -0
  218. package/dist/entity/resolve-relation-columns.d.ts.map +1 -0
  219. package/dist/entity/resolve-relation-columns.js +156 -0
  220. package/dist/entity/resolve-relation-columns.js.map +1 -0
  221. package/dist/entity/resolve-relation-columns.test.d.ts +2 -0
  222. package/dist/entity/resolve-relation-columns.test.d.ts.map +1 -0
  223. package/dist/entity/resolve-relation-columns.test.js +281 -0
  224. package/dist/entity/resolve-relation-columns.test.js.map +1 -0
  225. package/dist/entity/sharing.d.ts +41 -0
  226. package/dist/entity/sharing.d.ts.map +1 -0
  227. package/dist/entity/sharing.js +52 -0
  228. package/dist/entity/sharing.js.map +1 -0
  229. package/dist/entity/sharing.test.d.ts +2 -0
  230. package/dist/entity/sharing.test.d.ts.map +1 -0
  231. package/dist/entity/sharing.test.js +178 -0
  232. package/dist/entity/sharing.test.js.map +1 -0
  233. package/dist/external-data/external-data-receiver.d.ts +43 -0
  234. package/dist/external-data/external-data-receiver.d.ts.map +1 -0
  235. package/dist/external-data/external-data-receiver.js +81 -0
  236. package/dist/external-data/external-data-receiver.js.map +1 -0
  237. package/dist/external-data/external-data-receiver.test.d.ts +2 -0
  238. package/dist/external-data/external-data-receiver.test.d.ts.map +1 -0
  239. package/dist/external-data/external-data-receiver.test.js +189 -0
  240. package/dist/external-data/external-data-receiver.test.js.map +1 -0
  241. package/dist/external-data/extract-by-path.d.ts +13 -0
  242. package/dist/external-data/extract-by-path.d.ts.map +1 -0
  243. package/dist/external-data/extract-by-path.js +25 -0
  244. package/dist/external-data/extract-by-path.js.map +1 -0
  245. package/dist/external-data/extract-by-path.test.d.ts +2 -0
  246. package/dist/external-data/extract-by-path.test.d.ts.map +1 -0
  247. package/dist/external-data/extract-by-path.test.js +47 -0
  248. package/dist/external-data/extract-by-path.test.js.map +1 -0
  249. package/dist/external-data/index.d.ts +4 -0
  250. package/dist/external-data/index.d.ts.map +1 -0
  251. package/dist/external-data/index.js +3 -0
  252. package/dist/external-data/index.js.map +1 -0
  253. package/dist/feed/digest.d.ts +35 -0
  254. package/dist/feed/digest.d.ts.map +1 -0
  255. package/dist/feed/digest.js +273 -0
  256. package/dist/feed/digest.js.map +1 -0
  257. package/dist/feed/filters.d.ts +41 -0
  258. package/dist/feed/filters.d.ts.map +1 -0
  259. package/dist/feed/filters.js +97 -0
  260. package/dist/feed/filters.js.map +1 -0
  261. package/dist/feed/index.d.ts +20 -0
  262. package/dist/feed/index.d.ts.map +1 -0
  263. package/dist/feed/index.js +23 -0
  264. package/dist/feed/index.js.map +1 -0
  265. package/dist/feed/ranking.d.ts +42 -0
  266. package/dist/feed/ranking.d.ts.map +1 -0
  267. package/dist/feed/ranking.js +133 -0
  268. package/dist/feed/ranking.js.map +1 -0
  269. package/dist/feed/resolver.d.ts +76 -0
  270. package/dist/feed/resolver.d.ts.map +1 -0
  271. package/dist/feed/resolver.js +173 -0
  272. package/dist/feed/resolver.js.map +1 -0
  273. package/dist/feed/transformers.d.ts +80 -0
  274. package/dist/feed/transformers.d.ts.map +1 -0
  275. package/dist/feed/transformers.js +179 -0
  276. package/dist/feed/transformers.js.map +1 -0
  277. package/dist/feed/types.d.ts +131 -0
  278. package/dist/feed/types.d.ts.map +1 -0
  279. package/dist/feed/types.js +6 -0
  280. package/dist/feed/types.js.map +1 -0
  281. package/dist/import/batch-upsert.d.ts +18 -0
  282. package/dist/import/batch-upsert.d.ts.map +1 -0
  283. package/dist/import/batch-upsert.js +67 -0
  284. package/dist/import/batch-upsert.js.map +1 -0
  285. package/dist/import/index.d.ts +7 -0
  286. package/dist/import/index.d.ts.map +1 -0
  287. package/dist/import/index.js +4 -0
  288. package/dist/import/index.js.map +1 -0
  289. package/dist/import/merge-content.d.ts +8 -0
  290. package/dist/import/merge-content.d.ts.map +1 -0
  291. package/dist/import/merge-content.js +20 -0
  292. package/dist/import/merge-content.js.map +1 -0
  293. package/dist/import/merge-content.test.d.ts +2 -0
  294. package/dist/import/merge-content.test.d.ts.map +1 -0
  295. package/dist/import/merge-content.test.js +53 -0
  296. package/dist/import/merge-content.test.js.map +1 -0
  297. package/dist/import/types.d.ts +20 -0
  298. package/dist/import/types.d.ts.map +1 -0
  299. package/dist/import/types.js +2 -0
  300. package/dist/import/types.js.map +1 -0
  301. package/dist/import/upsert-matcher.d.ts +39 -0
  302. package/dist/import/upsert-matcher.d.ts.map +1 -0
  303. package/dist/import/upsert-matcher.js +67 -0
  304. package/dist/import/upsert-matcher.js.map +1 -0
  305. package/dist/import/upsert-matcher.test.d.ts +2 -0
  306. package/dist/import/upsert-matcher.test.d.ts.map +1 -0
  307. package/dist/import/upsert-matcher.test.js +77 -0
  308. package/dist/import/upsert-matcher.test.js.map +1 -0
  309. package/dist/index.d.ts +77 -1
  310. package/dist/index.d.ts.map +1 -1
  311. package/dist/index.js +55 -1
  312. package/dist/index.js.map +1 -1
  313. package/dist/inngest/create-extraction-functions.d.ts +71 -0
  314. package/dist/inngest/create-extraction-functions.d.ts.map +1 -0
  315. package/dist/inngest/create-extraction-functions.js +71 -0
  316. package/dist/inngest/create-extraction-functions.js.map +1 -0
  317. package/dist/inngest/event-names.d.ts +20 -0
  318. package/dist/inngest/event-names.d.ts.map +1 -0
  319. package/dist/inngest/event-names.js +19 -0
  320. package/dist/inngest/event-names.js.map +1 -0
  321. package/dist/inngest/index.d.ts +5 -0
  322. package/dist/inngest/index.d.ts.map +1 -0
  323. package/dist/inngest/index.js +3 -0
  324. package/dist/inngest/index.js.map +1 -0
  325. package/dist/memory/index.d.ts +4 -3
  326. package/dist/memory/index.d.ts.map +1 -1
  327. package/dist/memory/index.js +3 -2
  328. package/dist/memory/index.js.map +1 -1
  329. package/dist/memory/user-memory.d.ts +15 -0
  330. package/dist/memory/user-memory.d.ts.map +1 -0
  331. package/dist/memory/user-memory.js +20 -0
  332. package/dist/memory/user-memory.js.map +1 -0
  333. package/dist/memory/user-memory.test.d.ts +2 -0
  334. package/dist/memory/user-memory.test.d.ts.map +1 -0
  335. package/dist/memory/user-memory.test.js +74 -0
  336. package/dist/memory/user-memory.test.js.map +1 -0
  337. package/dist/module/create-runtime.d.ts +4 -1
  338. package/dist/module/create-runtime.d.ts.map +1 -1
  339. package/dist/module/create-runtime.js.map +1 -1
  340. package/dist/module/map-supabase-stores.d.ts +3 -0
  341. package/dist/module/map-supabase-stores.d.ts.map +1 -1
  342. package/dist/module/map-supabase-stores.js +3 -0
  343. package/dist/module/map-supabase-stores.js.map +1 -1
  344. package/dist/package-exports.test.d.ts +2 -0
  345. package/dist/package-exports.test.d.ts.map +1 -0
  346. package/dist/package-exports.test.js +36 -0
  347. package/dist/package-exports.test.js.map +1 -0
  348. package/dist/providers/index.d.ts +2 -1
  349. package/dist/providers/index.d.ts.map +1 -1
  350. package/dist/providers/index.js.map +1 -1
  351. package/dist/providers/model-resolver.d.ts +11 -3
  352. package/dist/providers/model-resolver.d.ts.map +1 -1
  353. package/dist/providers/model-resolver.js +166 -11
  354. package/dist/providers/model-resolver.js.map +1 -1
  355. package/dist/providers/model-resolver.test.js +10 -10
  356. package/dist/providers/model-resolver.test.js.map +1 -1
  357. package/dist/providers/provider-interfaces.d.ts +0 -20
  358. package/dist/providers/provider-interfaces.d.ts.map +1 -1
  359. package/dist/providers/provider-interfaces.js +1 -0
  360. package/dist/providers/provider-interfaces.js.map +1 -1
  361. package/dist/scoring/index.d.ts +4 -2
  362. package/dist/scoring/index.d.ts.map +1 -1
  363. package/dist/scoring/index.js +2 -1
  364. package/dist/scoring/index.js.map +1 -1
  365. package/dist/scoring/promotion.d.ts +20 -0
  366. package/dist/scoring/promotion.d.ts.map +1 -0
  367. package/dist/scoring/promotion.js +39 -0
  368. package/dist/scoring/promotion.js.map +1 -0
  369. package/dist/scoring/promotion.test.d.ts +2 -0
  370. package/dist/scoring/promotion.test.d.ts.map +1 -0
  371. package/dist/scoring/promotion.test.js +141 -0
  372. package/dist/scoring/promotion.test.js.map +1 -0
  373. package/dist/settings/index.d.ts +15 -0
  374. package/dist/settings/index.d.ts.map +1 -0
  375. package/dist/settings/index.js +47 -0
  376. package/dist/settings/index.js.map +1 -0
  377. package/dist/settings/index.test.d.ts +2 -0
  378. package/dist/settings/index.test.d.ts.map +1 -0
  379. package/dist/settings/index.test.js +75 -0
  380. package/dist/settings/index.test.js.map +1 -0
  381. package/dist/skill/index.d.ts +4 -0
  382. package/dist/skill/index.d.ts.map +1 -0
  383. package/dist/skill/index.js +3 -0
  384. package/dist/skill/index.js.map +1 -0
  385. package/dist/skill/skill-loader.d.ts +18 -0
  386. package/dist/skill/skill-loader.d.ts.map +1 -0
  387. package/dist/skill/skill-loader.js +31 -0
  388. package/dist/skill/skill-loader.js.map +1 -0
  389. package/dist/skill/skill-loader.test.d.ts +2 -0
  390. package/dist/skill/skill-loader.test.d.ts.map +1 -0
  391. package/dist/skill/skill-loader.test.js +64 -0
  392. package/dist/skill/skill-loader.test.js.map +1 -0
  393. package/dist/skill/skill-prompt.d.ts +7 -0
  394. package/dist/skill/skill-prompt.d.ts.map +1 -0
  395. package/dist/skill/skill-prompt.js +17 -0
  396. package/dist/skill/skill-prompt.js.map +1 -0
  397. package/dist/skill/skill-prompt.test.d.ts +2 -0
  398. package/dist/skill/skill-prompt.test.d.ts.map +1 -0
  399. package/dist/skill/skill-prompt.test.js +44 -0
  400. package/dist/skill/skill-prompt.test.js.map +1 -0
  401. package/dist/source/index.d.ts +5 -0
  402. package/dist/source/index.d.ts.map +1 -0
  403. package/dist/source/index.js +3 -0
  404. package/dist/source/index.js.map +1 -0
  405. package/dist/source/source-poller.d.ts +66 -0
  406. package/dist/source/source-poller.d.ts.map +1 -0
  407. package/dist/source/source-poller.js +64 -0
  408. package/dist/source/source-poller.js.map +1 -0
  409. package/dist/source/source-poller.test.d.ts +2 -0
  410. package/dist/source/source-poller.test.d.ts.map +1 -0
  411. package/dist/source/source-poller.test.js +184 -0
  412. package/dist/source/source-poller.test.js.map +1 -0
  413. package/dist/source/source-status.d.ts +41 -0
  414. package/dist/source/source-status.d.ts.map +1 -0
  415. package/dist/source/source-status.js +73 -0
  416. package/dist/source/source-status.js.map +1 -0
  417. package/dist/source/source-status.test.d.ts +2 -0
  418. package/dist/source/source-status.test.d.ts.map +1 -0
  419. package/dist/source/source-status.test.js +116 -0
  420. package/dist/source/source-status.test.js.map +1 -0
  421. package/dist/template/index.d.ts +61 -0
  422. package/dist/template/index.d.ts.map +1 -0
  423. package/dist/template/index.js +100 -0
  424. package/dist/template/index.js.map +1 -0
  425. package/dist/template/index.test.d.ts +2 -0
  426. package/dist/template/index.test.d.ts.map +1 -0
  427. package/dist/template/index.test.js +167 -0
  428. package/dist/template/index.test.js.map +1 -0
  429. package/dist/testing/in-memory-agent-version-store.d.ts +13 -0
  430. package/dist/testing/in-memory-agent-version-store.d.ts.map +1 -0
  431. package/dist/testing/in-memory-agent-version-store.js +36 -0
  432. package/dist/testing/in-memory-agent-version-store.js.map +1 -0
  433. package/dist/testing/in-memory-chat-store.d.ts +11 -1
  434. package/dist/testing/in-memory-chat-store.d.ts.map +1 -1
  435. package/dist/testing/in-memory-chat-store.js +66 -0
  436. package/dist/testing/in-memory-chat-store.js.map +1 -1
  437. package/dist/testing/in-memory-entity-store.d.ts +2 -0
  438. package/dist/testing/in-memory-entity-store.d.ts.map +1 -1
  439. package/dist/testing/in-memory-entity-store.js +8 -3
  440. package/dist/testing/in-memory-entity-store.js.map +1 -1
  441. package/dist/testing/in-memory-entity-store.test.js +2 -1
  442. package/dist/testing/in-memory-entity-store.test.js.map +1 -1
  443. package/dist/testing/in-memory-heartbeat-run-store.d.ts +21 -0
  444. package/dist/testing/in-memory-heartbeat-run-store.d.ts.map +1 -0
  445. package/dist/testing/in-memory-heartbeat-run-store.js +107 -0
  446. package/dist/testing/in-memory-heartbeat-run-store.js.map +1 -0
  447. package/dist/testing/index.d.ts +9 -7
  448. package/dist/testing/index.d.ts.map +1 -1
  449. package/dist/testing/index.js +9 -7
  450. package/dist/testing/index.js.map +1 -1
  451. package/dist/tool/gallery/gallery-module.d.ts +4 -0
  452. package/dist/tool/gallery/gallery-module.d.ts.map +1 -0
  453. package/dist/tool/gallery/gallery-module.js +10 -0
  454. package/dist/tool/gallery/gallery-module.js.map +1 -0
  455. package/dist/tool/gallery/gallery-tool-definitions.d.ts +17 -0
  456. package/dist/tool/gallery/gallery-tool-definitions.d.ts.map +1 -0
  457. package/dist/tool/gallery/gallery-tool-definitions.js +748 -0
  458. package/dist/tool/gallery/gallery-tool-definitions.js.map +1 -0
  459. package/dist/tool/gallery/gallery-tools.d.ts +11 -0
  460. package/dist/tool/gallery/gallery-tools.d.ts.map +1 -0
  461. package/dist/tool/gallery/gallery-tools.js +971 -0
  462. package/dist/tool/gallery/gallery-tools.js.map +1 -0
  463. package/dist/tool/gallery/gallery-tools.test.d.ts +2 -0
  464. package/dist/tool/gallery/gallery-tools.test.d.ts.map +1 -0
  465. package/dist/tool/gallery/gallery-tools.test.js +75 -0
  466. package/dist/tool/gallery/gallery-tools.test.js.map +1 -0
  467. package/dist/tool/gallery/index.d.ts +5 -0
  468. package/dist/tool/gallery/index.d.ts.map +1 -0
  469. package/dist/tool/gallery/index.js +4 -0
  470. package/dist/tool/gallery/index.js.map +1 -0
  471. package/dist/tool/index.d.ts +11 -7
  472. package/dist/tool/index.d.ts.map +1 -1
  473. package/dist/tool/index.js +7 -5
  474. package/dist/tool/index.js.map +1 -1
  475. package/dist/tool/session-manager.d.ts +35 -0
  476. package/dist/tool/session-manager.d.ts.map +1 -0
  477. package/dist/tool/session-manager.js +40 -0
  478. package/dist/tool/session-manager.js.map +1 -0
  479. package/dist/tool/session-manager.test.d.ts +2 -0
  480. package/dist/tool/session-manager.test.d.ts.map +1 -0
  481. package/dist/tool/session-manager.test.js +139 -0
  482. package/dist/tool/session-manager.test.js.map +1 -0
  483. package/dist/tool/tool-registry.d.ts +1 -1
  484. package/dist/tool/tool-registry.d.ts.map +1 -1
  485. package/dist/tool/tool-registry.js +1 -0
  486. package/dist/tool/tool-registry.js.map +1 -1
  487. package/dist/tool/tool-registry.test.js +7 -0
  488. package/dist/tool/tool-registry.test.js.map +1 -1
  489. package/dist/workflow/claim-manager.d.ts +24 -0
  490. package/dist/workflow/claim-manager.d.ts.map +1 -0
  491. package/dist/workflow/claim-manager.js +31 -0
  492. package/dist/workflow/claim-manager.js.map +1 -0
  493. package/dist/workflow/claim-manager.test.d.ts +2 -0
  494. package/dist/workflow/claim-manager.test.d.ts.map +1 -0
  495. package/dist/workflow/claim-manager.test.js +124 -0
  496. package/dist/workflow/claim-manager.test.js.map +1 -0
  497. package/dist/workflow/create-node-executor.d.ts +40 -0
  498. package/dist/workflow/create-node-executor.d.ts.map +1 -0
  499. package/dist/workflow/create-node-executor.js +234 -0
  500. package/dist/workflow/create-node-executor.js.map +1 -0
  501. package/dist/workflow/field-recovery.d.ts +12 -0
  502. package/dist/workflow/field-recovery.d.ts.map +1 -0
  503. package/dist/workflow/field-recovery.js +86 -0
  504. package/dist/workflow/field-recovery.js.map +1 -0
  505. package/dist/workflow/index.d.ts +8 -0
  506. package/dist/workflow/index.d.ts.map +1 -1
  507. package/dist/workflow/index.js +7 -0
  508. package/dist/workflow/index.js.map +1 -1
  509. package/dist/workflow/run-entity-workflow.d.ts +53 -0
  510. package/dist/workflow/run-entity-workflow.d.ts.map +1 -0
  511. package/dist/workflow/run-entity-workflow.js +72 -0
  512. package/dist/workflow/run-entity-workflow.js.map +1 -0
  513. package/dist/workflow/run-queries.d.ts +45 -0
  514. package/dist/workflow/run-queries.d.ts.map +1 -0
  515. package/dist/workflow/run-queries.js +80 -0
  516. package/dist/workflow/run-queries.js.map +1 -0
  517. package/dist/workflow/run-queries.test.d.ts +2 -0
  518. package/dist/workflow/run-queries.test.d.ts.map +1 -0
  519. package/dist/workflow/run-queries.test.js +177 -0
  520. package/dist/workflow/run-queries.test.js.map +1 -0
  521. package/package.json +227 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim-manager.js","sourceRoot":"","sources":["../../src/workflow/claim-manager.ts"],"names":[],"mappings":"AAEA,4EAA4E;AAC5E,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,aAAa;AAElE;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,KAAsD,EACtD,gBAAwB,wBAAwB;IAEhD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;IACjE,OAAO,OAAO,CAAC,MAAM,CAAC;AACxB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,QAAiC;IAC/D,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC;AAC/E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAiC,EACjC,gBAAwB,wBAAwB;IAEhD,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;IAClE,OAAO,QAAQ,CAAC,MAAM,CACpB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI,IAAI,CAAC,CAAC,UAAU,GAAG,MAAM,CAChF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=claim-manager.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim-manager.test.d.ts","sourceRoot":"","sources":["../../src/workflow/claim-manager.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,124 @@
1
+ import { describe, it, expect, vi } from 'vitest';
2
+ import { expireStaleWorkflowNodeClaims, hasActiveClaims, findStaleNodeRuns, DEFAULT_CLAIM_TIMEOUT_MS, } from './claim-manager.js';
3
+ function makeNodeRun(overrides) {
4
+ return {
5
+ workflow_run_id: 'run-1',
6
+ entity_id: 'entity-1',
7
+ tenant_id: 'tenant-1',
8
+ node_key: 'node-1',
9
+ node_type: 'agent_task',
10
+ label: 'Test Node',
11
+ field_name: null,
12
+ block_id: null,
13
+ output_type: 'field',
14
+ assignee_type: null,
15
+ assignee_agent_slug: null,
16
+ depends_on: [],
17
+ instructions: null,
18
+ metadata: null,
19
+ error_message: null,
20
+ claimed_by: null,
21
+ claimed_at: null,
22
+ attempt_count: 0,
23
+ started_at: null,
24
+ completed_at: null,
25
+ duration_ms: null,
26
+ created_at: '2026-01-01T10:00:00Z',
27
+ ...overrides,
28
+ };
29
+ }
30
+ describe('DEFAULT_CLAIM_TIMEOUT_MS', () => {
31
+ it('is 15 minutes', () => {
32
+ expect(DEFAULT_CLAIM_TIMEOUT_MS).toBe(15 * 60_000);
33
+ });
34
+ });
35
+ describe('expireStaleWorkflowNodeClaims', () => {
36
+ it('calls expireStaleNodeClaims with provided timeout', async () => {
37
+ const expired = [makeNodeRun({ id: 'n1', status: 'running' })];
38
+ const store = { expireStaleNodeClaims: vi.fn(async () => expired) };
39
+ const count = await expireStaleWorkflowNodeClaims(store, 30_000);
40
+ expect(store.expireStaleNodeClaims).toHaveBeenCalledWith(30_000);
41
+ expect(count).toBe(1);
42
+ });
43
+ it('uses default timeout when not provided', async () => {
44
+ const store = { expireStaleNodeClaims: vi.fn(async () => []) };
45
+ await expireStaleWorkflowNodeClaims(store);
46
+ expect(store.expireStaleNodeClaims).toHaveBeenCalledWith(DEFAULT_CLAIM_TIMEOUT_MS);
47
+ });
48
+ it('returns 0 when no claims were expired', async () => {
49
+ const store = { expireStaleNodeClaims: vi.fn(async () => []) };
50
+ const count = await expireStaleWorkflowNodeClaims(store, 60_000);
51
+ expect(count).toBe(0);
52
+ });
53
+ it('returns the count of expired claims', async () => {
54
+ const store = {
55
+ expireStaleNodeClaims: vi.fn(async () => [
56
+ makeNodeRun({ id: 'n1', status: 'running' }),
57
+ makeNodeRun({ id: 'n2', status: 'running' }),
58
+ makeNodeRun({ id: 'n3', status: 'running' }),
59
+ ]),
60
+ };
61
+ const count = await expireStaleWorkflowNodeClaims(store, 60_000);
62
+ expect(count).toBe(3);
63
+ });
64
+ });
65
+ describe('hasActiveClaims', () => {
66
+ it('returns true when a running node is claimed', () => {
67
+ const nodes = [makeNodeRun({ id: 'n1', status: 'running', claimed_by: 'agent-1' })];
68
+ expect(hasActiveClaims(nodes)).toBe(true);
69
+ });
70
+ it('returns false when no nodes are claimed', () => {
71
+ const nodes = [
72
+ makeNodeRun({ id: 'n1', status: 'pending' }),
73
+ makeNodeRun({ id: 'n2', status: 'completed' }),
74
+ ];
75
+ expect(hasActiveClaims(nodes)).toBe(false);
76
+ });
77
+ it('returns false when running but claimed_by is null', () => {
78
+ const nodes = [makeNodeRun({ id: 'n1', status: 'running', claimed_by: null })];
79
+ expect(hasActiveClaims(nodes)).toBe(false);
80
+ });
81
+ it('returns false for empty array', () => {
82
+ expect(hasActiveClaims([])).toBe(false);
83
+ });
84
+ });
85
+ describe('findStaleNodeRuns', () => {
86
+ it('returns nodes claimed before the cutoff', () => {
87
+ const staleAt = new Date(Date.now() - 20 * 60_000).toISOString(); // 20 min ago
88
+ const recentAt = new Date(Date.now() - 5 * 60_000).toISOString(); // 5 min ago
89
+ const nodes = [
90
+ makeNodeRun({ id: 'n1', status: 'running', claimed_by: 'agent-1', claimed_at: staleAt }),
91
+ makeNodeRun({ id: 'n2', status: 'running', claimed_by: 'agent-1', claimed_at: recentAt }),
92
+ ];
93
+ const stale = findStaleNodeRuns(nodes, 15 * 60_000);
94
+ expect(stale).toHaveLength(1);
95
+ expect(stale[0].id).toBe('n1');
96
+ });
97
+ it('excludes non-running nodes', () => {
98
+ const oldAt = new Date(Date.now() - 60 * 60_000).toISOString();
99
+ const nodes = [
100
+ makeNodeRun({ id: 'n1', status: 'pending', claimed_at: oldAt }),
101
+ makeNodeRun({ id: 'n2', status: 'completed', claimed_at: oldAt }),
102
+ makeNodeRun({ id: 'n3', status: 'running', claimed_by: 'agent-1', claimed_at: oldAt }),
103
+ ];
104
+ const stale = findStaleNodeRuns(nodes);
105
+ expect(stale).toHaveLength(1);
106
+ expect(stale[0].id).toBe('n3');
107
+ });
108
+ it('returns empty array when no stale nodes', () => {
109
+ const recentAt = new Date(Date.now() - 1000).toISOString();
110
+ const nodes = [
111
+ makeNodeRun({ id: 'n1', status: 'running', claimed_by: 'agent-1', claimed_at: recentAt }),
112
+ ];
113
+ const stale = findStaleNodeRuns(nodes, 15 * 60_000);
114
+ expect(stale).toHaveLength(0);
115
+ });
116
+ it('uses DEFAULT_CLAIM_TIMEOUT_MS when not specified', () => {
117
+ const staleAt = new Date(Date.now() - 20 * 60_000).toISOString();
118
+ const nodes = [
119
+ makeNodeRun({ id: 'n1', status: 'running', claimed_by: 'agent-1', claimed_at: staleAt }),
120
+ ];
121
+ expect(findStaleNodeRuns(nodes)).toHaveLength(1);
122
+ });
123
+ });
124
+ //# sourceMappingURL=claim-manager.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim-manager.test.js","sourceRoot":"","sources":["../../src/workflow/claim-manager.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { EntityStore, ToolDefinition } from '@sprinterai/core';
2
+ import type { LanguageModel } from 'ai';
3
+ import type { ResolveAgentOptions } from '../agent/agent-resolver.js';
4
+ import type { NodeExecutorFn } from './node-executor.js';
5
+ /**
6
+ * Dependencies injected into the node executor factory.
7
+ *
8
+ * This keeps the executor decoupled from concrete AI SDK providers,
9
+ * store implementations, and tool registries.
10
+ */
11
+ export interface CreateNodeExecutorOptions {
12
+ /** Language model to use for agent tasks. */
13
+ model: LanguageModel;
14
+ /** Entity store for writing extracted values back. */
15
+ entityStore: EntityStore;
16
+ /** Options for resolving agents by slug. */
17
+ agentResolverOptions?: ResolveAgentOptions;
18
+ /** All available tools the agent may use (filtered per-node). */
19
+ availableTools?: ToolDefinition[];
20
+ /**
21
+ * Per-field extraction config.
22
+ * Keys are field names; values contain extraction instructions,
23
+ * custom tool slugs, schema properties, and max steps.
24
+ */
25
+ fieldExtractionConfigs?: Record<string, {
26
+ instructions?: string;
27
+ customTools?: string[];
28
+ schemaProperty?: Record<string, unknown>;
29
+ maxSteps?: number;
30
+ }>;
31
+ }
32
+ /**
33
+ * Create a NodeExecutorFn that bridges the workflow runner to the agent system.
34
+ *
35
+ * For `wait_human` nodes: returns success immediately (no-op).
36
+ * For `agent_task` nodes: resolves an agent, builds a submitValue tool,
37
+ * calls executeAgentGenerate, and writes the extracted value to the entity store.
38
+ */
39
+ export declare function createNodeExecutor(options: CreateNodeExecutorOptions): NodeExecutorFn;
40
+ //# sourceMappingURL=create-node-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-node-executor.d.ts","sourceRoot":"","sources":["../../src/workflow/create-node-executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEpE,OAAO,KAAK,EAAE,aAAa,EAAgB,MAAM,IAAI,CAAC;AAItD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAKnE,OAAO,KAAK,EAA6C,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAIjG;;;;;GAKG;AACH,MAAM,WAAW,yBAAyB;IACxC,6CAA6C;IAC7C,KAAK,EAAE,aAAa,CAAC;IACrB,sDAAsD;IACtD,WAAW,EAAE,WAAW,CAAC;IACzB,4CAA4C;IAC5C,oBAAoB,CAAC,EAAE,mBAAmB,CAAC;IAC3C,iEAAiE;IACjE,cAAc,CAAC,EAAE,cAAc,EAAE,CAAC;IAClC;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAC7B,MAAM,EACN;QACE,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CACF,CAAC;CACH;AAID;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,cAAc,CA0JrF"}
@@ -0,0 +1,234 @@
1
+ import { defineTool } from '@sprinterai/core';
2
+ import { z } from 'zod';
3
+ import { resolveAgent } from '../agent/agent-resolver.js';
4
+ import { executeAgentGenerate } from '../agent/execute-agent.js';
5
+ import { extractValueFromText, isEmptyFieldValue } from './field-recovery.js';
6
+ // ─── Factory ──────────────────────────────────────────────────
7
+ /**
8
+ * Create a NodeExecutorFn that bridges the workflow runner to the agent system.
9
+ *
10
+ * For `wait_human` nodes: returns success immediately (no-op).
11
+ * For `agent_task` nodes: resolves an agent, builds a submitValue tool,
12
+ * calls executeAgentGenerate, and writes the extracted value to the entity store.
13
+ */
14
+ export function createNodeExecutor(options) {
15
+ const { model, entityStore, agentResolverOptions, availableTools = [], fieldExtractionConfigs = {}, } = options;
16
+ return async (context) => {
17
+ const { node, entityId, entityContent, fieldOverrides } = context;
18
+ // ── wait_human: no-op ────────────────────────────────────
19
+ if (node.node_type === 'wait_human' || node.node_type === 'human_input') {
20
+ return { success: true, fieldsExtracted: [] };
21
+ }
22
+ // ── agent_task (and legacy extract_field) ────────────────
23
+ const fieldName = node.field_name;
24
+ if (!fieldName) {
25
+ return {
26
+ success: false,
27
+ fieldsExtracted: [],
28
+ error: `Node ${node.node_key} has no field_name assigned`,
29
+ };
30
+ }
31
+ try {
32
+ // 1. Resolve the agent
33
+ const agentSlug = node.assignee_agent_slug ?? 'assistant';
34
+ const agent = await resolveAgent(agentSlug, agentResolverOptions ?? {});
35
+ // 2. Build the submitValue tool — captures the extracted value
36
+ let submittedValue = undefined;
37
+ let submitCalled = false;
38
+ const fieldConfig = fieldExtractionConfigs[fieldName];
39
+ const schemaProperty = fieldConfig?.schemaProperty;
40
+ // Build a Zod schema for the submitValue tool based on the field schema
41
+ const valueSchema = buildValueSchema(schemaProperty);
42
+ const submitValueTool = defineTool({
43
+ slug: 'submitValue',
44
+ name: 'Submit Value',
45
+ description: `Submit the extracted value for the "${fieldName}" field. Call this tool with the value you have determined.`,
46
+ category: 'workflow',
47
+ icon: 'check',
48
+ inputSchema: z.object({
49
+ value: valueSchema.describe(`The extracted value for "${fieldName}"`),
50
+ }),
51
+ execute: async (input) => {
52
+ const typed = input;
53
+ submittedValue = typed.value;
54
+ submitCalled = true;
55
+ return { success: true, field: fieldName, value: typed.value };
56
+ },
57
+ });
58
+ // 3. Assemble tools: submitValue + optionally filtered available tools
59
+ const tools = [submitValueTool];
60
+ if (fieldConfig?.customTools && fieldConfig.customTools.length > 0) {
61
+ // Only include tools matching the field's customTools list
62
+ const customToolSlugs = new Set(fieldConfig.customTools);
63
+ for (const tool of availableTools) {
64
+ if (customToolSlugs.has(tool.slug)) {
65
+ tools.push(tool);
66
+ }
67
+ }
68
+ }
69
+ else {
70
+ // Include all available tools
71
+ tools.push(...availableTools);
72
+ }
73
+ // 4. Build system prompt sections
74
+ const systemSections = [
75
+ {
76
+ label: 'Role',
77
+ content: agent.systemPrompt,
78
+ priority: 100,
79
+ },
80
+ {
81
+ label: 'Field Context',
82
+ content: buildFieldContextPrompt(fieldName, schemaProperty),
83
+ priority: 80,
84
+ },
85
+ {
86
+ label: 'Task Instructions',
87
+ content: buildTaskInstructions(fieldName, node.instructions, fieldConfig?.instructions, fieldOverrides?.[fieldName]),
88
+ priority: 60,
89
+ },
90
+ ];
91
+ // 5. Build user message with entity content
92
+ const userMessage = buildUserMessage(fieldName, entityContent);
93
+ const messages = [{ role: 'user', content: userMessage }];
94
+ // 6. Call the agent
95
+ const maxSteps = fieldConfig?.maxSteps ?? 5;
96
+ const result = await executeAgentGenerate({
97
+ model,
98
+ systemSections,
99
+ tools,
100
+ messages,
101
+ maxSteps,
102
+ temperature: 0,
103
+ });
104
+ // 7. Determine the extracted value
105
+ let extractedValue;
106
+ if (submitCalled) {
107
+ // Agent called submitValue — use that value
108
+ extractedValue = submittedValue;
109
+ }
110
+ else {
111
+ // Fallback: extract from text response
112
+ extractedValue = extractValueFromText(result.text, schemaProperty);
113
+ }
114
+ // 8. Write to entity store if we have a value
115
+ if (!isEmptyFieldValue(extractedValue)) {
116
+ const updatedContent = { ...entityContent, [fieldName]: extractedValue };
117
+ await entityStore.updateEntity(entityId, {
118
+ content: updatedContent,
119
+ });
120
+ return {
121
+ success: true,
122
+ fieldsExtracted: [fieldName],
123
+ updatedContent: { [fieldName]: extractedValue },
124
+ };
125
+ }
126
+ // No value extracted — still succeed but with empty fields
127
+ return {
128
+ success: true,
129
+ fieldsExtracted: [],
130
+ };
131
+ }
132
+ catch (err) {
133
+ const errorMessage = err instanceof Error ? err.message : String(err);
134
+ return {
135
+ success: false,
136
+ fieldsExtracted: [],
137
+ error: `Failed to extract field "${fieldName}": ${errorMessage}`,
138
+ };
139
+ }
140
+ };
141
+ }
142
+ // ─── Helpers ──────────────────────────────────────────────────
143
+ /**
144
+ * Build a Zod schema for the submitValue tool's value parameter.
145
+ * Adapts to the field's JSON schema type when available.
146
+ */
147
+ function buildValueSchema(schemaProperty) {
148
+ if (!schemaProperty)
149
+ return z.unknown();
150
+ const type = schemaProperty.type;
151
+ switch (type) {
152
+ case 'string': {
153
+ const enumValues = schemaProperty.enum;
154
+ if (enumValues && enumValues.length > 0) {
155
+ return z.enum(enumValues);
156
+ }
157
+ return z.string();
158
+ }
159
+ case 'number':
160
+ case 'integer':
161
+ return z.number();
162
+ case 'boolean':
163
+ return z.boolean();
164
+ case 'array':
165
+ return z.array(z.unknown());
166
+ case 'object':
167
+ return z.record(z.unknown());
168
+ default:
169
+ return z.unknown();
170
+ }
171
+ }
172
+ /**
173
+ * Build the field context prompt section.
174
+ * Tells the agent what field it is extracting and any schema constraints.
175
+ */
176
+ function buildFieldContextPrompt(fieldName, schemaProperty) {
177
+ const parts = [`You are extracting a value for the field: "${fieldName}".`];
178
+ if (schemaProperty) {
179
+ const type = schemaProperty.type;
180
+ if (type) {
181
+ parts.push(`Expected type: ${type}`);
182
+ }
183
+ const enumValues = schemaProperty.enum;
184
+ if (enumValues && enumValues.length > 0) {
185
+ parts.push(`Allowed values: ${enumValues.join(', ')}`);
186
+ }
187
+ const title = schemaProperty.title;
188
+ if (title) {
189
+ parts.push(`Field description: ${title}`);
190
+ }
191
+ }
192
+ parts.push('', 'When you have determined the value, call the `submitValue` tool with the result.', 'If you cannot determine the value, respond with your best assessment and call submitValue anyway.');
193
+ return parts.join('\n');
194
+ }
195
+ /**
196
+ * Build the task instructions prompt from multiple sources.
197
+ * Priority: field override instructions > node instructions > extraction config instructions.
198
+ */
199
+ function buildTaskInstructions(fieldName, nodeInstructions, extractionInstructions, fieldOverride) {
200
+ const parts = [];
201
+ // Field override instructions take highest priority
202
+ if (fieldOverride?.instructions) {
203
+ parts.push(fieldOverride.instructions);
204
+ }
205
+ // Node instructions from the workflow definition
206
+ if (nodeInstructions) {
207
+ parts.push(nodeInstructions);
208
+ }
209
+ // Extraction config instructions (from entity type field config)
210
+ if (extractionInstructions && extractionInstructions !== nodeInstructions) {
211
+ parts.push(extractionInstructions);
212
+ }
213
+ if (parts.length === 0) {
214
+ parts.push(`Extract the value for the "${fieldName}" field from the provided entity data.`);
215
+ }
216
+ return parts.join('\n\n');
217
+ }
218
+ /**
219
+ * Build the user message containing the entity's current content.
220
+ * The agent uses this as context for extraction.
221
+ */
222
+ function buildUserMessage(fieldName, entityContent) {
223
+ const contentJson = JSON.stringify(entityContent, null, 2);
224
+ return [
225
+ `Extract the value for the "${fieldName}" field from the following entity data.`,
226
+ '',
227
+ '```json',
228
+ contentJson,
229
+ '```',
230
+ '',
231
+ 'Analyze the data above and call the `submitValue` tool with the extracted value.',
232
+ ].join('\n');
233
+ }
234
+ //# sourceMappingURL=create-node-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-node-executor.js","sourceRoot":"","sources":["../../src/workflow/create-node-executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Attempt to parse a structured value from an agent's text response.
3
+ * Used as a fallback when the agent completes without calling submitValue.
4
+ *
5
+ * Handles: JSON code blocks, raw JSON, enum matching, number/boolean extraction.
6
+ */
7
+ export declare function extractValueFromText(text: string, schemaProperty?: Record<string, unknown>): unknown;
8
+ /**
9
+ * Check if a field value is "empty" for workflow purposes.
10
+ */
11
+ export declare function isEmptyFieldValue(value: unknown): boolean;
12
+ //# sourceMappingURL=field-recovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-recovery.d.ts","sourceRoot":"","sources":["../../src/workflow/field-recovery.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvC,OAAO,CAoET;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAIzD"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Attempt to parse a structured value from an agent's text response.
3
+ * Used as a fallback when the agent completes without calling submitValue.
4
+ *
5
+ * Handles: JSON code blocks, raw JSON, enum matching, number/boolean extraction.
6
+ */
7
+ export function extractValueFromText(text, schemaProperty) {
8
+ const trimmed = text.trim();
9
+ // Try JSON code block first
10
+ const jsonBlockMatch = trimmed.match(/```(?:json)?\s*\n?([\s\S]*?)\n?```/);
11
+ if (jsonBlockMatch) {
12
+ try {
13
+ return JSON.parse(jsonBlockMatch[1].trim());
14
+ }
15
+ catch {
16
+ // Fall through
17
+ }
18
+ }
19
+ // Try parsing whole response as JSON
20
+ try {
21
+ const parsed = JSON.parse(trimmed);
22
+ if (parsed !== null && typeof parsed !== 'undefined') {
23
+ if (typeof parsed === 'object' &&
24
+ !Array.isArray(parsed) &&
25
+ schemaProperty?.type !== 'object') {
26
+ const wrapper = parsed;
27
+ const scalarKey = ['value', 'result', 'answer', 'response'].find((k) => k in wrapper);
28
+ if (scalarKey !== undefined)
29
+ return wrapper[scalarKey];
30
+ }
31
+ else {
32
+ return parsed;
33
+ }
34
+ }
35
+ }
36
+ catch {
37
+ // Not JSON
38
+ }
39
+ // Enum matching
40
+ const enumValues = schemaProperty?.enum;
41
+ if (enumValues && enumValues.length > 0) {
42
+ const lowerText = trimmed.toLowerCase();
43
+ for (const enumVal of enumValues) {
44
+ if (lowerText.includes(enumVal.toLowerCase()))
45
+ return enumVal;
46
+ }
47
+ }
48
+ // Number extraction
49
+ const schemaType = schemaProperty?.type;
50
+ if (schemaType === 'number' || schemaType === 'integer') {
51
+ const numberMatch = trimmed.match(/-?\d[\d,]*\.?\d*/);
52
+ if (numberMatch) {
53
+ const num = Number(numberMatch[0].replace(/,/g, ''));
54
+ if (!isNaN(num))
55
+ return num;
56
+ }
57
+ }
58
+ // Boolean extraction
59
+ if (schemaType === 'boolean') {
60
+ const lower = trimmed.toLowerCase();
61
+ if (/\b(false|no)\b/.test(lower))
62
+ return false;
63
+ if (/\b(true|yes)\b/.test(lower))
64
+ return true;
65
+ }
66
+ // Short text — use as string value
67
+ if (trimmed.length <= 2000)
68
+ return trimmed;
69
+ // Long text — try last line
70
+ const lines = trimmed.split('\n').filter((l) => l.trim());
71
+ const lastLine = lines[lines.length - 1]?.trim();
72
+ if (lastLine && lastLine.length <= 500)
73
+ return lastLine;
74
+ return undefined;
75
+ }
76
+ /**
77
+ * Check if a field value is "empty" for workflow purposes.
78
+ */
79
+ export function isEmptyFieldValue(value) {
80
+ if (value === null || value === undefined || value === '')
81
+ return true;
82
+ if (Array.isArray(value) && value.length === 0)
83
+ return true;
84
+ return false;
85
+ }
86
+ //# sourceMappingURL=field-recovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-recovery.js","sourceRoot":"","sources":["../../src/workflow/field-recovery.ts"],"names":[],"mappings":"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"}
@@ -6,4 +6,12 @@ export type { NodeStatusUpdate } from './evaluate-nodes.js';
6
6
  export { runWorkflow } from './workflow-runner.js';
7
7
  export type { RunWorkflowOptions, RunWorkflowResult } from './workflow-runner.js';
8
8
  export type { NodeExecutionContext, NodeExecutionResult, NodeExecutorFn } from './node-executor.js';
9
+ export { extractValueFromText, isEmptyFieldValue } from './field-recovery.js';
10
+ export { createNodeExecutor } from './create-node-executor.js';
11
+ export type { CreateNodeExecutorOptions } from './create-node-executor.js';
12
+ export { runEntityWorkflow } from './run-entity-workflow.js';
13
+ export type { RunEntityWorkflowOptions } from './run-entity-workflow.js';
14
+ export { getWorkflowRunHistory, getActiveWorkflowRuns, getRecentWorkflowRuns, getWorkflowActivitySummary, } from './run-queries.js';
15
+ export type { WorkflowActivitySummary } from './run-queries.js';
16
+ export { expireStaleWorkflowNodeClaims, hasActiveClaims, findStaleNodeRuns, DEFAULT_CLAIM_TIMEOUT_MS, } from './claim-manager.js';
9
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/workflow/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACzE,YAAY,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/workflow/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACzE,YAAY,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjG,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,YAAY,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAGtE,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAG7D,OAAO,EACL,6BAA6B,EAC7B,eAAe,EACf,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,iBAAiB,CAAC"}
@@ -2,4 +2,11 @@ export { compileEntityWorkflowDefinition, getWorkflowLayers } from './compile.js
2
2
  export { computeWorkflowProgress, deriveWorkflowStatus } from './status.js';
3
3
  export { evaluateNodeStatuses } from './evaluate-nodes.js';
4
4
  export { runWorkflow } from './workflow-runner.js';
5
+ export { extractValueFromText, isEmptyFieldValue } from './field-recovery.js';
6
+ export { createNodeExecutor } from './create-node-executor.js';
7
+ export { runEntityWorkflow } from './run-entity-workflow.js';
8
+ // ─── Run Queries ────────────────────────────────────────────
9
+ export { getWorkflowRunHistory, getActiveWorkflowRuns, getRecentWorkflowRuns, getWorkflowActivitySummary, } from './run-queries.js';
10
+ // ─── Claim Manager ──────────────────────────────────────────
11
+ export { expireStaleWorkflowNodeClaims, hasActiveClaims, findStaleNodeRuns, DEFAULT_CLAIM_TIMEOUT_MS, } from './claim-manager.js';
5
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workflow/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workflow/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG1D,+DAA+D;AAC/D,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,eAAe,CAAC;AAGvB,+DAA+D;AAC/D,OAAO,EACL,6BAA6B,EAC7B,eAAe,EACf,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,53 @@
1
+ import type { EntityStore, EntityTypeRecord, ToolDefinition, WorkflowFieldOverride, WorkflowRunStore, WorkflowTriggerType, EventBus } from '@sprinterai/core';
2
+ import type { LanguageModel } from 'ai';
3
+ import type { ResolveAgentOptions } from '../agent/agent-resolver.js';
4
+ import type { RunWorkflowResult } from './workflow-runner.js';
5
+ /** Options for the high-level entity workflow convenience wrapper. */
6
+ export interface RunEntityWorkflowOptions {
7
+ /** Entity being processed. */
8
+ entityId: string;
9
+ /** Tenant scope. */
10
+ tenantId: string;
11
+ /** The entity type record (provides field configs, json_schema, etc.). */
12
+ entityType: EntityTypeRecord;
13
+ /** Current entity field values. */
14
+ entityContent: Record<string, unknown>;
15
+ /** Store for persisting workflow and node run state. */
16
+ workflowRunStore: WorkflowRunStore;
17
+ /** Entity store for writing extracted values back. */
18
+ entityStore: EntityStore;
19
+ /** Function to resolve a model ID to a LanguageModel instance. */
20
+ resolveModel: (modelId?: string) => LanguageModel;
21
+ /** Options for resolving agents by slug. */
22
+ agentResolverOptions?: ResolveAgentOptions;
23
+ /** All available tools the agent may use. */
24
+ allTools?: ToolDefinition[];
25
+ /** Optional event bus for emitting workflow events. */
26
+ eventBus?: EventBus;
27
+ /** Subset of fields to process. If empty/undefined, process all. */
28
+ fields?: string[];
29
+ /** Force re-extraction even if fields are already populated. */
30
+ force?: boolean;
31
+ /** How this workflow was triggered. */
32
+ triggerType?: WorkflowTriggerType;
33
+ /** Who triggered this workflow (userId, agentSlug, etc.). */
34
+ triggeredBy?: string;
35
+ /** Per-field instruction overrides. */
36
+ fieldOverrides?: Record<string, WorkflowFieldOverride>;
37
+ /** Max agent loop iterations per field (default: 5). */
38
+ maxSteps?: number;
39
+ }
40
+ /**
41
+ * Run an entity extraction workflow end-to-end.
42
+ *
43
+ * This is a high-level convenience wrapper that:
44
+ * 1. Reads field configs from the entity type record
45
+ * 2. Gets schema properties from the entity type's json_schema
46
+ * 3. Compiles the workflow definition via compileEntityWorkflowDefinition()
47
+ * 4. Creates a node executor via createNodeExecutor()
48
+ * 5. Calls runWorkflow() with everything assembled
49
+ *
50
+ * Consumers call one function instead of assembling 5 pieces.
51
+ */
52
+ export declare function runEntityWorkflow(options: RunEntityWorkflowOptions): Promise<RunWorkflowResult>;
53
+ //# sourceMappingURL=run-entity-workflow.d.ts.map