@truefoundry/trueforge 0.2.0-rc.5 → 0.2.0-rc.7
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 +481 -289
- 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,162 @@ 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 ImportAgentCollaboratorSchema = z3.object({}).loose().openapi("ImportAgentCollaborator");
|
|
8104
|
+
var ImportAgentItemSchema = z3.object({
|
|
8105
|
+
name: NameSchema.refine((name) => !RESERVED_AGENT_NAMES2.has(name), {
|
|
8106
|
+
message: "Agent name is reserved, cannot be used"
|
|
8107
|
+
}),
|
|
8108
|
+
description: AgentDescriptionSchema.optional(),
|
|
8109
|
+
manifest: AgentSpecSchema5,
|
|
8110
|
+
tenant_id: z3.string().min(1).describe("Tenant to create the agent under."),
|
|
8111
|
+
created_by_subject: CreatedBySubjectSchema3.describe("Original creator to persist on the agent."),
|
|
8112
|
+
collaborators: z3.array(ImportAgentCollaboratorSchema).optional()
|
|
8012
8113
|
}).strict().openapi("ImportAgentItem");
|
|
8013
|
-
var ImportAgentsRequestSchema =
|
|
8014
|
-
agents:
|
|
8114
|
+
var ImportAgentsRequestSchema = z3.object({
|
|
8115
|
+
agents: z3.array(ImportAgentItemSchema).describe("Agents to create; each carries tenant_id and created_by_subject.")
|
|
8015
8116
|
}).strict().openapi("ImportAgentsRequest");
|
|
8016
|
-
var ImportAgentItemResultSchema =
|
|
8017
|
-
name:
|
|
8018
|
-
tenant_id:
|
|
8019
|
-
status:
|
|
8020
|
-
agent_id:
|
|
8021
|
-
error:
|
|
8117
|
+
var ImportAgentItemResultSchema = z3.object({
|
|
8118
|
+
name: z3.string().min(1),
|
|
8119
|
+
tenant_id: z3.string().min(1),
|
|
8120
|
+
status: z3.enum(["created", "exists", "failed"]),
|
|
8121
|
+
agent_id: z3.string().min(1).optional(),
|
|
8122
|
+
error: z3.string().optional()
|
|
8022
8123
|
}).strict().openapi("ImportAgentItemResult");
|
|
8023
|
-
var ImportAgentsResultSchema =
|
|
8024
|
-
results:
|
|
8124
|
+
var ImportAgentsResultSchema = z3.object({
|
|
8125
|
+
results: z3.array(ImportAgentItemResultSchema)
|
|
8025
8126
|
}).strict().openapi("ImportAgentsResult");
|
|
8026
|
-
var ImportAgentsResponseSchema =
|
|
8127
|
+
var ImportAgentsResponseSchema = z3.object({
|
|
8027
8128
|
data: ImportAgentsResultSchema
|
|
8028
8129
|
}).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:
|
|
8130
|
+
var ImportSessionSnapshotSchema = z3.object({
|
|
8131
|
+
session_id: z3.string().min(1),
|
|
8132
|
+
tenant_id: z3.string().min(1),
|
|
8133
|
+
created_by_subject: CreatedBySubjectSchema3,
|
|
8134
|
+
agent_name: z3.string().min(1).nullable().optional(),
|
|
8135
|
+
agent_id: z3.string().min(1).nullable().optional(),
|
|
8136
|
+
agent_spec: z3.record(z3.string(), z3.unknown()).nullable().optional(),
|
|
8137
|
+
title: z3.string().nullable(),
|
|
8138
|
+
last_turn_id: z3.string().nullable(),
|
|
8139
|
+
custom: z3.record(z3.string(), z3.unknown()).nullable(),
|
|
8140
|
+
last_activity_timestamp_ms: z3.number(),
|
|
8141
|
+
created_at: z3.string().min(1),
|
|
8142
|
+
updated_at: z3.string().min(1)
|
|
8042
8143
|
}).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:
|
|
8144
|
+
var ImportSessionThreadSchema = z3.object({
|
|
8145
|
+
thread_id: z3.string().min(1),
|
|
8146
|
+
context: z3.array(z3.unknown()),
|
|
8147
|
+
current_context_usage: z3.unknown(),
|
|
8148
|
+
parent: z3.unknown().nullable(),
|
|
8149
|
+
completion: z3.unknown().nullable(),
|
|
8150
|
+
agent_info: z3.unknown().nullable(),
|
|
8151
|
+
capability_state: z3.record(z3.string(), z3.unknown()).nullable()
|
|
8051
8152
|
}).loose().openapi("ImportSessionThread");
|
|
8052
|
-
var ImportSessionEventSchema =
|
|
8053
|
-
id:
|
|
8054
|
-
created_at:
|
|
8153
|
+
var ImportSessionEventSchema = z3.object({
|
|
8154
|
+
id: z3.string().min(1),
|
|
8155
|
+
created_at: z3.string().min(1)
|
|
8055
8156
|
}).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:
|
|
8157
|
+
var ImportSessionTurnSchema = z3.object({
|
|
8158
|
+
turn_id: z3.string().min(1),
|
|
8159
|
+
first_turn_id: z3.string().min(1),
|
|
8160
|
+
previous_turn_id: z3.string().nullable(),
|
|
8161
|
+
ancestor_ids: z3.array(z3.string()),
|
|
8162
|
+
input: z3.array(z3.unknown()),
|
|
8163
|
+
state: z3.unknown(),
|
|
8164
|
+
checkpoint: z3.unknown(),
|
|
8165
|
+
custom: z3.record(z3.string(), z3.unknown()).nullable(),
|
|
8166
|
+
created_at: z3.string().min(1),
|
|
8167
|
+
updated_at: z3.string().min(1),
|
|
8168
|
+
threads: z3.array(ImportSessionThreadSchema),
|
|
8169
|
+
events: z3.array(ImportSessionEventSchema)
|
|
8069
8170
|
}).loose().openapi("ImportSessionTurn");
|
|
8070
|
-
var ImportSessionRequestSchema =
|
|
8171
|
+
var ImportSessionRequestSchema = z3.object({
|
|
8071
8172
|
session: ImportSessionSnapshotSchema,
|
|
8072
|
-
turns:
|
|
8173
|
+
turns: z3.array(ImportSessionTurnSchema).min(1)
|
|
8073
8174
|
}).openapi("ImportSessionRequest");
|
|
8074
|
-
var ImportSessionResultSchema =
|
|
8075
|
-
imported:
|
|
8076
|
-
session_id:
|
|
8175
|
+
var ImportSessionResultSchema = z3.object({
|
|
8176
|
+
imported: z3.boolean(),
|
|
8177
|
+
session_id: z3.string()
|
|
8077
8178
|
}).openapi("ImportSessionResult");
|
|
8078
|
-
var ImportSessionResponseSchema =
|
|
8079
|
-
var ImportSessionsCheckpointQuerySchema =
|
|
8080
|
-
tenant_id:
|
|
8179
|
+
var ImportSessionResponseSchema = z3.object({ data: ImportSessionResultSchema }).openapi("ImportSessionResponse");
|
|
8180
|
+
var ImportSessionsCheckpointQuerySchema = z3.object({
|
|
8181
|
+
tenant_id: z3.string().min(1).describe("Tenant whose imported-session watermark to read.")
|
|
8081
8182
|
}).strict().openapi("ImportSessionsCheckpointQuery");
|
|
8082
|
-
var ImportSessionsCheckpointResponseSchema =
|
|
8083
|
-
data:
|
|
8084
|
-
created_at:
|
|
8183
|
+
var ImportSessionsCheckpointResponseSchema = z3.object({
|
|
8184
|
+
data: z3.object({
|
|
8185
|
+
created_at: z3.string().nullable()
|
|
8085
8186
|
})
|
|
8086
8187
|
}).strict().openapi("ImportSessionsCheckpointResponse");
|
|
8087
8188
|
|
|
8088
8189
|
// src/schemas/errors.ts
|
|
8089
|
-
import { z as
|
|
8090
|
-
var RequestErrorResponseSchema =
|
|
8091
|
-
error:
|
|
8092
|
-
message:
|
|
8093
|
-
type:
|
|
8094
|
-
code:
|
|
8095
|
-
param:
|
|
8190
|
+
import { z as z4 } from "@hono/zod-openapi";
|
|
8191
|
+
var RequestErrorResponseSchema = z4.object({
|
|
8192
|
+
error: z4.object({
|
|
8193
|
+
message: z4.string().describe("Human-readable explanation of the failure."),
|
|
8194
|
+
type: z4.string().optional().describe("Optional error category (e.g. validation vs conflict)."),
|
|
8195
|
+
code: z4.string().nullable().optional().describe("Optional machine-readable error code; null when not applicable."),
|
|
8196
|
+
param: z4.string().nullable().optional().describe("Optional request field that caused the error; null when not field-specific.")
|
|
8096
8197
|
})
|
|
8097
8198
|
}).openapi("RequestErrorResponse");
|
|
8098
8199
|
|
|
@@ -8197,7 +8298,7 @@ var getImportSessionsCheckpointRoute = createRoute({
|
|
|
8197
8298
|
import { extractErrorLogFields } from "@truefoundry/trueforge-core/core";
|
|
8198
8299
|
import { HTTPException } from "hono/http-exception";
|
|
8199
8300
|
import { fetch as undiciFetch2 } from "undici";
|
|
8200
|
-
import { z as
|
|
8301
|
+
import { z as z7 } from "zod";
|
|
8201
8302
|
|
|
8202
8303
|
// src/http/tls.ts
|
|
8203
8304
|
import { readFileSync } from "fs";
|
|
@@ -8313,20 +8414,20 @@ function createInternalTlsDispatcher(options) {
|
|
|
8313
8414
|
}
|
|
8314
8415
|
|
|
8315
8416
|
// src/truefoundry/mapSfyAgentSkills.ts
|
|
8316
|
-
import { z as
|
|
8317
|
-
var SfyRegistryManifestSchema =
|
|
8417
|
+
import { z as z5 } from "zod";
|
|
8418
|
+
var SfyRegistryManifestSchema = z5.object({
|
|
8318
8419
|
// Display label only — not TF ResourceName / DNS-label rules.
|
|
8319
|
-
name:
|
|
8320
|
-
version:
|
|
8420
|
+
name: z5.string().min(1),
|
|
8421
|
+
version: z5.number().int().positive(),
|
|
8321
8422
|
// SFY field is `ml_repo`; TrueForge wire is `repository_name`.
|
|
8322
|
-
ml_repo:
|
|
8323
|
-
source:
|
|
8324
|
-
description:
|
|
8423
|
+
ml_repo: z5.string().min(1),
|
|
8424
|
+
source: z5.object({
|
|
8425
|
+
description: z5.string().min(1).optional()
|
|
8325
8426
|
}).optional()
|
|
8326
8427
|
});
|
|
8327
|
-
var SfyRegistrySkillSchema =
|
|
8328
|
-
latest_version:
|
|
8329
|
-
fqn:
|
|
8428
|
+
var SfyRegistrySkillSchema = z5.object({
|
|
8429
|
+
latest_version: z5.object({
|
|
8430
|
+
fqn: z5.string().min(1),
|
|
8330
8431
|
manifest: SfyRegistryManifestSchema
|
|
8331
8432
|
})
|
|
8332
8433
|
}).transform(({ latest_version }) => ({
|
|
@@ -8337,20 +8438,20 @@ var SfyRegistrySkillSchema = z4.object({
|
|
|
8337
8438
|
repository_name: latest_version.manifest.ml_repo,
|
|
8338
8439
|
version: latest_version.manifest.version
|
|
8339
8440
|
}));
|
|
8340
|
-
var SfyRegistrySkillVersionSchema =
|
|
8341
|
-
agent_skill_id:
|
|
8342
|
-
fqn:
|
|
8441
|
+
var SfyRegistrySkillVersionSchema = z5.object({
|
|
8442
|
+
agent_skill_id: z5.string().min(1),
|
|
8443
|
+
fqn: z5.string().min(1),
|
|
8343
8444
|
manifest: SfyRegistryManifestSchema
|
|
8344
8445
|
});
|
|
8345
|
-
var ResolvedAgentSkillVersionSchema =
|
|
8346
|
-
fqn:
|
|
8347
|
-
name:
|
|
8348
|
-
description:
|
|
8349
|
-
skill_md_content:
|
|
8350
|
-
presigned_url:
|
|
8446
|
+
var ResolvedAgentSkillVersionSchema = z5.object({
|
|
8447
|
+
fqn: z5.string().min(1),
|
|
8448
|
+
name: z5.string().min(1),
|
|
8449
|
+
description: z5.string().min(1),
|
|
8450
|
+
skill_md_content: z5.string().nullable().optional(),
|
|
8451
|
+
presigned_url: z5.string().min(1).optional()
|
|
8351
8452
|
});
|
|
8352
|
-
var ResolveAgentSkillVersionsResponseSchema =
|
|
8353
|
-
skills:
|
|
8453
|
+
var ResolveAgentSkillVersionsResponseSchema = z5.object({
|
|
8454
|
+
skills: z5.array(ResolvedAgentSkillVersionSchema)
|
|
8354
8455
|
});
|
|
8355
8456
|
function mapSfyRegistrySkills(rows) {
|
|
8356
8457
|
return rows.map((row) => SfyRegistrySkillSchema.parse(row));
|
|
@@ -8374,48 +8475,48 @@ function mapResolvedAgentSkillVersions(payload) {
|
|
|
8374
8475
|
}
|
|
8375
8476
|
|
|
8376
8477
|
// src/truefoundry/mapSfyMcpServers.ts
|
|
8377
|
-
import { z as
|
|
8478
|
+
import { z as z6 } from "zod";
|
|
8378
8479
|
var MCP_PROXY_BASE_URL_TEMPLATE = "{{mcpProxyBaseURL}}";
|
|
8379
|
-
var IsoInstantSchema =
|
|
8480
|
+
var IsoInstantSchema = z6.union([z6.string().min(1), z6.date()]).transform((value, ctx) => {
|
|
8380
8481
|
if (value instanceof Date) {
|
|
8381
8482
|
if (!Number.isFinite(value.getTime())) {
|
|
8382
8483
|
ctx.addIssue({ code: "custom", message: "Invalid Date" });
|
|
8383
|
-
return
|
|
8484
|
+
return z6.NEVER;
|
|
8384
8485
|
}
|
|
8385
8486
|
return value.toISOString();
|
|
8386
8487
|
}
|
|
8387
8488
|
const ms = Date.parse(value);
|
|
8388
8489
|
if (!Number.isFinite(ms)) {
|
|
8389
8490
|
ctx.addIssue({ code: "custom", message: "Invalid ISO timestamp" });
|
|
8390
|
-
return
|
|
8491
|
+
return z6.NEVER;
|
|
8391
8492
|
}
|
|
8392
8493
|
return new Date(ms).toISOString();
|
|
8393
8494
|
});
|
|
8394
|
-
var SfyMcpServerRowSchema =
|
|
8395
|
-
id:
|
|
8396
|
-
name:
|
|
8397
|
-
proxyUrl:
|
|
8495
|
+
var SfyMcpServerRowSchema = z6.object({
|
|
8496
|
+
id: z6.string().min(1),
|
|
8497
|
+
name: z6.string().min(1),
|
|
8498
|
+
proxyUrl: z6.string().min(1),
|
|
8398
8499
|
createdAt: IsoInstantSchema,
|
|
8399
8500
|
updatedAt: IsoInstantSchema,
|
|
8400
|
-
manifest:
|
|
8401
|
-
description:
|
|
8402
|
-
auth_data:
|
|
8403
|
-
type:
|
|
8501
|
+
manifest: z6.object({
|
|
8502
|
+
description: z6.string().min(1).optional(),
|
|
8503
|
+
auth_data: z6.object({
|
|
8504
|
+
type: z6.string().min(1).optional()
|
|
8404
8505
|
}).optional()
|
|
8405
8506
|
}).optional()
|
|
8406
8507
|
});
|
|
8407
|
-
var SfyMcpAuthStatusAuthenticatedSchema =
|
|
8408
|
-
var SfyMcpAuthStatusNotRequiredSchema =
|
|
8409
|
-
var SfyMcpAuthStatusRequiredSchema =
|
|
8508
|
+
var SfyMcpAuthStatusAuthenticatedSchema = z6.object({ status: z6.literal("authenticated") });
|
|
8509
|
+
var SfyMcpAuthStatusNotRequiredSchema = z6.object({ status: z6.literal("authentication_not_required") });
|
|
8510
|
+
var SfyMcpAuthStatusRequiredSchema = z6.object({ status: z6.literal("authentication_required") });
|
|
8410
8511
|
var SfyMcpAuthorizeRequiredSchema = SfyMcpAuthStatusRequiredSchema.extend({
|
|
8411
|
-
authorization_endpoint:
|
|
8512
|
+
authorization_endpoint: z6.url()
|
|
8412
8513
|
});
|
|
8413
|
-
var SfyMcpAuthStatusSchema =
|
|
8514
|
+
var SfyMcpAuthStatusSchema = z6.discriminatedUnion("status", [
|
|
8414
8515
|
SfyMcpAuthStatusAuthenticatedSchema,
|
|
8415
8516
|
SfyMcpAuthStatusRequiredSchema,
|
|
8416
8517
|
SfyMcpAuthStatusNotRequiredSchema
|
|
8417
8518
|
]);
|
|
8418
|
-
var SfyMcpAuthorizeResultSchema =
|
|
8519
|
+
var SfyMcpAuthorizeResultSchema = z6.discriminatedUnion("status", [
|
|
8419
8520
|
SfyMcpAuthStatusAuthenticatedSchema,
|
|
8420
8521
|
SfyMcpAuthorizeRequiredSchema,
|
|
8421
8522
|
SfyMcpAuthStatusNotRequiredSchema
|
|
@@ -8486,45 +8587,46 @@ var AGENT_PERMISSIONS_PATH = "v1/authorize/permissions";
|
|
|
8486
8587
|
var VEND_TOKEN_PATH = "internal/vend-token";
|
|
8487
8588
|
var AGENT_SKILLS_PAGE_SIZE = 100;
|
|
8488
8589
|
var AGENT_SKILL_RESOLVE_CHUNK_SIZE = 50;
|
|
8489
|
-
var SessionSubjectSchema =
|
|
8490
|
-
subjectId:
|
|
8491
|
-
subjectType:
|
|
8492
|
-
subjectDisplayName:
|
|
8493
|
-
subjectSlug:
|
|
8590
|
+
var SessionSubjectSchema = z7.object({
|
|
8591
|
+
subjectId: z7.string().min(1),
|
|
8592
|
+
subjectType: z7.string().min(1),
|
|
8593
|
+
subjectDisplayName: z7.string().nullable().optional(),
|
|
8594
|
+
subjectSlug: z7.string().nullable().optional()
|
|
8494
8595
|
});
|
|
8495
|
-
var GetSessionUserSchema =
|
|
8496
|
-
tenantName:
|
|
8497
|
-
roles:
|
|
8596
|
+
var GetSessionUserSchema = z7.object({
|
|
8597
|
+
tenantName: z7.string().min(1),
|
|
8598
|
+
roles: z7.array(z7.string()),
|
|
8498
8599
|
subject: SessionSubjectSchema
|
|
8499
8600
|
});
|
|
8500
|
-
var GetSessionWireSchema =
|
|
8601
|
+
var GetSessionWireSchema = z7.object({
|
|
8501
8602
|
user: GetSessionUserSchema.nullable()
|
|
8502
8603
|
});
|
|
8503
|
-
var ListResponseSchema =
|
|
8504
|
-
|
|
8505
|
-
|
|
8506
|
-
data:
|
|
8507
|
-
pagination:
|
|
8604
|
+
var ListResponseSchema = z7.union([
|
|
8605
|
+
z7.array(z7.unknown()),
|
|
8606
|
+
z7.object({
|
|
8607
|
+
data: z7.array(z7.unknown()).catch([]),
|
|
8608
|
+
pagination: z7.object({ total: z7.number().optional() }).optional()
|
|
8508
8609
|
})
|
|
8509
8610
|
]);
|
|
8510
|
-
var ServiceFoundryErrorSchema =
|
|
8511
|
-
message:
|
|
8611
|
+
var ServiceFoundryErrorSchema = z7.object({
|
|
8612
|
+
message: z7.union([z7.string(), z7.array(z7.string())]).optional()
|
|
8512
8613
|
});
|
|
8513
|
-
var PutRemoteAgentResponseSchema =
|
|
8514
|
-
agentId:
|
|
8614
|
+
var PutRemoteAgentResponseSchema = z7.object({
|
|
8615
|
+
agentId: z7.string().min(1)
|
|
8515
8616
|
});
|
|
8516
|
-
var AgentPermissionSchema =
|
|
8517
|
-
var AgentPermissionsSchema =
|
|
8518
|
-
|
|
8519
|
-
|
|
8617
|
+
var AgentPermissionSchema = z7.enum(["READ_AGENT", "USE_AGENT", "MANAGE_AGENT", "DELETE_AGENT"]);
|
|
8618
|
+
var AgentPermissionsSchema = z7.record(
|
|
8619
|
+
z7.string(),
|
|
8620
|
+
z7.array(z7.string()).transform(
|
|
8520
8621
|
(permissions) => permissions.flatMap((permission) => {
|
|
8521
8622
|
const parsed = AgentPermissionSchema.safeParse(permission);
|
|
8522
8623
|
return parsed.success ? [parsed.data] : [];
|
|
8523
8624
|
})
|
|
8524
8625
|
)
|
|
8525
8626
|
);
|
|
8526
|
-
var VendTokenResponseSchema =
|
|
8527
|
-
|
|
8627
|
+
var VendTokenResponseSchema = z7.object({
|
|
8628
|
+
subjectToken: z7.string().min(1),
|
|
8629
|
+
actorToken: z7.string().min(1)
|
|
8528
8630
|
});
|
|
8529
8631
|
var TFY_ASSUME_USER_HEADER = "x-tfy-assume-user";
|
|
8530
8632
|
var TFY_SYSTEM_ASSUME_SUBJECT = "truefoundry";
|
|
@@ -8629,6 +8731,7 @@ var TrueFoundryServiceFoundryServerClient = class {
|
|
|
8629
8731
|
}
|
|
8630
8732
|
/** PUT `/internal/tfg/agents` — create/reuse remote agent + sync model/MCP grants. */
|
|
8631
8733
|
async putRemoteAgent(input) {
|
|
8734
|
+
const hasCollaborators = input.collaborators && input.collaborators.length > 0;
|
|
8632
8735
|
const payload = await this.#requestJson({
|
|
8633
8736
|
url: this.#url(TFG_AGENTS_PATH),
|
|
8634
8737
|
accessToken: input.accessToken,
|
|
@@ -8638,7 +8741,8 @@ var TrueFoundryServiceFoundryServerClient = class {
|
|
|
8638
8741
|
name: input.name,
|
|
8639
8742
|
description: input.description,
|
|
8640
8743
|
model: input.model,
|
|
8641
|
-
mcp_servers: input.mcp_servers
|
|
8744
|
+
mcp_servers: input.mcp_servers,
|
|
8745
|
+
...hasCollaborators ? { collaborators: input.collaborators } : {}
|
|
8642
8746
|
}
|
|
8643
8747
|
});
|
|
8644
8748
|
const parsed = PutRemoteAgentResponseSchema.safeParse(payload);
|
|
@@ -8867,7 +8971,8 @@ var TrueFoundryServiceFoundryServerClient = class {
|
|
|
8867
8971
|
return parsed.data;
|
|
8868
8972
|
}
|
|
8869
8973
|
/**
|
|
8870
|
-
* Exchange a TrueFoundry API key for
|
|
8974
|
+
* Exchange a TrueFoundry API key for dual agent-scoped tokens.
|
|
8975
|
+
* Wire `actorToken` is the agent identity (`asAgent`); wire `subjectToken` is the user with agent in `act` (`asUser`).
|
|
8871
8976
|
* Authenticated with the server API key, not the user bearer.
|
|
8872
8977
|
*/
|
|
8873
8978
|
async vendToken(input) {
|
|
@@ -8893,7 +8998,7 @@ var TrueFoundryServiceFoundryServerClient = class {
|
|
|
8893
8998
|
cause: parsed.error
|
|
8894
8999
|
});
|
|
8895
9000
|
}
|
|
8896
|
-
return parsed.data
|
|
9001
|
+
return parsed.data;
|
|
8897
9002
|
}
|
|
8898
9003
|
#parseListResponse(payload) {
|
|
8899
9004
|
const parsed = ListResponseSchema.safeParse(payload);
|
|
@@ -9021,9 +9126,13 @@ function createAgentImportRouter(deps) {
|
|
|
9021
9126
|
const created = await agentStore.createAgent({
|
|
9022
9127
|
tenant_id: agent.tenant_id,
|
|
9023
9128
|
name: agent.name,
|
|
9129
|
+
description: agent.description ?? agent.name,
|
|
9024
9130
|
manifest: agent.manifest,
|
|
9025
9131
|
external_id: null,
|
|
9026
|
-
created_by_subject: agent.created_by_subject
|
|
9132
|
+
created_by_subject: agent.created_by_subject,
|
|
9133
|
+
custom: {
|
|
9134
|
+
...agent.collaborators ? { collaborators: agent.collaborators } : {}
|
|
9135
|
+
}
|
|
9027
9136
|
});
|
|
9028
9137
|
results.push({
|
|
9029
9138
|
name: created.name,
|
|
@@ -9084,6 +9193,7 @@ function createAgentImportRouter(deps) {
|
|
|
9084
9193
|
|
|
9085
9194
|
// src/apis/agents.ts
|
|
9086
9195
|
import { OpenAPIHono as OpenAPIHono2 } from "@hono/zod-openapi";
|
|
9196
|
+
import { InvalidPageTokenError } from "@truefoundry/trueforge-core/agent-session";
|
|
9087
9197
|
|
|
9088
9198
|
// src/auth/identity.ts
|
|
9089
9199
|
init_config();
|
|
@@ -9120,11 +9230,15 @@ function asTrueFoundryRequestContext(context) {
|
|
|
9120
9230
|
}
|
|
9121
9231
|
return context;
|
|
9122
9232
|
}
|
|
9233
|
+
function accessTokensFromCaller(context) {
|
|
9234
|
+
const resolve3 = callerAccessToken(context);
|
|
9235
|
+
return { asAgent: resolve3, asUser: resolve3 };
|
|
9236
|
+
}
|
|
9123
9237
|
function agentAccessToken(input) {
|
|
9124
9238
|
const { client, requestContext: context } = input;
|
|
9125
9239
|
const agentId = requireTrueFoundryAgentExternalId(input.agent);
|
|
9126
9240
|
let pending;
|
|
9127
|
-
|
|
9241
|
+
const vended = () => {
|
|
9128
9242
|
if (pending === void 0) {
|
|
9129
9243
|
input.logger.info("Exchanging user context for agent access token", {
|
|
9130
9244
|
subject: context.subject.id,
|
|
@@ -9137,6 +9251,10 @@ function agentAccessToken(input) {
|
|
|
9137
9251
|
}
|
|
9138
9252
|
return pending;
|
|
9139
9253
|
};
|
|
9254
|
+
return {
|
|
9255
|
+
asAgent: async () => (await vended()).actorToken,
|
|
9256
|
+
asUser: async () => (await vended()).subjectToken
|
|
9257
|
+
};
|
|
9140
9258
|
}
|
|
9141
9259
|
function callerAccessToken(context) {
|
|
9142
9260
|
if (context.user_credential === null) {
|
|
@@ -9149,7 +9267,7 @@ function callerAccessToken(context) {
|
|
|
9149
9267
|
}
|
|
9150
9268
|
function accessTokenForRequest(input) {
|
|
9151
9269
|
if (input.agent === void 0) {
|
|
9152
|
-
return
|
|
9270
|
+
return accessTokensFromCaller(input.requestContext);
|
|
9153
9271
|
}
|
|
9154
9272
|
const agentId = requireTrueFoundryAgentExternalId(input.agent);
|
|
9155
9273
|
const cache = input.requestContext[accessTokenCache];
|
|
@@ -9157,14 +9275,14 @@ function accessTokenForRequest(input) {
|
|
|
9157
9275
|
if (existing !== void 0) {
|
|
9158
9276
|
return existing;
|
|
9159
9277
|
}
|
|
9160
|
-
const
|
|
9278
|
+
const tokens = agentAccessToken({
|
|
9161
9279
|
client: input.client,
|
|
9162
9280
|
requestContext: input.requestContext,
|
|
9163
9281
|
agent: input.agent,
|
|
9164
9282
|
logger: input.logger
|
|
9165
9283
|
});
|
|
9166
|
-
cache.set(agentId,
|
|
9167
|
-
return
|
|
9284
|
+
cache.set(agentId, tokens);
|
|
9285
|
+
return tokens;
|
|
9168
9286
|
}
|
|
9169
9287
|
|
|
9170
9288
|
// src/auth/identity.ts
|
|
@@ -9230,67 +9348,44 @@ init_agentStore();
|
|
|
9230
9348
|
|
|
9231
9349
|
// src/routes/agentRoutes.ts
|
|
9232
9350
|
import { createRoute as createRoute2, z as z8 } from "@hono/zod-openapi";
|
|
9233
|
-
|
|
9234
|
-
// src/schemas/agent.ts
|
|
9235
9351
|
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");
|
|
9352
|
+
|
|
9353
|
+
// src/routes/fernExtensions.ts
|
|
9354
|
+
var TOKEN_PAGINATION = {
|
|
9355
|
+
cursor: "$request.page_token",
|
|
9356
|
+
next_cursor: "$response.pagination.next_page_token",
|
|
9357
|
+
results: "$response.data"
|
|
9358
|
+
};
|
|
9277
9359
|
|
|
9278
9360
|
// src/routes/agentRoutes.ts
|
|
9279
9361
|
var AgentIdParamsSchema = z8.object({
|
|
9280
9362
|
agent_id: z8.string().min(1).max(64).describe("Immutable agent identifier.")
|
|
9281
9363
|
});
|
|
9364
|
+
var ListAgentsQuerySchema = z8.object({
|
|
9365
|
+
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)}.`),
|
|
9366
|
+
page_token: z8.string().optional().describe("Opaque token from a previous response `next_page_token`."),
|
|
9367
|
+
agent_name: z8.string().trim().min(1).optional().describe("Case-insensitive substring match on agent name.")
|
|
9368
|
+
}).openapi("ListAgentsQuery");
|
|
9282
9369
|
var listAgentsRoute = createRoute2({
|
|
9283
9370
|
method: "get",
|
|
9284
9371
|
path: "/",
|
|
9285
9372
|
tags: ["Agents" /* AGENTS */],
|
|
9286
9373
|
summary: "List agents",
|
|
9287
|
-
description: "
|
|
9374
|
+
description: "List configured agents for the tenant, ordered by name. Optional `agent_name` filters by substring.",
|
|
9288
9375
|
"x-fern-sdk-group-name": ["agents"],
|
|
9289
9376
|
"x-fern-sdk-method-name": "list",
|
|
9377
|
+
"x-fern-pagination": TOKEN_PAGINATION,
|
|
9378
|
+
request: {
|
|
9379
|
+
query: ListAgentsQuerySchema
|
|
9380
|
+
},
|
|
9290
9381
|
responses: {
|
|
9291
9382
|
200: {
|
|
9292
9383
|
content: { "application/json": { schema: ListAgentsResponseSchema } },
|
|
9293
|
-
description: "
|
|
9384
|
+
description: "Paginated matching agents."
|
|
9385
|
+
},
|
|
9386
|
+
400: {
|
|
9387
|
+
content: { "application/json": { schema: RequestErrorResponseSchema } },
|
|
9388
|
+
description: "Invalid query parameters or page token."
|
|
9294
9389
|
},
|
|
9295
9390
|
401: {
|
|
9296
9391
|
content: { "application/json": { schema: RequestErrorResponseSchema } },
|
|
@@ -9408,7 +9503,7 @@ var putAgentRoute = createRoute2({
|
|
|
9408
9503
|
path: "/{agent_id}",
|
|
9409
9504
|
tags: ["Agents" /* AGENTS */],
|
|
9410
9505
|
summary: "Update an agent",
|
|
9411
|
-
description: "
|
|
9506
|
+
description: "Update an existing agent by immutable id.",
|
|
9412
9507
|
"x-fern-sdk-group-name": ["agents"],
|
|
9413
9508
|
"x-fern-sdk-method-name": "update",
|
|
9414
9509
|
request: {
|
|
@@ -9614,6 +9709,44 @@ async function checkSnapshotStatus({
|
|
|
9614
9709
|
}
|
|
9615
9710
|
|
|
9616
9711
|
// src/runtime/sessionResources.ts
|
|
9712
|
+
var X_TFY_METADATA = "x-tfy-metadata";
|
|
9713
|
+
var TFG_METADATA_PREFIX = "tfg";
|
|
9714
|
+
function buildGatewayMetadata(input) {
|
|
9715
|
+
const metadata = {
|
|
9716
|
+
[`${TFG_METADATA_PREFIX}.session_id`]: input.session.session_id,
|
|
9717
|
+
[`${TFG_METADATA_PREFIX}.turn_id`]: input.turnId
|
|
9718
|
+
};
|
|
9719
|
+
const { agent } = input.session;
|
|
9720
|
+
if (agent.type === "reference") {
|
|
9721
|
+
metadata[`${TFG_METADATA_PREFIX}.agent_id`] = agent.id;
|
|
9722
|
+
if (agent.name !== null) {
|
|
9723
|
+
metadata[`${TFG_METADATA_PREFIX}.agent_name`] = agent.name;
|
|
9724
|
+
}
|
|
9725
|
+
}
|
|
9726
|
+
return metadata;
|
|
9727
|
+
}
|
|
9728
|
+
function gatewayMetadataHeaders(metadata) {
|
|
9729
|
+
if (Object.keys(metadata).length === 0) {
|
|
9730
|
+
return {};
|
|
9731
|
+
}
|
|
9732
|
+
return { [X_TFY_METADATA]: JSON.stringify(metadata) };
|
|
9733
|
+
}
|
|
9734
|
+
function withGatewayMetadataHeaders(input) {
|
|
9735
|
+
const { headers, metadataHeaders } = input;
|
|
9736
|
+
if (Object.keys(metadataHeaders).length === 0) {
|
|
9737
|
+
return headers;
|
|
9738
|
+
}
|
|
9739
|
+
if (typeof headers !== "function") {
|
|
9740
|
+
return { ...headers, ...metadataHeaders };
|
|
9741
|
+
}
|
|
9742
|
+
return async () => {
|
|
9743
|
+
const result = await headers();
|
|
9744
|
+
if ("authRequired" in result) {
|
|
9745
|
+
return result;
|
|
9746
|
+
}
|
|
9747
|
+
return { headers: { ...result.headers, ...metadataHeaders } };
|
|
9748
|
+
};
|
|
9749
|
+
}
|
|
9617
9750
|
function parseModelFqn(name) {
|
|
9618
9751
|
const slash = name.indexOf("/");
|
|
9619
9752
|
if (slash <= 0 || slash === name.length - 1) {
|
|
@@ -9794,11 +9927,19 @@ async function agentIfAccessible(input) {
|
|
|
9794
9927
|
async function listAccessibleAgents(input) {
|
|
9795
9928
|
const access = await input.authorizer.listAgentAccess({ context: input.context, action: input.action });
|
|
9796
9929
|
if (access.kind === "all") {
|
|
9797
|
-
return input.store.listAgents({
|
|
9930
|
+
return input.store.listAgents({
|
|
9931
|
+
tenant_id: input.context.tenant_id,
|
|
9932
|
+
agent_name: input.agent_name,
|
|
9933
|
+
limit: input.limit,
|
|
9934
|
+
page_token: input.page_token
|
|
9935
|
+
});
|
|
9798
9936
|
}
|
|
9799
9937
|
return input.store.listAgents({
|
|
9800
9938
|
tenant_id: input.context.tenant_id,
|
|
9801
|
-
external_ids: access.agent_external_ids
|
|
9939
|
+
external_ids: access.agent_external_ids,
|
|
9940
|
+
agent_name: input.agent_name,
|
|
9941
|
+
limit: input.limit,
|
|
9942
|
+
page_token: input.page_token
|
|
9802
9943
|
});
|
|
9803
9944
|
}
|
|
9804
9945
|
async function resolveManagedAgentIds(input) {
|
|
@@ -9807,11 +9948,14 @@ async function resolveManagedAgentIds(input) {
|
|
|
9807
9948
|
if (access.kind === "all") {
|
|
9808
9949
|
return [];
|
|
9809
9950
|
}
|
|
9810
|
-
const
|
|
9951
|
+
const { data } = await store.listAgents({
|
|
9811
9952
|
tenant_id: context.tenant_id,
|
|
9812
|
-
external_ids: access.agent_external_ids
|
|
9953
|
+
external_ids: access.agent_external_ids,
|
|
9954
|
+
agent_name: void 0,
|
|
9955
|
+
limit: void 0,
|
|
9956
|
+
page_token: void 0
|
|
9813
9957
|
});
|
|
9814
|
-
return
|
|
9958
|
+
return data.map((agent) => agent.id);
|
|
9815
9959
|
}
|
|
9816
9960
|
async function canReadAgentBoundResource(input) {
|
|
9817
9961
|
const { store, context, authorizer, created_by_subject_id, agent_id } = input;
|
|
@@ -9919,6 +10063,7 @@ function toWireAgent(record) {
|
|
|
9919
10063
|
return {
|
|
9920
10064
|
id: record.id,
|
|
9921
10065
|
name: record.name,
|
|
10066
|
+
description: record.description,
|
|
9922
10067
|
manifest: record.manifest,
|
|
9923
10068
|
created_by_subject: record.created_by_subject
|
|
9924
10069
|
};
|
|
@@ -9943,14 +10088,25 @@ async function validateManifest({
|
|
|
9943
10088
|
}
|
|
9944
10089
|
function createAgentsRouter(deps) {
|
|
9945
10090
|
const listHandler = async (c) => {
|
|
10091
|
+
const { limit, page_token: pageToken, agent_name: agentName } = c.req.valid("query");
|
|
9946
10092
|
const requestContext = deps.resolveRequestContext(c);
|
|
9947
|
-
|
|
9948
|
-
|
|
9949
|
-
|
|
9950
|
-
|
|
9951
|
-
|
|
9952
|
-
|
|
9953
|
-
|
|
10093
|
+
try {
|
|
10094
|
+
const { data, pagination } = await listAccessibleAgents({
|
|
10095
|
+
store: deps.resolveAgentStore(c),
|
|
10096
|
+
context: requestContext,
|
|
10097
|
+
authorizer: deps.authorizer,
|
|
10098
|
+
action: "read",
|
|
10099
|
+
agent_name: agentName,
|
|
10100
|
+
limit,
|
|
10101
|
+
page_token: pageToken
|
|
10102
|
+
});
|
|
10103
|
+
return c.json({ data: data.map(toWireAgent), pagination }, 200);
|
|
10104
|
+
} catch (error) {
|
|
10105
|
+
if (error instanceof InvalidPageTokenError) {
|
|
10106
|
+
return c.json({ error: { message: error.message } }, 400);
|
|
10107
|
+
}
|
|
10108
|
+
throw error;
|
|
10109
|
+
}
|
|
9954
10110
|
};
|
|
9955
10111
|
const createHandler = async (c) => {
|
|
9956
10112
|
const body = c.req.valid("json");
|
|
@@ -9967,6 +10123,7 @@ function createAgentsRouter(deps) {
|
|
|
9967
10123
|
const record = await deps.resolveAgentStore(c).createAgent({
|
|
9968
10124
|
tenant_id: requestContext.tenant_id,
|
|
9969
10125
|
name: body.name,
|
|
10126
|
+
description: body.description,
|
|
9970
10127
|
manifest,
|
|
9971
10128
|
external_id: null,
|
|
9972
10129
|
created_by_subject: createdBySubjectFromRequestContext(requestContext)
|
|
@@ -10062,6 +10219,7 @@ function createAgentsRouter(deps) {
|
|
|
10062
10219
|
const record = await deps.resolveAgentStore(c).updateAgent({
|
|
10063
10220
|
tenant_id: requestContext.tenant_id,
|
|
10064
10221
|
id: agentId,
|
|
10222
|
+
...body.description === void 0 ? {} : { description: body.description },
|
|
10065
10223
|
manifest
|
|
10066
10224
|
});
|
|
10067
10225
|
if (record === void 0) {
|
|
@@ -10758,7 +10916,8 @@ import { z as z16 } from "@hono/zod-openapi";
|
|
|
10758
10916
|
// src/schemas/mcpServer.ts
|
|
10759
10917
|
init_common();
|
|
10760
10918
|
import { z as z15 } from "@hono/zod-openapi";
|
|
10761
|
-
var
|
|
10919
|
+
var MCP_SERVER_TYPES = ["remote", "truefoundry"];
|
|
10920
|
+
var McpServerTypeSchema = z15.enum(MCP_SERVER_TYPES).openapi("MCPServerType");
|
|
10762
10921
|
var McpServerHeaderAuthSchema = z15.object({
|
|
10763
10922
|
type: z15.literal("header").describe("Authenticate with static HTTP headers."),
|
|
10764
10923
|
headers: z15.record(z15.string().min(1), z15.string().min(1)).refine((headers) => Object.keys(headers).length > 0, {
|
|
@@ -10772,14 +10931,21 @@ var McpServerDcrAuthSchema = z15.object({
|
|
|
10772
10931
|
}).strict().openapi("MCPServerDcrAuth");
|
|
10773
10932
|
var McpServerManifestAuthSchema = z15.discriminatedUnion("type", [McpServerHeaderAuthSchema, McpServerDcrAuthSchema]).describe("Optional auth settings. Omit when the server needs no credentials.").openapi("MCPServerManifestAuth");
|
|
10774
10933
|
var McpServerDescriptionSchema = z15.string().trim().min(1).describe("Concise summary of what this MCP server provides.");
|
|
10775
|
-
var
|
|
10776
|
-
type: McpServerTypeSchema,
|
|
10934
|
+
var RemoteMcpServerManifestSchema = z15.object({
|
|
10935
|
+
type: z15.literal(McpServerTypeSchema.enum.remote),
|
|
10777
10936
|
name: NameSchema,
|
|
10778
|
-
url: z15.url().describe("MCP endpoint URL.
|
|
10937
|
+
url: z15.url().describe("MCP endpoint URL."),
|
|
10779
10938
|
description: McpServerDescriptionSchema,
|
|
10780
10939
|
auth: McpServerManifestAuthSchema.optional()
|
|
10781
|
-
}).strict();
|
|
10782
|
-
var
|
|
10940
|
+
}).strict().openapi("RemoteMCPServerManifest");
|
|
10941
|
+
var TrueFoundryMcpServerManifestSchema = z15.object({
|
|
10942
|
+
type: z15.literal(McpServerTypeSchema.enum.truefoundry),
|
|
10943
|
+
name: NameSchema,
|
|
10944
|
+
url: z15.url().describe("Resolved AI Gateway proxy URL for this TrueFoundry-managed MCP server."),
|
|
10945
|
+
description: McpServerDescriptionSchema,
|
|
10946
|
+
auth: McpServerManifestAuthSchema.optional()
|
|
10947
|
+
}).strict().openapi("TrueFoundryMCPServerManifest");
|
|
10948
|
+
var McpServerManifestSchema = z15.discriminatedUnion("type", [RemoteMcpServerManifestSchema, TrueFoundryMcpServerManifestSchema]).openapi("MCPServerManifest");
|
|
10783
10949
|
var McpAuthStatusSchema = z15.object({
|
|
10784
10950
|
status: z15.enum(["authenticated", "auth_required", "not_required"]).describe("Current auth state for this MCP server."),
|
|
10785
10951
|
authorization_url: z15.url().optional().describe("When auth is required, this contains the URL to redirect the user to for authorization.")
|
|
@@ -12422,7 +12588,7 @@ function createPermissionsRouter(deps) {
|
|
|
12422
12588
|
// src/apis/schedules.ts
|
|
12423
12589
|
import { OpenAPIHono as OpenAPIHono11 } from "@hono/zod-openapi";
|
|
12424
12590
|
import {
|
|
12425
|
-
InvalidPageTokenError
|
|
12591
|
+
InvalidPageTokenError as InvalidPageTokenError2
|
|
12426
12592
|
} from "@truefoundry/trueforge-core/agent-session";
|
|
12427
12593
|
|
|
12428
12594
|
// src/controller/scheduleDispatch.ts
|
|
@@ -12636,15 +12802,6 @@ init_scheduleStore();
|
|
|
12636
12802
|
init_common();
|
|
12637
12803
|
import { createRoute as createRoute10, z as z25 } from "@hono/zod-openapi";
|
|
12638
12804
|
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
12805
|
var ScheduleIdParamsSchema = z25.object({
|
|
12649
12806
|
schedule_id: z25.string().min(1).max(64).describe("Immutable schedule identifier.")
|
|
12650
12807
|
});
|
|
@@ -12954,7 +13111,7 @@ import { z as z26 } from "@hono/zod-openapi";
|
|
|
12954
13111
|
import {
|
|
12955
13112
|
EventType,
|
|
12956
13113
|
SessionEventItemSchema,
|
|
12957
|
-
TokenPaginationSchema as
|
|
13114
|
+
TokenPaginationSchema as TokenPaginationSchema3,
|
|
12958
13115
|
TurnCreatedEventSchema,
|
|
12959
13116
|
TurnDoneEventSchema
|
|
12960
13117
|
} from "@truefoundry/trueforge-core/agent-session";
|
|
@@ -12995,13 +13152,13 @@ var ListSessionEventsRequestQuerySchema = z26.object({
|
|
|
12995
13152
|
}).openapi("ListSessionEventsRequestQuery");
|
|
12996
13153
|
var ListSessionEventsResponseSchema = z26.object({
|
|
12997
13154
|
data: z26.array(SessionEventItemSchema),
|
|
12998
|
-
pagination:
|
|
13155
|
+
pagination: TokenPaginationSchema3
|
|
12999
13156
|
}).openapi("ListSessionEventsResponse");
|
|
13000
13157
|
|
|
13001
13158
|
// src/schemas/turn.ts
|
|
13002
13159
|
init_common();
|
|
13003
13160
|
import { z as z27 } from "@hono/zod-openapi";
|
|
13004
|
-
import { SessionEventSchema, TokenPaginationSchema as
|
|
13161
|
+
import { SessionEventSchema, TokenPaginationSchema as TokenPaginationSchema4, TurnSchema } from "@truefoundry/trueforge-core/agent-session";
|
|
13005
13162
|
import { CreateTurnRequestSchema, TurnSchema as TurnSchema2 } from "@truefoundry/trueforge-core/agent-session";
|
|
13006
13163
|
var SubscribeTurnQuerySchema = z27.object({
|
|
13007
13164
|
// Query strings need coerce; map null/'' to undefined first so Number(null)→0
|
|
@@ -13024,7 +13181,7 @@ var GetTurnResponseSchema = z27.object({
|
|
|
13024
13181
|
}).openapi("GetTurnResponse");
|
|
13025
13182
|
var ListTurnsResponseSchema = z27.object({
|
|
13026
13183
|
data: z27.array(TurnSchema),
|
|
13027
|
-
pagination:
|
|
13184
|
+
pagination: TokenPaginationSchema4
|
|
13028
13185
|
}).openapi("ListTurnsResponse");
|
|
13029
13186
|
var ListTurnEventsRequestQuerySchema = z27.object({
|
|
13030
13187
|
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 +13190,7 @@ var ListTurnEventsRequestQuerySchema = z27.object({
|
|
|
13033
13190
|
}).openapi("ListTurnEventsRequestQuery");
|
|
13034
13191
|
var ListTurnEventsResponseSchema = z27.object({
|
|
13035
13192
|
data: z27.array(SessionEventSchema),
|
|
13036
|
-
pagination:
|
|
13193
|
+
pagination: TokenPaginationSchema4
|
|
13037
13194
|
}).openapi("ListTurnEventsResponse");
|
|
13038
13195
|
var DownloadSandboxFileRequestQuerySchema = z27.object({
|
|
13039
13196
|
path: z27.string().min(1).describe(
|
|
@@ -13053,7 +13210,7 @@ import {
|
|
|
13053
13210
|
SessionSchema,
|
|
13054
13211
|
SessionSourceScheduleSchema,
|
|
13055
13212
|
SessionSourceTypeSchema,
|
|
13056
|
-
TokenPaginationSchema as
|
|
13213
|
+
TokenPaginationSchema as TokenPaginationSchema5
|
|
13057
13214
|
} from "@truefoundry/trueforge-core/agent-session";
|
|
13058
13215
|
|
|
13059
13216
|
// src/schemas/deepObjectQuery.ts
|
|
@@ -13196,7 +13353,7 @@ var GetSessionResponseSchema = z29.object({
|
|
|
13196
13353
|
}).openapi("GetSessionResponse");
|
|
13197
13354
|
var ListSessionsResponseSchema = z29.object({
|
|
13198
13355
|
data: z29.array(SessionSchema),
|
|
13199
|
-
pagination:
|
|
13356
|
+
pagination: TokenPaginationSchema5
|
|
13200
13357
|
}).openapi("ListSessionsResponse");
|
|
13201
13358
|
|
|
13202
13359
|
// src/routes/sessionRoutes.ts
|
|
@@ -14018,10 +14175,13 @@ function createTurnResolver(deps) {
|
|
|
14018
14175
|
modelProviderStore,
|
|
14019
14176
|
logger,
|
|
14020
14177
|
signal,
|
|
14021
|
-
tenant_id,
|
|
14022
14178
|
userRef,
|
|
14023
|
-
|
|
14179
|
+
session,
|
|
14180
|
+
turnId
|
|
14024
14181
|
} = deps;
|
|
14182
|
+
const tenant_id = session.tenant_id;
|
|
14183
|
+
const sessionId = session.session_id;
|
|
14184
|
+
const metadataHeaders = isTrueFoundryModeEnabled() ? gatewayMetadataHeaders(buildGatewayMetadata({ session, turnId })) : {};
|
|
14025
14185
|
return new TurnResourceResolver({
|
|
14026
14186
|
llm: async (name) => {
|
|
14027
14187
|
const resolved = await getModelDetails({
|
|
@@ -14031,7 +14191,10 @@ function createTurnResolver(deps) {
|
|
|
14031
14191
|
});
|
|
14032
14192
|
return {
|
|
14033
14193
|
modelClient: new VercelAILLM({
|
|
14034
|
-
providerConfig:
|
|
14194
|
+
providerConfig: {
|
|
14195
|
+
...resolved.providerConfig,
|
|
14196
|
+
headers: { ...resolved.providerConfig.headers, ...metadataHeaders }
|
|
14197
|
+
},
|
|
14035
14198
|
logger,
|
|
14036
14199
|
signal
|
|
14037
14200
|
}),
|
|
@@ -14051,7 +14214,13 @@ function createTurnResolver(deps) {
|
|
|
14051
14214
|
message: `Unknown MCP server "${name}" \u2014 not configured`
|
|
14052
14215
|
});
|
|
14053
14216
|
}
|
|
14054
|
-
return
|
|
14217
|
+
return {
|
|
14218
|
+
url: connection.url,
|
|
14219
|
+
headers: withGatewayMetadataHeaders({
|
|
14220
|
+
headers: connection.headers,
|
|
14221
|
+
metadataHeaders
|
|
14222
|
+
})
|
|
14223
|
+
};
|
|
14055
14224
|
},
|
|
14056
14225
|
mcpRequestTimeoutMs: config_default.MCP_REQUEST_TIMEOUT_MS,
|
|
14057
14226
|
mcpConnectTimeoutMs: config_default.MCP_CONNECT_TIMEOUT_MS,
|
|
@@ -14164,6 +14333,7 @@ async function drainTurnEvents(input) {
|
|
|
14164
14333
|
async function beginTurnExecution(params) {
|
|
14165
14334
|
const { session, input, previous_turn_id: previousTurnId, userRef, deps } = params;
|
|
14166
14335
|
const sessionId = session.session_id;
|
|
14336
|
+
const turnId = mintPeeredTurnId(config_default.EXECUTOR_ID);
|
|
14167
14337
|
const abortController = new AbortController();
|
|
14168
14338
|
const tenant_id = session.tenant_id;
|
|
14169
14339
|
const resolver = createTurnResolver({
|
|
@@ -14174,13 +14344,13 @@ async function beginTurnExecution(params) {
|
|
|
14174
14344
|
modelProviderStore: deps.modelProviderStore,
|
|
14175
14345
|
logger: deps.logger,
|
|
14176
14346
|
signal: abortController.signal,
|
|
14177
|
-
tenant_id,
|
|
14178
14347
|
userRef,
|
|
14179
|
-
|
|
14348
|
+
session,
|
|
14349
|
+
turnId
|
|
14180
14350
|
});
|
|
14181
14351
|
const title = session.record.last_turn_id ? void 0 : deriveSessionTitle(input);
|
|
14182
14352
|
const turn = await session.createTurn({
|
|
14183
|
-
turn_id:
|
|
14353
|
+
turn_id: turnId,
|
|
14184
14354
|
input,
|
|
14185
14355
|
previous_turn_id: previousTurnId,
|
|
14186
14356
|
signal: abortController.signal,
|
|
@@ -14721,7 +14891,7 @@ function createSchedulesRouter(deps) {
|
|
|
14721
14891
|
});
|
|
14722
14892
|
return c.json({ data: data.map(toWireSchedule), pagination }, 200);
|
|
14723
14893
|
} catch (error) {
|
|
14724
|
-
if (error instanceof
|
|
14894
|
+
if (error instanceof InvalidPageTokenError2) {
|
|
14725
14895
|
return c.json({ error: { message: error.message } }, 400);
|
|
14726
14896
|
}
|
|
14727
14897
|
throw error;
|
|
@@ -14756,7 +14926,7 @@ function createSchedulesRouter(deps) {
|
|
|
14756
14926
|
});
|
|
14757
14927
|
return c.json({ data: data.map(toWireScheduleRun), pagination }, 200);
|
|
14758
14928
|
} catch (error) {
|
|
14759
|
-
if (error instanceof
|
|
14929
|
+
if (error instanceof InvalidPageTokenError2) {
|
|
14760
14930
|
return c.json({ error: { message: error.message } }, 400);
|
|
14761
14931
|
}
|
|
14762
14932
|
throw error;
|
|
@@ -17594,13 +17764,16 @@ function asError(value) {
|
|
|
17594
17764
|
}
|
|
17595
17765
|
function toPutRemoteAgentPayload({
|
|
17596
17766
|
name,
|
|
17597
|
-
|
|
17767
|
+
description,
|
|
17768
|
+
manifest,
|
|
17769
|
+
collaborators
|
|
17598
17770
|
}) {
|
|
17599
17771
|
return {
|
|
17600
17772
|
name,
|
|
17601
|
-
description: name,
|
|
17773
|
+
description: (description || name).slice(0, AGENT_DESCRIPTION_MAX_LENGTH),
|
|
17602
17774
|
model: manifest.model.name,
|
|
17603
|
-
mcp_servers: (manifest.mcp_servers ?? []).map((server) => server.name)
|
|
17775
|
+
mcp_servers: (manifest.mcp_servers ?? []).map((server) => server.name),
|
|
17776
|
+
...collaborators ? { collaborators } : {}
|
|
17604
17777
|
};
|
|
17605
17778
|
}
|
|
17606
17779
|
var TrueFoundryAgentStore = class {
|
|
@@ -17642,9 +17815,15 @@ var TrueFoundryAgentStore = class {
|
|
|
17642
17815
|
const created = await this.#inner.createAgent({ ...input, external_id: null }, transaction);
|
|
17643
17816
|
let externalId;
|
|
17644
17817
|
try {
|
|
17818
|
+
const collaborators = input.custom?.["collaborators"];
|
|
17645
17819
|
({ externalId } = await this.#client.putRemoteAgent({
|
|
17646
17820
|
accessToken: await this.#resolveAccessToken(),
|
|
17647
|
-
...toPutRemoteAgentPayload({
|
|
17821
|
+
...toPutRemoteAgentPayload({
|
|
17822
|
+
name: input.name,
|
|
17823
|
+
description: input.description,
|
|
17824
|
+
manifest: input.manifest,
|
|
17825
|
+
...collaborators ? { collaborators } : {}
|
|
17826
|
+
})
|
|
17648
17827
|
}));
|
|
17649
17828
|
const updated = await this.#inner.updateAgent(
|
|
17650
17829
|
{ tenant_id: input.tenant_id, id: created.id, external_id: externalId },
|
|
@@ -17678,8 +17857,7 @@ var TrueFoundryAgentStore = class {
|
|
|
17678
17857
|
}
|
|
17679
17858
|
}
|
|
17680
17859
|
async updateAgent(input, transaction) {
|
|
17681
|
-
|
|
17682
|
-
if (nextManifest === void 0) {
|
|
17860
|
+
if (input.manifest === void 0 && input.description === void 0) {
|
|
17683
17861
|
return this.#inner.updateAgent(input, transaction);
|
|
17684
17862
|
}
|
|
17685
17863
|
return this.#withUpdateLock(input, transaction, async (txn) => {
|
|
@@ -17687,16 +17865,23 @@ var TrueFoundryAgentStore = class {
|
|
|
17687
17865
|
if (previous === void 0) {
|
|
17688
17866
|
return void 0;
|
|
17689
17867
|
}
|
|
17868
|
+
const nextManifest = input.manifest ?? previous.manifest;
|
|
17869
|
+
const nextDescription = input.description ?? previous.description;
|
|
17690
17870
|
const { externalId } = await this.#client.putRemoteAgent({
|
|
17691
17871
|
accessToken: await this.#resolveAccessToken(),
|
|
17692
|
-
...toPutRemoteAgentPayload({
|
|
17872
|
+
...toPutRemoteAgentPayload({
|
|
17873
|
+
name: previous.name,
|
|
17874
|
+
description: nextDescription,
|
|
17875
|
+
manifest: nextManifest
|
|
17876
|
+
})
|
|
17693
17877
|
});
|
|
17694
17878
|
try {
|
|
17695
17879
|
return await this.#inner.updateAgent(
|
|
17696
17880
|
{
|
|
17697
17881
|
tenant_id: input.tenant_id,
|
|
17698
17882
|
id: input.id,
|
|
17699
|
-
manifest: nextManifest,
|
|
17883
|
+
...input.manifest === void 0 ? {} : { manifest: nextManifest },
|
|
17884
|
+
...input.description === void 0 ? {} : { description: nextDescription },
|
|
17700
17885
|
...externalId === previous.external_id ? {} : { external_id: externalId }
|
|
17701
17886
|
},
|
|
17702
17887
|
txn
|
|
@@ -17707,6 +17892,7 @@ var TrueFoundryAgentStore = class {
|
|
|
17707
17892
|
accessToken: await this.#resolveAccessToken(),
|
|
17708
17893
|
...toPutRemoteAgentPayload({
|
|
17709
17894
|
name: previous.name,
|
|
17895
|
+
description: previous.description,
|
|
17710
17896
|
manifest: previous.manifest
|
|
17711
17897
|
})
|
|
17712
17898
|
});
|
|
@@ -17936,18 +18122,21 @@ function resolveAuthorizeRedirectURL(input) {
|
|
|
17936
18122
|
}
|
|
17937
18123
|
var TrueFoundryMcpServerStore = class {
|
|
17938
18124
|
#client;
|
|
17939
|
-
#
|
|
18125
|
+
#asAgent;
|
|
18126
|
+
#asUser;
|
|
17940
18127
|
#subject;
|
|
17941
18128
|
#perServerHeaders;
|
|
17942
18129
|
#gatewayUrl;
|
|
17943
18130
|
constructor(input) {
|
|
17944
18131
|
this.#client = input.client;
|
|
17945
|
-
|
|
18132
|
+
const tokens = accessTokenForRequest({
|
|
17946
18133
|
client: input.client,
|
|
17947
18134
|
requestContext: asTrueFoundryRequestContext(input.requestContext),
|
|
17948
18135
|
agent: input.agent,
|
|
17949
18136
|
logger: input.logger
|
|
17950
18137
|
});
|
|
18138
|
+
this.#asAgent = tokens.asAgent;
|
|
18139
|
+
this.#asUser = tokens.asUser;
|
|
17951
18140
|
this.#subject = input.requestContext.subject;
|
|
17952
18141
|
this.#perServerHeaders = input.perServerHeaders ?? {};
|
|
17953
18142
|
}
|
|
@@ -17956,7 +18145,7 @@ var TrueFoundryMcpServerStore = class {
|
|
|
17956
18145
|
const { record, userRef } = input;
|
|
17957
18146
|
const headers = async () => ({
|
|
17958
18147
|
...withoutAuthorization(this.#perServerHeaders[record.name]),
|
|
17959
|
-
Authorization: `Bearer ${await this.#
|
|
18148
|
+
Authorization: `Bearer ${await this.#asUser()}`
|
|
17960
18149
|
});
|
|
17961
18150
|
return async () => {
|
|
17962
18151
|
const status = await this.authorize({
|
|
@@ -17985,7 +18174,7 @@ var TrueFoundryMcpServerStore = class {
|
|
|
17985
18174
|
if (input.names?.length === 0) {
|
|
17986
18175
|
return [];
|
|
17987
18176
|
}
|
|
17988
|
-
const accessToken = await this.#
|
|
18177
|
+
const accessToken = await this.#asAgent();
|
|
17989
18178
|
const [rows, gatewayUrl] = await Promise.all([
|
|
17990
18179
|
this.#client.listMcpServers({
|
|
17991
18180
|
accessToken,
|
|
@@ -17997,7 +18186,7 @@ var TrueFoundryMcpServerStore = class {
|
|
|
17997
18186
|
}
|
|
17998
18187
|
async getServer(input, transaction) {
|
|
17999
18188
|
void transaction;
|
|
18000
|
-
const accessToken = await this.#
|
|
18189
|
+
const accessToken = await this.#asAgent();
|
|
18001
18190
|
const [row, gatewayUrl] = await Promise.all([
|
|
18002
18191
|
this.#client.getMcpServerByName({ accessToken, name: input.name }),
|
|
18003
18192
|
this.#resolveGatewayUrl()
|
|
@@ -18051,7 +18240,7 @@ var TrueFoundryMcpServerStore = class {
|
|
|
18051
18240
|
out.set(
|
|
18052
18241
|
record.name,
|
|
18053
18242
|
await this.#client.getMcpAuthStatus({
|
|
18054
|
-
accessToken: await this.#
|
|
18243
|
+
accessToken: await this.#asUser(),
|
|
18055
18244
|
mcpServerId: record.id,
|
|
18056
18245
|
subjectId: this.#subject.id,
|
|
18057
18246
|
subjectType: this.#subject.type
|
|
@@ -18066,7 +18255,7 @@ var TrueFoundryMcpServerStore = class {
|
|
|
18066
18255
|
throw new McpServerNotFoundError(input.name);
|
|
18067
18256
|
}
|
|
18068
18257
|
return this.#client.getMcpAuthorize({
|
|
18069
|
-
accessToken: await this.#
|
|
18258
|
+
accessToken: await this.#asUser(),
|
|
18070
18259
|
mcpServerId: record.id,
|
|
18071
18260
|
redirectURL: resolveAuthorizeRedirectURL({
|
|
18072
18261
|
...input.returnTo !== void 0 ? { returnTo: input.returnTo } : {}
|
|
@@ -18080,7 +18269,7 @@ var TrueFoundryMcpServerStore = class {
|
|
|
18080
18269
|
throw new McpServerNotFoundError(input.name);
|
|
18081
18270
|
}
|
|
18082
18271
|
await this.#client.deleteMcpAuth({
|
|
18083
|
-
accessToken: await this.#
|
|
18272
|
+
accessToken: await this.#asUser(),
|
|
18084
18273
|
mcpServerId: record.id,
|
|
18085
18274
|
subjectId: this.#subject.id,
|
|
18086
18275
|
subjectType: this.#subject.type,
|
|
@@ -18089,7 +18278,7 @@ var TrueFoundryMcpServerStore = class {
|
|
|
18089
18278
|
}
|
|
18090
18279
|
async #resolveGatewayUrl() {
|
|
18091
18280
|
if (this.#gatewayUrl === void 0) {
|
|
18092
|
-
const installations = await this.#client.listGatewayInstallations(await this.#
|
|
18281
|
+
const installations = await this.#client.listGatewayInstallations(await this.#asAgent());
|
|
18093
18282
|
this.#gatewayUrl = resolveDefaultGatewayUrl(installations);
|
|
18094
18283
|
}
|
|
18095
18284
|
return this.#gatewayUrl;
|
|
@@ -18110,15 +18299,18 @@ function toRecord2(input) {
|
|
|
18110
18299
|
init_modelProviderStore();
|
|
18111
18300
|
var TrueFoundryModelProviderStore = class {
|
|
18112
18301
|
#client;
|
|
18113
|
-
#
|
|
18302
|
+
#asAgent;
|
|
18303
|
+
#asUser;
|
|
18114
18304
|
constructor(input) {
|
|
18115
18305
|
this.#client = input.client;
|
|
18116
|
-
|
|
18306
|
+
const tokens = accessTokenForRequest({
|
|
18117
18307
|
client: input.client,
|
|
18118
18308
|
requestContext: asTrueFoundryRequestContext(input.requestContext),
|
|
18119
18309
|
agent: input.agent,
|
|
18120
18310
|
logger: input.logger
|
|
18121
18311
|
});
|
|
18312
|
+
this.#asAgent = tokens.asAgent;
|
|
18313
|
+
this.#asUser = tokens.asUser;
|
|
18122
18314
|
}
|
|
18123
18315
|
async listProviders(input, transaction) {
|
|
18124
18316
|
void transaction;
|
|
@@ -18151,19 +18343,19 @@ var TrueFoundryModelProviderStore = class {
|
|
|
18151
18343
|
return flattenProviderModels(await this.listProviders(input, transaction));
|
|
18152
18344
|
}
|
|
18153
18345
|
async #records(input) {
|
|
18154
|
-
const
|
|
18346
|
+
const [agentToken, userToken] = await Promise.all([this.#asAgent(), this.#asUser()]);
|
|
18155
18347
|
const [integrations, installations] = await Promise.all([
|
|
18156
18348
|
this.#client.listProviderIntegrations({
|
|
18157
|
-
accessToken,
|
|
18349
|
+
accessToken: agentToken,
|
|
18158
18350
|
...input.filter !== void 0 ? { filter: input.filter } : {}
|
|
18159
18351
|
}),
|
|
18160
|
-
this.#client.listGatewayInstallations(
|
|
18352
|
+
this.#client.listGatewayInstallations(agentToken)
|
|
18161
18353
|
]);
|
|
18162
18354
|
const gatewayUrl = resolveDefaultGatewayUrl(installations);
|
|
18163
18355
|
return toRecords({
|
|
18164
18356
|
tenant_id: input.tenant_id,
|
|
18165
18357
|
gatewayUrl,
|
|
18166
|
-
accessToken,
|
|
18358
|
+
accessToken: userToken,
|
|
18167
18359
|
models: mapEnabledModels({ integrations })
|
|
18168
18360
|
});
|
|
18169
18361
|
}
|