@truefoundry/trueforge 0.2.0-rc.1 → 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.
- package/dist/_frontend/assets/AgentCodeSnippets-N546FNNS-DlWVvctF.js +1 -0
- package/dist/_frontend/assets/AgentCodeSnippets-N546FNNS-DlWVvctF.js.br +0 -0
- package/dist/_frontend/assets/AgentCodeSnippets-N546FNNS-DlWVvctF.js.gz +0 -0
- package/dist/_frontend/assets/AgentMetricChart-YWJYVYYA-DTDXcVgE.js +1 -0
- package/dist/_frontend/assets/AgentMetricChart-YWJYVYYA-DTDXcVgE.js.br +0 -0
- package/dist/_frontend/assets/AgentMetricChart-YWJYVYYA-DTDXcVgE.js.gz +0 -0
- package/dist/_frontend/assets/{AgentOverview-EEBHJC32-Bn4qidnv.js → AgentOverview-VF74XC7I-DuR4GDFb.js} +1 -1
- package/dist/_frontend/assets/AgentOverview-VF74XC7I-DuR4GDFb.js.br +0 -0
- package/dist/_frontend/assets/AgentOverview-VF74XC7I-DuR4GDFb.js.gz +0 -0
- package/dist/_frontend/assets/AgentSessionEventTimeline-RFR6LQMY-B_5nS70p.js +1 -0
- package/dist/_frontend/assets/AgentSessionEventTimeline-RFR6LQMY-B_5nS70p.js.br +0 -0
- package/dist/_frontend/assets/AgentSessionEventTimeline-RFR6LQMY-B_5nS70p.js.gz +0 -0
- package/dist/_frontend/assets/AgentSessionEventTimelineChart-27CQF6FX-DSTwylcS.js +1 -0
- package/dist/_frontend/assets/AgentSessionEventTimelineChart-27CQF6FX-DSTwylcS.js.br +0 -0
- package/dist/_frontend/assets/AgentSessionEventTimelineChart-27CQF6FX-DSTwylcS.js.gz +0 -0
- package/dist/_frontend/assets/AgentSessions-4IVX2SGD-Bf2N2ega.js +1 -0
- package/dist/_frontend/assets/AgentSessions-4IVX2SGD-Bf2N2ega.js.br +0 -0
- package/dist/_frontend/assets/AgentSessions-4IVX2SGD-Bf2N2ega.js.gz +0 -0
- package/dist/_frontend/assets/ConnectorSettings-R5VEP7BO-Cvdqimeu.js +1 -0
- package/dist/_frontend/assets/ConnectorSettings-R5VEP7BO-Cvdqimeu.js.br +0 -0
- package/dist/_frontend/assets/ConnectorSettings-R5VEP7BO-Cvdqimeu.js.gz +0 -0
- package/dist/_frontend/assets/{DockLayout-LM4AFMFY-DoBwJ3-e.js → DockLayout-F44RWGEY-DVcqWNpi.js} +1 -1
- package/dist/_frontend/assets/DrawerLayout-SQ323AVM-CrsDJpVR.js +2 -0
- package/dist/_frontend/assets/DrawerLayout-SQ323AVM-CrsDJpVR.js.br +0 -0
- package/dist/_frontend/assets/DrawerLayout-SQ323AVM-CrsDJpVR.js.gz +0 -0
- package/dist/_frontend/assets/ModelSettings-6QLS63HM-B0omK7y_.js +1 -0
- package/dist/_frontend/assets/ModelSettings-6QLS63HM-B0omK7y_.js.br +0 -0
- package/dist/_frontend/assets/ModelSettings-6QLS63HM-B0omK7y_.js.gz +0 -0
- package/dist/_frontend/assets/SandboxSettings-OLKDXIQS-O1pf1zn0.js +1 -0
- package/dist/_frontend/assets/SandboxSettings-OLKDXIQS-O1pf1zn0.js.br +0 -0
- package/dist/_frontend/assets/SandboxSettings-OLKDXIQS-O1pf1zn0.js.gz +0 -0
- package/dist/_frontend/assets/SchedulesPage-TMOTK6DR-D9JlkZFv.js +1 -0
- package/dist/_frontend/assets/SchedulesPage-TMOTK6DR-D9JlkZFv.js.br +0 -0
- package/dist/_frontend/assets/SchedulesPage-TMOTK6DR-D9JlkZFv.js.gz +0 -0
- package/dist/_frontend/assets/SettingsBuilder-GISAH2WU-2fVa9yeg.js +2 -0
- package/dist/_frontend/assets/SettingsBuilder-GISAH2WU-2fVa9yeg.js.br +0 -0
- package/dist/_frontend/assets/SettingsBuilder-GISAH2WU-2fVa9yeg.js.gz +0 -0
- package/dist/_frontend/assets/ShellRouteSync-EN33DUQ7-C280D67g.js +1 -0
- package/dist/_frontend/assets/ShellRouteSync-EN33DUQ7-C280D67g.js.br +0 -0
- package/dist/_frontend/assets/ShellRouteSync-EN33DUQ7-C280D67g.js.gz +0 -0
- package/dist/_frontend/assets/SidebarLayout-35K4AKTC-0-Mjo6gf.js +2 -0
- package/dist/_frontend/assets/SidebarLayout-35K4AKTC-0-Mjo6gf.js.br +0 -0
- package/dist/_frontend/assets/SidebarLayout-35K4AKTC-0-Mjo6gf.js.gz +0 -0
- package/dist/_frontend/assets/SkillSettings-JSX2BTII-BriJH4Oj.js +1 -0
- package/dist/_frontend/assets/SkillSettings-JSX2BTII-BriJH4Oj.js.br +0 -0
- package/dist/_frontend/assets/SkillSettings-JSX2BTII-BriJH4Oj.js.gz +0 -0
- package/dist/_frontend/assets/TrueForgeUIWithRouter-6VCR7ES3-CtIaYnA8.js +1 -0
- package/dist/_frontend/assets/WidgetLayout-RKBSN2FZ-u6iVYu3w.js +1 -0
- package/dist/_frontend/assets/WidgetLayout-RKBSN2FZ-u6iVYu3w.js.br +0 -0
- package/dist/_frontend/assets/WidgetLayout-RKBSN2FZ-u6iVYu3w.js.gz +0 -0
- package/dist/_frontend/assets/{chunk-62JRHF6Z-BLb_tkPU.js → chunk-62JRHF6Z-DYrEQoq5.js} +1 -1
- package/dist/_frontend/assets/chunk-62JRHF6Z-DYrEQoq5.js.br +0 -0
- package/dist/_frontend/assets/chunk-62JRHF6Z-DYrEQoq5.js.gz +0 -0
- package/dist/_frontend/assets/chunk-73FQVITT-mgvTPDmd.js +1 -0
- package/dist/_frontend/assets/chunk-73FQVITT-mgvTPDmd.js.br +0 -0
- package/dist/_frontend/assets/chunk-73FQVITT-mgvTPDmd.js.gz +0 -0
- package/dist/_frontend/assets/chunk-GIPFF6FZ-DPTdcXQj.js +2 -0
- package/dist/_frontend/assets/chunk-GIPFF6FZ-DPTdcXQj.js.br +0 -0
- package/dist/_frontend/assets/chunk-GIPFF6FZ-DPTdcXQj.js.gz +0 -0
- package/dist/_frontend/assets/chunk-LUG7E6BL-QKvrInc2.js +1 -0
- package/dist/_frontend/assets/chunk-LUG7E6BL-QKvrInc2.js.br +0 -0
- package/dist/_frontend/assets/chunk-LUG7E6BL-QKvrInc2.js.gz +0 -0
- package/dist/_frontend/assets/cssMode-BNfxrwWp.js +1 -0
- package/dist/_frontend/assets/cssMode-BNfxrwWp.js.br +0 -0
- package/dist/_frontend/assets/cssMode-BNfxrwWp.js.gz +0 -0
- package/dist/_frontend/assets/{freemarker2-mt8l8QVE.js → freemarker2-ClbLzW-k.js} +1 -1
- package/dist/_frontend/assets/freemarker2-ClbLzW-k.js.br +0 -0
- package/dist/_frontend/assets/freemarker2-ClbLzW-k.js.gz +0 -0
- package/dist/_frontend/assets/{handlebars-C97jT8Zn.js → handlebars-5nE6yTDt.js} +1 -1
- package/dist/_frontend/assets/handlebars-5nE6yTDt.js.br +0 -0
- package/dist/_frontend/assets/handlebars-5nE6yTDt.js.gz +0 -0
- package/dist/_frontend/assets/{html-DKtvlaWU.js → html-BZRf7Zhg.js} +1 -1
- package/dist/_frontend/assets/html-BZRf7Zhg.js.br +0 -0
- package/dist/_frontend/assets/html-BZRf7Zhg.js.gz +0 -0
- package/dist/_frontend/assets/htmlMode-C6O73C_r.js +1 -0
- package/dist/_frontend/assets/htmlMode-C6O73C_r.js.br +0 -0
- package/dist/_frontend/assets/htmlMode-C6O73C_r.js.gz +0 -0
- package/dist/_frontend/assets/{index-D8eVAzN5.css → index-BBGLYdJn.css} +1 -1
- package/dist/_frontend/assets/index-BBGLYdJn.css.br +0 -0
- package/dist/_frontend/assets/index-BBGLYdJn.css.gz +0 -0
- package/dist/_frontend/assets/index-D0Yf366e.js +18 -0
- package/dist/_frontend/assets/index-D0Yf366e.js.br +0 -0
- package/dist/_frontend/assets/index-D0Yf366e.js.gz +0 -0
- package/dist/_frontend/assets/{index-BW-oaxAt.js → index-DBjak9Sg.js} +4 -4
- package/dist/_frontend/assets/index-DBjak9Sg.js.br +0 -0
- package/dist/_frontend/assets/index-DBjak9Sg.js.gz +0 -0
- package/dist/_frontend/assets/index-DhA9jnhv.css +1 -0
- package/dist/_frontend/assets/index-DhA9jnhv.css.br +0 -0
- package/dist/_frontend/assets/index-DhA9jnhv.css.gz +0 -0
- package/dist/_frontend/assets/index-XpZpj5Rl.js +933 -0
- package/dist/_frontend/assets/index-XpZpj5Rl.js.br +0 -0
- package/dist/_frontend/assets/index-XpZpj5Rl.js.gz +0 -0
- package/dist/_frontend/assets/{javascript-Cs0N3w-s.js → javascript-CrSAQdU4.js} +1 -1
- package/dist/_frontend/assets/{jsonMode-CqrfFSVA.js → jsonMode-Dal25yu2.js} +4 -4
- package/dist/_frontend/assets/jsonMode-Dal25yu2.js.br +0 -0
- package/dist/_frontend/assets/jsonMode-Dal25yu2.js.gz +0 -0
- package/dist/_frontend/assets/{liquid-C11lKF6J.js → liquid-Ci7gjLGv.js} +1 -1
- package/dist/_frontend/assets/liquid-Ci7gjLGv.js.br +0 -0
- package/dist/_frontend/assets/liquid-Ci7gjLGv.js.gz +0 -0
- package/dist/_frontend/assets/{lspLanguageFeatures-DBZtnSMo.js → lspLanguageFeatures-rM-QiA57.js} +1 -1
- package/dist/_frontend/assets/lspLanguageFeatures-rM-QiA57.js.br +0 -0
- package/dist/_frontend/assets/lspLanguageFeatures-rM-QiA57.js.gz +0 -0
- package/dist/_frontend/assets/{mdx-CCo4oKJJ.js → mdx-J3rSuJw4.js} +1 -1
- package/dist/_frontend/assets/mdx-J3rSuJw4.js.br +0 -0
- package/dist/_frontend/assets/mdx-J3rSuJw4.js.gz +0 -0
- package/dist/_frontend/assets/{python-627g_SSG.js → python-BSpXGEco.js} +1 -1
- package/dist/_frontend/assets/python-BSpXGEco.js.br +0 -0
- package/dist/_frontend/assets/python-BSpXGEco.js.gz +0 -0
- package/dist/_frontend/assets/{razor-BGDxoA7p.js → razor-DLV1uhEc.js} +1 -1
- package/dist/_frontend/assets/razor-DLV1uhEc.js.br +0 -0
- package/dist/_frontend/assets/razor-DLV1uhEc.js.gz +0 -0
- package/dist/_frontend/assets/{tsMode-gPT7Bbjh.js → tsMode-CQqRu3mP.js} +1 -1
- package/dist/_frontend/assets/tsMode-CQqRu3mP.js.br +0 -0
- package/dist/_frontend/assets/tsMode-CQqRu3mP.js.gz +0 -0
- package/dist/_frontend/assets/{typescript-Cb0PzreF.js → typescript-BExfm66c.js} +1 -1
- package/dist/_frontend/assets/typescript-BExfm66c.js.br +0 -0
- package/dist/_frontend/assets/typescript-BExfm66c.js.gz +0 -0
- package/dist/_frontend/assets/{workers-BAgwFgJ0.js → workers-Cn25A5Lb.js} +1 -1
- package/dist/_frontend/assets/workers-Cn25A5Lb.js.br +0 -0
- package/dist/_frontend/assets/workers-Cn25A5Lb.js.gz +0 -0
- package/dist/_frontend/assets/{xml-BpvCCHF9.js → xml-D2IDD-hb.js} +1 -1
- package/dist/_frontend/assets/xml-D2IDD-hb.js.br +0 -0
- package/dist/_frontend/assets/xml-D2IDD-hb.js.gz +0 -0
- package/dist/_frontend/assets/{yaml-f3XKmHoH.js → yaml-CY4c2A0Y.js} +1 -1
- package/dist/_frontend/assets/yaml-CY4c2A0Y.js.br +0 -0
- package/dist/_frontend/assets/yaml-CY4c2A0Y.js.gz +0 -0
- package/dist/_frontend/index.html +5 -2
- package/dist/controller-main.js +119 -21
- package/dist/controller-main.js.map +1 -1
- package/dist/main.js +15177 -13274
- package/dist/main.js.map +1 -1
- package/dist/postgres/migrations/20260831_000001_session_external_id.js.map +1 -1
- package/dist/postgres/migrations/20260902_000002_agent_external_id.js.map +1 -1
- package/dist/postgres/migrations/20260903_000002_created_by_subject.js +1 -1
- package/dist/postgres/migrations/20260903_000002_created_by_subject.js.map +1 -1
- package/dist/postgres/migrations/20260904_000001_schedule_agent_id.js.map +1 -1
- package/dist/postgres/migrations/20260904_000002_session_source.js +31 -0
- package/dist/postgres/migrations/20260904_000002_session_source.js.map +1 -0
- package/dist/postgres/migrations/20260904_000003_session_metadata_gin.js +24 -0
- package/dist/postgres/migrations/20260904_000003_session_metadata_gin.js.map +1 -0
- package/dist/postgres/migrations/20260907_000001_schedule_run_reason.js +15 -0
- package/dist/postgres/migrations/20260907_000001_schedule_run_reason.js.map +1 -0
- package/dist/sqlite/migrations/20260831_000001_session_external_id.js.map +1 -1
- package/dist/sqlite/migrations/20260902_000001_session_metadata.js.map +1 -1
- package/dist/sqlite/migrations/20260902_000002_agent_external_id.js.map +1 -1
- package/dist/sqlite/migrations/20260903_000001_drop_agent_metadata.js.map +1 -1
- package/dist/sqlite/migrations/20260903_000002_created_by_subject.js +1 -1
- package/dist/sqlite/migrations/20260903_000002_created_by_subject.js.map +1 -1
- package/dist/sqlite/migrations/20260904_000001_schedule_agent_id.js.map +1 -1
- package/dist/sqlite/migrations/20260904_000002_session_source.js +28 -0
- package/dist/sqlite/migrations/20260904_000002_session_source.js.map +1 -0
- package/dist/sqlite/migrations/20260907_000001_schedule_run_reason.js +17 -0
- package/dist/sqlite/migrations/20260907_000001_schedule_run_reason.js.map +1 -0
- package/package.json +17 -16
- package/dist/_frontend/assets/AgentCodeSnippets-NZOFJE57-Bn94i1Ie.js +0 -1
- package/dist/_frontend/assets/AgentCodeSnippets-NZOFJE57-Bn94i1Ie.js.br +0 -0
- package/dist/_frontend/assets/AgentCodeSnippets-NZOFJE57-Bn94i1Ie.js.gz +0 -0
- package/dist/_frontend/assets/AgentMetricChart-JPU3MFQ2-pn-oatgo.js +0 -1
- package/dist/_frontend/assets/AgentMetricChart-JPU3MFQ2-pn-oatgo.js.br +0 -0
- package/dist/_frontend/assets/AgentMetricChart-JPU3MFQ2-pn-oatgo.js.gz +0 -0
- package/dist/_frontend/assets/AgentOverview-EEBHJC32-Bn4qidnv.js.br +0 -0
- package/dist/_frontend/assets/AgentOverview-EEBHJC32-Bn4qidnv.js.gz +0 -0
- package/dist/_frontend/assets/AgentSessionEventTimeline-26Z6IB3B-D_yCZz1m.js +0 -1
- package/dist/_frontend/assets/AgentSessionEventTimeline-26Z6IB3B-D_yCZz1m.js.br +0 -0
- package/dist/_frontend/assets/AgentSessionEventTimeline-26Z6IB3B-D_yCZz1m.js.gz +0 -0
- package/dist/_frontend/assets/AgentSessionEventTimelineChart-CGCU7WBK-JGwv6e5T.js +0 -1
- package/dist/_frontend/assets/AgentSessionEventTimelineChart-CGCU7WBK-JGwv6e5T.js.br +0 -0
- package/dist/_frontend/assets/AgentSessionEventTimelineChart-CGCU7WBK-JGwv6e5T.js.gz +0 -0
- package/dist/_frontend/assets/AgentSessions-3MPDZASK-Dp6vYfGN.js +0 -1
- package/dist/_frontend/assets/AgentSessions-3MPDZASK-Dp6vYfGN.js.br +0 -0
- package/dist/_frontend/assets/AgentSessions-3MPDZASK-Dp6vYfGN.js.gz +0 -0
- package/dist/_frontend/assets/ConnectorSettings-MXFRWWR6-BEwXZbPM.js +0 -1
- package/dist/_frontend/assets/ConnectorSettings-MXFRWWR6-BEwXZbPM.js.br +0 -0
- package/dist/_frontend/assets/ConnectorSettings-MXFRWWR6-BEwXZbPM.js.gz +0 -0
- package/dist/_frontend/assets/DrawerLayout-JR3O6RRB-BZ9sffvm.js +0 -2
- package/dist/_frontend/assets/DrawerLayout-JR3O6RRB-BZ9sffvm.js.br +0 -0
- package/dist/_frontend/assets/DrawerLayout-JR3O6RRB-BZ9sffvm.js.gz +0 -0
- package/dist/_frontend/assets/ModelSettings-G7IFNC2Y-DxVYHG2m.js +0 -1
- package/dist/_frontend/assets/ModelSettings-G7IFNC2Y-DxVYHG2m.js.br +0 -0
- package/dist/_frontend/assets/ModelSettings-G7IFNC2Y-DxVYHG2m.js.gz +0 -0
- package/dist/_frontend/assets/SandboxSettings-NXAANMAX-DhC28qE6.js +0 -1
- package/dist/_frontend/assets/SandboxSettings-NXAANMAX-DhC28qE6.js.br +0 -0
- package/dist/_frontend/assets/SandboxSettings-NXAANMAX-DhC28qE6.js.gz +0 -0
- package/dist/_frontend/assets/SchedulesPage-KKLUDO6B-CWdrd7KY.js +0 -1
- package/dist/_frontend/assets/SchedulesPage-KKLUDO6B-CWdrd7KY.js.br +0 -0
- package/dist/_frontend/assets/SchedulesPage-KKLUDO6B-CWdrd7KY.js.gz +0 -0
- package/dist/_frontend/assets/SettingsBuilder-L34IQ56S-BQuxGH5w.js +0 -2
- package/dist/_frontend/assets/SettingsBuilder-L34IQ56S-BQuxGH5w.js.br +0 -0
- package/dist/_frontend/assets/SettingsBuilder-L34IQ56S-BQuxGH5w.js.gz +0 -0
- package/dist/_frontend/assets/ShellRouteSync-CEBETGEJ-C4NOyyck.js +0 -1
- package/dist/_frontend/assets/ShellRouteSync-CEBETGEJ-C4NOyyck.js.br +0 -0
- package/dist/_frontend/assets/ShellRouteSync-CEBETGEJ-C4NOyyck.js.gz +0 -0
- package/dist/_frontend/assets/SidebarLayout-A2HJPPHS-kusjDx4J.js +0 -2
- package/dist/_frontend/assets/SidebarLayout-A2HJPPHS-kusjDx4J.js.br +0 -0
- package/dist/_frontend/assets/SidebarLayout-A2HJPPHS-kusjDx4J.js.gz +0 -0
- package/dist/_frontend/assets/SkillSettings-FGGMSUNO-CjrGBX5J.js +0 -1
- package/dist/_frontend/assets/SkillSettings-FGGMSUNO-CjrGBX5J.js.br +0 -0
- package/dist/_frontend/assets/SkillSettings-FGGMSUNO-CjrGBX5J.js.gz +0 -0
- package/dist/_frontend/assets/TrueForgeUIWithRouter-MZVJWJMB-CZ8BOF1k.js +0 -1
- package/dist/_frontend/assets/WidgetLayout-6QM45OQQ-Bp0tde9v.js +0 -1
- package/dist/_frontend/assets/WidgetLayout-6QM45OQQ-Bp0tde9v.js.br +0 -0
- package/dist/_frontend/assets/WidgetLayout-6QM45OQQ-Bp0tde9v.js.gz +0 -0
- package/dist/_frontend/assets/chunk-62JRHF6Z-BLb_tkPU.js.br +0 -0
- package/dist/_frontend/assets/chunk-62JRHF6Z-BLb_tkPU.js.gz +0 -0
- package/dist/_frontend/assets/chunk-DMMZSZTN-BBNhHida.js +0 -1
- package/dist/_frontend/assets/chunk-DMMZSZTN-BBNhHida.js.br +0 -0
- package/dist/_frontend/assets/chunk-DMMZSZTN-BBNhHida.js.gz +0 -0
- package/dist/_frontend/assets/chunk-FJW36PD7-R_XSoO50.js +0 -2
- package/dist/_frontend/assets/chunk-FJW36PD7-R_XSoO50.js.br +0 -0
- package/dist/_frontend/assets/chunk-FJW36PD7-R_XSoO50.js.gz +0 -0
- package/dist/_frontend/assets/chunk-WVE3F724-CL71bP7s.js +0 -1
- package/dist/_frontend/assets/chunk-WVE3F724-CL71bP7s.js.br +0 -0
- package/dist/_frontend/assets/chunk-WVE3F724-CL71bP7s.js.gz +0 -0
- package/dist/_frontend/assets/cssMode-CVefs5W-.js +0 -1
- package/dist/_frontend/assets/cssMode-CVefs5W-.js.br +0 -0
- package/dist/_frontend/assets/cssMode-CVefs5W-.js.gz +0 -0
- package/dist/_frontend/assets/freemarker2-mt8l8QVE.js.br +0 -0
- package/dist/_frontend/assets/freemarker2-mt8l8QVE.js.gz +0 -0
- package/dist/_frontend/assets/handlebars-C97jT8Zn.js.br +0 -0
- package/dist/_frontend/assets/handlebars-C97jT8Zn.js.gz +0 -0
- package/dist/_frontend/assets/html-DKtvlaWU.js.br +0 -0
- package/dist/_frontend/assets/html-DKtvlaWU.js.gz +0 -0
- package/dist/_frontend/assets/htmlMode-BHsrcqlc.js +0 -1
- package/dist/_frontend/assets/htmlMode-BHsrcqlc.js.br +0 -0
- package/dist/_frontend/assets/htmlMode-BHsrcqlc.js.gz +0 -0
- package/dist/_frontend/assets/index-BW-oaxAt.js.br +0 -0
- package/dist/_frontend/assets/index-BW-oaxAt.js.gz +0 -0
- package/dist/_frontend/assets/index-CB2SckMT.css +0 -1
- package/dist/_frontend/assets/index-CB2SckMT.css.br +0 -0
- package/dist/_frontend/assets/index-CB2SckMT.css.gz +0 -0
- package/dist/_frontend/assets/index-D8eVAzN5.css.br +0 -0
- package/dist/_frontend/assets/index-D8eVAzN5.css.gz +0 -0
- package/dist/_frontend/assets/index-DVCxCjDg.js +0 -923
- package/dist/_frontend/assets/index-DVCxCjDg.js.br +0 -0
- package/dist/_frontend/assets/index-DVCxCjDg.js.gz +0 -0
- package/dist/_frontend/assets/index-DuKoX4ct.js +0 -18
- package/dist/_frontend/assets/index-DuKoX4ct.js.br +0 -0
- package/dist/_frontend/assets/index-DuKoX4ct.js.gz +0 -0
- package/dist/_frontend/assets/jsonMode-CqrfFSVA.js.br +0 -0
- package/dist/_frontend/assets/jsonMode-CqrfFSVA.js.gz +0 -0
- package/dist/_frontend/assets/liquid-C11lKF6J.js.br +0 -0
- package/dist/_frontend/assets/liquid-C11lKF6J.js.gz +0 -0
- package/dist/_frontend/assets/lspLanguageFeatures-DBZtnSMo.js.br +0 -0
- package/dist/_frontend/assets/lspLanguageFeatures-DBZtnSMo.js.gz +0 -0
- package/dist/_frontend/assets/mdx-CCo4oKJJ.js.br +0 -0
- package/dist/_frontend/assets/mdx-CCo4oKJJ.js.gz +0 -0
- package/dist/_frontend/assets/python-627g_SSG.js.br +0 -0
- package/dist/_frontend/assets/python-627g_SSG.js.gz +0 -0
- package/dist/_frontend/assets/razor-BGDxoA7p.js.br +0 -0
- package/dist/_frontend/assets/razor-BGDxoA7p.js.gz +0 -0
- package/dist/_frontend/assets/tsMode-gPT7Bbjh.js.br +0 -0
- package/dist/_frontend/assets/tsMode-gPT7Bbjh.js.gz +0 -0
- package/dist/_frontend/assets/typescript-Cb0PzreF.js.br +0 -0
- package/dist/_frontend/assets/typescript-Cb0PzreF.js.gz +0 -0
- package/dist/_frontend/assets/workers-BAgwFgJ0.js.br +0 -0
- package/dist/_frontend/assets/workers-BAgwFgJ0.js.gz +0 -0
- package/dist/_frontend/assets/xml-BpvCCHF9.js.br +0 -0
- package/dist/_frontend/assets/xml-BpvCCHF9.js.gz +0 -0
- package/dist/_frontend/assets/yaml-f3XKmHoH.js.br +0 -0
- package/dist/_frontend/assets/yaml-f3XKmHoH.js.gz +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{l as e}from"./index-
|
|
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};
|
|
Binary file
|
|
Binary file
|
|
@@ -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
|
|
9
|
-
|
|
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>
|
package/dist/controller-main.js
CHANGED
|
@@ -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"),
|
|
@@ -348,7 +381,18 @@ var configuration = standalone ? {
|
|
|
348
381
|
raw: getEnv("TRUEFOUNDRY_MTLS_ENABLED"),
|
|
349
382
|
defaultValue: false
|
|
350
383
|
}),
|
|
351
|
-
TRUEFOUNDRY_MTLS_CERTS_DIR: getEnv("TRUEFOUNDRY_MTLS_CERTS_DIR", { defaultValue: "/etc/tls/truefoundry" }) ?? "/etc/tls/truefoundry"
|
|
384
|
+
TRUEFOUNDRY_MTLS_CERTS_DIR: getEnv("TRUEFOUNDRY_MTLS_CERTS_DIR", { defaultValue: "/etc/tls/truefoundry" }) ?? "/etc/tls/truefoundry",
|
|
385
|
+
TRUEFOUNDRY_SANDBOX_ENABLED: parseBoolean({
|
|
386
|
+
envKey: "TRUEFOUNDRY_SANDBOX_ENABLED",
|
|
387
|
+
raw: getEnv("TRUEFOUNDRY_SANDBOX_ENABLED"),
|
|
388
|
+
defaultValue: false
|
|
389
|
+
}),
|
|
390
|
+
TRUEFOUNDRY_SANDBOX_PROVIDER: parseTrueFoundrySandboxProvider(
|
|
391
|
+
getEnv("TRUEFOUNDRY_SANDBOX_PROVIDER", { required: false })
|
|
392
|
+
),
|
|
393
|
+
TRUEFOUNDRY_SANDBOX_API_KEY: getEnv("TRUEFOUNDRY_SANDBOX_API_KEY", { required: false }),
|
|
394
|
+
TRUEFOUNDRY_SANDBOX_SERVER_URL: getEnv("TRUEFOUNDRY_SANDBOX_SERVER_URL", { required: false }),
|
|
395
|
+
TRUEFOUNDRY_SANDBOX_SETTINGS: getEnv("TRUEFOUNDRY_SANDBOX_SETTINGS", { required: false })
|
|
352
396
|
};
|
|
353
397
|
function isOidcConfigured(value) {
|
|
354
398
|
return !value.STANDALONE && value.OIDC !== void 0;
|
|
@@ -356,10 +400,42 @@ function isOidcConfigured(value) {
|
|
|
356
400
|
function isTrueFoundryModeEnabled(config = configuration) {
|
|
357
401
|
return !config.STANDALONE && config.TRUEFOUNDRY_SERVICEFOUNDRY_SERVER_URL !== void 0;
|
|
358
402
|
}
|
|
359
|
-
if (isTrueFoundryModeEnabled(configuration)
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
403
|
+
if (isTrueFoundryModeEnabled(configuration)) {
|
|
404
|
+
if (isOidcConfigured(configuration)) {
|
|
405
|
+
throw new Error(
|
|
406
|
+
"TRUEFOUNDRY_SERVICEFOUNDRY_SERVER_URL (TrueFoundry mode) and OIDC (SSO) cannot both be enabled at once."
|
|
407
|
+
);
|
|
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
|
+
}
|
|
412
|
+
if (configuration.TRUEFOUNDRY_SANDBOX_ENABLED) {
|
|
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) {
|
|
419
|
+
throw new Error(
|
|
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."
|
|
436
|
+
);
|
|
437
|
+
}
|
|
438
|
+
}
|
|
363
439
|
}
|
|
364
440
|
var config_default = configuration;
|
|
365
441
|
|
|
@@ -538,10 +614,14 @@ var ScheduleRunSchema = z2.object({
|
|
|
538
614
|
status: ScheduleRunStatusSchema,
|
|
539
615
|
created_by_subject: CreatedBySubjectSchema,
|
|
540
616
|
triggered_at: NullableIsoTimestamp,
|
|
617
|
+
reason: z2.string().nullable(),
|
|
541
618
|
created_at: IsoTimestamp,
|
|
542
619
|
updated_at: IsoTimestamp
|
|
543
620
|
}).strict().openapi("ScheduleRun");
|
|
544
|
-
var ListScheduleRunsResponseSchema = z2.object({
|
|
621
|
+
var ListScheduleRunsResponseSchema = z2.object({
|
|
622
|
+
data: z2.array(ScheduleRunSchema),
|
|
623
|
+
pagination: TokenPaginationSchema
|
|
624
|
+
}).openapi("ListScheduleRunsResponse");
|
|
545
625
|
var CreateScheduleRunRequestSchema = z2.object({
|
|
546
626
|
schedule_id: z2.string().min(1).max(64).describe("Immutable schedule identifier.")
|
|
547
627
|
}).strict().describe("Trigger an immediate run for the given schedule. The task is taken from the schedule manifest.").openapi("CreateScheduleRunRequest");
|
|
@@ -593,13 +673,17 @@ function nextTriggerAfter(input) {
|
|
|
593
673
|
|
|
594
674
|
// src/controller/scheduleDispatch.ts
|
|
595
675
|
var DISPATCH_BATCH_LIMIT = 20;
|
|
676
|
+
function scheduleRunFailureReason(error) {
|
|
677
|
+
return error instanceof Error && error.message.trim() !== "" ? error.message : "Schedule run failed";
|
|
678
|
+
}
|
|
596
679
|
var SCHEDULE_DISPATCH_INTERVAL_MS = 6e4;
|
|
597
680
|
var SCHEDULE_DISPATCH_LOOP_NAME = "schedule-dispatch";
|
|
598
681
|
function executeScheduledRun(client) {
|
|
599
682
|
return async ({ run, schedule }) => {
|
|
600
683
|
const { data: session } = await client.internal.sessions.getOrCreateByExternalId({
|
|
601
684
|
externalId: run.id,
|
|
602
|
-
agent: { name: schedule.agent_name }
|
|
685
|
+
agent: { name: schedule.agent_name },
|
|
686
|
+
source: { type: "schedule", id: schedule.id, runId: run.id }
|
|
603
687
|
});
|
|
604
688
|
const turns = await client.sessions.listTurns(session.id, { limit: 1 });
|
|
605
689
|
if (turns.data.length > 0) {
|
|
@@ -612,10 +696,13 @@ function executeScheduledRun(client) {
|
|
|
612
696
|
};
|
|
613
697
|
}
|
|
614
698
|
async function finishScheduledRun(params) {
|
|
615
|
-
const { store, withTransaction, run, status, now: now2 } = params;
|
|
699
|
+
const { store, withTransaction, run, status, reason, now: now2 } = params;
|
|
616
700
|
await withTransaction(async (txn) => {
|
|
617
701
|
const latest = await store.getScheduleForUpdate({ tenant_id: run.tenant_id, id: run.schedule_id }, txn);
|
|
618
|
-
const updated = await store.updateRunStatus(
|
|
702
|
+
const updated = await store.updateRunStatus(
|
|
703
|
+
{ tenant_id: run.tenant_id, id: run.id, status, reason: reason ?? null },
|
|
704
|
+
txn
|
|
705
|
+
);
|
|
619
706
|
if (updated === void 0) {
|
|
620
707
|
return;
|
|
621
708
|
}
|
|
@@ -680,6 +767,7 @@ async function dispatchScheduledRuns(params) {
|
|
|
680
767
|
run,
|
|
681
768
|
now: now2,
|
|
682
769
|
status: "failed",
|
|
770
|
+
reason: scheduleRunFailureReason(error),
|
|
683
771
|
withTransaction
|
|
684
772
|
});
|
|
685
773
|
failed += 1;
|
|
@@ -890,10 +978,12 @@ function isUniqueViolation(err) {
|
|
|
890
978
|
}
|
|
891
979
|
|
|
892
980
|
// src/db/postgres/schedule-store/PostgresScheduleStore.ts
|
|
981
|
+
import { CreatedBySubjectSchema as CreatedBySubjectSchema2 } from "@truefoundry/trueforge-core/agent-session";
|
|
893
982
|
import {
|
|
894
983
|
decodeOffsetPageToken,
|
|
895
984
|
paginateOffsetRows
|
|
896
985
|
} from "@truefoundry/trueforge-core/agent-session/store/OffsetPageToken";
|
|
986
|
+
import { sql as sql3 } from "kysely";
|
|
897
987
|
|
|
898
988
|
// src/utils/id.ts
|
|
899
989
|
import { ulid } from "ulid";
|
|
@@ -901,12 +991,6 @@ function newId() {
|
|
|
901
991
|
return ulid().toLowerCase();
|
|
902
992
|
}
|
|
903
993
|
|
|
904
|
-
// src/db/createdBySubject.ts
|
|
905
|
-
import { CreatedBySubjectSchema as CreatedBySubjectSchema2 } from "@truefoundry/trueforge-core/agent-session";
|
|
906
|
-
function parseStoredCreatedBySubject(value) {
|
|
907
|
-
return CreatedBySubjectSchema2.parse(value);
|
|
908
|
-
}
|
|
909
|
-
|
|
910
994
|
// src/db/postgres/sqlExpressions.ts
|
|
911
995
|
import { sql as sql2 } from "kysely";
|
|
912
996
|
function json(value) {
|
|
@@ -940,7 +1024,7 @@ function toScheduleRecord(row) {
|
|
|
940
1024
|
name: row.name,
|
|
941
1025
|
manifest: parseStoredScheduleManifest(row.manifest),
|
|
942
1026
|
status: row.status,
|
|
943
|
-
created_by_subject:
|
|
1027
|
+
created_by_subject: CreatedBySubjectSchema2.parse(row.created_by_subject),
|
|
944
1028
|
created_at: row.created_at.toISOString(),
|
|
945
1029
|
updated_at: row.updated_at.toISOString()
|
|
946
1030
|
};
|
|
@@ -953,8 +1037,9 @@ function toRunRecord(row) {
|
|
|
953
1037
|
name: row.name,
|
|
954
1038
|
scheduled_for: row.scheduled_for.toISOString(),
|
|
955
1039
|
status: row.status,
|
|
956
|
-
created_by_subject:
|
|
1040
|
+
created_by_subject: CreatedBySubjectSchema2.parse(row.created_by_subject),
|
|
957
1041
|
triggered_at: row.triggered_at === null ? null : row.triggered_at.toISOString(),
|
|
1042
|
+
reason: row.reason,
|
|
958
1043
|
created_at: row.created_at.toISOString(),
|
|
959
1044
|
updated_at: row.updated_at.toISOString()
|
|
960
1045
|
};
|
|
@@ -1074,10 +1159,20 @@ var PostgresScheduleStore = class {
|
|
|
1074
1159
|
const { data, pagination } = paginateOffsetRows(rows, input.limit, offset);
|
|
1075
1160
|
return { data: data.map(toScheduleRecord), pagination };
|
|
1076
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
|
+
}
|
|
1077
1170
|
async listRuns(input, transaction) {
|
|
1171
|
+
const offset = decodeOffsetPageToken(input.page_token);
|
|
1078
1172
|
const db = transaction ?? this.#db;
|
|
1079
|
-
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();
|
|
1080
|
-
|
|
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 };
|
|
1081
1176
|
}
|
|
1082
1177
|
async getRun(input, transaction) {
|
|
1083
1178
|
const db = transaction ?? this.#db;
|
|
@@ -1101,6 +1196,7 @@ var PostgresScheduleStore = class {
|
|
|
1101
1196
|
status: input.status,
|
|
1102
1197
|
created_by_subject: json(input.created_by_subject),
|
|
1103
1198
|
triggered_at: input.triggered_at ?? null,
|
|
1199
|
+
reason: input.reason ?? null,
|
|
1104
1200
|
created_at: now(),
|
|
1105
1201
|
updated_at: now()
|
|
1106
1202
|
}).returningAll().executeTakeFirstOrThrow();
|
|
@@ -1114,7 +1210,9 @@ var PostgresScheduleStore = class {
|
|
|
1114
1210
|
}
|
|
1115
1211
|
async updateRunStatus(input, transaction) {
|
|
1116
1212
|
const db = transaction ?? this.#db;
|
|
1117
|
-
const
|
|
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 };
|
|
1118
1216
|
const row = await db.updateTable("schedule_run").set(patch).where("tenant_id", "=", input.tenant_id).where("id", "=", input.id).returningAll().executeTakeFirst();
|
|
1119
1217
|
return row === void 0 ? void 0 : toRunRecord(row);
|
|
1120
1218
|
}
|