@truefoundry/trueforge 0.2.0-rc.4 → 0.2.0-rc.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_frontend/assets/{AgentCodeSnippets-U6KQWVBJ-mo8URLKV.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-CDXRRUZQ-CnbfBoc3.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-S2WX6ZEA-BjzWPaWE.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-UI3L7XY2-CG8nWJdo.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-OIGAC2HU-xm76mpmk.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-J5BRKMJZ-xjQQzILb.js → DockLayout-JZ4DKDOR-jsSVZPx1.js} +1 -1
- package/dist/_frontend/assets/{DrawerLayout-65YHGHIF-CehQ0ZjJ.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-VP6WCMGT-DuhYOy95.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-A4BPYIFZ-B4p1JpXq.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-SSLGM35F-Cqt-1Q8u.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-MFDOGAVJ-pSgzH70r.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-WQPUQ5TE-x17-_tYg.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-HE7E4UL5-D_jC6D5-.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-2BDTG544-FxcOqFr-.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-6aeTVQm8.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-VXKNS7FH-Dm2ZAGlE.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-BSK94pjD.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-hYZ9lU-u.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-CJdvCy_0.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-BHnJtaJv.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-BTNbHYXw.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-BBGLYdJn.css → index-B01pXqvC.css} +1 -1
- package/dist/_frontend/assets/index-B01pXqvC.css.br +0 -0
- package/dist/_frontend/assets/{index-BBGLYdJn.css.gz → index-B01pXqvC.css.gz} +0 -0
- package/dist/_frontend/assets/index-BIRSKAK8.js +933 -0
- 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-B1sBHguz.js → index-BxyaDaQf.js} +1 -1
- package/dist/_frontend/assets/index-BxyaDaQf.js.br +0 -0
- package/dist/_frontend/assets/index-BxyaDaQf.js.gz +0 -0
- package/dist/_frontend/assets/{index-BU6gYO7K.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-BKY4Sujy.js → javascript-BooEWA5C.js} +1 -1
- package/dist/_frontend/assets/{jsonMode-B_jTSLwe.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-OVC8bSZr.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-BpQc31SX.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-Rt-sDg8a.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-CLLuhWlP.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-CTEZKBpz.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-BsjOp9ss.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-CpIJvyBH.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-C_uhAUan.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-BxHi2HCJ.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-DyyH_CDu.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 +2 -2
- package/dist/controller-main.js.map +1 -1
- package/dist/main.js +478 -290
- 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-U6KQWVBJ-mo8URLKV.js.br +0 -0
- package/dist/_frontend/assets/AgentCodeSnippets-U6KQWVBJ-mo8URLKV.js.gz +0 -0
- package/dist/_frontend/assets/AgentMetricChart-3D6FUFO6-DzIcybRU.js +0 -1
- package/dist/_frontend/assets/AgentMetricChart-3D6FUFO6-DzIcybRU.js.br +0 -0
- package/dist/_frontend/assets/AgentMetricChart-3D6FUFO6-DzIcybRU.js.gz +0 -0
- package/dist/_frontend/assets/AgentOverview-RLJ6HZCN-YJvNjt8b.js +0 -1
- package/dist/_frontend/assets/AgentOverview-RLJ6HZCN-YJvNjt8b.js.br +0 -0
- package/dist/_frontend/assets/AgentOverview-RLJ6HZCN-YJvNjt8b.js.gz +0 -0
- package/dist/_frontend/assets/AgentSessionEventTimeline-CDXRRUZQ-CnbfBoc3.js.br +0 -0
- package/dist/_frontend/assets/AgentSessionEventTimeline-CDXRRUZQ-CnbfBoc3.js.gz +0 -0
- package/dist/_frontend/assets/AgentSessionEventTimelineChart-S2WX6ZEA-BjzWPaWE.js.br +0 -0
- package/dist/_frontend/assets/AgentSessionEventTimelineChart-S2WX6ZEA-BjzWPaWE.js.gz +0 -0
- package/dist/_frontend/assets/AgentSessions-UI3L7XY2-CG8nWJdo.js.br +0 -0
- package/dist/_frontend/assets/AgentSessions-UI3L7XY2-CG8nWJdo.js.gz +0 -0
- package/dist/_frontend/assets/ConnectorSettings-OIGAC2HU-xm76mpmk.js.br +0 -0
- package/dist/_frontend/assets/ConnectorSettings-OIGAC2HU-xm76mpmk.js.gz +0 -0
- package/dist/_frontend/assets/DrawerLayout-65YHGHIF-CehQ0ZjJ.js.br +0 -0
- package/dist/_frontend/assets/DrawerLayout-65YHGHIF-CehQ0ZjJ.js.gz +0 -0
- package/dist/_frontend/assets/ModelSettings-VP6WCMGT-DuhYOy95.js.br +0 -0
- package/dist/_frontend/assets/ModelSettings-VP6WCMGT-DuhYOy95.js.gz +0 -0
- package/dist/_frontend/assets/SandboxSettings-GTZT7LD6-F_5p7NeO.js +0 -1
- package/dist/_frontend/assets/SandboxSettings-GTZT7LD6-F_5p7NeO.js.br +0 -0
- package/dist/_frontend/assets/SandboxSettings-GTZT7LD6-F_5p7NeO.js.gz +0 -0
- package/dist/_frontend/assets/SchedulesPage-ARWU7BZF-BIZcHayD.js +0 -1
- package/dist/_frontend/assets/SchedulesPage-ARWU7BZF-BIZcHayD.js.br +0 -0
- package/dist/_frontend/assets/SchedulesPage-ARWU7BZF-BIZcHayD.js.gz +0 -0
- package/dist/_frontend/assets/SettingsBuilder-A4BPYIFZ-B4p1JpXq.js.br +0 -0
- package/dist/_frontend/assets/SettingsBuilder-A4BPYIFZ-B4p1JpXq.js.gz +0 -0
- package/dist/_frontend/assets/ShellRouteSync-SSLGM35F-Cqt-1Q8u.js.br +0 -0
- package/dist/_frontend/assets/ShellRouteSync-SSLGM35F-Cqt-1Q8u.js.gz +0 -0
- package/dist/_frontend/assets/SidebarLayout-MFDOGAVJ-pSgzH70r.js.br +0 -0
- package/dist/_frontend/assets/SidebarLayout-MFDOGAVJ-pSgzH70r.js.gz +0 -0
- package/dist/_frontend/assets/SkillSettings-WQPUQ5TE-x17-_tYg.js.br +0 -0
- package/dist/_frontend/assets/SkillSettings-WQPUQ5TE-x17-_tYg.js.gz +0 -0
- package/dist/_frontend/assets/TrueForgeUIWithRouter-5CDICMCE-DcMl1KUh.js +0 -1
- package/dist/_frontend/assets/WidgetLayout-HE7E4UL5-D_jC6D5-.js.br +0 -0
- package/dist/_frontend/assets/WidgetLayout-HE7E4UL5-D_jC6D5-.js.gz +0 -0
- package/dist/_frontend/assets/chunk-2BDTG544-FxcOqFr-.js.br +0 -0
- package/dist/_frontend/assets/chunk-2BDTG544-FxcOqFr-.js.gz +0 -0
- package/dist/_frontend/assets/chunk-62JRHF6Z-6aeTVQm8.js.br +0 -0
- package/dist/_frontend/assets/chunk-62JRHF6Z-6aeTVQm8.js.gz +0 -0
- package/dist/_frontend/assets/chunk-TGKQRK3S-D5Bs7icZ.js +0 -1
- package/dist/_frontend/assets/chunk-TGKQRK3S-D5Bs7icZ.js.br +0 -0
- package/dist/_frontend/assets/chunk-TGKQRK3S-D5Bs7icZ.js.gz +0 -0
- package/dist/_frontend/assets/chunk-VXKNS7FH-Dm2ZAGlE.js.br +0 -0
- package/dist/_frontend/assets/chunk-VXKNS7FH-Dm2ZAGlE.js.gz +0 -0
- package/dist/_frontend/assets/cssMode-BSK94pjD.js.br +0 -0
- package/dist/_frontend/assets/cssMode-BSK94pjD.js.gz +0 -0
- package/dist/_frontend/assets/freemarker2-hYZ9lU-u.js.br +0 -0
- package/dist/_frontend/assets/freemarker2-hYZ9lU-u.js.gz +0 -0
- package/dist/_frontend/assets/handlebars-CJdvCy_0.js.br +0 -0
- package/dist/_frontend/assets/handlebars-CJdvCy_0.js.gz +0 -0
- package/dist/_frontend/assets/html-BHnJtaJv.js.br +0 -0
- package/dist/_frontend/assets/html-BHnJtaJv.js.gz +0 -0
- package/dist/_frontend/assets/htmlMode-BTNbHYXw.js.br +0 -0
- package/dist/_frontend/assets/htmlMode-BTNbHYXw.js.gz +0 -0
- package/dist/_frontend/assets/index-B1sBHguz.js.br +0 -0
- package/dist/_frontend/assets/index-B1sBHguz.js.gz +0 -0
- package/dist/_frontend/assets/index-BBGLYdJn.css.br +0 -0
- package/dist/_frontend/assets/index-BU6gYO7K.js.br +0 -0
- package/dist/_frontend/assets/index-BU6gYO7K.js.gz +0 -0
- package/dist/_frontend/assets/index-DZOZ1xN3.js +0 -933
- package/dist/_frontend/assets/index-DZOZ1xN3.js.br +0 -0
- package/dist/_frontend/assets/index-DZOZ1xN3.js.gz +0 -0
- package/dist/_frontend/assets/jsonMode-B_jTSLwe.js.br +0 -0
- package/dist/_frontend/assets/jsonMode-B_jTSLwe.js.gz +0 -0
- package/dist/_frontend/assets/liquid-OVC8bSZr.js.br +0 -0
- package/dist/_frontend/assets/liquid-OVC8bSZr.js.gz +0 -0
- package/dist/_frontend/assets/lspLanguageFeatures-BpQc31SX.js.br +0 -0
- package/dist/_frontend/assets/lspLanguageFeatures-BpQc31SX.js.gz +0 -0
- package/dist/_frontend/assets/mdx-Rt-sDg8a.js.br +0 -0
- package/dist/_frontend/assets/mdx-Rt-sDg8a.js.gz +0 -0
- package/dist/_frontend/assets/python-CLLuhWlP.js.br +0 -0
- package/dist/_frontend/assets/python-CLLuhWlP.js.gz +0 -0
- package/dist/_frontend/assets/razor-CTEZKBpz.js.br +0 -0
- package/dist/_frontend/assets/razor-CTEZKBpz.js.gz +0 -0
- package/dist/_frontend/assets/tsMode-BsjOp9ss.js.br +0 -0
- package/dist/_frontend/assets/tsMode-BsjOp9ss.js.gz +0 -0
- package/dist/_frontend/assets/typescript-CpIJvyBH.js.br +0 -0
- package/dist/_frontend/assets/typescript-CpIJvyBH.js.gz +0 -0
- package/dist/_frontend/assets/workers-C_uhAUan.js.br +0 -0
- package/dist/_frontend/assets/workers-C_uhAUan.js.gz +0 -0
- package/dist/_frontend/assets/xml-BxHi2HCJ.js.br +0 -0
- package/dist/_frontend/assets/xml-BxHi2HCJ.js.gz +0 -0
- package/dist/_frontend/assets/yaml-DyyH_CDu.js.br +0 -0
- package/dist/_frontend/assets/yaml-DyyH_CDu.js.gz +0 -0
package/dist/main.js
CHANGED
|
@@ -510,7 +510,9 @@ var init_config = __esm({
|
|
|
510
510
|
});
|
|
511
511
|
|
|
512
512
|
// src/db/agentStore.ts
|
|
513
|
-
import {
|
|
513
|
+
import {
|
|
514
|
+
AgentSpecSchema
|
|
515
|
+
} from "@truefoundry/trueforge-core/agent-session";
|
|
514
516
|
function parseStoredAgentSpec(manifest) {
|
|
515
517
|
return AgentSpecSchema.parse(manifest);
|
|
516
518
|
}
|
|
@@ -2104,7 +2106,7 @@ function parseCommaSeparatedQuery(val) {
|
|
|
2104
2106
|
}
|
|
2105
2107
|
return val.split(",").map((part) => part.trim()).filter((part) => part.length > 0);
|
|
2106
2108
|
}
|
|
2107
|
-
var NameSchema, PAGE_LIMIT, EVENTS_PAGE_LIMIT;
|
|
2109
|
+
var NameSchema, PAGE_LIMIT, EVENTS_PAGE_LIMIT, AGENTS_PAGE_DEFAULT, AGENTS_PAGE_LIMIT;
|
|
2108
2110
|
var init_common = __esm({
|
|
2109
2111
|
"src/schemas/common.ts"() {
|
|
2110
2112
|
"use strict";
|
|
@@ -2114,6 +2116,8 @@ var init_common = __esm({
|
|
|
2114
2116
|
).openapi("ResourceName");
|
|
2115
2117
|
PAGE_LIMIT = 25;
|
|
2116
2118
|
EVENTS_PAGE_LIMIT = 100;
|
|
2119
|
+
AGENTS_PAGE_DEFAULT = 50;
|
|
2120
|
+
AGENTS_PAGE_LIMIT = 100;
|
|
2117
2121
|
}
|
|
2118
2122
|
});
|
|
2119
2123
|
|
|
@@ -3865,7 +3869,7 @@ var init_mcpServerStore = __esm({
|
|
|
3865
3869
|
|
|
3866
3870
|
// src/schemas/schedule.ts
|
|
3867
3871
|
import { z as z24 } from "@hono/zod-openapi";
|
|
3868
|
-
import { CreatedBySubjectSchema as CreatedBySubjectSchema4, TokenPaginationSchema } from "@truefoundry/trueforge-core/agent-session";
|
|
3872
|
+
import { CreatedBySubjectSchema as CreatedBySubjectSchema4, TokenPaginationSchema as TokenPaginationSchema2 } from "@truefoundry/trueforge-core/agent-session";
|
|
3869
3873
|
var SCHEDULE_MIN_INTERVAL_SECONDS, CRON_FIELD, InvalidCronError, CronExpressionSchema, TimezoneSchema, IsoTimestamp, NullableIsoTimestamp, ScheduleTaskSchema, ScheduleStatusSchema, ScheduleManifestObjectSchema, ScheduleManifestSchema, ScheduleSchema, CreateScheduleRequestSchema, UpdateScheduleRequestSchema, GetScheduleResponseSchema, ListSchedulesResponseSchema, DeleteScheduleResponseSchema, ScheduleRunStatusSchema, ScheduleRunSchema, ListScheduleRunsResponseSchema, CreateScheduleRunRequestSchema, CreateScheduleRunResponseSchema, ExecuteScheduleRunRequestSchema;
|
|
3870
3874
|
var init_schedule = __esm({
|
|
3871
3875
|
"src/schemas/schedule.ts"() {
|
|
@@ -3923,7 +3927,7 @@ var init_schedule = __esm({
|
|
|
3923
3927
|
GetScheduleResponseSchema = z24.object({ data: ScheduleSchema }).openapi("GetScheduleResponse");
|
|
3924
3928
|
ListSchedulesResponseSchema = z24.object({
|
|
3925
3929
|
data: z24.array(ScheduleSchema),
|
|
3926
|
-
pagination:
|
|
3930
|
+
pagination: TokenPaginationSchema2
|
|
3927
3931
|
}).openapi("ListSchedulesResponse");
|
|
3928
3932
|
DeleteScheduleResponseSchema = z24.object({}).openapi("DeleteScheduleResponse");
|
|
3929
3933
|
ScheduleRunStatusSchema = z24.enum(["scheduled", "triggered", "failed"]).openapi("ScheduleRunStatus");
|
|
@@ -3941,7 +3945,7 @@ var init_schedule = __esm({
|
|
|
3941
3945
|
}).strict().openapi("ScheduleRun");
|
|
3942
3946
|
ListScheduleRunsResponseSchema = z24.object({
|
|
3943
3947
|
data: z24.array(ScheduleRunSchema),
|
|
3944
|
-
pagination:
|
|
3948
|
+
pagination: TokenPaginationSchema2
|
|
3945
3949
|
}).openapi("ListScheduleRunsResponse");
|
|
3946
3950
|
CreateScheduleRunRequestSchema = z24.object({
|
|
3947
3951
|
schedule_id: z24.string().min(1).max(64).describe("Immutable schedule identifier.")
|
|
@@ -4330,12 +4334,17 @@ __export(PostgresAgentStore_exports, {
|
|
|
4330
4334
|
PostgresAgentStore: () => PostgresAgentStore
|
|
4331
4335
|
});
|
|
4332
4336
|
import { CreatedBySubjectSchema as CreatedBySubjectSchema5 } from "@truefoundry/trueforge-core/agent-session";
|
|
4337
|
+
import {
|
|
4338
|
+
decodeOffsetPageToken as decodeOffsetPageToken3,
|
|
4339
|
+
paginateOffsetRows as paginateOffsetRows2
|
|
4340
|
+
} from "@truefoundry/trueforge-core/agent-session/store/OffsetPageToken";
|
|
4333
4341
|
import { sql as sql10 } from "kysely";
|
|
4334
4342
|
function toRecord(row) {
|
|
4335
4343
|
return {
|
|
4336
4344
|
id: row.id,
|
|
4337
4345
|
tenant_id: row.tenant_id,
|
|
4338
4346
|
name: row.name,
|
|
4347
|
+
description: row.description,
|
|
4339
4348
|
manifest: parseStoredAgentSpec(row.manifest),
|
|
4340
4349
|
external_id: row.external_id,
|
|
4341
4350
|
created_by_subject: CreatedBySubjectSchema5.parse(row.created_by_subject),
|
|
@@ -4370,15 +4379,26 @@ var init_PostgresAgentStore = __esm({
|
|
|
4370
4379
|
}
|
|
4371
4380
|
async listAgents(input, transaction) {
|
|
4372
4381
|
if (input.external_ids?.length === 0) {
|
|
4373
|
-
return [];
|
|
4382
|
+
return { data: [], pagination: { limit: input.limit ?? 0 } };
|
|
4374
4383
|
}
|
|
4375
4384
|
const db = transaction ?? this.#db;
|
|
4376
4385
|
let query = db.selectFrom("agent").selectAll().where("tenant_id", "=", input.tenant_id);
|
|
4377
4386
|
if (input.external_ids !== void 0) {
|
|
4378
4387
|
query = query.where("external_id", "in", [...input.external_ids]);
|
|
4379
4388
|
}
|
|
4380
|
-
|
|
4381
|
-
|
|
4389
|
+
if (input.agent_name !== void 0) {
|
|
4390
|
+
query = query.where(sql10`position(lower(${input.agent_name}) in lower(name)) > 0`);
|
|
4391
|
+
}
|
|
4392
|
+
query = query.orderBy("name");
|
|
4393
|
+
if (input.limit === void 0) {
|
|
4394
|
+
const rows2 = await query.execute();
|
|
4395
|
+
const data2 = rows2.map(toRecord);
|
|
4396
|
+
return { data: data2, pagination: { limit: data2.length } };
|
|
4397
|
+
}
|
|
4398
|
+
const offset = decodeOffsetPageToken3(input.page_token);
|
|
4399
|
+
const rows = await query.limit(input.limit + 1).offset(offset).execute();
|
|
4400
|
+
const { data, pagination } = paginateOffsetRows2(rows, input.limit, offset);
|
|
4401
|
+
return { data: data.map(toRecord), pagination };
|
|
4382
4402
|
}
|
|
4383
4403
|
async getOwnedIds(input, transaction) {
|
|
4384
4404
|
if (input.ids.length === 0) {
|
|
@@ -4414,6 +4434,7 @@ var init_PostgresAgentStore = __esm({
|
|
|
4414
4434
|
id: newId(),
|
|
4415
4435
|
tenant_id: input.tenant_id,
|
|
4416
4436
|
name: input.name,
|
|
4437
|
+
description: input.description,
|
|
4417
4438
|
manifest: json(input.manifest),
|
|
4418
4439
|
external_id: input.external_id,
|
|
4419
4440
|
created_by_subject: json(input.created_by_subject),
|
|
@@ -4434,13 +4455,14 @@ var init_PostgresAgentStore = __esm({
|
|
|
4434
4455
|
}
|
|
4435
4456
|
}
|
|
4436
4457
|
async updateAgent(input, transaction) {
|
|
4437
|
-
if (input.manifest === void 0 && input.external_id === void 0) {
|
|
4438
|
-
throw new Error("updateAgent requires manifest and/or external_id");
|
|
4458
|
+
if (input.manifest === void 0 && input.description === void 0 && input.external_id === void 0) {
|
|
4459
|
+
throw new Error("updateAgent requires manifest, description, and/or external_id");
|
|
4439
4460
|
}
|
|
4440
4461
|
const db = transaction ?? this.#db;
|
|
4441
4462
|
try {
|
|
4442
4463
|
const row = await db.updateTable("agent").set({
|
|
4443
4464
|
...input.manifest === void 0 ? {} : { manifest: json(input.manifest) },
|
|
4465
|
+
...input.description === void 0 ? {} : { description: input.description },
|
|
4444
4466
|
...input.external_id === void 0 ? {} : { external_id: input.external_id },
|
|
4445
4467
|
updated_at: now()
|
|
4446
4468
|
}).where("tenant_id", "=", input.tenant_id).where("id", "=", input.id).returningAll().executeTakeFirst();
|
|
@@ -5241,8 +5263,8 @@ var init_capabilities2 = __esm({
|
|
|
5241
5263
|
|
|
5242
5264
|
// src/db/sqlite/session-store/queries/events.ts
|
|
5243
5265
|
import {
|
|
5244
|
-
decodeOffsetPageToken as
|
|
5245
|
-
paginateOffsetRows as
|
|
5266
|
+
decodeOffsetPageToken as decodeOffsetPageToken4,
|
|
5267
|
+
paginateOffsetRows as paginateOffsetRows3
|
|
5246
5268
|
} from "@truefoundry/trueforge-core/agent-session/store/OffsetPageToken";
|
|
5247
5269
|
import {
|
|
5248
5270
|
decodeSessionEventPageToken as decodeSessionEventPageToken2,
|
|
@@ -5277,7 +5299,7 @@ async function appendToEvents2(db, input) {
|
|
|
5277
5299
|
});
|
|
5278
5300
|
}
|
|
5279
5301
|
async function listTurnEvents2(db, input) {
|
|
5280
|
-
const offset =
|
|
5302
|
+
const offset = decodeOffsetPageToken4(input.page_token);
|
|
5281
5303
|
const limit = input.limit;
|
|
5282
5304
|
const eventOrder = input.order === "desc" ? "desc" : "asc";
|
|
5283
5305
|
const rows = await db.selectFrom("turn as t").leftJoin(
|
|
@@ -5293,7 +5315,7 @@ async function listTurnEvents2(db, input) {
|
|
|
5293
5315
|
events.push(row.event);
|
|
5294
5316
|
}
|
|
5295
5317
|
}
|
|
5296
|
-
return
|
|
5318
|
+
return paginateOffsetRows3(events, limit, offset);
|
|
5297
5319
|
}
|
|
5298
5320
|
async function resolveAncestorChain2(db, sessionId, anchor) {
|
|
5299
5321
|
const chain = [...anchor.ancestor_ids, anchor.turn_id];
|
|
@@ -5859,7 +5881,7 @@ __export(SqliteSessionStore_exports, {
|
|
|
5859
5881
|
SqliteSessionStore: () => SqliteSessionStore
|
|
5860
5882
|
});
|
|
5861
5883
|
import {
|
|
5862
|
-
decodeOffsetPageToken as
|
|
5884
|
+
decodeOffsetPageToken as decodeOffsetPageToken5,
|
|
5863
5885
|
encodeOffsetPageToken as encodeOffsetPageToken2
|
|
5864
5886
|
} from "@truefoundry/trueforge-core/agent-session/store/OffsetPageToken";
|
|
5865
5887
|
var SqliteSessionStore;
|
|
@@ -5936,7 +5958,7 @@ var init_SqliteSessionStore = __esm({
|
|
|
5936
5958
|
return getTurn2(this.db, input);
|
|
5937
5959
|
}
|
|
5938
5960
|
async listTurns(input) {
|
|
5939
|
-
const offset =
|
|
5961
|
+
const offset = decodeOffsetPageToken5(input.page_token);
|
|
5940
5962
|
const result = await listTurns2(this.db, {
|
|
5941
5963
|
session_id: input.session_id,
|
|
5942
5964
|
limit: input.limit,
|
|
@@ -6635,12 +6657,17 @@ __export(SqliteAgentStore_exports, {
|
|
|
6635
6657
|
import {
|
|
6636
6658
|
CreatedBySubjectSchema as CreatedBySubjectSchema7
|
|
6637
6659
|
} from "@truefoundry/trueforge-core/agent-session";
|
|
6660
|
+
import {
|
|
6661
|
+
decodeOffsetPageToken as decodeOffsetPageToken6,
|
|
6662
|
+
paginateOffsetRows as paginateOffsetRows4
|
|
6663
|
+
} from "@truefoundry/trueforge-core/agent-session/store/OffsetPageToken";
|
|
6638
6664
|
import { sql as sql21 } from "kysely";
|
|
6639
6665
|
function recordColumns5(eb) {
|
|
6640
6666
|
return [
|
|
6641
6667
|
"id",
|
|
6642
6668
|
"tenant_id",
|
|
6643
6669
|
"name",
|
|
6670
|
+
"description",
|
|
6644
6671
|
jsonText(eb.ref("manifest")).as("manifest"),
|
|
6645
6672
|
"external_id",
|
|
6646
6673
|
jsonText(eb.ref("created_by_subject")).as("created_by_subject"),
|
|
@@ -6670,15 +6697,26 @@ var init_SqliteAgentStore = __esm({
|
|
|
6670
6697
|
}
|
|
6671
6698
|
async listAgents(input, transaction) {
|
|
6672
6699
|
if (input.external_ids?.length === 0) {
|
|
6673
|
-
return [];
|
|
6700
|
+
return { data: [], pagination: { limit: input.limit ?? 0 } };
|
|
6674
6701
|
}
|
|
6675
6702
|
const db = transaction ?? this.#db;
|
|
6676
6703
|
let query = db.selectFrom("agent").select(recordColumns5).where("tenant_id", "=", input.tenant_id);
|
|
6677
6704
|
if (input.external_ids !== void 0) {
|
|
6678
6705
|
query = query.where("external_id", "in", [...input.external_ids]);
|
|
6679
6706
|
}
|
|
6680
|
-
|
|
6681
|
-
|
|
6707
|
+
if (input.agent_name !== void 0) {
|
|
6708
|
+
query = query.where(sql21`instr(lower(name), lower(${input.agent_name})) > 0`);
|
|
6709
|
+
}
|
|
6710
|
+
query = query.orderBy("name");
|
|
6711
|
+
if (input.limit === void 0) {
|
|
6712
|
+
const rows2 = await query.execute();
|
|
6713
|
+
const data2 = rows2.map(toRecord3);
|
|
6714
|
+
return { data: data2, pagination: { limit: data2.length } };
|
|
6715
|
+
}
|
|
6716
|
+
const offset = decodeOffsetPageToken6(input.page_token);
|
|
6717
|
+
const rows = await query.limit(input.limit + 1).offset(offset).execute();
|
|
6718
|
+
const { data, pagination } = paginateOffsetRows4(rows, input.limit, offset);
|
|
6719
|
+
return { data: data.map(toRecord3), pagination };
|
|
6682
6720
|
}
|
|
6683
6721
|
async getOwnedIds(input, transaction) {
|
|
6684
6722
|
if (input.ids.length === 0) {
|
|
@@ -6715,6 +6753,7 @@ var init_SqliteAgentStore = __esm({
|
|
|
6715
6753
|
id: newId(),
|
|
6716
6754
|
tenant_id: input.tenant_id,
|
|
6717
6755
|
name: input.name,
|
|
6756
|
+
description: input.description,
|
|
6718
6757
|
manifest: jsonbBind(input.manifest),
|
|
6719
6758
|
external_id: input.external_id,
|
|
6720
6759
|
created_by_subject: jsonbBind(input.created_by_subject),
|
|
@@ -6736,13 +6775,14 @@ var init_SqliteAgentStore = __esm({
|
|
|
6736
6775
|
}
|
|
6737
6776
|
}
|
|
6738
6777
|
async updateAgent(input, transaction) {
|
|
6739
|
-
if (input.manifest === void 0 && input.external_id === void 0) {
|
|
6740
|
-
throw new Error("updateAgent requires manifest and/or external_id");
|
|
6778
|
+
if (input.manifest === void 0 && input.description === void 0 && input.external_id === void 0) {
|
|
6779
|
+
throw new Error("updateAgent requires manifest, description, and/or external_id");
|
|
6741
6780
|
}
|
|
6742
6781
|
const db = transaction ?? this.#db;
|
|
6743
6782
|
try {
|
|
6744
6783
|
const row = await db.updateTable("agent").set({
|
|
6745
6784
|
...input.manifest === void 0 ? {} : { manifest: jsonbBind(input.manifest) },
|
|
6785
|
+
...input.description === void 0 ? {} : { description: input.description },
|
|
6746
6786
|
...input.external_id === void 0 ? {} : { external_id: input.external_id },
|
|
6747
6787
|
updated_at: nowIso()
|
|
6748
6788
|
}).where("tenant_id", "=", input.tenant_id).where("id", "=", input.id).returning(recordColumns5).executeTakeFirst();
|
|
@@ -6791,8 +6831,8 @@ import {
|
|
|
6791
6831
|
CreatedBySubjectSchema as CreatedBySubjectSchema8
|
|
6792
6832
|
} from "@truefoundry/trueforge-core/agent-session";
|
|
6793
6833
|
import {
|
|
6794
|
-
decodeOffsetPageToken as
|
|
6795
|
-
paginateOffsetRows as
|
|
6834
|
+
decodeOffsetPageToken as decodeOffsetPageToken7,
|
|
6835
|
+
paginateOffsetRows as paginateOffsetRows5
|
|
6796
6836
|
} from "@truefoundry/trueforge-core/agent-session/store/OffsetPageToken";
|
|
6797
6837
|
import { sql as sql22 } from "kysely";
|
|
6798
6838
|
function scheduleColumns(eb) {
|
|
@@ -6959,7 +6999,7 @@ var init_SqliteScheduleStore = __esm({
|
|
|
6959
6999
|
await db.deleteFrom("schedule").where("tenant_id", "=", input.tenant_id).where("id", "=", input.id).execute();
|
|
6960
7000
|
}
|
|
6961
7001
|
async listSchedules(input, transaction) {
|
|
6962
|
-
const offset =
|
|
7002
|
+
const offset = decodeOffsetPageToken7(input.page_token);
|
|
6963
7003
|
const db = transaction ?? this.#db;
|
|
6964
7004
|
let query = db.selectFrom("schedule").select(scheduleColumns).where("tenant_id", "=", input.tenant_id);
|
|
6965
7005
|
if (input.agent_names !== void 0) {
|
|
@@ -6967,7 +7007,7 @@ var init_SqliteScheduleStore = __esm({
|
|
|
6967
7007
|
}
|
|
6968
7008
|
query = whereCreatedByOrAgentIds2(query, input.created_by_or_agent_ids);
|
|
6969
7009
|
const rows = await query.orderBy("created_at", "desc").orderBy("id").limit(input.limit + 1).offset(offset).execute();
|
|
6970
|
-
const { data, pagination } =
|
|
7010
|
+
const { data, pagination } = paginateOffsetRows5(rows, input.limit, offset);
|
|
6971
7011
|
return { data: data.map(toScheduleRecord), pagination };
|
|
6972
7012
|
}
|
|
6973
7013
|
async getOwnedIds(input, transaction) {
|
|
@@ -6979,10 +7019,10 @@ var init_SqliteScheduleStore = __esm({
|
|
|
6979
7019
|
return rows.map((row) => row.id);
|
|
6980
7020
|
}
|
|
6981
7021
|
async listRuns(input, transaction) {
|
|
6982
|
-
const offset =
|
|
7022
|
+
const offset = decodeOffsetPageToken7(input.page_token);
|
|
6983
7023
|
const db = transaction ?? this.#db;
|
|
6984
7024
|
const rows = await db.selectFrom("schedule_run").select(runColumns).where("tenant_id", "=", input.tenant_id).where("schedule_id", "=", input.schedule_id).orderBy("scheduled_for", "desc").orderBy("id").limit(input.limit + 1).offset(offset).execute();
|
|
6985
|
-
const { data, pagination } =
|
|
7025
|
+
const { data, pagination } = paginateOffsetRows5(rows, input.limit, offset);
|
|
6986
7026
|
return { data: data.map(toRunRecord), pagination };
|
|
6987
7027
|
}
|
|
6988
7028
|
async getRun(input, transaction) {
|
|
@@ -7709,8 +7749,8 @@ __export(PostgresScheduleStore_exports, {
|
|
|
7709
7749
|
});
|
|
7710
7750
|
import { CreatedBySubjectSchema as CreatedBySubjectSchema9 } from "@truefoundry/trueforge-core/agent-session";
|
|
7711
7751
|
import {
|
|
7712
|
-
decodeOffsetPageToken as
|
|
7713
|
-
paginateOffsetRows as
|
|
7752
|
+
decodeOffsetPageToken as decodeOffsetPageToken8,
|
|
7753
|
+
paginateOffsetRows as paginateOffsetRows6
|
|
7714
7754
|
} from "@truefoundry/trueforge-core/agent-session/store/OffsetPageToken";
|
|
7715
7755
|
import { sql as sql25 } from "kysely";
|
|
7716
7756
|
function toScheduleRecord2(row) {
|
|
@@ -7855,7 +7895,7 @@ var init_PostgresScheduleStore = __esm({
|
|
|
7855
7895
|
await db.deleteFrom("schedule").where("tenant_id", "=", input.tenant_id).where("id", "=", input.id).execute();
|
|
7856
7896
|
}
|
|
7857
7897
|
async listSchedules(input, transaction) {
|
|
7858
|
-
const offset =
|
|
7898
|
+
const offset = decodeOffsetPageToken8(input.page_token);
|
|
7859
7899
|
const db = transaction ?? this.#db;
|
|
7860
7900
|
let query = db.selectFrom("schedule").selectAll().where("tenant_id", "=", input.tenant_id);
|
|
7861
7901
|
if (input.agent_names !== void 0) {
|
|
@@ -7863,7 +7903,7 @@ var init_PostgresScheduleStore = __esm({
|
|
|
7863
7903
|
}
|
|
7864
7904
|
query = whereCreatedByOrAgentIds(query, input.created_by_or_agent_ids);
|
|
7865
7905
|
const rows = await query.orderBy("created_at", "desc").orderBy("id").limit(input.limit + 1).offset(offset).execute();
|
|
7866
|
-
const { data, pagination } =
|
|
7906
|
+
const { data, pagination } = paginateOffsetRows6(rows, input.limit, offset);
|
|
7867
7907
|
return { data: data.map(toScheduleRecord2), pagination };
|
|
7868
7908
|
}
|
|
7869
7909
|
async getOwnedIds(input, transaction) {
|
|
@@ -7875,10 +7915,10 @@ var init_PostgresScheduleStore = __esm({
|
|
|
7875
7915
|
return rows.map((row) => row.id);
|
|
7876
7916
|
}
|
|
7877
7917
|
async listRuns(input, transaction) {
|
|
7878
|
-
const offset =
|
|
7918
|
+
const offset = decodeOffsetPageToken8(input.page_token);
|
|
7879
7919
|
const db = transaction ?? this.#db;
|
|
7880
7920
|
const rows = await db.selectFrom("schedule_run").selectAll().where("tenant_id", "=", input.tenant_id).where("schedule_id", "=", input.schedule_id).orderBy("scheduled_for", "desc").orderBy("id").limit(input.limit + 1).offset(offset).execute();
|
|
7881
|
-
const { data, pagination } =
|
|
7921
|
+
const { data, pagination } = paginateOffsetRows6(rows, input.limit, offset);
|
|
7882
7922
|
return { data: data.map(toRunRecord2), pagination };
|
|
7883
7923
|
}
|
|
7884
7924
|
async getRun(input, transaction) {
|
|
@@ -7998,101 +8038,160 @@ import { HTTPException as HTTPException2 } from "hono/http-exception";
|
|
|
7998
8038
|
import { createRoute } from "@hono/zod-openapi";
|
|
7999
8039
|
|
|
8000
8040
|
// src/schemas/agentImport.ts
|
|
8041
|
+
import { z as z3 } from "@hono/zod-openapi";
|
|
8042
|
+
import { AgentSpecSchema as AgentSpecSchema5, CreatedBySubjectSchema as CreatedBySubjectSchema3 } from "@truefoundry/trueforge-core/agent-session";
|
|
8043
|
+
|
|
8044
|
+
// src/schemas/agent.ts
|
|
8001
8045
|
init_common();
|
|
8002
8046
|
import { z as z2 } from "@hono/zod-openapi";
|
|
8003
|
-
import {
|
|
8047
|
+
import {
|
|
8048
|
+
AgentSpecSchema as AgentSpecSchema4,
|
|
8049
|
+
CreatedBySubjectSchema as CreatedBySubjectSchema2,
|
|
8050
|
+
TokenPaginationSchema
|
|
8051
|
+
} from "@truefoundry/trueforge-core/agent-session";
|
|
8004
8052
|
var RESERVED_AGENT_NAMES = /* @__PURE__ */ new Set(["tfg", "trueforge"]);
|
|
8005
|
-
var
|
|
8053
|
+
var AGENT_DESCRIPTION_MAX_LENGTH = 1024;
|
|
8054
|
+
var AgentDescriptionSchema = z2.string().trim().min(1).max(AGENT_DESCRIPTION_MAX_LENGTH);
|
|
8055
|
+
var CreateAgentRequestSchema = z2.object({
|
|
8006
8056
|
name: NameSchema.refine((name) => !RESERVED_AGENT_NAMES.has(name), {
|
|
8007
8057
|
message: "Agent name is reserved, cannot be used"
|
|
8008
8058
|
}),
|
|
8059
|
+
description: AgentDescriptionSchema,
|
|
8060
|
+
manifest: AgentSpecSchema4
|
|
8061
|
+
}).strict().openapi("CreateAgentRequest");
|
|
8062
|
+
var UpdateAgentRequestSchema = z2.object({
|
|
8063
|
+
description: AgentDescriptionSchema.optional(),
|
|
8064
|
+
manifest: AgentSpecSchema4
|
|
8065
|
+
}).strict().openapi("UpdateAgentRequest");
|
|
8066
|
+
var AgentSchema = z2.object({
|
|
8067
|
+
id: z2.string().min(1).describe("Immutable server-generated agent identifier."),
|
|
8068
|
+
name: NameSchema,
|
|
8069
|
+
description: AgentDescriptionSchema,
|
|
8009
8070
|
manifest: AgentSpecSchema4,
|
|
8010
|
-
|
|
8011
|
-
|
|
8071
|
+
created_by_subject: CreatedBySubjectSchema2
|
|
8072
|
+
}).strict().openapi("Agent");
|
|
8073
|
+
var GetAgentResponseSchema = z2.object({ data: AgentSchema }).openapi("GetAgentResponse");
|
|
8074
|
+
var ListAgentsResponseSchema = z2.object({
|
|
8075
|
+
data: z2.array(AgentSchema),
|
|
8076
|
+
pagination: TokenPaginationSchema
|
|
8077
|
+
}).openapi("ListAgentsResponse");
|
|
8078
|
+
var DeleteAgentResponseSchema = z2.object({}).openapi("DeleteAgentResponse");
|
|
8079
|
+
var AgentCodeSnippetSampleCodeSchema = z2.object({
|
|
8080
|
+
stream: z2.string().describe("SDK sample that streams turn events."),
|
|
8081
|
+
non_stream: z2.string().describe("SDK sample that creates a turn without streaming.")
|
|
8082
|
+
}).strict().openapi("AgentCodeSnippetSampleCode");
|
|
8083
|
+
var AgentCodeSnippetSchema = z2.object({
|
|
8084
|
+
label_name: z2.string().min(1),
|
|
8085
|
+
language: z2.string().min(1),
|
|
8086
|
+
icon: z2.url(),
|
|
8087
|
+
sample_code: AgentCodeSnippetSampleCodeSchema
|
|
8088
|
+
}).strict().openapi("AgentCodeSnippet");
|
|
8089
|
+
var AgentCodeSnippetsSchema = z2.object({
|
|
8090
|
+
base_url: z2.url().describe("Public base URL for the TrueForge SDK `baseUrl`."),
|
|
8091
|
+
snippets: z2.array(AgentCodeSnippetSchema)
|
|
8092
|
+
}).strict().openapi("AgentCodeSnippets");
|
|
8093
|
+
var GetAgentCodeSnippetsResponseSchema = z2.object({ data: AgentCodeSnippetsSchema }).openapi("GetAgentCodeSnippetsResponse");
|
|
8094
|
+
var GetAgentCodeSnippetsRequestQuerySchema = z2.object({
|
|
8095
|
+
base_url: z2.url().optional().describe(
|
|
8096
|
+
"Public SDK base URL from the browser. When omitted, derived from the request origin and PUBLIC_BASE_URL."
|
|
8097
|
+
)
|
|
8098
|
+
}).strict().openapi("GetAgentCodeSnippetsRequestQuery");
|
|
8099
|
+
|
|
8100
|
+
// src/schemas/agentImport.ts
|
|
8101
|
+
init_common();
|
|
8102
|
+
var RESERVED_AGENT_NAMES2 = /* @__PURE__ */ new Set(["tfg", "trueforge"]);
|
|
8103
|
+
var ImportAgentItemSchema = z3.object({
|
|
8104
|
+
name: NameSchema.refine((name) => !RESERVED_AGENT_NAMES2.has(name), {
|
|
8105
|
+
message: "Agent name is reserved, cannot be used"
|
|
8106
|
+
}),
|
|
8107
|
+
description: AgentDescriptionSchema.optional(),
|
|
8108
|
+
manifest: AgentSpecSchema5,
|
|
8109
|
+
tenant_id: z3.string().min(1).describe("Tenant to create the agent under."),
|
|
8110
|
+
created_by_subject: CreatedBySubjectSchema3.describe("Original creator to persist on the agent.")
|
|
8012
8111
|
}).strict().openapi("ImportAgentItem");
|
|
8013
|
-
var ImportAgentsRequestSchema =
|
|
8014
|
-
agents:
|
|
8112
|
+
var ImportAgentsRequestSchema = z3.object({
|
|
8113
|
+
agents: z3.array(ImportAgentItemSchema).describe("Agents to create; each carries tenant_id and created_by_subject.")
|
|
8015
8114
|
}).strict().openapi("ImportAgentsRequest");
|
|
8016
|
-
var ImportAgentItemResultSchema =
|
|
8017
|
-
name:
|
|
8018
|
-
tenant_id:
|
|
8019
|
-
status:
|
|
8020
|
-
agent_id:
|
|
8021
|
-
error:
|
|
8115
|
+
var ImportAgentItemResultSchema = z3.object({
|
|
8116
|
+
name: z3.string().min(1),
|
|
8117
|
+
tenant_id: z3.string().min(1),
|
|
8118
|
+
status: z3.enum(["created", "exists", "failed"]),
|
|
8119
|
+
agent_id: z3.string().min(1).optional(),
|
|
8120
|
+
error: z3.string().optional()
|
|
8022
8121
|
}).strict().openapi("ImportAgentItemResult");
|
|
8023
|
-
var ImportAgentsResultSchema =
|
|
8024
|
-
results:
|
|
8122
|
+
var ImportAgentsResultSchema = z3.object({
|
|
8123
|
+
results: z3.array(ImportAgentItemResultSchema)
|
|
8025
8124
|
}).strict().openapi("ImportAgentsResult");
|
|
8026
|
-
var ImportAgentsResponseSchema =
|
|
8125
|
+
var ImportAgentsResponseSchema = z3.object({
|
|
8027
8126
|
data: ImportAgentsResultSchema
|
|
8028
8127
|
}).strict().openapi("ImportAgentsResponse");
|
|
8029
|
-
var ImportSessionSnapshotSchema =
|
|
8030
|
-
session_id:
|
|
8031
|
-
tenant_id:
|
|
8032
|
-
created_by_subject:
|
|
8033
|
-
agent_name:
|
|
8034
|
-
agent_id:
|
|
8035
|
-
agent_spec:
|
|
8036
|
-
title:
|
|
8037
|
-
last_turn_id:
|
|
8038
|
-
custom:
|
|
8039
|
-
last_activity_timestamp_ms:
|
|
8040
|
-
created_at:
|
|
8041
|
-
updated_at:
|
|
8128
|
+
var ImportSessionSnapshotSchema = z3.object({
|
|
8129
|
+
session_id: z3.string().min(1),
|
|
8130
|
+
tenant_id: z3.string().min(1),
|
|
8131
|
+
created_by_subject: CreatedBySubjectSchema3,
|
|
8132
|
+
agent_name: z3.string().min(1).nullable().optional(),
|
|
8133
|
+
agent_id: z3.string().min(1).nullable().optional(),
|
|
8134
|
+
agent_spec: z3.record(z3.string(), z3.unknown()).nullable().optional(),
|
|
8135
|
+
title: z3.string().nullable(),
|
|
8136
|
+
last_turn_id: z3.string().nullable(),
|
|
8137
|
+
custom: z3.record(z3.string(), z3.unknown()).nullable(),
|
|
8138
|
+
last_activity_timestamp_ms: z3.number(),
|
|
8139
|
+
created_at: z3.string().min(1),
|
|
8140
|
+
updated_at: z3.string().min(1)
|
|
8042
8141
|
}).loose().openapi("ImportSessionSnapshot");
|
|
8043
|
-
var ImportSessionThreadSchema =
|
|
8044
|
-
thread_id:
|
|
8045
|
-
context:
|
|
8046
|
-
current_context_usage:
|
|
8047
|
-
parent:
|
|
8048
|
-
completion:
|
|
8049
|
-
agent_info:
|
|
8050
|
-
capability_state:
|
|
8142
|
+
var ImportSessionThreadSchema = z3.object({
|
|
8143
|
+
thread_id: z3.string().min(1),
|
|
8144
|
+
context: z3.array(z3.unknown()),
|
|
8145
|
+
current_context_usage: z3.unknown(),
|
|
8146
|
+
parent: z3.unknown().nullable(),
|
|
8147
|
+
completion: z3.unknown().nullable(),
|
|
8148
|
+
agent_info: z3.unknown().nullable(),
|
|
8149
|
+
capability_state: z3.record(z3.string(), z3.unknown()).nullable()
|
|
8051
8150
|
}).loose().openapi("ImportSessionThread");
|
|
8052
|
-
var ImportSessionEventSchema =
|
|
8053
|
-
id:
|
|
8054
|
-
created_at:
|
|
8151
|
+
var ImportSessionEventSchema = z3.object({
|
|
8152
|
+
id: z3.string().min(1),
|
|
8153
|
+
created_at: z3.string().min(1)
|
|
8055
8154
|
}).loose().openapi("ImportSessionEvent");
|
|
8056
|
-
var ImportSessionTurnSchema =
|
|
8057
|
-
turn_id:
|
|
8058
|
-
first_turn_id:
|
|
8059
|
-
previous_turn_id:
|
|
8060
|
-
ancestor_ids:
|
|
8061
|
-
input:
|
|
8062
|
-
state:
|
|
8063
|
-
checkpoint:
|
|
8064
|
-
custom:
|
|
8065
|
-
created_at:
|
|
8066
|
-
updated_at:
|
|
8067
|
-
threads:
|
|
8068
|
-
events:
|
|
8155
|
+
var ImportSessionTurnSchema = z3.object({
|
|
8156
|
+
turn_id: z3.string().min(1),
|
|
8157
|
+
first_turn_id: z3.string().min(1),
|
|
8158
|
+
previous_turn_id: z3.string().nullable(),
|
|
8159
|
+
ancestor_ids: z3.array(z3.string()),
|
|
8160
|
+
input: z3.array(z3.unknown()),
|
|
8161
|
+
state: z3.unknown(),
|
|
8162
|
+
checkpoint: z3.unknown(),
|
|
8163
|
+
custom: z3.record(z3.string(), z3.unknown()).nullable(),
|
|
8164
|
+
created_at: z3.string().min(1),
|
|
8165
|
+
updated_at: z3.string().min(1),
|
|
8166
|
+
threads: z3.array(ImportSessionThreadSchema),
|
|
8167
|
+
events: z3.array(ImportSessionEventSchema)
|
|
8069
8168
|
}).loose().openapi("ImportSessionTurn");
|
|
8070
|
-
var ImportSessionRequestSchema =
|
|
8169
|
+
var ImportSessionRequestSchema = z3.object({
|
|
8071
8170
|
session: ImportSessionSnapshotSchema,
|
|
8072
|
-
turns:
|
|
8171
|
+
turns: z3.array(ImportSessionTurnSchema).min(1)
|
|
8073
8172
|
}).openapi("ImportSessionRequest");
|
|
8074
|
-
var ImportSessionResultSchema =
|
|
8075
|
-
imported:
|
|
8076
|
-
session_id:
|
|
8173
|
+
var ImportSessionResultSchema = z3.object({
|
|
8174
|
+
imported: z3.boolean(),
|
|
8175
|
+
session_id: z3.string()
|
|
8077
8176
|
}).openapi("ImportSessionResult");
|
|
8078
|
-
var ImportSessionResponseSchema =
|
|
8079
|
-
var ImportSessionsCheckpointQuerySchema =
|
|
8080
|
-
tenant_id:
|
|
8177
|
+
var ImportSessionResponseSchema = z3.object({ data: ImportSessionResultSchema }).openapi("ImportSessionResponse");
|
|
8178
|
+
var ImportSessionsCheckpointQuerySchema = z3.object({
|
|
8179
|
+
tenant_id: z3.string().min(1).describe("Tenant whose imported-session watermark to read.")
|
|
8081
8180
|
}).strict().openapi("ImportSessionsCheckpointQuery");
|
|
8082
|
-
var ImportSessionsCheckpointResponseSchema =
|
|
8083
|
-
data:
|
|
8084
|
-
created_at:
|
|
8181
|
+
var ImportSessionsCheckpointResponseSchema = z3.object({
|
|
8182
|
+
data: z3.object({
|
|
8183
|
+
created_at: z3.string().nullable()
|
|
8085
8184
|
})
|
|
8086
8185
|
}).strict().openapi("ImportSessionsCheckpointResponse");
|
|
8087
8186
|
|
|
8088
8187
|
// src/schemas/errors.ts
|
|
8089
|
-
import { z as
|
|
8090
|
-
var RequestErrorResponseSchema =
|
|
8091
|
-
error:
|
|
8092
|
-
message:
|
|
8093
|
-
type:
|
|
8094
|
-
code:
|
|
8095
|
-
param:
|
|
8188
|
+
import { z as z4 } from "@hono/zod-openapi";
|
|
8189
|
+
var RequestErrorResponseSchema = z4.object({
|
|
8190
|
+
error: z4.object({
|
|
8191
|
+
message: z4.string().describe("Human-readable explanation of the failure."),
|
|
8192
|
+
type: z4.string().optional().describe("Optional error category (e.g. validation vs conflict)."),
|
|
8193
|
+
code: z4.string().nullable().optional().describe("Optional machine-readable error code; null when not applicable."),
|
|
8194
|
+
param: z4.string().nullable().optional().describe("Optional request field that caused the error; null when not field-specific.")
|
|
8096
8195
|
})
|
|
8097
8196
|
}).openapi("RequestErrorResponse");
|
|
8098
8197
|
|
|
@@ -8197,7 +8296,7 @@ var getImportSessionsCheckpointRoute = createRoute({
|
|
|
8197
8296
|
import { extractErrorLogFields } from "@truefoundry/trueforge-core/core";
|
|
8198
8297
|
import { HTTPException } from "hono/http-exception";
|
|
8199
8298
|
import { fetch as undiciFetch2 } from "undici";
|
|
8200
|
-
import { z as
|
|
8299
|
+
import { z as z7 } from "zod";
|
|
8201
8300
|
|
|
8202
8301
|
// src/http/tls.ts
|
|
8203
8302
|
import { readFileSync } from "fs";
|
|
@@ -8313,20 +8412,20 @@ function createInternalTlsDispatcher(options) {
|
|
|
8313
8412
|
}
|
|
8314
8413
|
|
|
8315
8414
|
// src/truefoundry/mapSfyAgentSkills.ts
|
|
8316
|
-
import { z as
|
|
8317
|
-
var SfyRegistryManifestSchema =
|
|
8415
|
+
import { z as z5 } from "zod";
|
|
8416
|
+
var SfyRegistryManifestSchema = z5.object({
|
|
8318
8417
|
// Display label only — not TF ResourceName / DNS-label rules.
|
|
8319
|
-
name:
|
|
8320
|
-
version:
|
|
8418
|
+
name: z5.string().min(1),
|
|
8419
|
+
version: z5.number().int().positive(),
|
|
8321
8420
|
// SFY field is `ml_repo`; TrueForge wire is `repository_name`.
|
|
8322
|
-
ml_repo:
|
|
8323
|
-
source:
|
|
8324
|
-
description:
|
|
8421
|
+
ml_repo: z5.string().min(1),
|
|
8422
|
+
source: z5.object({
|
|
8423
|
+
description: z5.string().min(1).optional()
|
|
8325
8424
|
}).optional()
|
|
8326
8425
|
});
|
|
8327
|
-
var SfyRegistrySkillSchema =
|
|
8328
|
-
latest_version:
|
|
8329
|
-
fqn:
|
|
8426
|
+
var SfyRegistrySkillSchema = z5.object({
|
|
8427
|
+
latest_version: z5.object({
|
|
8428
|
+
fqn: z5.string().min(1),
|
|
8330
8429
|
manifest: SfyRegistryManifestSchema
|
|
8331
8430
|
})
|
|
8332
8431
|
}).transform(({ latest_version }) => ({
|
|
@@ -8337,20 +8436,20 @@ var SfyRegistrySkillSchema = z4.object({
|
|
|
8337
8436
|
repository_name: latest_version.manifest.ml_repo,
|
|
8338
8437
|
version: latest_version.manifest.version
|
|
8339
8438
|
}));
|
|
8340
|
-
var SfyRegistrySkillVersionSchema =
|
|
8341
|
-
agent_skill_id:
|
|
8342
|
-
fqn:
|
|
8439
|
+
var SfyRegistrySkillVersionSchema = z5.object({
|
|
8440
|
+
agent_skill_id: z5.string().min(1),
|
|
8441
|
+
fqn: z5.string().min(1),
|
|
8343
8442
|
manifest: SfyRegistryManifestSchema
|
|
8344
8443
|
});
|
|
8345
|
-
var ResolvedAgentSkillVersionSchema =
|
|
8346
|
-
fqn:
|
|
8347
|
-
name:
|
|
8348
|
-
description:
|
|
8349
|
-
skill_md_content:
|
|
8350
|
-
presigned_url:
|
|
8444
|
+
var ResolvedAgentSkillVersionSchema = z5.object({
|
|
8445
|
+
fqn: z5.string().min(1),
|
|
8446
|
+
name: z5.string().min(1),
|
|
8447
|
+
description: z5.string().min(1),
|
|
8448
|
+
skill_md_content: z5.string().nullable().optional(),
|
|
8449
|
+
presigned_url: z5.string().min(1).optional()
|
|
8351
8450
|
});
|
|
8352
|
-
var ResolveAgentSkillVersionsResponseSchema =
|
|
8353
|
-
skills:
|
|
8451
|
+
var ResolveAgentSkillVersionsResponseSchema = z5.object({
|
|
8452
|
+
skills: z5.array(ResolvedAgentSkillVersionSchema)
|
|
8354
8453
|
});
|
|
8355
8454
|
function mapSfyRegistrySkills(rows) {
|
|
8356
8455
|
return rows.map((row) => SfyRegistrySkillSchema.parse(row));
|
|
@@ -8374,48 +8473,48 @@ function mapResolvedAgentSkillVersions(payload) {
|
|
|
8374
8473
|
}
|
|
8375
8474
|
|
|
8376
8475
|
// src/truefoundry/mapSfyMcpServers.ts
|
|
8377
|
-
import { z as
|
|
8476
|
+
import { z as z6 } from "zod";
|
|
8378
8477
|
var MCP_PROXY_BASE_URL_TEMPLATE = "{{mcpProxyBaseURL}}";
|
|
8379
|
-
var IsoInstantSchema =
|
|
8478
|
+
var IsoInstantSchema = z6.union([z6.string().min(1), z6.date()]).transform((value, ctx) => {
|
|
8380
8479
|
if (value instanceof Date) {
|
|
8381
8480
|
if (!Number.isFinite(value.getTime())) {
|
|
8382
8481
|
ctx.addIssue({ code: "custom", message: "Invalid Date" });
|
|
8383
|
-
return
|
|
8482
|
+
return z6.NEVER;
|
|
8384
8483
|
}
|
|
8385
8484
|
return value.toISOString();
|
|
8386
8485
|
}
|
|
8387
8486
|
const ms = Date.parse(value);
|
|
8388
8487
|
if (!Number.isFinite(ms)) {
|
|
8389
8488
|
ctx.addIssue({ code: "custom", message: "Invalid ISO timestamp" });
|
|
8390
|
-
return
|
|
8489
|
+
return z6.NEVER;
|
|
8391
8490
|
}
|
|
8392
8491
|
return new Date(ms).toISOString();
|
|
8393
8492
|
});
|
|
8394
|
-
var SfyMcpServerRowSchema =
|
|
8395
|
-
id:
|
|
8396
|
-
name:
|
|
8397
|
-
proxyUrl:
|
|
8493
|
+
var SfyMcpServerRowSchema = z6.object({
|
|
8494
|
+
id: z6.string().min(1),
|
|
8495
|
+
name: z6.string().min(1),
|
|
8496
|
+
proxyUrl: z6.string().min(1),
|
|
8398
8497
|
createdAt: IsoInstantSchema,
|
|
8399
8498
|
updatedAt: IsoInstantSchema,
|
|
8400
|
-
manifest:
|
|
8401
|
-
description:
|
|
8402
|
-
auth_data:
|
|
8403
|
-
type:
|
|
8499
|
+
manifest: z6.object({
|
|
8500
|
+
description: z6.string().min(1).optional(),
|
|
8501
|
+
auth_data: z6.object({
|
|
8502
|
+
type: z6.string().min(1).optional()
|
|
8404
8503
|
}).optional()
|
|
8405
8504
|
}).optional()
|
|
8406
8505
|
});
|
|
8407
|
-
var SfyMcpAuthStatusAuthenticatedSchema =
|
|
8408
|
-
var SfyMcpAuthStatusNotRequiredSchema =
|
|
8409
|
-
var SfyMcpAuthStatusRequiredSchema =
|
|
8506
|
+
var SfyMcpAuthStatusAuthenticatedSchema = z6.object({ status: z6.literal("authenticated") });
|
|
8507
|
+
var SfyMcpAuthStatusNotRequiredSchema = z6.object({ status: z6.literal("authentication_not_required") });
|
|
8508
|
+
var SfyMcpAuthStatusRequiredSchema = z6.object({ status: z6.literal("authentication_required") });
|
|
8410
8509
|
var SfyMcpAuthorizeRequiredSchema = SfyMcpAuthStatusRequiredSchema.extend({
|
|
8411
|
-
authorization_endpoint:
|
|
8510
|
+
authorization_endpoint: z6.url()
|
|
8412
8511
|
});
|
|
8413
|
-
var SfyMcpAuthStatusSchema =
|
|
8512
|
+
var SfyMcpAuthStatusSchema = z6.discriminatedUnion("status", [
|
|
8414
8513
|
SfyMcpAuthStatusAuthenticatedSchema,
|
|
8415
8514
|
SfyMcpAuthStatusRequiredSchema,
|
|
8416
8515
|
SfyMcpAuthStatusNotRequiredSchema
|
|
8417
8516
|
]);
|
|
8418
|
-
var SfyMcpAuthorizeResultSchema =
|
|
8517
|
+
var SfyMcpAuthorizeResultSchema = z6.discriminatedUnion("status", [
|
|
8419
8518
|
SfyMcpAuthStatusAuthenticatedSchema,
|
|
8420
8519
|
SfyMcpAuthorizeRequiredSchema,
|
|
8421
8520
|
SfyMcpAuthStatusNotRequiredSchema
|
|
@@ -8486,45 +8585,46 @@ var AGENT_PERMISSIONS_PATH = "v1/authorize/permissions";
|
|
|
8486
8585
|
var VEND_TOKEN_PATH = "internal/vend-token";
|
|
8487
8586
|
var AGENT_SKILLS_PAGE_SIZE = 100;
|
|
8488
8587
|
var AGENT_SKILL_RESOLVE_CHUNK_SIZE = 50;
|
|
8489
|
-
var SessionSubjectSchema =
|
|
8490
|
-
subjectId:
|
|
8491
|
-
subjectType:
|
|
8492
|
-
subjectDisplayName:
|
|
8493
|
-
subjectSlug:
|
|
8588
|
+
var SessionSubjectSchema = z7.object({
|
|
8589
|
+
subjectId: z7.string().min(1),
|
|
8590
|
+
subjectType: z7.string().min(1),
|
|
8591
|
+
subjectDisplayName: z7.string().nullable().optional(),
|
|
8592
|
+
subjectSlug: z7.string().nullable().optional()
|
|
8494
8593
|
});
|
|
8495
|
-
var GetSessionUserSchema =
|
|
8496
|
-
tenantName:
|
|
8497
|
-
roles:
|
|
8594
|
+
var GetSessionUserSchema = z7.object({
|
|
8595
|
+
tenantName: z7.string().min(1),
|
|
8596
|
+
roles: z7.array(z7.string()),
|
|
8498
8597
|
subject: SessionSubjectSchema
|
|
8499
8598
|
});
|
|
8500
|
-
var GetSessionWireSchema =
|
|
8599
|
+
var GetSessionWireSchema = z7.object({
|
|
8501
8600
|
user: GetSessionUserSchema.nullable()
|
|
8502
8601
|
});
|
|
8503
|
-
var ListResponseSchema =
|
|
8504
|
-
|
|
8505
|
-
|
|
8506
|
-
data:
|
|
8507
|
-
pagination:
|
|
8602
|
+
var ListResponseSchema = z7.union([
|
|
8603
|
+
z7.array(z7.unknown()),
|
|
8604
|
+
z7.object({
|
|
8605
|
+
data: z7.array(z7.unknown()).catch([]),
|
|
8606
|
+
pagination: z7.object({ total: z7.number().optional() }).optional()
|
|
8508
8607
|
})
|
|
8509
8608
|
]);
|
|
8510
|
-
var ServiceFoundryErrorSchema =
|
|
8511
|
-
message:
|
|
8609
|
+
var ServiceFoundryErrorSchema = z7.object({
|
|
8610
|
+
message: z7.union([z7.string(), z7.array(z7.string())]).optional()
|
|
8512
8611
|
});
|
|
8513
|
-
var PutRemoteAgentResponseSchema =
|
|
8514
|
-
agentId:
|
|
8612
|
+
var PutRemoteAgentResponseSchema = z7.object({
|
|
8613
|
+
agentId: z7.string().min(1)
|
|
8515
8614
|
});
|
|
8516
|
-
var AgentPermissionSchema =
|
|
8517
|
-
var AgentPermissionsSchema =
|
|
8518
|
-
|
|
8519
|
-
|
|
8615
|
+
var AgentPermissionSchema = z7.enum(["READ_AGENT", "USE_AGENT", "MANAGE_AGENT", "DELETE_AGENT"]);
|
|
8616
|
+
var AgentPermissionsSchema = z7.record(
|
|
8617
|
+
z7.string(),
|
|
8618
|
+
z7.array(z7.string()).transform(
|
|
8520
8619
|
(permissions) => permissions.flatMap((permission) => {
|
|
8521
8620
|
const parsed = AgentPermissionSchema.safeParse(permission);
|
|
8522
8621
|
return parsed.success ? [parsed.data] : [];
|
|
8523
8622
|
})
|
|
8524
8623
|
)
|
|
8525
8624
|
);
|
|
8526
|
-
var VendTokenResponseSchema =
|
|
8527
|
-
|
|
8625
|
+
var VendTokenResponseSchema = z7.object({
|
|
8626
|
+
subjectToken: z7.string().min(1),
|
|
8627
|
+
actorToken: z7.string().min(1)
|
|
8528
8628
|
});
|
|
8529
8629
|
var TFY_ASSUME_USER_HEADER = "x-tfy-assume-user";
|
|
8530
8630
|
var TFY_SYSTEM_ASSUME_SUBJECT = "truefoundry";
|
|
@@ -8867,7 +8967,8 @@ var TrueFoundryServiceFoundryServerClient = class {
|
|
|
8867
8967
|
return parsed.data;
|
|
8868
8968
|
}
|
|
8869
8969
|
/**
|
|
8870
|
-
* Exchange a TrueFoundry API key for
|
|
8970
|
+
* Exchange a TrueFoundry API key for dual agent-scoped tokens.
|
|
8971
|
+
* Wire `actorToken` is the agent identity (`asAgent`); wire `subjectToken` is the user with agent in `act` (`asUser`).
|
|
8871
8972
|
* Authenticated with the server API key, not the user bearer.
|
|
8872
8973
|
*/
|
|
8873
8974
|
async vendToken(input) {
|
|
@@ -8893,7 +8994,7 @@ var TrueFoundryServiceFoundryServerClient = class {
|
|
|
8893
8994
|
cause: parsed.error
|
|
8894
8995
|
});
|
|
8895
8996
|
}
|
|
8896
|
-
return parsed.data
|
|
8997
|
+
return parsed.data;
|
|
8897
8998
|
}
|
|
8898
8999
|
#parseListResponse(payload) {
|
|
8899
9000
|
const parsed = ListResponseSchema.safeParse(payload);
|
|
@@ -9021,6 +9122,7 @@ function createAgentImportRouter(deps) {
|
|
|
9021
9122
|
const created = await agentStore.createAgent({
|
|
9022
9123
|
tenant_id: agent.tenant_id,
|
|
9023
9124
|
name: agent.name,
|
|
9125
|
+
description: agent.description ?? agent.name,
|
|
9024
9126
|
manifest: agent.manifest,
|
|
9025
9127
|
external_id: null,
|
|
9026
9128
|
created_by_subject: agent.created_by_subject
|
|
@@ -9084,6 +9186,7 @@ function createAgentImportRouter(deps) {
|
|
|
9084
9186
|
|
|
9085
9187
|
// src/apis/agents.ts
|
|
9086
9188
|
import { OpenAPIHono as OpenAPIHono2 } from "@hono/zod-openapi";
|
|
9189
|
+
import { InvalidPageTokenError } from "@truefoundry/trueforge-core/agent-session";
|
|
9087
9190
|
|
|
9088
9191
|
// src/auth/identity.ts
|
|
9089
9192
|
init_config();
|
|
@@ -9120,11 +9223,15 @@ function asTrueFoundryRequestContext(context) {
|
|
|
9120
9223
|
}
|
|
9121
9224
|
return context;
|
|
9122
9225
|
}
|
|
9226
|
+
function accessTokensFromCaller(context) {
|
|
9227
|
+
const resolve3 = callerAccessToken(context);
|
|
9228
|
+
return { asAgent: resolve3, asUser: resolve3 };
|
|
9229
|
+
}
|
|
9123
9230
|
function agentAccessToken(input) {
|
|
9124
9231
|
const { client, requestContext: context } = input;
|
|
9125
9232
|
const agentId = requireTrueFoundryAgentExternalId(input.agent);
|
|
9126
9233
|
let pending;
|
|
9127
|
-
|
|
9234
|
+
const vended = () => {
|
|
9128
9235
|
if (pending === void 0) {
|
|
9129
9236
|
input.logger.info("Exchanging user context for agent access token", {
|
|
9130
9237
|
subject: context.subject.id,
|
|
@@ -9137,6 +9244,10 @@ function agentAccessToken(input) {
|
|
|
9137
9244
|
}
|
|
9138
9245
|
return pending;
|
|
9139
9246
|
};
|
|
9247
|
+
return {
|
|
9248
|
+
asAgent: async () => (await vended()).actorToken,
|
|
9249
|
+
asUser: async () => (await vended()).subjectToken
|
|
9250
|
+
};
|
|
9140
9251
|
}
|
|
9141
9252
|
function callerAccessToken(context) {
|
|
9142
9253
|
if (context.user_credential === null) {
|
|
@@ -9149,7 +9260,7 @@ function callerAccessToken(context) {
|
|
|
9149
9260
|
}
|
|
9150
9261
|
function accessTokenForRequest(input) {
|
|
9151
9262
|
if (input.agent === void 0) {
|
|
9152
|
-
return
|
|
9263
|
+
return accessTokensFromCaller(input.requestContext);
|
|
9153
9264
|
}
|
|
9154
9265
|
const agentId = requireTrueFoundryAgentExternalId(input.agent);
|
|
9155
9266
|
const cache = input.requestContext[accessTokenCache];
|
|
@@ -9157,14 +9268,14 @@ function accessTokenForRequest(input) {
|
|
|
9157
9268
|
if (existing !== void 0) {
|
|
9158
9269
|
return existing;
|
|
9159
9270
|
}
|
|
9160
|
-
const
|
|
9271
|
+
const tokens = agentAccessToken({
|
|
9161
9272
|
client: input.client,
|
|
9162
9273
|
requestContext: input.requestContext,
|
|
9163
9274
|
agent: input.agent,
|
|
9164
9275
|
logger: input.logger
|
|
9165
9276
|
});
|
|
9166
|
-
cache.set(agentId,
|
|
9167
|
-
return
|
|
9277
|
+
cache.set(agentId, tokens);
|
|
9278
|
+
return tokens;
|
|
9168
9279
|
}
|
|
9169
9280
|
|
|
9170
9281
|
// src/auth/identity.ts
|
|
@@ -9230,67 +9341,44 @@ init_agentStore();
|
|
|
9230
9341
|
|
|
9231
9342
|
// src/routes/agentRoutes.ts
|
|
9232
9343
|
import { createRoute as createRoute2, z as z8 } from "@hono/zod-openapi";
|
|
9233
|
-
|
|
9234
|
-
// src/schemas/agent.ts
|
|
9235
9344
|
init_common();
|
|
9236
|
-
|
|
9237
|
-
|
|
9238
|
-
var
|
|
9239
|
-
|
|
9240
|
-
|
|
9241
|
-
|
|
9242
|
-
|
|
9243
|
-
manifest: AgentSpecSchema5
|
|
9244
|
-
}).strict().openapi("CreateAgentRequest");
|
|
9245
|
-
var UpdateAgentRequestSchema = z7.object({
|
|
9246
|
-
manifest: AgentSpecSchema5
|
|
9247
|
-
}).strict().openapi("UpdateAgentRequest");
|
|
9248
|
-
var AgentSchema = z7.object({
|
|
9249
|
-
id: z7.string().min(1).describe("Immutable server-generated agent identifier."),
|
|
9250
|
-
name: NameSchema,
|
|
9251
|
-
manifest: AgentSpecSchema5,
|
|
9252
|
-
created_by_subject: CreatedBySubjectSchema3
|
|
9253
|
-
}).strict().openapi("Agent");
|
|
9254
|
-
var GetAgentResponseSchema = z7.object({ data: AgentSchema }).openapi("GetAgentResponse");
|
|
9255
|
-
var ListAgentsResponseSchema = z7.object({ data: z7.array(AgentSchema) }).openapi("ListAgentsResponse");
|
|
9256
|
-
var DeleteAgentResponseSchema = z7.object({}).openapi("DeleteAgentResponse");
|
|
9257
|
-
var AgentCodeSnippetSampleCodeSchema = z7.object({
|
|
9258
|
-
stream: z7.string().describe("SDK sample that streams turn events."),
|
|
9259
|
-
non_stream: z7.string().describe("SDK sample that creates a turn without streaming.")
|
|
9260
|
-
}).strict().openapi("AgentCodeSnippetSampleCode");
|
|
9261
|
-
var AgentCodeSnippetSchema = z7.object({
|
|
9262
|
-
label_name: z7.string().min(1),
|
|
9263
|
-
language: z7.string().min(1),
|
|
9264
|
-
icon: z7.url(),
|
|
9265
|
-
sample_code: AgentCodeSnippetSampleCodeSchema
|
|
9266
|
-
}).strict().openapi("AgentCodeSnippet");
|
|
9267
|
-
var AgentCodeSnippetsSchema = z7.object({
|
|
9268
|
-
base_url: z7.url().describe("Public base URL for the TrueForge SDK `baseUrl`."),
|
|
9269
|
-
snippets: z7.array(AgentCodeSnippetSchema)
|
|
9270
|
-
}).strict().openapi("AgentCodeSnippets");
|
|
9271
|
-
var GetAgentCodeSnippetsResponseSchema = z7.object({ data: AgentCodeSnippetsSchema }).openapi("GetAgentCodeSnippetsResponse");
|
|
9272
|
-
var GetAgentCodeSnippetsRequestQuerySchema = z7.object({
|
|
9273
|
-
base_url: z7.url().optional().describe(
|
|
9274
|
-
"Public SDK base URL from the browser. When omitted, derived from the request origin and PUBLIC_BASE_URL."
|
|
9275
|
-
)
|
|
9276
|
-
}).strict().openapi("GetAgentCodeSnippetsRequestQuery");
|
|
9345
|
+
|
|
9346
|
+
// src/routes/fernExtensions.ts
|
|
9347
|
+
var TOKEN_PAGINATION = {
|
|
9348
|
+
cursor: "$request.page_token",
|
|
9349
|
+
next_cursor: "$response.pagination.next_page_token",
|
|
9350
|
+
results: "$response.data"
|
|
9351
|
+
};
|
|
9277
9352
|
|
|
9278
9353
|
// src/routes/agentRoutes.ts
|
|
9279
9354
|
var AgentIdParamsSchema = z8.object({
|
|
9280
9355
|
agent_id: z8.string().min(1).max(64).describe("Immutable agent identifier.")
|
|
9281
9356
|
});
|
|
9357
|
+
var ListAgentsQuerySchema = z8.object({
|
|
9358
|
+
limit: z8.coerce.number().int().min(1).max(AGENTS_PAGE_LIMIT).optional().default(AGENTS_PAGE_DEFAULT).describe(`Page size. Defaults to ${String(AGENTS_PAGE_DEFAULT)}, max ${String(AGENTS_PAGE_LIMIT)}.`),
|
|
9359
|
+
page_token: z8.string().optional().describe("Opaque token from a previous response `next_page_token`."),
|
|
9360
|
+
agent_name: z8.string().trim().min(1).optional().describe("Case-insensitive substring match on agent name.")
|
|
9361
|
+
}).openapi("ListAgentsQuery");
|
|
9282
9362
|
var listAgentsRoute = createRoute2({
|
|
9283
9363
|
method: "get",
|
|
9284
9364
|
path: "/",
|
|
9285
9365
|
tags: ["Agents" /* AGENTS */],
|
|
9286
9366
|
summary: "List agents",
|
|
9287
|
-
description: "
|
|
9367
|
+
description: "List configured agents for the tenant, ordered by name. Optional `agent_name` filters by substring.",
|
|
9288
9368
|
"x-fern-sdk-group-name": ["agents"],
|
|
9289
9369
|
"x-fern-sdk-method-name": "list",
|
|
9370
|
+
"x-fern-pagination": TOKEN_PAGINATION,
|
|
9371
|
+
request: {
|
|
9372
|
+
query: ListAgentsQuerySchema
|
|
9373
|
+
},
|
|
9290
9374
|
responses: {
|
|
9291
9375
|
200: {
|
|
9292
9376
|
content: { "application/json": { schema: ListAgentsResponseSchema } },
|
|
9293
|
-
description: "
|
|
9377
|
+
description: "Paginated matching agents."
|
|
9378
|
+
},
|
|
9379
|
+
400: {
|
|
9380
|
+
content: { "application/json": { schema: RequestErrorResponseSchema } },
|
|
9381
|
+
description: "Invalid query parameters or page token."
|
|
9294
9382
|
},
|
|
9295
9383
|
401: {
|
|
9296
9384
|
content: { "application/json": { schema: RequestErrorResponseSchema } },
|
|
@@ -9408,7 +9496,7 @@ var putAgentRoute = createRoute2({
|
|
|
9408
9496
|
path: "/{agent_id}",
|
|
9409
9497
|
tags: ["Agents" /* AGENTS */],
|
|
9410
9498
|
summary: "Update an agent",
|
|
9411
|
-
description: "
|
|
9499
|
+
description: "Update an existing agent by immutable id.",
|
|
9412
9500
|
"x-fern-sdk-group-name": ["agents"],
|
|
9413
9501
|
"x-fern-sdk-method-name": "update",
|
|
9414
9502
|
request: {
|
|
@@ -9614,6 +9702,44 @@ async function checkSnapshotStatus({
|
|
|
9614
9702
|
}
|
|
9615
9703
|
|
|
9616
9704
|
// src/runtime/sessionResources.ts
|
|
9705
|
+
var X_TFY_METADATA = "x-tfy-metadata";
|
|
9706
|
+
var TFG_METADATA_PREFIX = "tfg";
|
|
9707
|
+
function buildGatewayMetadata(input) {
|
|
9708
|
+
const metadata = {
|
|
9709
|
+
[`${TFG_METADATA_PREFIX}.session_id`]: input.session.session_id,
|
|
9710
|
+
[`${TFG_METADATA_PREFIX}.turn_id`]: input.turnId
|
|
9711
|
+
};
|
|
9712
|
+
const { agent } = input.session;
|
|
9713
|
+
if (agent.type === "reference") {
|
|
9714
|
+
metadata[`${TFG_METADATA_PREFIX}.agent_id`] = agent.id;
|
|
9715
|
+
if (agent.name !== null) {
|
|
9716
|
+
metadata[`${TFG_METADATA_PREFIX}.agent_name`] = agent.name;
|
|
9717
|
+
}
|
|
9718
|
+
}
|
|
9719
|
+
return metadata;
|
|
9720
|
+
}
|
|
9721
|
+
function gatewayMetadataHeaders(metadata) {
|
|
9722
|
+
if (Object.keys(metadata).length === 0) {
|
|
9723
|
+
return {};
|
|
9724
|
+
}
|
|
9725
|
+
return { [X_TFY_METADATA]: JSON.stringify(metadata) };
|
|
9726
|
+
}
|
|
9727
|
+
function withGatewayMetadataHeaders(input) {
|
|
9728
|
+
const { headers, metadataHeaders } = input;
|
|
9729
|
+
if (Object.keys(metadataHeaders).length === 0) {
|
|
9730
|
+
return headers;
|
|
9731
|
+
}
|
|
9732
|
+
if (typeof headers !== "function") {
|
|
9733
|
+
return { ...headers, ...metadataHeaders };
|
|
9734
|
+
}
|
|
9735
|
+
return async () => {
|
|
9736
|
+
const result = await headers();
|
|
9737
|
+
if ("authRequired" in result) {
|
|
9738
|
+
return result;
|
|
9739
|
+
}
|
|
9740
|
+
return { headers: { ...result.headers, ...metadataHeaders } };
|
|
9741
|
+
};
|
|
9742
|
+
}
|
|
9617
9743
|
function parseModelFqn(name) {
|
|
9618
9744
|
const slash = name.indexOf("/");
|
|
9619
9745
|
if (slash <= 0 || slash === name.length - 1) {
|
|
@@ -9794,11 +9920,19 @@ async function agentIfAccessible(input) {
|
|
|
9794
9920
|
async function listAccessibleAgents(input) {
|
|
9795
9921
|
const access = await input.authorizer.listAgentAccess({ context: input.context, action: input.action });
|
|
9796
9922
|
if (access.kind === "all") {
|
|
9797
|
-
return input.store.listAgents({
|
|
9923
|
+
return input.store.listAgents({
|
|
9924
|
+
tenant_id: input.context.tenant_id,
|
|
9925
|
+
agent_name: input.agent_name,
|
|
9926
|
+
limit: input.limit,
|
|
9927
|
+
page_token: input.page_token
|
|
9928
|
+
});
|
|
9798
9929
|
}
|
|
9799
9930
|
return input.store.listAgents({
|
|
9800
9931
|
tenant_id: input.context.tenant_id,
|
|
9801
|
-
external_ids: access.agent_external_ids
|
|
9932
|
+
external_ids: access.agent_external_ids,
|
|
9933
|
+
agent_name: input.agent_name,
|
|
9934
|
+
limit: input.limit,
|
|
9935
|
+
page_token: input.page_token
|
|
9802
9936
|
});
|
|
9803
9937
|
}
|
|
9804
9938
|
async function resolveManagedAgentIds(input) {
|
|
@@ -9807,11 +9941,14 @@ async function resolveManagedAgentIds(input) {
|
|
|
9807
9941
|
if (access.kind === "all") {
|
|
9808
9942
|
return [];
|
|
9809
9943
|
}
|
|
9810
|
-
const
|
|
9944
|
+
const { data } = await store.listAgents({
|
|
9811
9945
|
tenant_id: context.tenant_id,
|
|
9812
|
-
external_ids: access.agent_external_ids
|
|
9946
|
+
external_ids: access.agent_external_ids,
|
|
9947
|
+
agent_name: void 0,
|
|
9948
|
+
limit: void 0,
|
|
9949
|
+
page_token: void 0
|
|
9813
9950
|
});
|
|
9814
|
-
return
|
|
9951
|
+
return data.map((agent) => agent.id);
|
|
9815
9952
|
}
|
|
9816
9953
|
async function canReadAgentBoundResource(input) {
|
|
9817
9954
|
const { store, context, authorizer, created_by_subject_id, agent_id } = input;
|
|
@@ -9825,12 +9962,15 @@ async function canReadAgentBoundResource(input) {
|
|
|
9825
9962
|
return managedAgentIds.includes(agent_id);
|
|
9826
9963
|
}
|
|
9827
9964
|
|
|
9965
|
+
// src/apis/agentCodeSnippets.ts
|
|
9966
|
+
init_config();
|
|
9967
|
+
|
|
9828
9968
|
// src/apis/codesnippet-templates/typescript.ts
|
|
9829
9969
|
var typescriptStreamTemplate = `// npm install @truefoundry/trueforge-sdk
|
|
9830
9970
|
import { TrueForge, TrueForgeApi, isEventDelta, mergeEventDelta } from "@truefoundry/trueforge-sdk";
|
|
9831
9971
|
|
|
9832
9972
|
const client = new TrueForge({
|
|
9833
|
-
baseUrl: {{baseUrl}},
|
|
9973
|
+
baseUrl: {{baseUrl}},{{tokenLine}}
|
|
9834
9974
|
});
|
|
9835
9975
|
|
|
9836
9976
|
const { data: session } = await client.sessions.create({
|
|
@@ -9857,7 +9997,7 @@ var typescriptNonStreamTemplate = `// npm install @truefoundry/trueforge-sdk
|
|
|
9857
9997
|
import { TrueForge } from "@truefoundry/trueforge-sdk";
|
|
9858
9998
|
|
|
9859
9999
|
const client = new TrueForge({
|
|
9860
|
-
baseUrl: {{baseUrl}},
|
|
10000
|
+
baseUrl: {{baseUrl}},{{tokenLine}}
|
|
9861
10001
|
});
|
|
9862
10002
|
|
|
9863
10003
|
const { data: session } = await client.sessions.create({
|
|
@@ -9877,10 +10017,12 @@ console.log(latest.state);
|
|
|
9877
10017
|
|
|
9878
10018
|
// src/apis/agentCodeSnippets.ts
|
|
9879
10019
|
var TYPESCRIPT_ICON = "https://assets.production.truefoundry.com/typescript.svg";
|
|
10020
|
+
var TOKEN_LINE = '\n token: "USER_API_KEY",';
|
|
9880
10021
|
function renderSnippetTemplate(template, vars) {
|
|
9881
10022
|
const literals = {
|
|
9882
10023
|
agentName: JSON.stringify(vars.agentName),
|
|
9883
|
-
baseUrl: JSON.stringify(vars.baseUrl)
|
|
10024
|
+
baseUrl: JSON.stringify(vars.baseUrl),
|
|
10025
|
+
tokenLine: vars.includeToken ? TOKEN_LINE : ""
|
|
9884
10026
|
};
|
|
9885
10027
|
return template.replaceAll(/\{\{(\w+)\}\}/g, (match, key) => {
|
|
9886
10028
|
const value = literals[key];
|
|
@@ -9891,6 +10033,8 @@ function renderSnippetTemplate(template, vars) {
|
|
|
9891
10033
|
});
|
|
9892
10034
|
}
|
|
9893
10035
|
function buildAgentCodeSnippets(input) {
|
|
10036
|
+
const includeToken = getTrueForgeAuthMode() !== "standalone" /* Standalone */;
|
|
10037
|
+
const vars = { ...input, includeToken };
|
|
9894
10038
|
return {
|
|
9895
10039
|
base_url: input.baseUrl,
|
|
9896
10040
|
snippets: [
|
|
@@ -9899,8 +10043,8 @@ function buildAgentCodeSnippets(input) {
|
|
|
9899
10043
|
language: "typescript",
|
|
9900
10044
|
icon: TYPESCRIPT_ICON,
|
|
9901
10045
|
sample_code: {
|
|
9902
|
-
stream: renderSnippetTemplate(typescriptStreamTemplate,
|
|
9903
|
-
non_stream: renderSnippetTemplate(typescriptNonStreamTemplate,
|
|
10046
|
+
stream: renderSnippetTemplate(typescriptStreamTemplate, vars),
|
|
10047
|
+
non_stream: renderSnippetTemplate(typescriptNonStreamTemplate, vars)
|
|
9904
10048
|
}
|
|
9905
10049
|
}
|
|
9906
10050
|
]
|
|
@@ -9912,6 +10056,7 @@ function toWireAgent(record) {
|
|
|
9912
10056
|
return {
|
|
9913
10057
|
id: record.id,
|
|
9914
10058
|
name: record.name,
|
|
10059
|
+
description: record.description,
|
|
9915
10060
|
manifest: record.manifest,
|
|
9916
10061
|
created_by_subject: record.created_by_subject
|
|
9917
10062
|
};
|
|
@@ -9936,14 +10081,25 @@ async function validateManifest({
|
|
|
9936
10081
|
}
|
|
9937
10082
|
function createAgentsRouter(deps) {
|
|
9938
10083
|
const listHandler = async (c) => {
|
|
10084
|
+
const { limit, page_token: pageToken, agent_name: agentName } = c.req.valid("query");
|
|
9939
10085
|
const requestContext = deps.resolveRequestContext(c);
|
|
9940
|
-
|
|
9941
|
-
|
|
9942
|
-
|
|
9943
|
-
|
|
9944
|
-
|
|
9945
|
-
|
|
9946
|
-
|
|
10086
|
+
try {
|
|
10087
|
+
const { data, pagination } = await listAccessibleAgents({
|
|
10088
|
+
store: deps.resolveAgentStore(c),
|
|
10089
|
+
context: requestContext,
|
|
10090
|
+
authorizer: deps.authorizer,
|
|
10091
|
+
action: "read",
|
|
10092
|
+
agent_name: agentName,
|
|
10093
|
+
limit,
|
|
10094
|
+
page_token: pageToken
|
|
10095
|
+
});
|
|
10096
|
+
return c.json({ data: data.map(toWireAgent), pagination }, 200);
|
|
10097
|
+
} catch (error) {
|
|
10098
|
+
if (error instanceof InvalidPageTokenError) {
|
|
10099
|
+
return c.json({ error: { message: error.message } }, 400);
|
|
10100
|
+
}
|
|
10101
|
+
throw error;
|
|
10102
|
+
}
|
|
9947
10103
|
};
|
|
9948
10104
|
const createHandler = async (c) => {
|
|
9949
10105
|
const body = c.req.valid("json");
|
|
@@ -9960,6 +10116,7 @@ function createAgentsRouter(deps) {
|
|
|
9960
10116
|
const record = await deps.resolveAgentStore(c).createAgent({
|
|
9961
10117
|
tenant_id: requestContext.tenant_id,
|
|
9962
10118
|
name: body.name,
|
|
10119
|
+
description: body.description,
|
|
9963
10120
|
manifest,
|
|
9964
10121
|
external_id: null,
|
|
9965
10122
|
created_by_subject: createdBySubjectFromRequestContext(requestContext)
|
|
@@ -10055,6 +10212,7 @@ function createAgentsRouter(deps) {
|
|
|
10055
10212
|
const record = await deps.resolveAgentStore(c).updateAgent({
|
|
10056
10213
|
tenant_id: requestContext.tenant_id,
|
|
10057
10214
|
id: agentId,
|
|
10215
|
+
...body.description === void 0 ? {} : { description: body.description },
|
|
10058
10216
|
manifest
|
|
10059
10217
|
});
|
|
10060
10218
|
if (record === void 0) {
|
|
@@ -10751,7 +10909,8 @@ import { z as z16 } from "@hono/zod-openapi";
|
|
|
10751
10909
|
// src/schemas/mcpServer.ts
|
|
10752
10910
|
init_common();
|
|
10753
10911
|
import { z as z15 } from "@hono/zod-openapi";
|
|
10754
|
-
var
|
|
10912
|
+
var MCP_SERVER_TYPES = ["remote", "truefoundry"];
|
|
10913
|
+
var McpServerTypeSchema = z15.enum(MCP_SERVER_TYPES).openapi("MCPServerType");
|
|
10755
10914
|
var McpServerHeaderAuthSchema = z15.object({
|
|
10756
10915
|
type: z15.literal("header").describe("Authenticate with static HTTP headers."),
|
|
10757
10916
|
headers: z15.record(z15.string().min(1), z15.string().min(1)).refine((headers) => Object.keys(headers).length > 0, {
|
|
@@ -10765,14 +10924,21 @@ var McpServerDcrAuthSchema = z15.object({
|
|
|
10765
10924
|
}).strict().openapi("MCPServerDcrAuth");
|
|
10766
10925
|
var McpServerManifestAuthSchema = z15.discriminatedUnion("type", [McpServerHeaderAuthSchema, McpServerDcrAuthSchema]).describe("Optional auth settings. Omit when the server needs no credentials.").openapi("MCPServerManifestAuth");
|
|
10767
10926
|
var McpServerDescriptionSchema = z15.string().trim().min(1).describe("Concise summary of what this MCP server provides.");
|
|
10768
|
-
var
|
|
10769
|
-
type: McpServerTypeSchema,
|
|
10927
|
+
var RemoteMcpServerManifestSchema = z15.object({
|
|
10928
|
+
type: z15.literal(McpServerTypeSchema.enum.remote),
|
|
10770
10929
|
name: NameSchema,
|
|
10771
|
-
url: z15.url().describe("MCP endpoint URL.
|
|
10930
|
+
url: z15.url().describe("MCP endpoint URL."),
|
|
10772
10931
|
description: McpServerDescriptionSchema,
|
|
10773
10932
|
auth: McpServerManifestAuthSchema.optional()
|
|
10774
|
-
}).strict();
|
|
10775
|
-
var
|
|
10933
|
+
}).strict().openapi("RemoteMCPServerManifest");
|
|
10934
|
+
var TrueFoundryMcpServerManifestSchema = z15.object({
|
|
10935
|
+
type: z15.literal(McpServerTypeSchema.enum.truefoundry),
|
|
10936
|
+
name: NameSchema,
|
|
10937
|
+
url: z15.url().describe("Resolved AI Gateway proxy URL for this TrueFoundry-managed MCP server."),
|
|
10938
|
+
description: McpServerDescriptionSchema,
|
|
10939
|
+
auth: McpServerManifestAuthSchema.optional()
|
|
10940
|
+
}).strict().openapi("TrueFoundryMCPServerManifest");
|
|
10941
|
+
var McpServerManifestSchema = z15.discriminatedUnion("type", [RemoteMcpServerManifestSchema, TrueFoundryMcpServerManifestSchema]).openapi("MCPServerManifest");
|
|
10776
10942
|
var McpAuthStatusSchema = z15.object({
|
|
10777
10943
|
status: z15.enum(["authenticated", "auth_required", "not_required"]).describe("Current auth state for this MCP server."),
|
|
10778
10944
|
authorization_url: z15.url().optional().describe("When auth is required, this contains the URL to redirect the user to for authorization.")
|
|
@@ -12415,7 +12581,7 @@ function createPermissionsRouter(deps) {
|
|
|
12415
12581
|
// src/apis/schedules.ts
|
|
12416
12582
|
import { OpenAPIHono as OpenAPIHono11 } from "@hono/zod-openapi";
|
|
12417
12583
|
import {
|
|
12418
|
-
InvalidPageTokenError
|
|
12584
|
+
InvalidPageTokenError as InvalidPageTokenError2
|
|
12419
12585
|
} from "@truefoundry/trueforge-core/agent-session";
|
|
12420
12586
|
|
|
12421
12587
|
// src/controller/scheduleDispatch.ts
|
|
@@ -12629,15 +12795,6 @@ init_scheduleStore();
|
|
|
12629
12795
|
init_common();
|
|
12630
12796
|
import { createRoute as createRoute10, z as z25 } from "@hono/zod-openapi";
|
|
12631
12797
|
init_schedule();
|
|
12632
|
-
|
|
12633
|
-
// src/routes/fernExtensions.ts
|
|
12634
|
-
var TOKEN_PAGINATION = {
|
|
12635
|
-
cursor: "$request.page_token",
|
|
12636
|
-
next_cursor: "$response.pagination.next_page_token",
|
|
12637
|
-
results: "$response.data"
|
|
12638
|
-
};
|
|
12639
|
-
|
|
12640
|
-
// src/routes/scheduleRoutes.ts
|
|
12641
12798
|
var ScheduleIdParamsSchema = z25.object({
|
|
12642
12799
|
schedule_id: z25.string().min(1).max(64).describe("Immutable schedule identifier.")
|
|
12643
12800
|
});
|
|
@@ -12947,7 +13104,7 @@ import { z as z26 } from "@hono/zod-openapi";
|
|
|
12947
13104
|
import {
|
|
12948
13105
|
EventType,
|
|
12949
13106
|
SessionEventItemSchema,
|
|
12950
|
-
TokenPaginationSchema as
|
|
13107
|
+
TokenPaginationSchema as TokenPaginationSchema3,
|
|
12951
13108
|
TurnCreatedEventSchema,
|
|
12952
13109
|
TurnDoneEventSchema
|
|
12953
13110
|
} from "@truefoundry/trueforge-core/agent-session";
|
|
@@ -12988,13 +13145,13 @@ var ListSessionEventsRequestQuerySchema = z26.object({
|
|
|
12988
13145
|
}).openapi("ListSessionEventsRequestQuery");
|
|
12989
13146
|
var ListSessionEventsResponseSchema = z26.object({
|
|
12990
13147
|
data: z26.array(SessionEventItemSchema),
|
|
12991
|
-
pagination:
|
|
13148
|
+
pagination: TokenPaginationSchema3
|
|
12992
13149
|
}).openapi("ListSessionEventsResponse");
|
|
12993
13150
|
|
|
12994
13151
|
// src/schemas/turn.ts
|
|
12995
13152
|
init_common();
|
|
12996
13153
|
import { z as z27 } from "@hono/zod-openapi";
|
|
12997
|
-
import { SessionEventSchema, TokenPaginationSchema as
|
|
13154
|
+
import { SessionEventSchema, TokenPaginationSchema as TokenPaginationSchema4, TurnSchema } from "@truefoundry/trueforge-core/agent-session";
|
|
12998
13155
|
import { CreateTurnRequestSchema, TurnSchema as TurnSchema2 } from "@truefoundry/trueforge-core/agent-session";
|
|
12999
13156
|
var SubscribeTurnQuerySchema = z27.object({
|
|
13000
13157
|
// Query strings need coerce; map null/'' to undefined first so Number(null)→0
|
|
@@ -13017,7 +13174,7 @@ var GetTurnResponseSchema = z27.object({
|
|
|
13017
13174
|
}).openapi("GetTurnResponse");
|
|
13018
13175
|
var ListTurnsResponseSchema = z27.object({
|
|
13019
13176
|
data: z27.array(TurnSchema),
|
|
13020
|
-
pagination:
|
|
13177
|
+
pagination: TokenPaginationSchema4
|
|
13021
13178
|
}).openapi("ListTurnsResponse");
|
|
13022
13179
|
var ListTurnEventsRequestQuerySchema = z27.object({
|
|
13023
13180
|
limit: z27.coerce.number().int().min(1).max(EVENTS_PAGE_LIMIT).optional().default(EVENTS_PAGE_LIMIT).describe(`Page size. Defaults to ${String(EVENTS_PAGE_LIMIT)}, max ${String(EVENTS_PAGE_LIMIT)}.`),
|
|
@@ -13026,7 +13183,7 @@ var ListTurnEventsRequestQuerySchema = z27.object({
|
|
|
13026
13183
|
}).openapi("ListTurnEventsRequestQuery");
|
|
13027
13184
|
var ListTurnEventsResponseSchema = z27.object({
|
|
13028
13185
|
data: z27.array(SessionEventSchema),
|
|
13029
|
-
pagination:
|
|
13186
|
+
pagination: TokenPaginationSchema4
|
|
13030
13187
|
}).openapi("ListTurnEventsResponse");
|
|
13031
13188
|
var DownloadSandboxFileRequestQuerySchema = z27.object({
|
|
13032
13189
|
path: z27.string().min(1).describe(
|
|
@@ -13046,7 +13203,7 @@ import {
|
|
|
13046
13203
|
SessionSchema,
|
|
13047
13204
|
SessionSourceScheduleSchema,
|
|
13048
13205
|
SessionSourceTypeSchema,
|
|
13049
|
-
TokenPaginationSchema as
|
|
13206
|
+
TokenPaginationSchema as TokenPaginationSchema5
|
|
13050
13207
|
} from "@truefoundry/trueforge-core/agent-session";
|
|
13051
13208
|
|
|
13052
13209
|
// src/schemas/deepObjectQuery.ts
|
|
@@ -13189,7 +13346,7 @@ var GetSessionResponseSchema = z29.object({
|
|
|
13189
13346
|
}).openapi("GetSessionResponse");
|
|
13190
13347
|
var ListSessionsResponseSchema = z29.object({
|
|
13191
13348
|
data: z29.array(SessionSchema),
|
|
13192
|
-
pagination:
|
|
13349
|
+
pagination: TokenPaginationSchema5
|
|
13193
13350
|
}).openapi("ListSessionsResponse");
|
|
13194
13351
|
|
|
13195
13352
|
// src/routes/sessionRoutes.ts
|
|
@@ -14011,10 +14168,13 @@ function createTurnResolver(deps) {
|
|
|
14011
14168
|
modelProviderStore,
|
|
14012
14169
|
logger,
|
|
14013
14170
|
signal,
|
|
14014
|
-
tenant_id,
|
|
14015
14171
|
userRef,
|
|
14016
|
-
|
|
14172
|
+
session,
|
|
14173
|
+
turnId
|
|
14017
14174
|
} = deps;
|
|
14175
|
+
const tenant_id = session.tenant_id;
|
|
14176
|
+
const sessionId = session.session_id;
|
|
14177
|
+
const metadataHeaders = isTrueFoundryModeEnabled() ? gatewayMetadataHeaders(buildGatewayMetadata({ session, turnId })) : {};
|
|
14018
14178
|
return new TurnResourceResolver({
|
|
14019
14179
|
llm: async (name) => {
|
|
14020
14180
|
const resolved = await getModelDetails({
|
|
@@ -14024,7 +14184,10 @@ function createTurnResolver(deps) {
|
|
|
14024
14184
|
});
|
|
14025
14185
|
return {
|
|
14026
14186
|
modelClient: new VercelAILLM({
|
|
14027
|
-
providerConfig:
|
|
14187
|
+
providerConfig: {
|
|
14188
|
+
...resolved.providerConfig,
|
|
14189
|
+
headers: { ...resolved.providerConfig.headers, ...metadataHeaders }
|
|
14190
|
+
},
|
|
14028
14191
|
logger,
|
|
14029
14192
|
signal
|
|
14030
14193
|
}),
|
|
@@ -14044,7 +14207,13 @@ function createTurnResolver(deps) {
|
|
|
14044
14207
|
message: `Unknown MCP server "${name}" \u2014 not configured`
|
|
14045
14208
|
});
|
|
14046
14209
|
}
|
|
14047
|
-
return
|
|
14210
|
+
return {
|
|
14211
|
+
url: connection.url,
|
|
14212
|
+
headers: withGatewayMetadataHeaders({
|
|
14213
|
+
headers: connection.headers,
|
|
14214
|
+
metadataHeaders
|
|
14215
|
+
})
|
|
14216
|
+
};
|
|
14048
14217
|
},
|
|
14049
14218
|
mcpRequestTimeoutMs: config_default.MCP_REQUEST_TIMEOUT_MS,
|
|
14050
14219
|
mcpConnectTimeoutMs: config_default.MCP_CONNECT_TIMEOUT_MS,
|
|
@@ -14157,6 +14326,7 @@ async function drainTurnEvents(input) {
|
|
|
14157
14326
|
async function beginTurnExecution(params) {
|
|
14158
14327
|
const { session, input, previous_turn_id: previousTurnId, userRef, deps } = params;
|
|
14159
14328
|
const sessionId = session.session_id;
|
|
14329
|
+
const turnId = mintPeeredTurnId(config_default.EXECUTOR_ID);
|
|
14160
14330
|
const abortController = new AbortController();
|
|
14161
14331
|
const tenant_id = session.tenant_id;
|
|
14162
14332
|
const resolver = createTurnResolver({
|
|
@@ -14167,13 +14337,13 @@ async function beginTurnExecution(params) {
|
|
|
14167
14337
|
modelProviderStore: deps.modelProviderStore,
|
|
14168
14338
|
logger: deps.logger,
|
|
14169
14339
|
signal: abortController.signal,
|
|
14170
|
-
tenant_id,
|
|
14171
14340
|
userRef,
|
|
14172
|
-
|
|
14341
|
+
session,
|
|
14342
|
+
turnId
|
|
14173
14343
|
});
|
|
14174
14344
|
const title = session.record.last_turn_id ? void 0 : deriveSessionTitle(input);
|
|
14175
14345
|
const turn = await session.createTurn({
|
|
14176
|
-
turn_id:
|
|
14346
|
+
turn_id: turnId,
|
|
14177
14347
|
input,
|
|
14178
14348
|
previous_turn_id: previousTurnId,
|
|
14179
14349
|
signal: abortController.signal,
|
|
@@ -14714,7 +14884,7 @@ function createSchedulesRouter(deps) {
|
|
|
14714
14884
|
});
|
|
14715
14885
|
return c.json({ data: data.map(toWireSchedule), pagination }, 200);
|
|
14716
14886
|
} catch (error) {
|
|
14717
|
-
if (error instanceof
|
|
14887
|
+
if (error instanceof InvalidPageTokenError2) {
|
|
14718
14888
|
return c.json({ error: { message: error.message } }, 400);
|
|
14719
14889
|
}
|
|
14720
14890
|
throw error;
|
|
@@ -14749,7 +14919,7 @@ function createSchedulesRouter(deps) {
|
|
|
14749
14919
|
});
|
|
14750
14920
|
return c.json({ data: data.map(toWireScheduleRun), pagination }, 200);
|
|
14751
14921
|
} catch (error) {
|
|
14752
|
-
if (error instanceof
|
|
14922
|
+
if (error instanceof InvalidPageTokenError2) {
|
|
14753
14923
|
return c.json({ error: { message: error.message } }, 400);
|
|
14754
14924
|
}
|
|
14755
14925
|
throw error;
|
|
@@ -17587,11 +17757,12 @@ function asError(value) {
|
|
|
17587
17757
|
}
|
|
17588
17758
|
function toPutRemoteAgentPayload({
|
|
17589
17759
|
name,
|
|
17760
|
+
description,
|
|
17590
17761
|
manifest
|
|
17591
17762
|
}) {
|
|
17592
17763
|
return {
|
|
17593
17764
|
name,
|
|
17594
|
-
description: name,
|
|
17765
|
+
description: (description || name).slice(0, AGENT_DESCRIPTION_MAX_LENGTH),
|
|
17595
17766
|
model: manifest.model.name,
|
|
17596
17767
|
mcp_servers: (manifest.mcp_servers ?? []).map((server) => server.name)
|
|
17597
17768
|
};
|
|
@@ -17637,7 +17808,11 @@ var TrueFoundryAgentStore = class {
|
|
|
17637
17808
|
try {
|
|
17638
17809
|
({ externalId } = await this.#client.putRemoteAgent({
|
|
17639
17810
|
accessToken: await this.#resolveAccessToken(),
|
|
17640
|
-
...toPutRemoteAgentPayload({
|
|
17811
|
+
...toPutRemoteAgentPayload({
|
|
17812
|
+
name: input.name,
|
|
17813
|
+
description: input.description,
|
|
17814
|
+
manifest: input.manifest
|
|
17815
|
+
})
|
|
17641
17816
|
}));
|
|
17642
17817
|
const updated = await this.#inner.updateAgent(
|
|
17643
17818
|
{ tenant_id: input.tenant_id, id: created.id, external_id: externalId },
|
|
@@ -17671,8 +17846,7 @@ var TrueFoundryAgentStore = class {
|
|
|
17671
17846
|
}
|
|
17672
17847
|
}
|
|
17673
17848
|
async updateAgent(input, transaction) {
|
|
17674
|
-
|
|
17675
|
-
if (nextManifest === void 0) {
|
|
17849
|
+
if (input.manifest === void 0 && input.description === void 0) {
|
|
17676
17850
|
return this.#inner.updateAgent(input, transaction);
|
|
17677
17851
|
}
|
|
17678
17852
|
return this.#withUpdateLock(input, transaction, async (txn) => {
|
|
@@ -17680,16 +17854,23 @@ var TrueFoundryAgentStore = class {
|
|
|
17680
17854
|
if (previous === void 0) {
|
|
17681
17855
|
return void 0;
|
|
17682
17856
|
}
|
|
17857
|
+
const nextManifest = input.manifest ?? previous.manifest;
|
|
17858
|
+
const nextDescription = input.description ?? previous.description;
|
|
17683
17859
|
const { externalId } = await this.#client.putRemoteAgent({
|
|
17684
17860
|
accessToken: await this.#resolveAccessToken(),
|
|
17685
|
-
...toPutRemoteAgentPayload({
|
|
17861
|
+
...toPutRemoteAgentPayload({
|
|
17862
|
+
name: previous.name,
|
|
17863
|
+
description: nextDescription,
|
|
17864
|
+
manifest: nextManifest
|
|
17865
|
+
})
|
|
17686
17866
|
});
|
|
17687
17867
|
try {
|
|
17688
17868
|
return await this.#inner.updateAgent(
|
|
17689
17869
|
{
|
|
17690
17870
|
tenant_id: input.tenant_id,
|
|
17691
17871
|
id: input.id,
|
|
17692
|
-
manifest: nextManifest,
|
|
17872
|
+
...input.manifest === void 0 ? {} : { manifest: nextManifest },
|
|
17873
|
+
...input.description === void 0 ? {} : { description: nextDescription },
|
|
17693
17874
|
...externalId === previous.external_id ? {} : { external_id: externalId }
|
|
17694
17875
|
},
|
|
17695
17876
|
txn
|
|
@@ -17700,6 +17881,7 @@ var TrueFoundryAgentStore = class {
|
|
|
17700
17881
|
accessToken: await this.#resolveAccessToken(),
|
|
17701
17882
|
...toPutRemoteAgentPayload({
|
|
17702
17883
|
name: previous.name,
|
|
17884
|
+
description: previous.description,
|
|
17703
17885
|
manifest: previous.manifest
|
|
17704
17886
|
})
|
|
17705
17887
|
});
|
|
@@ -17929,18 +18111,21 @@ function resolveAuthorizeRedirectURL(input) {
|
|
|
17929
18111
|
}
|
|
17930
18112
|
var TrueFoundryMcpServerStore = class {
|
|
17931
18113
|
#client;
|
|
17932
|
-
#
|
|
18114
|
+
#asAgent;
|
|
18115
|
+
#asUser;
|
|
17933
18116
|
#subject;
|
|
17934
18117
|
#perServerHeaders;
|
|
17935
18118
|
#gatewayUrl;
|
|
17936
18119
|
constructor(input) {
|
|
17937
18120
|
this.#client = input.client;
|
|
17938
|
-
|
|
18121
|
+
const tokens = accessTokenForRequest({
|
|
17939
18122
|
client: input.client,
|
|
17940
18123
|
requestContext: asTrueFoundryRequestContext(input.requestContext),
|
|
17941
18124
|
agent: input.agent,
|
|
17942
18125
|
logger: input.logger
|
|
17943
18126
|
});
|
|
18127
|
+
this.#asAgent = tokens.asAgent;
|
|
18128
|
+
this.#asUser = tokens.asUser;
|
|
17944
18129
|
this.#subject = input.requestContext.subject;
|
|
17945
18130
|
this.#perServerHeaders = input.perServerHeaders ?? {};
|
|
17946
18131
|
}
|
|
@@ -17949,7 +18134,7 @@ var TrueFoundryMcpServerStore = class {
|
|
|
17949
18134
|
const { record, userRef } = input;
|
|
17950
18135
|
const headers = async () => ({
|
|
17951
18136
|
...withoutAuthorization(this.#perServerHeaders[record.name]),
|
|
17952
|
-
Authorization: `Bearer ${await this.#
|
|
18137
|
+
Authorization: `Bearer ${await this.#asUser()}`
|
|
17953
18138
|
});
|
|
17954
18139
|
return async () => {
|
|
17955
18140
|
const status = await this.authorize({
|
|
@@ -17978,7 +18163,7 @@ var TrueFoundryMcpServerStore = class {
|
|
|
17978
18163
|
if (input.names?.length === 0) {
|
|
17979
18164
|
return [];
|
|
17980
18165
|
}
|
|
17981
|
-
const accessToken = await this.#
|
|
18166
|
+
const accessToken = await this.#asAgent();
|
|
17982
18167
|
const [rows, gatewayUrl] = await Promise.all([
|
|
17983
18168
|
this.#client.listMcpServers({
|
|
17984
18169
|
accessToken,
|
|
@@ -17990,7 +18175,7 @@ var TrueFoundryMcpServerStore = class {
|
|
|
17990
18175
|
}
|
|
17991
18176
|
async getServer(input, transaction) {
|
|
17992
18177
|
void transaction;
|
|
17993
|
-
const accessToken = await this.#
|
|
18178
|
+
const accessToken = await this.#asAgent();
|
|
17994
18179
|
const [row, gatewayUrl] = await Promise.all([
|
|
17995
18180
|
this.#client.getMcpServerByName({ accessToken, name: input.name }),
|
|
17996
18181
|
this.#resolveGatewayUrl()
|
|
@@ -18044,7 +18229,7 @@ var TrueFoundryMcpServerStore = class {
|
|
|
18044
18229
|
out.set(
|
|
18045
18230
|
record.name,
|
|
18046
18231
|
await this.#client.getMcpAuthStatus({
|
|
18047
|
-
accessToken: await this.#
|
|
18232
|
+
accessToken: await this.#asUser(),
|
|
18048
18233
|
mcpServerId: record.id,
|
|
18049
18234
|
subjectId: this.#subject.id,
|
|
18050
18235
|
subjectType: this.#subject.type
|
|
@@ -18059,7 +18244,7 @@ var TrueFoundryMcpServerStore = class {
|
|
|
18059
18244
|
throw new McpServerNotFoundError(input.name);
|
|
18060
18245
|
}
|
|
18061
18246
|
return this.#client.getMcpAuthorize({
|
|
18062
|
-
accessToken: await this.#
|
|
18247
|
+
accessToken: await this.#asUser(),
|
|
18063
18248
|
mcpServerId: record.id,
|
|
18064
18249
|
redirectURL: resolveAuthorizeRedirectURL({
|
|
18065
18250
|
...input.returnTo !== void 0 ? { returnTo: input.returnTo } : {}
|
|
@@ -18073,7 +18258,7 @@ var TrueFoundryMcpServerStore = class {
|
|
|
18073
18258
|
throw new McpServerNotFoundError(input.name);
|
|
18074
18259
|
}
|
|
18075
18260
|
await this.#client.deleteMcpAuth({
|
|
18076
|
-
accessToken: await this.#
|
|
18261
|
+
accessToken: await this.#asUser(),
|
|
18077
18262
|
mcpServerId: record.id,
|
|
18078
18263
|
subjectId: this.#subject.id,
|
|
18079
18264
|
subjectType: this.#subject.type,
|
|
@@ -18082,7 +18267,7 @@ var TrueFoundryMcpServerStore = class {
|
|
|
18082
18267
|
}
|
|
18083
18268
|
async #resolveGatewayUrl() {
|
|
18084
18269
|
if (this.#gatewayUrl === void 0) {
|
|
18085
|
-
const installations = await this.#client.listGatewayInstallations(await this.#
|
|
18270
|
+
const installations = await this.#client.listGatewayInstallations(await this.#asAgent());
|
|
18086
18271
|
this.#gatewayUrl = resolveDefaultGatewayUrl(installations);
|
|
18087
18272
|
}
|
|
18088
18273
|
return this.#gatewayUrl;
|
|
@@ -18103,15 +18288,18 @@ function toRecord2(input) {
|
|
|
18103
18288
|
init_modelProviderStore();
|
|
18104
18289
|
var TrueFoundryModelProviderStore = class {
|
|
18105
18290
|
#client;
|
|
18106
|
-
#
|
|
18291
|
+
#asAgent;
|
|
18292
|
+
#asUser;
|
|
18107
18293
|
constructor(input) {
|
|
18108
18294
|
this.#client = input.client;
|
|
18109
|
-
|
|
18295
|
+
const tokens = accessTokenForRequest({
|
|
18110
18296
|
client: input.client,
|
|
18111
18297
|
requestContext: asTrueFoundryRequestContext(input.requestContext),
|
|
18112
18298
|
agent: input.agent,
|
|
18113
18299
|
logger: input.logger
|
|
18114
18300
|
});
|
|
18301
|
+
this.#asAgent = tokens.asAgent;
|
|
18302
|
+
this.#asUser = tokens.asUser;
|
|
18115
18303
|
}
|
|
18116
18304
|
async listProviders(input, transaction) {
|
|
18117
18305
|
void transaction;
|
|
@@ -18144,19 +18332,19 @@ var TrueFoundryModelProviderStore = class {
|
|
|
18144
18332
|
return flattenProviderModels(await this.listProviders(input, transaction));
|
|
18145
18333
|
}
|
|
18146
18334
|
async #records(input) {
|
|
18147
|
-
const
|
|
18335
|
+
const [agentToken, userToken] = await Promise.all([this.#asAgent(), this.#asUser()]);
|
|
18148
18336
|
const [integrations, installations] = await Promise.all([
|
|
18149
18337
|
this.#client.listProviderIntegrations({
|
|
18150
|
-
accessToken,
|
|
18338
|
+
accessToken: agentToken,
|
|
18151
18339
|
...input.filter !== void 0 ? { filter: input.filter } : {}
|
|
18152
18340
|
}),
|
|
18153
|
-
this.#client.listGatewayInstallations(
|
|
18341
|
+
this.#client.listGatewayInstallations(agentToken)
|
|
18154
18342
|
]);
|
|
18155
18343
|
const gatewayUrl = resolveDefaultGatewayUrl(installations);
|
|
18156
18344
|
return toRecords({
|
|
18157
18345
|
tenant_id: input.tenant_id,
|
|
18158
18346
|
gatewayUrl,
|
|
18159
|
-
accessToken,
|
|
18347
|
+
accessToken: userToken,
|
|
18160
18348
|
models: mapEnabledModels({ integrations })
|
|
18161
18349
|
});
|
|
18162
18350
|
}
|