@truefoundry/trueforge 0.2.0-rc.3 → 0.2.0-rc.5
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 → AgentCodeSnippets-V5A56M7R-ZCh9CtX_.js} +1 -1
- package/dist/_frontend/assets/AgentCodeSnippets-V5A56M7R-ZCh9CtX_.js.br +0 -0
- package/dist/_frontend/assets/AgentCodeSnippets-V5A56M7R-ZCh9CtX_.js.gz +0 -0
- package/dist/_frontend/assets/AgentMetricChart-GEADURES-CIR5UtB4.js +1 -0
- package/dist/_frontend/assets/AgentMetricChart-GEADURES-CIR5UtB4.js.br +0 -0
- package/dist/_frontend/assets/AgentMetricChart-GEADURES-CIR5UtB4.js.gz +0 -0
- package/dist/_frontend/assets/{AgentOverview-VF74XC7I-DuR4GDFb.js → AgentOverview-NPC4P2EY-Z0AslRUd.js} +1 -1
- package/dist/_frontend/assets/AgentOverview-NPC4P2EY-Z0AslRUd.js.br +0 -0
- package/dist/_frontend/assets/AgentOverview-NPC4P2EY-Z0AslRUd.js.gz +0 -0
- package/dist/_frontend/assets/{AgentSessionEventTimeline-RFR6LQMY-B_5nS70p.js → AgentSessionEventTimeline-UUXOJXTC-Nk5ZgtJk.js} +1 -1
- package/dist/_frontend/assets/AgentSessionEventTimeline-UUXOJXTC-Nk5ZgtJk.js.br +0 -0
- package/dist/_frontend/assets/AgentSessionEventTimeline-UUXOJXTC-Nk5ZgtJk.js.gz +0 -0
- package/dist/_frontend/assets/{AgentSessionEventTimelineChart-27CQF6FX-DSTwylcS.js → AgentSessionEventTimelineChart-FIAQCYJC-TBWekOBI.js} +1 -1
- package/dist/_frontend/assets/AgentSessionEventTimelineChart-FIAQCYJC-TBWekOBI.js.br +0 -0
- package/dist/_frontend/assets/AgentSessionEventTimelineChart-FIAQCYJC-TBWekOBI.js.gz +0 -0
- package/dist/_frontend/assets/AgentSessions-WHODEG2M-OzQblCn4.js +1 -0
- package/dist/_frontend/assets/AgentSessions-WHODEG2M-OzQblCn4.js.br +0 -0
- package/dist/_frontend/assets/AgentSessions-WHODEG2M-OzQblCn4.js.gz +0 -0
- package/dist/_frontend/assets/{ConnectorSettings-R5VEP7BO-Cvdqimeu.js → ConnectorSettings-QTAI4TQX-PySj_xEm.js} +1 -1
- package/dist/_frontend/assets/ConnectorSettings-QTAI4TQX-PySj_xEm.js.br +0 -0
- package/dist/_frontend/assets/ConnectorSettings-QTAI4TQX-PySj_xEm.js.gz +0 -0
- package/dist/_frontend/assets/{DockLayout-F44RWGEY-DVcqWNpi.js → DockLayout-TATYU5SV-DAuT7yes.js} +1 -1
- package/dist/_frontend/assets/{DrawerLayout-SQ323AVM-CrsDJpVR.js → DrawerLayout-DXHNV33K-BP-6TUEf.js} +2 -2
- package/dist/_frontend/assets/DrawerLayout-DXHNV33K-BP-6TUEf.js.br +0 -0
- package/dist/_frontend/assets/DrawerLayout-DXHNV33K-BP-6TUEf.js.gz +0 -0
- package/dist/_frontend/assets/{ModelSettings-6QLS63HM-B0omK7y_.js → ModelSettings-UWTBHQRG-L5KYrHBM.js} +1 -1
- package/dist/_frontend/assets/ModelSettings-UWTBHQRG-L5KYrHBM.js.br +0 -0
- package/dist/_frontend/assets/ModelSettings-UWTBHQRG-L5KYrHBM.js.gz +0 -0
- package/dist/_frontend/assets/SandboxSettings-BITQONS3-COVuckfo.js +1 -0
- package/dist/_frontend/assets/SandboxSettings-BITQONS3-COVuckfo.js.br +0 -0
- package/dist/_frontend/assets/SandboxSettings-BITQONS3-COVuckfo.js.gz +0 -0
- package/dist/_frontend/assets/SchedulesPage-JIUWNYUH-5f3ROPme.js +1 -0
- package/dist/_frontend/assets/SchedulesPage-JIUWNYUH-5f3ROPme.js.br +0 -0
- package/dist/_frontend/assets/SchedulesPage-JIUWNYUH-5f3ROPme.js.gz +0 -0
- package/dist/_frontend/assets/{SettingsBuilder-GISAH2WU-2fVa9yeg.js → SettingsBuilder-3OA4UCIM-AN2PJd1q.js} +2 -2
- package/dist/_frontend/assets/SettingsBuilder-3OA4UCIM-AN2PJd1q.js.br +0 -0
- package/dist/_frontend/assets/SettingsBuilder-3OA4UCIM-AN2PJd1q.js.gz +0 -0
- package/dist/_frontend/assets/{ShellRouteSync-EN33DUQ7-C280D67g.js → ShellRouteSync-J74MV23Q-CDk4uzrR.js} +1 -1
- package/dist/_frontend/assets/ShellRouteSync-J74MV23Q-CDk4uzrR.js.br +0 -0
- package/dist/_frontend/assets/ShellRouteSync-J74MV23Q-CDk4uzrR.js.gz +0 -0
- package/dist/_frontend/assets/{SidebarLayout-35K4AKTC-0-Mjo6gf.js → SidebarLayout-EQXQPYIU-zWCTPIcp.js} +2 -2
- package/dist/_frontend/assets/SidebarLayout-EQXQPYIU-zWCTPIcp.js.br +0 -0
- package/dist/_frontend/assets/SidebarLayout-EQXQPYIU-zWCTPIcp.js.gz +0 -0
- package/dist/_frontend/assets/{SkillSettings-JSX2BTII-BriJH4Oj.js → SkillSettings-KQ6GQ7JW-oZVHsKV_.js} +1 -1
- package/dist/_frontend/assets/SkillSettings-KQ6GQ7JW-oZVHsKV_.js.br +0 -0
- package/dist/_frontend/assets/SkillSettings-KQ6GQ7JW-oZVHsKV_.js.gz +0 -0
- package/dist/_frontend/assets/TrueForgeUIWithRouter-R3UXQZRY-wD0P6NXT.js +1 -0
- package/dist/_frontend/assets/{WidgetLayout-RKBSN2FZ-u6iVYu3w.js → WidgetLayout-YWZTYFZL-BgYVWW8O.js} +1 -1
- package/dist/_frontend/assets/WidgetLayout-YWZTYFZL-BgYVWW8O.js.br +0 -0
- package/dist/_frontend/assets/WidgetLayout-YWZTYFZL-BgYVWW8O.js.gz +0 -0
- package/dist/_frontend/assets/{chunk-73FQVITT-mgvTPDmd.js → chunk-4MCIDE2C-ClJFqC75.js} +1 -1
- package/dist/_frontend/assets/chunk-4MCIDE2C-ClJFqC75.js.br +0 -0
- package/dist/_frontend/assets/chunk-4MCIDE2C-ClJFqC75.js.gz +0 -0
- package/dist/_frontend/assets/{chunk-62JRHF6Z-DYrEQoq5.js → chunk-62JRHF6Z-CXLsU_my.js} +1 -1
- package/dist/_frontend/assets/chunk-62JRHF6Z-CXLsU_my.js.br +0 -0
- package/dist/_frontend/assets/chunk-62JRHF6Z-CXLsU_my.js.gz +0 -0
- package/dist/_frontend/assets/{chunk-LUG7E6BL-QKvrInc2.js → chunk-7NYDADYN-_y_WJnHd.js} +1 -1
- package/dist/_frontend/assets/chunk-7NYDADYN-_y_WJnHd.js.br +0 -0
- package/dist/_frontend/assets/chunk-7NYDADYN-_y_WJnHd.js.gz +0 -0
- package/dist/_frontend/assets/{chunk-GIPFF6FZ-DPTdcXQj.js → chunk-ZZB3JIBQ-EN4V28Ji.js} +2 -2
- package/dist/_frontend/assets/chunk-ZZB3JIBQ-EN4V28Ji.js.br +0 -0
- package/dist/_frontend/assets/chunk-ZZB3JIBQ-EN4V28Ji.js.gz +0 -0
- package/dist/_frontend/assets/{cssMode-BNfxrwWp.js → cssMode-Dk1ChNt4.js} +1 -1
- package/dist/_frontend/assets/cssMode-Dk1ChNt4.js.br +0 -0
- package/dist/_frontend/assets/cssMode-Dk1ChNt4.js.gz +0 -0
- package/dist/_frontend/assets/{freemarker2-ClbLzW-k.js → freemarker2-D_Yi-Euz.js} +1 -1
- package/dist/_frontend/assets/freemarker2-D_Yi-Euz.js.br +0 -0
- package/dist/_frontend/assets/freemarker2-D_Yi-Euz.js.gz +0 -0
- package/dist/_frontend/assets/{handlebars-5nE6yTDt.js → handlebars-Cm_UQxos.js} +1 -1
- package/dist/_frontend/assets/handlebars-Cm_UQxos.js.br +0 -0
- package/dist/_frontend/assets/handlebars-Cm_UQxos.js.gz +0 -0
- package/dist/_frontend/assets/{html-BZRf7Zhg.js → html-BIx_CMMA.js} +1 -1
- package/dist/_frontend/assets/html-BIx_CMMA.js.br +0 -0
- package/dist/_frontend/assets/html-BIx_CMMA.js.gz +0 -0
- package/dist/_frontend/assets/{htmlMode-C6O73C_r.js → htmlMode-D7eeA6bm.js} +1 -1
- package/dist/_frontend/assets/htmlMode-D7eeA6bm.js.br +0 -0
- package/dist/_frontend/assets/htmlMode-D7eeA6bm.js.gz +0 -0
- package/dist/_frontend/assets/{index-BBGLYdJn.css → index-B01pXqvC.css} +1 -1
- package/dist/_frontend/assets/index-B01pXqvC.css.br +0 -0
- package/dist/_frontend/assets/{index-BBGLYdJn.css.gz → index-B01pXqvC.css.gz} +0 -0
- package/dist/_frontend/assets/{index-DBjak9Sg.js → index-BJUe77Ib.js} +3 -3
- package/dist/_frontend/assets/index-BJUe77Ib.js.br +0 -0
- package/dist/_frontend/assets/index-BJUe77Ib.js.gz +0 -0
- package/dist/_frontend/assets/index-Y_4XXAao.js +933 -0
- package/dist/_frontend/assets/index-Y_4XXAao.js.br +0 -0
- package/dist/_frontend/assets/index-Y_4XXAao.js.gz +0 -0
- package/dist/_frontend/assets/{index-D0Yf366e.js → index-uWXj7DW5.js} +1 -1
- package/dist/_frontend/assets/index-uWXj7DW5.js.br +0 -0
- package/dist/_frontend/assets/index-uWXj7DW5.js.gz +0 -0
- package/dist/_frontend/assets/{javascript-CrSAQdU4.js → javascript-CHojKZO8.js} +1 -1
- package/dist/_frontend/assets/{jsonMode-Dal25yu2.js → jsonMode-BTk9mIUo.js} +1 -1
- package/dist/_frontend/assets/jsonMode-BTk9mIUo.js.br +0 -0
- package/dist/_frontend/assets/jsonMode-BTk9mIUo.js.gz +0 -0
- package/dist/_frontend/assets/{liquid-Ci7gjLGv.js → liquid-M5ngFTv5.js} +1 -1
- package/dist/_frontend/assets/liquid-M5ngFTv5.js.br +0 -0
- package/dist/_frontend/assets/liquid-M5ngFTv5.js.gz +0 -0
- package/dist/_frontend/assets/{lspLanguageFeatures-rM-QiA57.js → lspLanguageFeatures-jPhJA8WX.js} +1 -1
- package/dist/_frontend/assets/lspLanguageFeatures-jPhJA8WX.js.br +0 -0
- package/dist/_frontend/assets/lspLanguageFeatures-jPhJA8WX.js.gz +0 -0
- package/dist/_frontend/assets/{mdx-J3rSuJw4.js → mdx-DmyHsr0E.js} +1 -1
- package/dist/_frontend/assets/mdx-DmyHsr0E.js.br +0 -0
- package/dist/_frontend/assets/mdx-DmyHsr0E.js.gz +0 -0
- package/dist/_frontend/assets/{python-BSpXGEco.js → python-BRFA9b-I.js} +1 -1
- package/dist/_frontend/assets/python-BRFA9b-I.js.br +0 -0
- package/dist/_frontend/assets/python-BRFA9b-I.js.gz +0 -0
- package/dist/_frontend/assets/{razor-DLV1uhEc.js → razor-CYsS4Kjw.js} +1 -1
- package/dist/_frontend/assets/razor-CYsS4Kjw.js.br +0 -0
- package/dist/_frontend/assets/razor-CYsS4Kjw.js.gz +0 -0
- package/dist/_frontend/assets/{tsMode-CQqRu3mP.js → tsMode-COQtB6OT.js} +1 -1
- package/dist/_frontend/assets/tsMode-COQtB6OT.js.br +0 -0
- package/dist/_frontend/assets/tsMode-COQtB6OT.js.gz +0 -0
- package/dist/_frontend/assets/{typescript-BExfm66c.js → typescript-B3uUksf0.js} +1 -1
- package/dist/_frontend/assets/typescript-B3uUksf0.js.br +0 -0
- package/dist/_frontend/assets/typescript-B3uUksf0.js.gz +0 -0
- package/dist/_frontend/assets/{workers-Cn25A5Lb.js → workers-CgLq606Q.js} +1 -1
- package/dist/_frontend/assets/workers-CgLq606Q.js.br +0 -0
- package/dist/_frontend/assets/workers-CgLq606Q.js.gz +0 -0
- package/dist/_frontend/assets/{xml-D2IDD-hb.js → xml-YO228FLn.js} +1 -1
- package/dist/_frontend/assets/xml-YO228FLn.js.br +0 -0
- package/dist/_frontend/assets/xml-YO228FLn.js.gz +0 -0
- package/dist/_frontend/assets/{yaml-CY4c2A0Y.js → yaml-CirMKB9x.js} +1 -1
- package/dist/_frontend/assets/yaml-CirMKB9x.js.br +0 -0
- package/dist/_frontend/assets/yaml-CirMKB9x.js.gz +0 -0
- package/dist/_frontend/index.html +2 -2
- package/dist/controller-main.js +101 -108
- package/dist/controller-main.js.map +1 -1
- package/dist/main.js +471 -282
- package/dist/main.js.map +1 -1
- package/package.json +2 -2
- 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 +0 -1
- 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-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.br +0 -0
- package/dist/_frontend/assets/AgentSessionEventTimeline-RFR6LQMY-B_5nS70p.js.gz +0 -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 +0 -1
- 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.br +0 -0
- package/dist/_frontend/assets/ConnectorSettings-R5VEP7BO-Cvdqimeu.js.gz +0 -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.br +0 -0
- package/dist/_frontend/assets/ModelSettings-6QLS63HM-B0omK7y_.js.gz +0 -0
- package/dist/_frontend/assets/SandboxSettings-OLKDXIQS-O1pf1zn0.js +0 -1
- 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 +0 -1
- 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.br +0 -0
- package/dist/_frontend/assets/SettingsBuilder-GISAH2WU-2fVa9yeg.js.gz +0 -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.br +0 -0
- package/dist/_frontend/assets/SidebarLayout-35K4AKTC-0-Mjo6gf.js.gz +0 -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 +0 -1
- 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-DYrEQoq5.js.br +0 -0
- package/dist/_frontend/assets/chunk-62JRHF6Z-DYrEQoq5.js.gz +0 -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.br +0 -0
- package/dist/_frontend/assets/chunk-GIPFF6FZ-DPTdcXQj.js.gz +0 -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.br +0 -0
- package/dist/_frontend/assets/cssMode-BNfxrwWp.js.gz +0 -0
- 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-5nE6yTDt.js.br +0 -0
- package/dist/_frontend/assets/handlebars-5nE6yTDt.js.gz +0 -0
- 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.br +0 -0
- package/dist/_frontend/assets/htmlMode-C6O73C_r.js.gz +0 -0
- package/dist/_frontend/assets/index-BBGLYdJn.css.br +0 -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-DBjak9Sg.js.br +0 -0
- package/dist/_frontend/assets/index-DBjak9Sg.js.gz +0 -0
- package/dist/_frontend/assets/index-XpZpj5Rl.js +0 -933
- package/dist/_frontend/assets/index-XpZpj5Rl.js.br +0 -0
- package/dist/_frontend/assets/index-XpZpj5Rl.js.gz +0 -0
- 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-Ci7gjLGv.js.br +0 -0
- package/dist/_frontend/assets/liquid-Ci7gjLGv.js.gz +0 -0
- 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-J3rSuJw4.js.br +0 -0
- package/dist/_frontend/assets/mdx-J3rSuJw4.js.gz +0 -0
- 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-DLV1uhEc.js.br +0 -0
- package/dist/_frontend/assets/razor-DLV1uhEc.js.gz +0 -0
- 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-BExfm66c.js.br +0 -0
- package/dist/_frontend/assets/typescript-BExfm66c.js.gz +0 -0
- 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-D2IDD-hb.js.br +0 -0
- package/dist/_frontend/assets/xml-D2IDD-hb.js.gz +0 -0
- package/dist/_frontend/assets/yaml-CY4c2A0Y.js.br +0 -0
- package/dist/_frontend/assets/yaml-CY4c2A0Y.js.gz +0 -0
package/dist/controller-main.js
CHANGED
|
@@ -16,6 +16,7 @@ var DEFAULT_POSTGRES_DB = "trueforge";
|
|
|
16
16
|
var DEFAULT_POSTGRES_HOST = "localhost";
|
|
17
17
|
var DEFAULT_POSTGRES_PORT = 5432;
|
|
18
18
|
var DEFAULT_REDIS_URL = "redis://localhost:6379";
|
|
19
|
+
var STANDALONE_TRUEFORGE_API_KEY = "trueforge-standalone";
|
|
19
20
|
var DEFAULT_OIDC_USER_REFERENCE_CLAIM = "sub";
|
|
20
21
|
var DEFAULT_OIDC_USER_DISPLAY_NAME_CLAIM = "name";
|
|
21
22
|
var DEFAULT_OIDC_USER_ROLE_CLAIM = "groups";
|
|
@@ -330,6 +331,7 @@ var shared = {
|
|
|
330
331
|
}),
|
|
331
332
|
PUBLIC_BASE_URL: parsePublicBaseUrl(getEnv("PUBLIC_BASE_URL", { defaultValue: "" })),
|
|
332
333
|
SERVER_URL: getEnv("SERVER_URL", { defaultValue: `http://localhost:${String(port)}` }) ?? `http://localhost:${String(port)}`,
|
|
334
|
+
TRUEFORGE_API_KEY: standalone ? getEnv("TRUEFORGE_API_KEY", { defaultValue: STANDALONE_TRUEFORGE_API_KEY }) ?? STANDALONE_TRUEFORGE_API_KEY : getEnv("TRUEFORGE_API_KEY", { required: true }) ?? "",
|
|
333
335
|
TRUEFORGE_MTLS_ENABLED: parseBoolean({
|
|
334
336
|
envKey: "TRUEFORGE_MTLS_ENABLED",
|
|
335
337
|
raw: getEnv("TRUEFORGE_MTLS_ENABLED"),
|
|
@@ -437,11 +439,11 @@ if (isTrueFoundryModeEnabled(configuration)) {
|
|
|
437
439
|
}
|
|
438
440
|
}
|
|
439
441
|
}
|
|
442
|
+
if (!configuration.STANDALONE && configuration.TRUEFORGE_API_KEY.trim() === "") {
|
|
443
|
+
throw new Error("TRUEFORGE_API_KEY must not be empty when STANDALONE=false.");
|
|
444
|
+
}
|
|
440
445
|
var config_default = configuration;
|
|
441
446
|
|
|
442
|
-
// src/controller.ts
|
|
443
|
-
import { TrueForge } from "@truefoundry/trueforge-sdk";
|
|
444
|
-
|
|
445
447
|
// src/controller/Controller.ts
|
|
446
448
|
var CONTROLLER_STOPPED = "controller-stopped";
|
|
447
449
|
var Controller = class {
|
|
@@ -536,6 +538,9 @@ var Controller = class {
|
|
|
536
538
|
}
|
|
537
539
|
};
|
|
538
540
|
|
|
541
|
+
// src/controller/scheduleDispatch.ts
|
|
542
|
+
import { TrueForge } from "@truefoundry/trueforge-sdk";
|
|
543
|
+
|
|
539
544
|
// src/db/scheduleStore.ts
|
|
540
545
|
import { randomUUID } from "crypto";
|
|
541
546
|
|
|
@@ -626,6 +631,9 @@ var CreateScheduleRunRequestSchema = z2.object({
|
|
|
626
631
|
schedule_id: z2.string().min(1).max(64).describe("Immutable schedule identifier.")
|
|
627
632
|
}).strict().describe("Trigger an immediate run for the given schedule. The task is taken from the schedule manifest.").openapi("CreateScheduleRunRequest");
|
|
628
633
|
var CreateScheduleRunResponseSchema = z2.object({ data: ScheduleRunSchema }).openapi("CreateScheduleRunResponse");
|
|
634
|
+
var ExecuteScheduleRunRequestSchema = z2.object({
|
|
635
|
+
schedule_run_id: z2.string().min(1).max(64).describe("Immutable schedule run identifier.")
|
|
636
|
+
}).strict().openapi("ExecuteScheduleRunRequest");
|
|
629
637
|
|
|
630
638
|
// src/db/scheduleStore.ts
|
|
631
639
|
function cronRunName(scheduledFor) {
|
|
@@ -656,6 +664,71 @@ function shouldSyncPendingRun(previous, next) {
|
|
|
656
664
|
return previous.status !== next.status || previous.manifest.cron !== next.manifest.cron || previous.manifest.timezone !== next.manifest.timezone;
|
|
657
665
|
}
|
|
658
666
|
|
|
667
|
+
// src/http/tls.ts
|
|
668
|
+
import { readFileSync } from "fs";
|
|
669
|
+
import { createServer as createHttpsServer } from "https";
|
|
670
|
+
import { join } from "path";
|
|
671
|
+
import { rootCertificates, TLSSocket } from "tls";
|
|
672
|
+
import { Agent, fetch as undiciFetch } from "undici";
|
|
673
|
+
var TLS_CERT_FILE = "tls.crt";
|
|
674
|
+
var TLS_KEY_FILE = "tls.key";
|
|
675
|
+
var TLS_CA_FILE = "ca.crt";
|
|
676
|
+
function readTlsFile(input) {
|
|
677
|
+
const filePath = join(input.dir, input.fileName);
|
|
678
|
+
try {
|
|
679
|
+
return readFileSync(filePath, "utf8");
|
|
680
|
+
} catch (error) {
|
|
681
|
+
throw new Error(
|
|
682
|
+
`${input.enabledEnvKey} is true but ${filePath} could not be read. Check that the mTLS secret is mounted at the configured certs directory, or set ${input.enabledEnvKey}=false.`,
|
|
683
|
+
{ cause: error }
|
|
684
|
+
);
|
|
685
|
+
}
|
|
686
|
+
}
|
|
687
|
+
function normalizeTlsUrl(input) {
|
|
688
|
+
if (!input.enabled) {
|
|
689
|
+
return input.url;
|
|
690
|
+
}
|
|
691
|
+
const parsed = new URL(input.url);
|
|
692
|
+
if (parsed.protocol === "http:") {
|
|
693
|
+
parsed.protocol = "https:";
|
|
694
|
+
}
|
|
695
|
+
return parsed.href;
|
|
696
|
+
}
|
|
697
|
+
function createTlsDispatcher(options) {
|
|
698
|
+
if (!options.enabled) {
|
|
699
|
+
return void 0;
|
|
700
|
+
}
|
|
701
|
+
const read = (fileName) => readTlsFile({ dir: options.dir, fileName, enabledEnvKey: options.enabledEnvKey });
|
|
702
|
+
return new Agent({
|
|
703
|
+
connect: {
|
|
704
|
+
// Appended to the default roots, not replacing them: passing `ca` alone would override Node's
|
|
705
|
+
// entire trust store for this dispatcher (breaks public HTTPS peers on the same agent).
|
|
706
|
+
ca: [...rootCertificates, read(TLS_CA_FILE)],
|
|
707
|
+
cert: read(TLS_CERT_FILE),
|
|
708
|
+
key: read(TLS_KEY_FILE)
|
|
709
|
+
}
|
|
710
|
+
});
|
|
711
|
+
}
|
|
712
|
+
function requestUrlFromFetchInput(input) {
|
|
713
|
+
if (typeof input === "string") {
|
|
714
|
+
return input;
|
|
715
|
+
}
|
|
716
|
+
if (input instanceof URL) {
|
|
717
|
+
return input.href;
|
|
718
|
+
}
|
|
719
|
+
return input.url;
|
|
720
|
+
}
|
|
721
|
+
function createTlsFetch(options) {
|
|
722
|
+
const dispatcher = createTlsDispatcher({
|
|
723
|
+
...options,
|
|
724
|
+
enabledEnvKey: "TRUEFORGE_MTLS_ENABLED"
|
|
725
|
+
});
|
|
726
|
+
if (dispatcher === void 0) {
|
|
727
|
+
return void 0;
|
|
728
|
+
}
|
|
729
|
+
return (input, init) => undiciFetch(requestUrlFromFetchInput(input), { ...init, dispatcher });
|
|
730
|
+
}
|
|
731
|
+
|
|
659
732
|
// src/runtime/cron.ts
|
|
660
733
|
import { CronExpressionParser } from "cron-parser";
|
|
661
734
|
function nextTriggerAfter(input) {
|
|
@@ -678,22 +751,19 @@ function scheduleRunFailureReason(error) {
|
|
|
678
751
|
}
|
|
679
752
|
var SCHEDULE_DISPATCH_INTERVAL_MS = 6e4;
|
|
680
753
|
var SCHEDULE_DISPATCH_LOOP_NAME = "schedule-dispatch";
|
|
681
|
-
function
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
agent: { name: schedule.agent_name },
|
|
686
|
-
source: { type: "schedule", id: schedule.id, runId: run.id }
|
|
687
|
-
});
|
|
688
|
-
const turns = await client.sessions.listTurns(session.id, { limit: 1 });
|
|
689
|
-
if (turns.data.length > 0) {
|
|
690
|
-
return;
|
|
691
|
-
}
|
|
692
|
-
await client.sessions.createTurn(session.id, {
|
|
693
|
-
input: [{ type: "user.message", content: schedule.manifest.task }],
|
|
694
|
-
previousTurnId: "none"
|
|
695
|
-
});
|
|
754
|
+
function createHttpScheduleRunExecutor() {
|
|
755
|
+
const tls = {
|
|
756
|
+
enabled: config_default.TRUEFORGE_MTLS_ENABLED,
|
|
757
|
+
dir: config_default.TRUEFORGE_MTLS_CERTS_DIR
|
|
696
758
|
};
|
|
759
|
+
const tlsFetch = createTlsFetch(tls);
|
|
760
|
+
const client = new TrueForge({
|
|
761
|
+
baseUrl: normalizeTlsUrl({ url: config_default.SERVER_URL, enabled: tls.enabled }),
|
|
762
|
+
token: config_default.TRUEFORGE_API_KEY,
|
|
763
|
+
timeoutInSeconds: 60,
|
|
764
|
+
...tlsFetch === void 0 ? {} : { fetch: tlsFetch }
|
|
765
|
+
});
|
|
766
|
+
return (scheduleRunId) => client.internal.schedules.executeRun({ scheduleRunId });
|
|
697
767
|
}
|
|
698
768
|
async function finishScheduledRun(params) {
|
|
699
769
|
const { store, withTransaction, run, status, reason, now: now2 } = params;
|
|
@@ -792,14 +862,15 @@ async function dispatchScheduledRuns(params) {
|
|
|
792
862
|
return { dispatched, failed };
|
|
793
863
|
}
|
|
794
864
|
function scheduleDispatchLoop(params) {
|
|
795
|
-
const { scheduleStore,
|
|
865
|
+
const { scheduleStore, withTransaction, logger } = params;
|
|
866
|
+
const executeRun = createHttpScheduleRunExecutor();
|
|
796
867
|
return {
|
|
797
868
|
name: SCHEDULE_DISPATCH_LOOP_NAME,
|
|
798
869
|
intervalMs: SCHEDULE_DISPATCH_INTERVAL_MS,
|
|
799
870
|
async tick(signal) {
|
|
800
871
|
const result = await dispatchScheduledRuns({
|
|
801
872
|
store: scheduleStore,
|
|
802
|
-
onTriggered:
|
|
873
|
+
onTriggered: (item) => executeRun(item.run.id),
|
|
803
874
|
logger,
|
|
804
875
|
withTransaction,
|
|
805
876
|
signal
|
|
@@ -811,94 +882,17 @@ function scheduleDispatchLoop(params) {
|
|
|
811
882
|
};
|
|
812
883
|
}
|
|
813
884
|
|
|
814
|
-
// src/http/tls.ts
|
|
815
|
-
import { readFileSync } from "fs";
|
|
816
|
-
import { createServer as createHttpsServer } from "https";
|
|
817
|
-
import { join } from "path";
|
|
818
|
-
import { rootCertificates, TLSSocket } from "tls";
|
|
819
|
-
import { Agent, fetch as undiciFetch } from "undici";
|
|
820
|
-
var TLS_CERT_FILE = "tls.crt";
|
|
821
|
-
var TLS_KEY_FILE = "tls.key";
|
|
822
|
-
var TLS_CA_FILE = "ca.crt";
|
|
823
|
-
function readTlsFile(input) {
|
|
824
|
-
const filePath = join(input.dir, input.fileName);
|
|
825
|
-
try {
|
|
826
|
-
return readFileSync(filePath, "utf8");
|
|
827
|
-
} catch (error) {
|
|
828
|
-
throw new Error(
|
|
829
|
-
`${input.enabledEnvKey} is true but ${filePath} could not be read. Check that the mTLS secret is mounted at the configured certs directory, or set ${input.enabledEnvKey}=false.`,
|
|
830
|
-
{ cause: error }
|
|
831
|
-
);
|
|
832
|
-
}
|
|
833
|
-
}
|
|
834
|
-
function normalizeTlsUrl(input) {
|
|
835
|
-
if (!input.enabled) {
|
|
836
|
-
return input.url;
|
|
837
|
-
}
|
|
838
|
-
const parsed = new URL(input.url);
|
|
839
|
-
if (parsed.protocol === "http:") {
|
|
840
|
-
parsed.protocol = "https:";
|
|
841
|
-
}
|
|
842
|
-
return parsed.href;
|
|
843
|
-
}
|
|
844
|
-
function createTlsDispatcher(options) {
|
|
845
|
-
if (!options.enabled) {
|
|
846
|
-
return void 0;
|
|
847
|
-
}
|
|
848
|
-
const read = (fileName) => readTlsFile({ dir: options.dir, fileName, enabledEnvKey: options.enabledEnvKey });
|
|
849
|
-
return new Agent({
|
|
850
|
-
connect: {
|
|
851
|
-
// Appended to the default roots, not replacing them: passing `ca` alone would override Node's
|
|
852
|
-
// entire trust store for this dispatcher (breaks public HTTPS peers on the same agent).
|
|
853
|
-
ca: [...rootCertificates, read(TLS_CA_FILE)],
|
|
854
|
-
cert: read(TLS_CERT_FILE),
|
|
855
|
-
key: read(TLS_KEY_FILE)
|
|
856
|
-
}
|
|
857
|
-
});
|
|
858
|
-
}
|
|
859
|
-
function requestUrlFromFetchInput(input) {
|
|
860
|
-
if (typeof input === "string") {
|
|
861
|
-
return input;
|
|
862
|
-
}
|
|
863
|
-
if (input instanceof URL) {
|
|
864
|
-
return input.href;
|
|
865
|
-
}
|
|
866
|
-
return input.url;
|
|
867
|
-
}
|
|
868
|
-
function createTlsFetch(options) {
|
|
869
|
-
const dispatcher = createTlsDispatcher({
|
|
870
|
-
...options,
|
|
871
|
-
enabledEnvKey: "TRUEFORGE_MTLS_ENABLED"
|
|
872
|
-
});
|
|
873
|
-
if (dispatcher === void 0) {
|
|
874
|
-
return void 0;
|
|
875
|
-
}
|
|
876
|
-
return (input, init) => undiciFetch(requestUrlFromFetchInput(input), { ...init, dispatcher });
|
|
877
|
-
}
|
|
878
|
-
|
|
879
885
|
// src/controller.ts
|
|
880
|
-
function createScheduleApiClient(params) {
|
|
881
|
-
const baseUrl = normalizeTlsUrl({ url: params.baseUrl, enabled: params.tls.enabled });
|
|
882
|
-
const fetchImpl = createTlsFetch(params.tls);
|
|
883
|
-
return new TrueForge({
|
|
884
|
-
baseUrl,
|
|
885
|
-
auth: false,
|
|
886
|
-
...fetchImpl !== void 0 ? { fetch: fetchImpl } : {}
|
|
887
|
-
});
|
|
888
|
-
}
|
|
889
886
|
function createController(params) {
|
|
890
|
-
const { scheduleStore, withTransaction, logger, baseUrl } = params;
|
|
891
|
-
const tls = params.tls ?? { enabled: false, dir: "" };
|
|
892
887
|
return new Controller({
|
|
893
888
|
loops: [
|
|
894
889
|
scheduleDispatchLoop({
|
|
895
|
-
scheduleStore,
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
logger
|
|
890
|
+
scheduleStore: params.scheduleStore,
|
|
891
|
+
withTransaction: params.withTransaction,
|
|
892
|
+
logger: params.logger
|
|
899
893
|
})
|
|
900
894
|
],
|
|
901
|
-
logger
|
|
895
|
+
logger: params.logger
|
|
902
896
|
});
|
|
903
897
|
}
|
|
904
898
|
function runController(params) {
|
|
@@ -1179,6 +1173,11 @@ var PostgresScheduleStore = class {
|
|
|
1179
1173
|
const row = await db.selectFrom("schedule_run").selectAll().where("tenant_id", "=", input.tenant_id).where("id", "=", input.id).executeTakeFirst();
|
|
1180
1174
|
return row === void 0 ? void 0 : toRunRecord(row);
|
|
1181
1175
|
}
|
|
1176
|
+
async getRunById(input, transaction) {
|
|
1177
|
+
const db = transaction ?? this.#db;
|
|
1178
|
+
const row = await db.selectFrom("schedule_run").selectAll().where("id", "=", input.id).executeTakeFirst();
|
|
1179
|
+
return row === void 0 ? void 0 : toRunRecord(row);
|
|
1180
|
+
}
|
|
1182
1181
|
async getScheduledRunFor(input, transaction) {
|
|
1183
1182
|
const db = transaction ?? this.#db;
|
|
1184
1183
|
const row = await db.selectFrom("schedule_run").selectAll().where("tenant_id", "=", input.tenant_id).where("schedule_id", "=", input.schedule_id).where("status", "=", "scheduled").executeTakeFirst();
|
|
@@ -1333,20 +1332,14 @@ try {
|
|
|
1333
1332
|
statementTimeoutMs: config_default.POSTGRES_STATEMENT_TIMEOUT_MS,
|
|
1334
1333
|
idleInTransactionSessionTimeoutMs: config_default.POSTGRES_IDLE_IN_TRANSACTION_SESSION_TIMEOUT_MS
|
|
1335
1334
|
});
|
|
1336
|
-
const mtls = {
|
|
1337
|
-
enabled: config_default.TRUEFORGE_MTLS_ENABLED,
|
|
1338
|
-
dir: config_default.TRUEFORGE_MTLS_CERTS_DIR
|
|
1339
|
-
};
|
|
1340
1335
|
logger.info("Controller starting", {
|
|
1341
1336
|
serverUrl: config_default.SERVER_URL,
|
|
1342
|
-
mTlsEnabled:
|
|
1337
|
+
mTlsEnabled: config_default.TRUEFORGE_MTLS_ENABLED
|
|
1343
1338
|
});
|
|
1344
1339
|
runController({
|
|
1345
1340
|
scheduleStore: new PostgresScheduleStore(db),
|
|
1346
1341
|
withTransaction: (callback) => db.transaction().execute(callback),
|
|
1347
1342
|
logger,
|
|
1348
|
-
baseUrl: config_default.SERVER_URL,
|
|
1349
|
-
tls: mtls,
|
|
1350
1343
|
gracefulTimeoutSeconds: config_default.GRACEFUL_TIMEOUT_SECONDS,
|
|
1351
1344
|
onStopped: () => db.destroy()
|
|
1352
1345
|
});
|