@mastra/factory 0.24.0-alpha.1 → 0.24.0-alpha.11

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 (389) hide show
  1. package/README.md +106 -4
  2. package/dist/auth.d.ts +14 -0
  3. package/dist/auth.d.ts.map +1 -1
  4. package/dist/auth.js +45 -9
  5. package/dist/auth.js.map +1 -1
  6. package/dist/boards/review.d.ts.map +1 -1
  7. package/dist/boards/review.js +21 -1
  8. package/dist/boards/review.js.map +1 -1
  9. package/dist/boards/work-transition-policy.d.ts.map +1 -1
  10. package/dist/boards/work-transition-policy.js +12 -1
  11. package/dist/boards/work-transition-policy.js.map +1 -1
  12. package/dist/boards/work.d.ts +14 -0
  13. package/dist/boards/work.d.ts.map +1 -1
  14. package/dist/boards/work.js +70 -7
  15. package/dist/boards/work.js.map +1 -1
  16. package/dist/capabilities/version-control.d.ts +26 -0
  17. package/dist/capabilities/version-control.d.ts.map +1 -1
  18. package/dist/factory.d.ts +8 -0
  19. package/dist/factory.d.ts.map +1 -1
  20. package/dist/factory.js +355 -27
  21. package/dist/factory.js.map +1 -1
  22. package/dist/integrations/base.d.ts +1 -1
  23. package/dist/integrations/base.d.ts.map +1 -1
  24. package/dist/integrations/github/default-rules.d.ts.map +1 -1
  25. package/dist/integrations/github/default-rules.js +1 -16
  26. package/dist/integrations/github/default-rules.js.map +1 -1
  27. package/dist/integrations/github/integration.d.ts.map +1 -1
  28. package/dist/integrations/github/integration.js +37 -1
  29. package/dist/integrations/github/integration.js.map +1 -1
  30. package/dist/integrations/github/routes.d.ts +1 -1
  31. package/dist/integrations/github/routes.d.ts.map +1 -1
  32. package/dist/integrations/github/routes.js +19 -11
  33. package/dist/integrations/github/routes.js.map +1 -1
  34. package/dist/integrations/github/rules.d.ts.map +1 -1
  35. package/dist/integrations/github/rules.js +76 -29
  36. package/dist/integrations/github/rules.js.map +1 -1
  37. package/dist/integrations/github/sandbox-release.d.ts +15 -3
  38. package/dist/integrations/github/sandbox-release.d.ts.map +1 -1
  39. package/dist/integrations/github/sandbox-release.js +20 -3
  40. package/dist/integrations/github/sandbox-release.js.map +1 -1
  41. package/dist/integrations/github/sandbox.d.ts +2 -3
  42. package/dist/integrations/github/sandbox.d.ts.map +1 -1
  43. package/dist/integrations/github/sandbox.js +78 -7
  44. package/dist/integrations/github/sandbox.js.map +1 -1
  45. package/dist/integrations/github/session-subscriptions.d.ts.map +1 -1
  46. package/dist/integrations/github/session-subscriptions.js +1 -2
  47. package/dist/integrations/github/session-subscriptions.js.map +1 -1
  48. package/dist/integrations/github/subscriptions.d.ts +7 -4
  49. package/dist/integrations/github/subscriptions.d.ts.map +1 -1
  50. package/dist/integrations/github/subscriptions.js +5 -5
  51. package/dist/integrations/github/subscriptions.js.map +1 -1
  52. package/dist/integrations/github/webhook.d.ts +4 -2
  53. package/dist/integrations/github/webhook.d.ts.map +1 -1
  54. package/dist/integrations/github/webhook.js +59 -36
  55. package/dist/integrations/github/webhook.js.map +1 -1
  56. package/dist/integrations/gitlab/api.d.ts +16 -1
  57. package/dist/integrations/gitlab/api.d.ts.map +1 -1
  58. package/dist/integrations/gitlab/api.js +9 -0
  59. package/dist/integrations/gitlab/api.js.map +1 -1
  60. package/dist/integrations/gitlab/routes.d.ts.map +1 -1
  61. package/dist/integrations/gitlab/routes.js +10 -6
  62. package/dist/integrations/gitlab/routes.js.map +1 -1
  63. package/dist/integrations/gitlab/rules.d.ts.map +1 -1
  64. package/dist/integrations/gitlab/rules.js +28 -21
  65. package/dist/integrations/gitlab/rules.js.map +1 -1
  66. package/dist/integrations/gitlab/session-subscriptions.d.ts.map +1 -1
  67. package/dist/integrations/gitlab/session-subscriptions.js +1 -2
  68. package/dist/integrations/gitlab/session-subscriptions.js.map +1 -1
  69. package/dist/integrations/gitlab/subscriptions.d.ts +7 -4
  70. package/dist/integrations/gitlab/subscriptions.d.ts.map +1 -1
  71. package/dist/integrations/gitlab/subscriptions.js +5 -5
  72. package/dist/integrations/gitlab/subscriptions.js.map +1 -1
  73. package/dist/integrations/gitlab/version-control.d.ts.map +1 -1
  74. package/dist/integrations/gitlab/version-control.js +37 -3
  75. package/dist/integrations/gitlab/version-control.js.map +1 -1
  76. package/dist/integrations/incidentio/intake.d.ts +1 -1
  77. package/dist/integrations/incidentio/intake.d.ts.map +1 -1
  78. package/dist/integrations/incidentio/intake.js.map +1 -1
  79. package/dist/integrations/linear/agent-tools.d.ts.map +1 -1
  80. package/dist/integrations/linear/agent-tools.js.map +1 -1
  81. package/dist/integrations/platform/connect/routes.d.ts +1 -1
  82. package/dist/integrations/platform/connect/routes.d.ts.map +1 -1
  83. package/dist/integrations/platform/connect/routes.js.map +1 -1
  84. package/dist/integrations/platform/github/integration.d.ts.map +1 -1
  85. package/dist/integrations/platform/github/integration.js +27 -1
  86. package/dist/integrations/platform/github/integration.js.map +1 -1
  87. package/dist/integrations/platform/incidentio/integration.d.ts +1 -1
  88. package/dist/integrations/platform/incidentio/integration.d.ts.map +1 -1
  89. package/dist/integrations/platform/incidentio/integration.js.map +1 -1
  90. package/dist/integrations/platform/jira/integration.d.ts +1 -1
  91. package/dist/integrations/platform/jira/integration.d.ts.map +1 -1
  92. package/dist/integrations/platform/jira/integration.js.map +1 -1
  93. package/dist/integrations/platform/linear/event-worker.d.ts +1 -1
  94. package/dist/integrations/platform/linear/event-worker.d.ts.map +1 -1
  95. package/dist/integrations/platform/linear/event-worker.js.map +1 -1
  96. package/dist/integrations/slack/integration.d.ts.map +1 -1
  97. package/dist/integrations/slack/integration.js +33 -6
  98. package/dist/integrations/slack/integration.js.map +1 -1
  99. package/dist/integrations/slack/slack.d.ts +16 -5
  100. package/dist/integrations/slack/slack.d.ts.map +1 -1
  101. package/dist/integrations/slack/slack.js +137 -64
  102. package/dist/integrations/slack/slack.js.map +1 -1
  103. package/dist/integrations/subscription-session.d.ts +14 -0
  104. package/dist/integrations/subscription-session.d.ts.map +1 -1
  105. package/dist/integrations/subscription-session.js +30 -16
  106. package/dist/integrations/subscription-session.js.map +1 -1
  107. package/dist/mcp/disconnect.d.ts +10 -0
  108. package/dist/mcp/disconnect.d.ts.map +1 -0
  109. package/dist/mcp/disconnect.js +44 -0
  110. package/dist/mcp/disconnect.js.map +1 -0
  111. package/dist/mcp/routes.d.ts +46 -0
  112. package/dist/mcp/routes.d.ts.map +1 -0
  113. package/dist/mcp/routes.js +243 -0
  114. package/dist/mcp/routes.js.map +1 -0
  115. package/dist/provider-display-name.d.ts +2 -0
  116. package/dist/provider-display-name.d.ts.map +1 -0
  117. package/dist/provider-display-name.js +16 -0
  118. package/dist/provider-display-name.js.map +1 -0
  119. package/dist/review-verdict.d.ts +11 -0
  120. package/dist/review-verdict.d.ts.map +1 -1
  121. package/dist/review-verdict.js +16 -1
  122. package/dist/review-verdict.js.map +1 -1
  123. package/dist/routes/attention-activity.d.ts.map +1 -1
  124. package/dist/routes/attention-activity.js +5 -2
  125. package/dist/routes/attention-activity.js.map +1 -1
  126. package/dist/routes/attention-providers.d.ts +0 -1
  127. package/dist/routes/attention-providers.d.ts.map +1 -1
  128. package/dist/routes/attention-providers.js +5 -6
  129. package/dist/routes/attention-providers.js.map +1 -1
  130. package/dist/routes/config.d.ts +44 -5
  131. package/dist/routes/config.d.ts.map +1 -1
  132. package/dist/routes/config.js +181 -58
  133. package/dist/routes/config.js.map +1 -1
  134. package/dist/routes/contracts.d.ts +4 -0
  135. package/dist/routes/contracts.d.ts.map +1 -1
  136. package/dist/routes/contracts.js +3 -1
  137. package/dist/routes/contracts.js.map +1 -1
  138. package/dist/routes/custom-provider-source.d.ts +8 -0
  139. package/dist/routes/custom-provider-source.d.ts.map +1 -1
  140. package/dist/routes/custom-provider-source.js +22 -1
  141. package/dist/routes/custom-provider-source.js.map +1 -1
  142. package/dist/routes/oauth.js +1 -1
  143. package/dist/routes/oauth.js.map +1 -1
  144. package/dist/routes/projects.d.ts +1 -1
  145. package/dist/routes/projects.d.ts.map +1 -1
  146. package/dist/routes/projects.js +1 -1
  147. package/dist/routes/projects.js.map +1 -1
  148. package/dist/routes/provider-credentials.d.ts +7 -2
  149. package/dist/routes/provider-credentials.d.ts.map +1 -1
  150. package/dist/routes/provider-credentials.js +30 -8
  151. package/dist/routes/provider-credentials.js.map +1 -1
  152. package/dist/routes/skills.d.ts +2 -4
  153. package/dist/routes/skills.d.ts.map +1 -1
  154. package/dist/routes/skills.js +19 -65
  155. package/dist/routes/skills.js.map +1 -1
  156. package/dist/routes/source-control-sessions.d.ts +9 -1
  157. package/dist/routes/source-control-sessions.d.ts.map +1 -1
  158. package/dist/routes/source-control-sessions.js +131 -7
  159. package/dist/routes/source-control-sessions.js.map +1 -1
  160. package/dist/routes/surface.d.ts +3 -2
  161. package/dist/routes/surface.d.ts.map +1 -1
  162. package/dist/routes/surface.js +7 -3
  163. package/dist/routes/surface.js.map +1 -1
  164. package/dist/routes/work-items.d.ts.map +1 -1
  165. package/dist/routes/work-items.js +60 -120
  166. package/dist/routes/work-items.js.map +1 -1
  167. package/dist/rules/binding-context.js +7 -7
  168. package/dist/rules/binding-context.js.map +1 -1
  169. package/dist/rules/dispatch-errors.d.ts.map +1 -1
  170. package/dist/rules/dispatch-errors.js +12 -0
  171. package/dist/rules/dispatch-errors.js.map +1 -1
  172. package/dist/rules/dispatcher.d.ts +8 -1
  173. package/dist/rules/dispatcher.d.ts.map +1 -1
  174. package/dist/rules/dispatcher.js +117 -12
  175. package/dist/rules/dispatcher.js.map +1 -1
  176. package/dist/rules/processor.d.ts.map +1 -1
  177. package/dist/rules/processor.js +2 -1
  178. package/dist/rules/processor.js.map +1 -1
  179. package/dist/rules/start-coordinator.d.ts +4 -0
  180. package/dist/rules/start-coordinator.d.ts.map +1 -1
  181. package/dist/rules/start-coordinator.js +36 -4
  182. package/dist/rules/start-coordinator.js.map +1 -1
  183. package/dist/rules/tools.d.ts.map +1 -1
  184. package/dist/rules/tools.js +82 -3
  185. package/dist/rules/tools.js.map +1 -1
  186. package/dist/rules/transition-service.d.ts +17 -0
  187. package/dist/rules/transition-service.d.ts.map +1 -1
  188. package/dist/rules/transition-service.js +25 -0
  189. package/dist/rules/transition-service.js.map +1 -1
  190. package/dist/rules/types.d.ts +2 -4
  191. package/dist/rules/types.d.ts.map +1 -1
  192. package/dist/rules/types.js +1 -4
  193. package/dist/rules/types.js.map +1 -1
  194. package/dist/sandbox/local-factory-sandbox.d.ts.map +1 -1
  195. package/dist/sandbox/local-factory-sandbox.js +1 -0
  196. package/dist/sandbox/local-factory-sandbox.js.map +1 -1
  197. package/dist/sandbox/session-retirement.d.ts +27 -3
  198. package/dist/sandbox/session-retirement.d.ts.map +1 -1
  199. package/dist/sandbox/session-retirement.js +158 -20
  200. package/dist/sandbox/session-retirement.js.map +1 -1
  201. package/dist/secret-encryption.d.ts.map +1 -1
  202. package/dist/secret-encryption.js +65 -25
  203. package/dist/secret-encryption.js.map +1 -1
  204. package/dist/session/channel-reply-processor.d.ts +36 -0
  205. package/dist/session/channel-reply-processor.d.ts.map +1 -0
  206. package/dist/session/channel-reply-processor.js +46 -0
  207. package/dist/session/channel-reply-processor.js.map +1 -0
  208. package/dist/session/channel-session-link-processor.d.ts +39 -0
  209. package/dist/session/channel-session-link-processor.d.ts.map +1 -0
  210. package/dist/session/channel-session-link-processor.js +100 -0
  211. package/dist/session/channel-session-link-processor.js.map +1 -0
  212. package/dist/session/credential-policy.d.ts +1 -1
  213. package/dist/session/credential-policy.d.ts.map +1 -1
  214. package/dist/session/credential-policy.js +7 -6
  215. package/dist/session/credential-policy.js.map +1 -1
  216. package/dist/session/default-model-hydration.d.ts +1 -0
  217. package/dist/session/default-model-hydration.d.ts.map +1 -1
  218. package/dist/session/default-model-hydration.js +3 -2
  219. package/dist/session/default-model-hydration.js.map +1 -1
  220. package/dist/session/environment-state-processor.js +1 -1
  221. package/dist/session/environment-state-processor.js.map +1 -1
  222. package/dist/session/factory-session.d.ts +19 -1
  223. package/dist/session/factory-session.d.ts.map +1 -1
  224. package/dist/session/factory-session.js +5 -2
  225. package/dist/session/factory-session.js.map +1 -1
  226. package/dist/session/filesystem-capture.d.ts +3 -3
  227. package/dist/session/filesystem-capture.d.ts.map +1 -1
  228. package/dist/session/filesystem-capture.js +16 -17
  229. package/dist/session/filesystem-capture.js.map +1 -1
  230. package/dist/session/first-exec-capture.d.ts +1 -1
  231. package/dist/session/first-exec-capture.d.ts.map +1 -1
  232. package/dist/session/first-exec-capture.js +1 -1
  233. package/dist/session/first-exec-capture.js.map +1 -1
  234. package/dist/session/first-message-capture.d.ts +1 -1
  235. package/dist/session/first-message-capture.d.ts.map +1 -1
  236. package/dist/session/first-message-capture.js +1 -1
  237. package/dist/session/first-message-capture.js.map +1 -1
  238. package/dist/session/live-sessions.d.ts +1 -1
  239. package/dist/session/live-sessions.js +1 -1
  240. package/dist/session/live-sessions.js.map +1 -1
  241. package/dist/session/memory-settings-hydration.d.ts +1 -1
  242. package/dist/session/memory-settings-hydration.d.ts.map +1 -1
  243. package/dist/session/memory-settings-hydration.js +1 -1
  244. package/dist/session/memory-settings-hydration.js.map +1 -1
  245. package/dist/session/reply-credential-processor.d.ts +15 -0
  246. package/dist/session/reply-credential-processor.d.ts.map +1 -0
  247. package/dist/session/reply-credential-processor.js +38 -0
  248. package/dist/session/reply-credential-processor.js.map +1 -0
  249. package/dist/session/resource-migration.d.ts +87 -0
  250. package/dist/session/resource-migration.d.ts.map +1 -0
  251. package/dist/session/resource-migration.js +163 -0
  252. package/dist/session/resource-migration.js.map +1 -0
  253. package/dist/session/run-audit.d.ts +24 -0
  254. package/dist/session/run-audit.d.ts.map +1 -1
  255. package/dist/session/run-audit.js +93 -7
  256. package/dist/session/run-audit.js.map +1 -1
  257. package/dist/session/session-threads.d.ts +49 -0
  258. package/dist/session/session-threads.d.ts.map +1 -0
  259. package/dist/session/session-threads.js +70 -0
  260. package/dist/session/session-threads.js.map +1 -0
  261. package/dist/session/source-control-tools.d.ts +19 -1
  262. package/dist/session/source-control-tools.d.ts.map +1 -1
  263. package/dist/session/source-control-tools.js +78 -11
  264. package/dist/session/source-control-tools.js.map +1 -1
  265. package/dist/session/thinking-default.d.ts.map +1 -1
  266. package/dist/session/thinking-default.js +3 -4
  267. package/dist/session/thinking-default.js.map +1 -1
  268. package/dist/session/thread-session-stamp.d.ts +21 -0
  269. package/dist/session/thread-session-stamp.d.ts.map +1 -0
  270. package/dist/session/thread-session-stamp.js +20 -0
  271. package/dist/session/thread-session-stamp.js.map +1 -0
  272. package/dist/session/thread-title-mirror.d.ts +1 -1
  273. package/dist/session/thread-title-mirror.d.ts.map +1 -1
  274. package/dist/session/thread-title-mirror.js +1 -1
  275. package/dist/session/thread-title-mirror.js.map +1 -1
  276. package/dist/session/work-item-repository.d.ts +1 -1
  277. package/dist/session/work-item-repository.d.ts.map +1 -1
  278. package/dist/session/work-item-repository.js.map +1 -1
  279. package/dist/skills/service.d.ts +6 -8
  280. package/dist/skills/service.d.ts.map +1 -1
  281. package/dist/skills/service.js +3 -3
  282. package/dist/skills/service.js.map +1 -1
  283. package/dist/storage/domains/audit/agent-audit.d.ts.map +1 -1
  284. package/dist/storage/domains/audit/agent-audit.js +2 -2
  285. package/dist/storage/domains/audit/agent-audit.js.map +1 -1
  286. package/dist/storage/domains/audit/domain.js +1 -1
  287. package/dist/storage/domains/filesystem/base.d.ts +4 -0
  288. package/dist/storage/domains/filesystem/base.d.ts.map +1 -1
  289. package/dist/storage/domains/filesystem/base.js +5 -0
  290. package/dist/storage/domains/filesystem/base.js.map +1 -1
  291. package/dist/storage/domains/integrations/base.d.ts +8 -0
  292. package/dist/storage/domains/integrations/base.d.ts.map +1 -1
  293. package/dist/storage/domains/integrations/base.js +7 -0
  294. package/dist/storage/domains/integrations/base.js.map +1 -1
  295. package/dist/storage/domains/projects/base.d.ts +6 -0
  296. package/dist/storage/domains/projects/base.d.ts.map +1 -1
  297. package/dist/storage/domains/projects/base.js +12 -0
  298. package/dist/storage/domains/projects/base.js.map +1 -1
  299. package/dist/storage/domains/source-control/base.d.ts +28 -0
  300. package/dist/storage/domains/source-control/base.d.ts.map +1 -1
  301. package/dist/storage/domains/source-control/base.js +48 -0
  302. package/dist/storage/domains/source-control/base.js.map +1 -1
  303. package/dist/storage/domains/source-control/inmemory.d.ts +8 -0
  304. package/dist/storage/domains/source-control/inmemory.d.ts.map +1 -1
  305. package/dist/storage/domains/source-control/inmemory.js +13 -1
  306. package/dist/storage/domains/source-control/inmemory.js.map +1 -1
  307. package/dist/storage/domains/work-items/base.d.ts +79 -7
  308. package/dist/storage/domains/work-items/base.d.ts.map +1 -1
  309. package/dist/storage/domains/work-items/base.js +172 -30
  310. package/dist/storage/domains/work-items/base.js.map +1 -1
  311. package/dist/timing.d.ts +23 -0
  312. package/dist/timing.d.ts.map +1 -1
  313. package/dist/timing.js +85 -6
  314. package/dist/timing.js.map +1 -1
  315. package/dist/tools/annotations.d.ts +7 -0
  316. package/dist/tools/annotations.d.ts.map +1 -0
  317. package/dist/tools/annotations.js +102 -0
  318. package/dist/tools/annotations.js.map +1 -0
  319. package/dist/tools/approval-tools.d.ts +15 -0
  320. package/dist/tools/approval-tools.d.ts.map +1 -0
  321. package/dist/tools/approval-tools.js +79 -0
  322. package/dist/tools/approval-tools.js.map +1 -0
  323. package/dist/tools/deliver.d.ts +71 -0
  324. package/dist/tools/deliver.d.ts.map +1 -0
  325. package/dist/tools/deliver.js +129 -0
  326. package/dist/tools/deliver.js.map +1 -0
  327. package/dist/tools/index.d.ts +30 -0
  328. package/dist/tools/index.d.ts.map +1 -0
  329. package/dist/tools/index.js +36 -0
  330. package/dist/tools/index.js.map +1 -0
  331. package/dist/tools/messaging-tools.d.ts +28 -0
  332. package/dist/tools/messaging-tools.d.ts.map +1 -0
  333. package/dist/tools/messaging-tools.js +396 -0
  334. package/dist/tools/messaging-tools.js.map +1 -0
  335. package/dist/tools/permissions.d.ts +31 -0
  336. package/dist/tools/permissions.d.ts.map +1 -0
  337. package/dist/tools/permissions.js +48 -0
  338. package/dist/tools/permissions.js.map +1 -0
  339. package/dist/tools/read-tools.d.ts +30 -0
  340. package/dist/tools/read-tools.d.ts.map +1 -0
  341. package/dist/tools/read-tools.js +293 -0
  342. package/dist/tools/read-tools.js.map +1 -0
  343. package/dist/tools/reports.d.ts +174 -0
  344. package/dist/tools/reports.d.ts.map +1 -0
  345. package/dist/tools/reports.js +380 -0
  346. package/dist/tools/reports.js.map +1 -0
  347. package/dist/tools/run-watch.d.ts +46 -0
  348. package/dist/tools/run-watch.d.ts.map +1 -0
  349. package/dist/tools/run-watch.js +102 -0
  350. package/dist/tools/run-watch.js.map +1 -0
  351. package/dist/tools/scope.d.ts +54 -0
  352. package/dist/tools/scope.d.ts.map +1 -0
  353. package/dist/tools/scope.js +87 -0
  354. package/dist/tools/scope.js.map +1 -0
  355. package/dist/tools/session-tools.d.ts +43 -0
  356. package/dist/tools/session-tools.d.ts.map +1 -0
  357. package/dist/tools/session-tools.js +410 -0
  358. package/dist/tools/session-tools.js.map +1 -0
  359. package/dist/tools/sessions-state-processor.d.ts +41 -0
  360. package/dist/tools/sessions-state-processor.d.ts.map +1 -0
  361. package/dist/tools/sessions-state-processor.js +190 -0
  362. package/dist/tools/sessions-state-processor.js.map +1 -0
  363. package/dist/tools/side-sessions.d.ts +53 -0
  364. package/dist/tools/side-sessions.d.ts.map +1 -0
  365. package/dist/tools/side-sessions.js +83 -0
  366. package/dist/tools/side-sessions.js.map +1 -0
  367. package/dist/tools/work-item-tools.d.ts +28 -0
  368. package/dist/tools/work-item-tools.d.ts.map +1 -0
  369. package/dist/tools/work-item-tools.js +342 -0
  370. package/dist/tools/work-item-tools.js.map +1 -0
  371. package/dist/work-items/create-work-item.d.ts +55 -0
  372. package/dist/work-items/create-work-item.d.ts.map +1 -0
  373. package/dist/work-items/create-work-item.js +101 -0
  374. package/dist/work-items/create-work-item.js.map +1 -0
  375. package/dist/work-items/decision-actions.d.ts +42 -0
  376. package/dist/work-items/decision-actions.d.ts.map +1 -0
  377. package/dist/work-items/decision-actions.js +70 -0
  378. package/dist/work-items/decision-actions.js.map +1 -0
  379. package/dist/workspace.d.ts +1 -1
  380. package/dist/workspace.d.ts.map +1 -1
  381. package/dist/workspace.js +15 -7
  382. package/dist/workspace.js.map +1 -1
  383. package/factory-skills/factory-gitlab-rereview/SKILL.md +1 -1
  384. package/factory-skills/factory-gitlab-review/SKILL.md +1 -1
  385. package/factory-skills/factory-plan/SKILL.md +4 -4
  386. package/factory-skills/factory-rereview/SKILL.md +3 -1
  387. package/factory-skills/factory-review/SKILL.md +3 -1
  388. package/factory-skills/factory-self-review/SKILL.md +46 -0
  389. package/package.json +14 -14
@@ -61,6 +61,9 @@ const FACTORY_DISPATCH_FAILURE_CODES = [
61
61
  "repository_cli_missing",
62
62
  "repository_pr_failed",
63
63
  "run_configuration_invalid",
64
+ "run_credentials_unavailable",
65
+ "run_user_unauthenticated",
66
+ "run_failed",
64
67
  "unknown"
65
68
  ];
66
69
  /** Written until a pause stopped counting as a failure; stored rows still read through them. */
@@ -224,6 +227,47 @@ const WORK_ITEMS_SCHEMA = {
224
227
  }
225
228
  ]
226
229
  };
230
+ const FACTORY_WORK_ITEM_SUBSCRIPTIONS_SCHEMA = {
231
+ name: "factory_work_item_subscriptions",
232
+ columns: {
233
+ id: { type: "uuid-pk" },
234
+ org_id: { type: "text" },
235
+ factory_project_id: { type: "text" },
236
+ work_item_id: { type: "text" },
237
+ session_id: { type: "text" },
238
+ thread_id: { type: "text" },
239
+ resource_id: { type: "text" },
240
+ user_id: { type: "text" },
241
+ reason: { type: "text" },
242
+ created_at: { type: "timestamp" }
243
+ },
244
+ uniqueIndexes: [{
245
+ name: "factory_work_item_subscriptions_item_session_unique",
246
+ columns: ["work_item_id", "session_id"]
247
+ }],
248
+ indexes: [{
249
+ name: "factory_work_item_subscriptions_session_idx",
250
+ columns: [
251
+ "org_id",
252
+ "factory_project_id",
253
+ "session_id"
254
+ ]
255
+ }]
256
+ };
257
+ function toWorkItemSubscription(row) {
258
+ return {
259
+ id: row.id,
260
+ orgId: row.org_id,
261
+ factoryProjectId: String(row.factory_project_id),
262
+ workItemId: row.work_item_id,
263
+ sessionId: row.session_id,
264
+ threadId: row.thread_id,
265
+ resourceId: row.resource_id,
266
+ userId: row.user_id,
267
+ reason: row.reason,
268
+ createdAt: row.created_at
269
+ };
270
+ }
227
271
  /**
228
272
  * The one shape a platform id takes in a lookup key, for cards and for the
229
273
  * comments mirrored off them alike: whoever writes a second builder reopens the
@@ -890,12 +934,14 @@ var WorkItemsStorage = class extends FactoryStorageDomain {
890
934
  ...FACTORY_GOVERNANCE_SCHEMAS,
891
935
  WORK_ITEM_COMMENTS_SCHEMA,
892
936
  WORK_ITEM_COMMENT_MENTIONS_SCHEMA,
893
- WORK_ITEM_ACTIVITY_SCHEMA
937
+ WORK_ITEM_ACTIVITY_SCHEMA,
938
+ FACTORY_WORK_ITEM_SUBSCRIPTIONS_SCHEMA
894
939
  ]);
895
940
  await this.repairLegacyAttentionState();
896
941
  }
897
942
  async dangerouslyClearAll() {
898
943
  await this.ops.deleteMany("work_items", {});
944
+ await super.ops.deleteMany(FACTORY_WORK_ITEM_SUBSCRIPTIONS_SCHEMA.name, {});
899
945
  await super.ops.deleteMany(FACTORY_BOARD_VERSIONS_SCHEMA.name, {});
900
946
  this.#listCache.clear();
901
947
  }
@@ -962,6 +1008,8 @@ var WorkItemsStorage = class extends FactoryStorageDomain {
962
1008
  attempts: Number(current.attempts) + 1,
963
1009
  lease_owner: input.ownerId,
964
1010
  lease_expires_at: input.leaseExpiresAt,
1011
+ last_error: null,
1012
+ failure_code: null,
965
1013
  updated_at: input.now
966
1014
  };
967
1015
  });
@@ -1420,29 +1468,34 @@ var WorkItemsStorage = class extends FactoryStorageDomain {
1420
1468
  causal_chain: input.causalChain,
1421
1469
  created_at: input.now
1422
1470
  });
1423
- for (const [effectOrdinal, decision] of decisions.entries()) await ops.insertOne("factory_deferred_decisions", {
1424
- org_id: input.orgId,
1425
- factory_project_id: input.factoryProjectId,
1426
- evaluation_id: evaluation.id,
1427
- work_item_id: item?.id ?? null,
1428
- source_key: decisionSourceKey(decision),
1429
- idempotency_key: String(decision.idempotencyKey),
1430
- effect_ordinal: effectOrdinal,
1431
- effect_hash: factoryDecisionHash(decision),
1432
- causal_chain: input.causalChain,
1433
- actor: input.actor,
1434
- decision,
1435
- status: "pending",
1436
- attempts: 0,
1437
- delivery_generation: 0,
1438
- available_at: input.now,
1439
- lease_owner: null,
1440
- lease_expires_at: null,
1441
- last_error: null,
1442
- completed_at: null,
1443
- created_at: new Date(input.now.getTime() + effectOrdinal),
1444
- updated_at: input.now
1445
- });
1471
+ for (const [effectOrdinal, decision] of decisions.entries()) {
1472
+ const approvedBy = decision.type === "invokeSkill" ? input.consentedBy ?? null : null;
1473
+ await ops.insertOne("factory_deferred_decisions", {
1474
+ org_id: input.orgId,
1475
+ factory_project_id: input.factoryProjectId,
1476
+ evaluation_id: evaluation.id,
1477
+ work_item_id: item?.id ?? null,
1478
+ source_key: decisionSourceKey(decision),
1479
+ idempotency_key: String(decision.idempotencyKey),
1480
+ effect_ordinal: effectOrdinal,
1481
+ effect_hash: factoryDecisionHash(decision),
1482
+ causal_chain: input.causalChain,
1483
+ actor: input.actor,
1484
+ decision,
1485
+ status: "pending",
1486
+ attempts: 0,
1487
+ delivery_generation: 0,
1488
+ available_at: input.now,
1489
+ lease_owner: null,
1490
+ lease_expires_at: null,
1491
+ last_error: null,
1492
+ completed_at: null,
1493
+ approved_at: approvedBy ? input.now : null,
1494
+ approved_by: approvedBy,
1495
+ created_at: new Date(input.now.getTime() + effectOrdinal),
1496
+ updated_at: input.now
1497
+ });
1498
+ }
1446
1499
  return {
1447
1500
  status: "committed",
1448
1501
  result
@@ -2032,6 +2085,14 @@ var WorkItemsStorage = class extends FactoryStorageDomain {
2032
2085
  if (rows.length !== 1) return null;
2033
2086
  return toBinding(rows[0]);
2034
2087
  }
2088
+ /** Whether this session was ever bound to a run, on any thread and whether or not the binding was revoked. */
2089
+ async hasRunBindingForSession(input) {
2090
+ return await this.#db.findOne("factory_run_bindings", {
2091
+ org_id: input.orgId,
2092
+ factory_project_id: input.factoryProjectId,
2093
+ session_id: input.sessionId
2094
+ }) !== null;
2095
+ }
2035
2096
  /** Resolve exact bound-session state for processor awareness; ambiguous cross-tenant matches return null. */
2036
2097
  async findRunBindingBySession(address) {
2037
2098
  const rows = await this.#db.findMany("factory_run_bindings", {
@@ -2082,17 +2143,17 @@ var WorkItemsStorage = class extends FactoryStorageDomain {
2082
2143
  });
2083
2144
  }
2084
2145
  /**
2085
- * Revoke leaked/legacy active bindings: older than `olderThan`, or whose
2086
- * work item is gone, malformed, or already terminal. Terminal-stage cleanup
2087
- * handles bindings go-forward; this sweep drains anything that slipped past
2088
- * it. Returns the number of bindings revoked.
2146
+ * Revoke leaked/legacy active bindings: older than `olderThan` (unless
2147
+ * `keep` vouches for them), or whose work item is gone, malformed, or
2148
+ * already terminal. Terminal-stage cleanup handles bindings go-forward; this
2149
+ * sweep drains anything that slipped past it. Returns the number of bindings revoked.
2089
2150
  */
2090
2151
  async revokeStaleRunBindings(input) {
2091
2152
  const bindings = await this.listActiveRunBindings();
2092
2153
  const itemCache = /* @__PURE__ */ new Map();
2093
2154
  let revoked = 0;
2094
2155
  for (const binding of bindings) {
2095
- let stale = binding.createdAt.getTime() < input.olderThan.getTime();
2156
+ let stale = binding.createdAt.getTime() < input.olderThan.getTime() && !await input.keep?.(binding);
2096
2157
  if (!stale) {
2097
2158
  const key = `${binding.orgId}:${binding.workItemId}`;
2098
2159
  let item = itemCache.get(key);
@@ -2119,6 +2180,29 @@ var WorkItemsStorage = class extends FactoryStorageDomain {
2119
2180
  async listActiveRunBindings() {
2120
2181
  return (await this.#db.findMany("factory_run_bindings", { status: "active" })).map(toBinding);
2121
2182
  }
2183
+ /**
2184
+ * The work items a session was ever bound to run, revoked bindings included.
2185
+ * `null` stands for a bound item that no longer loads. Empty when the session
2186
+ * never ran a work item.
2187
+ */
2188
+ async listRunBoundItems(sessionId) {
2189
+ const rows = await this.#db.findMany("factory_run_bindings", { session_id: sessionId });
2190
+ const keys = new Map(rows.map((row) => [`${row.org_id}:${row.work_item_id}`, row]));
2191
+ return Promise.all([...keys.values()].map((row) => this.get({
2192
+ orgId: String(row.org_id),
2193
+ id: String(row.work_item_id)
2194
+ })));
2195
+ }
2196
+ /**
2197
+ * Move a session's bindings from the legacy `resourceId = sessionId` onto
2198
+ * `resourceId`. Only rows still on the session id change, so a rerun is a no-op.
2199
+ */
2200
+ async moveRunBindingsToResource(input) {
2201
+ return this.#db.updateMany("factory_run_bindings", {
2202
+ session_id: input.sessionId,
2203
+ resource_id: input.sessionId
2204
+ }, { resource_id: input.resourceId });
2205
+ }
2122
2206
  /** List binding history, optionally narrowed to one work item. */
2123
2207
  async listRunBindings(orgId, factoryProjectId, workItemId) {
2124
2208
  return (await this.#db.findMany("factory_run_bindings", {
@@ -2560,6 +2644,60 @@ var WorkItemsStorage = class extends FactoryStorageDomain {
2560
2644
  });
2561
2645
  await ops.deleteMany("work_item_activity", where);
2562
2646
  }
2647
+ /**
2648
+ * Make a session follow a work item. Idempotent: following again keeps the
2649
+ * first subscription, including its reason (filing beats a later subscribe).
2650
+ */
2651
+ async subscribeToWorkItem(input) {
2652
+ const ops = super.ops;
2653
+ const where = {
2654
+ work_item_id: input.workItemId,
2655
+ session_id: input.sessionId
2656
+ };
2657
+ const existing = await ops.findOne(FACTORY_WORK_ITEM_SUBSCRIPTIONS_SCHEMA.name, where);
2658
+ if (existing) return toWorkItemSubscription(existing);
2659
+ try {
2660
+ return toWorkItemSubscription(await ops.insertOne(FACTORY_WORK_ITEM_SUBSCRIPTIONS_SCHEMA.name, {
2661
+ org_id: input.orgId,
2662
+ factory_project_id: input.factoryProjectId,
2663
+ work_item_id: input.workItemId,
2664
+ session_id: input.sessionId,
2665
+ thread_id: input.threadId,
2666
+ resource_id: input.resourceId,
2667
+ user_id: input.userId,
2668
+ reason: input.reason,
2669
+ created_at: /* @__PURE__ */ new Date()
2670
+ }));
2671
+ } catch (error) {
2672
+ if (!(error instanceof UniqueViolationError)) throw error;
2673
+ const raced = await ops.findOne(FACTORY_WORK_ITEM_SUBSCRIPTIONS_SCHEMA.name, where);
2674
+ if (!raced) throw error;
2675
+ return toWorkItemSubscription(raced);
2676
+ }
2677
+ }
2678
+ /** Stop a session following a work item. Returns whether it was following. */
2679
+ async unsubscribeFromWorkItem({ orgId, workItemId, sessionId }) {
2680
+ return await super.ops.deleteMany(FACTORY_WORK_ITEM_SUBSCRIPTIONS_SCHEMA.name, {
2681
+ org_id: orgId,
2682
+ work_item_id: workItemId,
2683
+ session_id: sessionId
2684
+ }) > 0;
2685
+ }
2686
+ /** The sessions following a work item, earliest first. */
2687
+ async listWorkItemSubscribers({ orgId, workItemId }) {
2688
+ return (await super.ops.findMany(FACTORY_WORK_ITEM_SUBSCRIPTIONS_SCHEMA.name, {
2689
+ org_id: orgId,
2690
+ work_item_id: workItemId
2691
+ }, { orderBy: [["created_at", "asc"], ["id", "asc"]] })).map(toWorkItemSubscription);
2692
+ }
2693
+ /** The work items one session follows in a Factory, earliest first. */
2694
+ async listSessionSubscriptions({ orgId, factoryProjectId, sessionId }) {
2695
+ return (await super.ops.findMany(FACTORY_WORK_ITEM_SUBSCRIPTIONS_SCHEMA.name, {
2696
+ org_id: orgId,
2697
+ factory_project_id: factoryProjectId,
2698
+ session_id: sessionId
2699
+ }, { orderBy: [["created_at", "asc"], ["id", "asc"]] })).map(toWorkItemSubscription);
2700
+ }
2563
2701
  async delete({ orgId, id, purgeRuleState = true }) {
2564
2702
  const candidate = await this.#db.findOne("work_items", {
2565
2703
  org_id: orgId,
@@ -2581,6 +2719,10 @@ var WorkItemsStorage = class extends FactoryStorageDomain {
2581
2719
  factoryProjectId: existing.factory_project_id,
2582
2720
  workItemId: id
2583
2721
  });
2722
+ await ops.deleteMany(FACTORY_WORK_ITEM_SUBSCRIPTIONS_SCHEMA.name, {
2723
+ org_id: orgId,
2724
+ work_item_id: id
2725
+ });
2584
2726
  if (purgeRuleState && existing.external_source?.externalId) await this.#purgeRuleState(ops, {
2585
2727
  orgId,
2586
2728
  factoryProjectId: existing.factory_project_id,
@@ -2600,6 +2742,6 @@ var WorkItemsStorage = class extends FactoryStorageDomain {
2600
2742
  }
2601
2743
  };
2602
2744
  //#endregion
2603
- export { ACTIVE_RUN_BINDING_STAGES, FACTORY_PULL_REQUEST_RECONCILIATION_KEY, FACTORY_RULE_MATERIALIZATION_KEY, WORK_ITEMS_SCHEMA, WorkItemClaimConflictError, WorkItemRelationError, WorkItemUpdateConflictError, WorkItemsStorage, applyStageTransition, externalSourceKey, factoryActivityAttentionIdentity, factoryAgentWaitingAttentionIdentity, factoryAttentionKey, factoryDecisionAttentionIdentity, factoryDecisionHash, factoryMentionAttentionIdentity, factoryProposalAttentionIdentity, isAgentActor, stampSessions, validateParentRelation };
2745
+ export { ACTIVE_RUN_BINDING_STAGES, FACTORY_PULL_REQUEST_RECONCILIATION_KEY, FACTORY_RULE_MATERIALIZATION_KEY, FACTORY_WORK_ITEM_SUBSCRIPTIONS_SCHEMA, WORK_ITEMS_SCHEMA, WorkItemClaimConflictError, WorkItemRelationError, WorkItemUpdateConflictError, WorkItemsStorage, applyStageTransition, externalSourceKey, factoryActivityAttentionIdentity, factoryAgentWaitingAttentionIdentity, factoryAttentionKey, factoryDecisionAttentionIdentity, factoryDecisionHash, factoryMentionAttentionIdentity, factoryProposalAttentionIdentity, isAgentActor, stampSessions, validateParentRelation };
2604
2746
 
2605
2747
  //# sourceMappingURL=base.js.map