@ash-ai/server 0.0.3 → 0.0.5

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 (184) hide show
  1. package/dist/__tests__/attachments.test.d.ts +2 -0
  2. package/dist/__tests__/attachments.test.d.ts.map +1 -0
  3. package/dist/__tests__/attachments.test.js +57 -0
  4. package/dist/__tests__/attachments.test.js.map +1 -0
  5. package/dist/__tests__/bundle.test.d.ts +2 -0
  6. package/dist/__tests__/bundle.test.d.ts.map +1 -0
  7. package/dist/__tests__/bundle.test.js +55 -0
  8. package/dist/__tests__/bundle.test.js.map +1 -0
  9. package/dist/__tests__/coordinator.test.d.ts +2 -0
  10. package/dist/__tests__/coordinator.test.d.ts.map +1 -0
  11. package/dist/__tests__/coordinator.test.js +283 -0
  12. package/dist/__tests__/coordinator.test.js.map +1 -0
  13. package/dist/__tests__/crypto.test.d.ts +2 -0
  14. package/dist/__tests__/crypto.test.d.ts.map +1 -0
  15. package/dist/__tests__/crypto.test.js +72 -0
  16. package/dist/__tests__/crypto.test.js.map +1 -0
  17. package/dist/__tests__/file-store.test.d.ts +2 -0
  18. package/dist/__tests__/file-store.test.d.ts.map +1 -0
  19. package/dist/__tests__/file-store.test.js +105 -0
  20. package/dist/__tests__/file-store.test.js.map +1 -0
  21. package/dist/__tests__/files.test.js +18 -5
  22. package/dist/__tests__/files.test.js.map +1 -1
  23. package/dist/__tests__/multi-tenant.test.js +15 -1
  24. package/dist/__tests__/multi-tenant.test.js.map +1 -1
  25. package/dist/__tests__/openapi.test.js +6 -3
  26. package/dist/__tests__/openapi.test.js.map +1 -1
  27. package/dist/__tests__/queue.test.d.ts +2 -0
  28. package/dist/__tests__/queue.test.d.ts.map +1 -0
  29. package/dist/__tests__/queue.test.js +151 -0
  30. package/dist/__tests__/queue.test.js.map +1 -0
  31. package/dist/__tests__/usage.test.d.ts +2 -0
  32. package/dist/__tests__/usage.test.d.ts.map +1 -0
  33. package/dist/__tests__/usage.test.js +74 -0
  34. package/dist/__tests__/usage.test.js.map +1 -0
  35. package/dist/auth.d.ts +6 -2
  36. package/dist/auth.d.ts.map +1 -1
  37. package/dist/auth.js +23 -5
  38. package/dist/auth.js.map +1 -1
  39. package/dist/crypto.d.ts +14 -0
  40. package/dist/crypto.d.ts.map +1 -0
  41. package/dist/crypto.js +45 -0
  42. package/dist/crypto.js.map +1 -0
  43. package/dist/db/drizzle-db.d.ts +129 -0
  44. package/dist/db/drizzle-db.d.ts.map +1 -0
  45. package/dist/db/drizzle-db.js +789 -0
  46. package/dist/db/drizzle-db.js.map +1 -0
  47. package/dist/db/index.d.ts +129 -3
  48. package/dist/db/index.d.ts.map +1 -1
  49. package/dist/db/index.js +147 -8
  50. package/dist/db/index.js.map +1 -1
  51. package/dist/db/schema.pg.d.ts +1642 -0
  52. package/dist/db/schema.pg.d.ts.map +1 -0
  53. package/dist/db/schema.pg.js +151 -0
  54. package/dist/db/schema.pg.js.map +1 -0
  55. package/dist/db/schema.sqlite.d.ts +1800 -0
  56. package/dist/db/schema.sqlite.d.ts.map +1 -0
  57. package/dist/db/schema.sqlite.js +151 -0
  58. package/dist/db/schema.sqlite.js.map +1 -0
  59. package/dist/index.d.ts +2 -1
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +16 -95
  62. package/dist/index.js.map +1 -1
  63. package/dist/queue/processor.d.ts +51 -0
  64. package/dist/queue/processor.d.ts.map +1 -0
  65. package/dist/queue/processor.js +98 -0
  66. package/dist/queue/processor.js.map +1 -0
  67. package/dist/routes/attachments.d.ts +3 -0
  68. package/dist/routes/attachments.d.ts.map +1 -0
  69. package/dist/routes/attachments.js +168 -0
  70. package/dist/routes/attachments.js.map +1 -0
  71. package/dist/routes/credentials.d.ts +11 -0
  72. package/dist/routes/credentials.d.ts.map +1 -0
  73. package/dist/routes/credentials.js +120 -0
  74. package/dist/routes/credentials.js.map +1 -0
  75. package/dist/routes/files.d.ts.map +1 -1
  76. package/dist/routes/files.js +97 -31
  77. package/dist/routes/files.js.map +1 -1
  78. package/dist/routes/health.d.ts.map +1 -1
  79. package/dist/routes/health.js +9 -1
  80. package/dist/routes/health.js.map +1 -1
  81. package/dist/routes/queue.d.ts +3 -0
  82. package/dist/routes/queue.d.ts.map +1 -0
  83. package/dist/routes/queue.js +144 -0
  84. package/dist/routes/queue.js.map +1 -0
  85. package/dist/routes/runners.d.ts +5 -0
  86. package/dist/routes/runners.d.ts.map +1 -1
  87. package/dist/routes/runners.js +42 -5
  88. package/dist/routes/runners.js.map +1 -1
  89. package/dist/routes/sessions.d.ts +2 -1
  90. package/dist/routes/sessions.d.ts.map +1 -1
  91. package/dist/routes/sessions.js +218 -12
  92. package/dist/routes/sessions.js.map +1 -1
  93. package/dist/routes/usage.d.ts +3 -0
  94. package/dist/routes/usage.d.ts.map +1 -0
  95. package/dist/routes/usage.js +64 -0
  96. package/dist/routes/usage.js.map +1 -0
  97. package/dist/routes/workspace.d.ts +4 -0
  98. package/dist/routes/workspace.d.ts.map +1 -0
  99. package/dist/routes/workspace.js +123 -0
  100. package/dist/routes/workspace.js.map +1 -0
  101. package/dist/runner/coordinator.d.ts +77 -9
  102. package/dist/runner/coordinator.d.ts.map +1 -1
  103. package/dist/runner/coordinator.js +163 -89
  104. package/dist/runner/coordinator.js.map +1 -1
  105. package/dist/runner/local-backend.d.ts +1 -0
  106. package/dist/runner/local-backend.d.ts.map +1 -1
  107. package/dist/runner/local-backend.js +8 -0
  108. package/dist/runner/local-backend.js.map +1 -1
  109. package/dist/runner/remote-backend.d.ts +2 -0
  110. package/dist/runner/remote-backend.d.ts.map +1 -1
  111. package/dist/runner/remote-backend.js +9 -0
  112. package/dist/runner/remote-backend.js.map +1 -1
  113. package/dist/runner/runner-client.d.ts +6 -0
  114. package/dist/runner/runner-client.d.ts.map +1 -1
  115. package/dist/runner/runner-client.js +15 -0
  116. package/dist/runner/runner-client.js.map +1 -1
  117. package/dist/runner/types.d.ts +6 -0
  118. package/dist/runner/types.d.ts.map +1 -1
  119. package/dist/schemas.d.ts.map +1 -1
  120. package/dist/schemas.js +85 -1
  121. package/dist/schemas.js.map +1 -1
  122. package/dist/server.d.ts +31 -0
  123. package/dist/server.d.ts.map +1 -0
  124. package/dist/server.js +176 -0
  125. package/dist/server.js.map +1 -0
  126. package/dist/telemetry/exporter.d.ts +16 -0
  127. package/dist/telemetry/exporter.d.ts.map +1 -0
  128. package/dist/telemetry/exporter.js +89 -0
  129. package/dist/telemetry/exporter.js.map +1 -0
  130. package/dist/usage/extractor.d.ts +18 -0
  131. package/dist/usage/extractor.d.ts.map +1 -0
  132. package/dist/usage/extractor.js +48 -0
  133. package/dist/usage/extractor.js.map +1 -0
  134. package/drizzle/pg/0000_thick_loners.sql +75 -0
  135. package/drizzle/pg/0001_rare_lester.sql +13 -0
  136. package/drizzle/pg/0002_short_shinko_yamashiro.sql +1 -0
  137. package/drizzle/pg/0003_remarkable_mastermind.sql +14 -0
  138. package/drizzle/pg/0004_warm_reaper.sql +18 -0
  139. package/drizzle/pg/0005_overconfident_mole_man.sql +14 -0
  140. package/drizzle/pg/0006_third_shiva.sql +13 -0
  141. package/drizzle/pg/0007_keen_shockwave.sql +2 -0
  142. package/drizzle/pg/meta/0000_snapshot.json +648 -0
  143. package/drizzle/pg/meta/0001_snapshot.json +743 -0
  144. package/drizzle/pg/meta/0002_snapshot.json +749 -0
  145. package/drizzle/pg/meta/0003_snapshot.json +841 -0
  146. package/drizzle/pg/meta/0004_snapshot.json +974 -0
  147. package/drizzle/pg/meta/0005_snapshot.json +1079 -0
  148. package/drizzle/pg/meta/0006_snapshot.json +1193 -0
  149. package/drizzle/pg/meta/0007_snapshot.json +1199 -0
  150. package/drizzle/pg/meta/_journal.json +62 -0
  151. package/drizzle/sqlite/0000_massive_kinsey_walden.sql +75 -0
  152. package/drizzle/sqlite/0001_quiet_phantom_reporter.sql +13 -0
  153. package/drizzle/sqlite/0002_broad_sheva_callister.sql +1 -0
  154. package/drizzle/sqlite/0003_thankful_agent_brand.sql +14 -0
  155. package/drizzle/sqlite/0004_productive_wolverine.sql +18 -0
  156. package/drizzle/sqlite/0005_chilly_carlie_cooper.sql +14 -0
  157. package/drizzle/sqlite/0006_workable_starfox.sql +13 -0
  158. package/drizzle/sqlite/0007_quick_hemingway.sql +19 -0
  159. package/drizzle/sqlite/meta/0000_snapshot.json +503 -0
  160. package/drizzle/sqlite/meta/0001_snapshot.json +587 -0
  161. package/drizzle/sqlite/meta/0002_snapshot.json +594 -0
  162. package/drizzle/sqlite/meta/0003_snapshot.json +685 -0
  163. package/drizzle/sqlite/meta/0004_snapshot.json +807 -0
  164. package/drizzle/sqlite/meta/0005_snapshot.json +897 -0
  165. package/drizzle/sqlite/meta/0006_snapshot.json +981 -0
  166. package/drizzle/sqlite/meta/0007_snapshot.json +988 -0
  167. package/drizzle/sqlite/meta/_journal.json +62 -0
  168. package/package.json +10 -5
  169. package/dist/__tests__/schema.test.d.ts +0 -2
  170. package/dist/__tests__/schema.test.d.ts.map +0 -1
  171. package/dist/__tests__/schema.test.js +0 -31
  172. package/dist/__tests__/schema.test.js.map +0 -1
  173. package/dist/db/dump-schema.d.ts +0 -10
  174. package/dist/db/dump-schema.d.ts.map +0 -1
  175. package/dist/db/dump-schema.js +0 -64
  176. package/dist/db/dump-schema.js.map +0 -1
  177. package/dist/db/pg.d.ts +0 -52
  178. package/dist/db/pg.d.ts.map +0 -1
  179. package/dist/db/pg.js +0 -398
  180. package/dist/db/pg.js.map +0 -1
  181. package/dist/db/sqlite.d.ts +0 -51
  182. package/dist/db/sqlite.d.ts.map +0 -1
  183. package/dist/db/sqlite.js +0 -412
  184. package/dist/db/sqlite.js.map +0 -1
@@ -0,0 +1,62 @@
1
+ {
2
+ "version": "7",
3
+ "dialect": "postgresql",
4
+ "entries": [
5
+ {
6
+ "idx": 0,
7
+ "version": "7",
8
+ "when": 1771632907426,
9
+ "tag": "0000_thick_loners",
10
+ "breakpoints": true
11
+ },
12
+ {
13
+ "idx": 1,
14
+ "version": "7",
15
+ "when": 1771637682149,
16
+ "tag": "0001_rare_lester",
17
+ "breakpoints": true
18
+ },
19
+ {
20
+ "idx": 2,
21
+ "version": "7",
22
+ "when": 1771637997708,
23
+ "tag": "0002_short_shinko_yamashiro",
24
+ "breakpoints": true
25
+ },
26
+ {
27
+ "idx": 3,
28
+ "version": "7",
29
+ "when": 1771638247011,
30
+ "tag": "0003_remarkable_mastermind",
31
+ "breakpoints": true
32
+ },
33
+ {
34
+ "idx": 4,
35
+ "version": "7",
36
+ "when": 1771638581803,
37
+ "tag": "0004_warm_reaper",
38
+ "breakpoints": true
39
+ },
40
+ {
41
+ "idx": 5,
42
+ "version": "7",
43
+ "when": 1771639241182,
44
+ "tag": "0005_overconfident_mole_man",
45
+ "breakpoints": true
46
+ },
47
+ {
48
+ "idx": 6,
49
+ "version": "7",
50
+ "when": 1771639437402,
51
+ "tag": "0006_third_shiva",
52
+ "breakpoints": true
53
+ },
54
+ {
55
+ "idx": 7,
56
+ "version": "7",
57
+ "when": 1771706260827,
58
+ "tag": "0007_keen_shockwave",
59
+ "breakpoints": true
60
+ }
61
+ ]
62
+ }
@@ -0,0 +1,75 @@
1
+ CREATE TABLE IF NOT EXISTS `agents` (
2
+ `id` text PRIMARY KEY NOT NULL,
3
+ `tenant_id` text DEFAULT 'default' NOT NULL,
4
+ `name` text NOT NULL,
5
+ `version` integer DEFAULT 1 NOT NULL,
6
+ `path` text NOT NULL,
7
+ `created_at` text NOT NULL,
8
+ `updated_at` text NOT NULL
9
+ );
10
+ --> statement-breakpoint
11
+ CREATE UNIQUE INDEX IF NOT EXISTS `idx_agents_tenant_name` ON `agents` (`tenant_id`,`name`);--> statement-breakpoint
12
+ CREATE INDEX IF NOT EXISTS `idx_agents_tenant` ON `agents` (`tenant_id`);--> statement-breakpoint
13
+ CREATE TABLE IF NOT EXISTS `api_keys` (
14
+ `id` text PRIMARY KEY NOT NULL,
15
+ `tenant_id` text NOT NULL,
16
+ `key_hash` text NOT NULL,
17
+ `label` text DEFAULT '' NOT NULL,
18
+ `created_at` text NOT NULL
19
+ );
20
+ --> statement-breakpoint
21
+ CREATE UNIQUE INDEX IF NOT EXISTS `api_keys_key_hash_unique` ON `api_keys` (`key_hash`);--> statement-breakpoint
22
+ CREATE INDEX IF NOT EXISTS `idx_api_keys_tenant` ON `api_keys` (`tenant_id`);--> statement-breakpoint
23
+ CREATE INDEX IF NOT EXISTS `idx_api_keys_hash` ON `api_keys` (`key_hash`);--> statement-breakpoint
24
+ CREATE TABLE IF NOT EXISTS `messages` (
25
+ `id` text PRIMARY KEY NOT NULL,
26
+ `tenant_id` text DEFAULT 'default' NOT NULL,
27
+ `session_id` text NOT NULL,
28
+ `role` text NOT NULL,
29
+ `content` text NOT NULL,
30
+ `sequence` integer NOT NULL,
31
+ `created_at` text NOT NULL
32
+ );
33
+ --> statement-breakpoint
34
+ CREATE UNIQUE INDEX IF NOT EXISTS `idx_messages_unique_seq` ON `messages` (`tenant_id`,`session_id`,`sequence`);--> statement-breakpoint
35
+ CREATE INDEX IF NOT EXISTS `idx_messages_session` ON `messages` (`tenant_id`,`session_id`,`sequence`);--> statement-breakpoint
36
+ CREATE TABLE IF NOT EXISTS `sandboxes` (
37
+ `id` text PRIMARY KEY NOT NULL,
38
+ `tenant_id` text DEFAULT 'default' NOT NULL,
39
+ `session_id` text,
40
+ `agent_name` text NOT NULL,
41
+ `state` text DEFAULT 'warming' NOT NULL,
42
+ `workspace_dir` text NOT NULL,
43
+ `created_at` text NOT NULL,
44
+ `last_used_at` text NOT NULL
45
+ );
46
+ --> statement-breakpoint
47
+ CREATE INDEX IF NOT EXISTS `idx_sandboxes_state` ON `sandboxes` (`state`);--> statement-breakpoint
48
+ CREATE INDEX IF NOT EXISTS `idx_sandboxes_session` ON `sandboxes` (`session_id`);--> statement-breakpoint
49
+ CREATE INDEX IF NOT EXISTS `idx_sandboxes_last_used` ON `sandboxes` (`last_used_at`);--> statement-breakpoint
50
+ CREATE INDEX IF NOT EXISTS `idx_sandboxes_tenant` ON `sandboxes` (`tenant_id`);--> statement-breakpoint
51
+ CREATE TABLE IF NOT EXISTS `session_events` (
52
+ `id` text PRIMARY KEY NOT NULL,
53
+ `tenant_id` text DEFAULT 'default' NOT NULL,
54
+ `session_id` text NOT NULL,
55
+ `type` text NOT NULL,
56
+ `data` text,
57
+ `sequence` integer NOT NULL,
58
+ `created_at` text NOT NULL
59
+ );
60
+ --> statement-breakpoint
61
+ CREATE UNIQUE INDEX IF NOT EXISTS `idx_session_events_unique_seq` ON `session_events` (`tenant_id`,`session_id`,`sequence`);--> statement-breakpoint
62
+ CREATE INDEX IF NOT EXISTS `idx_session_events_session` ON `session_events` (`tenant_id`,`session_id`,`sequence`);--> statement-breakpoint
63
+ CREATE INDEX IF NOT EXISTS `idx_session_events_type` ON `session_events` (`tenant_id`,`session_id`,`type`);--> statement-breakpoint
64
+ CREATE TABLE IF NOT EXISTS `sessions` (
65
+ `id` text PRIMARY KEY NOT NULL,
66
+ `tenant_id` text DEFAULT 'default' NOT NULL,
67
+ `agent_name` text NOT NULL,
68
+ `sandbox_id` text NOT NULL,
69
+ `status` text DEFAULT 'starting' NOT NULL,
70
+ `runner_id` text,
71
+ `created_at` text NOT NULL,
72
+ `last_active_at` text NOT NULL
73
+ );
74
+ --> statement-breakpoint
75
+ CREATE INDEX IF NOT EXISTS `idx_sessions_tenant` ON `sessions` (`tenant_id`);
@@ -0,0 +1,13 @@
1
+ CREATE TABLE `runners` (
2
+ `id` text PRIMARY KEY NOT NULL,
3
+ `host` text NOT NULL,
4
+ `port` integer NOT NULL,
5
+ `max_sandboxes` integer DEFAULT 100 NOT NULL,
6
+ `active_count` integer DEFAULT 0 NOT NULL,
7
+ `warming_count` integer DEFAULT 0 NOT NULL,
8
+ `last_heartbeat_at` text NOT NULL,
9
+ `registered_at` text NOT NULL
10
+ );
11
+ --> statement-breakpoint
12
+ CREATE INDEX `idx_runners_heartbeat` ON `runners` (`last_heartbeat_at`);--> statement-breakpoint
13
+ CREATE INDEX `idx_sessions_runner` ON `sessions` (`runner_id`);
@@ -0,0 +1 @@
1
+ ALTER TABLE `sessions` ADD `parent_session_id` text;
@@ -0,0 +1,14 @@
1
+ CREATE TABLE `credentials` (
2
+ `id` text PRIMARY KEY NOT NULL,
3
+ `tenant_id` text DEFAULT 'default' NOT NULL,
4
+ `type` text NOT NULL,
5
+ `encrypted_key` text NOT NULL,
6
+ `iv` text NOT NULL,
7
+ `auth_tag` text NOT NULL,
8
+ `label` text DEFAULT '' NOT NULL,
9
+ `active` integer DEFAULT 1 NOT NULL,
10
+ `created_at` text NOT NULL,
11
+ `last_used_at` text
12
+ );
13
+ --> statement-breakpoint
14
+ CREATE INDEX `idx_credentials_tenant` ON `credentials` (`tenant_id`);
@@ -0,0 +1,18 @@
1
+ CREATE TABLE `queue_items` (
2
+ `id` text PRIMARY KEY NOT NULL,
3
+ `tenant_id` text DEFAULT 'default' NOT NULL,
4
+ `session_id` text,
5
+ `agent_name` text NOT NULL,
6
+ `prompt` text NOT NULL,
7
+ `status` text DEFAULT 'pending' NOT NULL,
8
+ `priority` integer DEFAULT 0 NOT NULL,
9
+ `retry_count` integer DEFAULT 0 NOT NULL,
10
+ `max_retries` integer DEFAULT 3 NOT NULL,
11
+ `error` text,
12
+ `created_at` text NOT NULL,
13
+ `started_at` text,
14
+ `completed_at` text
15
+ );
16
+ --> statement-breakpoint
17
+ CREATE INDEX `idx_queue_tenant` ON `queue_items` (`tenant_id`);--> statement-breakpoint
18
+ CREATE INDEX `idx_queue_status` ON `queue_items` (`status`,`priority`);
@@ -0,0 +1,14 @@
1
+ CREATE TABLE `attachments` (
2
+ `id` text PRIMARY KEY NOT NULL,
3
+ `tenant_id` text DEFAULT 'default' NOT NULL,
4
+ `message_id` text NOT NULL,
5
+ `session_id` text NOT NULL,
6
+ `filename` text NOT NULL,
7
+ `mime_type` text NOT NULL,
8
+ `size` integer NOT NULL,
9
+ `storage_path` text NOT NULL,
10
+ `created_at` text NOT NULL
11
+ );
12
+ --> statement-breakpoint
13
+ CREATE INDEX `idx_attachments_session` ON `attachments` (`tenant_id`,`session_id`);--> statement-breakpoint
14
+ CREATE INDEX `idx_attachments_message` ON `attachments` (`message_id`);
@@ -0,0 +1,13 @@
1
+ CREATE TABLE `usage_events` (
2
+ `id` text PRIMARY KEY NOT NULL,
3
+ `tenant_id` text DEFAULT 'default' NOT NULL,
4
+ `session_id` text NOT NULL,
5
+ `agent_name` text NOT NULL,
6
+ `event_type` text NOT NULL,
7
+ `value` integer NOT NULL,
8
+ `created_at` text NOT NULL
9
+ );
10
+ --> statement-breakpoint
11
+ CREATE INDEX `idx_usage_session` ON `usage_events` (`tenant_id`,`session_id`);--> statement-breakpoint
12
+ CREATE INDEX `idx_usage_agent` ON `usage_events` (`tenant_id`,`agent_name`);--> statement-breakpoint
13
+ CREATE INDEX `idx_usage_type` ON `usage_events` (`event_type`);
@@ -0,0 +1,19 @@
1
+ PRAGMA foreign_keys=OFF;--> statement-breakpoint
2
+ CREATE TABLE `__new_usage_events` (
3
+ `id` text PRIMARY KEY NOT NULL,
4
+ `tenant_id` text DEFAULT 'default' NOT NULL,
5
+ `session_id` text NOT NULL,
6
+ `agent_name` text NOT NULL,
7
+ `event_type` text NOT NULL,
8
+ `value` real NOT NULL,
9
+ `created_at` text NOT NULL
10
+ );
11
+ --> statement-breakpoint
12
+ INSERT INTO `__new_usage_events`("id", "tenant_id", "session_id", "agent_name", "event_type", "value", "created_at") SELECT "id", "tenant_id", "session_id", "agent_name", "event_type", "value", "created_at" FROM `usage_events`;--> statement-breakpoint
13
+ DROP TABLE `usage_events`;--> statement-breakpoint
14
+ ALTER TABLE `__new_usage_events` RENAME TO `usage_events`;--> statement-breakpoint
15
+ PRAGMA foreign_keys=ON;--> statement-breakpoint
16
+ CREATE INDEX `idx_usage_session` ON `usage_events` (`tenant_id`,`session_id`);--> statement-breakpoint
17
+ CREATE INDEX `idx_usage_agent` ON `usage_events` (`tenant_id`,`agent_name`);--> statement-breakpoint
18
+ CREATE INDEX `idx_usage_type` ON `usage_events` (`event_type`);--> statement-breakpoint
19
+ ALTER TABLE `queue_items` ADD `retry_after` text;