@truefoundry/trueforge 0.2.0-rc.2 → 0.2.0-rc.3

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 (240) hide show
  1. package/dist/_frontend/assets/AgentCodeSnippets-N546FNNS-DlWVvctF.js +1 -0
  2. package/dist/_frontend/assets/AgentCodeSnippets-N546FNNS-DlWVvctF.js.br +0 -0
  3. package/dist/_frontend/assets/AgentCodeSnippets-N546FNNS-DlWVvctF.js.gz +0 -0
  4. package/dist/_frontend/assets/AgentMetricChart-YWJYVYYA-DTDXcVgE.js +1 -0
  5. package/dist/_frontend/assets/AgentMetricChart-YWJYVYYA-DTDXcVgE.js.br +0 -0
  6. package/dist/_frontend/assets/AgentMetricChart-YWJYVYYA-DTDXcVgE.js.gz +0 -0
  7. package/dist/_frontend/assets/{AgentOverview-3FJ5EE6N-D1pX5Emq.js → AgentOverview-VF74XC7I-DuR4GDFb.js} +1 -1
  8. package/dist/_frontend/assets/AgentOverview-VF74XC7I-DuR4GDFb.js.br +0 -0
  9. package/dist/_frontend/assets/AgentOverview-VF74XC7I-DuR4GDFb.js.gz +0 -0
  10. package/dist/_frontend/assets/AgentSessionEventTimeline-RFR6LQMY-B_5nS70p.js +1 -0
  11. package/dist/_frontend/assets/AgentSessionEventTimeline-RFR6LQMY-B_5nS70p.js.br +0 -0
  12. package/dist/_frontend/assets/AgentSessionEventTimeline-RFR6LQMY-B_5nS70p.js.gz +0 -0
  13. package/dist/_frontend/assets/AgentSessionEventTimelineChart-27CQF6FX-DSTwylcS.js +1 -0
  14. package/dist/_frontend/assets/AgentSessionEventTimelineChart-27CQF6FX-DSTwylcS.js.br +0 -0
  15. package/dist/_frontend/assets/AgentSessionEventTimelineChart-27CQF6FX-DSTwylcS.js.gz +0 -0
  16. package/dist/_frontend/assets/AgentSessions-4IVX2SGD-Bf2N2ega.js +1 -0
  17. package/dist/_frontend/assets/AgentSessions-4IVX2SGD-Bf2N2ega.js.br +0 -0
  18. package/dist/_frontend/assets/AgentSessions-4IVX2SGD-Bf2N2ega.js.gz +0 -0
  19. package/dist/_frontend/assets/ConnectorSettings-R5VEP7BO-Cvdqimeu.js +1 -0
  20. package/dist/_frontend/assets/ConnectorSettings-R5VEP7BO-Cvdqimeu.js.br +0 -0
  21. package/dist/_frontend/assets/ConnectorSettings-R5VEP7BO-Cvdqimeu.js.gz +0 -0
  22. package/dist/_frontend/assets/{DockLayout-NLFNU6F2-BGJvqqVS.js → DockLayout-F44RWGEY-DVcqWNpi.js} +1 -1
  23. package/dist/_frontend/assets/DrawerLayout-SQ323AVM-CrsDJpVR.js +2 -0
  24. package/dist/_frontend/assets/DrawerLayout-SQ323AVM-CrsDJpVR.js.br +0 -0
  25. package/dist/_frontend/assets/DrawerLayout-SQ323AVM-CrsDJpVR.js.gz +0 -0
  26. package/dist/_frontend/assets/ModelSettings-6QLS63HM-B0omK7y_.js +1 -0
  27. package/dist/_frontend/assets/ModelSettings-6QLS63HM-B0omK7y_.js.br +0 -0
  28. package/dist/_frontend/assets/ModelSettings-6QLS63HM-B0omK7y_.js.gz +0 -0
  29. package/dist/_frontend/assets/SandboxSettings-OLKDXIQS-O1pf1zn0.js +1 -0
  30. package/dist/_frontend/assets/SandboxSettings-OLKDXIQS-O1pf1zn0.js.br +0 -0
  31. package/dist/_frontend/assets/SandboxSettings-OLKDXIQS-O1pf1zn0.js.gz +0 -0
  32. package/dist/_frontend/assets/SchedulesPage-TMOTK6DR-D9JlkZFv.js +1 -0
  33. package/dist/_frontend/assets/SchedulesPage-TMOTK6DR-D9JlkZFv.js.br +0 -0
  34. package/dist/_frontend/assets/SchedulesPage-TMOTK6DR-D9JlkZFv.js.gz +0 -0
  35. package/dist/_frontend/assets/{SettingsBuilder-LSXK2VN4-B0Y9JGuK.js → SettingsBuilder-GISAH2WU-2fVa9yeg.js} +2 -2
  36. package/dist/_frontend/assets/SettingsBuilder-GISAH2WU-2fVa9yeg.js.br +0 -0
  37. package/dist/_frontend/assets/SettingsBuilder-GISAH2WU-2fVa9yeg.js.gz +0 -0
  38. package/dist/_frontend/assets/ShellRouteSync-EN33DUQ7-C280D67g.js +1 -0
  39. package/dist/_frontend/assets/ShellRouteSync-EN33DUQ7-C280D67g.js.br +0 -0
  40. package/dist/_frontend/assets/ShellRouteSync-EN33DUQ7-C280D67g.js.gz +0 -0
  41. package/dist/_frontend/assets/SidebarLayout-35K4AKTC-0-Mjo6gf.js +2 -0
  42. package/dist/_frontend/assets/SidebarLayout-35K4AKTC-0-Mjo6gf.js.br +0 -0
  43. package/dist/_frontend/assets/SidebarLayout-35K4AKTC-0-Mjo6gf.js.gz +0 -0
  44. package/dist/_frontend/assets/SkillSettings-JSX2BTII-BriJH4Oj.js +1 -0
  45. package/dist/_frontend/assets/SkillSettings-JSX2BTII-BriJH4Oj.js.br +0 -0
  46. package/dist/_frontend/assets/SkillSettings-JSX2BTII-BriJH4Oj.js.gz +0 -0
  47. package/dist/_frontend/assets/TrueForgeUIWithRouter-6VCR7ES3-CtIaYnA8.js +1 -0
  48. package/dist/_frontend/assets/WidgetLayout-RKBSN2FZ-u6iVYu3w.js +1 -0
  49. package/dist/_frontend/assets/WidgetLayout-RKBSN2FZ-u6iVYu3w.js.br +0 -0
  50. package/dist/_frontend/assets/WidgetLayout-RKBSN2FZ-u6iVYu3w.js.gz +0 -0
  51. package/dist/_frontend/assets/{chunk-62JRHF6Z-gAUkEAjv.js → chunk-62JRHF6Z-DYrEQoq5.js} +1 -1
  52. package/dist/_frontend/assets/chunk-62JRHF6Z-DYrEQoq5.js.br +0 -0
  53. package/dist/_frontend/assets/chunk-62JRHF6Z-DYrEQoq5.js.gz +0 -0
  54. package/dist/_frontend/assets/chunk-73FQVITT-mgvTPDmd.js +1 -0
  55. package/dist/_frontend/assets/chunk-73FQVITT-mgvTPDmd.js.br +0 -0
  56. package/dist/_frontend/assets/chunk-73FQVITT-mgvTPDmd.js.gz +0 -0
  57. package/dist/_frontend/assets/chunk-GIPFF6FZ-DPTdcXQj.js +2 -0
  58. package/dist/_frontend/assets/chunk-GIPFF6FZ-DPTdcXQj.js.br +0 -0
  59. package/dist/_frontend/assets/chunk-GIPFF6FZ-DPTdcXQj.js.gz +0 -0
  60. package/dist/_frontend/assets/chunk-LUG7E6BL-QKvrInc2.js +1 -0
  61. package/dist/_frontend/assets/chunk-LUG7E6BL-QKvrInc2.js.br +0 -0
  62. package/dist/_frontend/assets/chunk-LUG7E6BL-QKvrInc2.js.gz +0 -0
  63. package/dist/_frontend/assets/cssMode-BNfxrwWp.js +1 -0
  64. package/dist/_frontend/assets/cssMode-BNfxrwWp.js.br +0 -0
  65. package/dist/_frontend/assets/cssMode-BNfxrwWp.js.gz +0 -0
  66. package/dist/_frontend/assets/{freemarker2-BqULNxdn.js → freemarker2-ClbLzW-k.js} +1 -1
  67. package/dist/_frontend/assets/freemarker2-ClbLzW-k.js.br +0 -0
  68. package/dist/_frontend/assets/freemarker2-ClbLzW-k.js.gz +0 -0
  69. package/dist/_frontend/assets/{handlebars-D-wN_MMv.js → handlebars-5nE6yTDt.js} +1 -1
  70. package/dist/_frontend/assets/handlebars-5nE6yTDt.js.br +0 -0
  71. package/dist/_frontend/assets/handlebars-5nE6yTDt.js.gz +0 -0
  72. package/dist/_frontend/assets/{html-DX_2Eu_G.js → html-BZRf7Zhg.js} +1 -1
  73. package/dist/_frontend/assets/html-BZRf7Zhg.js.br +0 -0
  74. package/dist/_frontend/assets/html-BZRf7Zhg.js.gz +0 -0
  75. package/dist/_frontend/assets/htmlMode-C6O73C_r.js +1 -0
  76. package/dist/_frontend/assets/htmlMode-C6O73C_r.js.br +0 -0
  77. package/dist/_frontend/assets/htmlMode-C6O73C_r.js.gz +0 -0
  78. package/dist/_frontend/assets/{index-SN54UIUh.css → index-BBGLYdJn.css} +1 -1
  79. package/dist/_frontend/assets/index-BBGLYdJn.css.br +0 -0
  80. package/dist/_frontend/assets/index-BBGLYdJn.css.gz +0 -0
  81. package/dist/_frontend/assets/{index-MPbqVnOf.js → index-D0Yf366e.js} +1 -1
  82. package/dist/_frontend/assets/index-D0Yf366e.js.br +0 -0
  83. package/dist/_frontend/assets/index-D0Yf366e.js.gz +0 -0
  84. package/dist/_frontend/assets/{index-CNHFMp3w.js → index-DBjak9Sg.js} +4 -4
  85. package/dist/_frontend/assets/index-DBjak9Sg.js.br +0 -0
  86. package/dist/_frontend/assets/index-DBjak9Sg.js.gz +0 -0
  87. package/dist/_frontend/assets/index-DhA9jnhv.css +1 -0
  88. package/dist/_frontend/assets/index-DhA9jnhv.css.br +0 -0
  89. package/dist/_frontend/assets/index-DhA9jnhv.css.gz +0 -0
  90. package/dist/_frontend/assets/index-XpZpj5Rl.js +933 -0
  91. package/dist/_frontend/assets/index-XpZpj5Rl.js.br +0 -0
  92. package/dist/_frontend/assets/index-XpZpj5Rl.js.gz +0 -0
  93. package/dist/_frontend/assets/{javascript-CO_8uS79.js → javascript-CrSAQdU4.js} +1 -1
  94. package/dist/_frontend/assets/{jsonMode-D0kqu8c3.js → jsonMode-Dal25yu2.js} +4 -4
  95. package/dist/_frontend/assets/jsonMode-Dal25yu2.js.br +0 -0
  96. package/dist/_frontend/assets/jsonMode-Dal25yu2.js.gz +0 -0
  97. package/dist/_frontend/assets/{liquid-CB807zJs.js → liquid-Ci7gjLGv.js} +1 -1
  98. package/dist/_frontend/assets/liquid-Ci7gjLGv.js.br +0 -0
  99. package/dist/_frontend/assets/liquid-Ci7gjLGv.js.gz +0 -0
  100. package/dist/_frontend/assets/{lspLanguageFeatures-D0-0mkv4.js → lspLanguageFeatures-rM-QiA57.js} +1 -1
  101. package/dist/_frontend/assets/lspLanguageFeatures-rM-QiA57.js.br +0 -0
  102. package/dist/_frontend/assets/lspLanguageFeatures-rM-QiA57.js.gz +0 -0
  103. package/dist/_frontend/assets/{mdx-7_H2_m8y.js → mdx-J3rSuJw4.js} +1 -1
  104. package/dist/_frontend/assets/mdx-J3rSuJw4.js.br +0 -0
  105. package/dist/_frontend/assets/mdx-J3rSuJw4.js.gz +0 -0
  106. package/dist/_frontend/assets/{python-DhB7kQ15.js → python-BSpXGEco.js} +1 -1
  107. package/dist/_frontend/assets/python-BSpXGEco.js.br +0 -0
  108. package/dist/_frontend/assets/python-BSpXGEco.js.gz +0 -0
  109. package/dist/_frontend/assets/{razor-CDzQiIjH.js → razor-DLV1uhEc.js} +1 -1
  110. package/dist/_frontend/assets/razor-DLV1uhEc.js.br +0 -0
  111. package/dist/_frontend/assets/razor-DLV1uhEc.js.gz +0 -0
  112. package/dist/_frontend/assets/{tsMode-CVP7xaF5.js → tsMode-CQqRu3mP.js} +1 -1
  113. package/dist/_frontend/assets/tsMode-CQqRu3mP.js.br +0 -0
  114. package/dist/_frontend/assets/tsMode-CQqRu3mP.js.gz +0 -0
  115. package/dist/_frontend/assets/{typescript-BTAuo6jN.js → typescript-BExfm66c.js} +1 -1
  116. package/dist/_frontend/assets/typescript-BExfm66c.js.br +0 -0
  117. package/dist/_frontend/assets/typescript-BExfm66c.js.gz +0 -0
  118. package/dist/_frontend/assets/{workers-Dl5avODY.js → workers-Cn25A5Lb.js} +1 -1
  119. package/dist/_frontend/assets/workers-Cn25A5Lb.js.br +0 -0
  120. package/dist/_frontend/assets/workers-Cn25A5Lb.js.gz +0 -0
  121. package/dist/_frontend/assets/{xml-CKI7eM7V.js → xml-D2IDD-hb.js} +1 -1
  122. package/dist/_frontend/assets/xml-D2IDD-hb.js.br +0 -0
  123. package/dist/_frontend/assets/xml-D2IDD-hb.js.gz +0 -0
  124. package/dist/_frontend/assets/{yaml-Czn9FR3r.js → yaml-CY4c2A0Y.js} +1 -1
  125. package/dist/_frontend/assets/yaml-CY4c2A0Y.js.br +0 -0
  126. package/dist/_frontend/assets/yaml-CY4c2A0Y.js.gz +0 -0
  127. package/dist/_frontend/index.html +5 -2
  128. package/dist/controller-main.js +96 -10
  129. package/dist/controller-main.js.map +1 -1
  130. package/dist/main.js +14943 -13382
  131. package/dist/main.js.map +1 -1
  132. package/dist/postgres/migrations/20260907_000001_schedule_run_reason.js +15 -0
  133. package/dist/postgres/migrations/20260907_000001_schedule_run_reason.js.map +1 -0
  134. package/dist/sqlite/migrations/20260907_000001_schedule_run_reason.js +17 -0
  135. package/dist/sqlite/migrations/20260907_000001_schedule_run_reason.js.map +1 -0
  136. package/package.json +3 -4
  137. package/dist/_frontend/assets/AgentCodeSnippets-637HQUXD-C5c8zg9J.js +0 -1
  138. package/dist/_frontend/assets/AgentCodeSnippets-637HQUXD-C5c8zg9J.js.br +0 -0
  139. package/dist/_frontend/assets/AgentCodeSnippets-637HQUXD-C5c8zg9J.js.gz +0 -0
  140. package/dist/_frontend/assets/AgentMetricChart-4FYECRIN-BN07l9mr.js +0 -1
  141. package/dist/_frontend/assets/AgentMetricChart-4FYECRIN-BN07l9mr.js.br +0 -0
  142. package/dist/_frontend/assets/AgentMetricChart-4FYECRIN-BN07l9mr.js.gz +0 -0
  143. package/dist/_frontend/assets/AgentOverview-3FJ5EE6N-D1pX5Emq.js.br +0 -0
  144. package/dist/_frontend/assets/AgentOverview-3FJ5EE6N-D1pX5Emq.js.gz +0 -0
  145. package/dist/_frontend/assets/AgentSessionEventTimeline-VELWUYPR-S1LS04B9.js +0 -1
  146. package/dist/_frontend/assets/AgentSessionEventTimeline-VELWUYPR-S1LS04B9.js.br +0 -0
  147. package/dist/_frontend/assets/AgentSessionEventTimeline-VELWUYPR-S1LS04B9.js.gz +0 -0
  148. package/dist/_frontend/assets/AgentSessionEventTimelineChart-CUKETHWM-D4LvjUpF.js +0 -1
  149. package/dist/_frontend/assets/AgentSessionEventTimelineChart-CUKETHWM-D4LvjUpF.js.br +0 -0
  150. package/dist/_frontend/assets/AgentSessionEventTimelineChart-CUKETHWM-D4LvjUpF.js.gz +0 -0
  151. package/dist/_frontend/assets/AgentSessions-T7MOGOTZ-wppcDkIn.js +0 -1
  152. package/dist/_frontend/assets/AgentSessions-T7MOGOTZ-wppcDkIn.js.br +0 -0
  153. package/dist/_frontend/assets/AgentSessions-T7MOGOTZ-wppcDkIn.js.gz +0 -0
  154. package/dist/_frontend/assets/ConnectorSettings-ESZ2RSRG-DLxrylX3.js +0 -1
  155. package/dist/_frontend/assets/ConnectorSettings-ESZ2RSRG-DLxrylX3.js.br +0 -0
  156. package/dist/_frontend/assets/ConnectorSettings-ESZ2RSRG-DLxrylX3.js.gz +0 -0
  157. package/dist/_frontend/assets/DrawerLayout-PR3SMKA6-C13frtIA.js +0 -2
  158. package/dist/_frontend/assets/DrawerLayout-PR3SMKA6-C13frtIA.js.br +0 -0
  159. package/dist/_frontend/assets/DrawerLayout-PR3SMKA6-C13frtIA.js.gz +0 -0
  160. package/dist/_frontend/assets/ModelSettings-LYW64IRR-BLLhCXsR.js +0 -1
  161. package/dist/_frontend/assets/ModelSettings-LYW64IRR-BLLhCXsR.js.br +0 -0
  162. package/dist/_frontend/assets/ModelSettings-LYW64IRR-BLLhCXsR.js.gz +0 -0
  163. package/dist/_frontend/assets/SandboxSettings-DF64LHYI-7AeygCju.js +0 -1
  164. package/dist/_frontend/assets/SandboxSettings-DF64LHYI-7AeygCju.js.br +0 -0
  165. package/dist/_frontend/assets/SandboxSettings-DF64LHYI-7AeygCju.js.gz +0 -0
  166. package/dist/_frontend/assets/SchedulesPage-WQU4H25F-BGlu6WXG.js +0 -1
  167. package/dist/_frontend/assets/SchedulesPage-WQU4H25F-BGlu6WXG.js.br +0 -0
  168. package/dist/_frontend/assets/SchedulesPage-WQU4H25F-BGlu6WXG.js.gz +0 -0
  169. package/dist/_frontend/assets/SettingsBuilder-LSXK2VN4-B0Y9JGuK.js.br +0 -0
  170. package/dist/_frontend/assets/SettingsBuilder-LSXK2VN4-B0Y9JGuK.js.gz +0 -0
  171. package/dist/_frontend/assets/ShellRouteSync-B22IAV2W-leIgCXVi.js +0 -1
  172. package/dist/_frontend/assets/ShellRouteSync-B22IAV2W-leIgCXVi.js.br +0 -0
  173. package/dist/_frontend/assets/ShellRouteSync-B22IAV2W-leIgCXVi.js.gz +0 -0
  174. package/dist/_frontend/assets/SidebarLayout-XW6LXB7R-Cfmnvl3i.js +0 -2
  175. package/dist/_frontend/assets/SidebarLayout-XW6LXB7R-Cfmnvl3i.js.br +0 -0
  176. package/dist/_frontend/assets/SidebarLayout-XW6LXB7R-Cfmnvl3i.js.gz +0 -0
  177. package/dist/_frontend/assets/SkillSettings-64VXUO6J-CeuMawWX.js +0 -1
  178. package/dist/_frontend/assets/SkillSettings-64VXUO6J-CeuMawWX.js.br +0 -0
  179. package/dist/_frontend/assets/SkillSettings-64VXUO6J-CeuMawWX.js.gz +0 -0
  180. package/dist/_frontend/assets/TrueForgeUIWithRouter-3TSLV22Q-BiR4AwMi.js +0 -1
  181. package/dist/_frontend/assets/WidgetLayout-Q5P7PYSJ-D-NJInrA.js +0 -1
  182. package/dist/_frontend/assets/WidgetLayout-Q5P7PYSJ-D-NJInrA.js.br +0 -0
  183. package/dist/_frontend/assets/WidgetLayout-Q5P7PYSJ-D-NJInrA.js.gz +0 -0
  184. package/dist/_frontend/assets/chunk-62JRHF6Z-gAUkEAjv.js.br +0 -0
  185. package/dist/_frontend/assets/chunk-62JRHF6Z-gAUkEAjv.js.gz +0 -0
  186. package/dist/_frontend/assets/chunk-I3AL54MA--fCRbraS.js +0 -2
  187. package/dist/_frontend/assets/chunk-I3AL54MA--fCRbraS.js.br +0 -0
  188. package/dist/_frontend/assets/chunk-I3AL54MA--fCRbraS.js.gz +0 -0
  189. package/dist/_frontend/assets/chunk-SQGT43Z3-Di5-vYAQ.js +0 -1
  190. package/dist/_frontend/assets/chunk-SQGT43Z3-Di5-vYAQ.js.br +0 -0
  191. package/dist/_frontend/assets/chunk-SQGT43Z3-Di5-vYAQ.js.gz +0 -0
  192. package/dist/_frontend/assets/chunk-VUMGMGKZ-CUX2iOMe.js +0 -1
  193. package/dist/_frontend/assets/chunk-VUMGMGKZ-CUX2iOMe.js.br +0 -0
  194. package/dist/_frontend/assets/chunk-VUMGMGKZ-CUX2iOMe.js.gz +0 -0
  195. package/dist/_frontend/assets/cssMode-Bmk_AUwV.js +0 -1
  196. package/dist/_frontend/assets/cssMode-Bmk_AUwV.js.br +0 -0
  197. package/dist/_frontend/assets/cssMode-Bmk_AUwV.js.gz +0 -0
  198. package/dist/_frontend/assets/freemarker2-BqULNxdn.js.br +0 -0
  199. package/dist/_frontend/assets/freemarker2-BqULNxdn.js.gz +0 -0
  200. package/dist/_frontend/assets/handlebars-D-wN_MMv.js.br +0 -0
  201. package/dist/_frontend/assets/handlebars-D-wN_MMv.js.gz +0 -0
  202. package/dist/_frontend/assets/html-DX_2Eu_G.js.br +0 -0
  203. package/dist/_frontend/assets/html-DX_2Eu_G.js.gz +0 -0
  204. package/dist/_frontend/assets/htmlMode-CqQ0rpq1.js +0 -1
  205. package/dist/_frontend/assets/htmlMode-CqQ0rpq1.js.br +0 -0
  206. package/dist/_frontend/assets/htmlMode-CqQ0rpq1.js.gz +0 -0
  207. package/dist/_frontend/assets/index-CB2SckMT.css +0 -1
  208. package/dist/_frontend/assets/index-CB2SckMT.css.br +0 -0
  209. package/dist/_frontend/assets/index-CB2SckMT.css.gz +0 -0
  210. package/dist/_frontend/assets/index-CNHFMp3w.js.br +0 -0
  211. package/dist/_frontend/assets/index-CNHFMp3w.js.gz +0 -0
  212. package/dist/_frontend/assets/index-G4wOqi3O.js +0 -923
  213. package/dist/_frontend/assets/index-G4wOqi3O.js.br +0 -0
  214. package/dist/_frontend/assets/index-G4wOqi3O.js.gz +0 -0
  215. package/dist/_frontend/assets/index-MPbqVnOf.js.br +0 -0
  216. package/dist/_frontend/assets/index-MPbqVnOf.js.gz +0 -0
  217. package/dist/_frontend/assets/index-SN54UIUh.css.br +0 -0
  218. package/dist/_frontend/assets/index-SN54UIUh.css.gz +0 -0
  219. package/dist/_frontend/assets/jsonMode-D0kqu8c3.js.br +0 -0
  220. package/dist/_frontend/assets/jsonMode-D0kqu8c3.js.gz +0 -0
  221. package/dist/_frontend/assets/liquid-CB807zJs.js.br +0 -0
  222. package/dist/_frontend/assets/liquid-CB807zJs.js.gz +0 -0
  223. package/dist/_frontend/assets/lspLanguageFeatures-D0-0mkv4.js.br +0 -0
  224. package/dist/_frontend/assets/lspLanguageFeatures-D0-0mkv4.js.gz +0 -0
  225. package/dist/_frontend/assets/mdx-7_H2_m8y.js.br +0 -0
  226. package/dist/_frontend/assets/mdx-7_H2_m8y.js.gz +0 -0
  227. package/dist/_frontend/assets/python-DhB7kQ15.js.br +0 -0
  228. package/dist/_frontend/assets/python-DhB7kQ15.js.gz +0 -0
  229. package/dist/_frontend/assets/razor-CDzQiIjH.js.br +0 -0
  230. package/dist/_frontend/assets/razor-CDzQiIjH.js.gz +0 -0
  231. package/dist/_frontend/assets/tsMode-CVP7xaF5.js.br +0 -0
  232. package/dist/_frontend/assets/tsMode-CVP7xaF5.js.gz +0 -0
  233. package/dist/_frontend/assets/typescript-BTAuo6jN.js.br +0 -0
  234. package/dist/_frontend/assets/typescript-BTAuo6jN.js.gz +0 -0
  235. package/dist/_frontend/assets/workers-Dl5avODY.js.br +0 -0
  236. package/dist/_frontend/assets/workers-Dl5avODY.js.gz +0 -0
  237. package/dist/_frontend/assets/xml-CKI7eM7V.js.br +0 -0
  238. package/dist/_frontend/assets/xml-CKI7eM7V.js.gz +0 -0
  239. package/dist/_frontend/assets/yaml-Czn9FR3r.js.br +0 -0
  240. package/dist/_frontend/assets/yaml-Czn9FR3r.js.gz +0 -0
@@ -1 +1 @@
1
- import{l as e}from"./index-CNHFMp3w.js";import"./index-G4wOqi3O.js";const o={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{offSide:!0},onEnterRules:[{beforeText:/:\s*$/,action:{indentAction:e.IndentAction.Indent}}]},r={tokenPostfix:".yaml",brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.square",open:"[",close:"]"}],keywords:["true","True","TRUE","false","False","FALSE","null","Null","Null","~"],numberInteger:/(?:0|[+-]?[0-9]+)/,numberFloat:/(?:0|[+-]?[0-9]+)(?:\.[0-9]+)?(?:e[-+][1-9][0-9]*)?/,numberOctal:/0o[0-7]+/,numberHex:/0x[0-9a-fA-F]+/,numberInfinity:/[+-]?\.(?:inf|Inf|INF)/,numberNaN:/\.(?:nan|Nan|NAN)/,numberDate:/\d{4}-\d\d-\d\d([Tt ]\d\d:\d\d:\d\d(\.\d+)?(( ?[+-]\d\d?(:\d\d)?)|Z)?)?/,escapes:/\\(?:[btnfr\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,tokenizer:{root:[{include:"@whitespace"},{include:"@comment"},[/%[^ ]+.*$/,"meta.directive"],[/---/,"operators.directivesEnd"],[/\.{3}/,"operators.documentEnd"],[/[-?:](?= )/,"operators"],{include:"@anchor"},{include:"@tagHandle"},{include:"@flowCollections"},{include:"@blockStyle"},[/@numberInteger(?![ \t]*\S+)/,"number"],[/@numberFloat(?![ \t]*\S+)/,"number.float"],[/@numberOctal(?![ \t]*\S+)/,"number.octal"],[/@numberHex(?![ \t]*\S+)/,"number.hex"],[/@numberInfinity(?![ \t]*\S+)/,"number.infinity"],[/@numberNaN(?![ \t]*\S+)/,"number.nan"],[/@numberDate(?![ \t]*\S+)/,"number.date"],[/(".*?"|'.*?'|[^#'"]*?)([ \t]*)(:)( |$)/,["type","white","operators","white"]],{include:"@flowScalars"},[/.+?(?=(\s+#|$))/,{cases:{"@keywords":"keyword","@default":"string"}}]],object:[{include:"@whitespace"},{include:"@comment"},[/\}/,"@brackets","@pop"],[/,/,"delimiter.comma"],[/:(?= )/,"operators"],[/(?:".*?"|'.*?'|[^,\{\[]+?)(?=: )/,"type"],{include:"@flowCollections"},{include:"@flowScalars"},{include:"@tagHandle"},{include:"@anchor"},{include:"@flowNumber"},[/[^\},]+/,{cases:{"@keywords":"keyword","@default":"string"}}]],array:[{include:"@whitespace"},{include:"@comment"},[/\]/,"@brackets","@pop"],[/,/,"delimiter.comma"],{include:"@flowCollections"},{include:"@flowScalars"},{include:"@tagHandle"},{include:"@anchor"},{include:"@flowNumber"},[/[^\],]+/,{cases:{"@keywords":"keyword","@default":"string"}}]],multiString:[[/^( +).+$/,"string","@multiStringContinued.$1"]],multiStringContinued:[[/^( *).+$/,{cases:{"$1==$S2":"string","@default":{token:"@rematch",next:"@popall"}}}]],whitespace:[[/[ \t\r\n]+/,"white"]],comment:[[/#.*$/,"comment"]],flowCollections:[[/\[/,"@brackets","@array"],[/\{/,"@brackets","@object"]],flowScalars:[[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/'[^']*'/,"string"],[/"/,"string","@doubleQuotedString"]],doubleQuotedString:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],blockStyle:[[/[>|][0-9]*[+-]?$/,"operators","@multiString"]],flowNumber:[[/@numberInteger(?=[ \t]*[,\]\}])/,"number"],[/@numberFloat(?=[ \t]*[,\]\}])/,"number.float"],[/@numberOctal(?=[ \t]*[,\]\}])/,"number.octal"],[/@numberHex(?=[ \t]*[,\]\}])/,"number.hex"],[/@numberInfinity(?=[ \t]*[,\]\}])/,"number.infinity"],[/@numberNaN(?=[ \t]*[,\]\}])/,"number.nan"],[/@numberDate(?=[ \t]*[,\]\}])/,"number.date"]],tagHandle:[[/\![^ ]*/,"tag"]],anchor:[[/[&*][^ ]+/,"namespace"]]}};export{o as conf,r as language};
1
+ import{l as e}from"./index-DBjak9Sg.js";import"./index-XpZpj5Rl.js";const o={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{offSide:!0},onEnterRules:[{beforeText:/:\s*$/,action:{indentAction:e.IndentAction.Indent}}]},r={tokenPostfix:".yaml",brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.square",open:"[",close:"]"}],keywords:["true","True","TRUE","false","False","FALSE","null","Null","Null","~"],numberInteger:/(?:0|[+-]?[0-9]+)/,numberFloat:/(?:0|[+-]?[0-9]+)(?:\.[0-9]+)?(?:e[-+][1-9][0-9]*)?/,numberOctal:/0o[0-7]+/,numberHex:/0x[0-9a-fA-F]+/,numberInfinity:/[+-]?\.(?:inf|Inf|INF)/,numberNaN:/\.(?:nan|Nan|NAN)/,numberDate:/\d{4}-\d\d-\d\d([Tt ]\d\d:\d\d:\d\d(\.\d+)?(( ?[+-]\d\d?(:\d\d)?)|Z)?)?/,escapes:/\\(?:[btnfr\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,tokenizer:{root:[{include:"@whitespace"},{include:"@comment"},[/%[^ ]+.*$/,"meta.directive"],[/---/,"operators.directivesEnd"],[/\.{3}/,"operators.documentEnd"],[/[-?:](?= )/,"operators"],{include:"@anchor"},{include:"@tagHandle"},{include:"@flowCollections"},{include:"@blockStyle"},[/@numberInteger(?![ \t]*\S+)/,"number"],[/@numberFloat(?![ \t]*\S+)/,"number.float"],[/@numberOctal(?![ \t]*\S+)/,"number.octal"],[/@numberHex(?![ \t]*\S+)/,"number.hex"],[/@numberInfinity(?![ \t]*\S+)/,"number.infinity"],[/@numberNaN(?![ \t]*\S+)/,"number.nan"],[/@numberDate(?![ \t]*\S+)/,"number.date"],[/(".*?"|'.*?'|[^#'"]*?)([ \t]*)(:)( |$)/,["type","white","operators","white"]],{include:"@flowScalars"},[/.+?(?=(\s+#|$))/,{cases:{"@keywords":"keyword","@default":"string"}}]],object:[{include:"@whitespace"},{include:"@comment"},[/\}/,"@brackets","@pop"],[/,/,"delimiter.comma"],[/:(?= )/,"operators"],[/(?:".*?"|'.*?'|[^,\{\[]+?)(?=: )/,"type"],{include:"@flowCollections"},{include:"@flowScalars"},{include:"@tagHandle"},{include:"@anchor"},{include:"@flowNumber"},[/[^\},]+/,{cases:{"@keywords":"keyword","@default":"string"}}]],array:[{include:"@whitespace"},{include:"@comment"},[/\]/,"@brackets","@pop"],[/,/,"delimiter.comma"],{include:"@flowCollections"},{include:"@flowScalars"},{include:"@tagHandle"},{include:"@anchor"},{include:"@flowNumber"},[/[^\],]+/,{cases:{"@keywords":"keyword","@default":"string"}}]],multiString:[[/^( +).+$/,"string","@multiStringContinued.$1"]],multiStringContinued:[[/^( *).+$/,{cases:{"$1==$S2":"string","@default":{token:"@rematch",next:"@popall"}}}]],whitespace:[[/[ \t\r\n]+/,"white"]],comment:[[/#.*$/,"comment"]],flowCollections:[[/\[/,"@brackets","@array"],[/\{/,"@brackets","@object"]],flowScalars:[[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/'[^']*'/,"string"],[/"/,"string","@doubleQuotedString"]],doubleQuotedString:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],blockStyle:[[/[>|][0-9]*[+-]?$/,"operators","@multiString"]],flowNumber:[[/@numberInteger(?=[ \t]*[,\]\}])/,"number"],[/@numberFloat(?=[ \t]*[,\]\}])/,"number.float"],[/@numberOctal(?=[ \t]*[,\]\}])/,"number.octal"],[/@numberHex(?=[ \t]*[,\]\}])/,"number.hex"],[/@numberInfinity(?=[ \t]*[,\]\}])/,"number.infinity"],[/@numberNaN(?=[ \t]*[,\]\}])/,"number.nan"],[/@numberDate(?=[ \t]*[,\]\}])/,"number.date"]],tagHandle:[[/\![^ ]*/,"tag"]],anchor:[[/[&*][^ ]+/,"namespace"]]}};export{o as conf,r as language};
@@ -5,8 +5,11 @@
5
5
  <meta charset="UTF-8" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>TrueForge</title>
8
- <script type="module" crossorigin src="/assets/index-G4wOqi3O.js"></script>
9
- <link rel="stylesheet" crossorigin href="/assets/index-SN54UIUh.css">
8
+ <script>
9
+ window.__TRUEFORGE_BASE_PATH__ = '%%TRUEFORGE_BASE_PATH%%';
10
+ </script>
11
+ <script type="module" crossorigin src="%%TRUEFORGE_BASE_PATH%%assets/index-XpZpj5Rl.js"></script>
12
+ <link rel="stylesheet" crossorigin href="%%TRUEFORGE_BASE_PATH%%assets/index-BBGLYdJn.css">
10
13
  </head>
11
14
  <body>
12
15
  <div id="root"></div>
@@ -85,6 +85,38 @@ function parseBoolean(options) {
85
85
  }
86
86
  throw new Error(`Environment variable ${envKey} must be "true" or "false", got "${raw}"`);
87
87
  }
88
+ function parsePublicBaseUrl(raw) {
89
+ if (raw === void 0 || raw.trim() === "") {
90
+ return "";
91
+ }
92
+ let parsed;
93
+ try {
94
+ parsed = new URL(raw.trim());
95
+ } catch (error) {
96
+ throw new Error("PUBLIC_BASE_URL must be a valid URL", { cause: error });
97
+ }
98
+ if (parsed.search !== "" || parsed.hash !== "") {
99
+ throw new Error("PUBLIC_BASE_URL must not include a query or hash");
100
+ }
101
+ const segments = parsed.pathname.split("/").filter((part) => part.length > 0);
102
+ if (segments.some((part) => part === "." || part === "..")) {
103
+ throw new Error('PUBLIC_BASE_URL path must not contain "." or ".." segments');
104
+ }
105
+ const path3 = segments.length === 0 ? "" : `/${segments.join("/")}`;
106
+ return `${parsed.origin}${path3}`;
107
+ }
108
+ function parseTrueFoundrySandboxProvider(raw) {
109
+ if (raw === void 0 || raw.trim() === "") {
110
+ return void 0;
111
+ }
112
+ const value = raw.trim();
113
+ if (value === "daytona" || value === "truefoundry") {
114
+ return value;
115
+ }
116
+ throw new Error(
117
+ `Environment variable TRUEFOUNDRY_SANDBOX_PROVIDER must be "daytona" or "truefoundry", got ${JSON.stringify(raw)}`
118
+ );
119
+ }
88
120
  function parsePostgresSslMode(raw) {
89
121
  if (!raw) {
90
122
  return "";
@@ -296,7 +328,7 @@ var shared = {
296
328
  raw: getEnv("REDIS_REQUEST_REPLY_POLL_INTERVAL_MS"),
297
329
  defaultValue: 500
298
330
  }),
299
- PUBLIC_BASE_URL: getEnv("PUBLIC_BASE_URL", { defaultValue: "" }) ?? "",
331
+ PUBLIC_BASE_URL: parsePublicBaseUrl(getEnv("PUBLIC_BASE_URL", { defaultValue: "" })),
300
332
  SERVER_URL: getEnv("SERVER_URL", { defaultValue: `http://localhost:${String(port)}` }) ?? `http://localhost:${String(port)}`,
301
333
  TRUEFORGE_MTLS_ENABLED: parseBoolean({
302
334
  envKey: "TRUEFORGE_MTLS_ENABLED",
@@ -333,6 +365,7 @@ var configuration = standalone ? {
333
365
  REDIS_URL: resolveRedisUrl(),
334
366
  OIDC: resolveOIDCConfig(),
335
367
  TRUEFOUNDRY_SERVICEFOUNDRY_SERVER_URL: getEnv("TRUEFOUNDRY_SERVICEFOUNDRY_SERVER_URL", { required: false }),
368
+ TRUEFOUNDRY_API_KEY: getEnv("TRUEFOUNDRY_API_KEY", { required: false }),
336
369
  TRUEFOUNDRY_SERVICEFOUNDRY_HTTP_TIMEOUT_MS: parsePositiveInt({
337
370
  envKey: "TRUEFOUNDRY_SERVICEFOUNDRY_HTTP_TIMEOUT_MS",
338
371
  raw: getEnv("TRUEFOUNDRY_SERVICEFOUNDRY_HTTP_TIMEOUT_MS"),
@@ -354,8 +387,12 @@ var configuration = standalone ? {
354
387
  raw: getEnv("TRUEFOUNDRY_SANDBOX_ENABLED"),
355
388
  defaultValue: false
356
389
  }),
390
+ TRUEFOUNDRY_SANDBOX_PROVIDER: parseTrueFoundrySandboxProvider(
391
+ getEnv("TRUEFOUNDRY_SANDBOX_PROVIDER", { required: false })
392
+ ),
357
393
  TRUEFOUNDRY_SANDBOX_API_KEY: getEnv("TRUEFOUNDRY_SANDBOX_API_KEY", { required: false }),
358
- TRUEFOUNDRY_SANDBOX_SETTINGS_SERVER_URL: getEnv("TRUEFOUNDRY_SANDBOX_SETTINGS_SERVER_URL", { required: false })
394
+ TRUEFOUNDRY_SANDBOX_SERVER_URL: getEnv("TRUEFOUNDRY_SANDBOX_SERVER_URL", { required: false }),
395
+ TRUEFOUNDRY_SANDBOX_SETTINGS: getEnv("TRUEFOUNDRY_SANDBOX_SETTINGS", { required: false })
359
396
  };
360
397
  function isOidcConfigured(value) {
361
398
  return !value.STANDALONE && value.OIDC !== void 0;
@@ -369,10 +406,33 @@ if (isTrueFoundryModeEnabled(configuration)) {
369
406
  "TRUEFOUNDRY_SERVICEFOUNDRY_SERVER_URL (TrueFoundry mode) and OIDC (SSO) cannot both be enabled at once."
370
407
  );
371
408
  }
409
+ if (configuration.TRUEFOUNDRY_API_KEY === void 0) {
410
+ throw new Error("TRUEFOUNDRY_API_KEY is required when TRUEFOUNDRY_SERVICEFOUNDRY_SERVER_URL is set.");
411
+ }
372
412
  if (configuration.TRUEFOUNDRY_SANDBOX_ENABLED) {
373
- if (configuration.TRUEFOUNDRY_SANDBOX_API_KEY === void 0 || configuration.TRUEFOUNDRY_SANDBOX_SETTINGS_SERVER_URL === void 0) {
413
+ if (configuration.TRUEFOUNDRY_SANDBOX_PROVIDER === void 0) {
414
+ throw new Error(
415
+ 'TRUEFOUNDRY_SANDBOX_ENABLED is true but TRUEFOUNDRY_SANDBOX_PROVIDER is not set. Set TRUEFOUNDRY_SANDBOX_PROVIDER to "daytona" or "truefoundry", or set TRUEFOUNDRY_SANDBOX_ENABLED=false.'
416
+ );
417
+ }
418
+ if (configuration.TRUEFOUNDRY_SANDBOX_SETTINGS === void 0) {
374
419
  throw new Error(
375
- "TRUEFOUNDRY_SANDBOX_ENABLED is true but no sandbox provider is configured. Set TRUEFOUNDRY_SANDBOX_API_KEY + TRUEFOUNDRY_SANDBOX_SETTINGS_SERVER_URL, or set TRUEFOUNDRY_SANDBOX_ENABLED=false."
420
+ "TRUEFOUNDRY_SANDBOX_ENABLED is true but TRUEFOUNDRY_SANDBOX_SETTINGS is not set. Provide a JSON settings object, or set TRUEFOUNDRY_SANDBOX_ENABLED=false."
421
+ );
422
+ }
423
+ try {
424
+ JSON.parse(configuration.TRUEFOUNDRY_SANDBOX_SETTINGS);
425
+ } catch (error) {
426
+ throw new Error("TRUEFOUNDRY_SANDBOX_SETTINGS must be valid JSON", { cause: error });
427
+ }
428
+ if (configuration.TRUEFOUNDRY_SANDBOX_PROVIDER === "daytona" && configuration.TRUEFOUNDRY_SANDBOX_API_KEY === void 0) {
429
+ throw new Error(
430
+ "TRUEFOUNDRY_SANDBOX_PROVIDER=daytona requires TRUEFOUNDRY_SANDBOX_API_KEY, or set TRUEFOUNDRY_SANDBOX_ENABLED=false."
431
+ );
432
+ }
433
+ if (configuration.TRUEFOUNDRY_SANDBOX_PROVIDER === "truefoundry" && configuration.TRUEFOUNDRY_SANDBOX_SERVER_URL === void 0) {
434
+ throw new Error(
435
+ "TRUEFOUNDRY_SANDBOX_PROVIDER=truefoundry requires TRUEFOUNDRY_SANDBOX_SERVER_URL, or set TRUEFOUNDRY_SANDBOX_ENABLED=false."
376
436
  );
377
437
  }
378
438
  }
@@ -554,10 +614,14 @@ var ScheduleRunSchema = z2.object({
554
614
  status: ScheduleRunStatusSchema,
555
615
  created_by_subject: CreatedBySubjectSchema,
556
616
  triggered_at: NullableIsoTimestamp,
617
+ reason: z2.string().nullable(),
557
618
  created_at: IsoTimestamp,
558
619
  updated_at: IsoTimestamp
559
620
  }).strict().openapi("ScheduleRun");
560
- var ListScheduleRunsResponseSchema = z2.object({ data: z2.array(ScheduleRunSchema) }).openapi("ListScheduleRunsResponse");
621
+ var ListScheduleRunsResponseSchema = z2.object({
622
+ data: z2.array(ScheduleRunSchema),
623
+ pagination: TokenPaginationSchema
624
+ }).openapi("ListScheduleRunsResponse");
561
625
  var CreateScheduleRunRequestSchema = z2.object({
562
626
  schedule_id: z2.string().min(1).max(64).describe("Immutable schedule identifier.")
563
627
  }).strict().describe("Trigger an immediate run for the given schedule. The task is taken from the schedule manifest.").openapi("CreateScheduleRunRequest");
@@ -609,6 +673,9 @@ function nextTriggerAfter(input) {
609
673
 
610
674
  // src/controller/scheduleDispatch.ts
611
675
  var DISPATCH_BATCH_LIMIT = 20;
676
+ function scheduleRunFailureReason(error) {
677
+ return error instanceof Error && error.message.trim() !== "" ? error.message : "Schedule run failed";
678
+ }
612
679
  var SCHEDULE_DISPATCH_INTERVAL_MS = 6e4;
613
680
  var SCHEDULE_DISPATCH_LOOP_NAME = "schedule-dispatch";
614
681
  function executeScheduledRun(client) {
@@ -629,10 +696,13 @@ function executeScheduledRun(client) {
629
696
  };
630
697
  }
631
698
  async function finishScheduledRun(params) {
632
- const { store, withTransaction, run, status, now: now2 } = params;
699
+ const { store, withTransaction, run, status, reason, now: now2 } = params;
633
700
  await withTransaction(async (txn) => {
634
701
  const latest = await store.getScheduleForUpdate({ tenant_id: run.tenant_id, id: run.schedule_id }, txn);
635
- const updated = await store.updateRunStatus({ tenant_id: run.tenant_id, id: run.id, status }, txn);
702
+ const updated = await store.updateRunStatus(
703
+ { tenant_id: run.tenant_id, id: run.id, status, reason: reason ?? null },
704
+ txn
705
+ );
636
706
  if (updated === void 0) {
637
707
  return;
638
708
  }
@@ -697,6 +767,7 @@ async function dispatchScheduledRuns(params) {
697
767
  run,
698
768
  now: now2,
699
769
  status: "failed",
770
+ reason: scheduleRunFailureReason(error),
700
771
  withTransaction
701
772
  });
702
773
  failed += 1;
@@ -912,6 +983,7 @@ import {
912
983
  decodeOffsetPageToken,
913
984
  paginateOffsetRows
914
985
  } from "@truefoundry/trueforge-core/agent-session/store/OffsetPageToken";
986
+ import { sql as sql3 } from "kysely";
915
987
 
916
988
  // src/utils/id.ts
917
989
  import { ulid } from "ulid";
@@ -967,6 +1039,7 @@ function toRunRecord(row) {
967
1039
  status: row.status,
968
1040
  created_by_subject: CreatedBySubjectSchema2.parse(row.created_by_subject),
969
1041
  triggered_at: row.triggered_at === null ? null : row.triggered_at.toISOString(),
1042
+ reason: row.reason,
970
1043
  created_at: row.created_at.toISOString(),
971
1044
  updated_at: row.updated_at.toISOString()
972
1045
  };
@@ -1086,10 +1159,20 @@ var PostgresScheduleStore = class {
1086
1159
  const { data, pagination } = paginateOffsetRows(rows, input.limit, offset);
1087
1160
  return { data: data.map(toScheduleRecord), pagination };
1088
1161
  }
1162
+ async getOwnedIds(input, transaction) {
1163
+ if (input.ids.length === 0) {
1164
+ return [];
1165
+ }
1166
+ const db = transaction ?? this.#db;
1167
+ const rows = await db.selectFrom("schedule").select("id").where("tenant_id", "=", input.tenant_id).where("id", "in", [...input.ids]).where(sql3`created_by_subject->>'subject_id'`, "=", input.subject_id).execute();
1168
+ return rows.map((row) => row.id);
1169
+ }
1089
1170
  async listRuns(input, transaction) {
1171
+ const offset = decodeOffsetPageToken(input.page_token);
1090
1172
  const db = transaction ?? this.#db;
1091
- const rows = await db.selectFrom("schedule_run").selectAll().where("tenant_id", "=", input.tenant_id).where("schedule_id", "=", input.schedule_id).orderBy("scheduled_for", "desc").orderBy("id").execute();
1092
- return rows.map(toRunRecord);
1173
+ const rows = await db.selectFrom("schedule_run").selectAll().where("tenant_id", "=", input.tenant_id).where("schedule_id", "=", input.schedule_id).orderBy("scheduled_for", "desc").orderBy("id").limit(input.limit + 1).offset(offset).execute();
1174
+ const { data, pagination } = paginateOffsetRows(rows, input.limit, offset);
1175
+ return { data: data.map(toRunRecord), pagination };
1093
1176
  }
1094
1177
  async getRun(input, transaction) {
1095
1178
  const db = transaction ?? this.#db;
@@ -1113,6 +1196,7 @@ var PostgresScheduleStore = class {
1113
1196
  status: input.status,
1114
1197
  created_by_subject: json(input.created_by_subject),
1115
1198
  triggered_at: input.triggered_at ?? null,
1199
+ reason: input.reason ?? null,
1116
1200
  created_at: now(),
1117
1201
  updated_at: now()
1118
1202
  }).returningAll().executeTakeFirstOrThrow();
@@ -1126,7 +1210,9 @@ var PostgresScheduleStore = class {
1126
1210
  }
1127
1211
  async updateRunStatus(input, transaction) {
1128
1212
  const db = transaction ?? this.#db;
1129
- const patch = input.status === "triggered" ? { status: input.status, triggered_at: now(), updated_at: now() } : { status: input.status, updated_at: now() };
1213
+ const timestamp = now();
1214
+ const reason = input.status === "failed" ? input.reason ?? null : null;
1215
+ const patch = input.status === "triggered" ? { status: input.status, triggered_at: timestamp, reason, updated_at: timestamp } : { status: input.status, reason, updated_at: timestamp };
1130
1216
  const row = await db.updateTable("schedule_run").set(patch).where("tenant_id", "=", input.tenant_id).where("id", "=", input.id).returningAll().executeTakeFirst();
1131
1217
  return row === void 0 ? void 0 : toRunRecord(row);
1132
1218
  }