@truefoundry/trueforge 0.2.0-rc.5 → 0.2.0-rc.6
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-V5A56M7R-ZCh9CtX_.js → AgentCodeSnippets-UWKIJI6U-BuMY_5q9.js} +1 -1
- package/dist/_frontend/assets/AgentCodeSnippets-UWKIJI6U-BuMY_5q9.js.br +0 -0
- package/dist/_frontend/assets/AgentCodeSnippets-UWKIJI6U-BuMY_5q9.js.gz +0 -0
- package/dist/_frontend/assets/AgentMetricChart-4ZJJED5Q-Ck2gd1mC.js +1 -0
- package/dist/_frontend/assets/AgentMetricChart-4ZJJED5Q-Ck2gd1mC.js.br +0 -0
- package/dist/_frontend/assets/AgentMetricChart-4ZJJED5Q-Ck2gd1mC.js.gz +0 -0
- package/dist/_frontend/assets/AgentOverview-UZBCVNMP-EMNirCRT.js +1 -0
- package/dist/_frontend/assets/AgentOverview-UZBCVNMP-EMNirCRT.js.br +0 -0
- package/dist/_frontend/assets/AgentOverview-UZBCVNMP-EMNirCRT.js.gz +0 -0
- package/dist/_frontend/assets/{AgentSessionEventTimeline-UUXOJXTC-Nk5ZgtJk.js → AgentSessionEventTimeline-N4RXG2NU-JgVOEYK9.js} +1 -1
- package/dist/_frontend/assets/AgentSessionEventTimeline-N4RXG2NU-JgVOEYK9.js.br +0 -0
- package/dist/_frontend/assets/AgentSessionEventTimeline-N4RXG2NU-JgVOEYK9.js.gz +0 -0
- package/dist/_frontend/assets/{AgentSessionEventTimelineChart-FIAQCYJC-TBWekOBI.js → AgentSessionEventTimelineChart-EMWNJMMK-BRwdPd5w.js} +1 -1
- package/dist/_frontend/assets/AgentSessionEventTimelineChart-EMWNJMMK-BRwdPd5w.js.br +0 -0
- package/dist/_frontend/assets/AgentSessionEventTimelineChart-EMWNJMMK-BRwdPd5w.js.gz +0 -0
- package/dist/_frontend/assets/{AgentSessions-WHODEG2M-OzQblCn4.js → AgentSessions-CD7JAQTC-BXh1e6-3.js} +1 -1
- package/dist/_frontend/assets/AgentSessions-CD7JAQTC-BXh1e6-3.js.br +0 -0
- package/dist/_frontend/assets/AgentSessions-CD7JAQTC-BXh1e6-3.js.gz +0 -0
- package/dist/_frontend/assets/{ConnectorSettings-QTAI4TQX-PySj_xEm.js → ConnectorSettings-GEI4S6SD-BUjOgTQp.js} +1 -1
- package/dist/_frontend/assets/ConnectorSettings-GEI4S6SD-BUjOgTQp.js.br +0 -0
- package/dist/_frontend/assets/ConnectorSettings-GEI4S6SD-BUjOgTQp.js.gz +0 -0
- package/dist/_frontend/assets/{DockLayout-TATYU5SV-DAuT7yes.js → DockLayout-JZ4DKDOR-jsSVZPx1.js} +1 -1
- package/dist/_frontend/assets/{DrawerLayout-DXHNV33K-BP-6TUEf.js → DrawerLayout-AV4FJTGV-DoyHvbgS.js} +2 -2
- package/dist/_frontend/assets/DrawerLayout-AV4FJTGV-DoyHvbgS.js.br +0 -0
- package/dist/_frontend/assets/DrawerLayout-AV4FJTGV-DoyHvbgS.js.gz +0 -0
- package/dist/_frontend/assets/{ModelSettings-UWTBHQRG-L5KYrHBM.js → ModelSettings-4TNETPJJ-1PfEncEw.js} +1 -1
- package/dist/_frontend/assets/ModelSettings-4TNETPJJ-1PfEncEw.js.br +0 -0
- package/dist/_frontend/assets/ModelSettings-4TNETPJJ-1PfEncEw.js.gz +0 -0
- package/dist/_frontend/assets/SandboxSettings-IEIWFKQW-DMx0nXkz.js +1 -0
- package/dist/_frontend/assets/SandboxSettings-IEIWFKQW-DMx0nXkz.js.br +0 -0
- package/dist/_frontend/assets/SandboxSettings-IEIWFKQW-DMx0nXkz.js.gz +0 -0
- package/dist/_frontend/assets/SchedulesPage-ZG5IMQI3-DM9Xo4uZ.js +1 -0
- package/dist/_frontend/assets/SchedulesPage-ZG5IMQI3-DM9Xo4uZ.js.br +0 -0
- package/dist/_frontend/assets/SchedulesPage-ZG5IMQI3-DM9Xo4uZ.js.gz +0 -0
- package/dist/_frontend/assets/{SettingsBuilder-3OA4UCIM-AN2PJd1q.js → SettingsBuilder-B2ULQPIT-D67kXI0z.js} +2 -2
- package/dist/_frontend/assets/SettingsBuilder-B2ULQPIT-D67kXI0z.js.br +0 -0
- package/dist/_frontend/assets/SettingsBuilder-B2ULQPIT-D67kXI0z.js.gz +0 -0
- package/dist/_frontend/assets/{ShellRouteSync-J74MV23Q-CDk4uzrR.js → ShellRouteSync-SJXFKUAJ-BhQD7AoV.js} +1 -1
- package/dist/_frontend/assets/ShellRouteSync-SJXFKUAJ-BhQD7AoV.js.br +0 -0
- package/dist/_frontend/assets/ShellRouteSync-SJXFKUAJ-BhQD7AoV.js.gz +0 -0
- package/dist/_frontend/assets/{SidebarLayout-EQXQPYIU-zWCTPIcp.js → SidebarLayout-XUM2Y6PA-BQdDTrNi.js} +2 -2
- package/dist/_frontend/assets/SidebarLayout-XUM2Y6PA-BQdDTrNi.js.br +0 -0
- package/dist/_frontend/assets/SidebarLayout-XUM2Y6PA-BQdDTrNi.js.gz +0 -0
- package/dist/_frontend/assets/{SkillSettings-KQ6GQ7JW-oZVHsKV_.js → SkillSettings-NHBL5ZXU-BmInxxan.js} +1 -1
- package/dist/_frontend/assets/SkillSettings-NHBL5ZXU-BmInxxan.js.br +0 -0
- package/dist/_frontend/assets/SkillSettings-NHBL5ZXU-BmInxxan.js.gz +0 -0
- package/dist/_frontend/assets/TrueForgeUIWithRouter-NVV7IXXP-DBsGykLD.js +1 -0
- package/dist/_frontend/assets/{WidgetLayout-YWZTYFZL-BgYVWW8O.js → WidgetLayout-T7DBLKV3-CfF0xPJV.js} +1 -1
- package/dist/_frontend/assets/WidgetLayout-T7DBLKV3-CfF0xPJV.js.br +0 -0
- package/dist/_frontend/assets/WidgetLayout-T7DBLKV3-CfF0xPJV.js.gz +0 -0
- package/dist/_frontend/assets/{chunk-4MCIDE2C-ClJFqC75.js → chunk-2QTH6JHX-DIiHfgUm.js} +1 -1
- package/dist/_frontend/assets/chunk-2QTH6JHX-DIiHfgUm.js.br +0 -0
- package/dist/_frontend/assets/chunk-2QTH6JHX-DIiHfgUm.js.gz +0 -0
- package/dist/_frontend/assets/chunk-3R62ISBR-CDV8LPCs.js +1 -0
- package/dist/_frontend/assets/chunk-3R62ISBR-CDV8LPCs.js.br +0 -0
- package/dist/_frontend/assets/chunk-3R62ISBR-CDV8LPCs.js.gz +0 -0
- package/dist/_frontend/assets/{chunk-62JRHF6Z-CXLsU_my.js → chunk-62JRHF6Z-bd9_iLmQ.js} +1 -1
- package/dist/_frontend/assets/chunk-62JRHF6Z-bd9_iLmQ.js.br +0 -0
- package/dist/_frontend/assets/chunk-62JRHF6Z-bd9_iLmQ.js.gz +0 -0
- package/dist/_frontend/assets/{chunk-ZZB3JIBQ-EN4V28Ji.js → chunk-NFUX2ESW-D-OknU8a.js} +2 -2
- package/dist/_frontend/assets/chunk-NFUX2ESW-D-OknU8a.js.br +0 -0
- package/dist/_frontend/assets/chunk-NFUX2ESW-D-OknU8a.js.gz +0 -0
- package/dist/_frontend/assets/{cssMode-Dk1ChNt4.js → cssMode-Buxt2F5C.js} +1 -1
- package/dist/_frontend/assets/cssMode-Buxt2F5C.js.br +0 -0
- package/dist/_frontend/assets/cssMode-Buxt2F5C.js.gz +0 -0
- package/dist/_frontend/assets/{freemarker2-D_Yi-Euz.js → freemarker2-Cdfv6ur6.js} +1 -1
- package/dist/_frontend/assets/freemarker2-Cdfv6ur6.js.br +0 -0
- package/dist/_frontend/assets/freemarker2-Cdfv6ur6.js.gz +0 -0
- package/dist/_frontend/assets/{handlebars-Cm_UQxos.js → handlebars-Dv-Q7Um6.js} +1 -1
- package/dist/_frontend/assets/handlebars-Dv-Q7Um6.js.br +0 -0
- package/dist/_frontend/assets/handlebars-Dv-Q7Um6.js.gz +0 -0
- package/dist/_frontend/assets/{html-BIx_CMMA.js → html-Cwmd4EDN.js} +1 -1
- package/dist/_frontend/assets/html-Cwmd4EDN.js.br +0 -0
- package/dist/_frontend/assets/html-Cwmd4EDN.js.gz +0 -0
- package/dist/_frontend/assets/{htmlMode-D7eeA6bm.js → htmlMode-Cf0xNt85.js} +1 -1
- package/dist/_frontend/assets/htmlMode-Cf0xNt85.js.br +0 -0
- package/dist/_frontend/assets/htmlMode-Cf0xNt85.js.gz +0 -0
- package/dist/_frontend/assets/{index-Y_4XXAao.js → index-BIRSKAK8.js} +243 -243
- package/dist/_frontend/assets/index-BIRSKAK8.js.br +0 -0
- package/dist/_frontend/assets/index-BIRSKAK8.js.gz +0 -0
- package/dist/_frontend/assets/{index-uWXj7DW5.js → index-BxyaDaQf.js} +1 -1
- package/dist/_frontend/assets/index-BxyaDaQf.js.br +0 -0
- package/dist/_frontend/assets/{index-uWXj7DW5.js.gz → index-BxyaDaQf.js.gz} +0 -0
- package/dist/_frontend/assets/{index-BJUe77Ib.js → index-OPxVm2Vd.js} +3 -3
- package/dist/_frontend/assets/index-OPxVm2Vd.js.br +0 -0
- package/dist/_frontend/assets/index-OPxVm2Vd.js.gz +0 -0
- package/dist/_frontend/assets/{javascript-CHojKZO8.js → javascript-BooEWA5C.js} +1 -1
- package/dist/_frontend/assets/{jsonMode-BTk9mIUo.js → jsonMode-Bc4b557E.js} +1 -1
- package/dist/_frontend/assets/jsonMode-Bc4b557E.js.br +0 -0
- package/dist/_frontend/assets/jsonMode-Bc4b557E.js.gz +0 -0
- package/dist/_frontend/assets/{liquid-M5ngFTv5.js → liquid-Dpr5_yD4.js} +1 -1
- package/dist/_frontend/assets/liquid-Dpr5_yD4.js.br +0 -0
- package/dist/_frontend/assets/liquid-Dpr5_yD4.js.gz +0 -0
- package/dist/_frontend/assets/{lspLanguageFeatures-jPhJA8WX.js → lspLanguageFeatures-BR2DRsTt.js} +1 -1
- package/dist/_frontend/assets/lspLanguageFeatures-BR2DRsTt.js.br +0 -0
- package/dist/_frontend/assets/lspLanguageFeatures-BR2DRsTt.js.gz +0 -0
- package/dist/_frontend/assets/{mdx-DmyHsr0E.js → mdx-HA7ugVt3.js} +1 -1
- package/dist/_frontend/assets/mdx-HA7ugVt3.js.br +0 -0
- package/dist/_frontend/assets/mdx-HA7ugVt3.js.gz +0 -0
- package/dist/_frontend/assets/{python-BRFA9b-I.js → python-C2JnSJsq.js} +1 -1
- package/dist/_frontend/assets/python-C2JnSJsq.js.br +0 -0
- package/dist/_frontend/assets/python-C2JnSJsq.js.gz +0 -0
- package/dist/_frontend/assets/{razor-CYsS4Kjw.js → razor-DxJxbSt9.js} +1 -1
- package/dist/_frontend/assets/razor-DxJxbSt9.js.br +0 -0
- package/dist/_frontend/assets/razor-DxJxbSt9.js.gz +0 -0
- package/dist/_frontend/assets/{tsMode-COQtB6OT.js → tsMode-DSQIB4wq.js} +1 -1
- package/dist/_frontend/assets/tsMode-DSQIB4wq.js.br +0 -0
- package/dist/_frontend/assets/tsMode-DSQIB4wq.js.gz +0 -0
- package/dist/_frontend/assets/{typescript-B3uUksf0.js → typescript-CYdXdQVS.js} +1 -1
- package/dist/_frontend/assets/typescript-CYdXdQVS.js.br +0 -0
- package/dist/_frontend/assets/typescript-CYdXdQVS.js.gz +0 -0
- package/dist/_frontend/assets/{workers-CgLq606Q.js → workers-C1M-tlfr.js} +1 -1
- package/dist/_frontend/assets/workers-C1M-tlfr.js.br +0 -0
- package/dist/_frontend/assets/workers-C1M-tlfr.js.gz +0 -0
- package/dist/_frontend/assets/{xml-YO228FLn.js → xml-uosDAHfe.js} +1 -1
- package/dist/_frontend/assets/xml-uosDAHfe.js.br +0 -0
- package/dist/_frontend/assets/xml-uosDAHfe.js.gz +0 -0
- package/dist/_frontend/assets/{yaml-CirMKB9x.js → yaml-CFmHi-W6.js} +1 -1
- package/dist/_frontend/assets/yaml-CFmHi-W6.js.br +0 -0
- package/dist/_frontend/assets/yaml-CFmHi-W6.js.gz +0 -0
- package/dist/_frontend/index.html +1 -1
- package/dist/controller-main.js.map +1 -1
- package/dist/main.js +466 -285
- package/dist/main.js.map +1 -1
- package/dist/postgres/migrations/20260909_000001_agent_description.js +16 -0
- package/dist/postgres/migrations/20260909_000001_agent_description.js.map +1 -0
- package/dist/sqlite/migrations/20260911_000001_agent_description.js +18 -0
- package/dist/sqlite/migrations/20260911_000001_agent_description.js.map +1 -0
- package/package.json +3 -3
- 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 +0 -1
- 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-NPC4P2EY-Z0AslRUd.js +0 -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-UUXOJXTC-Nk5ZgtJk.js.br +0 -0
- package/dist/_frontend/assets/AgentSessionEventTimeline-UUXOJXTC-Nk5ZgtJk.js.gz +0 -0
- 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.br +0 -0
- package/dist/_frontend/assets/AgentSessions-WHODEG2M-OzQblCn4.js.gz +0 -0
- 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/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-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 +0 -1
- 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 +0 -1
- 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-3OA4UCIM-AN2PJd1q.js.br +0 -0
- package/dist/_frontend/assets/SettingsBuilder-3OA4UCIM-AN2PJd1q.js.gz +0 -0
- 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-EQXQPYIU-zWCTPIcp.js.br +0 -0
- package/dist/_frontend/assets/SidebarLayout-EQXQPYIU-zWCTPIcp.js.gz +0 -0
- 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 +0 -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-4MCIDE2C-ClJFqC75.js.br +0 -0
- package/dist/_frontend/assets/chunk-4MCIDE2C-ClJFqC75.js.gz +0 -0
- 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-7NYDADYN-_y_WJnHd.js +0 -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-ZZB3JIBQ-EN4V28Ji.js.br +0 -0
- package/dist/_frontend/assets/chunk-ZZB3JIBQ-EN4V28Ji.js.gz +0 -0
- 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-D_Yi-Euz.js.br +0 -0
- package/dist/_frontend/assets/freemarker2-D_Yi-Euz.js.gz +0 -0
- 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-BIx_CMMA.js.br +0 -0
- package/dist/_frontend/assets/html-BIx_CMMA.js.gz +0 -0
- 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-BJUe77Ib.js.br +0 -0
- package/dist/_frontend/assets/index-BJUe77Ib.js.gz +0 -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-uWXj7DW5.js.br +0 -0
- 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-M5ngFTv5.js.br +0 -0
- package/dist/_frontend/assets/liquid-M5ngFTv5.js.gz +0 -0
- 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-DmyHsr0E.js.br +0 -0
- package/dist/_frontend/assets/mdx-DmyHsr0E.js.gz +0 -0
- 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-CYsS4Kjw.js.br +0 -0
- package/dist/_frontend/assets/razor-CYsS4Kjw.js.gz +0 -0
- 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-B3uUksf0.js.br +0 -0
- package/dist/_frontend/assets/typescript-B3uUksf0.js.gz +0 -0
- 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-YO228FLn.js.br +0 -0
- package/dist/_frontend/assets/xml-YO228FLn.js.gz +0 -0
- package/dist/_frontend/assets/yaml-CirMKB9x.js.br +0 -0
- package/dist/_frontend/assets/yaml-CirMKB9x.js.gz +0 -0
package/dist/main.js
CHANGED
|
@@ -510,7 +510,9 @@ var init_config = __esm({
|
|
|
510
510
|
});
|
|
511
511
|
|
|
512
512
|
// src/db/agentStore.ts
|
|
513
|
-
import {
|
|
513
|
+
import {
|
|
514
|
+
AgentSpecSchema
|
|
515
|
+
} from "@truefoundry/trueforge-core/agent-session";
|
|
514
516
|
function parseStoredAgentSpec(manifest) {
|
|
515
517
|
return AgentSpecSchema.parse(manifest);
|
|
516
518
|
}
|
|
@@ -2104,7 +2106,7 @@ function parseCommaSeparatedQuery(val) {
|
|
|
2104
2106
|
}
|
|
2105
2107
|
return val.split(",").map((part) => part.trim()).filter((part) => part.length > 0);
|
|
2106
2108
|
}
|
|
2107
|
-
var NameSchema, PAGE_LIMIT, EVENTS_PAGE_LIMIT;
|
|
2109
|
+
var NameSchema, PAGE_LIMIT, EVENTS_PAGE_LIMIT, AGENTS_PAGE_DEFAULT, AGENTS_PAGE_LIMIT;
|
|
2108
2110
|
var init_common = __esm({
|
|
2109
2111
|
"src/schemas/common.ts"() {
|
|
2110
2112
|
"use strict";
|
|
@@ -2114,6 +2116,8 @@ var init_common = __esm({
|
|
|
2114
2116
|
).openapi("ResourceName");
|
|
2115
2117
|
PAGE_LIMIT = 25;
|
|
2116
2118
|
EVENTS_PAGE_LIMIT = 100;
|
|
2119
|
+
AGENTS_PAGE_DEFAULT = 50;
|
|
2120
|
+
AGENTS_PAGE_LIMIT = 100;
|
|
2117
2121
|
}
|
|
2118
2122
|
});
|
|
2119
2123
|
|
|
@@ -3865,7 +3869,7 @@ var init_mcpServerStore = __esm({
|
|
|
3865
3869
|
|
|
3866
3870
|
// src/schemas/schedule.ts
|
|
3867
3871
|
import { z as z24 } from "@hono/zod-openapi";
|
|
3868
|
-
import { CreatedBySubjectSchema as CreatedBySubjectSchema4, TokenPaginationSchema } from "@truefoundry/trueforge-core/agent-session";
|
|
3872
|
+
import { CreatedBySubjectSchema as CreatedBySubjectSchema4, TokenPaginationSchema as TokenPaginationSchema2 } from "@truefoundry/trueforge-core/agent-session";
|
|
3869
3873
|
var SCHEDULE_MIN_INTERVAL_SECONDS, CRON_FIELD, InvalidCronError, CronExpressionSchema, TimezoneSchema, IsoTimestamp, NullableIsoTimestamp, ScheduleTaskSchema, ScheduleStatusSchema, ScheduleManifestObjectSchema, ScheduleManifestSchema, ScheduleSchema, CreateScheduleRequestSchema, UpdateScheduleRequestSchema, GetScheduleResponseSchema, ListSchedulesResponseSchema, DeleteScheduleResponseSchema, ScheduleRunStatusSchema, ScheduleRunSchema, ListScheduleRunsResponseSchema, CreateScheduleRunRequestSchema, CreateScheduleRunResponseSchema, ExecuteScheduleRunRequestSchema;
|
|
3870
3874
|
var init_schedule = __esm({
|
|
3871
3875
|
"src/schemas/schedule.ts"() {
|
|
@@ -3923,7 +3927,7 @@ var init_schedule = __esm({
|
|
|
3923
3927
|
GetScheduleResponseSchema = z24.object({ data: ScheduleSchema }).openapi("GetScheduleResponse");
|
|
3924
3928
|
ListSchedulesResponseSchema = z24.object({
|
|
3925
3929
|
data: z24.array(ScheduleSchema),
|
|
3926
|
-
pagination:
|
|
3930
|
+
pagination: TokenPaginationSchema2
|
|
3927
3931
|
}).openapi("ListSchedulesResponse");
|
|
3928
3932
|
DeleteScheduleResponseSchema = z24.object({}).openapi("DeleteScheduleResponse");
|
|
3929
3933
|
ScheduleRunStatusSchema = z24.enum(["scheduled", "triggered", "failed"]).openapi("ScheduleRunStatus");
|
|
@@ -3941,7 +3945,7 @@ var init_schedule = __esm({
|
|
|
3941
3945
|
}).strict().openapi("ScheduleRun");
|
|
3942
3946
|
ListScheduleRunsResponseSchema = z24.object({
|
|
3943
3947
|
data: z24.array(ScheduleRunSchema),
|
|
3944
|
-
pagination:
|
|
3948
|
+
pagination: TokenPaginationSchema2
|
|
3945
3949
|
}).openapi("ListScheduleRunsResponse");
|
|
3946
3950
|
CreateScheduleRunRequestSchema = z24.object({
|
|
3947
3951
|
schedule_id: z24.string().min(1).max(64).describe("Immutable schedule identifier.")
|
|
@@ -4330,12 +4334,17 @@ __export(PostgresAgentStore_exports, {
|
|
|
4330
4334
|
PostgresAgentStore: () => PostgresAgentStore
|
|
4331
4335
|
});
|
|
4332
4336
|
import { CreatedBySubjectSchema as CreatedBySubjectSchema5 } from "@truefoundry/trueforge-core/agent-session";
|
|
4337
|
+
import {
|
|
4338
|
+
decodeOffsetPageToken as decodeOffsetPageToken3,
|
|
4339
|
+
paginateOffsetRows as paginateOffsetRows2
|
|
4340
|
+
} from "@truefoundry/trueforge-core/agent-session/store/OffsetPageToken";
|
|
4333
4341
|
import { sql as sql10 } from "kysely";
|
|
4334
4342
|
function toRecord(row) {
|
|
4335
4343
|
return {
|
|
4336
4344
|
id: row.id,
|
|
4337
4345
|
tenant_id: row.tenant_id,
|
|
4338
4346
|
name: row.name,
|
|
4347
|
+
description: row.description,
|
|
4339
4348
|
manifest: parseStoredAgentSpec(row.manifest),
|
|
4340
4349
|
external_id: row.external_id,
|
|
4341
4350
|
created_by_subject: CreatedBySubjectSchema5.parse(row.created_by_subject),
|
|
@@ -4370,15 +4379,26 @@ var init_PostgresAgentStore = __esm({
|
|
|
4370
4379
|
}
|
|
4371
4380
|
async listAgents(input, transaction) {
|
|
4372
4381
|
if (input.external_ids?.length === 0) {
|
|
4373
|
-
return [];
|
|
4382
|
+
return { data: [], pagination: { limit: input.limit ?? 0 } };
|
|
4374
4383
|
}
|
|
4375
4384
|
const db = transaction ?? this.#db;
|
|
4376
4385
|
let query = db.selectFrom("agent").selectAll().where("tenant_id", "=", input.tenant_id);
|
|
4377
4386
|
if (input.external_ids !== void 0) {
|
|
4378
4387
|
query = query.where("external_id", "in", [...input.external_ids]);
|
|
4379
4388
|
}
|
|
4380
|
-
|
|
4381
|
-
|
|
4389
|
+
if (input.agent_name !== void 0) {
|
|
4390
|
+
query = query.where(sql10`position(lower(${input.agent_name}) in lower(name)) > 0`);
|
|
4391
|
+
}
|
|
4392
|
+
query = query.orderBy("name");
|
|
4393
|
+
if (input.limit === void 0) {
|
|
4394
|
+
const rows2 = await query.execute();
|
|
4395
|
+
const data2 = rows2.map(toRecord);
|
|
4396
|
+
return { data: data2, pagination: { limit: data2.length } };
|
|
4397
|
+
}
|
|
4398
|
+
const offset = decodeOffsetPageToken3(input.page_token);
|
|
4399
|
+
const rows = await query.limit(input.limit + 1).offset(offset).execute();
|
|
4400
|
+
const { data, pagination } = paginateOffsetRows2(rows, input.limit, offset);
|
|
4401
|
+
return { data: data.map(toRecord), pagination };
|
|
4382
4402
|
}
|
|
4383
4403
|
async getOwnedIds(input, transaction) {
|
|
4384
4404
|
if (input.ids.length === 0) {
|
|
@@ -4414,6 +4434,7 @@ var init_PostgresAgentStore = __esm({
|
|
|
4414
4434
|
id: newId(),
|
|
4415
4435
|
tenant_id: input.tenant_id,
|
|
4416
4436
|
name: input.name,
|
|
4437
|
+
description: input.description,
|
|
4417
4438
|
manifest: json(input.manifest),
|
|
4418
4439
|
external_id: input.external_id,
|
|
4419
4440
|
created_by_subject: json(input.created_by_subject),
|
|
@@ -4434,13 +4455,14 @@ var init_PostgresAgentStore = __esm({
|
|
|
4434
4455
|
}
|
|
4435
4456
|
}
|
|
4436
4457
|
async updateAgent(input, transaction) {
|
|
4437
|
-
if (input.manifest === void 0 && input.external_id === void 0) {
|
|
4438
|
-
throw new Error("updateAgent requires manifest and/or external_id");
|
|
4458
|
+
if (input.manifest === void 0 && input.description === void 0 && input.external_id === void 0) {
|
|
4459
|
+
throw new Error("updateAgent requires manifest, description, and/or external_id");
|
|
4439
4460
|
}
|
|
4440
4461
|
const db = transaction ?? this.#db;
|
|
4441
4462
|
try {
|
|
4442
4463
|
const row = await db.updateTable("agent").set({
|
|
4443
4464
|
...input.manifest === void 0 ? {} : { manifest: json(input.manifest) },
|
|
4465
|
+
...input.description === void 0 ? {} : { description: input.description },
|
|
4444
4466
|
...input.external_id === void 0 ? {} : { external_id: input.external_id },
|
|
4445
4467
|
updated_at: now()
|
|
4446
4468
|
}).where("tenant_id", "=", input.tenant_id).where("id", "=", input.id).returningAll().executeTakeFirst();
|
|
@@ -5241,8 +5263,8 @@ var init_capabilities2 = __esm({
|
|
|
5241
5263
|
|
|
5242
5264
|
// src/db/sqlite/session-store/queries/events.ts
|
|
5243
5265
|
import {
|
|
5244
|
-
decodeOffsetPageToken as
|
|
5245
|
-
paginateOffsetRows as
|
|
5266
|
+
decodeOffsetPageToken as decodeOffsetPageToken4,
|
|
5267
|
+
paginateOffsetRows as paginateOffsetRows3
|
|
5246
5268
|
} from "@truefoundry/trueforge-core/agent-session/store/OffsetPageToken";
|
|
5247
5269
|
import {
|
|
5248
5270
|
decodeSessionEventPageToken as decodeSessionEventPageToken2,
|
|
@@ -5277,7 +5299,7 @@ async function appendToEvents2(db, input) {
|
|
|
5277
5299
|
});
|
|
5278
5300
|
}
|
|
5279
5301
|
async function listTurnEvents2(db, input) {
|
|
5280
|
-
const offset =
|
|
5302
|
+
const offset = decodeOffsetPageToken4(input.page_token);
|
|
5281
5303
|
const limit = input.limit;
|
|
5282
5304
|
const eventOrder = input.order === "desc" ? "desc" : "asc";
|
|
5283
5305
|
const rows = await db.selectFrom("turn as t").leftJoin(
|
|
@@ -5293,7 +5315,7 @@ async function listTurnEvents2(db, input) {
|
|
|
5293
5315
|
events.push(row.event);
|
|
5294
5316
|
}
|
|
5295
5317
|
}
|
|
5296
|
-
return
|
|
5318
|
+
return paginateOffsetRows3(events, limit, offset);
|
|
5297
5319
|
}
|
|
5298
5320
|
async function resolveAncestorChain2(db, sessionId, anchor) {
|
|
5299
5321
|
const chain = [...anchor.ancestor_ids, anchor.turn_id];
|
|
@@ -5859,7 +5881,7 @@ __export(SqliteSessionStore_exports, {
|
|
|
5859
5881
|
SqliteSessionStore: () => SqliteSessionStore
|
|
5860
5882
|
});
|
|
5861
5883
|
import {
|
|
5862
|
-
decodeOffsetPageToken as
|
|
5884
|
+
decodeOffsetPageToken as decodeOffsetPageToken5,
|
|
5863
5885
|
encodeOffsetPageToken as encodeOffsetPageToken2
|
|
5864
5886
|
} from "@truefoundry/trueforge-core/agent-session/store/OffsetPageToken";
|
|
5865
5887
|
var SqliteSessionStore;
|
|
@@ -5936,7 +5958,7 @@ var init_SqliteSessionStore = __esm({
|
|
|
5936
5958
|
return getTurn2(this.db, input);
|
|
5937
5959
|
}
|
|
5938
5960
|
async listTurns(input) {
|
|
5939
|
-
const offset =
|
|
5961
|
+
const offset = decodeOffsetPageToken5(input.page_token);
|
|
5940
5962
|
const result = await listTurns2(this.db, {
|
|
5941
5963
|
session_id: input.session_id,
|
|
5942
5964
|
limit: input.limit,
|
|
@@ -6635,12 +6657,17 @@ __export(SqliteAgentStore_exports, {
|
|
|
6635
6657
|
import {
|
|
6636
6658
|
CreatedBySubjectSchema as CreatedBySubjectSchema7
|
|
6637
6659
|
} from "@truefoundry/trueforge-core/agent-session";
|
|
6660
|
+
import {
|
|
6661
|
+
decodeOffsetPageToken as decodeOffsetPageToken6,
|
|
6662
|
+
paginateOffsetRows as paginateOffsetRows4
|
|
6663
|
+
} from "@truefoundry/trueforge-core/agent-session/store/OffsetPageToken";
|
|
6638
6664
|
import { sql as sql21 } from "kysely";
|
|
6639
6665
|
function recordColumns5(eb) {
|
|
6640
6666
|
return [
|
|
6641
6667
|
"id",
|
|
6642
6668
|
"tenant_id",
|
|
6643
6669
|
"name",
|
|
6670
|
+
"description",
|
|
6644
6671
|
jsonText(eb.ref("manifest")).as("manifest"),
|
|
6645
6672
|
"external_id",
|
|
6646
6673
|
jsonText(eb.ref("created_by_subject")).as("created_by_subject"),
|
|
@@ -6670,15 +6697,26 @@ var init_SqliteAgentStore = __esm({
|
|
|
6670
6697
|
}
|
|
6671
6698
|
async listAgents(input, transaction) {
|
|
6672
6699
|
if (input.external_ids?.length === 0) {
|
|
6673
|
-
return [];
|
|
6700
|
+
return { data: [], pagination: { limit: input.limit ?? 0 } };
|
|
6674
6701
|
}
|
|
6675
6702
|
const db = transaction ?? this.#db;
|
|
6676
6703
|
let query = db.selectFrom("agent").select(recordColumns5).where("tenant_id", "=", input.tenant_id);
|
|
6677
6704
|
if (input.external_ids !== void 0) {
|
|
6678
6705
|
query = query.where("external_id", "in", [...input.external_ids]);
|
|
6679
6706
|
}
|
|
6680
|
-
|
|
6681
|
-
|
|
6707
|
+
if (input.agent_name !== void 0) {
|
|
6708
|
+
query = query.where(sql21`instr(lower(name), lower(${input.agent_name})) > 0`);
|
|
6709
|
+
}
|
|
6710
|
+
query = query.orderBy("name");
|
|
6711
|
+
if (input.limit === void 0) {
|
|
6712
|
+
const rows2 = await query.execute();
|
|
6713
|
+
const data2 = rows2.map(toRecord3);
|
|
6714
|
+
return { data: data2, pagination: { limit: data2.length } };
|
|
6715
|
+
}
|
|
6716
|
+
const offset = decodeOffsetPageToken6(input.page_token);
|
|
6717
|
+
const rows = await query.limit(input.limit + 1).offset(offset).execute();
|
|
6718
|
+
const { data, pagination } = paginateOffsetRows4(rows, input.limit, offset);
|
|
6719
|
+
return { data: data.map(toRecord3), pagination };
|
|
6682
6720
|
}
|
|
6683
6721
|
async getOwnedIds(input, transaction) {
|
|
6684
6722
|
if (input.ids.length === 0) {
|
|
@@ -6715,6 +6753,7 @@ var init_SqliteAgentStore = __esm({
|
|
|
6715
6753
|
id: newId(),
|
|
6716
6754
|
tenant_id: input.tenant_id,
|
|
6717
6755
|
name: input.name,
|
|
6756
|
+
description: input.description,
|
|
6718
6757
|
manifest: jsonbBind(input.manifest),
|
|
6719
6758
|
external_id: input.external_id,
|
|
6720
6759
|
created_by_subject: jsonbBind(input.created_by_subject),
|
|
@@ -6736,13 +6775,14 @@ var init_SqliteAgentStore = __esm({
|
|
|
6736
6775
|
}
|
|
6737
6776
|
}
|
|
6738
6777
|
async updateAgent(input, transaction) {
|
|
6739
|
-
if (input.manifest === void 0 && input.external_id === void 0) {
|
|
6740
|
-
throw new Error("updateAgent requires manifest and/or external_id");
|
|
6778
|
+
if (input.manifest === void 0 && input.description === void 0 && input.external_id === void 0) {
|
|
6779
|
+
throw new Error("updateAgent requires manifest, description, and/or external_id");
|
|
6741
6780
|
}
|
|
6742
6781
|
const db = transaction ?? this.#db;
|
|
6743
6782
|
try {
|
|
6744
6783
|
const row = await db.updateTable("agent").set({
|
|
6745
6784
|
...input.manifest === void 0 ? {} : { manifest: jsonbBind(input.manifest) },
|
|
6785
|
+
...input.description === void 0 ? {} : { description: input.description },
|
|
6746
6786
|
...input.external_id === void 0 ? {} : { external_id: input.external_id },
|
|
6747
6787
|
updated_at: nowIso()
|
|
6748
6788
|
}).where("tenant_id", "=", input.tenant_id).where("id", "=", input.id).returning(recordColumns5).executeTakeFirst();
|
|
@@ -6791,8 +6831,8 @@ import {
|
|
|
6791
6831
|
CreatedBySubjectSchema as CreatedBySubjectSchema8
|
|
6792
6832
|
} from "@truefoundry/trueforge-core/agent-session";
|
|
6793
6833
|
import {
|
|
6794
|
-
decodeOffsetPageToken as
|
|
6795
|
-
paginateOffsetRows as
|
|
6834
|
+
decodeOffsetPageToken as decodeOffsetPageToken7,
|
|
6835
|
+
paginateOffsetRows as paginateOffsetRows5
|
|
6796
6836
|
} from "@truefoundry/trueforge-core/agent-session/store/OffsetPageToken";
|
|
6797
6837
|
import { sql as sql22 } from "kysely";
|
|
6798
6838
|
function scheduleColumns(eb) {
|
|
@@ -6959,7 +6999,7 @@ var init_SqliteScheduleStore = __esm({
|
|
|
6959
6999
|
await db.deleteFrom("schedule").where("tenant_id", "=", input.tenant_id).where("id", "=", input.id).execute();
|
|
6960
7000
|
}
|
|
6961
7001
|
async listSchedules(input, transaction) {
|
|
6962
|
-
const offset =
|
|
7002
|
+
const offset = decodeOffsetPageToken7(input.page_token);
|
|
6963
7003
|
const db = transaction ?? this.#db;
|
|
6964
7004
|
let query = db.selectFrom("schedule").select(scheduleColumns).where("tenant_id", "=", input.tenant_id);
|
|
6965
7005
|
if (input.agent_names !== void 0) {
|
|
@@ -6967,7 +7007,7 @@ var init_SqliteScheduleStore = __esm({
|
|
|
6967
7007
|
}
|
|
6968
7008
|
query = whereCreatedByOrAgentIds2(query, input.created_by_or_agent_ids);
|
|
6969
7009
|
const rows = await query.orderBy("created_at", "desc").orderBy("id").limit(input.limit + 1).offset(offset).execute();
|
|
6970
|
-
const { data, pagination } =
|
|
7010
|
+
const { data, pagination } = paginateOffsetRows5(rows, input.limit, offset);
|
|
6971
7011
|
return { data: data.map(toScheduleRecord), pagination };
|
|
6972
7012
|
}
|
|
6973
7013
|
async getOwnedIds(input, transaction) {
|
|
@@ -6979,10 +7019,10 @@ var init_SqliteScheduleStore = __esm({
|
|
|
6979
7019
|
return rows.map((row) => row.id);
|
|
6980
7020
|
}
|
|
6981
7021
|
async listRuns(input, transaction) {
|
|
6982
|
-
const offset =
|
|
7022
|
+
const offset = decodeOffsetPageToken7(input.page_token);
|
|
6983
7023
|
const db = transaction ?? this.#db;
|
|
6984
7024
|
const rows = await db.selectFrom("schedule_run").select(runColumns).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();
|
|
6985
|
-
const { data, pagination } =
|
|
7025
|
+
const { data, pagination } = paginateOffsetRows5(rows, input.limit, offset);
|
|
6986
7026
|
return { data: data.map(toRunRecord), pagination };
|
|
6987
7027
|
}
|
|
6988
7028
|
async getRun(input, transaction) {
|
|
@@ -7709,8 +7749,8 @@ __export(PostgresScheduleStore_exports, {
|
|
|
7709
7749
|
});
|
|
7710
7750
|
import { CreatedBySubjectSchema as CreatedBySubjectSchema9 } from "@truefoundry/trueforge-core/agent-session";
|
|
7711
7751
|
import {
|
|
7712
|
-
decodeOffsetPageToken as
|
|
7713
|
-
paginateOffsetRows as
|
|
7752
|
+
decodeOffsetPageToken as decodeOffsetPageToken8,
|
|
7753
|
+
paginateOffsetRows as paginateOffsetRows6
|
|
7714
7754
|
} from "@truefoundry/trueforge-core/agent-session/store/OffsetPageToken";
|
|
7715
7755
|
import { sql as sql25 } from "kysely";
|
|
7716
7756
|
function toScheduleRecord2(row) {
|
|
@@ -7855,7 +7895,7 @@ var init_PostgresScheduleStore = __esm({
|
|
|
7855
7895
|
await db.deleteFrom("schedule").where("tenant_id", "=", input.tenant_id).where("id", "=", input.id).execute();
|
|
7856
7896
|
}
|
|
7857
7897
|
async listSchedules(input, transaction) {
|
|
7858
|
-
const offset =
|
|
7898
|
+
const offset = decodeOffsetPageToken8(input.page_token);
|
|
7859
7899
|
const db = transaction ?? this.#db;
|
|
7860
7900
|
let query = db.selectFrom("schedule").selectAll().where("tenant_id", "=", input.tenant_id);
|
|
7861
7901
|
if (input.agent_names !== void 0) {
|
|
@@ -7863,7 +7903,7 @@ var init_PostgresScheduleStore = __esm({
|
|
|
7863
7903
|
}
|
|
7864
7904
|
query = whereCreatedByOrAgentIds(query, input.created_by_or_agent_ids);
|
|
7865
7905
|
const rows = await query.orderBy("created_at", "desc").orderBy("id").limit(input.limit + 1).offset(offset).execute();
|
|
7866
|
-
const { data, pagination } =
|
|
7906
|
+
const { data, pagination } = paginateOffsetRows6(rows, input.limit, offset);
|
|
7867
7907
|
return { data: data.map(toScheduleRecord2), pagination };
|
|
7868
7908
|
}
|
|
7869
7909
|
async getOwnedIds(input, transaction) {
|
|
@@ -7875,10 +7915,10 @@ var init_PostgresScheduleStore = __esm({
|
|
|
7875
7915
|
return rows.map((row) => row.id);
|
|
7876
7916
|
}
|
|
7877
7917
|
async listRuns(input, transaction) {
|
|
7878
|
-
const offset =
|
|
7918
|
+
const offset = decodeOffsetPageToken8(input.page_token);
|
|
7879
7919
|
const db = transaction ?? this.#db;
|
|
7880
7920
|
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();
|
|
7881
|
-
const { data, pagination } =
|
|
7921
|
+
const { data, pagination } = paginateOffsetRows6(rows, input.limit, offset);
|
|
7882
7922
|
return { data: data.map(toRunRecord2), pagination };
|
|
7883
7923
|
}
|
|
7884
7924
|
async getRun(input, transaction) {
|
|
@@ -7998,101 +8038,160 @@ import { HTTPException as HTTPException2 } from "hono/http-exception";
|
|
|
7998
8038
|
import { createRoute } from "@hono/zod-openapi";
|
|
7999
8039
|
|
|
8000
8040
|
// src/schemas/agentImport.ts
|
|
8041
|
+
import { z as z3 } from "@hono/zod-openapi";
|
|
8042
|
+
import { AgentSpecSchema as AgentSpecSchema5, CreatedBySubjectSchema as CreatedBySubjectSchema3 } from "@truefoundry/trueforge-core/agent-session";
|
|
8043
|
+
|
|
8044
|
+
// src/schemas/agent.ts
|
|
8001
8045
|
init_common();
|
|
8002
8046
|
import { z as z2 } from "@hono/zod-openapi";
|
|
8003
|
-
import {
|
|
8047
|
+
import {
|
|
8048
|
+
AgentSpecSchema as AgentSpecSchema4,
|
|
8049
|
+
CreatedBySubjectSchema as CreatedBySubjectSchema2,
|
|
8050
|
+
TokenPaginationSchema
|
|
8051
|
+
} from "@truefoundry/trueforge-core/agent-session";
|
|
8004
8052
|
var RESERVED_AGENT_NAMES = /* @__PURE__ */ new Set(["tfg", "trueforge"]);
|
|
8005
|
-
var
|
|
8053
|
+
var AGENT_DESCRIPTION_MAX_LENGTH = 1024;
|
|
8054
|
+
var AgentDescriptionSchema = z2.string().trim().min(1).max(AGENT_DESCRIPTION_MAX_LENGTH);
|
|
8055
|
+
var CreateAgentRequestSchema = z2.object({
|
|
8006
8056
|
name: NameSchema.refine((name) => !RESERVED_AGENT_NAMES.has(name), {
|
|
8007
8057
|
message: "Agent name is reserved, cannot be used"
|
|
8008
8058
|
}),
|
|
8059
|
+
description: AgentDescriptionSchema,
|
|
8060
|
+
manifest: AgentSpecSchema4
|
|
8061
|
+
}).strict().openapi("CreateAgentRequest");
|
|
8062
|
+
var UpdateAgentRequestSchema = z2.object({
|
|
8063
|
+
description: AgentDescriptionSchema.optional(),
|
|
8064
|
+
manifest: AgentSpecSchema4
|
|
8065
|
+
}).strict().openapi("UpdateAgentRequest");
|
|
8066
|
+
var AgentSchema = z2.object({
|
|
8067
|
+
id: z2.string().min(1).describe("Immutable server-generated agent identifier."),
|
|
8068
|
+
name: NameSchema,
|
|
8069
|
+
description: AgentDescriptionSchema,
|
|
8009
8070
|
manifest: AgentSpecSchema4,
|
|
8010
|
-
|
|
8011
|
-
|
|
8071
|
+
created_by_subject: CreatedBySubjectSchema2
|
|
8072
|
+
}).strict().openapi("Agent");
|
|
8073
|
+
var GetAgentResponseSchema = z2.object({ data: AgentSchema }).openapi("GetAgentResponse");
|
|
8074
|
+
var ListAgentsResponseSchema = z2.object({
|
|
8075
|
+
data: z2.array(AgentSchema),
|
|
8076
|
+
pagination: TokenPaginationSchema
|
|
8077
|
+
}).openapi("ListAgentsResponse");
|
|
8078
|
+
var DeleteAgentResponseSchema = z2.object({}).openapi("DeleteAgentResponse");
|
|
8079
|
+
var AgentCodeSnippetSampleCodeSchema = z2.object({
|
|
8080
|
+
stream: z2.string().describe("SDK sample that streams turn events."),
|
|
8081
|
+
non_stream: z2.string().describe("SDK sample that creates a turn without streaming.")
|
|
8082
|
+
}).strict().openapi("AgentCodeSnippetSampleCode");
|
|
8083
|
+
var AgentCodeSnippetSchema = z2.object({
|
|
8084
|
+
label_name: z2.string().min(1),
|
|
8085
|
+
language: z2.string().min(1),
|
|
8086
|
+
icon: z2.url(),
|
|
8087
|
+
sample_code: AgentCodeSnippetSampleCodeSchema
|
|
8088
|
+
}).strict().openapi("AgentCodeSnippet");
|
|
8089
|
+
var AgentCodeSnippetsSchema = z2.object({
|
|
8090
|
+
base_url: z2.url().describe("Public base URL for the TrueForge SDK `baseUrl`."),
|
|
8091
|
+
snippets: z2.array(AgentCodeSnippetSchema)
|
|
8092
|
+
}).strict().openapi("AgentCodeSnippets");
|
|
8093
|
+
var GetAgentCodeSnippetsResponseSchema = z2.object({ data: AgentCodeSnippetsSchema }).openapi("GetAgentCodeSnippetsResponse");
|
|
8094
|
+
var GetAgentCodeSnippetsRequestQuerySchema = z2.object({
|
|
8095
|
+
base_url: z2.url().optional().describe(
|
|
8096
|
+
"Public SDK base URL from the browser. When omitted, derived from the request origin and PUBLIC_BASE_URL."
|
|
8097
|
+
)
|
|
8098
|
+
}).strict().openapi("GetAgentCodeSnippetsRequestQuery");
|
|
8099
|
+
|
|
8100
|
+
// src/schemas/agentImport.ts
|
|
8101
|
+
init_common();
|
|
8102
|
+
var RESERVED_AGENT_NAMES2 = /* @__PURE__ */ new Set(["tfg", "trueforge"]);
|
|
8103
|
+
var ImportAgentItemSchema = z3.object({
|
|
8104
|
+
name: NameSchema.refine((name) => !RESERVED_AGENT_NAMES2.has(name), {
|
|
8105
|
+
message: "Agent name is reserved, cannot be used"
|
|
8106
|
+
}),
|
|
8107
|
+
description: AgentDescriptionSchema.optional(),
|
|
8108
|
+
manifest: AgentSpecSchema5,
|
|
8109
|
+
tenant_id: z3.string().min(1).describe("Tenant to create the agent under."),
|
|
8110
|
+
created_by_subject: CreatedBySubjectSchema3.describe("Original creator to persist on the agent.")
|
|
8012
8111
|
}).strict().openapi("ImportAgentItem");
|
|
8013
|
-
var ImportAgentsRequestSchema =
|
|
8014
|
-
agents:
|
|
8112
|
+
var ImportAgentsRequestSchema = z3.object({
|
|
8113
|
+
agents: z3.array(ImportAgentItemSchema).describe("Agents to create; each carries tenant_id and created_by_subject.")
|
|
8015
8114
|
}).strict().openapi("ImportAgentsRequest");
|
|
8016
|
-
var ImportAgentItemResultSchema =
|
|
8017
|
-
name:
|
|
8018
|
-
tenant_id:
|
|
8019
|
-
status:
|
|
8020
|
-
agent_id:
|
|
8021
|
-
error:
|
|
8115
|
+
var ImportAgentItemResultSchema = z3.object({
|
|
8116
|
+
name: z3.string().min(1),
|
|
8117
|
+
tenant_id: z3.string().min(1),
|
|
8118
|
+
status: z3.enum(["created", "exists", "failed"]),
|
|
8119
|
+
agent_id: z3.string().min(1).optional(),
|
|
8120
|
+
error: z3.string().optional()
|
|
8022
8121
|
}).strict().openapi("ImportAgentItemResult");
|
|
8023
|
-
var ImportAgentsResultSchema =
|
|
8024
|
-
results:
|
|
8122
|
+
var ImportAgentsResultSchema = z3.object({
|
|
8123
|
+
results: z3.array(ImportAgentItemResultSchema)
|
|
8025
8124
|
}).strict().openapi("ImportAgentsResult");
|
|
8026
|
-
var ImportAgentsResponseSchema =
|
|
8125
|
+
var ImportAgentsResponseSchema = z3.object({
|
|
8027
8126
|
data: ImportAgentsResultSchema
|
|
8028
8127
|
}).strict().openapi("ImportAgentsResponse");
|
|
8029
|
-
var ImportSessionSnapshotSchema =
|
|
8030
|
-
session_id:
|
|
8031
|
-
tenant_id:
|
|
8032
|
-
created_by_subject:
|
|
8033
|
-
agent_name:
|
|
8034
|
-
agent_id:
|
|
8035
|
-
agent_spec:
|
|
8036
|
-
title:
|
|
8037
|
-
last_turn_id:
|
|
8038
|
-
custom:
|
|
8039
|
-
last_activity_timestamp_ms:
|
|
8040
|
-
created_at:
|
|
8041
|
-
updated_at:
|
|
8128
|
+
var ImportSessionSnapshotSchema = z3.object({
|
|
8129
|
+
session_id: z3.string().min(1),
|
|
8130
|
+
tenant_id: z3.string().min(1),
|
|
8131
|
+
created_by_subject: CreatedBySubjectSchema3,
|
|
8132
|
+
agent_name: z3.string().min(1).nullable().optional(),
|
|
8133
|
+
agent_id: z3.string().min(1).nullable().optional(),
|
|
8134
|
+
agent_spec: z3.record(z3.string(), z3.unknown()).nullable().optional(),
|
|
8135
|
+
title: z3.string().nullable(),
|
|
8136
|
+
last_turn_id: z3.string().nullable(),
|
|
8137
|
+
custom: z3.record(z3.string(), z3.unknown()).nullable(),
|
|
8138
|
+
last_activity_timestamp_ms: z3.number(),
|
|
8139
|
+
created_at: z3.string().min(1),
|
|
8140
|
+
updated_at: z3.string().min(1)
|
|
8042
8141
|
}).loose().openapi("ImportSessionSnapshot");
|
|
8043
|
-
var ImportSessionThreadSchema =
|
|
8044
|
-
thread_id:
|
|
8045
|
-
context:
|
|
8046
|
-
current_context_usage:
|
|
8047
|
-
parent:
|
|
8048
|
-
completion:
|
|
8049
|
-
agent_info:
|
|
8050
|
-
capability_state:
|
|
8142
|
+
var ImportSessionThreadSchema = z3.object({
|
|
8143
|
+
thread_id: z3.string().min(1),
|
|
8144
|
+
context: z3.array(z3.unknown()),
|
|
8145
|
+
current_context_usage: z3.unknown(),
|
|
8146
|
+
parent: z3.unknown().nullable(),
|
|
8147
|
+
completion: z3.unknown().nullable(),
|
|
8148
|
+
agent_info: z3.unknown().nullable(),
|
|
8149
|
+
capability_state: z3.record(z3.string(), z3.unknown()).nullable()
|
|
8051
8150
|
}).loose().openapi("ImportSessionThread");
|
|
8052
|
-
var ImportSessionEventSchema =
|
|
8053
|
-
id:
|
|
8054
|
-
created_at:
|
|
8151
|
+
var ImportSessionEventSchema = z3.object({
|
|
8152
|
+
id: z3.string().min(1),
|
|
8153
|
+
created_at: z3.string().min(1)
|
|
8055
8154
|
}).loose().openapi("ImportSessionEvent");
|
|
8056
|
-
var ImportSessionTurnSchema =
|
|
8057
|
-
turn_id:
|
|
8058
|
-
first_turn_id:
|
|
8059
|
-
previous_turn_id:
|
|
8060
|
-
ancestor_ids:
|
|
8061
|
-
input:
|
|
8062
|
-
state:
|
|
8063
|
-
checkpoint:
|
|
8064
|
-
custom:
|
|
8065
|
-
created_at:
|
|
8066
|
-
updated_at:
|
|
8067
|
-
threads:
|
|
8068
|
-
events:
|
|
8155
|
+
var ImportSessionTurnSchema = z3.object({
|
|
8156
|
+
turn_id: z3.string().min(1),
|
|
8157
|
+
first_turn_id: z3.string().min(1),
|
|
8158
|
+
previous_turn_id: z3.string().nullable(),
|
|
8159
|
+
ancestor_ids: z3.array(z3.string()),
|
|
8160
|
+
input: z3.array(z3.unknown()),
|
|
8161
|
+
state: z3.unknown(),
|
|
8162
|
+
checkpoint: z3.unknown(),
|
|
8163
|
+
custom: z3.record(z3.string(), z3.unknown()).nullable(),
|
|
8164
|
+
created_at: z3.string().min(1),
|
|
8165
|
+
updated_at: z3.string().min(1),
|
|
8166
|
+
threads: z3.array(ImportSessionThreadSchema),
|
|
8167
|
+
events: z3.array(ImportSessionEventSchema)
|
|
8069
8168
|
}).loose().openapi("ImportSessionTurn");
|
|
8070
|
-
var ImportSessionRequestSchema =
|
|
8169
|
+
var ImportSessionRequestSchema = z3.object({
|
|
8071
8170
|
session: ImportSessionSnapshotSchema,
|
|
8072
|
-
turns:
|
|
8171
|
+
turns: z3.array(ImportSessionTurnSchema).min(1)
|
|
8073
8172
|
}).openapi("ImportSessionRequest");
|
|
8074
|
-
var ImportSessionResultSchema =
|
|
8075
|
-
imported:
|
|
8076
|
-
session_id:
|
|
8173
|
+
var ImportSessionResultSchema = z3.object({
|
|
8174
|
+
imported: z3.boolean(),
|
|
8175
|
+
session_id: z3.string()
|
|
8077
8176
|
}).openapi("ImportSessionResult");
|
|
8078
|
-
var ImportSessionResponseSchema =
|
|
8079
|
-
var ImportSessionsCheckpointQuerySchema =
|
|
8080
|
-
tenant_id:
|
|
8177
|
+
var ImportSessionResponseSchema = z3.object({ data: ImportSessionResultSchema }).openapi("ImportSessionResponse");
|
|
8178
|
+
var ImportSessionsCheckpointQuerySchema = z3.object({
|
|
8179
|
+
tenant_id: z3.string().min(1).describe("Tenant whose imported-session watermark to read.")
|
|
8081
8180
|
}).strict().openapi("ImportSessionsCheckpointQuery");
|
|
8082
|
-
var ImportSessionsCheckpointResponseSchema =
|
|
8083
|
-
data:
|
|
8084
|
-
created_at:
|
|
8181
|
+
var ImportSessionsCheckpointResponseSchema = z3.object({
|
|
8182
|
+
data: z3.object({
|
|
8183
|
+
created_at: z3.string().nullable()
|
|
8085
8184
|
})
|
|
8086
8185
|
}).strict().openapi("ImportSessionsCheckpointResponse");
|
|
8087
8186
|
|
|
8088
8187
|
// src/schemas/errors.ts
|
|
8089
|
-
import { z as
|
|
8090
|
-
var RequestErrorResponseSchema =
|
|
8091
|
-
error:
|
|
8092
|
-
message:
|
|
8093
|
-
type:
|
|
8094
|
-
code:
|
|
8095
|
-
param:
|
|
8188
|
+
import { z as z4 } from "@hono/zod-openapi";
|
|
8189
|
+
var RequestErrorResponseSchema = z4.object({
|
|
8190
|
+
error: z4.object({
|
|
8191
|
+
message: z4.string().describe("Human-readable explanation of the failure."),
|
|
8192
|
+
type: z4.string().optional().describe("Optional error category (e.g. validation vs conflict)."),
|
|
8193
|
+
code: z4.string().nullable().optional().describe("Optional machine-readable error code; null when not applicable."),
|
|
8194
|
+
param: z4.string().nullable().optional().describe("Optional request field that caused the error; null when not field-specific.")
|
|
8096
8195
|
})
|
|
8097
8196
|
}).openapi("RequestErrorResponse");
|
|
8098
8197
|
|
|
@@ -8197,7 +8296,7 @@ var getImportSessionsCheckpointRoute = createRoute({
|
|
|
8197
8296
|
import { extractErrorLogFields } from "@truefoundry/trueforge-core/core";
|
|
8198
8297
|
import { HTTPException } from "hono/http-exception";
|
|
8199
8298
|
import { fetch as undiciFetch2 } from "undici";
|
|
8200
|
-
import { z as
|
|
8299
|
+
import { z as z7 } from "zod";
|
|
8201
8300
|
|
|
8202
8301
|
// src/http/tls.ts
|
|
8203
8302
|
import { readFileSync } from "fs";
|
|
@@ -8313,20 +8412,20 @@ function createInternalTlsDispatcher(options) {
|
|
|
8313
8412
|
}
|
|
8314
8413
|
|
|
8315
8414
|
// src/truefoundry/mapSfyAgentSkills.ts
|
|
8316
|
-
import { z as
|
|
8317
|
-
var SfyRegistryManifestSchema =
|
|
8415
|
+
import { z as z5 } from "zod";
|
|
8416
|
+
var SfyRegistryManifestSchema = z5.object({
|
|
8318
8417
|
// Display label only — not TF ResourceName / DNS-label rules.
|
|
8319
|
-
name:
|
|
8320
|
-
version:
|
|
8418
|
+
name: z5.string().min(1),
|
|
8419
|
+
version: z5.number().int().positive(),
|
|
8321
8420
|
// SFY field is `ml_repo`; TrueForge wire is `repository_name`.
|
|
8322
|
-
ml_repo:
|
|
8323
|
-
source:
|
|
8324
|
-
description:
|
|
8421
|
+
ml_repo: z5.string().min(1),
|
|
8422
|
+
source: z5.object({
|
|
8423
|
+
description: z5.string().min(1).optional()
|
|
8325
8424
|
}).optional()
|
|
8326
8425
|
});
|
|
8327
|
-
var SfyRegistrySkillSchema =
|
|
8328
|
-
latest_version:
|
|
8329
|
-
fqn:
|
|
8426
|
+
var SfyRegistrySkillSchema = z5.object({
|
|
8427
|
+
latest_version: z5.object({
|
|
8428
|
+
fqn: z5.string().min(1),
|
|
8330
8429
|
manifest: SfyRegistryManifestSchema
|
|
8331
8430
|
})
|
|
8332
8431
|
}).transform(({ latest_version }) => ({
|
|
@@ -8337,20 +8436,20 @@ var SfyRegistrySkillSchema = z4.object({
|
|
|
8337
8436
|
repository_name: latest_version.manifest.ml_repo,
|
|
8338
8437
|
version: latest_version.manifest.version
|
|
8339
8438
|
}));
|
|
8340
|
-
var SfyRegistrySkillVersionSchema =
|
|
8341
|
-
agent_skill_id:
|
|
8342
|
-
fqn:
|
|
8439
|
+
var SfyRegistrySkillVersionSchema = z5.object({
|
|
8440
|
+
agent_skill_id: z5.string().min(1),
|
|
8441
|
+
fqn: z5.string().min(1),
|
|
8343
8442
|
manifest: SfyRegistryManifestSchema
|
|
8344
8443
|
});
|
|
8345
|
-
var ResolvedAgentSkillVersionSchema =
|
|
8346
|
-
fqn:
|
|
8347
|
-
name:
|
|
8348
|
-
description:
|
|
8349
|
-
skill_md_content:
|
|
8350
|
-
presigned_url:
|
|
8444
|
+
var ResolvedAgentSkillVersionSchema = z5.object({
|
|
8445
|
+
fqn: z5.string().min(1),
|
|
8446
|
+
name: z5.string().min(1),
|
|
8447
|
+
description: z5.string().min(1),
|
|
8448
|
+
skill_md_content: z5.string().nullable().optional(),
|
|
8449
|
+
presigned_url: z5.string().min(1).optional()
|
|
8351
8450
|
});
|
|
8352
|
-
var ResolveAgentSkillVersionsResponseSchema =
|
|
8353
|
-
skills:
|
|
8451
|
+
var ResolveAgentSkillVersionsResponseSchema = z5.object({
|
|
8452
|
+
skills: z5.array(ResolvedAgentSkillVersionSchema)
|
|
8354
8453
|
});
|
|
8355
8454
|
function mapSfyRegistrySkills(rows) {
|
|
8356
8455
|
return rows.map((row) => SfyRegistrySkillSchema.parse(row));
|
|
@@ -8374,48 +8473,48 @@ function mapResolvedAgentSkillVersions(payload) {
|
|
|
8374
8473
|
}
|
|
8375
8474
|
|
|
8376
8475
|
// src/truefoundry/mapSfyMcpServers.ts
|
|
8377
|
-
import { z as
|
|
8476
|
+
import { z as z6 } from "zod";
|
|
8378
8477
|
var MCP_PROXY_BASE_URL_TEMPLATE = "{{mcpProxyBaseURL}}";
|
|
8379
|
-
var IsoInstantSchema =
|
|
8478
|
+
var IsoInstantSchema = z6.union([z6.string().min(1), z6.date()]).transform((value, ctx) => {
|
|
8380
8479
|
if (value instanceof Date) {
|
|
8381
8480
|
if (!Number.isFinite(value.getTime())) {
|
|
8382
8481
|
ctx.addIssue({ code: "custom", message: "Invalid Date" });
|
|
8383
|
-
return
|
|
8482
|
+
return z6.NEVER;
|
|
8384
8483
|
}
|
|
8385
8484
|
return value.toISOString();
|
|
8386
8485
|
}
|
|
8387
8486
|
const ms = Date.parse(value);
|
|
8388
8487
|
if (!Number.isFinite(ms)) {
|
|
8389
8488
|
ctx.addIssue({ code: "custom", message: "Invalid ISO timestamp" });
|
|
8390
|
-
return
|
|
8489
|
+
return z6.NEVER;
|
|
8391
8490
|
}
|
|
8392
8491
|
return new Date(ms).toISOString();
|
|
8393
8492
|
});
|
|
8394
|
-
var SfyMcpServerRowSchema =
|
|
8395
|
-
id:
|
|
8396
|
-
name:
|
|
8397
|
-
proxyUrl:
|
|
8493
|
+
var SfyMcpServerRowSchema = z6.object({
|
|
8494
|
+
id: z6.string().min(1),
|
|
8495
|
+
name: z6.string().min(1),
|
|
8496
|
+
proxyUrl: z6.string().min(1),
|
|
8398
8497
|
createdAt: IsoInstantSchema,
|
|
8399
8498
|
updatedAt: IsoInstantSchema,
|
|
8400
|
-
manifest:
|
|
8401
|
-
description:
|
|
8402
|
-
auth_data:
|
|
8403
|
-
type:
|
|
8499
|
+
manifest: z6.object({
|
|
8500
|
+
description: z6.string().min(1).optional(),
|
|
8501
|
+
auth_data: z6.object({
|
|
8502
|
+
type: z6.string().min(1).optional()
|
|
8404
8503
|
}).optional()
|
|
8405
8504
|
}).optional()
|
|
8406
8505
|
});
|
|
8407
|
-
var SfyMcpAuthStatusAuthenticatedSchema =
|
|
8408
|
-
var SfyMcpAuthStatusNotRequiredSchema =
|
|
8409
|
-
var SfyMcpAuthStatusRequiredSchema =
|
|
8506
|
+
var SfyMcpAuthStatusAuthenticatedSchema = z6.object({ status: z6.literal("authenticated") });
|
|
8507
|
+
var SfyMcpAuthStatusNotRequiredSchema = z6.object({ status: z6.literal("authentication_not_required") });
|
|
8508
|
+
var SfyMcpAuthStatusRequiredSchema = z6.object({ status: z6.literal("authentication_required") });
|
|
8410
8509
|
var SfyMcpAuthorizeRequiredSchema = SfyMcpAuthStatusRequiredSchema.extend({
|
|
8411
|
-
authorization_endpoint:
|
|
8510
|
+
authorization_endpoint: z6.url()
|
|
8412
8511
|
});
|
|
8413
|
-
var SfyMcpAuthStatusSchema =
|
|
8512
|
+
var SfyMcpAuthStatusSchema = z6.discriminatedUnion("status", [
|
|
8414
8513
|
SfyMcpAuthStatusAuthenticatedSchema,
|
|
8415
8514
|
SfyMcpAuthStatusRequiredSchema,
|
|
8416
8515
|
SfyMcpAuthStatusNotRequiredSchema
|
|
8417
8516
|
]);
|
|
8418
|
-
var SfyMcpAuthorizeResultSchema =
|
|
8517
|
+
var SfyMcpAuthorizeResultSchema = z6.discriminatedUnion("status", [
|
|
8419
8518
|
SfyMcpAuthStatusAuthenticatedSchema,
|
|
8420
8519
|
SfyMcpAuthorizeRequiredSchema,
|
|
8421
8520
|
SfyMcpAuthStatusNotRequiredSchema
|
|
@@ -8486,45 +8585,46 @@ var AGENT_PERMISSIONS_PATH = "v1/authorize/permissions";
|
|
|
8486
8585
|
var VEND_TOKEN_PATH = "internal/vend-token";
|
|
8487
8586
|
var AGENT_SKILLS_PAGE_SIZE = 100;
|
|
8488
8587
|
var AGENT_SKILL_RESOLVE_CHUNK_SIZE = 50;
|
|
8489
|
-
var SessionSubjectSchema =
|
|
8490
|
-
subjectId:
|
|
8491
|
-
subjectType:
|
|
8492
|
-
subjectDisplayName:
|
|
8493
|
-
subjectSlug:
|
|
8588
|
+
var SessionSubjectSchema = z7.object({
|
|
8589
|
+
subjectId: z7.string().min(1),
|
|
8590
|
+
subjectType: z7.string().min(1),
|
|
8591
|
+
subjectDisplayName: z7.string().nullable().optional(),
|
|
8592
|
+
subjectSlug: z7.string().nullable().optional()
|
|
8494
8593
|
});
|
|
8495
|
-
var GetSessionUserSchema =
|
|
8496
|
-
tenantName:
|
|
8497
|
-
roles:
|
|
8594
|
+
var GetSessionUserSchema = z7.object({
|
|
8595
|
+
tenantName: z7.string().min(1),
|
|
8596
|
+
roles: z7.array(z7.string()),
|
|
8498
8597
|
subject: SessionSubjectSchema
|
|
8499
8598
|
});
|
|
8500
|
-
var GetSessionWireSchema =
|
|
8599
|
+
var GetSessionWireSchema = z7.object({
|
|
8501
8600
|
user: GetSessionUserSchema.nullable()
|
|
8502
8601
|
});
|
|
8503
|
-
var ListResponseSchema =
|
|
8504
|
-
|
|
8505
|
-
|
|
8506
|
-
data:
|
|
8507
|
-
pagination:
|
|
8602
|
+
var ListResponseSchema = z7.union([
|
|
8603
|
+
z7.array(z7.unknown()),
|
|
8604
|
+
z7.object({
|
|
8605
|
+
data: z7.array(z7.unknown()).catch([]),
|
|
8606
|
+
pagination: z7.object({ total: z7.number().optional() }).optional()
|
|
8508
8607
|
})
|
|
8509
8608
|
]);
|
|
8510
|
-
var ServiceFoundryErrorSchema =
|
|
8511
|
-
message:
|
|
8609
|
+
var ServiceFoundryErrorSchema = z7.object({
|
|
8610
|
+
message: z7.union([z7.string(), z7.array(z7.string())]).optional()
|
|
8512
8611
|
});
|
|
8513
|
-
var PutRemoteAgentResponseSchema =
|
|
8514
|
-
agentId:
|
|
8612
|
+
var PutRemoteAgentResponseSchema = z7.object({
|
|
8613
|
+
agentId: z7.string().min(1)
|
|
8515
8614
|
});
|
|
8516
|
-
var AgentPermissionSchema =
|
|
8517
|
-
var AgentPermissionsSchema =
|
|
8518
|
-
|
|
8519
|
-
|
|
8615
|
+
var AgentPermissionSchema = z7.enum(["READ_AGENT", "USE_AGENT", "MANAGE_AGENT", "DELETE_AGENT"]);
|
|
8616
|
+
var AgentPermissionsSchema = z7.record(
|
|
8617
|
+
z7.string(),
|
|
8618
|
+
z7.array(z7.string()).transform(
|
|
8520
8619
|
(permissions) => permissions.flatMap((permission) => {
|
|
8521
8620
|
const parsed = AgentPermissionSchema.safeParse(permission);
|
|
8522
8621
|
return parsed.success ? [parsed.data] : [];
|
|
8523
8622
|
})
|
|
8524
8623
|
)
|
|
8525
8624
|
);
|
|
8526
|
-
var VendTokenResponseSchema =
|
|
8527
|
-
|
|
8625
|
+
var VendTokenResponseSchema = z7.object({
|
|
8626
|
+
subjectToken: z7.string().min(1),
|
|
8627
|
+
actorToken: z7.string().min(1)
|
|
8528
8628
|
});
|
|
8529
8629
|
var TFY_ASSUME_USER_HEADER = "x-tfy-assume-user";
|
|
8530
8630
|
var TFY_SYSTEM_ASSUME_SUBJECT = "truefoundry";
|
|
@@ -8867,7 +8967,8 @@ var TrueFoundryServiceFoundryServerClient = class {
|
|
|
8867
8967
|
return parsed.data;
|
|
8868
8968
|
}
|
|
8869
8969
|
/**
|
|
8870
|
-
* Exchange a TrueFoundry API key for
|
|
8970
|
+
* Exchange a TrueFoundry API key for dual agent-scoped tokens.
|
|
8971
|
+
* Wire `actorToken` is the agent identity (`asAgent`); wire `subjectToken` is the user with agent in `act` (`asUser`).
|
|
8871
8972
|
* Authenticated with the server API key, not the user bearer.
|
|
8872
8973
|
*/
|
|
8873
8974
|
async vendToken(input) {
|
|
@@ -8893,7 +8994,7 @@ var TrueFoundryServiceFoundryServerClient = class {
|
|
|
8893
8994
|
cause: parsed.error
|
|
8894
8995
|
});
|
|
8895
8996
|
}
|
|
8896
|
-
return parsed.data
|
|
8997
|
+
return parsed.data;
|
|
8897
8998
|
}
|
|
8898
8999
|
#parseListResponse(payload) {
|
|
8899
9000
|
const parsed = ListResponseSchema.safeParse(payload);
|
|
@@ -9021,6 +9122,7 @@ function createAgentImportRouter(deps) {
|
|
|
9021
9122
|
const created = await agentStore.createAgent({
|
|
9022
9123
|
tenant_id: agent.tenant_id,
|
|
9023
9124
|
name: agent.name,
|
|
9125
|
+
description: agent.description ?? agent.name,
|
|
9024
9126
|
manifest: agent.manifest,
|
|
9025
9127
|
external_id: null,
|
|
9026
9128
|
created_by_subject: agent.created_by_subject
|
|
@@ -9084,6 +9186,7 @@ function createAgentImportRouter(deps) {
|
|
|
9084
9186
|
|
|
9085
9187
|
// src/apis/agents.ts
|
|
9086
9188
|
import { OpenAPIHono as OpenAPIHono2 } from "@hono/zod-openapi";
|
|
9189
|
+
import { InvalidPageTokenError } from "@truefoundry/trueforge-core/agent-session";
|
|
9087
9190
|
|
|
9088
9191
|
// src/auth/identity.ts
|
|
9089
9192
|
init_config();
|
|
@@ -9120,11 +9223,15 @@ function asTrueFoundryRequestContext(context) {
|
|
|
9120
9223
|
}
|
|
9121
9224
|
return context;
|
|
9122
9225
|
}
|
|
9226
|
+
function accessTokensFromCaller(context) {
|
|
9227
|
+
const resolve3 = callerAccessToken(context);
|
|
9228
|
+
return { asAgent: resolve3, asUser: resolve3 };
|
|
9229
|
+
}
|
|
9123
9230
|
function agentAccessToken(input) {
|
|
9124
9231
|
const { client, requestContext: context } = input;
|
|
9125
9232
|
const agentId = requireTrueFoundryAgentExternalId(input.agent);
|
|
9126
9233
|
let pending;
|
|
9127
|
-
|
|
9234
|
+
const vended = () => {
|
|
9128
9235
|
if (pending === void 0) {
|
|
9129
9236
|
input.logger.info("Exchanging user context for agent access token", {
|
|
9130
9237
|
subject: context.subject.id,
|
|
@@ -9137,6 +9244,10 @@ function agentAccessToken(input) {
|
|
|
9137
9244
|
}
|
|
9138
9245
|
return pending;
|
|
9139
9246
|
};
|
|
9247
|
+
return {
|
|
9248
|
+
asAgent: async () => (await vended()).actorToken,
|
|
9249
|
+
asUser: async () => (await vended()).subjectToken
|
|
9250
|
+
};
|
|
9140
9251
|
}
|
|
9141
9252
|
function callerAccessToken(context) {
|
|
9142
9253
|
if (context.user_credential === null) {
|
|
@@ -9149,7 +9260,7 @@ function callerAccessToken(context) {
|
|
|
9149
9260
|
}
|
|
9150
9261
|
function accessTokenForRequest(input) {
|
|
9151
9262
|
if (input.agent === void 0) {
|
|
9152
|
-
return
|
|
9263
|
+
return accessTokensFromCaller(input.requestContext);
|
|
9153
9264
|
}
|
|
9154
9265
|
const agentId = requireTrueFoundryAgentExternalId(input.agent);
|
|
9155
9266
|
const cache = input.requestContext[accessTokenCache];
|
|
@@ -9157,14 +9268,14 @@ function accessTokenForRequest(input) {
|
|
|
9157
9268
|
if (existing !== void 0) {
|
|
9158
9269
|
return existing;
|
|
9159
9270
|
}
|
|
9160
|
-
const
|
|
9271
|
+
const tokens = agentAccessToken({
|
|
9161
9272
|
client: input.client,
|
|
9162
9273
|
requestContext: input.requestContext,
|
|
9163
9274
|
agent: input.agent,
|
|
9164
9275
|
logger: input.logger
|
|
9165
9276
|
});
|
|
9166
|
-
cache.set(agentId,
|
|
9167
|
-
return
|
|
9277
|
+
cache.set(agentId, tokens);
|
|
9278
|
+
return tokens;
|
|
9168
9279
|
}
|
|
9169
9280
|
|
|
9170
9281
|
// src/auth/identity.ts
|
|
@@ -9230,67 +9341,44 @@ init_agentStore();
|
|
|
9230
9341
|
|
|
9231
9342
|
// src/routes/agentRoutes.ts
|
|
9232
9343
|
import { createRoute as createRoute2, z as z8 } from "@hono/zod-openapi";
|
|
9233
|
-
|
|
9234
|
-
// src/schemas/agent.ts
|
|
9235
9344
|
init_common();
|
|
9236
|
-
|
|
9237
|
-
|
|
9238
|
-
var
|
|
9239
|
-
|
|
9240
|
-
|
|
9241
|
-
|
|
9242
|
-
|
|
9243
|
-
manifest: AgentSpecSchema5
|
|
9244
|
-
}).strict().openapi("CreateAgentRequest");
|
|
9245
|
-
var UpdateAgentRequestSchema = z7.object({
|
|
9246
|
-
manifest: AgentSpecSchema5
|
|
9247
|
-
}).strict().openapi("UpdateAgentRequest");
|
|
9248
|
-
var AgentSchema = z7.object({
|
|
9249
|
-
id: z7.string().min(1).describe("Immutable server-generated agent identifier."),
|
|
9250
|
-
name: NameSchema,
|
|
9251
|
-
manifest: AgentSpecSchema5,
|
|
9252
|
-
created_by_subject: CreatedBySubjectSchema3
|
|
9253
|
-
}).strict().openapi("Agent");
|
|
9254
|
-
var GetAgentResponseSchema = z7.object({ data: AgentSchema }).openapi("GetAgentResponse");
|
|
9255
|
-
var ListAgentsResponseSchema = z7.object({ data: z7.array(AgentSchema) }).openapi("ListAgentsResponse");
|
|
9256
|
-
var DeleteAgentResponseSchema = z7.object({}).openapi("DeleteAgentResponse");
|
|
9257
|
-
var AgentCodeSnippetSampleCodeSchema = z7.object({
|
|
9258
|
-
stream: z7.string().describe("SDK sample that streams turn events."),
|
|
9259
|
-
non_stream: z7.string().describe("SDK sample that creates a turn without streaming.")
|
|
9260
|
-
}).strict().openapi("AgentCodeSnippetSampleCode");
|
|
9261
|
-
var AgentCodeSnippetSchema = z7.object({
|
|
9262
|
-
label_name: z7.string().min(1),
|
|
9263
|
-
language: z7.string().min(1),
|
|
9264
|
-
icon: z7.url(),
|
|
9265
|
-
sample_code: AgentCodeSnippetSampleCodeSchema
|
|
9266
|
-
}).strict().openapi("AgentCodeSnippet");
|
|
9267
|
-
var AgentCodeSnippetsSchema = z7.object({
|
|
9268
|
-
base_url: z7.url().describe("Public base URL for the TrueForge SDK `baseUrl`."),
|
|
9269
|
-
snippets: z7.array(AgentCodeSnippetSchema)
|
|
9270
|
-
}).strict().openapi("AgentCodeSnippets");
|
|
9271
|
-
var GetAgentCodeSnippetsResponseSchema = z7.object({ data: AgentCodeSnippetsSchema }).openapi("GetAgentCodeSnippetsResponse");
|
|
9272
|
-
var GetAgentCodeSnippetsRequestQuerySchema = z7.object({
|
|
9273
|
-
base_url: z7.url().optional().describe(
|
|
9274
|
-
"Public SDK base URL from the browser. When omitted, derived from the request origin and PUBLIC_BASE_URL."
|
|
9275
|
-
)
|
|
9276
|
-
}).strict().openapi("GetAgentCodeSnippetsRequestQuery");
|
|
9345
|
+
|
|
9346
|
+
// src/routes/fernExtensions.ts
|
|
9347
|
+
var TOKEN_PAGINATION = {
|
|
9348
|
+
cursor: "$request.page_token",
|
|
9349
|
+
next_cursor: "$response.pagination.next_page_token",
|
|
9350
|
+
results: "$response.data"
|
|
9351
|
+
};
|
|
9277
9352
|
|
|
9278
9353
|
// src/routes/agentRoutes.ts
|
|
9279
9354
|
var AgentIdParamsSchema = z8.object({
|
|
9280
9355
|
agent_id: z8.string().min(1).max(64).describe("Immutable agent identifier.")
|
|
9281
9356
|
});
|
|
9357
|
+
var ListAgentsQuerySchema = z8.object({
|
|
9358
|
+
limit: z8.coerce.number().int().min(1).max(AGENTS_PAGE_LIMIT).optional().default(AGENTS_PAGE_DEFAULT).describe(`Page size. Defaults to ${String(AGENTS_PAGE_DEFAULT)}, max ${String(AGENTS_PAGE_LIMIT)}.`),
|
|
9359
|
+
page_token: z8.string().optional().describe("Opaque token from a previous response `next_page_token`."),
|
|
9360
|
+
agent_name: z8.string().trim().min(1).optional().describe("Case-insensitive substring match on agent name.")
|
|
9361
|
+
}).openapi("ListAgentsQuery");
|
|
9282
9362
|
var listAgentsRoute = createRoute2({
|
|
9283
9363
|
method: "get",
|
|
9284
9364
|
path: "/",
|
|
9285
9365
|
tags: ["Agents" /* AGENTS */],
|
|
9286
9366
|
summary: "List agents",
|
|
9287
|
-
description: "
|
|
9367
|
+
description: "List configured agents for the tenant, ordered by name. Optional `agent_name` filters by substring.",
|
|
9288
9368
|
"x-fern-sdk-group-name": ["agents"],
|
|
9289
9369
|
"x-fern-sdk-method-name": "list",
|
|
9370
|
+
"x-fern-pagination": TOKEN_PAGINATION,
|
|
9371
|
+
request: {
|
|
9372
|
+
query: ListAgentsQuerySchema
|
|
9373
|
+
},
|
|
9290
9374
|
responses: {
|
|
9291
9375
|
200: {
|
|
9292
9376
|
content: { "application/json": { schema: ListAgentsResponseSchema } },
|
|
9293
|
-
description: "
|
|
9377
|
+
description: "Paginated matching agents."
|
|
9378
|
+
},
|
|
9379
|
+
400: {
|
|
9380
|
+
content: { "application/json": { schema: RequestErrorResponseSchema } },
|
|
9381
|
+
description: "Invalid query parameters or page token."
|
|
9294
9382
|
},
|
|
9295
9383
|
401: {
|
|
9296
9384
|
content: { "application/json": { schema: RequestErrorResponseSchema } },
|
|
@@ -9408,7 +9496,7 @@ var putAgentRoute = createRoute2({
|
|
|
9408
9496
|
path: "/{agent_id}",
|
|
9409
9497
|
tags: ["Agents" /* AGENTS */],
|
|
9410
9498
|
summary: "Update an agent",
|
|
9411
|
-
description: "
|
|
9499
|
+
description: "Update an existing agent by immutable id.",
|
|
9412
9500
|
"x-fern-sdk-group-name": ["agents"],
|
|
9413
9501
|
"x-fern-sdk-method-name": "update",
|
|
9414
9502
|
request: {
|
|
@@ -9614,6 +9702,44 @@ async function checkSnapshotStatus({
|
|
|
9614
9702
|
}
|
|
9615
9703
|
|
|
9616
9704
|
// src/runtime/sessionResources.ts
|
|
9705
|
+
var X_TFY_METADATA = "x-tfy-metadata";
|
|
9706
|
+
var TFG_METADATA_PREFIX = "tfg";
|
|
9707
|
+
function buildGatewayMetadata(input) {
|
|
9708
|
+
const metadata = {
|
|
9709
|
+
[`${TFG_METADATA_PREFIX}.session_id`]: input.session.session_id,
|
|
9710
|
+
[`${TFG_METADATA_PREFIX}.turn_id`]: input.turnId
|
|
9711
|
+
};
|
|
9712
|
+
const { agent } = input.session;
|
|
9713
|
+
if (agent.type === "reference") {
|
|
9714
|
+
metadata[`${TFG_METADATA_PREFIX}.agent_id`] = agent.id;
|
|
9715
|
+
if (agent.name !== null) {
|
|
9716
|
+
metadata[`${TFG_METADATA_PREFIX}.agent_name`] = agent.name;
|
|
9717
|
+
}
|
|
9718
|
+
}
|
|
9719
|
+
return metadata;
|
|
9720
|
+
}
|
|
9721
|
+
function gatewayMetadataHeaders(metadata) {
|
|
9722
|
+
if (Object.keys(metadata).length === 0) {
|
|
9723
|
+
return {};
|
|
9724
|
+
}
|
|
9725
|
+
return { [X_TFY_METADATA]: JSON.stringify(metadata) };
|
|
9726
|
+
}
|
|
9727
|
+
function withGatewayMetadataHeaders(input) {
|
|
9728
|
+
const { headers, metadataHeaders } = input;
|
|
9729
|
+
if (Object.keys(metadataHeaders).length === 0) {
|
|
9730
|
+
return headers;
|
|
9731
|
+
}
|
|
9732
|
+
if (typeof headers !== "function") {
|
|
9733
|
+
return { ...headers, ...metadataHeaders };
|
|
9734
|
+
}
|
|
9735
|
+
return async () => {
|
|
9736
|
+
const result = await headers();
|
|
9737
|
+
if ("authRequired" in result) {
|
|
9738
|
+
return result;
|
|
9739
|
+
}
|
|
9740
|
+
return { headers: { ...result.headers, ...metadataHeaders } };
|
|
9741
|
+
};
|
|
9742
|
+
}
|
|
9617
9743
|
function parseModelFqn(name) {
|
|
9618
9744
|
const slash = name.indexOf("/");
|
|
9619
9745
|
if (slash <= 0 || slash === name.length - 1) {
|
|
@@ -9794,11 +9920,19 @@ async function agentIfAccessible(input) {
|
|
|
9794
9920
|
async function listAccessibleAgents(input) {
|
|
9795
9921
|
const access = await input.authorizer.listAgentAccess({ context: input.context, action: input.action });
|
|
9796
9922
|
if (access.kind === "all") {
|
|
9797
|
-
return input.store.listAgents({
|
|
9923
|
+
return input.store.listAgents({
|
|
9924
|
+
tenant_id: input.context.tenant_id,
|
|
9925
|
+
agent_name: input.agent_name,
|
|
9926
|
+
limit: input.limit,
|
|
9927
|
+
page_token: input.page_token
|
|
9928
|
+
});
|
|
9798
9929
|
}
|
|
9799
9930
|
return input.store.listAgents({
|
|
9800
9931
|
tenant_id: input.context.tenant_id,
|
|
9801
|
-
external_ids: access.agent_external_ids
|
|
9932
|
+
external_ids: access.agent_external_ids,
|
|
9933
|
+
agent_name: input.agent_name,
|
|
9934
|
+
limit: input.limit,
|
|
9935
|
+
page_token: input.page_token
|
|
9802
9936
|
});
|
|
9803
9937
|
}
|
|
9804
9938
|
async function resolveManagedAgentIds(input) {
|
|
@@ -9807,11 +9941,14 @@ async function resolveManagedAgentIds(input) {
|
|
|
9807
9941
|
if (access.kind === "all") {
|
|
9808
9942
|
return [];
|
|
9809
9943
|
}
|
|
9810
|
-
const
|
|
9944
|
+
const { data } = await store.listAgents({
|
|
9811
9945
|
tenant_id: context.tenant_id,
|
|
9812
|
-
external_ids: access.agent_external_ids
|
|
9946
|
+
external_ids: access.agent_external_ids,
|
|
9947
|
+
agent_name: void 0,
|
|
9948
|
+
limit: void 0,
|
|
9949
|
+
page_token: void 0
|
|
9813
9950
|
});
|
|
9814
|
-
return
|
|
9951
|
+
return data.map((agent) => agent.id);
|
|
9815
9952
|
}
|
|
9816
9953
|
async function canReadAgentBoundResource(input) {
|
|
9817
9954
|
const { store, context, authorizer, created_by_subject_id, agent_id } = input;
|
|
@@ -9919,6 +10056,7 @@ function toWireAgent(record) {
|
|
|
9919
10056
|
return {
|
|
9920
10057
|
id: record.id,
|
|
9921
10058
|
name: record.name,
|
|
10059
|
+
description: record.description,
|
|
9922
10060
|
manifest: record.manifest,
|
|
9923
10061
|
created_by_subject: record.created_by_subject
|
|
9924
10062
|
};
|
|
@@ -9943,14 +10081,25 @@ async function validateManifest({
|
|
|
9943
10081
|
}
|
|
9944
10082
|
function createAgentsRouter(deps) {
|
|
9945
10083
|
const listHandler = async (c) => {
|
|
10084
|
+
const { limit, page_token: pageToken, agent_name: agentName } = c.req.valid("query");
|
|
9946
10085
|
const requestContext = deps.resolveRequestContext(c);
|
|
9947
|
-
|
|
9948
|
-
|
|
9949
|
-
|
|
9950
|
-
|
|
9951
|
-
|
|
9952
|
-
|
|
9953
|
-
|
|
10086
|
+
try {
|
|
10087
|
+
const { data, pagination } = await listAccessibleAgents({
|
|
10088
|
+
store: deps.resolveAgentStore(c),
|
|
10089
|
+
context: requestContext,
|
|
10090
|
+
authorizer: deps.authorizer,
|
|
10091
|
+
action: "read",
|
|
10092
|
+
agent_name: agentName,
|
|
10093
|
+
limit,
|
|
10094
|
+
page_token: pageToken
|
|
10095
|
+
});
|
|
10096
|
+
return c.json({ data: data.map(toWireAgent), pagination }, 200);
|
|
10097
|
+
} catch (error) {
|
|
10098
|
+
if (error instanceof InvalidPageTokenError) {
|
|
10099
|
+
return c.json({ error: { message: error.message } }, 400);
|
|
10100
|
+
}
|
|
10101
|
+
throw error;
|
|
10102
|
+
}
|
|
9954
10103
|
};
|
|
9955
10104
|
const createHandler = async (c) => {
|
|
9956
10105
|
const body = c.req.valid("json");
|
|
@@ -9967,6 +10116,7 @@ function createAgentsRouter(deps) {
|
|
|
9967
10116
|
const record = await deps.resolveAgentStore(c).createAgent({
|
|
9968
10117
|
tenant_id: requestContext.tenant_id,
|
|
9969
10118
|
name: body.name,
|
|
10119
|
+
description: body.description,
|
|
9970
10120
|
manifest,
|
|
9971
10121
|
external_id: null,
|
|
9972
10122
|
created_by_subject: createdBySubjectFromRequestContext(requestContext)
|
|
@@ -10062,6 +10212,7 @@ function createAgentsRouter(deps) {
|
|
|
10062
10212
|
const record = await deps.resolveAgentStore(c).updateAgent({
|
|
10063
10213
|
tenant_id: requestContext.tenant_id,
|
|
10064
10214
|
id: agentId,
|
|
10215
|
+
...body.description === void 0 ? {} : { description: body.description },
|
|
10065
10216
|
manifest
|
|
10066
10217
|
});
|
|
10067
10218
|
if (record === void 0) {
|
|
@@ -10758,7 +10909,8 @@ import { z as z16 } from "@hono/zod-openapi";
|
|
|
10758
10909
|
// src/schemas/mcpServer.ts
|
|
10759
10910
|
init_common();
|
|
10760
10911
|
import { z as z15 } from "@hono/zod-openapi";
|
|
10761
|
-
var
|
|
10912
|
+
var MCP_SERVER_TYPES = ["remote", "truefoundry"];
|
|
10913
|
+
var McpServerTypeSchema = z15.enum(MCP_SERVER_TYPES).openapi("MCPServerType");
|
|
10762
10914
|
var McpServerHeaderAuthSchema = z15.object({
|
|
10763
10915
|
type: z15.literal("header").describe("Authenticate with static HTTP headers."),
|
|
10764
10916
|
headers: z15.record(z15.string().min(1), z15.string().min(1)).refine((headers) => Object.keys(headers).length > 0, {
|
|
@@ -10772,14 +10924,21 @@ var McpServerDcrAuthSchema = z15.object({
|
|
|
10772
10924
|
}).strict().openapi("MCPServerDcrAuth");
|
|
10773
10925
|
var McpServerManifestAuthSchema = z15.discriminatedUnion("type", [McpServerHeaderAuthSchema, McpServerDcrAuthSchema]).describe("Optional auth settings. Omit when the server needs no credentials.").openapi("MCPServerManifestAuth");
|
|
10774
10926
|
var McpServerDescriptionSchema = z15.string().trim().min(1).describe("Concise summary of what this MCP server provides.");
|
|
10775
|
-
var
|
|
10776
|
-
type: McpServerTypeSchema,
|
|
10927
|
+
var RemoteMcpServerManifestSchema = z15.object({
|
|
10928
|
+
type: z15.literal(McpServerTypeSchema.enum.remote),
|
|
10777
10929
|
name: NameSchema,
|
|
10778
|
-
url: z15.url().describe("MCP endpoint URL.
|
|
10930
|
+
url: z15.url().describe("MCP endpoint URL."),
|
|
10779
10931
|
description: McpServerDescriptionSchema,
|
|
10780
10932
|
auth: McpServerManifestAuthSchema.optional()
|
|
10781
|
-
}).strict();
|
|
10782
|
-
var
|
|
10933
|
+
}).strict().openapi("RemoteMCPServerManifest");
|
|
10934
|
+
var TrueFoundryMcpServerManifestSchema = z15.object({
|
|
10935
|
+
type: z15.literal(McpServerTypeSchema.enum.truefoundry),
|
|
10936
|
+
name: NameSchema,
|
|
10937
|
+
url: z15.url().describe("Resolved AI Gateway proxy URL for this TrueFoundry-managed MCP server."),
|
|
10938
|
+
description: McpServerDescriptionSchema,
|
|
10939
|
+
auth: McpServerManifestAuthSchema.optional()
|
|
10940
|
+
}).strict().openapi("TrueFoundryMCPServerManifest");
|
|
10941
|
+
var McpServerManifestSchema = z15.discriminatedUnion("type", [RemoteMcpServerManifestSchema, TrueFoundryMcpServerManifestSchema]).openapi("MCPServerManifest");
|
|
10783
10942
|
var McpAuthStatusSchema = z15.object({
|
|
10784
10943
|
status: z15.enum(["authenticated", "auth_required", "not_required"]).describe("Current auth state for this MCP server."),
|
|
10785
10944
|
authorization_url: z15.url().optional().describe("When auth is required, this contains the URL to redirect the user to for authorization.")
|
|
@@ -12422,7 +12581,7 @@ function createPermissionsRouter(deps) {
|
|
|
12422
12581
|
// src/apis/schedules.ts
|
|
12423
12582
|
import { OpenAPIHono as OpenAPIHono11 } from "@hono/zod-openapi";
|
|
12424
12583
|
import {
|
|
12425
|
-
InvalidPageTokenError
|
|
12584
|
+
InvalidPageTokenError as InvalidPageTokenError2
|
|
12426
12585
|
} from "@truefoundry/trueforge-core/agent-session";
|
|
12427
12586
|
|
|
12428
12587
|
// src/controller/scheduleDispatch.ts
|
|
@@ -12636,15 +12795,6 @@ init_scheduleStore();
|
|
|
12636
12795
|
init_common();
|
|
12637
12796
|
import { createRoute as createRoute10, z as z25 } from "@hono/zod-openapi";
|
|
12638
12797
|
init_schedule();
|
|
12639
|
-
|
|
12640
|
-
// src/routes/fernExtensions.ts
|
|
12641
|
-
var TOKEN_PAGINATION = {
|
|
12642
|
-
cursor: "$request.page_token",
|
|
12643
|
-
next_cursor: "$response.pagination.next_page_token",
|
|
12644
|
-
results: "$response.data"
|
|
12645
|
-
};
|
|
12646
|
-
|
|
12647
|
-
// src/routes/scheduleRoutes.ts
|
|
12648
12798
|
var ScheduleIdParamsSchema = z25.object({
|
|
12649
12799
|
schedule_id: z25.string().min(1).max(64).describe("Immutable schedule identifier.")
|
|
12650
12800
|
});
|
|
@@ -12954,7 +13104,7 @@ import { z as z26 } from "@hono/zod-openapi";
|
|
|
12954
13104
|
import {
|
|
12955
13105
|
EventType,
|
|
12956
13106
|
SessionEventItemSchema,
|
|
12957
|
-
TokenPaginationSchema as
|
|
13107
|
+
TokenPaginationSchema as TokenPaginationSchema3,
|
|
12958
13108
|
TurnCreatedEventSchema,
|
|
12959
13109
|
TurnDoneEventSchema
|
|
12960
13110
|
} from "@truefoundry/trueforge-core/agent-session";
|
|
@@ -12995,13 +13145,13 @@ var ListSessionEventsRequestQuerySchema = z26.object({
|
|
|
12995
13145
|
}).openapi("ListSessionEventsRequestQuery");
|
|
12996
13146
|
var ListSessionEventsResponseSchema = z26.object({
|
|
12997
13147
|
data: z26.array(SessionEventItemSchema),
|
|
12998
|
-
pagination:
|
|
13148
|
+
pagination: TokenPaginationSchema3
|
|
12999
13149
|
}).openapi("ListSessionEventsResponse");
|
|
13000
13150
|
|
|
13001
13151
|
// src/schemas/turn.ts
|
|
13002
13152
|
init_common();
|
|
13003
13153
|
import { z as z27 } from "@hono/zod-openapi";
|
|
13004
|
-
import { SessionEventSchema, TokenPaginationSchema as
|
|
13154
|
+
import { SessionEventSchema, TokenPaginationSchema as TokenPaginationSchema4, TurnSchema } from "@truefoundry/trueforge-core/agent-session";
|
|
13005
13155
|
import { CreateTurnRequestSchema, TurnSchema as TurnSchema2 } from "@truefoundry/trueforge-core/agent-session";
|
|
13006
13156
|
var SubscribeTurnQuerySchema = z27.object({
|
|
13007
13157
|
// Query strings need coerce; map null/'' to undefined first so Number(null)→0
|
|
@@ -13024,7 +13174,7 @@ var GetTurnResponseSchema = z27.object({
|
|
|
13024
13174
|
}).openapi("GetTurnResponse");
|
|
13025
13175
|
var ListTurnsResponseSchema = z27.object({
|
|
13026
13176
|
data: z27.array(TurnSchema),
|
|
13027
|
-
pagination:
|
|
13177
|
+
pagination: TokenPaginationSchema4
|
|
13028
13178
|
}).openapi("ListTurnsResponse");
|
|
13029
13179
|
var ListTurnEventsRequestQuerySchema = z27.object({
|
|
13030
13180
|
limit: z27.coerce.number().int().min(1).max(EVENTS_PAGE_LIMIT).optional().default(EVENTS_PAGE_LIMIT).describe(`Page size. Defaults to ${String(EVENTS_PAGE_LIMIT)}, max ${String(EVENTS_PAGE_LIMIT)}.`),
|
|
@@ -13033,7 +13183,7 @@ var ListTurnEventsRequestQuerySchema = z27.object({
|
|
|
13033
13183
|
}).openapi("ListTurnEventsRequestQuery");
|
|
13034
13184
|
var ListTurnEventsResponseSchema = z27.object({
|
|
13035
13185
|
data: z27.array(SessionEventSchema),
|
|
13036
|
-
pagination:
|
|
13186
|
+
pagination: TokenPaginationSchema4
|
|
13037
13187
|
}).openapi("ListTurnEventsResponse");
|
|
13038
13188
|
var DownloadSandboxFileRequestQuerySchema = z27.object({
|
|
13039
13189
|
path: z27.string().min(1).describe(
|
|
@@ -13053,7 +13203,7 @@ import {
|
|
|
13053
13203
|
SessionSchema,
|
|
13054
13204
|
SessionSourceScheduleSchema,
|
|
13055
13205
|
SessionSourceTypeSchema,
|
|
13056
|
-
TokenPaginationSchema as
|
|
13206
|
+
TokenPaginationSchema as TokenPaginationSchema5
|
|
13057
13207
|
} from "@truefoundry/trueforge-core/agent-session";
|
|
13058
13208
|
|
|
13059
13209
|
// src/schemas/deepObjectQuery.ts
|
|
@@ -13196,7 +13346,7 @@ var GetSessionResponseSchema = z29.object({
|
|
|
13196
13346
|
}).openapi("GetSessionResponse");
|
|
13197
13347
|
var ListSessionsResponseSchema = z29.object({
|
|
13198
13348
|
data: z29.array(SessionSchema),
|
|
13199
|
-
pagination:
|
|
13349
|
+
pagination: TokenPaginationSchema5
|
|
13200
13350
|
}).openapi("ListSessionsResponse");
|
|
13201
13351
|
|
|
13202
13352
|
// src/routes/sessionRoutes.ts
|
|
@@ -14018,10 +14168,13 @@ function createTurnResolver(deps) {
|
|
|
14018
14168
|
modelProviderStore,
|
|
14019
14169
|
logger,
|
|
14020
14170
|
signal,
|
|
14021
|
-
tenant_id,
|
|
14022
14171
|
userRef,
|
|
14023
|
-
|
|
14172
|
+
session,
|
|
14173
|
+
turnId
|
|
14024
14174
|
} = deps;
|
|
14175
|
+
const tenant_id = session.tenant_id;
|
|
14176
|
+
const sessionId = session.session_id;
|
|
14177
|
+
const metadataHeaders = isTrueFoundryModeEnabled() ? gatewayMetadataHeaders(buildGatewayMetadata({ session, turnId })) : {};
|
|
14025
14178
|
return new TurnResourceResolver({
|
|
14026
14179
|
llm: async (name) => {
|
|
14027
14180
|
const resolved = await getModelDetails({
|
|
@@ -14031,7 +14184,10 @@ function createTurnResolver(deps) {
|
|
|
14031
14184
|
});
|
|
14032
14185
|
return {
|
|
14033
14186
|
modelClient: new VercelAILLM({
|
|
14034
|
-
providerConfig:
|
|
14187
|
+
providerConfig: {
|
|
14188
|
+
...resolved.providerConfig,
|
|
14189
|
+
headers: { ...resolved.providerConfig.headers, ...metadataHeaders }
|
|
14190
|
+
},
|
|
14035
14191
|
logger,
|
|
14036
14192
|
signal
|
|
14037
14193
|
}),
|
|
@@ -14051,7 +14207,13 @@ function createTurnResolver(deps) {
|
|
|
14051
14207
|
message: `Unknown MCP server "${name}" \u2014 not configured`
|
|
14052
14208
|
});
|
|
14053
14209
|
}
|
|
14054
|
-
return
|
|
14210
|
+
return {
|
|
14211
|
+
url: connection.url,
|
|
14212
|
+
headers: withGatewayMetadataHeaders({
|
|
14213
|
+
headers: connection.headers,
|
|
14214
|
+
metadataHeaders
|
|
14215
|
+
})
|
|
14216
|
+
};
|
|
14055
14217
|
},
|
|
14056
14218
|
mcpRequestTimeoutMs: config_default.MCP_REQUEST_TIMEOUT_MS,
|
|
14057
14219
|
mcpConnectTimeoutMs: config_default.MCP_CONNECT_TIMEOUT_MS,
|
|
@@ -14164,6 +14326,7 @@ async function drainTurnEvents(input) {
|
|
|
14164
14326
|
async function beginTurnExecution(params) {
|
|
14165
14327
|
const { session, input, previous_turn_id: previousTurnId, userRef, deps } = params;
|
|
14166
14328
|
const sessionId = session.session_id;
|
|
14329
|
+
const turnId = mintPeeredTurnId(config_default.EXECUTOR_ID);
|
|
14167
14330
|
const abortController = new AbortController();
|
|
14168
14331
|
const tenant_id = session.tenant_id;
|
|
14169
14332
|
const resolver = createTurnResolver({
|
|
@@ -14174,13 +14337,13 @@ async function beginTurnExecution(params) {
|
|
|
14174
14337
|
modelProviderStore: deps.modelProviderStore,
|
|
14175
14338
|
logger: deps.logger,
|
|
14176
14339
|
signal: abortController.signal,
|
|
14177
|
-
tenant_id,
|
|
14178
14340
|
userRef,
|
|
14179
|
-
|
|
14341
|
+
session,
|
|
14342
|
+
turnId
|
|
14180
14343
|
});
|
|
14181
14344
|
const title = session.record.last_turn_id ? void 0 : deriveSessionTitle(input);
|
|
14182
14345
|
const turn = await session.createTurn({
|
|
14183
|
-
turn_id:
|
|
14346
|
+
turn_id: turnId,
|
|
14184
14347
|
input,
|
|
14185
14348
|
previous_turn_id: previousTurnId,
|
|
14186
14349
|
signal: abortController.signal,
|
|
@@ -14721,7 +14884,7 @@ function createSchedulesRouter(deps) {
|
|
|
14721
14884
|
});
|
|
14722
14885
|
return c.json({ data: data.map(toWireSchedule), pagination }, 200);
|
|
14723
14886
|
} catch (error) {
|
|
14724
|
-
if (error instanceof
|
|
14887
|
+
if (error instanceof InvalidPageTokenError2) {
|
|
14725
14888
|
return c.json({ error: { message: error.message } }, 400);
|
|
14726
14889
|
}
|
|
14727
14890
|
throw error;
|
|
@@ -14756,7 +14919,7 @@ function createSchedulesRouter(deps) {
|
|
|
14756
14919
|
});
|
|
14757
14920
|
return c.json({ data: data.map(toWireScheduleRun), pagination }, 200);
|
|
14758
14921
|
} catch (error) {
|
|
14759
|
-
if (error instanceof
|
|
14922
|
+
if (error instanceof InvalidPageTokenError2) {
|
|
14760
14923
|
return c.json({ error: { message: error.message } }, 400);
|
|
14761
14924
|
}
|
|
14762
14925
|
throw error;
|
|
@@ -17594,11 +17757,12 @@ function asError(value) {
|
|
|
17594
17757
|
}
|
|
17595
17758
|
function toPutRemoteAgentPayload({
|
|
17596
17759
|
name,
|
|
17760
|
+
description,
|
|
17597
17761
|
manifest
|
|
17598
17762
|
}) {
|
|
17599
17763
|
return {
|
|
17600
17764
|
name,
|
|
17601
|
-
description: name,
|
|
17765
|
+
description: (description || name).slice(0, AGENT_DESCRIPTION_MAX_LENGTH),
|
|
17602
17766
|
model: manifest.model.name,
|
|
17603
17767
|
mcp_servers: (manifest.mcp_servers ?? []).map((server) => server.name)
|
|
17604
17768
|
};
|
|
@@ -17644,7 +17808,11 @@ var TrueFoundryAgentStore = class {
|
|
|
17644
17808
|
try {
|
|
17645
17809
|
({ externalId } = await this.#client.putRemoteAgent({
|
|
17646
17810
|
accessToken: await this.#resolveAccessToken(),
|
|
17647
|
-
...toPutRemoteAgentPayload({
|
|
17811
|
+
...toPutRemoteAgentPayload({
|
|
17812
|
+
name: input.name,
|
|
17813
|
+
description: input.description,
|
|
17814
|
+
manifest: input.manifest
|
|
17815
|
+
})
|
|
17648
17816
|
}));
|
|
17649
17817
|
const updated = await this.#inner.updateAgent(
|
|
17650
17818
|
{ tenant_id: input.tenant_id, id: created.id, external_id: externalId },
|
|
@@ -17678,8 +17846,7 @@ var TrueFoundryAgentStore = class {
|
|
|
17678
17846
|
}
|
|
17679
17847
|
}
|
|
17680
17848
|
async updateAgent(input, transaction) {
|
|
17681
|
-
|
|
17682
|
-
if (nextManifest === void 0) {
|
|
17849
|
+
if (input.manifest === void 0 && input.description === void 0) {
|
|
17683
17850
|
return this.#inner.updateAgent(input, transaction);
|
|
17684
17851
|
}
|
|
17685
17852
|
return this.#withUpdateLock(input, transaction, async (txn) => {
|
|
@@ -17687,16 +17854,23 @@ var TrueFoundryAgentStore = class {
|
|
|
17687
17854
|
if (previous === void 0) {
|
|
17688
17855
|
return void 0;
|
|
17689
17856
|
}
|
|
17857
|
+
const nextManifest = input.manifest ?? previous.manifest;
|
|
17858
|
+
const nextDescription = input.description ?? previous.description;
|
|
17690
17859
|
const { externalId } = await this.#client.putRemoteAgent({
|
|
17691
17860
|
accessToken: await this.#resolveAccessToken(),
|
|
17692
|
-
...toPutRemoteAgentPayload({
|
|
17861
|
+
...toPutRemoteAgentPayload({
|
|
17862
|
+
name: previous.name,
|
|
17863
|
+
description: nextDescription,
|
|
17864
|
+
manifest: nextManifest
|
|
17865
|
+
})
|
|
17693
17866
|
});
|
|
17694
17867
|
try {
|
|
17695
17868
|
return await this.#inner.updateAgent(
|
|
17696
17869
|
{
|
|
17697
17870
|
tenant_id: input.tenant_id,
|
|
17698
17871
|
id: input.id,
|
|
17699
|
-
manifest: nextManifest,
|
|
17872
|
+
...input.manifest === void 0 ? {} : { manifest: nextManifest },
|
|
17873
|
+
...input.description === void 0 ? {} : { description: nextDescription },
|
|
17700
17874
|
...externalId === previous.external_id ? {} : { external_id: externalId }
|
|
17701
17875
|
},
|
|
17702
17876
|
txn
|
|
@@ -17707,6 +17881,7 @@ var TrueFoundryAgentStore = class {
|
|
|
17707
17881
|
accessToken: await this.#resolveAccessToken(),
|
|
17708
17882
|
...toPutRemoteAgentPayload({
|
|
17709
17883
|
name: previous.name,
|
|
17884
|
+
description: previous.description,
|
|
17710
17885
|
manifest: previous.manifest
|
|
17711
17886
|
})
|
|
17712
17887
|
});
|
|
@@ -17936,18 +18111,21 @@ function resolveAuthorizeRedirectURL(input) {
|
|
|
17936
18111
|
}
|
|
17937
18112
|
var TrueFoundryMcpServerStore = class {
|
|
17938
18113
|
#client;
|
|
17939
|
-
#
|
|
18114
|
+
#asAgent;
|
|
18115
|
+
#asUser;
|
|
17940
18116
|
#subject;
|
|
17941
18117
|
#perServerHeaders;
|
|
17942
18118
|
#gatewayUrl;
|
|
17943
18119
|
constructor(input) {
|
|
17944
18120
|
this.#client = input.client;
|
|
17945
|
-
|
|
18121
|
+
const tokens = accessTokenForRequest({
|
|
17946
18122
|
client: input.client,
|
|
17947
18123
|
requestContext: asTrueFoundryRequestContext(input.requestContext),
|
|
17948
18124
|
agent: input.agent,
|
|
17949
18125
|
logger: input.logger
|
|
17950
18126
|
});
|
|
18127
|
+
this.#asAgent = tokens.asAgent;
|
|
18128
|
+
this.#asUser = tokens.asUser;
|
|
17951
18129
|
this.#subject = input.requestContext.subject;
|
|
17952
18130
|
this.#perServerHeaders = input.perServerHeaders ?? {};
|
|
17953
18131
|
}
|
|
@@ -17956,7 +18134,7 @@ var TrueFoundryMcpServerStore = class {
|
|
|
17956
18134
|
const { record, userRef } = input;
|
|
17957
18135
|
const headers = async () => ({
|
|
17958
18136
|
...withoutAuthorization(this.#perServerHeaders[record.name]),
|
|
17959
|
-
Authorization: `Bearer ${await this.#
|
|
18137
|
+
Authorization: `Bearer ${await this.#asUser()}`
|
|
17960
18138
|
});
|
|
17961
18139
|
return async () => {
|
|
17962
18140
|
const status = await this.authorize({
|
|
@@ -17985,7 +18163,7 @@ var TrueFoundryMcpServerStore = class {
|
|
|
17985
18163
|
if (input.names?.length === 0) {
|
|
17986
18164
|
return [];
|
|
17987
18165
|
}
|
|
17988
|
-
const accessToken = await this.#
|
|
18166
|
+
const accessToken = await this.#asAgent();
|
|
17989
18167
|
const [rows, gatewayUrl] = await Promise.all([
|
|
17990
18168
|
this.#client.listMcpServers({
|
|
17991
18169
|
accessToken,
|
|
@@ -17997,7 +18175,7 @@ var TrueFoundryMcpServerStore = class {
|
|
|
17997
18175
|
}
|
|
17998
18176
|
async getServer(input, transaction) {
|
|
17999
18177
|
void transaction;
|
|
18000
|
-
const accessToken = await this.#
|
|
18178
|
+
const accessToken = await this.#asAgent();
|
|
18001
18179
|
const [row, gatewayUrl] = await Promise.all([
|
|
18002
18180
|
this.#client.getMcpServerByName({ accessToken, name: input.name }),
|
|
18003
18181
|
this.#resolveGatewayUrl()
|
|
@@ -18051,7 +18229,7 @@ var TrueFoundryMcpServerStore = class {
|
|
|
18051
18229
|
out.set(
|
|
18052
18230
|
record.name,
|
|
18053
18231
|
await this.#client.getMcpAuthStatus({
|
|
18054
|
-
accessToken: await this.#
|
|
18232
|
+
accessToken: await this.#asUser(),
|
|
18055
18233
|
mcpServerId: record.id,
|
|
18056
18234
|
subjectId: this.#subject.id,
|
|
18057
18235
|
subjectType: this.#subject.type
|
|
@@ -18066,7 +18244,7 @@ var TrueFoundryMcpServerStore = class {
|
|
|
18066
18244
|
throw new McpServerNotFoundError(input.name);
|
|
18067
18245
|
}
|
|
18068
18246
|
return this.#client.getMcpAuthorize({
|
|
18069
|
-
accessToken: await this.#
|
|
18247
|
+
accessToken: await this.#asUser(),
|
|
18070
18248
|
mcpServerId: record.id,
|
|
18071
18249
|
redirectURL: resolveAuthorizeRedirectURL({
|
|
18072
18250
|
...input.returnTo !== void 0 ? { returnTo: input.returnTo } : {}
|
|
@@ -18080,7 +18258,7 @@ var TrueFoundryMcpServerStore = class {
|
|
|
18080
18258
|
throw new McpServerNotFoundError(input.name);
|
|
18081
18259
|
}
|
|
18082
18260
|
await this.#client.deleteMcpAuth({
|
|
18083
|
-
accessToken: await this.#
|
|
18261
|
+
accessToken: await this.#asUser(),
|
|
18084
18262
|
mcpServerId: record.id,
|
|
18085
18263
|
subjectId: this.#subject.id,
|
|
18086
18264
|
subjectType: this.#subject.type,
|
|
@@ -18089,7 +18267,7 @@ var TrueFoundryMcpServerStore = class {
|
|
|
18089
18267
|
}
|
|
18090
18268
|
async #resolveGatewayUrl() {
|
|
18091
18269
|
if (this.#gatewayUrl === void 0) {
|
|
18092
|
-
const installations = await this.#client.listGatewayInstallations(await this.#
|
|
18270
|
+
const installations = await this.#client.listGatewayInstallations(await this.#asAgent());
|
|
18093
18271
|
this.#gatewayUrl = resolveDefaultGatewayUrl(installations);
|
|
18094
18272
|
}
|
|
18095
18273
|
return this.#gatewayUrl;
|
|
@@ -18110,15 +18288,18 @@ function toRecord2(input) {
|
|
|
18110
18288
|
init_modelProviderStore();
|
|
18111
18289
|
var TrueFoundryModelProviderStore = class {
|
|
18112
18290
|
#client;
|
|
18113
|
-
#
|
|
18291
|
+
#asAgent;
|
|
18292
|
+
#asUser;
|
|
18114
18293
|
constructor(input) {
|
|
18115
18294
|
this.#client = input.client;
|
|
18116
|
-
|
|
18295
|
+
const tokens = accessTokenForRequest({
|
|
18117
18296
|
client: input.client,
|
|
18118
18297
|
requestContext: asTrueFoundryRequestContext(input.requestContext),
|
|
18119
18298
|
agent: input.agent,
|
|
18120
18299
|
logger: input.logger
|
|
18121
18300
|
});
|
|
18301
|
+
this.#asAgent = tokens.asAgent;
|
|
18302
|
+
this.#asUser = tokens.asUser;
|
|
18122
18303
|
}
|
|
18123
18304
|
async listProviders(input, transaction) {
|
|
18124
18305
|
void transaction;
|
|
@@ -18151,19 +18332,19 @@ var TrueFoundryModelProviderStore = class {
|
|
|
18151
18332
|
return flattenProviderModels(await this.listProviders(input, transaction));
|
|
18152
18333
|
}
|
|
18153
18334
|
async #records(input) {
|
|
18154
|
-
const
|
|
18335
|
+
const [agentToken, userToken] = await Promise.all([this.#asAgent(), this.#asUser()]);
|
|
18155
18336
|
const [integrations, installations] = await Promise.all([
|
|
18156
18337
|
this.#client.listProviderIntegrations({
|
|
18157
|
-
accessToken,
|
|
18338
|
+
accessToken: agentToken,
|
|
18158
18339
|
...input.filter !== void 0 ? { filter: input.filter } : {}
|
|
18159
18340
|
}),
|
|
18160
|
-
this.#client.listGatewayInstallations(
|
|
18341
|
+
this.#client.listGatewayInstallations(agentToken)
|
|
18161
18342
|
]);
|
|
18162
18343
|
const gatewayUrl = resolveDefaultGatewayUrl(installations);
|
|
18163
18344
|
return toRecords({
|
|
18164
18345
|
tenant_id: input.tenant_id,
|
|
18165
18346
|
gatewayUrl,
|
|
18166
|
-
accessToken,
|
|
18347
|
+
accessToken: userToken,
|
|
18167
18348
|
models: mapEnabledModels({ integrations })
|
|
18168
18349
|
});
|
|
18169
18350
|
}
|