@truefoundry/trueforge 0.1.4 → 0.2.0-rc.0

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.
Files changed (169) hide show
  1. package/README.md +1 -1
  2. package/dist/_frontend/assets/{ConnectorSettings-ODC3LVHN-CAU9MgGN.js → ConnectorSettings-FXQ5B7TN-CqkaJ6bk.js} +1 -1
  3. package/dist/_frontend/assets/ConnectorSettings-FXQ5B7TN-CqkaJ6bk.js.br +0 -0
  4. package/dist/_frontend/assets/ConnectorSettings-FXQ5B7TN-CqkaJ6bk.js.gz +0 -0
  5. package/dist/_frontend/assets/{DockLayout-2RWDSUKE-eKoTN8R3.js → DockLayout-LBNQJZNF-DGHpS9Gm.js} +1 -1
  6. package/dist/_frontend/assets/DrawerLayout-Q6UK4VMI-weFd3sRX.js +2 -0
  7. package/dist/_frontend/assets/DrawerLayout-Q6UK4VMI-weFd3sRX.js.br +0 -0
  8. package/dist/_frontend/assets/DrawerLayout-Q6UK4VMI-weFd3sRX.js.gz +0 -0
  9. package/dist/_frontend/assets/{ModelSettings-CKQ5CVAC-UBz_ch6T.js → ModelSettings-4L4LOQJA-C_5SjCkP.js} +1 -1
  10. package/dist/_frontend/assets/ModelSettings-4L4LOQJA-C_5SjCkP.js.br +0 -0
  11. package/dist/_frontend/assets/ModelSettings-4L4LOQJA-C_5SjCkP.js.gz +0 -0
  12. package/dist/_frontend/assets/{SandboxSettings-HSCPYUOC-Csl-nC9h.js → SandboxSettings-Z4ZG6ZX4-D6AjXcBe.js} +1 -1
  13. package/dist/_frontend/assets/SandboxSettings-Z4ZG6ZX4-D6AjXcBe.js.br +0 -0
  14. package/dist/_frontend/assets/SandboxSettings-Z4ZG6ZX4-D6AjXcBe.js.gz +0 -0
  15. package/dist/_frontend/assets/SettingsBuilder-WF7ZWKQW-BKzXsxdK.js +2 -0
  16. package/dist/_frontend/assets/SettingsBuilder-WF7ZWKQW-BKzXsxdK.js.br +0 -0
  17. package/dist/_frontend/assets/SettingsBuilder-WF7ZWKQW-BKzXsxdK.js.gz +0 -0
  18. package/dist/_frontend/assets/ShellRouteSync-T4WLY57Q-DQu3omM6.js +1 -0
  19. package/dist/_frontend/assets/ShellRouteSync-T4WLY57Q-DQu3omM6.js.br +0 -0
  20. package/dist/_frontend/assets/ShellRouteSync-T4WLY57Q-DQu3omM6.js.gz +0 -0
  21. package/dist/_frontend/assets/SidebarLayout-3WZ3CVON-DCnEzJW3.js +2 -0
  22. package/dist/_frontend/assets/SidebarLayout-3WZ3CVON-DCnEzJW3.js.br +0 -0
  23. package/dist/_frontend/assets/SidebarLayout-3WZ3CVON-DCnEzJW3.js.gz +0 -0
  24. package/dist/_frontend/assets/{SkillSettings-ECH6SHZ7-CKWEzdO_.js → SkillSettings-3EPPC3IT-Cp2dAkSv.js} +1 -1
  25. package/dist/_frontend/assets/SkillSettings-3EPPC3IT-Cp2dAkSv.js.br +0 -0
  26. package/dist/_frontend/assets/SkillSettings-3EPPC3IT-Cp2dAkSv.js.gz +0 -0
  27. package/dist/_frontend/assets/{TrueForgeUIWithRouter-RKZ2E7PV-CoVbEgto.js → TrueForgeUIWithRouter-NZ4FGPE4-DKspF7Vq.js} +1 -1
  28. package/dist/_frontend/assets/{WidgetLayout-NWWB2SXI-cUmY1p2v.js → WidgetLayout-3QZ357FL-hQNmmaQ9.js} +1 -1
  29. package/dist/_frontend/assets/WidgetLayout-3QZ357FL-hQNmmaQ9.js.br +0 -0
  30. package/dist/_frontend/assets/WidgetLayout-3QZ357FL-hQNmmaQ9.js.gz +0 -0
  31. package/dist/_frontend/assets/{chunk-62JRHF6Z-BftTGWZl.js → chunk-62JRHF6Z-DktHCg-F.js} +1 -1
  32. package/dist/_frontend/assets/chunk-62JRHF6Z-DktHCg-F.js.br +0 -0
  33. package/dist/_frontend/assets/chunk-62JRHF6Z-DktHCg-F.js.gz +0 -0
  34. package/dist/_frontend/assets/chunk-7L63OK3O-ut7ifKZZ.js +2 -0
  35. package/dist/_frontend/assets/chunk-7L63OK3O-ut7ifKZZ.js.br +0 -0
  36. package/dist/_frontend/assets/chunk-7L63OK3O-ut7ifKZZ.js.gz +0 -0
  37. package/dist/_frontend/assets/chunk-ZXOADNF3-CYtk3iXk.js +4 -0
  38. package/dist/_frontend/assets/chunk-ZXOADNF3-CYtk3iXk.js.br +0 -0
  39. package/dist/_frontend/assets/chunk-ZXOADNF3-CYtk3iXk.js.gz +0 -0
  40. package/dist/_frontend/assets/{cssMode-CvKwYh_L.js → cssMode-CVoX59tx.js} +1 -1
  41. package/dist/_frontend/assets/cssMode-CVoX59tx.js.br +0 -0
  42. package/dist/_frontend/assets/cssMode-CVoX59tx.js.gz +0 -0
  43. package/dist/_frontend/assets/{freemarker2-Bb2yOpT3.js → freemarker2-CCQkuwQA.js} +1 -1
  44. package/dist/_frontend/assets/freemarker2-CCQkuwQA.js.br +0 -0
  45. package/dist/_frontend/assets/freemarker2-CCQkuwQA.js.gz +0 -0
  46. package/dist/_frontend/assets/{handlebars-FL3wsxe0.js → handlebars-Cbz9hMh4.js} +1 -1
  47. package/dist/_frontend/assets/handlebars-Cbz9hMh4.js.br +0 -0
  48. package/dist/_frontend/assets/handlebars-Cbz9hMh4.js.gz +0 -0
  49. package/dist/_frontend/assets/{html-Cb3v_ZRD.js → html-BahIpdyT.js} +1 -1
  50. package/dist/_frontend/assets/html-BahIpdyT.js.br +0 -0
  51. package/dist/_frontend/assets/html-BahIpdyT.js.gz +0 -0
  52. package/dist/_frontend/assets/{htmlMode-JQDvK0Qf.js → htmlMode-D8Lhuwsc.js} +1 -1
  53. package/dist/_frontend/assets/htmlMode-D8Lhuwsc.js.br +0 -0
  54. package/dist/_frontend/assets/htmlMode-D8Lhuwsc.js.gz +0 -0
  55. package/dist/_frontend/assets/{index-DJ1uWGdt.js → index-2V4Ldq3d.js} +236 -238
  56. package/dist/_frontend/assets/index-2V4Ldq3d.js.br +0 -0
  57. package/dist/_frontend/assets/index-2V4Ldq3d.js.gz +0 -0
  58. package/dist/_frontend/assets/{index-DRjgykCE.js → index-BijvMc2J.js} +3 -3
  59. package/dist/_frontend/assets/index-BijvMc2J.js.br +0 -0
  60. package/dist/_frontend/assets/index-BijvMc2J.js.gz +0 -0
  61. package/dist/_frontend/assets/{javascript-2WsgEpYV.js → javascript-DX64NjaV.js} +1 -1
  62. package/dist/_frontend/assets/{jsonMode-DnbseMlM.js → jsonMode-Cmj-z8lq.js} +1 -1
  63. package/dist/_frontend/assets/jsonMode-Cmj-z8lq.js.br +0 -0
  64. package/dist/_frontend/assets/jsonMode-Cmj-z8lq.js.gz +0 -0
  65. package/dist/_frontend/assets/{liquid-DeE37I1e.js → liquid-D9aEkxQ3.js} +1 -1
  66. package/dist/_frontend/assets/liquid-D9aEkxQ3.js.br +0 -0
  67. package/dist/_frontend/assets/liquid-D9aEkxQ3.js.gz +0 -0
  68. package/dist/_frontend/assets/{lspLanguageFeatures-Bty8j9di.js → lspLanguageFeatures-B9OVB8fw.js} +1 -1
  69. package/dist/_frontend/assets/lspLanguageFeatures-B9OVB8fw.js.br +0 -0
  70. package/dist/_frontend/assets/{lspLanguageFeatures-Bty8j9di.js.gz → lspLanguageFeatures-B9OVB8fw.js.gz} +0 -0
  71. package/dist/_frontend/assets/{mdx-DfKPZX1Z.js → mdx-BS6lx6sy.js} +1 -1
  72. package/dist/_frontend/assets/mdx-BS6lx6sy.js.br +0 -0
  73. package/dist/_frontend/assets/mdx-BS6lx6sy.js.gz +0 -0
  74. package/dist/_frontend/assets/{python-2i3Kiv75.js → python-CsklLa1s.js} +1 -1
  75. package/dist/_frontend/assets/python-CsklLa1s.js.br +0 -0
  76. package/dist/_frontend/assets/python-CsklLa1s.js.gz +0 -0
  77. package/dist/_frontend/assets/{razor-B0N4vZnc.js → razor-AHbg0zLw.js} +1 -1
  78. package/dist/_frontend/assets/razor-AHbg0zLw.js.br +0 -0
  79. package/dist/_frontend/assets/razor-AHbg0zLw.js.gz +0 -0
  80. package/dist/_frontend/assets/{tsMode-D1Y8xh-o.js → tsMode-a0R0JxtL.js} +1 -1
  81. package/dist/_frontend/assets/tsMode-a0R0JxtL.js.br +0 -0
  82. package/dist/_frontend/assets/tsMode-a0R0JxtL.js.gz +0 -0
  83. package/dist/_frontend/assets/{typescript-2nhip0PT.js → typescript-0a1AGk9v.js} +1 -1
  84. package/dist/_frontend/assets/typescript-0a1AGk9v.js.br +0 -0
  85. package/dist/_frontend/assets/typescript-0a1AGk9v.js.gz +0 -0
  86. package/dist/_frontend/assets/{workers-DSmTvA39.js → workers-B52dGfKp.js} +1 -1
  87. package/dist/_frontend/assets/workers-B52dGfKp.js.br +0 -0
  88. package/dist/_frontend/assets/workers-B52dGfKp.js.gz +0 -0
  89. package/dist/_frontend/assets/{xml-CA4M6Pks.js → xml-DLl5XSKM.js} +1 -1
  90. package/dist/_frontend/assets/xml-DLl5XSKM.js.br +0 -0
  91. package/dist/_frontend/assets/xml-DLl5XSKM.js.gz +0 -0
  92. package/dist/_frontend/assets/{yaml-D5KNk7Ji.js → yaml-DJwDc3Fv.js} +1 -1
  93. package/dist/_frontend/assets/yaml-DJwDc3Fv.js.br +0 -0
  94. package/dist/_frontend/assets/yaml-DJwDc3Fv.js.gz +0 -0
  95. package/dist/_frontend/index.html +1 -30
  96. package/dist/main.js +35 -21
  97. package/dist/main.js.map +1 -1
  98. package/dist/postgres/migrations/20260821_000001_agent_compaction.js +63 -0
  99. package/dist/postgres/migrations/20260821_000001_agent_compaction.js.map +1 -0
  100. package/dist/sqlite/migrations/20260821_000001_agent_compaction.js +69 -0
  101. package/dist/sqlite/migrations/20260821_000001_agent_compaction.js.map +1 -0
  102. package/package.json +21 -22
  103. package/dist/_frontend/assets/ConnectorSettings-ODC3LVHN-CAU9MgGN.js.br +0 -0
  104. package/dist/_frontend/assets/ConnectorSettings-ODC3LVHN-CAU9MgGN.js.gz +0 -0
  105. package/dist/_frontend/assets/DrawerLayout-CZLJYMIN-DWPAdLZz.js +0 -2
  106. package/dist/_frontend/assets/DrawerLayout-CZLJYMIN-DWPAdLZz.js.br +0 -0
  107. package/dist/_frontend/assets/DrawerLayout-CZLJYMIN-DWPAdLZz.js.gz +0 -0
  108. package/dist/_frontend/assets/ModelSettings-CKQ5CVAC-UBz_ch6T.js.br +0 -0
  109. package/dist/_frontend/assets/ModelSettings-CKQ5CVAC-UBz_ch6T.js.gz +0 -0
  110. package/dist/_frontend/assets/SandboxSettings-HSCPYUOC-Csl-nC9h.js.br +0 -0
  111. package/dist/_frontend/assets/SandboxSettings-HSCPYUOC-Csl-nC9h.js.gz +0 -0
  112. package/dist/_frontend/assets/SettingsBuilder-MYWRFXRI-Ce3OWfa1.js +0 -2
  113. package/dist/_frontend/assets/SettingsBuilder-MYWRFXRI-Ce3OWfa1.js.br +0 -0
  114. package/dist/_frontend/assets/SettingsBuilder-MYWRFXRI-Ce3OWfa1.js.gz +0 -0
  115. package/dist/_frontend/assets/ShellRouteSync-T4WLY57Q-B5lyCu4o.js +0 -1
  116. package/dist/_frontend/assets/ShellRouteSync-T4WLY57Q-B5lyCu4o.js.br +0 -0
  117. package/dist/_frontend/assets/ShellRouteSync-T4WLY57Q-B5lyCu4o.js.gz +0 -0
  118. package/dist/_frontend/assets/SidebarLayout-WVY54TGZ-CIx5jQIC.js +0 -2
  119. package/dist/_frontend/assets/SidebarLayout-WVY54TGZ-CIx5jQIC.js.br +0 -0
  120. package/dist/_frontend/assets/SidebarLayout-WVY54TGZ-CIx5jQIC.js.gz +0 -0
  121. package/dist/_frontend/assets/SkillSettings-ECH6SHZ7-CKWEzdO_.js.br +0 -0
  122. package/dist/_frontend/assets/SkillSettings-ECH6SHZ7-CKWEzdO_.js.gz +0 -0
  123. package/dist/_frontend/assets/WidgetLayout-NWWB2SXI-cUmY1p2v.js.br +0 -0
  124. package/dist/_frontend/assets/WidgetLayout-NWWB2SXI-cUmY1p2v.js.gz +0 -0
  125. package/dist/_frontend/assets/chunk-62JRHF6Z-BftTGWZl.js.br +0 -0
  126. package/dist/_frontend/assets/chunk-62JRHF6Z-BftTGWZl.js.gz +0 -0
  127. package/dist/_frontend/assets/chunk-OZTNBS6V-CLmmFX7d.js +0 -4
  128. package/dist/_frontend/assets/chunk-OZTNBS6V-CLmmFX7d.js.br +0 -0
  129. package/dist/_frontend/assets/chunk-OZTNBS6V-CLmmFX7d.js.gz +0 -0
  130. package/dist/_frontend/assets/chunk-TCAVLWYL-DVhtkE3q.js +0 -2
  131. package/dist/_frontend/assets/chunk-TCAVLWYL-DVhtkE3q.js.br +0 -0
  132. package/dist/_frontend/assets/chunk-TCAVLWYL-DVhtkE3q.js.gz +0 -0
  133. package/dist/_frontend/assets/cssMode-CvKwYh_L.js.br +0 -0
  134. package/dist/_frontend/assets/cssMode-CvKwYh_L.js.gz +0 -0
  135. package/dist/_frontend/assets/freemarker2-Bb2yOpT3.js.br +0 -0
  136. package/dist/_frontend/assets/freemarker2-Bb2yOpT3.js.gz +0 -0
  137. package/dist/_frontend/assets/handlebars-FL3wsxe0.js.br +0 -0
  138. package/dist/_frontend/assets/handlebars-FL3wsxe0.js.gz +0 -0
  139. package/dist/_frontend/assets/html-Cb3v_ZRD.js.br +0 -0
  140. package/dist/_frontend/assets/html-Cb3v_ZRD.js.gz +0 -0
  141. package/dist/_frontend/assets/htmlMode-JQDvK0Qf.js.br +0 -0
  142. package/dist/_frontend/assets/htmlMode-JQDvK0Qf.js.gz +0 -0
  143. package/dist/_frontend/assets/index-DJ1uWGdt.js.br +0 -0
  144. package/dist/_frontend/assets/index-DJ1uWGdt.js.gz +0 -0
  145. package/dist/_frontend/assets/index-DRjgykCE.js.br +0 -0
  146. package/dist/_frontend/assets/index-DRjgykCE.js.gz +0 -0
  147. package/dist/_frontend/assets/jsonMode-DnbseMlM.js.br +0 -0
  148. package/dist/_frontend/assets/jsonMode-DnbseMlM.js.gz +0 -0
  149. package/dist/_frontend/assets/liquid-DeE37I1e.js.br +0 -0
  150. package/dist/_frontend/assets/liquid-DeE37I1e.js.gz +0 -0
  151. package/dist/_frontend/assets/lspLanguageFeatures-Bty8j9di.js.br +0 -0
  152. package/dist/_frontend/assets/mdx-DfKPZX1Z.js.br +0 -0
  153. package/dist/_frontend/assets/mdx-DfKPZX1Z.js.gz +0 -0
  154. package/dist/_frontend/assets/python-2i3Kiv75.js.br +0 -0
  155. package/dist/_frontend/assets/python-2i3Kiv75.js.gz +0 -0
  156. package/dist/_frontend/assets/razor-B0N4vZnc.js.br +0 -0
  157. package/dist/_frontend/assets/razor-B0N4vZnc.js.gz +0 -0
  158. package/dist/_frontend/assets/tsMode-D1Y8xh-o.js.br +0 -0
  159. package/dist/_frontend/assets/tsMode-D1Y8xh-o.js.gz +0 -0
  160. package/dist/_frontend/assets/typescript-2nhip0PT.js.br +0 -0
  161. package/dist/_frontend/assets/typescript-2nhip0PT.js.gz +0 -0
  162. package/dist/_frontend/assets/workers-DSmTvA39.js.br +0 -0
  163. package/dist/_frontend/assets/workers-DSmTvA39.js.gz +0 -0
  164. package/dist/_frontend/assets/xml-CA4M6Pks.js.br +0 -0
  165. package/dist/_frontend/assets/xml-CA4M6Pks.js.gz +0 -0
  166. package/dist/_frontend/assets/yaml-D5KNk7Ji.js.br +0 -0
  167. package/dist/_frontend/assets/yaml-D5KNk7Ji.js.gz +0 -0
  168. package/dist/_frontend/index.html.br +0 -0
  169. package/dist/_frontend/index.html.gz +0 -0
package/dist/main.js CHANGED
@@ -100,16 +100,15 @@ function resolveOptionalPathEnv(envKey) {
100
100
  }
101
101
  return path.resolve(override);
102
102
  }
103
- function resolveSqlitePath() {
103
+ function resolveSqlitePath(appDataDir2) {
104
104
  const override = getEnv("SQLITE_PATH");
105
105
  if (override !== void 0 && override.trim() !== "") {
106
106
  return path.resolve(override);
107
107
  }
108
- const paths = envPaths(ENV_PATHS_APP_NAME, { suffix: "" });
109
- return path.join(paths.data, "db", "db.sqlite");
108
+ return path.join(appDataDir2, "db", "db.sqlite");
110
109
  }
111
- function resolveLocalSandboxRootParent() {
112
- return path.join(envPaths(ENV_PATHS_APP_NAME, { suffix: "" }).data, "sandboxes");
110
+ function resolveLocalSandboxRootParent(appDataDir2) {
111
+ return path.join(appDataDir2, "sandboxes");
113
112
  }
114
113
  function resolveCodeModeSocketParent() {
115
114
  return path.join(os.tmpdir(), "tf_cms");
@@ -173,7 +172,7 @@ function isOidcConfigured(value) {
173
172
  return !value.STANDALONE && value.OIDC !== void 0;
174
173
  }
175
174
  function getPublicBaseUrl(config = configuration) {
176
- if (config.STANDALONE) {
175
+ if (config.STANDALONE && config.NODE_ENV !== "development") {
177
176
  return `http://localhost:${String(config.PORT)}`;
178
177
  }
179
178
  if (config.PUBLIC_BASE_URL === "") {
@@ -181,7 +180,7 @@ function getPublicBaseUrl(config = configuration) {
181
180
  }
182
181
  return config.PUBLIC_BASE_URL;
183
182
  }
184
- var DEFAULT_PORT, DEFAULT_HOST, DEFAULT_MAX_REQUEST_BODY_BYTES, PACKAGE_ROOT, LOCAL_EXECUTOR_ID, ENV_PATHS_APP_NAME, DEFAULT_POSTGRES_USER, DEFAULT_POSTGRES_PASSWORD, DEFAULT_POSTGRES_DB, DEFAULT_POSTGRES_HOST, DEFAULT_POSTGRES_PORT, DEFAULT_REDIS_URL, DEFAULT_OIDC_USER_REFERENCE_CLAIM, DEFAULT_OIDC_USER_ROLE_CLAIM, DEFAULT_OIDC_ADMIN_ROLE_VALUE, DEFAULT_OIDC_SCOPES, serverExecutionTimeoutSeconds, standalone, port, host, shared, configuration, config_default;
183
+ var DEFAULT_PORT, DEFAULT_HOST, DEFAULT_MAX_REQUEST_BODY_BYTES, PACKAGE_ROOT, LOCAL_EXECUTOR_ID, ENV_PATHS_APP_NAME, DEFAULT_POSTGRES_USER, DEFAULT_POSTGRES_PASSWORD, DEFAULT_POSTGRES_DB, DEFAULT_POSTGRES_HOST, DEFAULT_POSTGRES_PORT, DEFAULT_REDIS_URL, DEFAULT_OIDC_USER_REFERENCE_CLAIM, DEFAULT_OIDC_USER_ROLE_CLAIM, DEFAULT_OIDC_ADMIN_ROLE_VALUE, DEFAULT_OIDC_SCOPES, serverExecutionTimeoutSeconds, standalone, appDataDirSuffix, appDataDir, port, host, shared, configuration, config_default;
185
184
  var init_config = __esm({
186
185
  "src/config.ts"() {
187
186
  "use strict";
@@ -211,6 +210,8 @@ var init_config = __esm({
211
210
  raw: getEnv("STANDALONE"),
212
211
  defaultValue: true
213
212
  });
213
+ appDataDirSuffix = getEnv("APP_DATA_DIR_SUFFIX", { defaultValue: "" }) ?? "";
214
+ appDataDir = envPaths(ENV_PATHS_APP_NAME, { suffix: appDataDirSuffix }).data;
214
215
  port = parsePort(getEnv("PORT"));
215
216
  host = getEnv("HOST", { defaultValue: DEFAULT_HOST }) ?? DEFAULT_HOST;
216
217
  shared = {
@@ -285,18 +286,18 @@ var init_config = __esm({
285
286
  envKey: "REDIS_REQUEST_REPLY_POLL_INTERVAL_MS",
286
287
  raw: getEnv("REDIS_REQUEST_REPLY_POLL_INTERVAL_MS"),
287
288
  defaultValue: 500
288
- })
289
+ }),
290
+ PUBLIC_BASE_URL: getEnv("PUBLIC_BASE_URL", { defaultValue: "" }) ?? ""
289
291
  };
290
292
  configuration = standalone ? {
291
293
  ...shared,
292
294
  STANDALONE: true,
293
- SQLITE_PATH: resolveSqlitePath(),
294
- LOCAL_SANDBOX_ROOT_PARENT: resolveLocalSandboxRootParent(),
295
+ SQLITE_PATH: resolveSqlitePath(appDataDir),
296
+ LOCAL_SANDBOX_ROOT_PARENT: resolveLocalSandboxRootParent(appDataDir),
295
297
  CODE_MODE_SOCKET_PARENT: resolveCodeModeSocketParent()
296
298
  } : {
297
299
  ...shared,
298
300
  STANDALONE: false,
299
- PUBLIC_BASE_URL: getEnv("PUBLIC_BASE_URL", { defaultValue: "" }) ?? "",
300
301
  DATABASE_URL: resolvePostgresDatabaseUrl(),
301
302
  DATABASE_POOL_MAX: parsePositiveInt({
302
303
  envKey: "DATABASE_POOL_MAX",
@@ -531,8 +532,9 @@ def _is_destructive(tool: dict[str, Any]) -> bool:
531
532
  return False
532
533
  if not isinstance(annotations, dict):
533
534
  return False
534
- destructive = annotations.get("destructiveHint")
535
- read_only = annotations.get("readOnlyHint")
535
+
536
+ read_only = annotations.get("read_only_hint", annotations.get("readOnlyHint"))
537
+ destructive = annotations.get("destructive_hint", annotations.get("destructiveHint"))
536
538
  return bool(destructive) or (not read_only and read_only is not None)
537
539
 
538
540
 
@@ -4081,13 +4083,14 @@ var init_client2 = __esm({
4081
4083
  // src/db/migratePostgres.ts
4082
4084
  var migratePostgres_exports = {};
4083
4085
  __export(migratePostgres_exports, {
4086
+ migrateTo: () => migrateTo,
4084
4087
  migrateToLatest: () => migrateToLatest
4085
4088
  });
4086
4089
  import { promises as fs3 } from "fs";
4087
4090
  import path5 from "path";
4088
4091
  import { FileMigrationProvider as FileMigrationProvider2, Migrator as Migrator2 } from "kysely/migration";
4089
- async function migrateToLatest(db) {
4090
- const migrator = new Migrator2({
4092
+ function createMigrator(db) {
4093
+ return new Migrator2({
4091
4094
  db,
4092
4095
  provider: new FileMigrationProvider2({
4093
4096
  fs: fs3,
@@ -4095,7 +4098,10 @@ async function migrateToLatest(db) {
4095
4098
  migrationFolder: path5.join(import.meta.dirname, "postgres", "migrations")
4096
4099
  })
4097
4100
  });
4098
- const { error, results } = await migrator.migrateToLatest();
4101
+ }
4102
+ async function runMigrations(input) {
4103
+ const migrator = createMigrator(input.db);
4104
+ const { error, results } = input.targetMigrationName === void 0 ? await migrator.migrateToLatest() : await migrator.migrateTo(input.targetMigrationName);
4099
4105
  results?.forEach((it) => {
4100
4106
  if (it.status === "Success") {
4101
4107
  console.log(`migration "${it.migrationName}" was executed successfully`);
@@ -4110,6 +4116,12 @@ async function migrateToLatest(db) {
4110
4116
  throw new Error("failed to migrate", { cause: error });
4111
4117
  }
4112
4118
  }
4119
+ async function migrateToLatest(db) {
4120
+ await runMigrations({ db, targetMigrationName: void 0 });
4121
+ }
4122
+ async function migrateTo(db, targetMigrationName) {
4123
+ await runMigrations({ db, targetMigrationName });
4124
+ }
4113
4125
  var init_migratePostgres = __esm({
4114
4126
  "src/db/migratePostgres.ts"() {
4115
4127
  "use strict";
@@ -6622,7 +6634,8 @@ async function getModelDetails({
6622
6634
  apiKey: provider.manifest.auth?.api_key ?? "",
6623
6635
  headers: {}
6624
6636
  },
6625
- defaultModelParams: model.properties.max_output_tokens ? { max_tokens: model.properties.max_output_tokens } : {}
6637
+ defaultModelParams: model.properties.max_output_tokens ? { max_tokens: model.properties.max_output_tokens } : {},
6638
+ modelProperties: { contextLength: model.properties.context_length }
6626
6639
  };
6627
6640
  }
6628
6641
  function dcrHeadersResolver(params) {
@@ -10319,7 +10332,7 @@ function createTurnResolver(deps) {
10319
10332
  } = deps;
10320
10333
  return new TurnResourceResolver({
10321
10334
  llm: async (name) => {
10322
- const { providerConfig, defaultModelParams } = await getModelDetails({
10335
+ const { providerConfig, defaultModelParams, modelProperties } = await getModelDetails({
10323
10336
  tenant_id: TENANT_ID,
10324
10337
  name,
10325
10338
  store: modelProviderStore
@@ -10330,7 +10343,8 @@ function createTurnResolver(deps) {
10330
10343
  logger,
10331
10344
  signal
10332
10345
  }),
10333
- defaultModelParams
10346
+ defaultModelParams,
10347
+ modelProperties
10334
10348
  };
10335
10349
  },
10336
10350
  mcp: async (name) => {
@@ -10875,7 +10889,7 @@ function createServerApp(deps) {
10875
10889
  const app = new OpenAPIHono14({ defaultHook: zodValidationHook });
10876
10890
  const authEnabled = deps.oidcClient != null;
10877
10891
  app.use("*", createRequestBodyLimitMiddleware(config_default.MAX_REQUEST_BODY_BYTES));
10878
- app.get("/healthz", (c) => c.text("OK!"));
10892
+ app.get("/healthz", (c) => c.json({ status: "ok", version: PACKAGE_VERSION }));
10879
10893
  app.route("/api/v1/auth", createAuthRouter({ oidcClient: deps.oidcClient, logger: deps.logger }));
10880
10894
  app.route(
10881
10895
  "/api/v1/capabilities",
@@ -11072,7 +11086,7 @@ var McpCatalog = class _McpCatalog {
11072
11086
  init_config();
11073
11087
 
11074
11088
  // src/catalog/modelCatalog.gen.ts
11075
- var shippedModelCatalogYaml = "# Shipped model catalog: provider/model presets offered by\n# GET /api/v1/catalog/model-providers for the UI to copy into\n# PUT /api/v1/settings/model-providers bodies. Discovery-only \u2014 never executed against.\nproviders:\n - type: openai\n logo: https://assets.production.truefoundry.com/openai.svg\n models:\n - model_id: gpt-5.4-mini\n name: gpt-5-4-mini\n properties:\n context_length: 400000\n max_output_tokens: 128000\n reasoning_efforts:\n - none\n - low\n - medium\n - high\n - xhigh\n - model_id: gpt-5.5\n name: gpt-5-5\n properties:\n context_length: 1050000\n max_output_tokens: 128000\n reasoning_efforts:\n - none\n - low\n - medium\n - high\n - xhigh\n - model_id: gpt-5.6-luna\n name: gpt-5-6-luna\n properties:\n context_length: 1050000\n max_output_tokens: 128000\n reasoning_efforts:\n - none\n - low\n - medium\n - high\n - xhigh\n - max\n - model_id: gpt-5.6-sol\n name: gpt-5-6-sol\n properties:\n context_length: 1050000\n max_output_tokens: 128000\n reasoning_efforts:\n - none\n - low\n - medium\n - high\n - xhigh\n - max\n - model_id: gpt-5.6-terra\n name: gpt-5-6-terra\n properties:\n context_length: 1050000\n max_output_tokens: 128000\n reasoning_efforts:\n - none\n - low\n - medium\n - high\n - xhigh\n - max\n - type: anthropic\n logo: https://assets.production.truefoundry.com/anthropic.svg\n models:\n - model_id: claude-fable-5\n name: claude-fable-5\n properties:\n context_length: 1000000\n max_output_tokens: 128000\n reasoning_efforts:\n - low\n - medium\n - high\n - xhigh\n - max\n - model_id: claude-haiku-4-5\n name: claude-haiku-4-5\n properties:\n context_length: 200000\n max_output_tokens: 64000\n - model_id: claude-opus-4-8\n name: claude-opus-4-8\n properties:\n context_length: 1000000\n max_output_tokens: 128000\n reasoning_efforts:\n - low\n - medium\n - high\n - xhigh\n - max\n - model_id: claude-opus-5\n name: claude-opus-5\n properties:\n context_length: 1000000\n max_output_tokens: 128000\n reasoning_efforts:\n - low\n - medium\n - high\n - xhigh\n - max\n - model_id: claude-sonnet-4-6\n name: claude-sonnet-4-6\n properties:\n context_length: 1000000\n max_output_tokens: 128000\n reasoning_efforts:\n - low\n - medium\n - high\n - max\n - model_id: claude-sonnet-5\n name: claude-sonnet-5\n properties:\n context_length: 1000000\n max_output_tokens: 128000\n reasoning_efforts:\n - low\n - medium\n - high\n - xhigh\n - max\n - type: google-gemini\n logo: https://assets.production.truefoundry.com/google-gemini.svg\n models:\n - model_id: gemini-3.1-pro-preview\n name: gemini-3-1-pro-preview\n properties:\n context_length: 1048576\n max_output_tokens: 65536\n reasoning_efforts:\n - low\n - medium\n - high\n - model_id: gemini-3.6-flash\n name: gemini-3-6-flash\n properties:\n context_length: 1048576\n max_output_tokens: 65536\n reasoning_efforts:\n - minimal\n - low\n - medium\n - high\n - type: fireworks\n logo: https://assets.production.truefoundry.com/fireworks.svg\n models:\n - model_id: accounts/fireworks/models/deepseek-v4-pro\n name: deepseek-v4-pro\n properties:\n context_length: 1048576\n reasoning_efforts:\n - none\n - low\n - medium\n - high\n - xhigh\n - max\n - model_id: accounts/fireworks/models/glm-5p2\n name: glm-5p2\n properties:\n context_length: 1048576\n reasoning_efforts:\n - none\n - low\n - medium\n - high\n - xhigh\n - max\n - model_id: accounts/fireworks/models/kimi-k2p7-code\n name: kimi-k2p7-code\n properties:\n context_length: 262144\n reasoning_efforts:\n - none\n - low\n - medium\n - high\n - xhigh\n - max\n - model_id: accounts/fireworks/models/kimi-k3\n name: kimi-k3\n properties:\n context_length: 1048576\n reasoning_efforts:\n - none\n - low\n - medium\n - high\n - xhigh\n - max\n - model_id: accounts/fireworks/models/minimax-m3\n name: minimax-m3\n properties:\n context_length: 512000\n reasoning_efforts:\n - none\n - low\n - medium\n - high\n - xhigh\n - max\n - type: zai\n logo: https://assets.production.truefoundry.com/zai.svg\n models:\n - model_id: glm-5-turbo\n name: glm-5-turbo\n properties:\n context_length: 200000\n max_output_tokens: 131072\n - model_id: glm-5.1\n name: glm-5-1\n properties:\n context_length: 200000\n max_output_tokens: 131072\n - model_id: glm-5.2\n name: glm-5-2\n properties:\n context_length: 1000000\n max_output_tokens: 131072\n reasoning_efforts:\n - none\n - minimal\n - low\n - medium\n - high\n - xhigh\n - max\n - type: moonshot\n logo: https://assets.production.truefoundry.com/moonshot.png\n models:\n - model_id: kimi-k2.7-code\n name: kimi-k2-7-code\n properties:\n context_length: 262144\n - model_id: kimi-k3\n name: kimi-k3\n properties:\n context_length: 1048576\n reasoning_efforts:\n - low\n - high\n - max\n - type: alibaba\n logo: https://assets.production.truefoundry.com/alibaba.png\n models:\n - model_id: qwen3.7-flash\n name: qwen3-7-flash\n properties:\n context_length: 1000000\n max_output_tokens: 131072\n reasoning_efforts:\n - none\n - minimal\n - low\n - medium\n - high\n - xhigh\n - model_id: qwen3.7-max\n name: qwen3-7-max\n properties:\n context_length: 1000000\n max_output_tokens: 131072\n reasoning_efforts:\n - none\n - minimal\n - low\n - medium\n - high\n - xhigh\n - model_id: qwen3.7-plus\n name: qwen3-7-plus\n properties:\n context_length: 1000000\n max_output_tokens: 131072\n reasoning_efforts:\n - none\n - minimal\n - low\n - medium\n - high\n - xhigh\n - model_id: qwen3.8-max\n name: qwen3-8-max\n properties:\n context_length: 1000000\n max_output_tokens: 131072\n reasoning_efforts:\n - none\n - minimal\n - low\n - medium\n - high\n - xhigh\n - max\n - type: together\n logo: https://assets.production.truefoundry.com/togetherai.svg\n models:\n - model_id: deepseek-ai/DeepSeek-V4-Pro\n name: deepseek-v4-pro\n properties:\n context_length: 512000\n reasoning_efforts:\n - high\n - max\n - model_id: MiniMaxAI/MiniMax-M3\n name: minimax-m3\n properties:\n context_length: 524288\n - model_id: moonshotai/Kimi-K2.7-Code\n name: kimi-k2-7-code\n properties:\n context_length: 262144\n - model_id: moonshotai/Kimi-K3\n name: kimi-k3\n properties:\n context_length: 1048576\n reasoning_efforts:\n - none\n - low\n - medium\n - high\n - max\n - model_id: Qwen/Qwen3.7-Max\n name: qwen3-7-max\n properties:\n context_length: 1000000\n max_output_tokens: 131072\n reasoning_efforts:\n - none\n - minimal\n - low\n - medium\n - high\n - xhigh\n - model_id: Qwen/Qwen3.7-Plus\n name: qwen3-7-plus\n properties:\n context_length: 1000000\n max_output_tokens: 131072\n reasoning_efforts:\n - none\n - minimal\n - low\n - medium\n - high\n - xhigh\n - model_id: zai-org/GLM-5.2\n name: glm-5-2\n properties:\n context_length: 512000\n reasoning_efforts:\n - high\n - max\n";
11089
+ var shippedModelCatalogYaml = "# Shipped model catalog: provider/model presets offered by\n# GET /api/v1/catalog/model-providers for the UI to copy into\n# PUT /api/v1/settings/model-providers bodies. Discovery-only \u2014 never executed against.\nproviders:\n - type: openai\n logo: https://assets.production.truefoundry.com/openai.svg\n models:\n - model_id: gpt-5.4-mini\n name: gpt-5-4-mini\n properties:\n context_length: 400000\n max_output_tokens: 128000\n reasoning_efforts:\n - none\n - low\n - medium\n - high\n - xhigh\n - model_id: gpt-5.5\n name: gpt-5-5\n properties:\n context_length: 1050000\n max_output_tokens: 128000\n reasoning_efforts:\n - none\n - low\n - medium\n - high\n - xhigh\n - model_id: gpt-5.6-luna\n name: gpt-5-6-luna\n properties:\n context_length: 1050000\n max_output_tokens: 128000\n reasoning_efforts:\n - none\n - low\n - medium\n - high\n - xhigh\n - max\n - model_id: gpt-5.6-sol\n name: gpt-5-6-sol\n properties:\n context_length: 1050000\n max_output_tokens: 128000\n reasoning_efforts:\n - none\n - low\n - medium\n - high\n - xhigh\n - max\n - model_id: gpt-5.6-terra\n name: gpt-5-6-terra\n properties:\n context_length: 1050000\n max_output_tokens: 128000\n reasoning_efforts:\n - none\n - low\n - medium\n - high\n - xhigh\n - max\n - type: anthropic\n logo: https://assets.production.truefoundry.com/anthropic.svg\n models:\n - model_id: claude-fable-5\n name: claude-fable-5\n properties:\n context_length: 1000000\n max_output_tokens: 128000\n reasoning_efforts:\n - low\n - medium\n - high\n - xhigh\n - max\n - model_id: claude-haiku-4-5\n name: claude-haiku-4-5\n properties:\n context_length: 200000\n max_output_tokens: 64000\n - model_id: claude-opus-4-8\n name: claude-opus-4-8\n properties:\n context_length: 1000000\n max_output_tokens: 128000\n reasoning_efforts:\n - low\n - medium\n - high\n - xhigh\n - max\n - model_id: claude-opus-5\n name: claude-opus-5\n properties:\n context_length: 1000000\n max_output_tokens: 128000\n reasoning_efforts:\n - low\n - medium\n - high\n - xhigh\n - max\n - model_id: claude-sonnet-4-6\n name: claude-sonnet-4-6\n properties:\n context_length: 1000000\n max_output_tokens: 128000\n reasoning_efforts:\n - low\n - medium\n - high\n - max\n - model_id: claude-sonnet-5\n name: claude-sonnet-5\n properties:\n context_length: 1000000\n max_output_tokens: 128000\n reasoning_efforts:\n - low\n - medium\n - high\n - xhigh\n - max\n - type: google-gemini\n logo: https://assets.production.truefoundry.com/google-gemini.svg\n models:\n - model_id: gemini-3.1-pro-preview\n name: gemini-3-1-pro-preview\n properties:\n context_length: 1048576\n max_output_tokens: 65536\n reasoning_efforts:\n - low\n - medium\n - high\n - model_id: gemini-3.6-flash\n name: gemini-3-6-flash\n properties:\n context_length: 1048576\n max_output_tokens: 65536\n reasoning_efforts:\n - minimal\n - low\n - medium\n - high\n - type: fireworks\n logo: https://assets.production.truefoundry.com/fireworks.svg\n models:\n - model_id: accounts/fireworks/models/deepseek-v4-pro\n name: deepseek-v4-pro\n properties:\n context_length: 1048576\n reasoning_efforts:\n - none\n - low\n - medium\n - high\n - xhigh\n - max\n - model_id: accounts/fireworks/models/glm-5p2\n name: glm-5p2\n properties:\n context_length: 1048576\n reasoning_efforts:\n - none\n - low\n - medium\n - high\n - xhigh\n - max\n - model_id: accounts/fireworks/models/kimi-k2p7-code\n name: kimi-k2p7-code\n properties:\n context_length: 262144\n reasoning_efforts:\n - none\n - low\n - medium\n - high\n - xhigh\n - max\n - model_id: accounts/fireworks/models/kimi-k3\n name: kimi-k3\n properties:\n context_length: 1048576\n reasoning_efforts:\n - none\n - low\n - medium\n - high\n - xhigh\n - max\n - model_id: accounts/fireworks/models/minimax-m3\n name: minimax-m3\n properties:\n context_length: 512000\n reasoning_efforts:\n - none\n - low\n - medium\n - high\n - xhigh\n - max\n - type: zai\n logo: https://assets.production.truefoundry.com/zai.svg\n models:\n - model_id: glm-5-turbo\n name: glm-5-turbo\n properties:\n context_length: 200000\n max_output_tokens: 131072\n - model_id: glm-5.1\n name: glm-5-1\n properties:\n context_length: 200000\n max_output_tokens: 131072\n - model_id: glm-5.2\n name: glm-5-2\n properties:\n context_length: 1000000\n max_output_tokens: 131072\n reasoning_efforts:\n - none\n - minimal\n - low\n - medium\n - high\n - xhigh\n - max\n - model_id: glm-5.3\n name: glm-5-3\n properties:\n context_length: 1000000\n max_output_tokens: 128000\n reasoning_efforts:\n - low\n - high\n - max\n - type: moonshot\n logo: https://assets.production.truefoundry.com/moonshot.png\n models:\n - model_id: kimi-k2.7-code\n name: kimi-k2-7-code\n properties:\n context_length: 262144\n - model_id: kimi-k3\n name: kimi-k3\n properties:\n context_length: 1048576\n reasoning_efforts:\n - low\n - high\n - max\n - type: alibaba\n logo: https://assets.production.truefoundry.com/alibaba.png\n models:\n - model_id: qwen3.7-flash\n name: qwen3-7-flash\n properties:\n context_length: 1000000\n max_output_tokens: 131072\n reasoning_efforts:\n - none\n - minimal\n - low\n - medium\n - high\n - xhigh\n - model_id: qwen3.7-max\n name: qwen3-7-max\n properties:\n context_length: 1000000\n max_output_tokens: 131072\n reasoning_efforts:\n - none\n - minimal\n - low\n - medium\n - high\n - xhigh\n - model_id: qwen3.7-plus\n name: qwen3-7-plus\n properties:\n context_length: 1000000\n max_output_tokens: 131072\n reasoning_efforts:\n - none\n - minimal\n - low\n - medium\n - high\n - xhigh\n - model_id: qwen3.8-max\n name: qwen3-8-max\n properties:\n context_length: 1000000\n max_output_tokens: 131072\n reasoning_efforts:\n - none\n - minimal\n - low\n - medium\n - high\n - xhigh\n - max\n - type: together\n logo: https://assets.production.truefoundry.com/togetherai.svg\n models:\n - model_id: deepseek-ai/DeepSeek-V4-Pro\n name: deepseek-v4-pro\n properties:\n context_length: 512000\n reasoning_efforts:\n - high\n - max\n - model_id: MiniMaxAI/MiniMax-M3\n name: minimax-m3\n properties:\n context_length: 524288\n - model_id: moonshotai/Kimi-K2.7-Code\n name: kimi-k2-7-code\n properties:\n context_length: 262144\n - model_id: moonshotai/Kimi-K3\n name: kimi-k3\n properties:\n context_length: 1048576\n reasoning_efforts:\n - none\n - low\n - medium\n - high\n - max\n - model_id: Qwen/Qwen3.7-Max\n name: qwen3-7-max\n properties:\n context_length: 1000000\n max_output_tokens: 131072\n reasoning_efforts:\n - none\n - minimal\n - low\n - medium\n - high\n - xhigh\n - model_id: Qwen/Qwen3.7-Plus\n name: qwen3-7-plus\n properties:\n context_length: 1000000\n max_output_tokens: 131072\n reasoning_efforts:\n - none\n - minimal\n - low\n - medium\n - high\n - xhigh\n - model_id: zai-org/GLM-5.2\n name: glm-5-2\n properties:\n context_length: 512000\n reasoning_efforts:\n - high\n - max\n";
11076
11090
 
11077
11091
  // src/catalog/ModelCatalog.ts
11078
11092
  var ModelCatalog = class _ModelCatalog {