@data-club/ai-hub-server 0.0.9 → 0.0.10

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 (83) hide show
  1. package/dist/auth/encryption.d.ts +5 -5
  2. package/dist/auth/encryption.js +5 -5
  3. package/dist/auth/userView.d.ts +8 -15
  4. package/dist/auth/userView.d.ts.map +1 -1
  5. package/dist/auth/userView.js +10 -23
  6. package/dist/auth/userView.js.map +1 -1
  7. package/dist/bootstrap.d.ts +2 -8
  8. package/dist/bootstrap.d.ts.map +1 -1
  9. package/dist/bootstrap.js +2 -35
  10. package/dist/bootstrap.js.map +1 -1
  11. package/dist/db/migrate.js +0 -17
  12. package/dist/db/migrate.js.map +1 -1
  13. package/dist/db/schema.d.ts +0 -263
  14. package/dist/db/schema.d.ts.map +1 -1
  15. package/dist/db/schema.js +0 -57
  16. package/dist/db/schema.js.map +1 -1
  17. package/dist/db/seed.d.ts +4 -19
  18. package/dist/db/seed.d.ts.map +1 -1
  19. package/dist/db/seed.js +6 -33
  20. package/dist/db/seed.js.map +1 -1
  21. package/dist/handlers/fetch.d.ts +6 -7
  22. package/dist/handlers/fetch.d.ts.map +1 -1
  23. package/dist/handlers/fetch.js +0 -2
  24. package/dist/handlers/fetch.js.map +1 -1
  25. package/dist/handlers/types.d.ts +5 -6
  26. package/dist/handlers/types.d.ts.map +1 -1
  27. package/dist/letta/client.d.ts +86 -263
  28. package/dist/letta/client.d.ts.map +1 -1
  29. package/dist/letta/client.js +99 -404
  30. package/dist/letta/client.js.map +1 -1
  31. package/dist/letta/index.d.ts +6 -8
  32. package/dist/letta/index.d.ts.map +1 -1
  33. package/dist/letta/index.js +5 -7
  34. package/dist/letta/index.js.map +1 -1
  35. package/dist/letta/sandbox.d.ts +45 -9
  36. package/dist/letta/sandbox.d.ts.map +1 -1
  37. package/dist/letta/sandbox.js +123 -11
  38. package/dist/letta/sandbox.js.map +1 -1
  39. package/dist/letta/types.d.ts +6 -49
  40. package/dist/letta/types.d.ts.map +1 -1
  41. package/dist/letta/types.js +5 -10
  42. package/dist/letta/types.js.map +1 -1
  43. package/dist/observability/logger.d.ts.map +1 -1
  44. package/dist/observability/logger.js +0 -2
  45. package/dist/observability/logger.js.map +1 -1
  46. package/dist/routes/admin/agents.d.ts.map +1 -1
  47. package/dist/routes/admin/agents.js +0 -40
  48. package/dist/routes/admin/agents.js.map +1 -1
  49. package/dist/routes/admin/settings.d.ts +6 -15
  50. package/dist/routes/admin/settings.d.ts.map +1 -1
  51. package/dist/routes/admin/settings.js +9 -107
  52. package/dist/routes/admin/settings.js.map +1 -1
  53. package/dist/routes/auth.d.ts +0 -4
  54. package/dist/routes/auth.d.ts.map +1 -1
  55. package/dist/routes/auth.js +1 -5
  56. package/dist/routes/auth.js.map +1 -1
  57. package/dist/routes/sessions.d.ts.map +1 -1
  58. package/dist/routes/sessions.js +9 -30
  59. package/dist/routes/sessions.js.map +1 -1
  60. package/dist/state/turnRunner.d.ts.map +1 -1
  61. package/dist/state/turnRunner.js +1 -75
  62. package/dist/state/turnRunner.js.map +1 -1
  63. package/package.json +4 -4
  64. package/src/auth/encryption.ts +5 -5
  65. package/src/auth/userView.ts +9 -22
  66. package/src/bootstrap.ts +4 -43
  67. package/src/db/migrate.ts +0 -17
  68. package/src/db/schema.ts +0 -68
  69. package/src/db/seed.ts +6 -47
  70. package/src/handlers/fetch.ts +6 -9
  71. package/src/handlers/types.ts +5 -6
  72. package/src/letta/client.ts +170 -634
  73. package/src/letta/index.ts +8 -21
  74. package/src/letta/sandbox.ts +151 -11
  75. package/src/letta/types.ts +9 -60
  76. package/src/observability/logger.ts +0 -2
  77. package/src/routes/admin/agents.ts +0 -49
  78. package/src/routes/admin/settings.ts +9 -113
  79. package/src/routes/auth.ts +1 -5
  80. package/src/routes/sessions.ts +11 -32
  81. package/src/state/turnRunner.ts +1 -77
  82. package/src/letta/lettaCliShim.mjs +0 -40
  83. package/src/letta/settingsFileSeed.ts +0 -254
@@ -1,7 +1,7 @@
1
1
  /**
2
- * AES-256-GCM helpers for encrypting `admin_setting.letta_api_key_encrypted`
3
- * (§6.8). The key (`AI_HUB_ENCRYPTION_KEY`) lives in env only — separating
4
- * the key-encrypting key from the encrypted blob is the entire point.
2
+ * AES-256-GCM helpers for encrypting secrets at rest in the DB (§6.8).
3
+ * The key (`AI_HUB_ENCRYPTION_KEY`) lives in env only — separating the
4
+ * key-encrypting key from the encrypted blob is the entire point.
5
5
  *
6
6
  * Output layout (a single Buffer): `<12-byte IV><16-byte auth tag><ciphertext>`.
7
7
  * Reading code slices the same offsets back out before calling `decipher`.
@@ -20,8 +20,8 @@
20
20
  * `IV(12) || tag(16) || ciphertext` as a single Buffer.
21
21
  *
22
22
  * @param key - 32-byte encryption key.
23
- * @param plaintext - utf-8 string (typically the Letta API key).
24
- * @returns the binary blob to store in `admin_setting.letta_api_key_encrypted`.
23
+ * @param plaintext - utf-8 string to encrypt.
24
+ * @returns the binary blob to store in the DB.
25
25
  */
26
26
  export declare function encryptString(key: Buffer, plaintext: string): Buffer;
27
27
  /**
@@ -1,7 +1,7 @@
1
1
  /**
2
- * AES-256-GCM helpers for encrypting `admin_setting.letta_api_key_encrypted`
3
- * (§6.8). The key (`AI_HUB_ENCRYPTION_KEY`) lives in env only — separating
4
- * the key-encrypting key from the encrypted blob is the entire point.
2
+ * AES-256-GCM helpers for encrypting secrets at rest in the DB (§6.8).
3
+ * The key (`AI_HUB_ENCRYPTION_KEY`) lives in env only — separating the
4
+ * key-encrypting key from the encrypted blob is the entire point.
5
5
  *
6
6
  * Output layout (a single Buffer): `<12-byte IV><16-byte auth tag><ciphertext>`.
7
7
  * Reading code slices the same offsets back out before calling `decipher`.
@@ -25,8 +25,8 @@ const TAG_BYTES = 16;
25
25
  * `IV(12) || tag(16) || ciphertext` as a single Buffer.
26
26
  *
27
27
  * @param key - 32-byte encryption key.
28
- * @param plaintext - utf-8 string (typically the Letta API key).
29
- * @returns the binary blob to store in `admin_setting.letta_api_key_encrypted`.
28
+ * @param plaintext - utf-8 string to encrypt.
29
+ * @returns the binary blob to store in the DB.
30
30
  */
31
31
  export function encryptString(key, plaintext) {
32
32
  if (key.length !== KEY_BYTES) {
@@ -2,17 +2,13 @@
2
2
  * Builds the `{ user, deployment }` envelope returned by `/auth/me`,
3
3
  * `/auth/me/preferences`, and embedded in `/auth/login`'s response.
4
4
  *
5
- * Two non-obvious concerns this module owns:
5
+ * The non-obvious concern this module owns:
6
6
  *
7
- * 1. **Per-user vs. per-deployment split.** `user` carries strictly per-user
8
- * fields (id, username, role, theme_preference, …); `deployment` carries
9
- * strictly per-deployment fields (theme_default, theme_switcher_enabled,
10
- * letta_ade_url). The split makes it impossible for a client to confuse
11
- * "this is my preference" with "this is how the deployment is configured."
12
- * 2. **Role-gated `letta_ade_url`.** The URL is only included for callers
13
- * with role `power_user` or higher (§6.3.4). For `user`-role callers it's
14
- * omitted entirely (not set to null) so the React client cannot render
15
- * a link element it shouldn't see.
7
+ * **Per-user vs. per-deployment split.** `user` carries strictly per-user
8
+ * fields (id, username, role, theme_preference, …); `deployment` carries
9
+ * strictly per-deployment fields (theme_default, theme_switcher_enabled, …).
10
+ * The split makes it impossible for a client to confuse "this is my
11
+ * preference" with "this is how the deployment is configured."
16
12
  *
17
13
  * The resolved theme is **not** computed here — the client does the simple
18
14
  * precedence calculation client-side from `user.theme_preference +
@@ -31,17 +27,14 @@ import type { AdminSettingRow, UserRow } from "../db/schema.js";
31
27
  */
32
28
  export declare function buildUserView(row: UserRow): AIHubUser;
33
29
  /**
34
- * Builds the per-deployment context payload. The `letta_ade_url` field is
35
- * gated by `callerRole >= power_user` (§6.3.4).
30
+ * Builds the per-deployment context payload.
36
31
  *
37
32
  * @param settings - the `admin_setting` singleton row (pass null only when
38
33
  * the row genuinely doesn't exist — first-boot before the seed has run,
39
34
  * which shouldn't happen in practice).
40
- * @param callerRole - role from the JWT's claim, used to gate
41
- * `letta_ade_url`.
42
35
  * @returns the wire-format `AIHubDeployment`.
43
36
  */
44
- export declare function buildDeploymentView(settings: AdminSettingRow | null, callerRole: UserRow["role"]): AIHubDeployment;
37
+ export declare function buildDeploymentView(settings: AdminSettingRow | null): AIHubDeployment;
45
38
  /**
46
39
  * Convenience: builds both halves and returns them as the
47
40
  * `AIHubAuthContext` envelope `/auth/me` (and `/auth/login` post-change)
@@ -1 +1 @@
1
- {"version":3,"file":"userView.d.ts","sourceRoot":"","sources":["../../src/auth/userView.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEtF,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEhE;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,CAQrD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,GAAG,IAAI,EAChC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,GAC1B,eAAe,CAcjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,eAAe,GAAG,IAAI,GAC/B,gBAAgB,CAKlB"}
1
+ {"version":3,"file":"userView.d.ts","sourceRoot":"","sources":["../../src/auth/userView.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEtF,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEhE;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,CAQrD;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,GAAG,IAAI,GAC/B,eAAe,CASjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,eAAe,GAAG,IAAI,GAC/B,gBAAgB,CAKlB"}
@@ -2,17 +2,13 @@
2
2
  * Builds the `{ user, deployment }` envelope returned by `/auth/me`,
3
3
  * `/auth/me/preferences`, and embedded in `/auth/login`'s response.
4
4
  *
5
- * Two non-obvious concerns this module owns:
5
+ * The non-obvious concern this module owns:
6
6
  *
7
- * 1. **Per-user vs. per-deployment split.** `user` carries strictly per-user
8
- * fields (id, username, role, theme_preference, …); `deployment` carries
9
- * strictly per-deployment fields (theme_default, theme_switcher_enabled,
10
- * letta_ade_url). The split makes it impossible for a client to confuse
11
- * "this is my preference" with "this is how the deployment is configured."
12
- * 2. **Role-gated `letta_ade_url`.** The URL is only included for callers
13
- * with role `power_user` or higher (§6.3.4). For `user`-role callers it's
14
- * omitted entirely (not set to null) so the React client cannot render
15
- * a link element it shouldn't see.
7
+ * **Per-user vs. per-deployment split.** `user` carries strictly per-user
8
+ * fields (id, username, role, theme_preference, …); `deployment` carries
9
+ * strictly per-deployment fields (theme_default, theme_switcher_enabled, …).
10
+ * The split makes it impossible for a client to confuse "this is my
11
+ * preference" with "this is how the deployment is configured."
16
12
  *
17
13
  * The resolved theme is **not** computed here — the client does the simple
18
14
  * precedence calculation client-side from `user.theme_preference +
@@ -37,18 +33,15 @@ export function buildUserView(row) {
37
33
  };
38
34
  }
39
35
  /**
40
- * Builds the per-deployment context payload. The `letta_ade_url` field is
41
- * gated by `callerRole >= power_user` (§6.3.4).
36
+ * Builds the per-deployment context payload.
42
37
  *
43
38
  * @param settings - the `admin_setting` singleton row (pass null only when
44
39
  * the row genuinely doesn't exist — first-boot before the seed has run,
45
40
  * which shouldn't happen in practice).
46
- * @param callerRole - role from the JWT's claim, used to gate
47
- * `letta_ade_url`.
48
41
  * @returns the wire-format `AIHubDeployment`.
49
42
  */
50
- export function buildDeploymentView(settings, callerRole) {
51
- const out = {
43
+ export function buildDeploymentView(settings) {
44
+ return {
52
45
  theme_default: settings?.themeDefault ?? "light",
53
46
  theme_switcher_enabled: settings?.themeSwitcherEnabled ?? true,
54
47
  language_default: settings?.languageDefault ?? "en",
@@ -56,12 +49,6 @@ export function buildDeploymentView(settings, callerRole) {
56
49
  default_agent_id: settings?.defaultAgentId ?? null,
57
50
  agent_switcher_enabled: settings?.agentSwitcherEnabled ?? true,
58
51
  };
59
- if (callerRole !== "user") {
60
- const ade = settings?.lettaAdeUrl ?? null;
61
- if (ade)
62
- out.letta_ade_url = ade;
63
- }
64
- return out;
65
52
  }
66
53
  /**
67
54
  * Convenience: builds both halves and returns them as the
@@ -75,7 +62,7 @@ export function buildDeploymentView(settings, callerRole) {
75
62
  export function buildAuthContext(row, settings) {
76
63
  return {
77
64
  user: buildUserView(row),
78
- deployment: buildDeploymentView(settings, row.role),
65
+ deployment: buildDeploymentView(settings),
79
66
  };
80
67
  }
81
68
  //# sourceMappingURL=userView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"userView.js","sourceRoot":"","sources":["../../src/auth/userView.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAMH;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,YAAY,EAAE,GAAG,CAAC,WAAW,IAAI,IAAI;QACrC,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,gBAAgB,EAAE,GAAG,CAAC,eAAe,IAAI,IAAI;KAC9C,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAgC,EAChC,UAA2B;IAE3B,MAAM,GAAG,GAAoB;QAC3B,aAAa,EAAE,QAAQ,EAAE,YAAY,IAAI,OAAO;QAChD,sBAAsB,EAAE,QAAQ,EAAE,oBAAoB,IAAI,IAAI;QAC9D,gBAAgB,EAAE,QAAQ,EAAE,eAAe,IAAI,IAAI;QACnD,oBAAoB,EAAE,QAAQ,EAAE,kBAAkB,IAAI,KAAK;QAC3D,gBAAgB,EAAE,QAAQ,EAAE,cAAc,IAAI,IAAI;QAClD,sBAAsB,EAAE,QAAQ,EAAE,oBAAoB,IAAI,IAAI;KAC/D,CAAC;IACF,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,QAAQ,EAAE,WAAW,IAAI,IAAI,CAAC;QAC1C,IAAI,GAAG;YAAE,GAAG,CAAC,aAAa,GAAG,GAAG,CAAC;IACnC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAC9B,GAAY,EACZ,QAAgC;IAEhC,OAAO;QACL,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC;QACxB,UAAU,EAAE,mBAAmB,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC;KACpD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"userView.js","sourceRoot":"","sources":["../../src/auth/userView.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAMH;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,YAAY,EAAE,GAAG,CAAC,WAAW,IAAI,IAAI;QACrC,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,gBAAgB,EAAE,GAAG,CAAC,eAAe,IAAI,IAAI;KAC9C,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAgC;IAEhC,OAAO;QACL,aAAa,EAAE,QAAQ,EAAE,YAAY,IAAI,OAAO;QAChD,sBAAsB,EAAE,QAAQ,EAAE,oBAAoB,IAAI,IAAI;QAC9D,gBAAgB,EAAE,QAAQ,EAAE,eAAe,IAAI,IAAI;QACnD,oBAAoB,EAAE,QAAQ,EAAE,kBAAkB,IAAI,KAAK;QAC3D,gBAAgB,EAAE,QAAQ,EAAE,cAAc,IAAI,IAAI;QAClD,sBAAsB,EAAE,QAAQ,EAAE,oBAAoB,IAAI,IAAI;KAC/D,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAC9B,GAAY,EACZ,QAAgC;IAEhC,OAAO;QACL,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC;QACxB,UAAU,EAAE,mBAAmB,CAAC,QAAQ,CAAC;KAC1C,CAAC;AACJ,CAAC"}
@@ -34,12 +34,6 @@ export interface EnvConfig {
34
34
  signingKeyFromEnv: Buffer | undefined;
35
35
  /** Bootstrap-only metrics scrape token (env value). */
36
36
  metricsScrapeTokenFromEnv: string | undefined;
37
- /** Letta API key from env. */
38
- lettaApiKey: string | undefined;
39
- /** Letta base URL from env. */
40
- lettaBaseUrl: string | undefined;
41
- /** Letta ADE URL override from env. */
42
- lettaAdeUrl: string | undefined;
43
37
  /** Pino log level. */
44
38
  logLevel: string;
45
39
  /** CORS origins (comma-separated). */
@@ -84,8 +78,8 @@ export interface BootServerOptions {
84
78
  databaseUrl?: string;
85
79
  /**
86
80
  * Override the Letta client (§6.4). Tests pass a mock so the server
87
- * never reaches a real Letta. Production omits this — the default reads
88
- * `admin_setting.letta_base_url` + decrypted API key on each use.
81
+ * never reaches a real Letta Code runtime. Production omits this — the
82
+ * default drives Letta Code's server-less local backend.
89
83
  */
90
84
  lettaClient?: LettaClient;
91
85
  }
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAyB,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE3E,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAMtE,iEAAiE;AACjE,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAEzD;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,aAAa,EAAE,MAAM,CAAC;IACtB,uDAAuD;IACvD,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,uDAAuD;IACvD,yBAAyB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,8BAA8B;IAC9B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,+BAA+B;IAC/B,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,uCAAuC;IACvC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,sBAAsB;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,CAiCtD;AAyDD,yEAAyE;AACzE,MAAM,WAAW,YAAY;IAC3B,4DAA4D;IAC5D,YAAY,EAAE,YAAY,CAAC;IAC3B,oEAAoE;IACpE,EAAE,EAAE,SAAS,CAAC;IACd,iCAAiC;IACjC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAC1B,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,yBAAyB;IACzB,MAAM,EAAE,SAAS,CAAC;IAClB,iDAAiD;IACjD,UAAU,EAAE,UAAU,CAAC;IACvB,4DAA4D;IAC5D,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,4EAA4E;AAC5E,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,UAAU,CAC9B,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,YAAY,CAAC,CA6CvB"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAyB,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE3E,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAMtE,iEAAiE;AACjE,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAEzD;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,aAAa,EAAE,MAAM,CAAC;IACtB,uDAAuD;IACvD,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,uDAAuD;IACvD,yBAAyB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,sBAAsB;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,CAqBtD;AAuCD,yEAAyE;AACzE,MAAM,WAAW,YAAY;IAC3B,4DAA4D;IAC5D,YAAY,EAAE,YAAY,CAAC;IAC3B,oEAAoE;IACpE,EAAE,EAAE,SAAS,CAAC;IACd,iCAAiC;IACjC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAC1B,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,yBAAyB;IACzB,MAAM,EAAE,SAAS,CAAC;IAClB,iDAAiD;IACjD,UAAU,EAAE,UAAU,CAAC;IACvB,4DAA4D;IAC5D,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,4EAA4E;AAC5E,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,UAAU,CAC9B,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,YAAY,CAAC,CA0CvB"}
package/dist/bootstrap.js CHANGED
@@ -40,18 +40,6 @@ export function parseEnvConfig(env) {
40
40
  encryptionKey,
41
41
  signingKeyFromEnv: parseSigningKey(env.SERVICE_TOKEN_SIGNING_KEY),
42
42
  metricsScrapeTokenFromEnv: env.METRICS_SCRAPE_TOKEN || undefined,
43
- lettaApiKey: env.LETTA_API_KEY || undefined,
44
- // Letta Code's CLI reads `LETTA_BASE_URL` from process.env and
45
- // appends `/v1/...` to it. Operators who set the env value
46
- // matching the Letta Client SDK's expectation (`http://host/v1`)
47
- // would otherwise get double-v1 URLs in the spawned CLI subprocess.
48
- // Strip the trailing /v1 once at boot so both ai-hub-server's own
49
- // direct API calls (already strip defensively in `letta/client.ts`)
50
- // and Letta Code subprocess spawns see the bare host:port form.
51
- // Mutating process.env here propagates to every later subprocess
52
- // spawn — Letta Code SDK forwards `{...process.env}` verbatim.
53
- lettaBaseUrl: normalizeLettaBaseUrl(env.LETTA_BASE_URL),
54
- lettaAdeUrl: env.LETTA_ADE_URL || undefined,
55
43
  logLevel: env.LOG_LEVEL ?? "info",
56
44
  corsAllowedOrigins: env.CORS_ALLOWED_ORIGINS ?? "",
57
45
  };
@@ -67,24 +55,6 @@ export function parseEnvConfig(env) {
67
55
  * @param raw - the raw env value, if present.
68
56
  * @returns the decoded key, or undefined.
69
57
  */
70
- /**
71
- * Strips a trailing `/v1` from `LETTA_BASE_URL` and writes the cleaned
72
- * value back to `process.env` so subprocess spawns inherit the normalized
73
- * form. Idempotent — bare-host inputs pass through unchanged. Returns
74
- * the normalized value (or `undefined` when the env var is unset).
75
- *
76
- * @param raw - the raw `process.env.LETTA_BASE_URL`, possibly undefined.
77
- * @returns the normalized base URL, or undefined when unset.
78
- */
79
- function normalizeLettaBaseUrl(raw) {
80
- if (!raw)
81
- return undefined;
82
- const stripped = raw.replace(/\/v1\/?$/i, "");
83
- if (stripped !== raw) {
84
- process.env.LETTA_BASE_URL = stripped;
85
- }
86
- return stripped;
87
- }
88
58
  function parseSigningKey(raw) {
89
59
  if (!raw)
90
60
  return undefined;
@@ -130,9 +100,6 @@ export async function bootServer(opts = {}) {
130
100
  encryptionKey: config.encryptionKey,
131
101
  signingKeyFromEnv: config.signingKeyFromEnv,
132
102
  metricsScrapeTokenFromEnv: config.metricsScrapeTokenFromEnv,
133
- lettaApiKey: config.lettaApiKey,
134
- lettaBaseUrl: config.lettaBaseUrl,
135
- lettaAdeUrl: config.lettaAdeUrl,
136
103
  }, logger);
137
104
  const fetchHandler = createFetchHandler({
138
105
  db: handle.db,
@@ -142,8 +109,8 @@ export async function bootServer(opts = {}) {
142
109
  // Pass the booted env through as the runtime fallback source. Tests
143
110
  // synthesize an env record; production uses process.env (the default
144
111
  // inside createFetchHandler). Threading it explicitly here means
145
- // bootTestServer's `env:` parameter actually reaches resolveApiKey
146
- // in letta/client.ts.
112
+ // bootTestServer's `env:` parameter actually reaches the runtime
113
+ // env consumers (letta/client.ts config, resolveFilesDir).
147
114
  envSource: env,
148
115
  ...(opts.lettaClient !== undefined ? { lettaClient: opts.lettaClient } : {}),
149
116
  });
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
@@ -129,9 +129,6 @@ const MIGRATIONS = [
129
129
 
130
130
  CREATE TABLE admin_setting (
131
131
  id INTEGER NOT NULL PRIMARY KEY,
132
- letta_api_key_encrypted BLOB,
133
- letta_base_url TEXT,
134
- letta_ade_url TEXT,
135
132
  feature_toggles TEXT NOT NULL DEFAULT '{}',
136
133
  theme_switcher_enabled INTEGER NOT NULL DEFAULT 1,
137
134
  theme_default TEXT NOT NULL DEFAULT 'light',
@@ -153,20 +150,6 @@ const MIGRATIONS = [
153
150
  CHECK (system_override IS NOT NULL OR user_override IS NOT NULL)
154
151
  );
155
152
 
156
- CREATE TABLE message_usage (
157
- letta_message_id TEXT NOT NULL PRIMARY KEY,
158
- session_id TEXT NOT NULL REFERENCES session(id) ON DELETE CASCADE,
159
- prompt_tokens INTEGER,
160
- completion_tokens INTEGER,
161
- total_tokens INTEGER,
162
- cached_input_tokens INTEGER,
163
- cache_write_tokens INTEGER,
164
- reasoning_tokens INTEGER,
165
- context_tokens INTEGER,
166
- run_id TEXT,
167
- created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
168
- );
169
- CREATE INDEX message_usage_session_idx ON message_usage(session_id);
170
153
  `,
171
154
  },
172
155
  {
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/db/migrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,MAAgB;IAC5C,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;IAEvB,GAAG,CAAC,IAAI,CAAC;;;;;;GAMR,CAAC,CAAC;IAEH,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,GAAG;aAChB,OAAO,CAAC,iDAAiD,CAAC;aAC1D,GAAG,CAAC,CAAC,CAAC,IAAI,CAA8B,CAAC;QAC5C,IAAI,OAAO;YAAE,SAAS;QACtB,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE;YACjC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAChB,GAAG;iBACA,OAAO,CAAC,kDAAkD,CAAC;iBAC3D,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;QACH,KAAK,EAAE,CAAC;IACV,CAAC;AACH,CAAC;AAaD;;;;GAIG;AACH,MAAM,UAAU,GAA6B;IAC3C;QACE,IAAI,EAAE,WAAW;QACjB,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6GJ;KACF;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;KAoBJ;KACF;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,GAAG,EAAE;;;KAGJ;KACF;IACD;QACE,IAAI,EAAE,6BAA6B;QACnC,GAAG,EAAE;;;KAGJ;KACF;IACD;QACE,IAAI,EAAE,+BAA+B;QACrC,GAAG,EAAE;;;;KAIJ;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/db/migrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,MAAgB;IAC5C,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;IAEvB,GAAG,CAAC,IAAI,CAAC;;;;;;GAMR,CAAC,CAAC;IAEH,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,GAAG;aAChB,OAAO,CAAC,iDAAiD,CAAC;aAC1D,GAAG,CAAC,CAAC,CAAC,IAAI,CAA8B,CAAC;QAC5C,IAAI,OAAO;YAAE,SAAS;QACtB,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE;YACjC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAChB,GAAG;iBACA,OAAO,CAAC,kDAAkD,CAAC;iBAC3D,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;QACH,KAAK,EAAE,CAAC;IACV,CAAC;AACH,CAAC;AAaD;;;;GAIG;AACH,MAAM,UAAU,GAA6B;IAC3C;QACE,IAAI,EAAE,WAAW;QACjB,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4FJ;KACF;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;KAoBJ;KACF;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,GAAG,EAAE;;;KAGJ;KACF;IACD;QACE,IAAI,EAAE,6BAA6B;QACnC,GAAG,EAAE;;;KAGJ;KACF;IACD;QACE,IAAI,EAAE,+BAA+B;QACrC,GAAG,EAAE;;;;KAIJ;KACF;CACF,CAAC"}
@@ -1013,57 +1013,6 @@ export declare const adminSetting: import("drizzle-orm/sqlite-core").SQLiteTable
1013
1013
  identity: undefined;
1014
1014
  generated: undefined;
1015
1015
  }, object>;
1016
- lettaApiKeyEncrypted: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1017
- name: "letta_api_key_encrypted";
1018
- tableName: "admin_setting";
1019
- dataType: "buffer";
1020
- columnType: "SQLiteBlobBuffer";
1021
- data: Buffer<ArrayBufferLike>;
1022
- driverParam: Buffer<ArrayBufferLike>;
1023
- notNull: false;
1024
- hasDefault: false;
1025
- isPrimaryKey: false;
1026
- isAutoincrement: false;
1027
- hasRuntimeDefault: false;
1028
- enumValues: undefined;
1029
- baseColumn: never;
1030
- identity: undefined;
1031
- generated: undefined;
1032
- }, object>;
1033
- lettaBaseUrl: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1034
- name: "letta_base_url";
1035
- tableName: "admin_setting";
1036
- dataType: "string";
1037
- columnType: "SQLiteText";
1038
- data: string;
1039
- driverParam: string;
1040
- notNull: false;
1041
- hasDefault: false;
1042
- isPrimaryKey: false;
1043
- isAutoincrement: false;
1044
- hasRuntimeDefault: false;
1045
- enumValues: [string, ...string[]];
1046
- baseColumn: never;
1047
- identity: undefined;
1048
- generated: undefined;
1049
- }, object>;
1050
- lettaAdeUrl: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1051
- name: "letta_ade_url";
1052
- tableName: "admin_setting";
1053
- dataType: "string";
1054
- columnType: "SQLiteText";
1055
- data: string;
1056
- driverParam: string;
1057
- notNull: false;
1058
- hasDefault: false;
1059
- isPrimaryKey: false;
1060
- isAutoincrement: false;
1061
- hasRuntimeDefault: false;
1062
- enumValues: [string, ...string[]];
1063
- baseColumn: never;
1064
- identity: undefined;
1065
- generated: undefined;
1066
- }, object>;
1067
1016
  featureToggles: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1068
1017
  name: "feature_toggles";
1069
1018
  tableName: "admin_setting";
@@ -1456,218 +1405,6 @@ export type AdminSettingInsert = typeof adminSetting.$inferInsert;
1456
1405
  export type MessageOverrideRow = typeof messageOverride.$inferSelect;
1457
1406
  /** Insert shape for the `message_override` table. */
1458
1407
  export type MessageOverrideInsert = typeof messageOverride.$inferInsert;
1459
- /**
1460
- * Provider-reported per-turn token usage, stamped on the LAST assistant
1461
- * message of each turn. Surfaced to the chat UI via a hover badge so
1462
- * users can see (a) total tokens consumed and (b) prompt-cache
1463
- * hit/miss split (Anthropic + OpenAI + Gemini all report
1464
- * `cached_input_tokens`; Anthropic also reports `cache_write_tokens`).
1465
- *
1466
- * The runner fetches Letta's `GET /v1/runs/{run_id}/messages` after
1467
- * the turn ends, finds the `usage_statistics`-typed message, and
1468
- * inserts one row here keyed by the last assistant message's Letta id.
1469
- *
1470
- * @see SPECIFICATIONS.md §9 — `usage` SSE event
1471
- * @see docs/server/chat-sse.md — wire protocol
1472
- */
1473
- export declare const messageUsage: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
1474
- name: "message_usage";
1475
- schema: undefined;
1476
- columns: {
1477
- lettaMessageId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1478
- name: "letta_message_id";
1479
- tableName: "message_usage";
1480
- dataType: "string";
1481
- columnType: "SQLiteText";
1482
- data: string;
1483
- driverParam: string;
1484
- notNull: true;
1485
- hasDefault: false;
1486
- isPrimaryKey: true;
1487
- isAutoincrement: false;
1488
- hasRuntimeDefault: false;
1489
- enumValues: [string, ...string[]];
1490
- baseColumn: never;
1491
- identity: undefined;
1492
- generated: undefined;
1493
- }, object>;
1494
- sessionId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1495
- name: "session_id";
1496
- tableName: "message_usage";
1497
- dataType: "string";
1498
- columnType: "SQLiteText";
1499
- data: string;
1500
- driverParam: string;
1501
- notNull: true;
1502
- hasDefault: false;
1503
- isPrimaryKey: false;
1504
- isAutoincrement: false;
1505
- hasRuntimeDefault: false;
1506
- enumValues: [string, ...string[]];
1507
- baseColumn: never;
1508
- identity: undefined;
1509
- generated: undefined;
1510
- }, object>;
1511
- promptTokens: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1512
- name: "prompt_tokens";
1513
- tableName: "message_usage";
1514
- dataType: "number";
1515
- columnType: "SQLiteInteger";
1516
- data: number;
1517
- driverParam: number;
1518
- notNull: false;
1519
- hasDefault: false;
1520
- isPrimaryKey: false;
1521
- isAutoincrement: false;
1522
- hasRuntimeDefault: false;
1523
- enumValues: undefined;
1524
- baseColumn: never;
1525
- identity: undefined;
1526
- generated: undefined;
1527
- }, object>;
1528
- completionTokens: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1529
- name: "completion_tokens";
1530
- tableName: "message_usage";
1531
- dataType: "number";
1532
- columnType: "SQLiteInteger";
1533
- data: number;
1534
- driverParam: number;
1535
- notNull: false;
1536
- hasDefault: false;
1537
- isPrimaryKey: false;
1538
- isAutoincrement: false;
1539
- hasRuntimeDefault: false;
1540
- enumValues: undefined;
1541
- baseColumn: never;
1542
- identity: undefined;
1543
- generated: undefined;
1544
- }, object>;
1545
- totalTokens: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1546
- name: "total_tokens";
1547
- tableName: "message_usage";
1548
- dataType: "number";
1549
- columnType: "SQLiteInteger";
1550
- data: number;
1551
- driverParam: number;
1552
- notNull: false;
1553
- hasDefault: false;
1554
- isPrimaryKey: false;
1555
- isAutoincrement: false;
1556
- hasRuntimeDefault: false;
1557
- enumValues: undefined;
1558
- baseColumn: never;
1559
- identity: undefined;
1560
- generated: undefined;
1561
- }, object>;
1562
- cachedInputTokens: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1563
- name: "cached_input_tokens";
1564
- tableName: "message_usage";
1565
- dataType: "number";
1566
- columnType: "SQLiteInteger";
1567
- data: number;
1568
- driverParam: number;
1569
- notNull: false;
1570
- hasDefault: false;
1571
- isPrimaryKey: false;
1572
- isAutoincrement: false;
1573
- hasRuntimeDefault: false;
1574
- enumValues: undefined;
1575
- baseColumn: never;
1576
- identity: undefined;
1577
- generated: undefined;
1578
- }, object>;
1579
- cacheWriteTokens: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1580
- name: "cache_write_tokens";
1581
- tableName: "message_usage";
1582
- dataType: "number";
1583
- columnType: "SQLiteInteger";
1584
- data: number;
1585
- driverParam: number;
1586
- notNull: false;
1587
- hasDefault: false;
1588
- isPrimaryKey: false;
1589
- isAutoincrement: false;
1590
- hasRuntimeDefault: false;
1591
- enumValues: undefined;
1592
- baseColumn: never;
1593
- identity: undefined;
1594
- generated: undefined;
1595
- }, object>;
1596
- reasoningTokens: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1597
- name: "reasoning_tokens";
1598
- tableName: "message_usage";
1599
- dataType: "number";
1600
- columnType: "SQLiteInteger";
1601
- data: number;
1602
- driverParam: number;
1603
- notNull: false;
1604
- hasDefault: false;
1605
- isPrimaryKey: false;
1606
- isAutoincrement: false;
1607
- hasRuntimeDefault: false;
1608
- enumValues: undefined;
1609
- baseColumn: never;
1610
- identity: undefined;
1611
- generated: undefined;
1612
- }, object>;
1613
- contextTokens: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1614
- name: "context_tokens";
1615
- tableName: "message_usage";
1616
- dataType: "number";
1617
- columnType: "SQLiteInteger";
1618
- data: number;
1619
- driverParam: number;
1620
- notNull: false;
1621
- hasDefault: false;
1622
- isPrimaryKey: false;
1623
- isAutoincrement: false;
1624
- hasRuntimeDefault: false;
1625
- enumValues: undefined;
1626
- baseColumn: never;
1627
- identity: undefined;
1628
- generated: undefined;
1629
- }, object>;
1630
- runId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1631
- name: "run_id";
1632
- tableName: "message_usage";
1633
- dataType: "string";
1634
- columnType: "SQLiteText";
1635
- data: string;
1636
- driverParam: string;
1637
- notNull: false;
1638
- hasDefault: false;
1639
- isPrimaryKey: false;
1640
- isAutoincrement: false;
1641
- hasRuntimeDefault: false;
1642
- enumValues: [string, ...string[]];
1643
- baseColumn: never;
1644
- identity: undefined;
1645
- generated: undefined;
1646
- }, object>;
1647
- createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
1648
- name: "created_at";
1649
- tableName: "message_usage";
1650
- dataType: "string";
1651
- columnType: "SQLiteText";
1652
- data: string;
1653
- driverParam: string;
1654
- notNull: true;
1655
- hasDefault: true;
1656
- isPrimaryKey: false;
1657
- isAutoincrement: false;
1658
- hasRuntimeDefault: false;
1659
- enumValues: [string, ...string[]];
1660
- baseColumn: never;
1661
- identity: undefined;
1662
- generated: undefined;
1663
- }, object>;
1664
- };
1665
- dialect: "sqlite";
1666
- }>;
1667
- /** Row shape for the `message_usage` table. */
1668
- export type MessageUsageRow = typeof messageUsage.$inferSelect;
1669
- /** Insert shape for the `message_usage` table. */
1670
- export type MessageUsageInsert = typeof messageUsage.$inferInsert;
1671
1408
  /**
1672
1409
  * Admin-curated **rotating starting message** — a prompt that ai-hub runs
1673
1410
  * against a Letta agent on a schedule, capturing the agent's reply as a
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"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"}