Compare commits

..

3477 Commits

Author SHA1 Message Date
github-merge-queue[bot]
9246384dc2 Publish onyx-0.4.29.tgz 2026-02-18 05:49:01 +00:00
github-merge-queue[bot]
0eb18888ae Publish onyx-0.4.29.tgz 2026-02-18 05:38:59 +00:00
github-merge-queue[bot]
1a6d2d4a2f Publish onyx-0.4.29.tgz 2026-02-18 05:16:55 +00:00
github-merge-queue[bot]
acbd97599a Publish onyx-0.4.29.tgz 2026-02-18 05:09:53 +00:00
jmelahman
58807b7be4 Publish onyx-0.4.29.tgz 2026-02-18 04:57:13 +00:00
github-merge-queue[bot]
afa55dfea8 Publish onyx-0.4.29.tgz 2026-02-18 04:34:50 +00:00
github-merge-queue[bot]
0bba288ffc Publish onyx-0.4.29.tgz 2026-02-18 03:54:26 +00:00
github-merge-queue[bot]
a20f9c3b09 Publish onyx-0.4.29.tgz 2026-02-18 02:15:21 +00:00
jmelahman
be7fb3bc84 Publish onyx-0.4.29.tgz 2026-02-18 01:52:55 +00:00
github-merge-queue[bot]
00ab2cb7f7 Publish onyx-0.4.29.tgz 2026-02-18 01:51:47 +00:00
github-merge-queue[bot]
9879ed606e Publish onyx-0.4.29.tgz 2026-02-18 01:04:40 +00:00
github-merge-queue[bot]
5f08263b92 Publish onyx-0.4.29.tgz 2026-02-18 00:48:42 +00:00
jmelahman
ca64fd709b Publish onyx-0.4.29.tgz 2026-02-18 00:26:07 +00:00
jmelahman
f7147e5219 Publish onyx-0.4.29.tgz 2026-02-18 00:23:54 +00:00
github-merge-queue[bot]
a8791d9636 Publish onyx-0.4.29.tgz 2026-02-18 00:07:06 +00:00
github-merge-queue[bot]
e70728dda1 Publish onyx-0.4.29.tgz 2026-02-18 00:04:39 +00:00
jmelahman
be6257e503 Publish onyx-0.4.29.tgz 2026-02-17 23:38:27 +00:00
github-merge-queue[bot]
6d034bead8 Publish onyx-0.4.29.tgz 2026-02-17 23:35:21 +00:00
jmelahman
74d9738bd3 Publish onyx-0.4.29.tgz 2026-02-17 23:12:54 +00:00
github-merge-queue[bot]
c163a83c14 Publish onyx-0.4.29.tgz 2026-02-17 23:02:44 +00:00
github-merge-queue[bot]
313f2b2e5b Publish onyx-0.4.29.tgz 2026-02-17 22:51:06 +00:00
github-merge-queue[bot]
f1fd9f92d0 Publish onyx-0.4.29.tgz 2026-02-17 22:40:16 +00:00
github-merge-queue[bot]
79cd778dba Publish onyx-0.4.29.tgz 2026-02-17 22:01:31 +00:00
github-merge-queue[bot]
3f055c7fa3 Publish onyx-0.4.29.tgz 2026-02-17 22:00:32 +00:00
github-merge-queue[bot]
46f921dce0 Publish onyx-0.4.29.tgz 2026-02-17 21:43:26 +00:00
github-merge-queue[bot]
d13d16d24f Publish onyx-0.4.29.tgz 2026-02-17 21:22:56 +00:00
github-merge-queue[bot]
6c740746a5 Publish onyx-0.4.28.tgz 2026-02-17 21:17:25 +00:00
github-merge-queue[bot]
d62b7be5a2 Publish onyx-0.4.28.tgz 2026-02-17 20:28:45 +00:00
github-merge-queue[bot]
112a192373 Publish onyx-0.4.28.tgz 2026-02-17 19:50:24 +00:00
github-merge-queue[bot]
9d47b3264d Publish onyx-0.4.28.tgz 2026-02-17 18:32:52 +00:00
github-merge-queue[bot]
c8b3b6ffe6 Publish onyx-0.4.28.tgz 2026-02-17 18:25:20 +00:00
github-merge-queue[bot]
49372ec265 Publish onyx-0.4.28.tgz 2026-02-17 18:23:58 +00:00
github-merge-queue[bot]
625452850a Publish onyx-0.4.28.tgz 2026-02-17 18:20:04 +00:00
justin-tahara
95a413c36b Publish onyx-0.4.28.tgz 2026-02-17 15:20:25 +00:00
github-merge-queue[bot]
b0b9e12d3d Publish onyx-0.4.27.tgz 2026-02-17 08:49:49 +00:00
github-merge-queue[bot]
88cb357e13 Publish onyx-0.4.27.tgz 2026-02-17 05:29:47 +00:00
Danelegend
35b179e1df Publish onyx-0.4.27.tgz 2026-02-17 02:54:17 +00:00
github-merge-queue[bot]
79c3b141e3 Publish onyx-0.4.27.tgz 2026-02-17 02:44:19 +00:00
github-merge-queue[bot]
6ecbe5e64a Publish onyx-0.4.27.tgz 2026-02-17 01:28:38 +00:00
github-merge-queue[bot]
1b48e04303 Publish onyx-0.4.27.tgz 2026-02-17 00:37:30 +00:00
github-merge-queue[bot]
6239a2ec29 Publish onyx-0.4.27.tgz 2026-02-17 00:03:23 +00:00
github-merge-queue[bot]
213e69783f Publish onyx-0.4.27.tgz 2026-02-16 23:20:30 +00:00
github-merge-queue[bot]
3ad3fd94b9 Publish onyx-0.4.27.tgz 2026-02-16 18:30:57 +00:00
github-merge-queue[bot]
18f6eea110 Publish onyx-0.4.27.tgz 2026-02-16 11:29:53 +00:00
github-merge-queue[bot]
adb86590b6 Publish onyx-0.4.27.tgz 2026-02-16 03:09:32 +00:00
github-merge-queue[bot]
d8f125535e Publish onyx-0.4.27.tgz 2026-02-16 00:52:50 +00:00
github-merge-queue[bot]
e9d59640d3 Publish onyx-0.4.27.tgz 2026-02-15 23:46:56 +00:00
github-merge-queue[bot]
cb8dd7a2ff Publish onyx-0.4.27.tgz 2026-02-15 20:19:57 +00:00
github-merge-queue[bot]
d6696a09f8 Publish onyx-0.4.27.tgz 2026-02-14 02:51:44 +00:00
github-merge-queue[bot]
45d8214d77 Publish onyx-0.4.27.tgz 2026-02-14 02:36:47 +00:00
github-merge-queue[bot]
b9047451db Publish onyx-0.4.27.tgz 2026-02-14 02:21:30 +00:00
github-merge-queue[bot]
17cabe213a Publish onyx-0.4.27.tgz 2026-02-14 02:11:49 +00:00
github-merge-queue[bot]
89153d3bd0 Publish onyx-0.4.27.tgz 2026-02-14 02:04:21 +00:00
github-merge-queue[bot]
588aefdabb Publish onyx-0.4.27.tgz 2026-02-14 01:45:37 +00:00
github-merge-queue[bot]
df370f71bf Publish onyx-0.4.27.tgz 2026-02-14 01:24:51 +00:00
github-merge-queue[bot]
803e4d4471 Publish onyx-0.4.27.tgz 2026-02-14 01:19:47 +00:00
github-merge-queue[bot]
9ce23097cd Publish onyx-0.4.27.tgz 2026-02-14 00:38:29 +00:00
github-merge-queue[bot]
fa7d7ed306 Publish onyx-0.4.27.tgz 2026-02-14 00:27:47 +00:00
github-merge-queue[bot]
7e29d36183 Publish onyx-0.4.27.tgz 2026-02-13 23:56:23 +00:00
github-merge-queue[bot]
f33291804b Publish onyx-0.4.27.tgz 2026-02-13 23:44:28 +00:00
github-merge-queue[bot]
82cfa6b786 Publish onyx-0.4.27.tgz 2026-02-13 23:39:36 +00:00
github-merge-queue[bot]
590c222d29 Publish onyx-0.4.27.tgz 2026-02-13 23:12:53 +00:00
github-merge-queue[bot]
4949334bdf Publish onyx-0.4.27.tgz 2026-02-13 22:52:56 +00:00
github-merge-queue[bot]
0dbf47d9f7 Publish onyx-0.4.27.tgz 2026-02-13 22:24:31 +00:00
github-merge-queue[bot]
101e794c24 Publish onyx-0.4.27.tgz 2026-02-13 22:08:57 +00:00
justin-tahara
35785391f7 Publish onyx-0.4.27.tgz 2026-02-13 21:38:49 +00:00
github-merge-queue[bot]
f0320db1a0 Publish onyx-0.4.27.tgz 2026-02-13 21:36:08 +00:00
github-merge-queue[bot]
d413019cbe Publish onyx-0.4.27.tgz 2026-02-13 21:28:24 +00:00
github-merge-queue[bot]
9fd5d09210 Publish onyx-0.4.27.tgz 2026-02-13 21:24:03 +00:00
github-merge-queue[bot]
7c28c44bc3 Publish onyx-0.4.27.tgz 2026-02-13 21:20:36 +00:00
github-merge-queue[bot]
a0358e62ee Publish onyx-0.4.27.tgz 2026-02-13 21:16:35 +00:00
github-merge-queue[bot]
5b87e1764e Publish onyx-0.4.27.tgz 2026-02-13 21:11:08 +00:00
github-merge-queue[bot]
e30a6b77be Publish onyx-0.4.27.tgz 2026-02-13 21:02:06 +00:00
jmelahman
6ae8912ee3 Publish onyx-0.4.27.tgz 2026-02-13 20:51:10 +00:00
jmelahman
4a2291955a Publish onyx-0.4.27.tgz 2026-02-13 20:30:41 +00:00
jmelahman
f902a19bd0 Publish onyx-0.4.27.tgz 2026-02-13 19:07:19 +00:00
jmelahman
997feadce8 Publish onyx-0.4.27.tgz 2026-02-13 18:08:16 +00:00
github-merge-queue[bot]
75b67e05bd Publish onyx-0.4.27.tgz 2026-02-13 17:28:31 +00:00
github-merge-queue[bot]
1a55d58eb4 Publish onyx-0.4.27.tgz 2026-02-13 17:27:42 +00:00
github-merge-queue[bot]
755f7637de Publish onyx-0.4.27.tgz 2026-02-13 07:46:20 +00:00
github-merge-queue[bot]
f87866d65d Publish onyx-0.4.27.tgz 2026-02-13 04:36:49 +00:00
jmelahman
99a4ca57ed Publish onyx-0.4.27.tgz 2026-02-13 03:54:08 +00:00
yuhongsun96
6239aa82a1 Publish onyx-0.4.27.tgz 2026-02-13 03:45:29 +00:00
github-merge-queue[bot]
c63906edf8 Publish onyx-0.4.27.tgz 2026-02-13 02:58:51 +00:00
github-merge-queue[bot]
36dd724fd8 Publish onyx-0.4.27.tgz 2026-02-13 02:10:35 +00:00
github-merge-queue[bot]
b5bcb926b4 Publish onyx-0.4.27.tgz 2026-02-13 01:48:09 +00:00
github-merge-queue[bot]
1189593d57 Publish onyx-0.4.27.tgz 2026-02-13 01:44:57 +00:00
github-merge-queue[bot]
fdc60214c4 Publish onyx-0.4.27.tgz 2026-02-13 01:25:15 +00:00
github-merge-queue[bot]
0344fab93e Publish onyx-0.4.27.tgz 2026-02-13 00:25:48 +00:00
github-merge-queue[bot]
bd4dca91a6 Publish onyx-0.4.27.tgz 2026-02-13 00:11:21 +00:00
github-merge-queue[bot]
e599f08a76 Publish onyx-0.4.27.tgz 2026-02-12 23:52:37 +00:00
github-merge-queue[bot]
2384cf79a3 Publish onyx-0.4.27.tgz 2026-02-12 23:50:22 +00:00
github-merge-queue[bot]
a85e85a003 Publish onyx-0.4.27.tgz 2026-02-12 23:20:20 +00:00
github-merge-queue[bot]
6434db854a Publish onyx-0.4.27.tgz 2026-02-12 23:19:53 +00:00
github-merge-queue[bot]
0cddc70073 Publish onyx-0.4.27.tgz 2026-02-12 23:07:48 +00:00
github-merge-queue[bot]
8df682c3fa Publish onyx-0.4.27.tgz 2026-02-12 23:05:13 +00:00
github-merge-queue[bot]
437b3bc1fb Publish onyx-0.4.27.tgz 2026-02-12 22:59:12 +00:00
github-merge-queue[bot]
fde8078b2f Publish onyx-0.4.27.tgz 2026-02-12 22:49:08 +00:00
github-merge-queue[bot]
2e93b63f7f Publish onyx-0.4.27.tgz 2026-02-12 22:38:22 +00:00
github-merge-queue[bot]
862e515648 Publish onyx-0.4.27.tgz 2026-02-12 22:00:44 +00:00
github-merge-queue[bot]
b3ee2e3865 Publish onyx-0.4.27.tgz 2026-02-12 21:47:25 +00:00
github-merge-queue[bot]
65ed4fa92e Publish onyx-0.4.27.tgz 2026-02-12 21:42:17 +00:00
github-merge-queue[bot]
c163ec26c5 Publish onyx-0.4.27.tgz 2026-02-12 20:41:40 +00:00
github-merge-queue[bot]
7736287b32 Publish onyx-0.4.27.tgz 2026-02-12 20:31:28 +00:00
github-merge-queue[bot]
90ecd9ed9e Publish onyx-0.4.27.tgz 2026-02-12 20:20:28 +00:00
jmelahman
1dfec3c872 Publish onyx-0.4.27.tgz 2026-02-12 19:16:21 +00:00
github-merge-queue[bot]
35dbff6f43 Publish onyx-0.4.27.tgz 2026-02-12 19:01:36 +00:00
github-merge-queue[bot]
18b858aa10 Publish onyx-0.4.27.tgz 2026-02-12 18:47:46 +00:00
github-merge-queue[bot]
8a5deac14b Publish onyx-0.4.27.tgz 2026-02-12 18:01:49 +00:00
github-merge-queue[bot]
d79ef3a8d5 Publish onyx-0.4.27.tgz 2026-02-12 17:27:09 +00:00
github-merge-queue[bot]
a3f3d5fac8 Publish onyx-0.4.27.tgz 2026-02-12 14:42:27 +00:00
github-merge-queue[bot]
2c3de42224 Publish onyx-0.4.27.tgz 2026-02-12 09:16:55 +00:00
github-merge-queue[bot]
da1b32edfa Publish onyx-0.4.27.tgz 2026-02-12 09:10:43 +00:00
github-merge-queue[bot]
98e15027e8 Publish onyx-0.4.27.tgz 2026-02-12 09:09:19 +00:00
github-merge-queue[bot]
2f65739265 Publish onyx-0.4.27.tgz 2026-02-12 08:41:01 +00:00
github-merge-queue[bot]
11584840e7 Publish onyx-0.4.27.tgz 2026-02-12 08:37:15 +00:00
github-merge-queue[bot]
a6552e1047 Publish onyx-0.4.27.tgz 2026-02-12 06:24:20 +00:00
github-merge-queue[bot]
42a5d2a6c4 Publish onyx-0.4.27.tgz 2026-02-12 03:44:27 +00:00
github-merge-queue[bot]
70848307da Publish onyx-0.4.27.tgz 2026-02-12 02:13:09 +00:00
github-merge-queue[bot]
6f8ade19b1 Publish onyx-0.4.27.tgz 2026-02-12 02:10:50 +00:00
github-merge-queue[bot]
06e8bd7f5b Publish onyx-0.4.27.tgz 2026-02-12 01:45:22 +00:00
github-merge-queue[bot]
e2ac492837 Publish onyx-0.4.27.tgz 2026-02-12 01:23:18 +00:00
github-merge-queue[bot]
bf3b91e104 Publish onyx-0.4.27.tgz 2026-02-12 00:35:29 +00:00
github-merge-queue[bot]
4ea0a41b94 Publish onyx-0.4.27.tgz 2026-02-12 00:04:12 +00:00
github-merge-queue[bot]
1a03568d27 Publish onyx-0.4.27.tgz 2026-02-12 00:00:54 +00:00
github-merge-queue[bot]
36cbf8ed67 Publish onyx-0.4.27.tgz 2026-02-11 23:48:56 +00:00
github-merge-queue[bot]
26c9271a01 Publish onyx-0.4.27.tgz 2026-02-11 23:37:18 +00:00
github-merge-queue[bot]
a4d7388798 Publish onyx-0.4.27.tgz 2026-02-11 23:18:49 +00:00
jmelahman
eb02aeaa49 Publish onyx-0.4.27.tgz 2026-02-11 23:10:19 +00:00
jmelahman
b4be07c7f5 Publish onyx-0.4.27.tgz 2026-02-11 23:05:16 +00:00
github-merge-queue[bot]
502e20d1f2 Publish onyx-0.4.27.tgz 2026-02-11 23:04:45 +00:00
jmelahman
0aa8a333f3 Publish onyx-0.4.27.tgz 2026-02-11 22:41:46 +00:00
jmelahman
2c8258ac7b Publish onyx-0.4.27.tgz 2026-02-11 22:36:15 +00:00
github-merge-queue[bot]
49a92d296e Publish onyx-0.4.27.tgz 2026-02-11 22:23:55 +00:00
github-merge-queue[bot]
523f4b4294 Publish onyx-0.4.27.tgz 2026-02-11 22:01:23 +00:00
github-merge-queue[bot]
a29d1ac904 Publish onyx-0.4.27.tgz 2026-02-11 21:53:20 +00:00
github-merge-queue[bot]
73da445b17 Publish onyx-0.4.27.tgz 2026-02-11 21:17:23 +00:00
github-merge-queue[bot]
cd17e1e51e Publish onyx-0.4.26.tgz 2026-02-11 21:14:22 +00:00
github-merge-queue[bot]
d1818e3005 Publish onyx-0.4.26.tgz 2026-02-11 20:20:08 +00:00
github-merge-queue[bot]
4a59880c0e Publish onyx-0.4.26.tgz 2026-02-11 20:06:46 +00:00
github-merge-queue[bot]
7d5940a810 Publish onyx-0.4.26.tgz 2026-02-11 19:42:21 +00:00
github-merge-queue[bot]
db68b6ed67 Publish onyx-0.4.26.tgz 2026-02-11 19:24:40 +00:00
github-merge-queue[bot]
2daa6020c1 Publish onyx-0.4.25.tgz 2026-02-11 18:55:53 +00:00
github-merge-queue[bot]
1dd0ef54e4 Publish onyx-0.4.25.tgz 2026-02-11 18:47:11 +00:00
github-merge-queue[bot]
e41369c06f Publish onyx-0.4.25.tgz 2026-02-11 18:32:54 +00:00
github-merge-queue[bot]
fa60c97d8b Publish onyx-0.4.25.tgz 2026-02-11 18:17:05 +00:00
github-merge-queue[bot]
c4497bfdaf Publish onyx-0.4.25.tgz 2026-02-11 16:20:38 +00:00
github-merge-queue[bot]
a7f6c4cd3f Publish onyx-0.4.25.tgz 2026-02-11 06:36:54 +00:00
github-merge-queue[bot]
1424d8a3a6 Publish onyx-0.4.25.tgz 2026-02-11 06:33:28 +00:00
github-merge-queue[bot]
9524bbbd5f Publish onyx-0.4.25.tgz 2026-02-11 04:41:18 +00:00
github-merge-queue[bot]
acfcb6b869 Publish onyx-0.4.25.tgz 2026-02-11 03:46:24 +00:00
github-merge-queue[bot]
618e5dbb25 Publish onyx-0.4.25.tgz 2026-02-11 02:53:23 +00:00
github-merge-queue[bot]
5575f2e78c Publish onyx-0.4.25.tgz 2026-02-11 02:41:39 +00:00
github-merge-queue[bot]
6278cbaa2e Publish onyx-0.4.25.tgz 2026-02-11 02:36:02 +00:00
github-merge-queue[bot]
2978c21f87 Publish onyx-0.4.25.tgz 2026-02-11 02:24:21 +00:00
github-merge-queue[bot]
2b6f880d3a Publish onyx-0.4.25.tgz 2026-02-11 02:22:24 +00:00
github-merge-queue[bot]
b6959842d5 Publish onyx-0.4.25.tgz 2026-02-11 02:15:15 +00:00
github-merge-queue[bot]
79ff22778c Publish onyx-0.4.25.tgz 2026-02-11 01:20:47 +00:00
github-merge-queue[bot]
8d974940e5 Publish onyx-0.4.25.tgz 2026-02-11 01:10:42 +00:00
github-merge-queue[bot]
f1b0b4d87d Publish onyx-0.4.25.tgz 2026-02-11 01:06:28 +00:00
github-merge-queue[bot]
719e997ec9 Publish onyx-0.4.25.tgz 2026-02-11 01:02:31 +00:00
github-merge-queue[bot]
d8dce7a2dc Publish onyx-0.4.25.tgz 2026-02-10 23:18:40 +00:00
github-merge-queue[bot]
96cd7e111d Publish onyx-0.4.25.tgz 2026-02-10 22:49:51 +00:00
github-merge-queue[bot]
c458bae6b7 Publish onyx-0.4.25.tgz 2026-02-10 21:49:09 +00:00
github-merge-queue[bot]
aa628f192b Publish onyx-0.4.25.tgz 2026-02-10 20:09:25 +00:00
github-merge-queue[bot]
b4c0bc2172 Publish onyx-0.4.25.tgz 2026-02-10 18:59:19 +00:00
github-merge-queue[bot]
3c5c4dd32f Publish onyx-0.4.25.tgz 2026-02-10 18:44:44 +00:00
jmelahman
4cbe10dc77 Publish onyx-0.4.25.tgz 2026-02-10 16:10:45 +00:00
github-merge-queue[bot]
ecd87ea0f9 Publish onyx-0.4.25.tgz 2026-02-10 04:28:20 +00:00
github-merge-queue[bot]
ce69796fea Publish onyx-0.4.25.tgz 2026-02-10 04:14:13 +00:00
github-merge-queue[bot]
03db362615 Publish onyx-0.4.25.tgz 2026-02-10 03:44:39 +00:00
github-merge-queue[bot]
ce559d0646 Publish onyx-0.4.25.tgz 2026-02-10 03:26:29 +00:00
github-merge-queue[bot]
1c8d5ba39f Publish onyx-0.4.25.tgz 2026-02-10 02:56:51 +00:00
github-merge-queue[bot]
671902c020 Publish onyx-0.4.25.tgz 2026-02-10 02:11:44 +00:00
github-merge-queue[bot]
67e085cca9 Publish onyx-0.4.25.tgz 2026-02-10 02:11:05 +00:00
github-merge-queue[bot]
d78b762dd6 Publish onyx-0.4.25.tgz 2026-02-10 01:28:19 +00:00
github-merge-queue[bot]
57b72a9159 Publish onyx-0.4.25.tgz 2026-02-10 00:49:18 +00:00
github-merge-queue[bot]
b9266d6aaf Publish onyx-0.4.25.tgz 2026-02-09 23:39:34 +00:00
github-merge-queue[bot]
6fc09154e0 Publish onyx-0.4.25.tgz 2026-02-09 23:06:11 +00:00
github-merge-queue[bot]
52684a0e69 Publish onyx-0.4.25.tgz 2026-02-09 22:59:04 +00:00
github-merge-queue[bot]
9ac8c465f4 Publish onyx-0.4.25.tgz 2026-02-09 22:19:33 +00:00
github-merge-queue[bot]
c571cf7502 Publish onyx-0.4.25.tgz 2026-02-09 22:12:03 +00:00
github-merge-queue[bot]
be1a341a06 Publish onyx-0.4.25.tgz 2026-02-09 21:57:42 +00:00
github-merge-queue[bot]
69f07ac734 Publish onyx-0.4.25.tgz 2026-02-09 21:51:10 +00:00
github-merge-queue[bot]
c45ef02d36 Publish onyx-0.4.25.tgz 2026-02-09 21:33:31 +00:00
jmelahman
a058e87e17 Publish onyx-0.4.25.tgz 2026-02-09 21:21:03 +00:00
jmelahman
a12bc75c02 Publish onyx-0.4.25.tgz 2026-02-09 21:20:35 +00:00
jmelahman
f50ed1ae89 Publish onyx-0.4.25.tgz 2026-02-09 21:19:25 +00:00
github-merge-queue[bot]
ac210a438c Publish onyx-0.4.25.tgz 2026-02-09 21:12:55 +00:00
github-merge-queue[bot]
637d2070ce Publish onyx-0.4.25.tgz 2026-02-09 20:52:10 +00:00
github-merge-queue[bot]
e3ce46182b Publish onyx-0.4.25.tgz 2026-02-09 20:41:54 +00:00
jmelahman
6c307f3aa8 Publish onyx-0.4.25.tgz 2026-02-09 20:35:08 +00:00
jmelahman
6a883d8521 Publish onyx-0.4.25.tgz 2026-02-09 20:19:25 +00:00
jmelahman
b6df242ea5 Publish onyx-0.4.25.tgz 2026-02-09 20:18:29 +00:00
jmelahman
6dd2c1d850 Publish onyx-0.4.25.tgz 2026-02-09 20:15:38 +00:00
jmelahman
5f8e11a826 Publish onyx-0.4.25.tgz 2026-02-09 20:14:27 +00:00
github-merge-queue[bot]
0ad5e5cd21 Publish onyx-0.4.25.tgz 2026-02-09 18:20:00 +00:00
github-merge-queue[bot]
12dbf9e8bb Publish onyx-0.4.25.tgz 2026-02-09 18:05:23 +00:00
github-merge-queue[bot]
3bcecebb81 Publish onyx-0.4.25.tgz 2026-02-09 18:00:06 +00:00
github-merge-queue[bot]
db71b7e767 Publish onyx-0.4.25.tgz 2026-02-09 17:33:47 +00:00
github-merge-queue[bot]
5844b7eb15 Publish onyx-0.4.25.tgz 2026-02-09 08:02:04 +00:00
github-merge-queue[bot]
b7a70c920a Publish onyx-0.4.25.tgz 2026-02-09 08:00:51 +00:00
github-merge-queue[bot]
0188be28aa Publish onyx-0.4.25.tgz 2026-02-09 07:33:14 +00:00
github-merge-queue[bot]
bbf68bdb08 Publish onyx-0.4.25.tgz 2026-02-09 04:36:06 +00:00
github-merge-queue[bot]
97061e12f6 Publish onyx-0.4.25.tgz 2026-02-09 04:19:06 +00:00
github-merge-queue[bot]
8aa94186c6 Publish onyx-0.4.25.tgz 2026-02-09 00:37:18 +00:00
github-merge-queue[bot]
26791128c1 Publish onyx-0.4.25.tgz 2026-02-08 22:34:56 +00:00
github-merge-queue[bot]
31c6e2bcb4 Publish onyx-0.4.25.tgz 2026-02-08 19:59:29 +00:00
github-merge-queue[bot]
352349de22 Publish onyx-0.4.25.tgz 2026-02-07 08:47:16 +00:00
github-merge-queue[bot]
47dd0f69df Publish onyx-0.4.25.tgz 2026-02-07 07:06:06 +00:00
github-merge-queue[bot]
e1a397167d Publish onyx-0.4.25.tgz 2026-02-07 03:45:16 +00:00
github-merge-queue[bot]
78dd178e1e Publish onyx-0.4.25.tgz 2026-02-07 00:43:22 +00:00
github-merge-queue[bot]
a97bee3b33 Publish onyx-0.4.25.tgz 2026-02-07 00:41:34 +00:00
github-merge-queue[bot]
196044b228 Publish onyx-0.4.25.tgz 2026-02-06 22:14:55 +00:00
github-merge-queue[bot]
651f350f4a Publish onyx-0.4.25.tgz 2026-02-06 22:04:51 +00:00
github-merge-queue[bot]
1cb72818e9 Publish onyx-0.4.25.tgz 2026-02-06 21:54:20 +00:00
github-merge-queue[bot]
8bef2b1390 Publish onyx-0.4.25.tgz 2026-02-06 21:07:31 +00:00
github-merge-queue[bot]
bee47a662e Publish onyx-0.4.25.tgz 2026-02-06 18:42:53 +00:00
github-merge-queue[bot]
ba004e8b1f Publish onyx-0.4.25.tgz 2026-02-06 18:35:46 +00:00
github-merge-queue[bot]
05cffec4ad Publish onyx-0.4.25.tgz 2026-02-06 18:10:19 +00:00
github-merge-queue[bot]
c4e8ee5a62 Publish onyx-0.4.25.tgz 2026-02-06 18:02:50 +00:00
github-merge-queue[bot]
e565646c7c Publish onyx-0.4.25.tgz 2026-02-06 17:15:45 +00:00
github-merge-queue[bot]
1ce5a79c4c Publish onyx-0.4.25.tgz 2026-02-06 04:46:15 +00:00
github-merge-queue[bot]
577798e692 Publish onyx-0.4.25.tgz 2026-02-06 04:05:52 +00:00
github-merge-queue[bot]
7452038633 Publish onyx-0.4.25.tgz 2026-02-06 03:39:35 +00:00
github-merge-queue[bot]
96432b453c Publish onyx-0.4.25.tgz 2026-02-06 03:35:51 +00:00
github-merge-queue[bot]
c0ee11d972 Publish onyx-0.4.25.tgz 2026-02-06 02:52:23 +00:00
github-merge-queue[bot]
b41dc2739e Publish onyx-0.4.25.tgz 2026-02-06 02:48:21 +00:00
github-merge-queue[bot]
f0fb7135ec Publish onyx-0.4.25.tgz 2026-02-06 02:28:34 +00:00
github-merge-queue[bot]
af47628af8 Publish onyx-0.4.25.tgz 2026-02-06 01:48:11 +00:00
github-merge-queue[bot]
729c06ab42 Publish onyx-0.4.25.tgz 2026-02-06 00:54:52 +00:00
github-merge-queue[bot]
b11a325de8 Publish onyx-0.4.25.tgz 2026-02-06 00:21:02 +00:00
wenxi-onyx
2d063ececa Publish onyx-0.4.25.tgz 2026-02-05 23:33:39 +00:00
github-merge-queue[bot]
269aa5c18a Publish onyx-0.4.25.tgz 2026-02-05 23:32:26 +00:00
github-merge-queue[bot]
9df4268cdc Publish onyx-0.4.25.tgz 2026-02-05 23:22:58 +00:00
github-merge-queue[bot]
e5da468272 Publish onyx-0.4.25.tgz 2026-02-05 22:54:04 +00:00
github-merge-queue[bot]
5c904c3c7c Publish onyx-0.4.25.tgz 2026-02-05 21:20:57 +00:00
github-merge-queue[bot]
4e0538fdd7 Publish onyx-0.4.25.tgz 2026-02-05 20:59:08 +00:00
github-merge-queue[bot]
2c5f08bf69 Publish onyx-0.4.25.tgz 2026-02-05 20:49:07 +00:00
github-merge-queue[bot]
47d820b661 Publish onyx-0.4.25.tgz 2026-02-05 20:43:21 +00:00
github-merge-queue[bot]
9d940c2188 Publish onyx-0.4.25.tgz 2026-02-05 20:31:38 +00:00
github-merge-queue[bot]
98d60df338 Publish onyx-0.4.25.tgz 2026-02-05 20:24:21 +00:00
github-merge-queue[bot]
46f2e27180 Publish onyx-0.4.25.tgz 2026-02-05 20:19:22 +00:00
github-merge-queue[bot]
e3052641fd Publish onyx-0.4.25.tgz 2026-02-05 20:15:26 +00:00
github-merge-queue[bot]
4ce8739334 Publish onyx-0.4.25.tgz 2026-02-05 19:52:47 +00:00
github-merge-queue[bot]
45fd853cd2 Publish onyx-0.4.25.tgz 2026-02-05 19:46:23 +00:00
github-merge-queue[bot]
653dbafc66 Publish onyx-0.4.25.tgz 2026-02-05 19:23:45 +00:00
github-merge-queue[bot]
3b26b355d3 Publish onyx-0.4.25.tgz 2026-02-05 19:05:55 +00:00
github-merge-queue[bot]
867e87eedb Publish onyx-0.4.25.tgz 2026-02-05 18:53:43 +00:00
github-merge-queue[bot]
d1daa7d397 Publish onyx-0.4.25.tgz 2026-02-05 18:40:15 +00:00
github-merge-queue[bot]
6c51b940d2 Publish onyx-0.4.25.tgz 2026-02-05 18:34:39 +00:00
github-merge-queue[bot]
2884a622d8 Publish onyx-0.4.25.tgz 2026-02-05 18:05:10 +00:00
github-merge-queue[bot]
8a26ae3f4e Publish onyx-0.4.25.tgz 2026-02-05 07:09:19 +00:00
yuhongsun96
b3a730bbe6 Publish onyx-0.4.25.tgz 2026-02-05 05:08:26 +00:00
github-merge-queue[bot]
91a70f8028 Publish onyx-0.4.25.tgz 2026-02-05 02:57:07 +00:00
github-merge-queue[bot]
83eb7fc872 Publish onyx-0.4.25.tgz 2026-02-05 02:34:59 +00:00
github-merge-queue[bot]
a279b61e07 Publish onyx-0.4.25.tgz 2026-02-05 01:29:33 +00:00
github-merge-queue[bot]
a11404203d Publish onyx-0.4.25.tgz 2026-02-05 01:21:32 +00:00
github-merge-queue[bot]
1b9b4b1121 Publish onyx-0.4.25.tgz 2026-02-05 00:47:16 +00:00
github-merge-queue[bot]
303bc834fb Publish onyx-0.4.25.tgz 2026-02-05 00:41:49 +00:00
github-merge-queue[bot]
fceae97798 Publish onyx-0.4.25.tgz 2026-02-04 23:23:26 +00:00
github-merge-queue[bot]
21a115eedc Publish onyx-0.4.25.tgz 2026-02-04 22:24:50 +00:00
github-merge-queue[bot]
71085bd575 Publish onyx-0.4.25.tgz 2026-02-04 21:58:03 +00:00
github-merge-queue[bot]
b16155bf06 Publish onyx-0.4.25.tgz 2026-02-04 21:45:29 +00:00
github-merge-queue[bot]
e9276ff234 Publish onyx-0.4.25.tgz 2026-02-04 21:38:55 +00:00
github-merge-queue[bot]
7b18d86c47 Publish onyx-0.4.25.tgz 2026-02-04 20:02:05 +00:00
github-merge-queue[bot]
b8bde12676 Publish onyx-0.4.25.tgz 2026-02-04 19:03:39 +00:00
github-merge-queue[bot]
e48c059aed Publish onyx-0.4.25.tgz 2026-02-04 17:52:47 +00:00
github-merge-queue[bot]
92c10aa013 Publish onyx-0.4.25.tgz 2026-02-04 09:48:30 +00:00
yuhongsun96
ea7659cc89 Publish onyx-0.4.25.tgz 2026-02-04 07:13:24 +00:00
github-merge-queue[bot]
e974bc1ce1 Publish onyx-0.4.25.tgz 2026-02-04 07:04:54 +00:00
github-merge-queue[bot]
5f2f26ef1e Publish onyx-0.4.25.tgz 2026-02-04 05:22:41 +00:00
github-merge-queue[bot]
4c3d5ad778 Publish onyx-0.4.25.tgz 2026-02-04 04:56:03 +00:00
github-merge-queue[bot]
e9b35e0bc6 Publish onyx-0.4.25.tgz 2026-02-04 03:27:27 +00:00
github-merge-queue[bot]
a1d9f52450 Publish onyx-0.4.25.tgz 2026-02-04 01:58:58 +00:00
github-merge-queue[bot]
542c3130ac Publish onyx-0.4.25.tgz 2026-02-04 01:03:32 +00:00
github-merge-queue[bot]
0eb1d970d9 Publish onyx-0.4.25.tgz 2026-02-04 00:33:32 +00:00
yuhongsun96
f2f8869707 Publish onyx-0.4.25.tgz 2026-02-03 23:29:53 +00:00
yuhongsun96
646c1456ae Publish onyx-0.4.25.tgz 2026-02-03 23:22:53 +00:00
yuhongsun96
2e7f67fddb Publish onyx-0.4.25.tgz 2026-02-03 23:08:23 +00:00
github-merge-queue[bot]
be12647305 Publish onyx-0.4.25.tgz 2026-02-03 22:54:35 +00:00
github-merge-queue[bot]
aa7cef1576 Publish onyx-0.4.25.tgz 2026-02-03 22:47:14 +00:00
yuhongsun96
e1d49a428d Publish onyx-0.4.25.tgz 2026-02-03 22:40:54 +00:00
github-merge-queue[bot]
d17cdcda72 Publish onyx-0.4.25.tgz 2026-02-03 19:48:19 +00:00
github-merge-queue[bot]
465955eeeb Publish onyx-0.4.25.tgz 2026-02-03 19:31:30 +00:00
github-merge-queue[bot]
ad0e069d3d Publish onyx-0.4.25.tgz 2026-02-03 18:02:31 +00:00
github-merge-queue[bot]
4952e0464c Publish onyx-0.4.25.tgz 2026-02-03 17:59:17 +00:00
nmgarza5
7efd66e877 Publish onyx-0.4.25.tgz 2026-02-03 16:37:10 +00:00
jessicasingh7
13c91ab5d0 Publish onyx-0.4.25.tgz 2026-02-03 08:36:15 +00:00
github-merge-queue[bot]
0e2f840f09 Publish onyx-0.4.25.tgz 2026-02-03 06:41:46 +00:00
github-merge-queue[bot]
2dd73186b4 Publish onyx-0.4.25.tgz 2026-02-03 05:19:04 +00:00
github-merge-queue[bot]
b280b00169 Publish onyx-0.4.25.tgz 2026-02-03 04:12:33 +00:00
github-merge-queue[bot]
3fe1a5e9f9 Publish onyx-0.4.25.tgz 2026-02-03 02:54:31 +00:00
github-merge-queue[bot]
47da373fce Publish onyx-0.4.25.tgz 2026-02-03 02:19:59 +00:00
github-merge-queue[bot]
d8cd54a580 Publish onyx-0.4.25.tgz 2026-02-03 02:05:35 +00:00
github-merge-queue[bot]
34418253d4 Publish onyx-0.4.25.tgz 2026-02-03 01:47:09 +00:00
github-merge-queue[bot]
dfc1117179 Publish onyx-0.4.25.tgz 2026-02-03 01:35:36 +00:00
github-merge-queue[bot]
1e215f1ee2 Publish onyx-0.4.25.tgz 2026-02-03 01:22:57 +00:00
github-merge-queue[bot]
c639e5de9d Publish onyx-0.4.25.tgz 2026-02-03 00:53:54 +00:00
github-merge-queue[bot]
d8d1aa1f37 Publish onyx-0.4.25.tgz 2026-02-03 00:52:28 +00:00
github-merge-queue[bot]
6291605ddb Publish onyx-0.4.25.tgz 2026-02-03 00:33:59 +00:00
github-merge-queue[bot]
1fb928ac07 Publish onyx-0.4.25.tgz 2026-02-03 00:22:08 +00:00
github-merge-queue[bot]
fb74017631 Publish onyx-0.4.25.tgz 2026-02-03 00:17:48 +00:00
github-merge-queue[bot]
115a9f2b76 Publish onyx-0.4.25.tgz 2026-02-02 23:51:47 +00:00
github-merge-queue[bot]
044a5f0dfa Publish onyx-0.4.25.tgz 2026-02-02 23:49:26 +00:00
github-merge-queue[bot]
045f72aaf9 Publish onyx-0.4.25.tgz 2026-02-02 23:12:22 +00:00
github-merge-queue[bot]
e96084b4a9 Publish onyx-0.4.24.tgz 2026-02-02 18:54:11 +00:00
github-merge-queue[bot]
5211983bf0 Publish onyx-0.4.23.tgz 2026-02-02 18:41:27 +00:00
github-merge-queue[bot]
28534088d4 Publish onyx-0.4.23.tgz 2026-02-02 17:43:08 +00:00
github-merge-queue[bot]
91586da94a Publish onyx-0.4.23.tgz 2026-02-02 15:04:01 +00:00
github-merge-queue[bot]
467742bfd8 Publish onyx-0.4.23.tgz 2026-02-02 15:00:37 +00:00
Danelegend
bd36aab974 Publish onyx-0.4.23.tgz 2026-02-02 03:36:56 +00:00
yuhongsun96
a189025bf8 Publish onyx-0.4.23.tgz 2026-02-02 01:18:45 +00:00
github-merge-queue[bot]
de1ed3466c Publish onyx-0.4.23.tgz 2026-02-01 22:45:47 +00:00
github-merge-queue[bot]
6209d81930 Publish onyx-0.4.23.tgz 2026-02-01 22:33:34 +00:00
github-merge-queue[bot]
80e0942e85 Publish onyx-0.4.23.tgz 2026-02-01 21:37:27 +00:00
github-merge-queue[bot]
dab1083187 Publish onyx-0.4.23.tgz 2026-02-01 20:33:54 +00:00
github-merge-queue[bot]
704cffca9b Publish onyx-0.4.23.tgz 2026-02-01 20:11:10 +00:00
github-merge-queue[bot]
7bd5b0876d Publish onyx-0.4.23.tgz 2026-02-01 17:58:37 +00:00
github-merge-queue[bot]
cbaf5fdb8a Publish onyx-0.4.23.tgz 2026-02-01 09:01:17 +00:00
yuhongsun96
23a8f45511 Publish onyx-0.4.23.tgz 2026-02-01 07:45:40 +00:00
yuhongsun96
e4e6dd51f5 Publish onyx-0.4.23.tgz 2026-02-01 07:43:38 +00:00
yuhongsun96
3f7eb20075 Publish onyx-0.4.23.tgz 2026-02-01 07:17:26 +00:00
yuhongsun96
75983de1c3 Publish onyx-0.4.23.tgz 2026-02-01 07:12:45 +00:00
yuhongsun96
282c87a508 Publish onyx-0.4.23.tgz 2026-02-01 06:58:56 +00:00
yuhongsun96
2d66c5d775 Publish onyx-0.4.23.tgz 2026-02-01 06:24:22 +00:00
yuhongsun96
0daa7c9997 Publish onyx-0.4.23.tgz 2026-02-01 05:30:04 +00:00
yuhongsun96
db19521361 Publish onyx-0.4.23.tgz 2026-02-01 04:22:06 +00:00
github-merge-queue[bot]
cad802c6e4 Publish onyx-0.4.23.tgz 2026-02-01 03:42:51 +00:00
yuhongsun96
d2d5632e4c Publish onyx-0.4.23.tgz 2026-02-01 03:27:01 +00:00
github-merge-queue[bot]
031131e812 Publish onyx-0.4.23.tgz 2026-02-01 03:22:38 +00:00
github-merge-queue[bot]
16c0c7322c Publish onyx-0.4.23.tgz 2026-02-01 03:12:11 +00:00
github-merge-queue[bot]
9ebeb4d178 Publish onyx-0.4.23.tgz 2026-02-01 02:43:09 +00:00
github-merge-queue[bot]
ce6d7ed6c8 Publish onyx-0.4.23.tgz 2026-02-01 02:39:16 +00:00
github-merge-queue[bot]
9157e6b009 Publish onyx-0.4.23.tgz 2026-02-01 02:07:09 +00:00
github-merge-queue[bot]
2ff26b015a Publish onyx-0.4.23.tgz 2026-02-01 01:40:41 +00:00
github-merge-queue[bot]
9fdd879386 Publish onyx-0.4.23.tgz 2026-02-01 00:31:53 +00:00
yuhongsun96
624f060374 Publish onyx-0.4.23.tgz 2026-01-31 23:45:28 +00:00
github-merge-queue[bot]
0b3cfbb44e Publish onyx-0.4.23.tgz 2026-01-31 23:42:27 +00:00
github-merge-queue[bot]
a39553c8b5 Publish onyx-0.4.23.tgz 2026-01-31 23:18:22 +00:00
github-merge-queue[bot]
b0ed7781e6 Publish onyx-0.4.23.tgz 2026-01-31 22:25:49 +00:00
github-merge-queue[bot]
8f3fcfc91d Publish onyx-0.4.23.tgz 2026-01-31 22:15:15 +00:00
github-merge-queue[bot]
79fdc073f5 Publish onyx-0.4.23.tgz 2026-01-31 19:54:51 +00:00
github-merge-queue[bot]
5a3a59cc66 Publish onyx-0.4.23.tgz 2026-01-31 13:53:22 +00:00
github-merge-queue[bot]
9c0400addf Publish onyx-0.4.23.tgz 2026-01-31 03:13:19 +00:00
github-merge-queue[bot]
5d98cceca4 Publish onyx-0.4.23.tgz 2026-01-31 02:30:07 +00:00
github-merge-queue[bot]
7a1b89037a Publish onyx-0.4.23.tgz 2026-01-31 02:27:33 +00:00
github-merge-queue[bot]
4fb2e4767b Publish onyx-0.4.23.tgz 2026-01-31 01:24:58 +00:00
github-merge-queue[bot]
4a561c03ae Publish onyx-0.4.23.tgz 2026-01-31 00:54:14 +00:00
github-merge-queue[bot]
e459734d6e Publish onyx-0.4.23.tgz 2026-01-31 00:33:16 +00:00
github-merge-queue[bot]
101a75101f Publish onyx-0.4.23.tgz 2026-01-31 00:23:50 +00:00
nmgarza5
5f169f86a7 Publish onyx-0.4.23.tgz 2026-01-31 00:17:27 +00:00
github-merge-queue[bot]
1c07a69e8d Publish onyx-0.4.23.tgz 2026-01-30 23:39:40 +00:00
github-merge-queue[bot]
5691c4956a Publish onyx-0.4.23.tgz 2026-01-30 23:05:57 +00:00
github-merge-queue[bot]
f8ecb64a34 Publish onyx-0.4.23.tgz 2026-01-30 22:59:31 +00:00
github-merge-queue[bot]
1c9342de93 Publish onyx-0.4.23.tgz 2026-01-30 22:40:33 +00:00
github-merge-queue[bot]
6279ab8b58 Publish onyx-0.4.23.tgz 2026-01-30 22:35:29 +00:00
github-merge-queue[bot]
508a0fdf8c Publish onyx-0.4.23.tgz 2026-01-30 22:13:29 +00:00
github-merge-queue[bot]
5e2e846444 Publish onyx-0.4.23.tgz 2026-01-30 21:26:49 +00:00
github-merge-queue[bot]
0b9aec3a58 Publish onyx-0.4.23.tgz 2026-01-30 20:59:37 +00:00
github-merge-queue[bot]
456d09e35c Publish onyx-0.4.23.tgz 2026-01-30 20:55:24 +00:00
github-merge-queue[bot]
419c150efe Publish onyx-0.4.23.tgz 2026-01-30 20:51:03 +00:00
github-merge-queue[bot]
a28fa85f4b Publish onyx-0.4.23.tgz 2026-01-30 20:02:54 +00:00
github-merge-queue[bot]
f1f530b96e Publish onyx-0.4.23.tgz 2026-01-30 19:36:08 +00:00
github-merge-queue[bot]
cb6c8e1af8 Publish onyx-0.4.23.tgz 2026-01-30 18:37:13 +00:00
github-merge-queue[bot]
c660c91c6e Publish onyx-0.4.23.tgz 2026-01-30 18:13:02 +00:00
github-merge-queue[bot]
0eae90cb65 Publish onyx-0.4.23.tgz 2026-01-30 17:43:58 +00:00
github-merge-queue[bot]
8dc8dba85f Publish onyx-0.4.23.tgz 2026-01-30 12:20:05 +00:00
github-merge-queue[bot]
7466375fab Publish onyx-0.4.23.tgz 2026-01-30 11:50:45 +00:00
github-merge-queue[bot]
5adbed866c Publish onyx-0.4.23.tgz 2026-01-30 10:44:17 +00:00
github-merge-queue[bot]
7bcdefdb50 Publish onyx-0.4.23.tgz 2026-01-30 10:05:15 +00:00
github-merge-queue[bot]
8a2b1bc140 Publish onyx-0.4.23.tgz 2026-01-30 07:55:16 +00:00
github-merge-queue[bot]
402a535cb3 Publish onyx-0.4.23.tgz 2026-01-30 06:58:15 +00:00
github-merge-queue[bot]
c2c5704645 Publish onyx-0.4.23.tgz 2026-01-30 06:09:46 +00:00
github-merge-queue[bot]
8798938b03 Publish onyx-0.4.23.tgz 2026-01-30 05:03:31 +00:00
github-merge-queue[bot]
fd994703a5 Publish onyx-0.4.23.tgz 2026-01-30 05:00:27 +00:00
github-merge-queue[bot]
2f4a08a7ee Publish onyx-0.4.23.tgz 2026-01-30 04:58:10 +00:00
github-merge-queue[bot]
4c1d7f4c0c Publish onyx-0.4.23.tgz 2026-01-30 03:53:58 +00:00
acaprau
135eead407 Publish onyx-0.4.23.tgz 2026-01-30 02:43:15 +00:00
evan-onyx
a99301deab Publish onyx-0.4.23.tgz 2026-01-30 02:41:34 +00:00
github-merge-queue[bot]
f77f5297b8 Publish onyx-0.4.23.tgz 2026-01-30 01:37:18 +00:00
github-merge-queue[bot]
59577803c5 Publish onyx-0.4.23.tgz 2026-01-30 01:00:18 +00:00
github-merge-queue[bot]
e2c8d35f24 Publish onyx-0.4.23.tgz 2026-01-30 00:55:20 +00:00
github-merge-queue[bot]
971135fbd3 Publish onyx-0.4.23.tgz 2026-01-30 00:42:32 +00:00
github-merge-queue[bot]
20e92499f6 Publish onyx-0.4.23.tgz 2026-01-30 00:26:37 +00:00
github-merge-queue[bot]
68d5628107 Publish onyx-0.4.23.tgz 2026-01-30 00:12:30 +00:00
raunakab
579d2faec9 Publish onyx-0.4.23.tgz 2026-01-29 23:45:37 +00:00
github-merge-queue[bot]
4fe7cf2947 Publish onyx-0.4.23.tgz 2026-01-29 23:35:18 +00:00
github-merge-queue[bot]
81e8db020b Publish onyx-0.4.22.tgz 2026-01-29 23:06:39 +00:00
github-merge-queue[bot]
4ff3fd9fb5 Publish onyx-0.4.22.tgz 2026-01-29 23:00:13 +00:00
github-merge-queue[bot]
a6b4e00345 Publish onyx-0.4.22.tgz 2026-01-29 21:44:14 +00:00
jessicasingh7
927818540b Publish onyx-0.4.21.tgz 2026-01-29 20:58:14 +00:00
github-merge-queue[bot]
a6f7c16cbe Publish onyx-0.4.21.tgz 2026-01-29 20:49:22 +00:00
github-merge-queue[bot]
729005e8e7 Publish onyx-0.4.21.tgz 2026-01-29 20:01:47 +00:00
github-merge-queue[bot]
07524d53bd Publish onyx-0.4.21.tgz 2026-01-29 18:17:48 +00:00
github-merge-queue[bot]
c67294318e Publish onyx-0.4.21.tgz 2026-01-29 18:05:09 +00:00
github-merge-queue[bot]
29668bc298 Publish onyx-0.4.21.tgz 2026-01-29 17:52:21 +00:00
github-merge-queue[bot]
48bc278509 Publish onyx-0.4.21.tgz 2026-01-29 16:13:57 +00:00
raunakab
ba70761e76 Publish onyx-0.4.21.tgz 2026-01-29 08:52:49 +00:00
rohoswagger
6ceebcf6a7 Publish onyx-0.4.21.tgz 2026-01-29 06:59:59 +00:00
github-merge-queue[bot]
1a0253bdf7 Publish onyx-0.4.21.tgz 2026-01-29 06:40:54 +00:00
raunakab
54b737ad14 Publish onyx-0.4.21.tgz 2026-01-29 06:19:49 +00:00
rohoswagger
65efee19aa Publish onyx-0.4.21.tgz 2026-01-29 04:07:40 +00:00
rohoswagger
bfc7d0e1ac Publish onyx-0.4.21.tgz 2026-01-29 03:17:53 +00:00
github-merge-queue[bot]
7219dde6d1 Publish onyx-0.4.21.tgz 2026-01-29 01:33:32 +00:00
github-merge-queue[bot]
2dfcfc4d5f Publish onyx-0.4.21.tgz 2026-01-29 01:27:03 +00:00
github-merge-queue[bot]
ee5cd89a25 Publish onyx-0.4.21.tgz 2026-01-29 00:36:26 +00:00
Weves
9f2f0130ca Publish onyx-0.4.21.tgz 2026-01-29 00:20:23 +00:00
github-merge-queue[bot]
34cb12b5c9 Publish onyx-0.4.21.tgz 2026-01-29 00:17:10 +00:00
Weves
8dd3ef4d02 Publish onyx-0.4.21.tgz 2026-01-29 00:13:18 +00:00
github-merge-queue[bot]
567e6db41d Publish onyx-0.4.21.tgz 2026-01-28 23:55:03 +00:00
github-merge-queue[bot]
a595ba2d6a Publish onyx-0.4.21.tgz 2026-01-28 23:06:33 +00:00
github-merge-queue[bot]
f99261dd7e Publish onyx-0.4.21.tgz 2026-01-28 22:59:06 +00:00
github-merge-queue[bot]
4db3b43c78 Publish onyx-0.4.21.tgz 2026-01-28 22:58:22 +00:00
github-merge-queue[bot]
0fdcbee366 Publish onyx-0.4.21.tgz 2026-01-28 22:41:53 +00:00
jmelahman
a4c02a8cc2 Publish onyx-0.4.21.tgz 2026-01-28 22:34:38 +00:00
jmelahman
4fbcad7b30 Publish onyx-0.4.21.tgz 2026-01-28 22:32:03 +00:00
jmelahman
66ebae7bc5 Publish onyx-0.4.21.tgz 2026-01-28 22:31:36 +00:00
github-merge-queue[bot]
7853b7f367 Publish onyx-0.4.21.tgz 2026-01-28 22:30:38 +00:00
github-merge-queue[bot]
e3fa88108d Publish onyx-0.4.21.tgz 2026-01-28 22:24:32 +00:00
jmelahman
56bcf06e25 Publish onyx-0.4.21.tgz 2026-01-28 22:20:29 +00:00
jmelahman
5d571b5e6c Publish onyx-0.4.21.tgz 2026-01-28 22:13:13 +00:00
jmelahman
d03aebdbdc Publish onyx-0.4.21.tgz 2026-01-28 22:12:46 +00:00
rohoswagger
4761589b7a Publish onyx-0.4.21.tgz 2026-01-28 22:11:51 +00:00
jmelahman
2699fc2d25 Publish onyx-0.4.21.tgz 2026-01-28 22:11:24 +00:00
github-merge-queue[bot]
f29812e501 Publish onyx-0.4.21.tgz 2026-01-28 21:55:42 +00:00
github-merge-queue[bot]
0b1647bfdb Publish onyx-0.4.21.tgz 2026-01-28 21:38:32 +00:00
github-merge-queue[bot]
1d1bfb4452 Publish onyx-0.4.21.tgz 2026-01-28 21:13:20 +00:00
github-merge-queue[bot]
6b3cf7041f Publish onyx-0.4.21.tgz 2026-01-28 21:07:50 +00:00
github-merge-queue[bot]
39e712c572 Publish onyx-0.4.21.tgz 2026-01-28 20:46:10 +00:00
github-merge-queue[bot]
b87e6c1347 Publish onyx-0.4.21.tgz 2026-01-28 20:33:39 +00:00
github-merge-queue[bot]
d22abbe764 Publish onyx-0.4.21.tgz 2026-01-28 20:29:19 +00:00
github-merge-queue[bot]
6f786df1fe Publish onyx-0.4.21.tgz 2026-01-28 20:18:19 +00:00
github-merge-queue[bot]
51c1518c7d Publish onyx-0.4.21.tgz 2026-01-28 19:11:13 +00:00
github-merge-queue[bot]
2610b52839 Publish onyx-0.4.21.tgz 2026-01-28 18:58:46 +00:00
github-merge-queue[bot]
b403364db8 Publish onyx-0.4.21.tgz 2026-01-28 18:38:26 +00:00
github-merge-queue[bot]
037eafcd83 Publish onyx-0.4.21.tgz 2026-01-28 09:20:15 +00:00
github-merge-queue[bot]
8e5a8dcbaa Publish onyx-0.4.21.tgz 2026-01-28 08:22:34 +00:00
github-merge-queue[bot]
0c12d2462d Publish onyx-0.4.21.tgz 2026-01-28 06:51:50 +00:00
Weves
0c375759f8 Publish onyx-0.4.21.tgz 2026-01-28 06:45:26 +00:00
Weves
cc4dccd6b0 Publish onyx-0.4.21.tgz 2026-01-28 06:32:51 +00:00
wenxi-onyx
ca9f7a45fe Publish onyx-0.4.21.tgz 2026-01-28 06:13:33 +00:00
github-merge-queue[bot]
19ff3330c8 Publish onyx-0.4.21.tgz 2026-01-28 06:10:14 +00:00
github-merge-queue[bot]
8e4dcc2cb8 Publish onyx-0.4.21.tgz 2026-01-28 06:05:11 +00:00
rohoswagger
3eee8c3537 Publish onyx-0.4.21.tgz 2026-01-28 05:41:22 +00:00
github-merge-queue[bot]
927f3ab259 Publish onyx-0.4.21.tgz 2026-01-28 05:36:27 +00:00
github-merge-queue[bot]
181a29b768 Publish onyx-0.4.21.tgz 2026-01-28 05:20:41 +00:00
rohoswagger
27484bb2f3 Publish onyx-0.4.21.tgz 2026-01-28 05:14:22 +00:00
github-merge-queue[bot]
0c5db07012 Publish onyx-0.4.21.tgz 2026-01-28 04:40:34 +00:00
github-merge-queue[bot]
2166d34e52 Publish onyx-0.4.21.tgz 2026-01-28 04:36:00 +00:00
github-merge-queue[bot]
8f8d4102cf Publish onyx-0.4.21.tgz 2026-01-28 04:11:41 +00:00
yuhongsun96
fb18042a42 Publish onyx-0.4.21.tgz 2026-01-28 03:46:03 +00:00
github-merge-queue[bot]
8fbb0aab44 Publish onyx-0.4.21.tgz 2026-01-28 03:43:44 +00:00
github-merge-queue[bot]
fe36725ae2 Publish onyx-0.4.21.tgz 2026-01-28 03:36:08 +00:00
github-merge-queue[bot]
139b7d7e73 Publish onyx-0.4.21.tgz 2026-01-28 03:18:05 +00:00
Weves
d050904a94 Publish onyx-0.4.21.tgz 2026-01-28 03:01:57 +00:00
github-merge-queue[bot]
eb6f36dce0 Publish onyx-0.4.21.tgz 2026-01-28 02:59:50 +00:00
github-merge-queue[bot]
44a0495746 Publish onyx-0.4.21.tgz 2026-01-28 02:57:07 +00:00
github-merge-queue[bot]
1ab16d8b0b Publish onyx-0.4.21.tgz 2026-01-28 02:52:48 +00:00
rohoswagger
afb3322478 Publish onyx-0.4.21.tgz 2026-01-28 02:46:28 +00:00
github-merge-queue[bot]
796a777560 Publish onyx-0.4.21.tgz 2026-01-28 01:51:29 +00:00
github-merge-queue[bot]
7e21244567 Publish onyx-0.4.21.tgz 2026-01-28 01:43:10 +00:00
github-merge-queue[bot]
94ce49f295 Publish onyx-0.4.21.tgz 2026-01-28 01:37:48 +00:00
github-merge-queue[bot]
d83d466edd Publish onyx-0.4.21.tgz 2026-01-28 01:37:26 +00:00
rohoswagger
cb73699150 Publish onyx-0.4.21.tgz 2026-01-28 01:31:23 +00:00
nmgarza5
f3c062e5b3 Publish onyx-0.4.21.tgz 2026-01-28 01:03:09 +00:00
github-merge-queue[bot]
742f7d22a3 Publish onyx-0.4.21.tgz 2026-01-28 00:11:12 +00:00
Weves
c176d37533 Publish onyx-0.4.21.tgz 2026-01-27 23:47:30 +00:00
github-merge-queue[bot]
fac386f59c Publish onyx-0.4.21.tgz 2026-01-27 23:36:59 +00:00
github-merge-queue[bot]
2e298b3b42 Publish onyx-0.4.21.tgz 2026-01-27 23:13:30 +00:00
github-merge-queue[bot]
365bc26b00 Publish onyx-0.4.21.tgz 2026-01-27 22:37:25 +00:00
github-merge-queue[bot]
3221d727c5 Publish onyx-0.4.21.tgz 2026-01-27 22:12:31 +00:00
github-merge-queue[bot]
30853bd822 Publish onyx-0.4.21.tgz 2026-01-27 22:06:08 +00:00
github-merge-queue[bot]
d1d3e5ad46 Publish onyx-0.4.21.tgz 2026-01-27 21:55:43 +00:00
github-merge-queue[bot]
86f18d6e59 Publish onyx-0.4.21.tgz 2026-01-27 21:00:19 +00:00
github-merge-queue[bot]
3e14b3df69 Publish onyx-0.4.21.tgz 2026-01-27 20:39:01 +00:00
github-merge-queue[bot]
999eec73e6 Publish onyx-0.4.21.tgz 2026-01-27 19:55:35 +00:00
github-merge-queue[bot]
ccc0742543 Publish onyx-0.4.21.tgz 2026-01-27 19:50:22 +00:00
github-merge-queue[bot]
fb8bf31a2e Publish onyx-0.4.21.tgz 2026-01-27 19:36:49 +00:00
github-merge-queue[bot]
76dd684060 Publish onyx-0.4.21.tgz 2026-01-27 18:57:09 +00:00
Weves
7e59f1c06e Publish onyx-0.4.21.tgz 2026-01-27 18:50:25 +00:00
github-merge-queue[bot]
b17b322b03 Publish onyx-0.4.21.tgz 2026-01-27 18:43:46 +00:00
github-merge-queue[bot]
e8be17e306 Publish onyx-0.4.21.tgz 2026-01-27 18:43:24 +00:00
github-merge-queue[bot]
53920fb1f0 Publish onyx-0.4.21.tgz 2026-01-27 18:20:23 +00:00
github-merge-queue[bot]
55877d1bee Publish onyx-0.4.21.tgz 2026-01-27 17:26:53 +00:00
github-merge-queue[bot]
e1bde506c9 Publish onyx-0.4.20.tgz 2026-01-27 17:26:26 +00:00
github-merge-queue[bot]
26484a8e3e Publish onyx-0.4.20.tgz 2026-01-27 17:20:00 +00:00
github-merge-queue[bot]
aeeff4c9ce Publish onyx-0.4.20.tgz 2026-01-27 17:04:06 +00:00
github-merge-queue[bot]
9a9f89891f Publish onyx-0.4.20.tgz 2026-01-27 05:34:26 +00:00
github-merge-queue[bot]
aa566088cb Publish onyx-0.4.20.tgz 2026-01-27 04:04:11 +00:00
wenxi-onyx
5cf0ced3ab Publish onyx-0.4.20.tgz 2026-01-27 03:10:12 +00:00
Weves
3c09316cce Publish onyx-0.4.20.tgz 2026-01-27 02:27:53 +00:00
wenxi-onyx
546352ba5f Publish onyx-0.4.20.tgz 2026-01-27 01:13:38 +00:00
github-merge-queue[bot]
d92779046e Publish onyx-0.4.20.tgz 2026-01-27 00:45:43 +00:00
github-merge-queue[bot]
ec9806923d Publish onyx-0.4.20.tgz 2026-01-26 23:49:20 +00:00
justin-tahara
fc7281bc46 Publish onyx-0.4.20.tgz 2026-01-26 21:22:26 +00:00
jmelahman
29ae285099 Publish onyx-0.4.20.tgz 2026-01-26 16:56:12 +00:00
github-merge-queue[bot]
93d52a1d6a Publish onyx-0.4.20.tgz 2026-01-26 10:30:46 +00:00
github-merge-queue[bot]
791290cc59 Publish onyx-0.4.20.tgz 2026-01-26 04:50:35 +00:00
github-merge-queue[bot]
ba20e213d5 Publish onyx-0.4.20.tgz 2026-01-26 04:47:20 +00:00
github-merge-queue[bot]
bf1c4d26f6 Publish onyx-0.4.20.tgz 2026-01-25 07:51:32 +00:00
github-merge-queue[bot]
6573862991 Publish onyx-0.4.20.tgz 2026-01-25 04:48:49 +00:00
github-merge-queue[bot]
9b14f0b8c9 Publish onyx-0.4.20.tgz 2026-01-24 21:03:16 +00:00
yuhongsun96
21d7098c05 Publish onyx-0.4.20.tgz 2026-01-24 20:59:45 +00:00
nmgarza5
01b97443e5 Publish onyx-0.4.20.tgz 2026-01-24 19:49:15 +00:00
github-merge-queue[bot]
090bd0f099 Publish onyx-0.4.20.tgz 2026-01-24 01:51:58 +00:00
github-merge-queue[bot]
fed6aa7733 Publish onyx-0.4.20.tgz 2026-01-23 23:32:24 +00:00
github-merge-queue[bot]
adc2afd1f3 Publish onyx-0.4.20.tgz 2026-01-23 20:59:45 +00:00
github-merge-queue[bot]
db411f65bc Publish onyx-0.4.19.tgz 2026-01-23 19:54:20 +00:00
jmelahman
a532c80189 Publish onyx-0.4.19.tgz 2026-01-23 18:22:13 +00:00
github-merge-queue[bot]
60603ea818 Publish onyx-0.4.19.tgz 2026-01-23 17:10:08 +00:00
jmelahman
6d8eb292cb Publish onyx-0.4.19.tgz 2026-01-23 16:50:45 +00:00
github-merge-queue[bot]
968dd7ac43 Publish onyx-0.4.19.tgz 2026-01-23 05:59:29 +00:00
github-merge-queue[bot]
87e7ee1797 Publish onyx-0.4.19.tgz 2026-01-23 05:26:04 +00:00
jmelahman
7fdb025d73 Publish onyx-0.4.19.tgz 2026-01-23 04:42:10 +00:00
yuhongsun96
c7deba27b1 Publish onyx-0.4.19.tgz 2026-01-23 03:24:57 +00:00
github-merge-queue[bot]
a5473a1a28 Publish onyx-0.4.19.tgz 2026-01-23 02:51:44 +00:00
github-merge-queue[bot]
18ea27f85e Publish onyx-0.4.19.tgz 2026-01-23 01:53:20 +00:00
jmelahman
0ce8580277 Publish onyx-0.4.19.tgz 2026-01-22 23:18:14 +00:00
github-merge-queue[bot]
50ee097f82 Publish onyx-0.4.19.tgz 2026-01-22 20:13:36 +00:00
jmelahman
42f6177420 Publish onyx-0.4.19.tgz 2026-01-22 19:27:01 +00:00
github-merge-queue[bot]
2e47d9fcb6 Publish onyx-0.4.19.tgz 2026-01-22 18:22:24 +00:00
justin-tahara
817561c88e Publish onyx-0.4.19.tgz 2026-01-22 18:11:00 +00:00
github-merge-queue[bot]
1fb72046bc Publish onyx-0.4.19.tgz 2026-01-22 18:05:46 +00:00
github-merge-queue[bot]
9c31df2391 Publish onyx-0.4.19.tgz 2026-01-22 17:56:50 +00:00
github-merge-queue[bot]
ad2a141953 Publish onyx-0.4.19.tgz 2026-01-22 17:47:07 +00:00
github-merge-queue[bot]
1366cdefde Publish onyx-0.4.18.tgz 2026-01-21 18:48:07 +00:00
github-merge-queue[bot]
045d6203f7 Publish onyx-0.4.18.tgz 2026-01-21 16:48:44 +00:00
raunakab
d9ee3c5726 Publish onyx-0.4.18.tgz 2026-01-21 08:30:06 +00:00
github-merge-queue[bot]
48cf83a076 Publish onyx-0.4.18.tgz 2026-01-21 07:38:08 +00:00
github-merge-queue[bot]
f9e70cea61 Publish onyx-0.4.18.tgz 2026-01-21 04:38:37 +00:00
github-merge-queue[bot]
562dac0840 Publish onyx-0.4.18.tgz 2026-01-21 04:28:30 +00:00
yuhongsun96
d3ca839863 Publish onyx-0.4.18.tgz 2026-01-21 03:50:49 +00:00
github-merge-queue[bot]
5d9bcee1f4 Publish onyx-0.4.18.tgz 2026-01-21 03:48:49 +00:00
jmelahman
85d94be44e Publish onyx-0.4.18.tgz 2026-01-21 03:20:40 +00:00
github-merge-queue[bot]
61d4e73902 Publish onyx-0.4.18.tgz 2026-01-21 02:01:46 +00:00
github-merge-queue[bot]
8afe49c8e2 Publish onyx-0.4.18.tgz 2026-01-21 01:39:46 +00:00
github-merge-queue[bot]
8e37d4e9c8 Publish onyx-0.4.18.tgz 2026-01-21 01:11:21 +00:00
github-merge-queue[bot]
11592597e9 Publish onyx-0.4.18.tgz 2026-01-21 00:44:32 +00:00
yuhongsun96
e1c810ed88 Publish onyx-0.4.18.tgz 2026-01-21 00:18:43 +00:00
github-merge-queue[bot]
840218b0a5 Publish onyx-0.4.18.tgz 2026-01-21 00:09:37 +00:00
github-merge-queue[bot]
3ac06954c5 Publish onyx-0.4.18.tgz 2026-01-20 23:41:09 +00:00
yuhongsun96
b048a0382b Publish onyx-0.4.18.tgz 2026-01-20 23:14:23 +00:00
justin-tahara
3e823eb61b Publish onyx-0.4.18.tgz 2026-01-20 22:45:10 +00:00
github-merge-queue[bot]
7bb7186c30 Publish onyx-0.4.18.tgz 2026-01-20 22:40:54 +00:00
jmelahman
f36178cdeb Publish onyx-0.4.18.tgz 2026-01-20 22:30:03 +00:00
github-merge-queue[bot]
cdd24ce3e7 Publish onyx-0.4.18.tgz 2026-01-20 22:17:05 +00:00
justin-tahara
208bf9fa2d Publish onyx-0.4.18.tgz 2026-01-20 22:08:05 +00:00
github-merge-queue[bot]
a06d1a2d08 Publish onyx-0.4.18.tgz 2026-01-20 22:02:24 +00:00
yuhongsun96
a6ac5b6e30 Publish onyx-0.4.18.tgz 2026-01-20 21:36:48 +00:00
github-merge-queue[bot]
74f739dcbb Publish onyx-0.4.18.tgz 2026-01-20 21:16:31 +00:00
raunakab
ad7592c511 Publish onyx-0.4.18.tgz 2026-01-20 21:05:10 +00:00
github-merge-queue[bot]
e9f2da764b Publish onyx-0.4.18.tgz 2026-01-20 20:58:04 +00:00
github-merge-queue[bot]
a161b0e6c9 Publish onyx-0.4.18.tgz 2026-01-20 20:37:52 +00:00
github-merge-queue[bot]
1af9ff5876 Publish onyx-0.4.18.tgz 2026-01-20 20:36:48 +00:00
github-merge-queue[bot]
8069352584 Publish onyx-0.4.18.tgz 2026-01-20 19:10:40 +00:00
github-merge-queue[bot]
a6df0f570c Publish onyx-0.4.18.tgz 2026-01-20 19:06:59 +00:00
jmelahman
961d676a47 Publish onyx-0.4.18.tgz 2026-01-20 19:03:41 +00:00
github-merge-queue[bot]
00e8a334f3 Publish onyx-0.4.18.tgz 2026-01-20 18:26:09 +00:00
github-merge-queue[bot]
5179b98499 Publish onyx-0.4.18.tgz 2026-01-20 17:15:57 +00:00
github-merge-queue[bot]
dae67fee85 Publish onyx-0.4.18.tgz 2026-01-20 07:12:50 +00:00
github-merge-queue[bot]
3c357a1c25 Publish onyx-0.4.18.tgz 2026-01-20 06:22:48 +00:00
jmelahman
63cf169cbf Publish onyx-0.4.18.tgz 2026-01-20 03:48:01 +00:00
jmelahman
daa8d7db4d Publish onyx-0.4.18.tgz 2026-01-20 03:20:48 +00:00
yuhongsun96
652a1e2b9f Publish onyx-0.4.18.tgz 2026-01-20 03:05:15 +00:00
yuhongsun96
9bae8138d2 Publish onyx-0.4.18.tgz 2026-01-20 02:57:56 +00:00
github-merge-queue[bot]
e59035920c Publish onyx-0.4.18.tgz 2026-01-20 01:28:43 +00:00
github-merge-queue[bot]
30d0588d1e Publish onyx-0.4.18.tgz 2026-01-20 00:22:31 +00:00
github-merge-queue[bot]
90cabe2469 Publish onyx-0.4.18.tgz 2026-01-20 00:06:26 +00:00
github-merge-queue[bot]
16586a375a Publish onyx-0.4.18.tgz 2026-01-19 23:19:26 +00:00
yuhongsun96
c4f72a61a9 Publish onyx-0.4.18.tgz 2026-01-19 21:37:44 +00:00
github-merge-queue[bot]
afe75479e4 Publish onyx-0.4.18.tgz 2026-01-19 21:25:00 +00:00
github-merge-queue[bot]
08ed29dda0 Publish onyx-0.4.18.tgz 2026-01-19 20:29:31 +00:00
github-merge-queue[bot]
80b406413f Publish onyx-0.4.18.tgz 2026-01-19 18:48:37 +00:00
github-merge-queue[bot]
ac289b7cfa Publish onyx-0.4.18.tgz 2026-01-19 18:08:48 +00:00
github-merge-queue[bot]
d937cf39b7 Publish onyx-0.4.18.tgz 2026-01-19 04:37:36 +00:00
github-merge-queue[bot]
085d602d4f Publish onyx-0.4.18.tgz 2026-01-19 02:53:38 +00:00
github-merge-queue[bot]
684ee1f15d Publish onyx-0.4.18.tgz 2026-01-19 00:33:37 +00:00
github-merge-queue[bot]
8f88a6bea0 Publish onyx-0.4.18.tgz 2026-01-18 23:18:01 +00:00
yuhongsun96
6fdd157db8 Publish onyx-0.4.18.tgz 2026-01-18 04:06:09 +00:00
github-merge-queue[bot]
3c495f8d4a Publish onyx-0.4.18.tgz 2026-01-18 02:04:22 +00:00
yuhongsun96
d3ec3e1035 Publish onyx-0.4.18.tgz 2026-01-17 23:56:56 +00:00
github-merge-queue[bot]
e3b178bcdc Publish onyx-0.4.18.tgz 2026-01-17 02:15:05 +00:00
github-merge-queue[bot]
468f1af394 Publish onyx-0.4.18.tgz 2026-01-17 02:04:30 +00:00
github-merge-queue[bot]
30ba8f7efd Publish onyx-0.4.18.tgz 2026-01-17 01:55:56 +00:00
jmelahman
084c418e51 Publish onyx-0.4.18.tgz 2026-01-17 01:04:26 +00:00
yuhongsun96
170e70ccf3 Publish onyx-0.4.18.tgz 2026-01-17 00:33:47 +00:00
github-merge-queue[bot]
9ffcd931ca Publish onyx-0.4.18.tgz 2026-01-17 00:03:57 +00:00
github-merge-queue[bot]
b2f451b019 Publish onyx-0.4.18.tgz 2026-01-16 23:55:08 +00:00
github-merge-queue[bot]
fb6ff08acc Publish onyx-0.4.18.tgz 2026-01-16 23:41:48 +00:00
yuhongsun96
377ae0f170 Publish onyx-0.4.18.tgz 2026-01-16 23:26:59 +00:00
github-merge-queue[bot]
56dbaff3a2 Publish onyx-0.4.18.tgz 2026-01-16 22:16:29 +00:00
github-merge-queue[bot]
c03c1081d0 Publish onyx-0.4.18.tgz 2026-01-16 21:46:32 +00:00
github-merge-queue[bot]
303c82002b Publish onyx-0.4.18.tgz 2026-01-16 20:32:10 +00:00
github-merge-queue[bot]
ccd4eebab0 Publish onyx-0.4.18.tgz 2026-01-16 20:25:54 +00:00
github-merge-queue[bot]
bab1da82db Publish onyx-0.4.18.tgz 2026-01-16 20:14:59 +00:00
yuhongsun96
1fb06f69a4 Publish onyx-0.4.18.tgz 2026-01-16 19:51:39 +00:00
yuhongsun96
8444c39394 Publish onyx-0.4.18.tgz 2026-01-16 19:24:50 +00:00
github-merge-queue[bot]
f874612225 Publish onyx-0.4.18.tgz 2026-01-16 18:16:14 +00:00
github-merge-queue[bot]
9399413ceb Publish onyx-0.4.18.tgz 2026-01-16 17:58:55 +00:00
github-merge-queue[bot]
8e7cf40190 Publish onyx-0.4.18.tgz 2026-01-16 16:39:26 +00:00
github-merge-queue[bot]
0cda20238c Publish onyx-0.4.18.tgz 2026-01-16 10:37:49 +00:00
github-merge-queue[bot]
3d1dce8f20 Publish onyx-0.4.18.tgz 2026-01-16 10:13:32 +00:00
github-merge-queue[bot]
ec3b1b102e Publish onyx-0.4.18.tgz 2026-01-16 10:06:58 +00:00
github-merge-queue[bot]
18394374b1 Publish onyx-0.4.18.tgz 2026-01-16 10:05:40 +00:00
github-merge-queue[bot]
6edafaab51 Publish onyx-0.4.18.tgz 2026-01-16 09:36:14 +00:00
jmelahman
883cbdbd03 Publish onyx-0.4.18.tgz 2026-01-16 09:03:47 +00:00
github-merge-queue[bot]
9651cdc5a0 Publish onyx-0.4.18.tgz 2026-01-16 08:48:48 +00:00
github-merge-queue[bot]
b6b8f7d368 Publish onyx-0.4.18.tgz 2026-01-16 03:54:33 +00:00
github-merge-queue[bot]
88591bb89a Publish onyx-0.4.18.tgz 2026-01-16 03:52:14 +00:00
github-merge-queue[bot]
1971958c8a Publish onyx-0.4.18.tgz 2026-01-16 03:18:02 +00:00
github-merge-queue[bot]
c16c59bf9d Publish onyx-0.4.18.tgz 2026-01-16 02:07:24 +00:00
github-merge-queue[bot]
6853104215 Publish onyx-0.4.18.tgz 2026-01-16 01:46:41 +00:00
github-merge-queue[bot]
7bd9ddd7d6 Publish onyx-0.4.18.tgz 2026-01-16 01:08:07 +00:00
github-merge-queue[bot]
6fb17fc641 Publish onyx-0.4.18.tgz 2026-01-16 00:18:47 +00:00
github-merge-queue[bot]
122a00063d Publish onyx-0.4.18.tgz 2026-01-16 00:00:06 +00:00
github-merge-queue[bot]
5856e5b852 Publish onyx-0.4.18.tgz 2026-01-15 23:09:26 +00:00
jmelahman
64931247b4 Publish onyx-0.4.18.tgz 2026-01-15 20:36:48 +00:00
jmelahman
44a935b03c Publish onyx-0.4.18.tgz 2026-01-15 20:28:09 +00:00
jmelahman
8f98863b04 Publish onyx-0.4.18.tgz 2026-01-15 19:50:53 +00:00
jmelahman
7a0df41eec Publish onyx-0.4.18.tgz 2026-01-15 19:11:22 +00:00
github-merge-queue[bot]
37513fd749 Publish onyx-0.4.18.tgz 2026-01-15 17:52:40 +00:00
github-merge-queue[bot]
3b9b513a65 Publish onyx-0.4.18.tgz 2026-01-15 17:16:27 +00:00
jmelahman
df1aa8fa36 Publish onyx-0.4.18.tgz 2026-01-15 16:09:17 +00:00
github-merge-queue[bot]
206cdec607 Publish onyx-0.4.18.tgz 2026-01-15 02:26:20 +00:00
github-merge-queue[bot]
77162612ba Publish onyx-0.4.18.tgz 2026-01-15 01:48:12 +00:00
github-merge-queue[bot]
80a145f096 Publish onyx-0.4.18.tgz 2026-01-15 01:21:37 +00:00
github-merge-queue[bot]
9aa559852e Publish onyx-0.4.18.tgz 2026-01-15 00:46:11 +00:00
github-merge-queue[bot]
993b9c3414 Publish onyx-0.4.18.tgz 2026-01-15 00:02:23 +00:00
github-merge-queue[bot]
06252bfa6b Publish onyx-0.4.18.tgz 2026-01-14 23:22:54 +00:00
yuhongsun96
e241dc11ea Publish onyx-0.4.18.tgz 2026-01-14 22:06:50 +00:00
github-merge-queue[bot]
3ed6056423 Publish onyx-0.4.18.tgz 2026-01-14 21:09:49 +00:00
github-merge-queue[bot]
2bd7e7ebb9 Publish onyx-0.4.18.tgz 2026-01-14 20:41:53 +00:00
github-merge-queue[bot]
c5ca0195c1 Publish onyx-0.4.18.tgz 2026-01-14 20:10:14 +00:00
github-merge-queue[bot]
f8795bd4bf Publish onyx-0.4.18.tgz 2026-01-14 20:04:46 +00:00
github-merge-queue[bot]
3b9f7892a4 Publish onyx-0.4.18.tgz 2026-01-14 19:56:47 +00:00
github-merge-queue[bot]
bb2669da77 Publish onyx-0.4.18.tgz 2026-01-14 19:55:46 +00:00
github-merge-queue[bot]
c0ffd54089 Publish onyx-0.4.18.tgz 2026-01-14 19:43:34 +00:00
github-merge-queue[bot]
c2ec3f3ed8 Publish onyx-0.4.18.tgz 2026-01-14 19:39:47 +00:00
github-merge-queue[bot]
2cb1b196f4 Publish onyx-0.4.18.tgz 2026-01-14 17:56:54 +00:00
github-merge-queue[bot]
713811e4cc Publish onyx-0.4.18.tgz 2026-01-14 17:24:45 +00:00
github-merge-queue[bot]
acb3017bc6 Publish onyx-0.4.18.tgz 2026-01-14 05:17:29 +00:00
github-merge-queue[bot]
dd6513c1af Publish onyx-0.4.18.tgz 2026-01-14 03:12:57 +00:00
github-merge-queue[bot]
b6d9e631dd Publish onyx-0.4.18.tgz 2026-01-14 02:52:58 +00:00
github-merge-queue[bot]
a7a44a9058 Publish onyx-0.4.18.tgz 2026-01-14 02:05:58 +00:00
github-merge-queue[bot]
74d1cd9bb6 Publish onyx-0.4.18.tgz 2026-01-14 00:34:12 +00:00
github-merge-queue[bot]
3ef3ac5e26 Publish onyx-0.4.18.tgz 2026-01-14 00:12:52 +00:00
github-merge-queue[bot]
385ef1f28e Publish onyx-0.4.18.tgz 2026-01-13 23:45:09 +00:00
github-merge-queue[bot]
899f6653dd Publish onyx-0.4.18.tgz 2026-01-13 23:42:07 +00:00
github-merge-queue[bot]
6f527cf169 Publish onyx-0.4.18.tgz 2026-01-13 22:42:08 +00:00
github-merge-queue[bot]
1d76f8fb8c Publish onyx-0.4.18.tgz 2026-01-13 22:21:50 +00:00
jmelahman
16f58a21cd Publish onyx-0.4.18.tgz 2026-01-13 22:10:15 +00:00
jmelahman
62c7755556 Publish onyx-0.4.18.tgz 2026-01-13 21:59:12 +00:00
jmelahman
2d6b066a54 Publish onyx-0.4.18.tgz 2026-01-13 21:22:52 +00:00
jmelahman
f559e8636c Publish onyx-0.4.18.tgz 2026-01-13 21:22:12 +00:00
github-merge-queue[bot]
a63dd5eb32 Publish onyx-0.4.18.tgz 2026-01-13 20:47:51 +00:00
github-merge-queue[bot]
dbbfc869d1 Publish onyx-0.4.18.tgz 2026-01-13 19:53:40 +00:00
github-merge-queue[bot]
f73f6033a9 Publish onyx-0.4.18.tgz 2026-01-13 19:53:11 +00:00
github-merge-queue[bot]
11d3fb9598 Publish onyx-0.4.18.tgz 2026-01-13 19:41:19 +00:00
github-merge-queue[bot]
4973aa54d3 Publish onyx-0.4.18.tgz 2026-01-13 19:29:24 +00:00
jmelahman
f97ee9e287 Publish onyx-0.4.18.tgz 2026-01-13 19:23:01 +00:00
github-merge-queue[bot]
6f0219e79c Publish onyx-0.4.18.tgz 2026-01-13 19:09:25 +00:00
github-merge-queue[bot]
67e1d7240d Publish onyx-0.4.18.tgz 2026-01-13 18:41:54 +00:00
github-merge-queue[bot]
f6b08a227f Publish onyx-0.4.18.tgz 2026-01-13 18:04:04 +00:00
github-merge-queue[bot]
bd55da78dd Publish onyx-0.4.18.tgz 2026-01-13 03:57:49 +00:00
github-merge-queue[bot]
5593b791c1 Publish onyx-0.4.18.tgz 2026-01-13 03:45:18 +00:00
github-merge-queue[bot]
55c89559b0 Publish onyx-0.4.18.tgz 2026-01-13 01:48:23 +00:00
github-merge-queue[bot]
17b2dbdcee Publish onyx-0.4.18.tgz 2026-01-13 01:10:22 +00:00
github-merge-queue[bot]
9ed2afb29a Publish onyx-0.4.18.tgz 2026-01-13 00:04:37 +00:00
github-merge-queue[bot]
7e5335d15c Publish onyx-0.4.18.tgz 2026-01-12 23:27:01 +00:00
github-merge-queue[bot]
60014c48b4 Publish onyx-0.4.18.tgz 2026-01-12 23:08:44 +00:00
github-merge-queue[bot]
5113a17a6c Publish onyx-0.4.18.tgz 2026-01-12 23:02:50 +00:00
github-merge-queue[bot]
0eb1269df4 Publish onyx-0.4.18.tgz 2026-01-12 22:00:04 +00:00
github-merge-queue[bot]
6f3f81a8cd Publish onyx-0.4.18.tgz 2026-01-12 21:54:19 +00:00
jmelahman
20323b613c Publish onyx-0.4.18.tgz 2026-01-12 21:49:29 +00:00
jmelahman
af6d2b291a Publish onyx-0.4.18.tgz 2026-01-12 21:13:16 +00:00
jmelahman
40fabdc291 Publish onyx-0.4.18.tgz 2026-01-12 20:53:03 +00:00
github-merge-queue[bot]
40a5731223 Publish onyx-0.4.18.tgz 2026-01-12 20:42:46 +00:00
github-merge-queue[bot]
58e0345903 Publish onyx-0.4.18.tgz 2026-01-12 20:35:15 +00:00
github-merge-queue[bot]
d198431fe2 Publish onyx-0.4.18.tgz 2026-01-12 19:53:26 +00:00
github-merge-queue[bot]
f82a425f43 Publish onyx-0.4.18.tgz 2026-01-12 19:19:12 +00:00
wenxi-onyx
4b9f633be9 Publish onyx-0.4.18.tgz 2026-01-12 19:11:10 +00:00
github-merge-queue[bot]
c07a94ff9c Publish onyx-0.4.18.tgz 2026-01-12 18:28:08 +00:00
github-merge-queue[bot]
2d469f7b72 Publish onyx-0.4.18.tgz 2026-01-12 12:14:26 +00:00
raunakab
95cff1789c Publish onyx-0.4.18.tgz 2026-01-12 11:28:35 +00:00
github-merge-queue[bot]
c17a2958c0 Publish onyx-0.4.18.tgz 2026-01-12 11:03:20 +00:00
github-merge-queue[bot]
4482c6d38a Publish onyx-0.4.18.tgz 2026-01-12 07:06:33 +00:00
github-merge-queue[bot]
3cdf929ac4 Publish onyx-0.4.18.tgz 2026-01-12 06:32:05 +00:00
github-merge-queue[bot]
73fc930f23 Publish onyx-0.4.18.tgz 2026-01-12 02:08:55 +00:00
github-merge-queue[bot]
13fc11418e Publish onyx-0.4.18.tgz 2026-01-12 01:17:56 +00:00
github-merge-queue[bot]
e38a6416fd Publish onyx-0.4.18.tgz 2026-01-11 22:24:36 +00:00
github-merge-queue[bot]
1682c548a1 Publish onyx-0.4.18.tgz 2026-01-11 22:21:43 +00:00
github-merge-queue[bot]
46d95399b9 Publish onyx-0.4.18.tgz 2026-01-11 21:19:24 +00:00
github-merge-queue[bot]
f2b2590f1a Publish onyx-0.4.18.tgz 2026-01-11 21:09:46 +00:00
github-merge-queue[bot]
81f0ed7c89 Publish onyx-0.4.18.tgz 2026-01-11 20:51:01 +00:00
wenxi-onyx
8efeaff739 Publish onyx-0.4.18.tgz 2026-01-11 20:45:50 +00:00
github-merge-queue[bot]
b2edfad49d Publish onyx-0.4.18.tgz 2026-01-11 11:27:24 +00:00
jmelahman
a403976793 Publish onyx-0.4.18.tgz 2026-01-11 06:02:40 +00:00
jmelahman
fd466eb12d Publish onyx-0.4.18.tgz 2026-01-11 05:23:07 +00:00
jmelahman
58c31a84c6 Publish onyx-0.4.18.tgz 2026-01-11 04:39:58 +00:00
jmelahman
721344dad6 Publish onyx-0.4.18.tgz 2026-01-11 04:02:13 +00:00
github-merge-queue[bot]
0516f199f6 Publish onyx-0.4.18.tgz 2026-01-11 00:35:07 +00:00
github-merge-queue[bot]
79d3c5fe4d Publish onyx-0.4.18.tgz 2026-01-11 00:29:32 +00:00
Weves
21f48e9e9c Publish onyx-0.4.18.tgz 2026-01-11 00:01:32 +00:00
wenxi-onyx
4dee622ff0 Publish onyx-0.4.18.tgz 2026-01-10 23:13:07 +00:00
Weves
91f5febad7 Publish onyx-0.4.18.tgz 2026-01-10 21:44:25 +00:00
github-merge-queue[bot]
0395a3bb30 Publish onyx-0.4.18.tgz 2026-01-10 06:36:43 +00:00
github-merge-queue[bot]
e52818f4fa Publish onyx-0.4.18.tgz 2026-01-10 05:19:07 +00:00
github-merge-queue[bot]
4fd649eda3 Publish onyx-0.4.18.tgz 2026-01-10 05:02:47 +00:00
yuhongsun96
88acc1a307 Publish onyx-0.4.18.tgz 2026-01-10 04:40:54 +00:00
yuhongsun96
e92b9cb353 Publish onyx-0.4.18.tgz 2026-01-10 04:38:24 +00:00
jmelahman
63839739fe Publish onyx-0.4.18.tgz 2026-01-10 04:21:15 +00:00
github-merge-queue[bot]
af938d8f89 Publish onyx-0.4.18.tgz 2026-01-10 00:22:37 +00:00
github-merge-queue[bot]
6ae461b9c9 Publish onyx-0.4.18.tgz 2026-01-10 00:16:22 +00:00
github-merge-queue[bot]
db1ede41a1 Publish onyx-0.4.18.tgz 2026-01-09 23:59:21 +00:00
yuhongsun96
9744b24040 Publish onyx-0.4.18.tgz 2026-01-09 23:54:12 +00:00
yuhongsun96
65544c0ba5 Publish onyx-0.4.18.tgz 2026-01-09 23:28:51 +00:00
nmgarza5
d668bec674 Publish onyx-0.4.18.tgz 2026-01-09 22:21:44 +00:00
github-merge-queue[bot]
01e1463540 Publish onyx-0.4.18.tgz 2026-01-09 20:10:19 +00:00
github-merge-queue[bot]
12e344e59f Publish onyx-0.4.18.tgz 2026-01-09 19:13:44 +00:00
github-merge-queue[bot]
8f4710def0 Publish onyx-0.4.18.tgz 2026-01-09 18:51:13 +00:00
github-merge-queue[bot]
5a8bc6c132 Publish onyx-0.4.18.tgz 2026-01-09 18:20:23 +00:00
github-merge-queue[bot]
7199976b7b Publish onyx-0.4.18.tgz 2026-01-09 17:52:14 +00:00
github-merge-queue[bot]
1b302d0b31 Publish onyx-0.4.18.tgz 2026-01-09 17:22:10 +00:00
github-merge-queue[bot]
390375b318 Publish onyx-0.4.18.tgz 2026-01-09 05:52:07 +00:00
github-merge-queue[bot]
ba0978f2e9 Publish onyx-0.4.18.tgz 2026-01-09 04:06:49 +00:00
github-merge-queue[bot]
d0a868536b Publish onyx-0.4.18.tgz 2026-01-09 03:31:37 +00:00
raunakab
4a0e8acd68 Publish onyx-0.4.18.tgz 2026-01-09 03:26:30 +00:00
github-merge-queue[bot]
6de08bc8c5 Publish onyx-0.4.18.tgz 2026-01-09 03:15:24 +00:00
github-merge-queue[bot]
3e9a0bd99a Publish onyx-0.4.18.tgz 2026-01-09 02:56:15 +00:00
github-merge-queue[bot]
4abd0d7de9 Publish onyx-0.4.18.tgz 2026-01-09 00:14:17 +00:00
github-merge-queue[bot]
9cab9b3287 Publish onyx-0.4.18.tgz 2026-01-08 23:34:17 +00:00
raunakab
005136ffbc Publish onyx-0.4.18.tgz 2026-01-08 22:57:56 +00:00
Weves
80e1be19b3 Publish onyx-0.4.18.tgz 2026-01-08 22:46:18 +00:00
github-merge-queue[bot]
1c2008d348 Publish onyx-0.4.18.tgz 2026-01-08 21:46:51 +00:00
github-merge-queue[bot]
fb236d1664 Publish onyx-0.4.18.tgz 2026-01-08 20:29:48 +00:00
github-merge-queue[bot]
337ea7acef Publish onyx-0.4.18.tgz 2026-01-08 18:58:15 +00:00
github-merge-queue[bot]
771d2b2937 Publish onyx-0.4.18.tgz 2026-01-08 18:35:04 +00:00
github-merge-queue[bot]
51b27b283b Publish onyx-0.4.18.tgz 2026-01-08 18:32:40 +00:00
github-merge-queue[bot]
556198653d Publish onyx-0.4.18.tgz 2026-01-08 17:14:52 +00:00
github-merge-queue[bot]
23fb312855 Publish onyx-0.4.18.tgz 2026-01-08 07:29:51 +00:00
github-merge-queue[bot]
98d3f94d64 Publish onyx-0.4.18.tgz 2026-01-08 05:13:20 +00:00
github-merge-queue[bot]
02d93cdde7 Publish onyx-0.4.17.tgz 2026-01-08 00:37:51 +00:00
github-merge-queue[bot]
4a4f5b4423 Publish onyx-0.4.17.tgz 2026-01-08 00:10:26 +00:00
github-merge-queue[bot]
d72adfab5a Publish onyx-0.4.17.tgz 2026-01-08 00:07:42 +00:00
github-merge-queue[bot]
f6288898cf Publish onyx-0.4.17.tgz 2026-01-07 23:58:37 +00:00
github-merge-queue[bot]
3e6210befb Publish onyx-0.4.17.tgz 2026-01-07 23:42:00 +00:00
github-merge-queue[bot]
4b02046be1 Publish onyx-0.4.17.tgz 2026-01-07 23:40:02 +00:00
github-merge-queue[bot]
9289564aa5 Publish onyx-0.4.17.tgz 2026-01-07 23:03:51 +00:00
github-merge-queue[bot]
111f7c6558 Publish onyx-0.4.17.tgz 2026-01-07 22:38:20 +00:00
github-merge-queue[bot]
18c72e4554 Publish onyx-0.4.17.tgz 2026-01-07 21:53:37 +00:00
github-merge-queue[bot]
82736ff925 Publish onyx-0.4.17.tgz 2026-01-07 21:23:03 +00:00
github-merge-queue[bot]
dfabd71aae Publish onyx-0.4.17.tgz 2026-01-07 20:47:52 +00:00
github-merge-queue[bot]
f741bf2c36 Publish onyx-0.4.17.tgz 2026-01-07 20:42:06 +00:00
jmelahman
575934d517 Publish onyx-0.4.17.tgz 2026-01-07 19:53:33 +00:00
github-merge-queue[bot]
f748454ebb Publish onyx-0.4.17.tgz 2026-01-07 19:50:03 +00:00
github-merge-queue[bot]
d5b0072989 Publish onyx-0.4.17.tgz 2026-01-07 19:45:13 +00:00
github-merge-queue[bot]
041260341a Publish onyx-0.4.17.tgz 2026-01-07 18:39:41 +00:00
github-merge-queue[bot]
1f184e7afc Publish onyx-0.4.17.tgz 2026-01-07 18:20:42 +00:00
github-merge-queue[bot]
781dab3ea5 Publish onyx-0.4.17.tgz 2026-01-07 18:17:36 +00:00
github-merge-queue[bot]
70473d7b7e Publish onyx-0.4.17.tgz 2026-01-07 18:11:12 +00:00
github-merge-queue[bot]
c694b33fff Publish onyx-0.4.17.tgz 2026-01-07 17:49:55 +00:00
github-merge-queue[bot]
ff3f1cb607 Publish onyx-0.4.17.tgz 2026-01-07 17:45:21 +00:00
jmelahman
966a27ebee Publish onyx-0.4.17.tgz 2026-01-07 15:07:43 +00:00
github-merge-queue[bot]
a524321921 Publish onyx-0.4.17.tgz 2026-01-07 06:15:31 +00:00
jmelahman
a03c47a17f Publish onyx-0.4.17.tgz 2026-01-07 05:58:34 +00:00
github-merge-queue[bot]
d7bb26174a Publish onyx-0.4.17.tgz 2026-01-07 05:48:40 +00:00
github-merge-queue[bot]
fa51203707 Publish onyx-0.4.17.tgz 2026-01-07 05:47:22 +00:00
justin-tahara
937861e721 Publish onyx-0.4.17.tgz 2026-01-07 02:38:55 +00:00
jmelahman
f411a48650 Publish onyx-0.4.17.tgz 2026-01-07 01:12:23 +00:00
jmelahman
d1934398dd Publish onyx-0.4.17.tgz 2026-01-07 01:09:31 +00:00
jmelahman
472db781af Publish onyx-0.4.17.tgz 2026-01-07 00:20:20 +00:00
jmelahman
92d2e6e11e Publish onyx-0.4.17.tgz 2026-01-07 00:04:17 +00:00
jmelahman
44b413d1c5 Publish onyx-0.4.17.tgz 2026-01-07 00:01:41 +00:00
github-merge-queue[bot]
ac1305675a Publish onyx-0.4.17.tgz 2026-01-06 23:09:27 +00:00
justin-tahara
da5ea3cf75 Publish onyx-0.4.17.tgz 2026-01-06 22:53:23 +00:00
github-merge-queue[bot]
5520fd611f Publish onyx-0.4.17.tgz 2026-01-06 22:48:50 +00:00
github-merge-queue[bot]
8dfa9abd57 Publish onyx-0.4.17.tgz 2026-01-06 22:40:04 +00:00
github-merge-queue[bot]
e00085a95f Publish onyx-0.4.17.tgz 2026-01-06 22:00:39 +00:00
github-merge-queue[bot]
8a831dde79 Publish onyx-0.4.17.tgz 2026-01-06 21:20:27 +00:00
github-merge-queue[bot]
d82466ffc8 Publish onyx-0.4.17.tgz 2026-01-06 21:03:03 +00:00
github-merge-queue[bot]
d73f2c759d Publish onyx-0.4.17.tgz 2026-01-06 20:59:25 +00:00
github-merge-queue[bot]
8fd1f04722 Publish onyx-0.4.17.tgz 2026-01-06 20:42:57 +00:00
github-merge-queue[bot]
ecdda76e5a Publish onyx-0.4.17.tgz 2026-01-06 19:21:23 +00:00
github-merge-queue[bot]
0221929b13 Publish onyx-0.4.17.tgz 2026-01-06 18:50:56 +00:00
github-merge-queue[bot]
cfe82b49c9 Publish onyx-0.4.17.tgz 2026-01-06 18:27:06 +00:00
github-merge-queue[bot]
60461fb87c Publish onyx-0.4.17.tgz 2026-01-06 17:41:42 +00:00
github-merge-queue[bot]
769fdfd801 Publish onyx-0.4.17.tgz 2026-01-06 17:37:13 +00:00
github-merge-queue[bot]
4806371d09 Publish onyx-0.4.17.tgz 2026-01-06 16:24:28 +00:00
Subash-Mohan
c52fdf9922 Publish onyx-0.4.17.tgz 2026-01-06 08:47:46 +00:00
github-merge-queue[bot]
e1b9ce21b5 Publish onyx-0.4.17.tgz 2026-01-06 04:17:28 +00:00
github-merge-queue[bot]
3253450e95 Publish onyx-0.4.17.tgz 2026-01-06 03:00:55 +00:00
github-merge-queue[bot]
fc97091163 Publish onyx-0.4.17.tgz 2026-01-06 01:41:54 +00:00
github-merge-queue[bot]
01f1457ec9 Publish onyx-0.4.17.tgz 2026-01-06 01:38:52 +00:00
github-merge-queue[bot]
448a167648 Publish onyx-0.4.17.tgz 2026-01-06 00:43:45 +00:00
github-merge-queue[bot]
acb50f0aa5 Publish onyx-0.4.17.tgz 2026-01-05 23:37:12 +00:00
github-merge-queue[bot]
7b9e6d2cd6 Publish onyx-0.4.17.tgz 2026-01-05 22:16:55 +00:00
github-merge-queue[bot]
73a0a1a8e3 Publish onyx-0.4.17.tgz 2026-01-05 21:20:29 +00:00
github-merge-queue[bot]
ab65222841 Publish onyx-0.4.17.tgz 2026-01-05 20:49:39 +00:00
github-merge-queue[bot]
207c3a4540 Publish onyx-0.4.17.tgz 2026-01-05 20:36:05 +00:00
github-merge-queue[bot]
f5291ab0ba Publish onyx-0.4.17.tgz 2026-01-05 19:05:27 +00:00
jmelahman
df5ea64183 Publish onyx-0.4.17.tgz 2026-01-05 17:02:39 +00:00
github-merge-queue[bot]
a84556be4d Publish onyx-0.4.17.tgz 2026-01-05 01:28:24 +00:00
github-merge-queue[bot]
0e1fa32a00 Publish onyx-0.4.17.tgz 2026-01-04 21:42:24 +00:00
github-merge-queue[bot]
00fd3531c6 Publish onyx-0.4.17.tgz 2026-01-04 06:58:27 +00:00
yuhongsun96
9628c4e965 Publish onyx-0.4.17.tgz 2026-01-04 06:55:05 +00:00
jmelahman
4c2faf0cf2 Publish onyx-0.4.17.tgz 2026-01-03 07:53:36 +00:00
jmelahman
96f2e1eb2b Publish onyx-0.4.17.tgz 2026-01-03 07:50:23 +00:00
jmelahman
eb8e834a33 Publish onyx-0.4.17.tgz 2026-01-03 07:43:33 +00:00
jmelahman
aedca55735 Publish onyx-0.4.17.tgz 2026-01-03 07:27:30 +00:00
yuhongsun96
1aee5f5a75 Publish onyx-0.4.17.tgz 2026-01-03 03:47:42 +00:00
github-merge-queue[bot]
5b58657310 Publish onyx-0.4.17.tgz 2026-01-03 02:42:52 +00:00
github-merge-queue[bot]
64f2be22e6 Publish onyx-0.4.17.tgz 2026-01-03 02:36:59 +00:00
github-merge-queue[bot]
cd51f73360 Publish onyx-0.4.17.tgz 2026-01-03 02:22:46 +00:00
yuhongsun96
fea6572f3f Publish onyx-0.4.17.tgz 2026-01-03 01:58:33 +00:00
github-merge-queue[bot]
e5992d8af4 Publish onyx-0.4.17.tgz 2026-01-03 01:20:11 +00:00
yuhongsun96
7385df89e0 Publish onyx-0.4.17.tgz 2026-01-03 00:44:33 +00:00
github-merge-queue[bot]
edc9429357 Publish onyx-0.4.17.tgz 2026-01-03 00:01:59 +00:00
justin-tahara
acd75331da Publish onyx-0.4.17.tgz 2026-01-02 23:20:56 +00:00
jmelahman
ab9d49bb24 Publish onyx-0.4.17.tgz 2026-01-02 23:11:35 +00:00
github-merge-queue[bot]
470f4c672d Publish onyx-0.4.17.tgz 2026-01-02 22:33:03 +00:00
acaprau
5201d425aa Publish onyx-0.4.17.tgz 2026-01-02 22:11:53 +00:00
github-merge-queue[bot]
9adabe161e Publish onyx-0.4.17.tgz 2026-01-02 22:04:40 +00:00
jmelahman
604910e623 Publish onyx-0.4.17.tgz 2026-01-02 21:30:48 +00:00
justin-tahara
75f7964a48 Publish onyx-0.4.17.tgz 2026-01-02 21:11:12 +00:00
github-merge-queue[bot]
bd96e6f29b Publish onyx-0.4.17.tgz 2026-01-02 20:25:51 +00:00
github-merge-queue[bot]
eac06c089e Publish onyx-0.4.17.tgz 2026-01-02 20:19:06 +00:00
github-merge-queue[bot]
bf1a7efd76 Publish onyx-0.4.17.tgz 2026-01-02 20:11:15 +00:00
github-merge-queue[bot]
12fa091100 Publish onyx-0.4.17.tgz 2026-01-02 19:10:29 +00:00
github-merge-queue[bot]
195603b783 Publish onyx-0.4.17.tgz 2026-01-02 18:59:55 +00:00
github-merge-queue[bot]
888a5a28b3 Publish onyx-0.4.17.tgz 2026-01-02 18:23:20 +00:00
jmelahman
0cfdde5f54 Publish onyx-0.4.17.tgz 2026-01-02 18:05:24 +00:00
Subash-Mohan
52a45b3238 Publish onyx-0.4.17.tgz 2026-01-02 13:44:44 +00:00
github-merge-queue[bot]
079ce11a07 Publish onyx-0.4.17.tgz 2026-01-02 11:40:44 +00:00
Subash-Mohan
a6633f5867 Publish onyx-0.4.17.tgz 2026-01-02 10:44:51 +00:00
jmelahman
e460d1b4dc Publish onyx-0.4.17.tgz 2026-01-02 06:24:22 +00:00
jmelahman
e37936cdd4 Publish onyx-0.4.17.tgz 2026-01-02 06:11:14 +00:00
github-merge-queue[bot]
dafdff5fb1 Publish onyx-0.4.17.tgz 2026-01-02 05:09:02 +00:00
jmelahman
17bb5ce214 Publish onyx-0.4.17.tgz 2026-01-02 03:59:27 +00:00
jmelahman
b4ef75f26d Publish onyx-0.4.17.tgz 2026-01-02 03:11:51 +00:00
github-merge-queue[bot]
f68aff4c12 Publish onyx-0.4.17.tgz 2026-01-01 21:19:51 +00:00
jmelahman
c159ecbd82 Publish onyx-0.4.17.tgz 2026-01-01 21:11:31 +00:00
github-merge-queue[bot]
737dbe0d29 Publish onyx-0.4.17.tgz 2026-01-01 18:43:18 +00:00
github-merge-queue[bot]
0ac9591ef7 Publish onyx-0.4.17.tgz 2026-01-01 15:50:23 +00:00
github-merge-queue[bot]
72662d1507 Publish onyx-0.4.17.tgz 2026-01-01 15:37:12 +00:00
github-merge-queue[bot]
cf8dab90dd Publish onyx-0.4.17.tgz 2026-01-01 09:59:59 +00:00
github-merge-queue[bot]
ee76192f40 Publish onyx-0.4.17.tgz 2026-01-01 03:07:59 +00:00
Weves
58485f966a Publish onyx-0.4.17.tgz 2026-01-01 02:30:17 +00:00
github-merge-queue[bot]
87c837e102 Publish onyx-0.4.17.tgz 2026-01-01 01:54:20 +00:00
github-merge-queue[bot]
c02ca5acb6 Publish onyx-0.4.17.tgz 2026-01-01 01:36:01 +00:00
Weves
f23cd30b37 Publish onyx-0.4.17.tgz 2026-01-01 01:19:40 +00:00
yuhongsun96
34d8d831a3 Publish onyx-0.4.17.tgz 2026-01-01 00:49:13 +00:00
github-merge-queue[bot]
4120981723 Publish onyx-0.4.17.tgz 2026-01-01 00:12:37 +00:00
github-merge-queue[bot]
6f7ee9d1a4 Publish onyx-0.4.17.tgz 2025-12-31 22:16:38 +00:00
Weves
6052aa11e8 Publish onyx-0.4.17.tgz 2025-12-31 22:02:49 +00:00
github-merge-queue[bot]
b0028f13f4 Publish onyx-0.4.17.tgz 2025-12-31 21:09:49 +00:00
github-merge-queue[bot]
beb602414b Publish onyx-0.4.17.tgz 2025-12-31 20:45:48 +00:00
yuhongsun96
3831d674e8 Publish onyx-0.4.17.tgz 2025-12-31 19:16:26 +00:00
yuhongsun96
6f578624c4 Publish onyx-0.4.17.tgz 2025-12-31 18:12:19 +00:00
github-merge-queue[bot]
1cfd22f35f Publish onyx-0.4.17.tgz 2025-12-31 11:43:37 +00:00
github-merge-queue[bot]
1bc109b663 Publish onyx-0.4.17.tgz 2025-12-31 07:58:04 +00:00
Subash-Mohan
965aa86e39 Publish onyx-0.4.17.tgz 2025-12-31 07:31:40 +00:00
github-merge-queue[bot]
4e46b763ed Publish onyx-0.4.17.tgz 2025-12-31 05:28:37 +00:00
github-merge-queue[bot]
11e635cadd Publish onyx-0.4.17.tgz 2025-12-31 02:18:35 +00:00
wenxi-onyx
5c22067803 Publish onyx-0.4.17.tgz 2025-12-31 02:09:08 +00:00
github-merge-queue[bot]
c1891e5a17 Publish onyx-0.4.17.tgz 2025-12-31 02:08:30 +00:00
github-merge-queue[bot]
6a5faefb1c Publish onyx-0.4.17.tgz 2025-12-31 01:49:32 +00:00
github-merge-queue[bot]
efaa5b94fb Publish onyx-0.4.17.tgz 2025-12-31 01:00:22 +00:00
Weves
de3f7c1be9 Publish onyx-0.4.17.tgz 2025-12-31 00:56:56 +00:00
github-merge-queue[bot]
90af8f7755 Publish onyx-0.4.17.tgz 2025-12-31 00:31:39 +00:00
github-merge-queue[bot]
2a32015dd6 Publish onyx-0.4.17.tgz 2025-12-30 22:36:11 +00:00
github-merge-queue[bot]
33c7808086 Publish onyx-0.4.17.tgz 2025-12-30 22:26:06 +00:00
github-merge-queue[bot]
defb7e041d Publish onyx-0.4.17.tgz 2025-12-30 21:45:55 +00:00
github-merge-queue[bot]
7f489a8d10 Publish onyx-0.4.17.tgz 2025-12-30 21:20:03 +00:00
yuhongsun96
3314954883 Publish onyx-0.4.17.tgz 2025-12-30 20:23:03 +00:00
github-merge-queue[bot]
c9f0da16fb Publish onyx-0.4.17.tgz 2025-12-30 19:59:56 +00:00
github-merge-queue[bot]
fd06cd55b0 Publish onyx-0.4.17.tgz 2025-12-30 19:52:17 +00:00
github-merge-queue[bot]
cd7a635cbe Publish onyx-0.4.17.tgz 2025-12-30 19:22:39 +00:00
github-merge-queue[bot]
30426f5b38 Publish onyx-0.4.17.tgz 2025-12-30 18:59:56 +00:00
yuhongsun96
a773598440 Publish onyx-0.4.17.tgz 2025-12-30 18:52:20 +00:00
jmelahman
a864216a7c Publish onyx-0.4.17.tgz 2025-12-30 18:50:46 +00:00
github-merge-queue[bot]
9b02c2c392 Publish onyx-0.4.17.tgz 2025-12-30 18:45:50 +00:00
github-merge-queue[bot]
a5fcce39fc Publish onyx-0.4.17.tgz 2025-12-30 18:44:39 +00:00
Weves
917e503bb6 Publish onyx-0.4.17.tgz 2025-12-30 17:37:44 +00:00
jmelahman
31ef198e75 Publish onyx-0.4.17.tgz 2025-12-30 16:06:57 +00:00
jmelahman
aececde888 Publish onyx-0.4.17.tgz 2025-12-30 16:05:42 +00:00
raunakab
76cdf69916 Publish onyx-0.4.17.tgz 2025-12-30 07:27:44 +00:00
jmelahman
c4c03ebc89 Publish onyx-0.4.17.tgz 2025-12-30 06:43:23 +00:00
jmelahman
56f982b940 Publish onyx-0.4.17.tgz 2025-12-30 03:59:13 +00:00
github-merge-queue[bot]
0057a53af1 Publish onyx-0.4.17.tgz 2025-12-30 03:56:11 +00:00
jmelahman
5fc3cfa5b0 Publish onyx-0.4.17.tgz 2025-12-30 03:29:56 +00:00
jmelahman
7ccf646bec Publish onyx-0.4.17.tgz 2025-12-30 02:30:36 +00:00
yuhongsun96
45bf1c0394 Publish onyx-0.4.17.tgz 2025-12-30 01:25:21 +00:00
jmelahman
6d697b6151 Publish onyx-0.4.17.tgz 2025-12-30 01:22:55 +00:00
yuhongsun96
74ccd5c59c Publish onyx-0.4.17.tgz 2025-12-30 00:41:11 +00:00
jmelahman
2fab387242 Publish onyx-0.4.17.tgz 2025-12-30 00:30:54 +00:00
github-merge-queue[bot]
184b1a4269 Publish onyx-0.4.17.tgz 2025-12-30 00:28:12 +00:00
yuhongsun96
f8421830d0 Publish onyx-0.4.17.tgz 2025-12-30 00:19:20 +00:00
github-merge-queue[bot]
777a4824fc Publish onyx-0.4.17.tgz 2025-12-30 00:01:58 +00:00
Weves
e105cf76f9 Publish onyx-0.4.17.tgz 2025-12-29 22:10:31 +00:00
github-merge-queue[bot]
b246906c43 Publish onyx-0.4.17.tgz 2025-12-29 20:38:05 +00:00
github-merge-queue[bot]
1c05950f06 Publish onyx-0.4.17.tgz 2025-12-29 20:04:03 +00:00
github-merge-queue[bot]
95ee450002 Publish onyx-0.4.17.tgz 2025-12-29 19:59:36 +00:00
github-merge-queue[bot]
e522426c94 Publish onyx-0.4.17.tgz 2025-12-29 18:05:42 +00:00
github-merge-queue[bot]
25298e3953 Publish onyx-0.4.17.tgz 2025-12-29 17:47:49 +00:00
raunakab
4a674e015c Publish onyx-0.4.17.tgz 2025-12-29 17:31:12 +00:00
github-merge-queue[bot]
502098cef9 Publish onyx-0.4.17.tgz 2025-12-29 03:42:32 +00:00
wenxi-onyx
1dd8b9534e Publish onyx-0.4.17.tgz 2025-12-28 22:31:00 +00:00
github-merge-queue[bot]
2415c90ada Publish onyx-0.4.17.tgz 2025-12-28 21:03:56 +00:00
github-merge-queue[bot]
aeb7224681 Publish onyx-0.4.17.tgz 2025-12-28 20:10:40 +00:00
Weves
d7263771cf Publish onyx-0.4.17.tgz 2025-12-28 05:10:09 +00:00
jmelahman
c7d72f1724 Publish onyx-0.4.17.tgz 2025-12-27 20:17:06 +00:00
github-merge-queue[bot]
6ef3c5fd66 Publish onyx-0.4.17.tgz 2025-12-27 19:31:19 +00:00
github-merge-queue[bot]
aa1586f742 Publish onyx-0.4.17.tgz 2025-12-27 17:13:16 +00:00
raunakab
79c7bc7b23 Publish onyx-0.4.17.tgz 2025-12-27 06:38:26 +00:00
raunakab
b777784aff Publish onyx-0.4.17.tgz 2025-12-27 06:02:45 +00:00
raunakab
90f721f54e Publish onyx-0.4.17.tgz 2025-12-27 05:02:15 +00:00
raunakab
c809001cc4 Publish onyx-0.4.17.tgz 2025-12-27 05:01:57 +00:00
jmelahman
31aa2cc581 Publish onyx-0.4.17.tgz 2025-12-27 04:40:47 +00:00
github-merge-queue[bot]
066b6c22e5 Publish onyx-0.4.17.tgz 2025-12-27 04:35:21 +00:00
github-merge-queue[bot]
442efdbba5 Publish onyx-0.4.17.tgz 2025-12-27 02:29:04 +00:00
justin-tahara
a1c22a8fba Publish onyx-0.4.17.tgz 2025-12-27 01:58:14 +00:00
github-merge-queue[bot]
791abb6e17 Publish onyx-0.4.17.tgz 2025-12-27 01:49:52 +00:00
github-merge-queue[bot]
d8c8c9e14b Publish onyx-0.4.17.tgz 2025-12-27 01:23:58 +00:00
justin-tahara
2e0457e4d3 Publish onyx-0.4.17.tgz 2025-12-27 00:18:08 +00:00
justin-tahara
7c384ff874 Publish onyx-0.4.17.tgz 2025-12-27 00:06:13 +00:00
github-merge-queue[bot]
6b1a7f7e6c Publish onyx-0.4.17.tgz 2025-12-26 23:24:08 +00:00
github-merge-queue[bot]
fb44edba0d Publish onyx-0.4.17.tgz 2025-12-26 22:57:08 +00:00
github-merge-queue[bot]
8c8c5c892a Publish onyx-0.4.17.tgz 2025-12-26 21:15:42 +00:00
github-merge-queue[bot]
fdff75e9e5 Publish onyx-0.4.17.tgz 2025-12-26 21:13:24 +00:00
github-merge-queue[bot]
5b1895deaa Publish onyx-0.4.17.tgz 2025-12-26 21:01:46 +00:00
github-merge-queue[bot]
201fe1e79e Publish onyx-0.4.17.tgz 2025-12-26 19:42:23 +00:00
github-merge-queue[bot]
bfb45632fb Publish onyx-0.4.17.tgz 2025-12-26 17:46:52 +00:00
raunakab
73a49a7822 Publish onyx-0.4.17.tgz 2025-12-26 17:01:13 +00:00
raunakab
afb738a06c Publish onyx-0.4.17.tgz 2025-12-26 16:07:38 +00:00
rohoswagger
de14705ae9 Publish onyx-0.4.17.tgz 2025-12-26 03:04:51 +00:00
jmelahman
1399469568 Publish onyx-0.4.17.tgz 2025-12-25 21:41:48 +00:00
rohoswagger
246022bbfe Publish onyx-0.4.17.tgz 2025-12-25 21:36:36 +00:00
rohoswagger
48a7baced9 Publish onyx-0.4.17.tgz 2025-12-25 21:32:08 +00:00
jmelahman
473c07d54a Publish onyx-0.4.17.tgz 2025-12-25 20:01:34 +00:00
raunakab
42815afc8e Publish onyx-0.4.17.tgz 2025-12-25 19:41:21 +00:00
github-merge-queue[bot]
3daff89ec7 Publish onyx-0.4.17.tgz 2025-12-25 18:09:52 +00:00
raunakab
2962d47c24 Publish onyx-0.4.17.tgz 2025-12-25 10:17:24 +00:00
raunakab
d7ca795b00 Publish onyx-0.4.17.tgz 2025-12-25 09:54:47 +00:00
raunakab
a3c81da469 Publish onyx-0.4.17.tgz 2025-12-25 07:24:34 +00:00
github-merge-queue[bot]
0a112fe1b2 Publish onyx-0.4.17.tgz 2025-12-25 05:26:30 +00:00
jmelahman
12d49e3ef3 Publish onyx-0.4.17.tgz 2025-12-25 04:45:18 +00:00
rohoswagger
748bd87985 Publish onyx-0.4.17.tgz 2025-12-25 02:39:16 +00:00
github-merge-queue[bot]
c3b820855c Publish onyx-0.4.17.tgz 2025-12-25 00:38:49 +00:00
justin-tahara
3b0ca278de Publish onyx-0.4.17.tgz 2025-12-24 20:26:26 +00:00
justin-tahara
70f04e6c63 Publish onyx-0.4.17.tgz 2025-12-24 20:22:40 +00:00
jmelahman
72d166ef3d Publish onyx-0.4.17.tgz 2025-12-24 19:38:47 +00:00
jmelahman
aa7d487576 Publish onyx-0.4.17.tgz 2025-12-24 19:18:54 +00:00
github-merge-queue[bot]
4295080357 Publish onyx-0.4.17.tgz 2025-12-24 18:23:28 +00:00
wenxi-onyx
c97ffa0165 Publish onyx-0.4.17.tgz 2025-12-24 17:38:07 +00:00
raunakab
5b9923369c Publish onyx-0.4.17.tgz 2025-12-24 16:10:08 +00:00
raunakab
2230d0d7da Publish onyx-0.4.17.tgz 2025-12-24 06:56:49 +00:00
Subash-Mohan
f90a623839 Publish onyx-0.4.17.tgz 2025-12-24 06:48:10 +00:00
raunakab
2d45232402 Publish onyx-0.4.17.tgz 2025-12-24 06:36:18 +00:00
github-merge-queue[bot]
10c6adb185 Publish onyx-0.4.17.tgz 2025-12-24 06:21:43 +00:00
github-merge-queue[bot]
64f00ecc91 Publish onyx-0.4.17.tgz 2025-12-24 04:54:46 +00:00
github-merge-queue[bot]
8020bb5242 Publish onyx-0.4.17.tgz 2025-12-24 03:51:25 +00:00
yuhongsun96
016ce702d6 Publish onyx-0.4.17.tgz 2025-12-24 03:08:03 +00:00
raunakab
e8b59adec7 Publish onyx-0.4.17.tgz 2025-12-24 03:01:23 +00:00
yuhongsun96
f8e41b4e88 Publish onyx-0.4.17.tgz 2025-12-24 02:46:22 +00:00
yuhongsun96
f8b063700a Publish onyx-0.4.17.tgz 2025-12-24 02:09:59 +00:00
raunakab
7422151cf6 Publish onyx-0.4.17.tgz 2025-12-24 01:55:17 +00:00
raunakab
ffadcb2324 Publish onyx-0.4.17.tgz 2025-12-24 01:54:40 +00:00
github-merge-queue[bot]
b6ae3a1bfb Publish onyx-0.4.17.tgz 2025-12-23 23:46:11 +00:00
github-merge-queue[bot]
0c40dc17c2 Publish onyx-0.4.17.tgz 2025-12-23 23:38:26 +00:00
raunakab
c5d5f138cc Publish onyx-0.4.17.tgz 2025-12-23 23:12:18 +00:00
raunakab
03a8c570ba Publish onyx-0.4.17.tgz 2025-12-23 22:38:58 +00:00
github-merge-queue[bot]
23c7f75bf2 Publish onyx-0.4.17.tgz 2025-12-23 22:37:59 +00:00
yuhongsun96
d42362189b Publish onyx-0.4.17.tgz 2025-12-23 22:20:00 +00:00
github-merge-queue[bot]
37886b0b45 Publish onyx-0.4.17.tgz 2025-12-23 21:44:43 +00:00
justin-tahara
1450b3fa1a Publish onyx-0.4.17.tgz 2025-12-23 21:27:28 +00:00
github-merge-queue[bot]
c04ab841f4 Publish onyx-0.4.17.tgz 2025-12-23 19:44:27 +00:00
jmelahman
d98e7e48a3 Publish onyx-0.4.17.tgz 2025-12-23 17:21:40 +00:00
yuhongsun96
7af945da0f Publish onyx-0.4.17.tgz 2025-12-23 04:14:03 +00:00
github-merge-queue[bot]
7c407da697 Publish onyx-0.4.17.tgz 2025-12-23 03:26:41 +00:00
yuhongsun96
7dd2ccf39c Publish onyx-0.4.17.tgz 2025-12-23 03:09:56 +00:00
wenxi-onyx
33f967d9f7 Publish onyx-0.4.17.tgz 2025-12-23 03:01:07 +00:00
github-merge-queue[bot]
d9f5fa84c6 Publish onyx-0.4.17.tgz 2025-12-23 02:26:39 +00:00
yuhongsun96
418e8797f1 Publish onyx-0.4.17.tgz 2025-12-23 02:11:24 +00:00
wenxi-onyx
fd0d12cc24 Publish onyx-0.4.17.tgz 2025-12-23 01:46:24 +00:00
justin-tahara
458e8106e7 Publish onyx-0.4.17.tgz 2025-12-23 01:22:34 +00:00
github-merge-queue[bot]
bfd7498a3d Publish onyx-0.4.17.tgz 2025-12-23 01:22:22 +00:00
github-merge-queue[bot]
ca290e8061 Publish onyx-0.4.17.tgz 2025-12-23 01:09:51 +00:00
github-merge-queue[bot]
fb287bad7a Publish onyx-0.4.17.tgz 2025-12-23 00:39:12 +00:00
github-merge-queue[bot]
5f5049f779 Publish onyx-0.4.17.tgz 2025-12-23 00:26:22 +00:00
github-merge-queue[bot]
8b66df511c Publish onyx-0.4.17.tgz 2025-12-23 00:14:26 +00:00
wenxi-onyx
d6ff7bb2e5 Publish onyx-0.4.17.tgz 2025-12-22 22:55:08 +00:00
github-merge-queue[bot]
1551eca12c Publish onyx-0.4.17.tgz 2025-12-22 21:50:34 +00:00
jmelahman
4e4823a91e Publish onyx-0.4.17.tgz 2025-12-22 20:13:26 +00:00
github-merge-queue[bot]
14294cd513 Publish onyx-0.4.17.tgz 2025-12-22 19:19:02 +00:00
github-merge-queue[bot]
1bca23ffdc Publish onyx-0.4.17.tgz 2025-12-22 19:12:52 +00:00
github-merge-queue[bot]
7f410ad9d8 Publish onyx-0.4.17.tgz 2025-12-22 18:57:52 +00:00
justin-tahara
30c065748b Publish onyx-0.4.17.tgz 2025-12-22 18:45:08 +00:00
wenxi-onyx
3b342ac800 Publish onyx-0.4.17.tgz 2025-12-22 18:07:26 +00:00
github-merge-queue[bot]
10dbc0150f Publish onyx-0.4.17.tgz 2025-12-22 16:41:06 +00:00
acaprau
f26ef858af Publish onyx-0.4.17.tgz 2025-12-22 16:06:54 +00:00
raunakab
3a1ecd4470 Publish onyx-0.4.17.tgz 2025-12-22 16:01:17 +00:00
jmelahman
17c793556b Publish onyx-0.4.17.tgz 2025-12-22 10:37:41 +00:00
jmelahman
0b413b75f6 Publish onyx-0.4.17.tgz 2025-12-22 08:47:08 +00:00
jmelahman
b317bdddb7 Publish onyx-0.4.17.tgz 2025-12-22 08:31:02 +00:00
jmelahman
33baf24173 Publish onyx-0.4.17.tgz 2025-12-22 08:22:24 +00:00
jmelahman
09b2258269 Publish onyx-0.4.17.tgz 2025-12-22 08:21:31 +00:00
yuhongsun96
1817fd71bb Publish onyx-0.4.17.tgz 2025-12-22 02:26:05 +00:00
yuhongsun96
de930f6f9b Publish onyx-0.4.17.tgz 2025-12-22 01:24:38 +00:00
github-merge-queue[bot]
d887ff2a8e Publish onyx-0.4.17.tgz 2025-12-22 00:34:40 +00:00
jmelahman
63bdcff060 Publish onyx-0.4.17.tgz 2025-12-22 00:16:17 +00:00
yuhongsun96
382b11ae48 Publish onyx-0.4.17.tgz 2025-12-21 23:08:24 +00:00
yuhongsun96
3661670b42 Publish onyx-0.4.17.tgz 2025-12-21 22:57:39 +00:00
github-merge-queue[bot]
0fd15f2bb4 Publish onyx-0.4.17.tgz 2025-12-21 22:26:18 +00:00
yuhongsun96
c1cd609f15 Publish onyx-0.4.17.tgz 2025-12-21 21:49:07 +00:00
github-merge-queue[bot]
803e6cefd9 Publish onyx-0.4.17.tgz 2025-12-21 20:53:54 +00:00
jmelahman
246c47f6f8 Publish onyx-0.4.17.tgz 2025-12-21 20:10:07 +00:00
yuhongsun96
85a46e7a2d Publish onyx-0.4.17.tgz 2025-12-21 07:29:06 +00:00
yuhongsun96
3ddd497f80 Publish onyx-0.4.17.tgz 2025-12-21 06:46:57 +00:00
jmelahman
ef29c3663f Publish onyx-0.4.17.tgz 2025-12-21 04:21:49 +00:00
yuhongsun96
3822392875 Publish onyx-0.4.17.tgz 2025-12-21 04:09:05 +00:00
yuhongsun96
a5fdef5c1d Publish onyx-0.4.17.tgz 2025-12-21 02:28:47 +00:00
jmelahman
7a50d21ed5 Publish onyx-0.4.17.tgz 2025-12-20 15:20:57 +00:00
jmelahman
4c38f3d510 Publish onyx-0.4.17.tgz 2025-12-20 15:04:05 +00:00
jmelahman
3fc66af7c9 Publish onyx-0.4.17.tgz 2025-12-20 14:38:56 +00:00
jmelahman
6838b1dd20 Publish onyx-0.4.17.tgz 2025-12-20 14:05:36 +00:00
jmelahman
08459d643e Publish onyx-0.4.17.tgz 2025-12-20 13:02:41 +00:00
jmelahman
e85b0b1b30 Publish onyx-0.4.17.tgz 2025-12-20 12:30:01 +00:00
jmelahman
eb9e8362f1 Publish onyx-0.4.17.tgz 2025-12-20 12:13:26 +00:00
yuhongsun96
2a6baf8f4b Publish onyx-0.4.17.tgz 2025-12-20 04:32:42 +00:00
yuhongsun96
c0bfccb479 Publish onyx-0.4.17.tgz 2025-12-20 04:23:45 +00:00
yuhongsun96
be10b599ba Publish onyx-0.4.17.tgz 2025-12-20 03:15:02 +00:00
github-merge-queue[bot]
3a1d5e5bdc Publish onyx-0.4.17.tgz 2025-12-20 02:40:50 +00:00
github-merge-queue[bot]
d8e6fbea95 Publish onyx-0.4.17.tgz 2025-12-20 01:45:12 +00:00
yuhongsun96
1bb202ae7c Publish onyx-0.4.17.tgz 2025-12-20 01:19:44 +00:00
github-merge-queue[bot]
2d66631d9b Publish onyx-0.4.17.tgz 2025-12-20 01:12:49 +00:00
github-merge-queue[bot]
9596d0046f Publish onyx-0.4.17.tgz 2025-12-20 01:10:37 +00:00
github-merge-queue[bot]
4b723fb026 Publish onyx-0.4.17.tgz 2025-12-20 01:05:56 +00:00
yuhongsun96
7d19c451bb Publish onyx-0.4.17.tgz 2025-12-20 00:47:43 +00:00
jmelahman
5e811c69ed Publish onyx-0.4.17.tgz 2025-12-20 00:36:25 +00:00
yuhongsun96
acbdc34702 Publish onyx-0.4.17.tgz 2025-12-20 00:13:04 +00:00
yuhongsun96
62162485f9 Publish onyx-0.4.17.tgz 2025-12-19 23:51:05 +00:00
justin-tahara
c2ed8c98d1 Publish onyx-0.4.17.tgz 2025-12-19 23:50:01 +00:00
yuhongsun96
8760915ecd Publish onyx-0.4.17.tgz 2025-12-19 23:38:30 +00:00
yuhongsun96
1cb1e16d31 Publish onyx-0.4.17.tgz 2025-12-19 23:10:13 +00:00
yuhongsun96
cd5ff24bdf Publish onyx-0.4.17.tgz 2025-12-19 23:00:04 +00:00
yuhongsun96
0cda5ea120 Publish onyx-0.4.17.tgz 2025-12-19 22:13:14 +00:00
github-merge-queue[bot]
748a4f1859 Publish onyx-0.4.17.tgz 2025-12-19 22:03:10 +00:00
jmelahman
4b56d37c48 Publish onyx-0.4.17.tgz 2025-12-19 21:44:38 +00:00
yuhongsun96
1564526e2b Publish onyx-0.4.17.tgz 2025-12-19 21:31:02 +00:00
github-merge-queue[bot]
e4dd2dca34 Publish onyx-0.4.17.tgz 2025-12-19 21:19:05 +00:00
github-merge-queue[bot]
55f29eef37 Publish onyx-0.4.17.tgz 2025-12-19 20:42:41 +00:00
github-merge-queue[bot]
f52aef5697 Publish onyx-0.4.17.tgz 2025-12-19 20:32:34 +00:00
jmelahman
e73b08b1b5 Publish onyx-0.4.17.tgz 2025-12-19 20:01:07 +00:00
github-merge-queue[bot]
ea72f4281f Publish onyx-0.4.17.tgz 2025-12-19 19:49:32 +00:00
github-merge-queue[bot]
632f51f62e Publish onyx-0.4.17.tgz 2025-12-19 19:26:56 +00:00
raunakab
ae00cb671a Publish onyx-0.4.17.tgz 2025-12-19 19:12:17 +00:00
yuhongsun96
e0fbb64dde Publish onyx-0.4.17.tgz 2025-12-19 18:48:44 +00:00
jmelahman
b1db38765d Publish onyx-0.4.17.tgz 2025-12-19 18:04:51 +00:00
rohoswagger
f6d663b638 Publish onyx-0.4.17.tgz 2025-12-19 17:53:21 +00:00
github-merge-queue[bot]
0658019b9d Publish onyx-0.4.17.tgz 2025-12-19 17:42:53 +00:00
jmelahman
bf76262630 Publish onyx-0.4.17.tgz 2025-12-19 15:45:12 +00:00
jmelahman
6c90993695 Publish onyx-0.4.17.tgz 2025-12-19 14:51:21 +00:00
jmelahman
c113f49222 Publish onyx-0.4.17.tgz 2025-12-19 14:38:14 +00:00
jmelahman
32087cf85b Publish onyx-0.4.17.tgz 2025-12-19 12:08:35 +00:00
wenxi-onyx
46df314861 Publish onyx-0.4.17.tgz 2025-12-19 07:09:58 +00:00
wenxi-onyx
025921093f Publish onyx-0.4.17.tgz 2025-12-19 06:29:14 +00:00
yuhongsun96
47e11967a7 Publish onyx-0.4.17.tgz 2025-12-19 04:31:12 +00:00
yuhongsun96
60ff7459c5 Publish onyx-0.4.17.tgz 2025-12-19 03:00:52 +00:00
github-merge-queue[bot]
fa90278315 Publish onyx-0.4.17.tgz 2025-12-19 01:59:20 +00:00
github-merge-queue[bot]
330c1a0a8f Publish onyx-0.4.17.tgz 2025-12-19 01:45:34 +00:00
yuhongsun96
82e62e78ae Publish onyx-0.4.17.tgz 2025-12-19 01:18:48 +00:00
justin-tahara
7c6ac5f4e8 Publish onyx-0.4.17.tgz 2025-12-19 01:15:48 +00:00
github-merge-queue[bot]
ec49127cd5 Publish onyx-0.4.17.tgz 2025-12-19 01:03:57 +00:00
wenxi-onyx
a2c7ed8c9f Publish onyx-0.4.17.tgz 2025-12-19 00:50:16 +00:00
github-merge-queue[bot]
4a7a708e72 Publish onyx-0.4.17.tgz 2025-12-19 00:38:51 +00:00
yuhongsun96
f98258370e Publish onyx-0.4.17.tgz 2025-12-18 23:51:50 +00:00
github-merge-queue[bot]
7282bea848 Publish onyx-0.4.17.tgz 2025-12-18 23:28:10 +00:00
github-merge-queue[bot]
f5ae8b0280 Publish onyx-0.4.17.tgz 2025-12-18 23:07:59 +00:00
Weves
7b03bc9813 Publish onyx-0.4.17.tgz 2025-12-18 22:52:49 +00:00
yuhongsun96
e37ff4a899 Publish onyx-0.4.17.tgz 2025-12-18 22:10:22 +00:00
github-merge-queue[bot]
b6b204291d Publish onyx-0.4.17.tgz 2025-12-18 20:54:34 +00:00
yuhongsun96
23d827d939 Publish onyx-0.4.17.tgz 2025-12-18 19:47:11 +00:00
yuhongsun96
c387ef1dca Publish onyx-0.4.17.tgz 2025-12-18 19:37:17 +00:00
github-merge-queue[bot]
94c16fd705 Publish onyx-0.4.17.tgz 2025-12-18 18:56:58 +00:00
rohoswagger
90ccccc1e5 Publish onyx-0.4.17.tgz 2025-12-18 18:19:23 +00:00
rohoswagger
912240e139 Publish onyx-0.4.17.tgz 2025-12-18 18:12:24 +00:00
github-merge-queue[bot]
1a14a0c38d Publish onyx-0.4.17.tgz 2025-12-18 17:54:07 +00:00
github-merge-queue[bot]
69d3903808 Publish onyx-0.4.17.tgz 2025-12-18 11:16:09 +00:00
jmelahman
b5f6c17f42 Publish onyx-0.4.17.tgz 2025-12-18 10:44:07 +00:00
jmelahman
dd2bfe1252 Publish onyx-0.4.17.tgz 2025-12-18 07:44:44 +00:00
github-merge-queue[bot]
7d1a6a68e6 Publish onyx-0.4.17.tgz 2025-12-18 05:39:43 +00:00
jmelahman
8dc93216f4 Publish onyx-0.4.17.tgz 2025-12-18 05:05:18 +00:00
yuhongsun96
28bb4ea931 Publish onyx-0.4.17.tgz 2025-12-18 04:17:31 +00:00
yuhongsun96
b387d7eb94 Publish onyx-0.4.17.tgz 2025-12-18 03:46:08 +00:00
nmgarza5
4c9fe3c543 Publish onyx-0.4.17.tgz 2025-12-18 03:31:26 +00:00
wenxi-onyx
2e9fb7368e Publish onyx-0.4.17.tgz 2025-12-18 03:09:40 +00:00
yuhongsun96
4e15917e0b Publish onyx-0.4.17.tgz 2025-12-18 03:00:14 +00:00
github-merge-queue[bot]
d93eb4ba0e Publish onyx-0.4.17.tgz 2025-12-18 01:57:20 +00:00
yuhongsun96
344c673504 Publish onyx-0.4.17.tgz 2025-12-18 01:13:06 +00:00
github-merge-queue[bot]
a40842dd60 Publish onyx-0.4.17.tgz 2025-12-18 00:41:23 +00:00
github-merge-queue[bot]
8cd43ebc2c Publish onyx-0.4.17.tgz 2025-12-18 00:38:43 +00:00
github-merge-queue[bot]
e5832a0d60 Publish onyx-0.4.17.tgz 2025-12-18 00:08:21 +00:00
wenxi-onyx
acd25c914d Publish onyx-0.4.17.tgz 2025-12-17 23:25:24 +00:00
github-merge-queue[bot]
2a091a79b7 Publish onyx-0.4.17.tgz 2025-12-17 23:07:47 +00:00
yuhongsun96
9c99709322 Publish onyx-0.4.17.tgz 2025-12-17 22:54:07 +00:00
jmelahman
416e8fb580 Publish onyx-0.4.17.tgz 2025-12-17 22:52:53 +00:00
github-merge-queue[bot]
d87c479085 Publish onyx-0.4.17.tgz 2025-12-17 21:42:35 +00:00
jmelahman
192a0818b9 Publish onyx-0.4.17.tgz 2025-12-17 21:28:23 +00:00
github-merge-queue[bot]
999042f475 Publish onyx-0.4.17.tgz 2025-12-17 21:26:19 +00:00
github-merge-queue[bot]
1d4150e8eb Publish onyx-0.4.17.tgz 2025-12-17 21:00:36 +00:00
wenxi-onyx
2548d5bb67 Publish onyx-0.4.17.tgz 2025-12-17 20:38:55 +00:00
Weves
fdf955d6ca Publish onyx-0.4.17.tgz 2025-12-17 20:27:57 +00:00
Weves
4ad13fede3 Publish onyx-0.4.17.tgz 2025-12-17 20:09:00 +00:00
github-merge-queue[bot]
2fa85dcc6c Publish onyx-0.4.17.tgz 2025-12-17 19:28:44 +00:00
github-merge-queue[bot]
3d95859b66 Publish onyx-0.4.17.tgz 2025-12-17 18:51:44 +00:00
raunakab
b1ee288296 Publish onyx-0.4.17.tgz 2025-12-17 17:00:58 +00:00
jmelahman
8c09b03a97 Publish onyx-0.4.17.tgz 2025-12-17 09:11:52 +00:00
jmelahman
3c2e5400d5 Publish onyx-0.4.17.tgz 2025-12-17 09:01:56 +00:00
github-merge-queue[bot]
0c592d4b29 Publish onyx-0.4.17.tgz 2025-12-17 07:21:46 +00:00
jmelahman
8d9389a0aa Publish onyx-0.4.17.tgz 2025-12-17 07:08:16 +00:00
jmelahman
fa345f616b Publish onyx-0.4.17.tgz 2025-12-17 06:17:03 +00:00
github-merge-queue[bot]
b44465d88b Publish onyx-0.4.17.tgz 2025-12-17 05:53:17 +00:00
github-merge-queue[bot]
63393e9dd0 Publish onyx-0.4.17.tgz 2025-12-17 04:08:08 +00:00
yuhongsun96
3eb2c3816a Publish onyx-0.4.17.tgz 2025-12-17 03:54:06 +00:00
yuhongsun96
951e0d8dc7 Publish onyx-0.4.17.tgz 2025-12-17 03:41:30 +00:00
github-merge-queue[bot]
98b2aef3e4 Publish onyx-0.4.17.tgz 2025-12-17 03:00:36 +00:00
github-merge-queue[bot]
cce9ea783e Publish onyx-0.4.17.tgz 2025-12-17 02:53:36 +00:00
github-merge-queue[bot]
6f4d8e612a Publish onyx-0.4.17.tgz 2025-12-17 02:53:05 +00:00
yuhongsun96
4daa7ac0ea Publish onyx-0.4.17.tgz 2025-12-17 02:26:02 +00:00
justin-tahara
9b1a09e152 Publish onyx-0.4.17.tgz 2025-12-17 01:01:05 +00:00
github-merge-queue[bot]
2ef9f72cda Publish onyx-0.4.17.tgz 2025-12-17 00:40:58 +00:00
github-merge-queue[bot]
c5bfd21752 Publish onyx-0.4.17.tgz 2025-12-17 00:27:58 +00:00
github-merge-queue[bot]
38e61ae794 Publish onyx-0.4.17.tgz 2025-12-17 00:19:42 +00:00
github-merge-queue[bot]
ec7a4217b0 Publish onyx-0.4.17.tgz 2025-12-16 23:37:50 +00:00
github-merge-queue[bot]
727e0b8d89 Publish onyx-0.4.17.tgz 2025-12-16 23:32:11 +00:00
github-merge-queue[bot]
e5dfdc5bc3 Publish onyx-0.4.17.tgz 2025-12-16 23:14:55 +00:00
github-merge-queue[bot]
ed552377dc Publish onyx-0.4.17.tgz 2025-12-16 23:06:51 +00:00
justin-tahara
7cc484e8bc Publish onyx-0.4.17.tgz 2025-12-16 22:51:50 +00:00
github-merge-queue[bot]
958c219cef Publish onyx-0.4.17.tgz 2025-12-16 22:34:00 +00:00
justin-tahara
d94ea1049f Publish onyx-0.4.17.tgz 2025-12-16 22:20:01 +00:00
github-merge-queue[bot]
994e1f8afa Publish onyx-0.4.16.tgz 2025-12-16 21:45:40 +00:00
github-merge-queue[bot]
ddecbf6c47 Publish onyx-0.4.16.tgz 2025-12-16 21:38:20 +00:00
github-merge-queue[bot]
c5d0172351 Publish onyx-0.4.16.tgz 2025-12-16 21:16:35 +00:00
jmelahman
6d29345fb7 Publish onyx-0.4.16.tgz 2025-12-16 21:03:49 +00:00
Weves
71dd57b92c Publish onyx-0.4.16.tgz 2025-12-16 20:57:01 +00:00
github-merge-queue[bot]
88e1d984b3 Publish onyx-0.4.16.tgz 2025-12-16 20:32:45 +00:00
github-merge-queue[bot]
e64150be85 Publish onyx-0.4.15.tgz 2025-12-16 19:37:31 +00:00
github-merge-queue[bot]
9b3e6d5fb1 Publish onyx-0.4.15.tgz 2025-12-16 19:06:23 +00:00
github-merge-queue[bot]
c85706b40c Publish onyx-0.4.15.tgz 2025-12-16 19:01:38 +00:00
wenxi-onyx
b4ef57663c Publish onyx-0.4.15.tgz 2025-12-16 18:39:07 +00:00
wenxi-onyx
c0983c0278 Publish onyx-0.4.15.tgz 2025-12-16 18:21:40 +00:00
github-merge-queue[bot]
0e66cd9fe5 Publish onyx-0.4.15.tgz 2025-12-16 18:09:25 +00:00
wenxi-onyx
c2a3d1f817 Publish onyx-0.4.15.tgz 2025-12-16 17:48:34 +00:00
jmelahman
7fa94f772f Publish onyx-0.4.15.tgz 2025-12-16 10:54:21 +00:00
jmelahman
3bf0715dca Publish onyx-0.4.15.tgz 2025-12-16 10:30:35 +00:00
jmelahman
747b18431b Publish onyx-0.4.15.tgz 2025-12-16 10:05:23 +00:00
jmelahman
02d7fb2a83 Publish onyx-0.4.15.tgz 2025-12-16 09:05:46 +00:00
jmelahman
282167c0ec Publish onyx-0.4.15.tgz 2025-12-16 07:52:19 +00:00
github-merge-queue[bot]
ab4d7d22b6 Publish onyx-0.4.15.tgz 2025-12-16 05:36:19 +00:00
github-merge-queue[bot]
8395dbbb6f Publish onyx-0.4.15.tgz 2025-12-16 03:50:31 +00:00
nmgarza5
9f14b965e4 Publish onyx-0.4.15.tgz 2025-12-16 03:36:42 +00:00
jmelahman
edb3905a22 Publish onyx-0.4.15.tgz 2025-12-16 03:34:48 +00:00
jmelahman
1521445c04 Publish onyx-0.4.15.tgz 2025-12-16 02:55:35 +00:00
raunakab
66009f6739 Publish onyx-0.4.15.tgz 2025-12-16 02:49:10 +00:00
github-merge-queue[bot]
c2bc449b35 Publish onyx-0.4.15.tgz 2025-12-16 02:42:46 +00:00
github-merge-queue[bot]
17476fdcf0 Publish onyx-0.4.15.tgz 2025-12-16 02:36:44 +00:00
github-merge-queue[bot]
00e92cdfc1 Publish onyx-0.4.15.tgz 2025-12-16 01:48:34 +00:00
jmelahman
dcfb327981 Publish onyx-0.4.15.tgz 2025-12-16 01:16:30 +00:00
github-merge-queue[bot]
93ef56dca9 Publish onyx-0.4.15.tgz 2025-12-16 00:08:06 +00:00
jmelahman
42851099b4 Publish onyx-0.4.15.tgz 2025-12-15 23:38:53 +00:00
github-merge-queue[bot]
f8afba56f5 Publish onyx-0.4.15.tgz 2025-12-15 22:17:07 +00:00
github-merge-queue[bot]
f058af3c2a Publish onyx-0.4.15.tgz 2025-12-15 19:36:08 +00:00
wenxi-onyx
e9b4fe3e39 Publish onyx-0.4.15.tgz 2025-12-15 18:54:05 +00:00
github-merge-queue[bot]
c3a767030f Publish onyx-0.4.15.tgz 2025-12-15 18:52:19 +00:00
github-merge-queue[bot]
37409c6dcd Publish onyx-0.4.15.tgz 2025-12-15 18:48:39 +00:00
wenxi-onyx
2d3f8e4eb0 Publish onyx-0.4.15.tgz 2025-12-15 18:20:03 +00:00
Weves
c12616e83c Publish onyx-0.4.15.tgz 2025-12-15 17:46:40 +00:00
yuhongsun96
3833e1ebf8 Publish onyx-0.4.15.tgz 2025-12-15 08:00:10 +00:00
yuhongsun96
8cb3e5fc65 Publish onyx-0.4.15.tgz 2025-12-15 07:01:06 +00:00
yuhongsun96
e2d6750c2f Publish onyx-0.4.15.tgz 2025-12-15 06:56:23 +00:00
Weves
2da27140da Publish onyx-0.4.15.tgz 2025-12-15 03:50:39 +00:00
github-merge-queue[bot]
a41747006d Publish onyx-0.4.15.tgz 2025-12-15 02:22:19 +00:00
Weves
7345eb8472 Publish onyx-0.4.15.tgz 2025-12-15 01:37:32 +00:00
Weves
17a7fbbd50 Publish onyx-0.4.15.tgz 2025-12-15 01:14:57 +00:00
Weves
553f7b6105 Publish onyx-0.4.15.tgz 2025-12-15 00:37:46 +00:00
github-merge-queue[bot]
e778af7676 Publish onyx-0.4.15.tgz 2025-12-14 23:15:00 +00:00
Weves
6f1080bff8 Publish onyx-0.4.15.tgz 2025-12-14 22:51:01 +00:00
github-merge-queue[bot]
344148d751 Publish onyx-0.4.15.tgz 2025-12-14 22:22:06 +00:00
github-merge-queue[bot]
c437ce2f8d Publish onyx-0.4.15.tgz 2025-12-13 02:29:45 +00:00
github-merge-queue[bot]
87919aea44 Publish onyx-0.4.15.tgz 2025-12-13 02:26:55 +00:00
github-merge-queue[bot]
6ee3fc7d40 Publish onyx-0.4.14.tgz 2025-12-13 00:21:23 +00:00
github-merge-queue[bot]
dc3b11a2fc Publish onyx-0.4.14.tgz 2025-12-12 07:39:22 +00:00
yuhongsun96
debb922649 Publish onyx-0.4.14.tgz 2025-12-12 03:48:30 +00:00
jmelahman
14ea3b466b Publish onyx-0.4.14.tgz 2025-12-12 03:19:18 +00:00
yuhongsun96
ebf2c8d2f1 Publish onyx-0.4.14.tgz 2025-12-12 03:17:43 +00:00
yuhongsun96
42a8b66c74 Publish onyx-0.4.14.tgz 2025-12-12 02:28:36 +00:00
raunakab
d6191c30ad Publish onyx-0.4.14.tgz 2025-12-12 00:22:39 +00:00
yuhongsun96
2a4461f913 Publish onyx-0.4.14.tgz 2025-12-11 23:45:26 +00:00
jmelahman
3682358fc0 Publish onyx-0.4.14.tgz 2025-12-11 01:23:47 +00:00
justin-tahara
c1d3c439f1 Publish onyx-0.4.14.tgz 2025-12-09 17:44:23 +00:00
github-merge-queue[bot]
b2ee3119a5 Publish onyx-0.4.14.tgz 2025-12-09 04:26:11 +00:00
Weves
520237e881 Publish onyx-0.4.14.tgz 2025-12-09 03:01:43 +00:00
Weves
019e148db3 Publish onyx-0.4.14.tgz 2025-12-09 02:44:51 +00:00
github-merge-queue[bot]
e498ba629c Publish onyx-0.4.14.tgz 2025-12-07 01:02:05 +00:00
jmelahman
b548fff581 Publish onyx-0.4.14.tgz 2025-12-06 18:49:27 +00:00
jmelahman
bf660c5f16 Publish onyx-0.4.14.tgz 2025-12-06 18:10:41 +00:00
jmelahman
e5624ab298 Publish onyx-0.4.14.tgz 2025-12-06 17:53:58 +00:00
raunakab
837a57950a Publish onyx-0.4.14.tgz 2025-12-06 03:41:07 +00:00
yuhongsun96
2890d38439 Publish onyx-0.4.14.tgz 2025-12-06 01:13:35 +00:00
github-merge-queue[bot]
1bbfa63966 Publish onyx-0.4.14.tgz 2025-12-06 00:30:03 +00:00
jmelahman
5878abfe17 Publish onyx-0.4.14.tgz 2025-12-06 00:17:33 +00:00
github-merge-queue[bot]
cea5c23d8b Publish onyx-0.4.14.tgz 2025-12-05 23:49:04 +00:00
github-merge-queue[bot]
e8cbcbb5d0 Publish onyx-0.4.14.tgz 2025-12-05 23:15:05 +00:00
github-merge-queue[bot]
f1c7aae545 Publish onyx-0.4.14.tgz 2025-12-05 22:36:47 +00:00
github-merge-queue[bot]
99e4ec6353 Publish onyx-0.4.14.tgz 2025-12-05 21:51:44 +00:00
github-merge-queue[bot]
0209cbb1f6 Publish onyx-0.4.14.tgz 2025-12-05 20:52:25 +00:00
jmelahman
243589a3cd Publish onyx-0.4.14.tgz 2025-12-05 18:52:05 +00:00
github-merge-queue[bot]
4c4c29fbcd Publish onyx-0.4.14.tgz 2025-12-05 18:45:29 +00:00
jmelahman
0badf1c599 Publish onyx-0.4.14.tgz 2025-12-05 18:32:02 +00:00
jmelahman
846571208f Publish onyx-0.4.14.tgz 2025-12-05 18:28:48 +00:00
yuhongsun96
69b9fa834e Publish onyx-0.4.14.tgz 2025-12-05 18:16:22 +00:00
github-merge-queue[bot]
7b09025e5b Publish onyx-0.4.14.tgz 2025-12-05 18:07:29 +00:00
github-merge-queue[bot]
5e516f2cd4 Publish onyx-0.4.14.tgz 2025-12-05 17:54:15 +00:00
github-merge-queue[bot]
d17fb03813 Publish onyx-0.4.14.tgz 2025-12-05 17:45:43 +00:00
github-merge-queue[bot]
da1114bc05 Publish onyx-0.4.14.tgz 2025-12-05 07:19:22 +00:00
github-merge-queue[bot]
56ffc55f25 Publish onyx-0.4.14.tgz 2025-12-05 03:21:15 +00:00
github-merge-queue[bot]
528b894e29 Publish onyx-0.4.14.tgz 2025-12-05 03:18:35 +00:00
jmelahman
d9338763c8 Publish onyx-0.4.14.tgz 2025-12-05 02:36:59 +00:00
jmelahman
09dc8bfc99 Publish onyx-0.4.14.tgz 2025-12-05 02:30:44 +00:00
jmelahman
fd2de6e373 Publish onyx-0.4.14.tgz 2025-12-05 02:28:41 +00:00
github-merge-queue[bot]
b6f3ff8379 Publish onyx-0.4.14.tgz 2025-12-05 02:21:00 +00:00
yuhongsun96
e1a632cebe Publish onyx-0.4.14.tgz 2025-12-05 01:51:03 +00:00
jmelahman
918bf1e4f3 Publish onyx-0.4.14.tgz 2025-12-05 01:28:06 +00:00
github-merge-queue[bot]
79064f602d Publish onyx-0.4.14.tgz 2025-12-05 01:12:59 +00:00
github-merge-queue[bot]
9b656b76f9 Publish onyx-0.4.13.tgz 2025-12-05 00:24:23 +00:00
github-merge-queue[bot]
c637235b1e Publish onyx-0.4.13.tgz 2025-12-05 00:04:35 +00:00
github-merge-queue[bot]
19c098a8c1 Publish onyx-0.4.13.tgz 2025-12-04 23:59:43 +00:00
github-merge-queue[bot]
7d98599805 Publish onyx-0.4.13.tgz 2025-12-04 23:21:03 +00:00
github-merge-queue[bot]
aa33016bd0 Publish onyx-0.4.13.tgz 2025-12-04 22:40:03 +00:00
github-merge-queue[bot]
6d04b1718b Publish onyx-0.4.13.tgz 2025-12-04 21:50:55 +00:00
github-merge-queue[bot]
57bebf9582 Publish onyx-0.4.13.tgz 2025-12-04 21:01:06 +00:00
github-merge-queue[bot]
5a1b2c6de2 Publish onyx-0.4.13.tgz 2025-12-04 20:58:53 +00:00
justin-tahara
44b7eb4189 Publish onyx-0.4.13.tgz 2025-12-04 19:31:23 +00:00
jmelahman
9903c0e852 Publish onyx-0.4.13.tgz 2025-12-04 19:30:52 +00:00
github-merge-queue[bot]
1c5c234c81 Publish onyx-0.4.13.tgz 2025-12-04 17:17:42 +00:00
github-merge-queue[bot]
aef3ae1059 Publish onyx-0.4.13.tgz 2025-12-04 08:39:32 +00:00
yuhongsun96
837cabd1f0 Publish onyx-0.4.13.tgz 2025-12-04 07:46:43 +00:00
raunakab
ce8ce39d79 Publish onyx-0.4.13.tgz 2025-12-04 05:19:31 +00:00
github-merge-queue[bot]
fcb3987e1c Publish onyx-0.4.13.tgz 2025-12-04 05:08:24 +00:00
github-merge-queue[bot]
0ad7aae02f Publish onyx-0.4.13.tgz 2025-12-04 04:34:19 +00:00
wenxi-onyx
c415832662 Publish onyx-0.4.13.tgz 2025-12-04 03:52:43 +00:00
github-merge-queue[bot]
6408760fbf Publish onyx-0.4.13.tgz 2025-12-04 02:41:52 +00:00
jmelahman
15ec8d38a4 Publish onyx-0.4.13.tgz 2025-12-04 02:09:01 +00:00
jmelahman
d7e3fbdd51 Publish onyx-0.4.13.tgz 2025-12-04 02:07:33 +00:00
yuhongsun96
71a3434d89 Publish onyx-0.4.13.tgz 2025-12-04 01:30:57 +00:00
Weves
5b1202e08c Publish onyx-0.4.13.tgz 2025-12-04 01:27:01 +00:00
github-merge-queue[bot]
552cb9bd7e Publish onyx-0.4.13.tgz 2025-12-04 01:20:09 +00:00
github-merge-queue[bot]
e4df251ebb Publish onyx-0.4.13.tgz 2025-12-04 00:54:06 +00:00
github-merge-queue[bot]
c5a99ef84a Publish onyx-0.4.13.tgz 2025-12-04 00:07:20 +00:00
github-merge-queue[bot]
475f17ba88 Publish onyx-0.4.13.tgz 2025-12-04 00:05:10 +00:00
yuhongsun96
da3e6a7589 Publish onyx-0.4.13.tgz 2025-12-03 23:47:25 +00:00
github-merge-queue[bot]
065cb844c5 Publish onyx-0.4.13.tgz 2025-12-03 22:47:10 +00:00
github-merge-queue[bot]
3ade4b6e1d Publish onyx-0.4.13.tgz 2025-12-03 22:23:50 +00:00
yuhongsun96
550aa35735 Publish onyx-0.4.13.tgz 2025-12-03 22:08:03 +00:00
jmelahman
52bb13b7a0 Publish onyx-0.4.13.tgz 2025-12-03 21:57:35 +00:00
yuhongsun96
6894ebf1e6 Publish onyx-0.4.13.tgz 2025-12-03 21:50:00 +00:00
github-merge-queue[bot]
ef0cda4ada Publish onyx-0.4.13.tgz 2025-12-03 21:43:44 +00:00
github-merge-queue[bot]
0993f7a6c4 Publish onyx-0.4.13.tgz 2025-12-03 21:01:33 +00:00
raunakab
5a4dca0a68 Publish onyx-0.4.13.tgz 2025-12-03 20:48:28 +00:00
yuhongsun96
46d924877e Publish onyx-0.4.13.tgz 2025-12-03 20:38:11 +00:00
yuhongsun96
02b6b5d0f9 Publish onyx-0.4.13.tgz 2025-12-03 19:50:56 +00:00
github-merge-queue[bot]
280eafe630 Publish onyx-0.4.13.tgz 2025-12-03 18:43:38 +00:00
github-merge-queue[bot]
f9ded6b05a Publish onyx-0.4.13.tgz 2025-12-03 18:28:41 +00:00
github-merge-queue[bot]
44aaa808e0 Publish onyx-0.4.13.tgz 2025-12-03 18:24:38 +00:00
wenxi-onyx
f08dbc3dfd Publish onyx-0.4.13.tgz 2025-12-03 18:09:28 +00:00
wenxi-onyx
1952d80fdb Publish onyx-0.4.13.tgz 2025-12-03 18:03:36 +00:00
github-merge-queue[bot]
bf2e9f4e35 Publish onyx-0.4.13.tgz 2025-12-03 16:57:30 +00:00
github-merge-queue[bot]
ff2dddd0bf Publish onyx-0.4.13.tgz 2025-12-03 06:32:34 +00:00
github-merge-queue[bot]
d58b157007 Publish onyx-0.4.13.tgz 2025-12-03 04:10:08 +00:00
github-merge-queue[bot]
4a71fcf6a0 Publish onyx-0.4.13.tgz 2025-12-03 03:10:15 +00:00
github-merge-queue[bot]
b301a2f7f9 Publish onyx-0.4.13.tgz 2025-12-03 02:54:16 +00:00
github-merge-queue[bot]
601f1c3697 Publish onyx-0.4.13.tgz 2025-12-03 02:02:35 +00:00
jmelahman
4b7bbbb6f1 Publish onyx-0.4.13.tgz 2025-12-03 01:48:56 +00:00
github-merge-queue[bot]
b458030be8 Publish onyx-0.4.13.tgz 2025-12-03 01:28:53 +00:00
jmelahman
dc10feee5f Publish onyx-0.4.13.tgz 2025-12-03 01:12:48 +00:00
github-merge-queue[bot]
2aa5dbb5eb Publish onyx-0.4.13.tgz 2025-12-03 00:53:27 +00:00
github-merge-queue[bot]
b232017687 Publish onyx-0.4.13.tgz 2025-12-02 22:54:03 +00:00
github-merge-queue[bot]
cc4015c031 Publish onyx-0.4.13.tgz 2025-12-02 22:28:43 +00:00
github-merge-queue[bot]
c9bc1333d8 Publish onyx-0.4.13.tgz 2025-12-02 21:29:32 +00:00
github-merge-queue[bot]
f97a0c2d16 Publish onyx-0.4.13.tgz 2025-12-02 21:26:43 +00:00
Weves
7299145723 Publish onyx-0.4.13.tgz 2025-12-02 20:31:15 +00:00
yuhongsun96
008bb1fd77 Publish onyx-0.4.13.tgz 2025-12-02 19:09:10 +00:00
yuhongsun96
6538cc0775 Publish onyx-0.4.13.tgz 2025-12-02 19:07:55 +00:00
yuhongsun96
8d9ff6ed31 Publish onyx-0.4.13.tgz 2025-12-02 19:01:23 +00:00
yuhongsun96
10d2fffb10 Publish onyx-0.4.13.tgz 2025-12-02 18:50:58 +00:00
github-merge-queue[bot]
9d2e309ed4 Publish onyx-0.4.13.tgz 2025-12-02 18:05:04 +00:00
github-merge-queue[bot]
33fb005cf7 Publish onyx-0.4.13.tgz 2025-12-02 17:59:49 +00:00
justin-tahara
6a9d235e09 Publish onyx-0.4.13.tgz 2025-12-02 04:40:43 +00:00
justin-tahara
52780326c3 Publish onyx-0.4.13.tgz 2025-12-02 03:54:46 +00:00
yuhongsun96
87ca46f128 Publish onyx-0.4.12.tgz 2025-12-02 02:02:17 +00:00
github-merge-queue[bot]
6960594905 Publish onyx-0.4.12.tgz 2025-12-02 01:42:02 +00:00
raunakab
ee43b826e2 Publish onyx-0.4.12.tgz 2025-12-02 01:15:57 +00:00
github-merge-queue[bot]
864dce89e4 Publish onyx-0.4.12.tgz 2025-12-02 00:51:05 +00:00
github-merge-queue[bot]
3f9113c892 Publish onyx-0.4.12.tgz 2025-12-02 00:35:10 +00:00
jmelahman
a78b8f0bc3 Publish onyx-0.4.12.tgz 2025-12-02 00:19:58 +00:00
github-merge-queue[bot]
62e2bfa1e8 Publish onyx-0.4.12.tgz 2025-12-01 23:52:07 +00:00
github-merge-queue[bot]
12ba157fb8 Publish onyx-0.4.12.tgz 2025-12-01 23:44:49 +00:00
justin-tahara
36cafb38ab Publish onyx-0.4.12.tgz 2025-12-01 23:29:10 +00:00
yuhongsun96
ea9df74ca6 Publish onyx-0.4.12.tgz 2025-12-01 22:41:51 +00:00
github-merge-queue[bot]
fac9865674 Publish onyx-0.4.12.tgz 2025-12-01 22:11:21 +00:00
justin-tahara
5d134b848b Publish onyx-0.4.12.tgz 2025-12-01 21:42:09 +00:00
wenxi-onyx
b1a5c4131e Publish onyx-0.4.11.tgz 2025-12-01 17:38:28 +00:00
Weves
2d9f11e84e Publish onyx-0.4.11.tgz 2025-12-01 17:37:15 +00:00
Weves
09072038d4 Publish onyx-0.4.11.tgz 2025-12-01 02:53:59 +00:00
Subash-Mohan
01a5985c70 Publish onyx-0.4.11.tgz 2025-11-30 06:16:13 +00:00
github-merge-queue[bot]
cc08f460ee Publish onyx-0.4.11.tgz 2025-11-29 19:56:15 +00:00
jmelahman
8b7f180223 Publish onyx-0.4.11.tgz 2025-11-26 23:38:54 +00:00
jmelahman
fb4c84e09c Publish onyx-0.4.11.tgz 2025-11-26 23:10:52 +00:00
Weves
711587aeb2 Publish onyx-0.4.11.tgz 2025-11-26 22:55:42 +00:00
jmelahman
914601c437 Publish onyx-0.4.11.tgz 2025-11-26 22:28:07 +00:00
jmelahman
610c8e34fd Publish onyx-0.4.11.tgz 2025-11-26 21:40:42 +00:00
raunakab
e0a0ad2fdb Publish onyx-0.4.11.tgz 2025-11-26 21:18:33 +00:00
jmelahman
0681f03cdc Publish onyx-0.4.11.tgz 2025-11-26 21:17:40 +00:00
github-merge-queue[bot]
96b452c316 Publish onyx-0.4.11.tgz 2025-11-26 18:30:06 +00:00
github-merge-queue[bot]
b0fdcc1d4c Publish onyx-0.4.11.tgz 2025-11-26 17:47:49 +00:00
Weves
932be0135e Publish onyx-0.4.11.tgz 2025-11-26 06:42:25 +00:00
justin-tahara
3e567aecf2 Publish onyx-0.4.11.tgz 2025-11-26 04:11:22 +00:00
github-merge-queue[bot]
3cd087f859 Publish onyx-0.4.11.tgz 2025-11-26 03:24:18 +00:00
github-merge-queue[bot]
94305fad8f Publish onyx-0.4.11.tgz 2025-11-26 00:34:35 +00:00
raunakab
a2270e6787 Publish onyx-0.4.11.tgz 2025-11-26 00:11:52 +00:00
github-merge-queue[bot]
e6bbb71bd7 Publish onyx-0.4.11.tgz 2025-11-25 22:16:47 +00:00
raunakab
ffefb4cdaf Publish onyx-0.4.11.tgz 2025-11-25 21:51:54 +00:00
justin-tahara
f405aa45aa Publish onyx-0.4.11.tgz 2025-11-25 21:32:53 +00:00
github-merge-queue[bot]
0980c00bb9 Publish onyx-0.4.11.tgz 2025-11-25 21:30:48 +00:00
wenxi-onyx
2a49cd18e6 Publish onyx-0.4.11.tgz 2025-11-25 20:40:24 +00:00
github-merge-queue[bot]
3575238fac Publish onyx-0.4.11.tgz 2025-11-25 20:33:33 +00:00
wenxi-onyx
98a89e9855 Publish onyx-0.4.11.tgz 2025-11-25 19:25:21 +00:00
raunakab
eff360d5c1 Publish onyx-0.4.11.tgz 2025-11-25 18:28:16 +00:00
github-merge-queue[bot]
06fb8911ff Publish onyx-0.4.11.tgz 2025-11-25 18:03:13 +00:00
github-merge-queue[bot]
0e881d024d Publish onyx-0.4.11.tgz 2025-11-25 17:36:48 +00:00
github-merge-queue[bot]
b8c67d0453 Publish onyx-0.4.11.tgz 2025-11-25 17:16:34 +00:00
github-merge-queue[bot]
11be109ac8 Publish onyx-0.4.11.tgz 2025-11-25 02:44:53 +00:00
github-merge-queue[bot]
889ab179f9 Publish onyx-0.4.11.tgz 2025-11-25 01:35:55 +00:00
rguan72
9cd9da2ec1 Publish onyx-0.4.11.tgz 2025-11-24 22:42:31 +00:00
justin-tahara
49536bec45 Publish onyx-0.4.11.tgz 2025-11-24 22:25:56 +00:00
github-merge-queue[bot]
c366aad426 Publish onyx-0.4.10.tgz 2025-11-24 21:44:14 +00:00
justin-tahara
7870ead6c5 Publish onyx-0.4.10.tgz 2025-11-24 21:30:02 +00:00
github-merge-queue[bot]
500477484a Publish onyx-0.4.10.tgz 2025-11-24 21:17:55 +00:00
github-merge-queue[bot]
0b3acefdec Publish onyx-0.4.10.tgz 2025-11-24 19:15:32 +00:00
github-merge-queue[bot]
54bdc8f84b Publish onyx-0.4.10.tgz 2025-11-24 18:41:04 +00:00
github-merge-queue[bot]
363929b19a Publish onyx-0.4.10.tgz 2025-11-24 17:28:28 +00:00
github-merge-queue[bot]
2b4230e484 Publish onyx-0.4.10.tgz 2025-11-24 02:52:05 +00:00
github-merge-queue[bot]
a8b704a74c Publish onyx-0.4.10.tgz 2025-11-23 21:33:03 +00:00
raunakab
476e199c4d Publish onyx-0.4.10.tgz 2025-11-23 20:33:07 +00:00
github-merge-queue[bot]
ac8c82d953 Publish onyx-0.4.10.tgz 2025-11-23 19:25:00 +00:00
raunakab
a2a3b7d23f Publish onyx-0.4.10.tgz 2025-11-23 18:24:50 +00:00
github-merge-queue[bot]
fdf99a5d8a Publish onyx-0.4.10.tgz 2025-11-23 10:32:29 +00:00
Subash-Mohan
7e19c6e8fa Publish onyx-0.4.10.tgz 2025-11-23 10:18:41 +00:00
github-merge-queue[bot]
6fb86e5ca7 Publish onyx-0.4.10.tgz 2025-11-23 10:03:44 +00:00
raunakab
b983c80a45 Publish onyx-0.4.10.tgz 2025-11-23 04:40:16 +00:00
github-merge-queue[bot]
f80dfa5597 Publish onyx-0.4.10.tgz 2025-11-23 02:13:05 +00:00
raunakab
b0e1fc8473 Publish onyx-0.4.10.tgz 2025-11-23 01:38:32 +00:00
github-merge-queue[bot]
8d94382f29 Publish onyx-0.4.10.tgz 2025-11-22 07:45:21 +00:00
github-merge-queue[bot]
80cd4d1a0d Publish onyx-0.4.10.tgz 2025-11-22 07:34:59 +00:00
github-merge-queue[bot]
fd8b1eafb5 Publish onyx-0.4.10.tgz 2025-11-22 07:32:42 +00:00
nmgarza5
901d00ccbe Publish onyx-0.4.10.tgz 2025-11-22 05:49:10 +00:00
raunakab
f193689472 Publish onyx-0.4.10.tgz 2025-11-22 04:59:21 +00:00
evan-onyx
bb27c29a3b Publish onyx-0.4.10.tgz 2025-11-22 01:30:06 +00:00
github-merge-queue[bot]
0b1d64389f Publish onyx-0.4.10.tgz 2025-11-21 21:42:01 +00:00
github-merge-queue[bot]
6a767ad668 Publish onyx-0.4.10.tgz 2025-11-21 21:14:51 +00:00
justin-tahara
179a15e3ae Publish onyx-0.4.10.tgz 2025-11-21 18:50:39 +00:00
justin-tahara
f397d67c69 Publish onyx-0.4.10.tgz 2025-11-21 18:17:12 +00:00
wenxi-onyx
a6fd686142 Publish onyx-0.4.10.tgz 2025-11-21 17:24:24 +00:00
github-merge-queue[bot]
1f73ece782 Publish onyx-0.4.10.tgz 2025-11-21 04:47:57 +00:00
github-merge-queue[bot]
e25b49b0c2 Publish onyx-0.4.10.tgz 2025-11-21 04:25:18 +00:00
Weves
73b82dc63e Publish onyx-0.4.10.tgz 2025-11-21 02:33:34 +00:00
github-merge-queue[bot]
0d8c15cd2e Publish onyx-0.4.10.tgz 2025-11-21 02:18:55 +00:00
wenxi-onyx
9f9b1a91b0 Publish onyx-0.4.10.tgz 2025-11-21 01:23:43 +00:00
justin-tahara
968aef17e5 Publish onyx-0.4.10.tgz 2025-11-21 01:16:54 +00:00
github-merge-queue[bot]
7bc98a1403 Publish onyx-0.4.10.tgz 2025-11-21 01:01:16 +00:00
github-merge-queue[bot]
70cc37e967 Publish onyx-0.4.10.tgz 2025-11-21 00:50:15 +00:00
github-merge-queue[bot]
b860e6855b Publish onyx-0.4.10.tgz 2025-11-21 00:27:25 +00:00
github-merge-queue[bot]
c3d48d76a8 Publish onyx-0.4.10.tgz 2025-11-20 23:52:18 +00:00
github-merge-queue[bot]
0ce4d2d4f8 Publish onyx-0.4.10.tgz 2025-11-20 23:00:53 +00:00
github-merge-queue[bot]
7aa4514976 Publish onyx-0.4.10.tgz 2025-11-20 22:06:47 +00:00
github-merge-queue[bot]
c5f264cae4 Publish onyx-0.4.10.tgz 2025-11-20 21:22:47 +00:00
github-merge-queue[bot]
3b609149ea Publish onyx-0.4.9.tgz 2025-11-20 20:39:55 +00:00
github-merge-queue[bot]
6512411546 Publish onyx-0.4.8.tgz 2025-11-20 20:25:38 +00:00
wenxi-onyx
617ec34ac3 Publish onyx-0.4.8.tgz 2025-11-20 18:36:25 +00:00
github-merge-queue[bot]
1c8751483e Publish onyx-0.4.8.tgz 2025-11-20 18:05:16 +00:00
github-merge-queue[bot]
dec8e1657c Publish onyx-0.4.8.tgz 2025-11-20 18:01:23 +00:00
github-merge-queue[bot]
e3f8310d1b Publish onyx-0.4.8.tgz 2025-11-20 16:59:27 +00:00
github-merge-queue[bot]
77d06b04b1 Publish onyx-0.4.8.tgz 2025-11-20 07:26:10 +00:00
github-merge-queue[bot]
209b518a49 Publish onyx-0.4.8.tgz 2025-11-20 03:39:24 +00:00
github-merge-queue[bot]
c202b42ad2 Publish onyx-0.4.8.tgz 2025-11-20 01:12:52 +00:00
github-merge-queue[bot]
d167b4fa3e Publish onyx-0.4.8.tgz 2025-11-20 01:08:39 +00:00
github-merge-queue[bot]
337c30868b Publish onyx-0.4.8.tgz 2025-11-20 00:09:10 +00:00
nmgarza5
012d61be85 Publish onyx-0.4.8.tgz 2025-11-19 22:45:27 +00:00
jmelahman
790a7a68aa Publish onyx-0.4.8.tgz 2025-11-19 22:27:24 +00:00
jmelahman
fe636dd4c6 Publish onyx-0.4.8.tgz 2025-11-19 22:20:28 +00:00
github-merge-queue[bot]
13c876dd33 Publish onyx-0.4.8.tgz 2025-11-19 22:01:34 +00:00
jmelahman
de4fbb7392 Publish onyx-0.4.8.tgz 2025-11-19 19:04:54 +00:00
justin-tahara
6ed12c6957 Publish onyx-0.4.8.tgz 2025-11-19 18:06:53 +00:00
raunakab
5579e277dd Publish onyx-0.4.8.tgz 2025-11-19 17:28:26 +00:00
raunakab
593226404e Publish onyx-0.4.8.tgz 2025-11-19 16:32:14 +00:00
github-merge-queue[bot]
087ae426f1 Publish onyx-0.4.8.tgz 2025-11-19 14:30:33 +00:00
raunakab
eb794b53f3 Publish onyx-0.4.8.tgz 2025-11-19 09:41:18 +00:00
jmelahman
daf2981bd1 Publish onyx-0.4.8.tgz 2025-11-19 06:27:36 +00:00
github-merge-queue[bot]
969fee9345 Publish onyx-0.4.8.tgz 2025-11-19 04:20:39 +00:00
github-merge-queue[bot]
f3f65d5e22 Publish onyx-0.4.8.tgz 2025-11-19 03:02:46 +00:00
github-merge-queue[bot]
e058d52751 Publish onyx-0.4.8.tgz 2025-11-19 01:14:55 +00:00
nmgarza5
274b454fa7 Publish onyx-0.4.8.tgz 2025-11-19 00:49:52 +00:00
jmelahman
53d784cfd4 Publish onyx-0.4.8.tgz 2025-11-19 00:10:46 +00:00
jmelahman
e4f5c3cb30 Publish onyx-0.4.8.tgz 2025-11-19 00:06:37 +00:00
jmelahman
aa1ef9e6bd Publish onyx-0.4.8.tgz 2025-11-18 22:50:08 +00:00
jmelahman
91b4997924 Publish onyx-0.4.8.tgz 2025-11-18 22:16:44 +00:00
jmelahman
62d9bbcf34 Publish onyx-0.4.8.tgz 2025-11-18 18:46:30 +00:00
justin-tahara
4307991cb9 Publish onyx-0.4.8.tgz 2025-11-18 17:51:07 +00:00
Subash-Mohan
411f715e6f Publish onyx-0.4.7.tgz 2025-11-18 12:11:36 +00:00
Subash-Mohan
8dab6c049f Publish onyx-0.4.7.tgz 2025-11-18 06:55:17 +00:00
github-merge-queue[bot]
41aef33360 Publish onyx-0.4.7.tgz 2025-11-17 23:51:01 +00:00
github-merge-queue[bot]
940f471df7 Publish onyx-0.4.7.tgz 2025-11-17 23:38:50 +00:00
github-merge-queue[bot]
ab432eca02 Publish onyx-0.4.7.tgz 2025-11-17 23:29:14 +00:00
github-merge-queue[bot]
f5f1f48ecf Publish onyx-0.4.7.tgz 2025-11-17 20:48:49 +00:00
github-merge-queue[bot]
f4824d9979 Publish onyx-0.4.7.tgz 2025-11-17 20:33:31 +00:00
github-merge-queue[bot]
001e5c3362 Publish onyx-0.4.7.tgz 2025-11-17 20:30:23 +00:00
github-merge-queue[bot]
23676c21a4 Publish onyx-0.4.7.tgz 2025-11-17 20:02:59 +00:00
github-merge-queue[bot]
c8b5befe29 Publish onyx-0.4.7.tgz 2025-11-17 18:53:56 +00:00
github-merge-queue[bot]
d8b9bc18c8 Publish onyx-0.4.7.tgz 2025-11-17 18:19:44 +00:00
github-merge-queue[bot]
cbbd60c4cb Publish onyx-0.4.7.tgz 2025-11-17 17:36:44 +00:00
github-merge-queue[bot]
08a63d01bd Publish onyx-0.4.7.tgz 2025-11-17 17:35:02 +00:00
github-merge-queue[bot]
9587cc8591 Publish onyx-0.4.7.tgz 2025-11-17 17:34:26 +00:00
nmgarza5
a0a51c889c Publish onyx-0.4.7.tgz 2025-11-17 17:17:24 +00:00
evan-onyx
af81c1c8b4 Publish onyx-0.4.7.tgz 2025-11-17 16:59:25 +00:00
github-merge-queue[bot]
1727ed5951 Publish onyx-0.4.7.tgz 2025-11-17 05:31:29 +00:00
github-merge-queue[bot]
1b5d49c068 Publish onyx-0.4.7.tgz 2025-11-17 03:50:04 +00:00
github-merge-queue[bot]
218b20a399 Publish onyx-0.4.7.tgz 2025-11-16 23:06:48 +00:00
github-merge-queue[bot]
9cdaa10293 Publish onyx-0.4.7.tgz 2025-11-16 22:18:03 +00:00
wenxi-onyx
3655cc88dc Publish onyx-0.4.7.tgz 2025-11-16 21:18:53 +00:00
github-merge-queue[bot]
183428c3bd Publish onyx-0.4.7.tgz 2025-11-16 18:47:29 +00:00
nmgarza5
c471d03b1b Publish onyx-0.4.7.tgz 2025-11-16 18:30:13 +00:00
raunakab
147b71516a Publish onyx-0.4.7.tgz 2025-11-16 17:08:34 +00:00
github-merge-queue[bot]
1365d02223 Publish onyx-0.4.7.tgz 2025-11-16 05:35:51 +00:00
github-merge-queue[bot]
4c4957b8ab Publish onyx-0.4.7.tgz 2025-11-16 05:26:43 +00:00
github-merge-queue[bot]
6acf92476e Publish onyx-0.4.7.tgz 2025-11-16 05:20:43 +00:00
github-merge-queue[bot]
bb7457992f Publish onyx-0.4.7.tgz 2025-11-15 12:05:11 +00:00
github-merge-queue[bot]
3a95f0dd72 Publish onyx-0.4.7.tgz 2025-11-15 07:22:29 +00:00
github-merge-queue[bot]
dfa0bfaada Publish onyx-0.4.7.tgz 2025-11-15 04:57:36 +00:00
github-merge-queue[bot]
57c550ae95 Publish onyx-0.4.7.tgz 2025-11-15 04:26:59 +00:00
github-merge-queue[bot]
a7bc72e129 Publish onyx-0.4.7.tgz 2025-11-15 04:10:13 +00:00
github-merge-queue[bot]
a0cbc786c6 Publish onyx-0.4.7.tgz 2025-11-15 03:38:43 +00:00
github-merge-queue[bot]
3ceeeff964 Publish onyx-0.4.7.tgz 2025-11-15 03:03:38 +00:00
github-merge-queue[bot]
15313de8f7 Publish onyx-0.4.7.tgz 2025-11-15 02:43:27 +00:00
raunakab
18117e6674 Publish onyx-0.4.7.tgz 2025-11-15 02:28:09 +00:00
justin-tahara
9b3b3c8431 Publish onyx-0.4.7.tgz 2025-11-15 02:00:04 +00:00
justin-tahara
2b1ed6116a Publish onyx-0.4.7.tgz 2025-11-15 00:55:08 +00:00
justin-tahara
4cd5f7f924 Publish onyx-0.4.7.tgz 2025-11-15 00:53:51 +00:00
rguan72
ce5621787c Publish onyx-0.4.7.tgz 2025-11-14 22:52:12 +00:00
wenxi-onyx
2d4afd952f Publish onyx-0.4.7.tgz 2025-11-14 22:43:08 +00:00
wenxi-onyx
bba807c085 Publish onyx-0.4.7.tgz 2025-11-14 22:39:34 +00:00
wenxi-onyx
a7e6034baf Publish onyx-0.4.7.tgz 2025-11-14 22:30:46 +00:00
github-merge-queue[bot]
9fdf20548e Publish onyx-0.4.7.tgz 2025-11-14 22:10:23 +00:00
github-merge-queue[bot]
e83eb56495 Publish onyx-0.4.7.tgz 2025-11-14 21:46:34 +00:00
wenxi-onyx
8103e01148 Publish onyx-0.4.7.tgz 2025-11-14 21:32:21 +00:00
wenxi-onyx
e47d2a95f2 Publish onyx-0.4.7.tgz 2025-11-14 21:27:27 +00:00
jmelahman
c582e67db2 Publish onyx-0.4.7.tgz 2025-11-14 21:17:03 +00:00
Weves
4833251e92 Publish onyx-0.4.7.tgz 2025-11-14 20:27:25 +00:00
jmelahman
3baa1296e1 Publish onyx-0.4.7.tgz 2025-11-14 19:23:03 +00:00
Weves
f2c420d88b Publish onyx-0.4.7.tgz 2025-11-14 18:56:40 +00:00
github-merge-queue[bot]
503b58313b Publish onyx-0.4.7.tgz 2025-11-14 17:07:07 +00:00
github-merge-queue[bot]
0a82657da2 Publish onyx-0.4.7.tgz 2025-11-14 16:35:42 +00:00
github-merge-queue[bot]
90d95a7fde Publish onyx-0.4.7.tgz 2025-11-14 09:01:04 +00:00
github-merge-queue[bot]
e23c72b492 Publish onyx-0.4.7.tgz 2025-11-14 06:38:30 +00:00
raunakab
38a5d7c4be Publish onyx-0.4.7.tgz 2025-11-14 05:49:05 +00:00
github-merge-queue[bot]
cdfd85af95 Publish onyx-0.4.7.tgz 2025-11-14 04:47:47 +00:00
jmelahman
2ccc6a39a8 Publish onyx-0.4.7.tgz 2025-11-14 03:40:34 +00:00
Weves
a0a9337467 Publish onyx-0.4.7.tgz 2025-11-14 03:02:35 +00:00
justin-tahara
908ba42a10 Publish onyx-0.4.7.tgz 2025-11-14 02:25:41 +00:00
Weves
9f6163b9e9 Publish onyx-0.4.7.tgz 2025-11-14 01:43:24 +00:00
wenxi-onyx
ffdb30965d Publish onyx-0.4.7.tgz 2025-11-13 22:19:25 +00:00
github-merge-queue[bot]
1b507e3a14 Publish onyx-0.4.7.tgz 2025-11-13 22:16:21 +00:00
github-merge-queue[bot]
2dda377c1c Publish onyx-0.4.7.tgz 2025-11-13 17:54:18 +00:00
github-merge-queue[bot]
1a5cb435af Publish onyx-0.4.7.tgz 2025-11-13 02:53:13 +00:00
github-merge-queue[bot]
998db46bef Publish onyx-0.4.7.tgz 2025-11-13 02:49:04 +00:00
github-merge-queue[bot]
cf8ccdbf55 Publish onyx-0.4.7.tgz 2025-11-13 00:28:38 +00:00
github-merge-queue[bot]
e8a2292028 Publish onyx-0.4.7.tgz 2025-11-12 23:16:47 +00:00
github-merge-queue[bot]
80b864f163 Publish onyx-0.4.7.tgz 2025-11-12 22:52:31 +00:00
nmgarza5
15242f41d4 Publish onyx-0.4.7.tgz 2025-11-12 22:36:44 +00:00
github-merge-queue[bot]
816c87ee48 Publish onyx-0.4.7.tgz 2025-11-12 22:36:22 +00:00
github-merge-queue[bot]
6cf2c5248a Publish onyx-0.4.7.tgz 2025-11-12 19:58:44 +00:00
github-merge-queue[bot]
5e5d392b74 Publish onyx-0.4.7.tgz 2025-11-12 19:39:37 +00:00
github-merge-queue[bot]
1cc5e75b2d Publish onyx-0.4.7.tgz 2025-11-12 19:36:07 +00:00
github-merge-queue[bot]
a6ffdc5142 Publish onyx-0.4.7.tgz 2025-11-12 19:20:58 +00:00
raunakab
02ceb75a4e Publish onyx-0.4.7.tgz 2025-11-12 19:09:05 +00:00
nmgarza5
e29b0e7a10 Publish onyx-0.4.7.tgz 2025-11-12 18:49:28 +00:00
github-merge-queue[bot]
589d9019d3 Publish onyx-0.4.7.tgz 2025-11-12 18:44:56 +00:00
github-merge-queue[bot]
4f8a91ca6e Publish onyx-0.4.7.tgz 2025-11-12 18:32:10 +00:00
github-merge-queue[bot]
1e706fdccb Publish onyx-0.4.7.tgz 2025-11-12 18:31:58 +00:00
github-merge-queue[bot]
33c4dfd498 Publish onyx-0.4.7.tgz 2025-11-12 18:24:27 +00:00
Weves
67e1b2d6ee Publish onyx-0.4.7.tgz 2025-11-12 17:54:08 +00:00
github-merge-queue[bot]
f78b583bbd Publish onyx-0.4.7.tgz 2025-11-12 03:53:32 +00:00
github-merge-queue[bot]
0316ee7f17 Publish onyx-0.4.7.tgz 2025-11-12 01:40:40 +00:00
github-merge-queue[bot]
20f1e90e54 Publish onyx-0.4.7.tgz 2025-11-12 01:14:39 +00:00
rguan72
22508aac61 Publish onyx-0.4.7.tgz 2025-11-12 00:25:53 +00:00
github-merge-queue[bot]
fb8acda7b8 Publish onyx-0.4.7.tgz 2025-11-12 00:06:53 +00:00
github-merge-queue[bot]
6983c419d8 Publish onyx-0.4.7.tgz 2025-11-11 23:27:48 +00:00
wenxi-onyx
573235b404 Publish onyx-0.4.7.tgz 2025-11-11 21:31:58 +00:00
jmelahman
15a9761d6f Publish onyx-0.4.7.tgz 2025-11-11 21:07:36 +00:00
github-merge-queue[bot]
fce72063fe Publish onyx-0.4.7.tgz 2025-11-11 20:03:10 +00:00
wenxi-onyx
aeabc3d1f7 Publish onyx-0.4.7.tgz 2025-11-11 19:22:36 +00:00
github-merge-queue[bot]
fca1f4111b Publish onyx-0.4.7.tgz 2025-11-11 19:19:58 +00:00
jmelahman
232322374c Publish onyx-0.4.7.tgz 2025-11-11 17:38:37 +00:00
jmelahman
2fcf495734 Publish onyx-0.4.7.tgz 2025-11-11 17:38:26 +00:00
justin-tahara
e6ca0f0a90 Publish onyx-0.4.7.tgz 2025-11-11 17:27:31 +00:00
justin-tahara
7675aa7521 Publish onyx-0.4.7.tgz 2025-11-11 03:38:06 +00:00
github-merge-queue[bot]
828c652e19 Publish onyx-0.4.7.tgz 2025-11-11 02:53:30 +00:00
justin-tahara
85dc63ba4a Publish onyx-0.4.7.tgz 2025-11-11 02:35:38 +00:00
Weves
0d7d80f76a Publish onyx-0.4.7.tgz 2025-11-11 01:02:27 +00:00
jmelahman
4da6351546 Publish onyx-0.4.7.tgz 2025-11-10 23:51:46 +00:00
justin-tahara
07973e2528 Publish onyx-0.4.7.tgz 2025-11-10 22:40:11 +00:00
justin-tahara
d24d3d1a2a Publish onyx-0.4.7.tgz 2025-11-10 22:32:32 +00:00
justin-tahara
2f19680898 Publish onyx-0.4.7.tgz 2025-11-10 22:11:11 +00:00
jmelahman
a57abfe2ea Publish onyx-0.4.7.tgz 2025-11-10 20:10:53 +00:00
jmelahman
508fbbf107 Publish onyx-0.4.7.tgz 2025-11-10 19:34:42 +00:00
jmelahman
e276a0f5f3 Publish onyx-0.4.7.tgz 2025-11-10 19:28:23 +00:00
jmelahman
5a898bbec7 Publish onyx-0.4.7.tgz 2025-11-10 19:28:09 +00:00
jmelahman
c73a5fd2c0 Publish onyx-0.4.7.tgz 2025-11-10 19:14:34 +00:00
jmelahman
c51c3d79fb Publish onyx-0.4.7.tgz 2025-11-10 18:58:10 +00:00
jmelahman
505376e8c7 Publish onyx-0.4.7.tgz 2025-11-10 18:34:35 +00:00
Weves
cf654fe55f Publish onyx-0.4.7.tgz 2025-11-10 17:40:10 +00:00
Weves
fa7d5f81d6 Publish onyx-0.4.7.tgz 2025-11-08 22:53:12 +00:00
nmgarza5
1e0083964c Publish onyx-0.4.7.tgz 2025-11-08 18:36:46 +00:00
raunakab
1f5f1d2351 Publish onyx-0.4.7.tgz 2025-11-08 02:39:39 +00:00
Weves
819d10e629 Publish onyx-0.4.7.tgz 2025-11-08 02:10:40 +00:00
jmelahman
4591eb6017 Publish onyx-0.4.7.tgz 2025-11-08 01:29:57 +00:00
justin-tahara
56f477fe1c Publish onyx-0.4.7.tgz 2025-11-08 01:11:11 +00:00
justin-tahara
4ace01ff0f Publish onyx-0.4.7.tgz 2025-11-08 01:10:52 +00:00
justin-tahara
1f0ce10e34 Publish onyx-0.4.7.tgz 2025-11-08 01:10:12 +00:00
justin-tahara
fe8d09b47d Publish onyx-0.4.7.tgz 2025-11-08 00:34:24 +00:00
justin-tahara
1405fd6d82 Publish onyx-0.4.7.tgz 2025-11-08 00:25:43 +00:00
jmelahman
d4a4a3f3d0 Publish onyx-0.4.7.tgz 2025-11-08 00:21:54 +00:00
jmelahman
609661edae Publish onyx-0.4.7.tgz 2025-11-07 23:27:01 +00:00
justin-tahara
5f964108ce Publish onyx-0.4.7.tgz 2025-11-07 21:37:00 +00:00
github-merge-queue[bot]
6274cac375 Publish onyx-0.4.7.tgz 2025-11-07 19:03:23 +00:00
raunakab
acc9d986f9 Publish onyx-0.4.7.tgz 2025-11-07 03:44:03 +00:00
raunakab
c184c98ab7 Publish onyx-0.4.7.tgz 2025-11-07 03:32:35 +00:00
justin-tahara
e4116338ef Publish onyx-0.4.7.tgz 2025-11-07 01:36:28 +00:00
wenxi-onyx
9cf744cca2 Publish onyx-0.4.7.tgz 2025-11-07 01:15:03 +00:00
github-merge-queue[bot]
b64e5902b9 Publish onyx-0.4.7.tgz 2025-11-06 23:40:18 +00:00
raunakab
1871860d5a Publish onyx-0.4.7.tgz 2025-11-06 22:49:53 +00:00
github-merge-queue[bot]
960792e48f Publish onyx-0.4.7.tgz 2025-11-06 21:43:55 +00:00
justin-tahara
8c16183a0c Publish onyx-0.4.7.tgz 2025-11-06 21:19:31 +00:00
github-merge-queue[bot]
e6a5301db9 Publish onyx-0.4.7.tgz 2025-11-06 20:13:15 +00:00
github-merge-queue[bot]
a4a0a191e0 Publish onyx-0.4.7.tgz 2025-11-06 20:11:45 +00:00
github-merge-queue[bot]
a9317b5fe7 Publish onyx-0.4.7.tgz 2025-11-06 19:06:42 +00:00
raunakab
6ac641df8d Publish onyx-0.4.7.tgz 2025-11-06 18:09:36 +00:00
raunakab
6d039ffda8 Publish onyx-0.4.7.tgz 2025-11-06 18:07:26 +00:00
github-merge-queue[bot]
eda4a10d41 Publish onyx-0.4.7.tgz 2025-11-06 07:34:26 +00:00
Weves
b613210d2b Publish onyx-0.4.7.tgz 2025-11-06 06:04:35 +00:00
github-merge-queue[bot]
85326d1dda Publish onyx-0.4.7.tgz 2025-11-06 05:45:11 +00:00
github-merge-queue[bot]
362f6d57cf Publish onyx-0.4.7.tgz 2025-11-06 05:42:24 +00:00
jmelahman
a547b3e2d4 Publish onyx-0.4.7.tgz 2025-11-06 05:05:05 +00:00
wenxi-onyx
7c4a882de4 Publish onyx-0.4.7.tgz 2025-11-06 04:00:48 +00:00
github-merge-queue[bot]
b23b362233 Publish onyx-0.4.7.tgz 2025-11-06 02:45:40 +00:00
justin-tahara
66f8213ce2 Publish onyx-0.4.7.tgz 2025-11-06 02:04:01 +00:00
Weves
1e41a0169d Publish onyx-0.4.7.tgz 2025-11-06 01:54:54 +00:00
github-merge-queue[bot]
2a64a99d4d Publish onyx-0.4.7.tgz 2025-11-06 01:30:45 +00:00
github-merge-queue[bot]
57d25c6444 Publish onyx-0.4.7.tgz 2025-11-06 01:07:24 +00:00
github-merge-queue[bot]
8ee0e5e7e1 Publish onyx-0.4.7.tgz 2025-11-06 00:39:19 +00:00
rguan72
edd17a0e32 Publish onyx-0.4.7.tgz 2025-11-06 00:14:41 +00:00
github-merge-queue[bot]
661504000f Publish onyx-0.4.7.tgz 2025-11-05 22:24:51 +00:00
jmelahman
85a00d9d47 Publish onyx-0.4.7.tgz 2025-11-05 22:04:36 +00:00
jmelahman
cd7e60333c Publish onyx-0.4.7.tgz 2025-11-05 21:32:19 +00:00
wenxi-onyx
64d47e5ccf Publish onyx-0.4.7.tgz 2025-11-05 19:44:16 +00:00
Weves
657e955512 Publish onyx-0.4.7.tgz 2025-11-05 07:35:06 +00:00
Weves
b5bc32dca8 Publish onyx-0.4.7.tgz 2025-11-05 03:53:21 +00:00
wenxi-onyx
03f5e2c1eb Publish onyx-0.4.7.tgz 2025-11-04 23:23:44 +00:00
wenxi-onyx
224b30ffe7 Publish onyx-0.4.7.tgz 2025-11-04 22:51:26 +00:00
wenxi-onyx
8227acc59e Publish onyx-0.4.7.tgz 2025-11-04 22:50:54 +00:00
wenxi-onyx
2162f24bd0 Publish onyx-0.4.7.tgz 2025-11-04 22:50:40 +00:00
wenxi-onyx
cf2b31cdd9 Publish onyx-0.4.7.tgz 2025-11-04 20:16:01 +00:00
yuhongsun96
498446fb1b Publish onyx-0.4.7.tgz 2025-11-04 19:57:30 +00:00
justin-tahara
ba502a7a53 Publish onyx-0.4.7.tgz 2025-11-04 18:30:32 +00:00
github-merge-queue[bot]
0a2cc9168a Publish onyx-0.4.6.tgz 2025-11-04 01:01:01 +00:00
Weves
bf6c3f1d11 Publish onyx-0.4.6.tgz 2025-11-03 23:14:44 +00:00
raunakab
e2bb2c0e68 Publish onyx-0.4.6.tgz 2025-11-03 21:50:41 +00:00
github-merge-queue[bot]
a3e40509ba Publish onyx-0.4.6.tgz 2025-11-03 21:26:04 +00:00
rguan72
db78cdc071 Publish onyx-0.4.6.tgz 2025-11-03 20:59:20 +00:00
wenxi-onyx
1fe5bcb360 Publish onyx-0.4.6.tgz 2025-11-03 20:03:42 +00:00
github-merge-queue[bot]
82595f6d3e Publish onyx-0.4.6.tgz 2025-11-03 19:44:29 +00:00
raunakab
c7ab6daaab Publish onyx-0.4.6.tgz 2025-11-03 18:01:07 +00:00
raunakab
d8e1c30738 Publish onyx-0.4.6.tgz 2025-11-03 17:57:09 +00:00
Weves
2386f7a7cd Publish onyx-0.4.6.tgz 2025-11-03 17:48:20 +00:00
yuhongsun96
23a3443eb4 Publish onyx-0.4.6.tgz 2025-11-03 17:31:38 +00:00
github-merge-queue[bot]
b828c58bf0 Publish onyx-0.4.6.tgz 2025-11-03 08:30:22 +00:00
raunakab
702c4794c2 Publish onyx-0.4.6.tgz 2025-11-03 06:27:22 +00:00
raunakab
a94cd163db Publish onyx-0.4.6.tgz 2025-11-03 06:26:53 +00:00
raunakab
0ec699ad75 Publish onyx-0.4.6.tgz 2025-11-03 02:36:07 +00:00
Weves
e861525d2a Publish onyx-0.4.6.tgz 2025-11-02 19:25:42 +00:00
github-merge-queue[bot]
d6503e470c Publish onyx-0.4.6.tgz 2025-11-02 04:27:40 +00:00
github-merge-queue[bot]
191691a6bc Publish onyx-0.4.6.tgz 2025-11-01 18:40:57 +00:00
Weves
ab17323949 Publish onyx-0.4.6.tgz 2025-11-01 18:24:01 +00:00
github-merge-queue[bot]
71844b7e3d Publish onyx-0.4.6.tgz 2025-11-01 18:23:22 +00:00
github-merge-queue[bot]
627cfb2d11 Publish onyx-0.4.6.tgz 2025-11-01 02:06:11 +00:00
raunakab
642946f44b Publish onyx-0.4.6.tgz 2025-11-01 00:43:02 +00:00
justin-tahara
879a67ef10 Publish onyx-0.4.6.tgz 2025-11-01 00:31:08 +00:00
github-merge-queue[bot]
f727b18748 Publish onyx-0.4.5.tgz 2025-11-01 00:12:31 +00:00
rguan72
f95d9c46c1 Publish onyx-0.4.5.tgz 2025-10-31 21:12:07 +00:00
rguan72
3c444d6b3d Publish onyx-0.4.5.tgz 2025-10-31 17:37:21 +00:00
justin-tahara
0f98e36c78 Publish onyx-0.4.5.tgz 2025-10-31 17:37:07 +00:00
rguan72
6da707d770 Publish onyx-0.4.5.tgz 2025-10-31 07:26:56 +00:00
Weves
cd63baa02a Publish onyx-0.4.5.tgz 2025-10-30 22:45:40 +00:00
wenxi-onyx
0b0412312c Publish onyx-0.4.5.tgz 2025-10-30 22:29:22 +00:00
Subash-Mohan
8dade60dd6 Publish onyx-0.4.5.tgz 2025-10-30 04:39:15 +00:00
github-merge-queue[bot]
b2dda14a95 Publish onyx-0.4.5.tgz 2025-10-30 02:11:13 +00:00
github-merge-queue[bot]
7e8b53d68a Publish onyx-0.4.5.tgz 2025-10-30 02:08:05 +00:00
github-merge-queue[bot]
5d36a4b190 Publish onyx-0.4.5.tgz 2025-10-30 00:47:47 +00:00
justin-tahara
ed87cba01f Publish onyx-0.4.5.tgz 2025-10-29 22:52:46 +00:00
justin-tahara
8a46172d97 Publish onyx-0.4.4.tgz 2025-10-29 22:51:54 +00:00
justin-tahara
e85317662b Publish onyx-0.4.4.tgz 2025-10-29 20:39:47 +00:00
github-merge-queue[bot]
5969396815 Publish onyx-0.4.4.tgz 2025-10-29 01:39:22 +00:00
evan-onyx
72a832ef8b Publish onyx-0.4.4.tgz 2025-10-29 00:00:46 +00:00
github-merge-queue[bot]
52d56211bf Publish onyx-0.4.4.tgz 2025-10-28 22:59:03 +00:00
raunakab
efcef0b322 Publish onyx-0.4.4.tgz 2025-10-28 21:33:12 +00:00
github-merge-queue[bot]
b87e1d5836 Publish onyx-0.4.4.tgz 2025-10-28 19:33:10 +00:00
github-merge-queue[bot]
0dd3857e3b Publish onyx-0.4.4.tgz 2025-10-28 19:05:53 +00:00
justin-tahara
881cc4736e Publish onyx-0.4.4.tgz 2025-10-28 03:57:28 +00:00
github-merge-queue[bot]
318191157e Publish onyx-0.4.4.tgz 2025-10-28 01:53:50 +00:00
github-merge-queue[bot]
c89b441987 Publish onyx-0.4.4.tgz 2025-10-28 01:04:38 +00:00
github-merge-queue[bot]
0fa5b346ba Publish onyx-0.4.4.tgz 2025-10-28 00:18:30 +00:00
github-merge-queue[bot]
94b69c5d4b Publish onyx-0.4.4.tgz 2025-10-27 23:51:48 +00:00
rguan72
d135caddf7 Publish onyx-0.4.4.tgz 2025-10-27 23:11:56 +00:00
justin-tahara
98d695e26c Publish onyx-0.4.4.tgz 2025-10-27 22:40:35 +00:00
justin-tahara
5fd82473b2 Publish onyx-0.4.4.tgz 2025-10-27 22:40:26 +00:00
github-merge-queue[bot]
ddfd4960bc Publish onyx-0.4.4.tgz 2025-10-27 21:59:18 +00:00
justin-tahara
b18f392976 Publish onyx-0.4.4.tgz 2025-10-27 21:27:12 +00:00
wenxi-onyx
056352b1bf Publish onyx-0.4.4.tgz 2025-10-27 19:39:59 +00:00
wenxi-onyx
1956e4dcbf Publish onyx-0.4.4.tgz 2025-10-27 19:39:25 +00:00
wenxi-onyx
fb026b094c Publish onyx-0.4.4.tgz 2025-10-27 18:55:38 +00:00
raunakab
41ad3174ab Publish onyx-0.4.4.tgz 2025-10-27 18:33:50 +00:00
yuhongsun96
f39951fed4 Publish onyx-0.4.4.tgz 2025-10-27 17:53:34 +00:00
raunakab
f5b0771a92 Publish onyx-0.4.4.tgz 2025-10-27 17:51:55 +00:00
raunakab
01717998e1 Publish onyx-0.4.4.tgz 2025-10-27 07:11:42 +00:00
raunakab
f850f3aa95 Publish onyx-0.4.4.tgz 2025-10-27 06:03:21 +00:00
raunakab
d3aa953bf5 Publish onyx-0.4.4.tgz 2025-10-27 05:32:52 +00:00
raunakab
eae70b8308 Publish onyx-0.4.4.tgz 2025-10-27 05:26:00 +00:00
Weves
644160486a Publish onyx-0.4.4.tgz 2025-10-27 02:09:12 +00:00
Weves
93e1cd340a Publish onyx-0.4.4.tgz 2025-10-27 00:20:41 +00:00
Weves
998d86077a Publish onyx-0.4.4.tgz 2025-10-26 22:23:18 +00:00
Weves
73b21184f7 Publish onyx-0.4.4.tgz 2025-10-26 20:38:59 +00:00
Weves
ea87c8320a Publish onyx-0.4.4.tgz 2025-10-26 00:50:48 +00:00
Weves
e723c3dfce Publish onyx-0.4.4.tgz 2025-10-25 06:39:50 +00:00
Weves
1020973a53 Publish onyx-0.4.4.tgz 2025-10-25 03:02:51 +00:00
github-merge-queue[bot]
4d757b4f94 Publish onyx-0.4.4.tgz 2025-10-25 00:06:45 +00:00
github-merge-queue[bot]
08012e25fe Publish onyx-0.4.4.tgz 2025-10-24 23:47:08 +00:00
Weves
a26e3b22ee Publish onyx-0.4.4.tgz 2025-10-24 23:22:37 +00:00
Weves
79d54ce542 Publish onyx-0.4.4.tgz 2025-10-24 23:21:30 +00:00
Weves
f390b3dcc6 Publish onyx-0.4.4.tgz 2025-10-24 21:09:16 +00:00
evan-onyx
ab935234d8 Publish onyx-0.4.4.tgz 2025-10-24 18:50:51 +00:00
github-merge-queue[bot]
aff7ecffcf Publish onyx-0.4.4.tgz 2025-10-24 18:42:18 +00:00
Weves
e0f6d46b2e Publish onyx-0.4.4.tgz 2025-10-24 18:15:45 +00:00
justin-tahara
41afcf9504 Publish onyx-0.4.4.tgz 2025-10-24 01:24:16 +00:00
wenxi-onyx
cc6f45f6ad Publish onyx-0.4.4.tgz 2025-10-24 00:45:45 +00:00
wenxi-onyx
1b54ac165c Publish onyx-0.4.4.tgz 2025-10-24 00:44:54 +00:00
Weves
735b0a0e82 Publish onyx-0.4.4.tgz 2025-10-24 00:35:29 +00:00
Weves
f717326cae Publish onyx-0.4.4.tgz 2025-10-24 00:30:03 +00:00
raunakab
bb621480d5 Publish onyx-0.4.4.tgz 2025-10-24 00:24:06 +00:00
raunakab
461bc2b647 Publish onyx-0.4.4.tgz 2025-10-24 00:22:33 +00:00
github-merge-queue[bot]
8689d10631 Publish onyx-0.4.4.tgz 2025-10-24 00:16:30 +00:00
Weves
ca5f2b6912 Publish onyx-0.4.4.tgz 2025-10-24 00:00:09 +00:00
Weves
5e53e5768b Publish onyx-0.4.4.tgz 2025-10-23 23:52:25 +00:00
github-merge-queue[bot]
4fe74e4caa Publish onyx-0.4.4.tgz 2025-10-23 23:18:54 +00:00
Weves
5ef89e9ed5 Publish onyx-0.4.4.tgz 2025-10-23 23:01:32 +00:00
Weves
e81ef91f31 Publish onyx-0.4.4.tgz 2025-10-23 22:09:30 +00:00
nmgarza5
fbc42bc6d0 Publish onyx-0.4.4.tgz 2025-10-23 21:41:39 +00:00
github-merge-queue[bot]
86712bcae7 Publish onyx-0.4.4.tgz 2025-10-23 21:31:57 +00:00
github-merge-queue[bot]
3da70dbdeb Publish onyx-0.4.4.tgz 2025-10-23 21:23:14 +00:00
Weves
4f9bf3a4f3 Publish onyx-0.4.4.tgz 2025-10-23 21:02:59 +00:00
Weves
0f178da7d8 Publish onyx-0.4.4.tgz 2025-10-23 20:43:47 +00:00
Weves
a41845ae87 Publish onyx-0.4.4.tgz 2025-10-23 20:40:10 +00:00
github-merge-queue[bot]
2717da9dc7 Publish onyx-0.4.4.tgz 2025-10-23 19:41:00 +00:00
Weves
0ad85cdbcf Publish onyx-0.4.4.tgz 2025-10-23 19:00:07 +00:00
wenxi-onyx
0cf30673f7 Publish onyx-0.4.4.tgz 2025-10-23 18:42:53 +00:00
github-merge-queue[bot]
0464d4f516 Publish onyx-0.4.4.tgz 2025-10-23 17:58:52 +00:00
Weves
f269aed596 Publish onyx-0.4.4.tgz 2025-10-23 17:42:31 +00:00
Weves
4c1affc450 Publish onyx-0.4.4.tgz 2025-10-23 17:27:21 +00:00
Weves
20da7d8298 Publish onyx-0.4.4.tgz 2025-10-23 17:22:14 +00:00
wenxi-onyx
040666ad00 Publish onyx-0.4.4.tgz 2025-10-23 17:13:38 +00:00
Weves
2b3087a7d3 Publish onyx-0.4.4.tgz 2025-10-23 16:50:41 +00:00
github-merge-queue[bot]
555b000b2b Publish onyx-0.4.4.tgz 2025-10-22 23:53:51 +00:00
justin-tahara
7a40e51bdc Publish onyx-0.4.4.tgz 2025-10-22 22:59:48 +00:00
github-merge-queue[bot]
7d6d2dc341 Publish onyx-0.4.4.tgz 2025-10-22 22:24:08 +00:00
github-merge-queue[bot]
91e38c03be Publish onyx-0.4.4.tgz 2025-10-22 22:15:11 +00:00
github-merge-queue[bot]
1a50ee5056 Publish onyx-0.4.4.tgz 2025-10-22 21:40:43 +00:00
github-merge-queue[bot]
9cd1a5d2ab Publish onyx-0.4.4.tgz 2025-10-22 21:01:20 +00:00
github-merge-queue[bot]
6af5efc605 Publish onyx-0.4.4.tgz 2025-10-22 20:36:43 +00:00
github-merge-queue[bot]
6ff9d2e513 Publish onyx-0.4.4.tgz 2025-10-22 20:35:10 +00:00
raunakab
0cb9640509 Publish onyx-0.4.4.tgz 2025-10-22 03:37:57 +00:00
raunakab
0de637235a Publish onyx-0.4.4.tgz 2025-10-22 03:23:28 +00:00
raunakab
cc5cb6c87e Publish onyx-0.4.4.tgz 2025-10-22 03:18:12 +00:00
raunakab
af6d9d8d87 Publish onyx-0.4.4.tgz 2025-10-22 02:45:48 +00:00
raunakab
1e80836aa5 Publish onyx-0.4.4.tgz 2025-10-22 02:30:32 +00:00
justin-tahara
e804303b99 Publish onyx-0.4.4.tgz 2025-10-22 01:26:54 +00:00
raunakab
5a3d4d8949 Publish onyx-0.4.4.tgz 2025-10-22 01:11:47 +00:00
justin-tahara
d47dd3673b Publish onyx-0.4.4.tgz 2025-10-22 00:56:49 +00:00
justin-tahara
98fdbb4497 Publish onyx-0.4.4.tgz 2025-10-21 23:54:50 +00:00
raunakab
3a299b8069 Publish onyx-0.4.4.tgz 2025-10-21 23:51:50 +00:00
github-merge-queue[bot]
6b2c473ade Publish onyx-0.4.4.tgz 2025-10-21 21:09:38 +00:00
Weves
5d066efd89 Publish onyx-0.4.4.tgz 2025-10-21 20:23:28 +00:00
github-merge-queue[bot]
d9eb2ee362 Publish onyx-0.4.4.tgz 2025-10-21 19:41:25 +00:00
Weves
bbaf25eced Publish onyx-0.4.4.tgz 2025-10-21 18:48:17 +00:00
wenxi-onyx
42ee750b1f Publish onyx-0.4.4.tgz 2025-10-21 18:39:46 +00:00
github-merge-queue[bot]
6a8a9e67fc Publish onyx-0.4.4.tgz 2025-10-21 18:27:11 +00:00
justin-tahara
c277590dce Publish onyx-0.4.4.tgz 2025-10-21 17:42:59 +00:00
Weves
1adcc6135d Publish onyx-0.4.4.tgz 2025-10-21 17:39:30 +00:00
Weves
a4024e8b6a Publish onyx-0.4.4.tgz 2025-10-21 17:28:15 +00:00
wenxi-onyx
b981697dcb Publish onyx-0.4.4.tgz 2025-10-21 00:49:07 +00:00
Weves
e2877bd180 Publish onyx-0.4.4.tgz 2025-10-21 00:48:37 +00:00
wenxi-onyx
e66c07fbef Publish onyx-0.4.4.tgz 2025-10-21 00:48:16 +00:00
wenxi-onyx
d54ac2daf7 Publish onyx-0.4.4.tgz 2025-10-21 00:43:23 +00:00
justin-tahara
a00a28fb73 Publish onyx-0.4.4.tgz 2025-10-21 00:41:46 +00:00
Weves
e2041ac597 Publish onyx-0.4.4.tgz 2025-10-21 00:30:40 +00:00
justin-tahara
1a35f728c5 Publish onyx-0.4.4.tgz 2025-10-21 00:21:54 +00:00
wenxi-onyx
022fba787a Publish onyx-0.4.4.tgz 2025-10-21 00:02:22 +00:00
wenxi-onyx
048f6f39b3 Publish onyx-0.4.4.tgz 2025-10-20 23:53:47 +00:00
Weves
e65dfd9ba2 Publish onyx-0.4.4.tgz 2025-10-20 23:53:02 +00:00
raunakab
cdf57d463d Publish onyx-0.4.4.tgz 2025-10-20 22:43:21 +00:00
wenxi-onyx
a81f3c36ee Publish onyx-0.4.4.tgz 2025-10-20 21:24:52 +00:00
raunakab
580cd7fea1 Publish onyx-0.4.4.tgz 2025-10-20 21:10:31 +00:00
Weves
5ce59a5cca Publish onyx-0.4.4.tgz 2025-10-20 20:53:34 +00:00
nmgarza5
c893ebeaf5 Publish onyx-0.4.4.tgz 2025-10-20 20:50:16 +00:00
Weves
29abc18269 Publish onyx-0.4.4.tgz 2025-10-20 20:29:40 +00:00
evan-onyx
3abc32d45a Publish onyx-0.4.4.tgz 2025-10-20 20:01:39 +00:00
justin-tahara
8e6e0d543c Publish onyx-0.4.4.tgz 2025-10-20 19:58:16 +00:00
raunakab
9d8f7cc608 Publish onyx-0.4.4.tgz 2025-10-20 19:49:16 +00:00
Weves
931fedcb5f Publish onyx-0.4.4.tgz 2025-10-19 20:26:04 +00:00
Weves
ed5ba46bc2 Publish onyx-0.4.4.tgz 2025-10-19 20:02:48 +00:00
Weves
2be412f674 Publish onyx-0.4.4.tgz 2025-10-19 19:38:30 +00:00
Weves
350a21a73b Publish onyx-0.4.4.tgz 2025-10-19 01:26:55 +00:00
Weves
f58895d542 Publish onyx-0.4.4.tgz 2025-10-18 16:06:42 +00:00
raunakab
dea0276581 Publish onyx-0.4.4.tgz 2025-10-18 01:50:07 +00:00
wenxi-onyx
d3dec72421 Publish onyx-0.4.4.tgz 2025-10-18 01:27:26 +00:00
github-merge-queue[bot]
8504ad07aa Publish onyx-0.4.4.tgz 2025-10-18 00:20:58 +00:00
github-merge-queue[bot]
9983e60c15 Publish onyx-0.4.4.tgz 2025-10-18 00:18:39 +00:00
github-merge-queue[bot]
77a190cb78 Publish onyx-0.4.4.tgz 2025-10-17 23:10:35 +00:00
github-merge-queue[bot]
80b2299732 Publish onyx-0.4.4.tgz 2025-10-17 22:57:20 +00:00
Weves
66fe67b428 Publish onyx-0.4.4.tgz 2025-10-17 20:57:08 +00:00
justin-tahara
8c30d9b21d Publish onyx-0.4.4.tgz 2025-10-17 20:53:11 +00:00
wenxi-onyx
c32e4fdafc Publish onyx-0.4.4.tgz 2025-10-17 20:52:45 +00:00
github-merge-queue[bot]
5ac4b4123d Publish onyx-0.4.4.tgz 2025-10-17 19:37:12 +00:00
yuhongsun96
29e735905b Publish onyx-0.4.4.tgz 2025-10-17 18:15:48 +00:00
github-merge-queue[bot]
3866bdcae8 Publish onyx-0.4.4.tgz 2025-10-17 18:00:20 +00:00
github-merge-queue[bot]
4afcfc3de4 Publish onyx-0.4.4.tgz 2025-10-17 17:51:34 +00:00
github-merge-queue[bot]
5afe528792 Publish onyx-0.4.4.tgz 2025-10-17 17:14:13 +00:00
Weves
e2ce5f91ab Publish onyx-0.4.4.tgz 2025-10-17 16:36:09 +00:00
Weves
c665c0bb1a Publish onyx-0.4.4.tgz 2025-10-17 16:35:19 +00:00
github-merge-queue[bot]
10db34f283 Publish onyx-0.4.4.tgz 2025-10-17 01:50:13 +00:00
justin-tahara
57f5863be4 Publish onyx-0.4.4.tgz 2025-10-17 01:17:57 +00:00
raunakab
8a285a8c50 Publish onyx-0.4.4.tgz 2025-10-17 01:04:07 +00:00
evan-onyx
a184b35d2a Publish onyx-0.4.4.tgz 2025-10-16 23:59:00 +00:00
evan-onyx
1e73df14ad Publish onyx-0.4.4.tgz 2025-10-16 23:42:55 +00:00
justin-tahara
e786885742 Publish onyx-0.4.4.tgz 2025-10-16 23:31:16 +00:00
Weves
e1a30513cd Publish onyx-0.4.4.tgz 2025-10-16 21:36:45 +00:00
github-merge-queue[bot]
c4820f667f Publish onyx-0.4.4.tgz 2025-10-16 17:54:03 +00:00
wenxi-onyx
940b310b21 Publish onyx-0.4.4.tgz 2025-10-16 17:08:44 +00:00
justin-tahara
428af24b1b Publish onyx-0.4.4.tgz 2025-10-15 23:12:31 +00:00
github-merge-queue[bot]
d6e83c56e5 Publish onyx-0.4.4.tgz 2025-10-15 21:51:06 +00:00
github-merge-queue[bot]
08bc366848 Publish onyx-0.4.4.tgz 2025-10-15 21:50:33 +00:00
raunakab
727ea3ca0a Publish onyx-0.4.4.tgz 2025-10-15 18:21:21 +00:00
github-merge-queue[bot]
8aa9d90c63 Publish onyx-0.4.4.tgz 2025-10-15 18:06:36 +00:00
raunakab
181b38fdaa Publish onyx-0.4.4.tgz 2025-10-15 17:16:05 +00:00
github-merge-queue[bot]
5bcc231f6d Publish onyx-0.4.4.tgz 2025-10-15 16:18:58 +00:00
github-merge-queue[bot]
dc03dcfb4b Publish onyx-0.4.4.tgz 2025-10-15 03:57:17 +00:00
rguan72
8cbf5b10fb Publish onyx-0.4.4.tgz 2025-10-15 03:27:39 +00:00
raunakab
092512c6a0 Publish onyx-0.4.4.tgz 2025-10-15 01:27:05 +00:00
justin-tahara
d167e777e3 Publish onyx-0.4.4.tgz 2025-10-15 00:21:53 +00:00
github-merge-queue[bot]
384ba06b57 Publish onyx-0.4.4.tgz 2025-10-14 23:18:00 +00:00
github-merge-queue[bot]
bb56002f75 Publish onyx-0.4.4.tgz 2025-10-14 22:29:32 +00:00
github-merge-queue[bot]
48f74ccce1 Publish onyx-0.4.4.tgz 2025-10-14 22:21:33 +00:00
github-merge-queue[bot]
ce39602a6f Publish onyx-0.4.4.tgz 2025-10-14 22:05:17 +00:00
github-merge-queue[bot]
5401ad49f3 Publish onyx-0.4.4.tgz 2025-10-14 19:27:35 +00:00
github-merge-queue[bot]
06f70ac245 Publish onyx-0.4.4.tgz 2025-10-14 19:23:12 +00:00
github-merge-queue[bot]
f49597de80 Publish onyx-0.4.4.tgz 2025-10-14 02:20:32 +00:00
github-merge-queue[bot]
ea7293d28f Publish onyx-0.4.4.tgz 2025-10-14 01:14:17 +00:00
github-merge-queue[bot]
bfea2ed371 Publish onyx-0.4.4.tgz 2025-10-14 00:54:13 +00:00
github-merge-queue[bot]
2276a6ab2c Publish onyx-0.4.4.tgz 2025-10-13 23:45:06 +00:00
Weves
9605a956e3 Publish onyx-0.4.4.tgz 2025-10-13 21:19:35 +00:00
github-merge-queue[bot]
7580666382 Publish onyx-0.4.4.tgz 2025-10-13 20:29:37 +00:00
justin-tahara
a6267e1188 Publish onyx-0.4.4.tgz 2025-10-12 22:15:01 +00:00
Weves
fa4bd58324 Publish onyx-0.4.3.tgz 2025-10-11 17:16:57 +00:00
github-merge-queue[bot]
0c8b4035ed Publish onyx-0.4.3.tgz 2025-10-11 04:40:03 +00:00
github-merge-queue[bot]
847b873a34 Publish onyx-0.4.3.tgz 2025-10-11 04:19:46 +00:00
Weves
18aa2249c1 Publish onyx-0.4.3.tgz 2025-10-11 01:04:45 +00:00
github-merge-queue[bot]
b08f409b63 Publish onyx-0.4.3.tgz 2025-10-10 23:52:28 +00:00
github-merge-queue[bot]
c7b994f8ae Publish onyx-0.4.3.tgz 2025-10-10 22:36:23 +00:00
github-merge-queue[bot]
b596e9fc3e Publish onyx-0.4.3.tgz 2025-10-10 22:23:31 +00:00
Weves
6b68223165 Publish onyx-0.4.3.tgz 2025-10-10 05:05:25 +00:00
nmgarza5
9c6953eafa Publish onyx-0.4.3.tgz 2025-10-10 00:21:53 +00:00
nmgarza5
39ca5a1458 Publish onyx-0.4.3.tgz 2025-10-10 00:03:23 +00:00
nmgarza5
6853f74df3 Publish onyx-0.4.3.tgz 2025-10-10 00:00:49 +00:00
github-merge-queue[bot]
97c12f550b Publish onyx-0.4.3.tgz 2025-10-09 23:01:56 +00:00
github-merge-queue[bot]
8d72c93006 Publish onyx-0.4.3.tgz 2025-10-09 22:43:59 +00:00
wenxi-onyx
9aa9b2319f Publish onyx-0.4.2.tgz 2025-10-09 21:38:43 +00:00
github-merge-queue[bot]
ea4fbdde02 Publish onyx-0.4.2.tgz 2025-10-09 19:56:25 +00:00
justin-tahara
435d225df5 Publish onyx-0.4.2.tgz 2025-10-09 19:16:44 +00:00
justin-tahara
d16d5e3f2c Publish onyx-0.4.1.tgz 2025-10-09 18:01:26 +00:00
Weves
099f38c659 Publish onyx-0.4.1.tgz 2025-10-09 02:03:37 +00:00
Weves
df36a07b6c Publish onyx-0.4.1.tgz 2025-10-08 21:43:01 +00:00
Weves
e275f6b47e Publish onyx-0.4.1.tgz 2025-10-08 21:40:43 +00:00
raunakab
bcd0ac51c4 Publish onyx-0.4.1.tgz 2025-10-08 18:59:55 +00:00
evan-onyx
00e0b5aa7e Publish onyx-0.4.1.tgz 2025-10-08 17:29:43 +00:00
evan-onyx
f737d33896 Publish onyx-0.4.1.tgz 2025-10-08 17:26:04 +00:00
Weves
40d4e14b83 Publish onyx-0.4.1.tgz 2025-10-08 16:57:58 +00:00
Weves
7f98790d35 Publish onyx-0.4.1.tgz 2025-10-08 16:06:04 +00:00
github-merge-queue[bot]
588878725c Publish onyx-0.4.1.tgz 2025-10-08 03:23:17 +00:00
Weves
45fb0a5a4b Publish onyx-0.4.1.tgz 2025-10-08 02:10:47 +00:00
justin-tahara
9c5d23e217 Publish onyx-0.4.1.tgz 2025-10-08 02:02:33 +00:00
yuhongsun96
8c341731d1 Publish onyx-0.4.1.tgz 2025-10-08 01:42:12 +00:00
rguan72
87f1387cc8 Publish onyx-0.4.1.tgz 2025-10-07 22:12:24 +00:00
wenxi-onyx
d5cdd042fe Publish onyx-0.4.1.tgz 2025-10-07 21:51:23 +00:00
wenxi-onyx
c8511cea98 Publish onyx-0.4.1.tgz 2025-10-07 21:41:24 +00:00
Weves
d27ece6c17 Publish onyx-0.4.1.tgz 2025-10-07 21:21:19 +00:00
justin-tahara
ef668870c8 Publish onyx-0.4.1.tgz 2025-10-07 21:11:51 +00:00
Weves
08a0846f42 Publish onyx-0.4.1.tgz 2025-10-07 20:54:19 +00:00
Weves
d4c2a615d7 Publish onyx-0.4.1.tgz 2025-10-07 20:25:48 +00:00
Weves
85a5b3aa24 Publish onyx-0.4.1.tgz 2025-10-07 19:53:23 +00:00
justin-tahara
5f17937569 Publish onyx-0.4.1.tgz 2025-10-07 19:18:40 +00:00
Weves
76e26fead2 Publish onyx-0.4.1.tgz 2025-10-07 19:08:38 +00:00
justin-tahara
40a9eaa37b Publish onyx-0.4.1.tgz 2025-10-07 19:04:15 +00:00
Weves
a7fc2cdad3 Publish onyx-0.4.1.tgz 2025-10-07 19:02:58 +00:00
Weves
ea3d5cd08e Publish onyx-0.4.1.tgz 2025-10-07 18:40:57 +00:00
wenxi-onyx
778c5f0621 Publish onyx-0.4.1.tgz 2025-10-07 17:25:34 +00:00
Weves
3f0dcc255f Publish onyx-0.4.1.tgz 2025-10-07 16:09:01 +00:00
justin-tahara
8256738a71 Publish onyx-0.4.1.tgz 2025-10-06 20:37:56 +00:00
wenxi-onyx
5574fd2da5 Publish onyx-0.4.0.tgz 2025-10-06 19:09:15 +00:00
Weves
8ff1d06e84 Publish onyx-0.4.0.tgz 2025-10-06 19:03:09 +00:00
Weves
f6b67514f4 Publish onyx-0.4.0.tgz 2025-10-06 19:01:16 +00:00
raunakab
d9e72867fa Publish onyx-0.4.0.tgz 2025-10-06 06:04:41 +00:00
wenxi-onyx
dbc008c520 Publish onyx-0.4.0.tgz 2025-10-05 19:25:11 +00:00
Weves
d992fac05a Publish onyx-0.4.0.tgz 2025-10-05 19:00:12 +00:00
wenxi-onyx
4869d54a84 Publish onyx-0.4.0.tgz 2025-10-05 18:35:12 +00:00
Weves
06e00b9c87 Publish onyx-0.4.0.tgz 2025-10-04 21:31:13 +00:00
justin-tahara
ba87f5b027 Publish onyx-0.4.0.tgz 2025-10-04 00:46:25 +00:00
Weves
7c0b2223ca Publish onyx-0.3.5.tgz 2025-10-03 23:59:46 +00:00
Weves
7e88248f66 Publish onyx-0.3.5.tgz 2025-10-03 20:11:25 +00:00
justin-tahara
7be459980e Publish onyx-0.3.5.tgz 2025-10-03 19:33:22 +00:00
evan-onyx
549c48d76d Publish onyx-0.3.4.tgz 2025-10-03 17:52:12 +00:00
justin-tahara
44e875d903 Publish onyx-0.3.4.tgz 2025-10-03 17:45:43 +00:00
Weves
ae9313a400 Publish onyx-0.3.3.tgz 2025-10-03 17:36:43 +00:00
justin-tahara
44647361c8 Publish onyx-0.3.3.tgz 2025-10-03 16:50:06 +00:00
github-merge-queue[bot]
6d4cc2bae5 Publish onyx-0.3.3.tgz 2025-10-03 01:57:36 +00:00
Weves
04a223008d Publish onyx-0.3.3.tgz 2025-10-02 23:33:53 +00:00
wenxi-onyx
83d9d1e682 Publish onyx-0.3.3.tgz 2025-10-02 23:16:09 +00:00
evan-onyx
88486480dc Publish onyx-0.3.3.tgz 2025-10-02 22:37:18 +00:00
Weves
bb3676f69c Publish onyx-0.3.3.tgz 2025-10-02 22:31:38 +00:00
wenxi-onyx
122def562b Publish onyx-0.3.3.tgz 2025-10-02 22:23:35 +00:00
Weves
0706c6cc69 Publish onyx-0.3.3.tgz 2025-10-02 22:18:00 +00:00
evan-onyx
3c265b9825 Publish onyx-0.3.3.tgz 2025-10-02 22:02:36 +00:00
evan-onyx
92f99f0329 Publish onyx-0.3.3.tgz 2025-10-02 20:07:12 +00:00
Weves
a8ba1daa0e Publish onyx-0.3.3.tgz 2025-10-02 19:54:27 +00:00
wenxi-onyx
c763c215e1 Publish onyx-0.3.3.tgz 2025-10-02 17:48:21 +00:00
evan-onyx
56d2aa6a86 Publish onyx-0.3.3.tgz 2025-10-02 17:24:05 +00:00
Subash-Mohan
5552507432 Publish onyx-0.3.3.tgz 2025-10-02 16:14:02 +00:00
Weves
664556ddb5 Publish onyx-0.3.3.tgz 2025-10-02 15:43:36 +00:00
github-merge-queue[bot]
9af74b7b4d Publish onyx-0.3.3.tgz 2025-10-01 23:45:42 +00:00
Weves
aba219d435 Publish onyx-0.3.3.tgz 2025-10-01 22:15:31 +00:00
Weves
d46474f2ae Publish onyx-0.3.3.tgz 2025-10-01 22:06:32 +00:00
evan-onyx
b990c606bd Publish onyx-0.3.3.tgz 2025-10-01 21:54:35 +00:00
wenxi-onyx
8c6c223d21 Publish onyx-0.3.3.tgz 2025-10-01 21:43:01 +00:00
Weves
369836a0c1 Publish onyx-0.3.3.tgz 2025-09-30 21:44:50 +00:00
justin-tahara
a8dfb2e061 Publish onyx-0.3.3.tgz 2025-09-30 19:57:42 +00:00
justin-tahara
2e9b109718 Publish onyx-0.3.3.tgz 2025-09-30 19:56:13 +00:00
justin-tahara
1f02116d94 Publish onyx-0.3.3.tgz 2025-09-30 18:29:28 +00:00
Weves
c23ef63028 Publish onyx-0.3.3.tgz 2025-09-30 17:42:50 +00:00
Weves
354d4f9eda Publish onyx-0.3.3.tgz 2025-09-30 16:58:45 +00:00
Weves
f43c5c45dd Publish onyx-0.3.3.tgz 2025-09-30 02:58:16 +00:00
Weves
847f6fa830 Publish onyx-0.3.3.tgz 2025-09-30 00:59:20 +00:00
evan-onyx
cd8e9866b0 Publish onyx-0.3.3.tgz 2025-09-30 00:02:49 +00:00
Weves
9cf9f1404d Publish onyx-0.3.3.tgz 2025-09-29 22:09:51 +00:00
Weves
101be8e3bb Publish onyx-0.3.3.tgz 2025-09-29 20:56:01 +00:00
Weves
036b528757 Publish onyx-0.3.3.tgz 2025-09-29 18:03:25 +00:00
Weves
ce9fd2c3c8 Publish onyx-0.3.3.tgz 2025-09-29 17:56:02 +00:00
Weves
ac6c85bf35 Publish onyx-0.3.3.tgz 2025-09-29 16:05:21 +00:00
Subash-Mohan
fee2f623ae Publish onyx-0.3.3.tgz 2025-09-29 06:59:11 +00:00
Weves
af6ced79a8 Publish onyx-0.3.3.tgz 2025-09-28 20:44:58 +00:00
Weves
d0e1737d32 Publish onyx-0.3.3.tgz 2025-09-28 20:01:39 +00:00
Weves
554f5f3ab7 Publish onyx-0.3.3.tgz 2025-09-28 19:59:07 +00:00
yuhongsun96
33a4005a1d Publish onyx-0.3.3.tgz 2025-09-28 02:04:51 +00:00
Weves
ef12d7f822 Publish onyx-0.3.3.tgz 2025-09-28 00:44:18 +00:00
yuhongsun96
1ee54dbe73 Publish onyx-0.3.3.tgz 2025-09-27 22:38:01 +00:00
Weves
b70836e9d7 Publish onyx-0.3.3.tgz 2025-09-27 00:16:52 +00:00
Weves
610d2fc213 Publish onyx-0.3.3.tgz 2025-09-26 22:34:47 +00:00
justin-tahara
0f6eccfdfb Publish onyx-0.3.3.tgz 2025-09-26 21:00:42 +00:00
Weves
2b5276f995 Publish onyx-0.3.2.tgz 2025-09-26 02:58:51 +00:00
jessicasingh7
ec1831c198 Publish onyx-0.3.2.tgz 2025-09-26 01:11:55 +00:00
Weves
4b883eca52 Publish onyx-0.3.2.tgz 2025-09-26 00:10:31 +00:00
Weves
1a1f74fb0b Publish onyx-0.3.2.tgz 2025-09-25 23:13:36 +00:00
jessicasingh7
66e07d01f3 Publish onyx-0.3.2.tgz 2025-09-25 23:13:16 +00:00
wenxi-onyx
a968bcd433 Publish onyx-0.3.2.tgz 2025-09-25 23:00:06 +00:00
justin-tahara
a18b5253ad Publish onyx-0.3.2.tgz 2025-09-25 22:35:26 +00:00
justin-tahara
3cdb6e6531 Publish onyx-0.3.2.tgz 2025-09-25 22:09:30 +00:00
justin-tahara
cb5ff10ae7 Publish onyx-0.3.2.tgz 2025-09-25 21:09:11 +00:00
justin-tahara
0a7631204b Publish onyx-0.3.2.tgz 2025-09-25 18:59:26 +00:00
yuhongsun96
e006fc8e08 Publish onyx-0.3.1.tgz 2025-09-25 18:35:48 +00:00
yuhongsun96
7f8d28af37 Publish onyx-0.3.1.tgz 2025-09-25 18:12:00 +00:00
yuhongsun96
c93a88608f Publish onyx-0.3.1.tgz 2025-09-25 17:10:05 +00:00
yuhongsun96
e84d6170d3 Publish onyx-0.3.1.tgz 2025-09-25 16:07:03 +00:00
yuhongsun96
d9d06f884b Publish onyx-0.3.1.tgz 2025-09-25 03:34:42 +00:00
justin-tahara
de52c4a0f5 Publish onyx-0.3.1.tgz 2025-09-25 02:34:25 +00:00
justin-tahara
ff3b56ca95 Publish onyx-0.3.1.tgz 2025-09-25 02:31:15 +00:00
yuhongsun96
763e4077c9 Publish onyx-0.3.1.tgz 2025-09-24 22:33:10 +00:00
Weves
9487864920 Publish onyx-stack-0.3.1.tgz 2025-09-23 23:08:59 +00:00
jessicasingh7
9b356b48d8 Publish onyx-stack-0.3.1.tgz 2025-09-23 02:20:58 +00:00
justin-tahara
2bd2c1f33a Publish onyx-stack-0.3.1.tgz 2025-09-23 01:49:57 +00:00
justin-tahara
6c863481ad Publish onyx-stack-0.3.1.tgz 2025-09-23 01:49:37 +00:00
yuhongsun96
9c67e5f47a Publish onyx-stack-0.3.1.tgz 2025-09-23 00:26:50 +00:00
yuhongsun96
cf847d060e Publish onyx-stack-0.3.1.tgz 2025-09-23 00:10:54 +00:00
yuhongsun96
2e1f3a5cc5 Publish onyx-stack-0.3.1.tgz 2025-09-22 22:39:11 +00:00
Subash-Mohan
52e9960ca8 Publish onyx-stack-0.3.1.tgz 2025-09-22 13:54:59 +00:00
edwin-onyx
d566ca0c91 Publish onyx-stack-0.3.1.tgz 2025-09-22 03:44:32 +00:00
evan-onyx
a149cfa6a2 Publish onyx-stack-0.3.1.tgz 2025-09-20 00:11:46 +00:00
rguan72
35f72e40ab Publish onyx-stack-0.3.1.tgz 2025-09-19 21:11:44 +00:00
rguan72
82d2985eec Publish onyx-stack-0.3.1.tgz 2025-09-19 01:18:59 +00:00
evan-onyx
0a7a90d310 Publish onyx-stack-0.3.1.tgz 2025-09-18 23:37:08 +00:00
Weves
860c3e0ba1 Publish onyx-stack-0.3.1.tgz 2025-09-18 20:00:52 +00:00
Weves
3bb2bddf61 Publish onyx-stack-0.3.1.tgz 2025-09-18 18:10:37 +00:00
Weves
4d2b6e453a Publish onyx-stack-0.3.1.tgz 2025-09-18 06:49:57 +00:00
rguan72
0a9c5a619f Publish onyx-stack-0.3.1.tgz 2025-09-18 00:13:17 +00:00
wenxi-onyx
968e8b7ec8 Publish onyx-stack-0.3.1.tgz 2025-09-18 00:07:46 +00:00
Weves
8b1c15cef2 Publish onyx-stack-0.3.1.tgz 2025-09-17 23:41:04 +00:00
justin-tahara
2113dd4a75 Publish onyx-stack-0.3.1.tgz 2025-09-17 20:53:21 +00:00
rguan72
0b826e7095 Publish onyx-stack-0.3.1.tgz 2025-09-17 19:18:28 +00:00
Weves
86eb089c02 Publish onyx-stack-0.3.1.tgz 2025-09-17 06:26:42 +00:00
rguan72
4e39d5851e Publish onyx-stack-0.3.1.tgz 2025-09-17 01:59:11 +00:00
justin-tahara
ee411195a8 Publish onyx-stack-0.3.1.tgz 2025-09-16 23:59:53 +00:00
justin-tahara
229459835a Publish onyx-stack-0.3.0.tgz 2025-09-16 23:49:27 +00:00
Weves
25a0f3a53d Publish onyx-stack-0.3.0.tgz 2025-09-16 22:49:41 +00:00
justin-tahara
836e58ffc9 Publish onyx-stack-0.3.0.tgz 2025-09-16 21:57:12 +00:00
Weves
2ebe86565a Publish onyx-stack-0.2.12.tgz 2025-09-16 21:50:10 +00:00
justin-tahara
2ba0974117 Publish onyx-stack-0.2.12.tgz 2025-09-16 20:57:58 +00:00
wenxi-onyx
c87e52a699 Publish onyx-stack-0.2.11.tgz 2025-09-16 18:07:27 +00:00
evan-onyx
46ac793c69 Publish onyx-stack-0.2.11.tgz 2025-09-16 01:25:18 +00:00
Weves
c6abd907cb Publish onyx-stack-0.2.11.tgz 2025-09-15 23:47:04 +00:00
evan-onyx
b005accd56 Publish onyx-stack-0.2.11.tgz 2025-09-15 18:31:25 +00:00
Weves
f6c2891d65 Publish onyx-stack-0.2.11.tgz 2025-09-15 03:08:29 +00:00
Weves
0950d78cb5 Publish onyx-stack-0.2.11.tgz 2025-09-15 03:06:37 +00:00
Weves
5f6cb591ba Publish onyx-stack-0.2.11.tgz 2025-09-14 00:34:45 +00:00
github-merge-queue[bot]
de40793bf5 Publish onyx-stack-0.2.11.tgz 2025-09-13 12:53:35 +00:00
github-merge-queue[bot]
5ad7e97f05 Publish onyx-stack-0.2.11.tgz 2025-09-13 02:33:23 +00:00
wenxi-onyx
88d5a253bd Publish onyx-stack-0.2.11.tgz 2025-09-13 01:16:20 +00:00
Weves
3c747f839d Publish onyx-stack-0.2.11.tgz 2025-09-12 07:16:01 +00:00
justin-tahara
3abee88d15 Publish onyx-stack-0.2.11.tgz 2025-09-12 02:28:53 +00:00
Weves
be61941063 Publish onyx-stack-0.2.11.tgz 2025-09-12 01:22:02 +00:00
justin-tahara
f7c210176d Publish onyx-stack-0.2.11.tgz 2025-09-12 01:20:15 +00:00
Weves
c2ca0e2fa7 Publish onyx-stack-0.2.10.tgz 2025-09-11 21:07:30 +00:00
justin-tahara
227542631c Publish onyx-stack-0.2.10.tgz 2025-09-11 17:36:28 +00:00
wenxi-onyx
8f44d2c78a Publish onyx-stack-0.2.10.tgz 2025-09-11 04:50:11 +00:00
Weves
81ae79abb6 Publish onyx-stack-0.2.10.tgz 2025-09-11 02:30:18 +00:00
Weves
2122f1f0ed Publish onyx-stack-0.2.10.tgz 2025-09-11 02:30:04 +00:00
joachim-danswer
f99bcc7736 Publish onyx-stack-0.2.10.tgz 2025-09-10 23:40:32 +00:00
Weves
7db3a9a880 Publish onyx-stack-0.2.10.tgz 2025-09-10 23:20:59 +00:00
Weves
4c28b2ae1c Publish onyx-stack-0.2.10.tgz 2025-09-10 21:38:48 +00:00
Weves
3cf7b0a7ba Publish onyx-stack-0.2.10.tgz 2025-09-10 21:15:02 +00:00
Weves
d382508e5b Publish onyx-stack-0.2.10.tgz 2025-09-10 19:16:21 +00:00
justin-tahara
a5e457458c Publish onyx-stack-0.2.10.tgz 2025-09-10 17:25:00 +00:00
Weves
b3ca478411 Publish onyx-stack-0.2.9.tgz 2025-09-10 17:23:03 +00:00
Weves
e80554619a Publish onyx-stack-0.2.9.tgz 2025-09-09 22:53:17 +00:00
wenxi-onyx
5669ce29a7 Publish onyx-stack-0.2.9.tgz 2025-09-09 17:24:40 +00:00
justin-tahara
23ab597d6f Publish onyx-stack-0.2.9.tgz 2025-09-09 16:38:21 +00:00
Weves
d8e33695d5 Publish onyx-stack-0.2.9.tgz 2025-09-09 07:30:56 +00:00
wenxi-onyx
6fc0f1b724 Publish onyx-stack-0.2.9.tgz 2025-09-09 01:51:11 +00:00
wenxi-onyx
c602ccbec5 Publish onyx-stack-0.2.9.tgz 2025-09-09 01:07:34 +00:00
Weves
ee94fcfdd9 Publish onyx-stack-0.2.9.tgz 2025-09-09 00:48:27 +00:00
github-merge-queue[bot]
4da51c3d98 Publish onyx-stack-0.2.9.tgz 2025-09-08 23:00:13 +00:00
Weves
bc8f472e70 Publish onyx-stack-0.2.9.tgz 2025-09-08 21:01:39 +00:00
wenxi-onyx
240de9ead8 Publish onyx-stack-0.2.9.tgz 2025-09-08 20:50:22 +00:00
wenxi-onyx
8a22fb9157 Publish onyx-stack-0.2.9.tgz 2025-09-08 19:12:20 +00:00
Weves
49401be4f6 Publish onyx-stack-0.2.9.tgz 2025-09-08 06:18:19 +00:00
Weves
a468ee668d Publish onyx-stack-0.2.9.tgz 2025-09-07 21:45:45 +00:00
wenxi-onyx
c23a029aef Publish onyx-stack-0.2.9.tgz 2025-09-07 20:07:50 +00:00
Weves
94fcde3629 Publish onyx-stack-0.2.9.tgz 2025-09-07 18:58:45 +00:00
Weves
b1f1bf6fc4 Publish onyx-stack-0.2.9.tgz 2025-09-07 18:25:36 +00:00
wenxi-onyx
2d85a2be1f Publish onyx-stack-0.2.9.tgz 2025-09-07 02:30:36 +00:00
Weves
50c3cf8245 Publish onyx-stack-0.2.9.tgz 2025-09-07 01:28:02 +00:00
github-merge-queue[bot]
66a55d4e39 Publish onyx-stack-0.2.9.tgz 2025-09-06 21:34:50 +00:00
Weves
6ffbe431f1 Publish onyx-stack-0.2.9.tgz 2025-09-06 06:29:37 +00:00
Weves
22404f18e2 Publish onyx-stack-0.2.9.tgz 2025-09-06 06:14:54 +00:00
Weves
cc2b4c44c4 Publish onyx-stack-0.2.9.tgz 2025-09-06 04:07:44 +00:00
github-merge-queue[bot]
14fbcc5bc8 Publish onyx-stack-0.2.9.tgz 2025-09-06 02:16:46 +00:00
github-merge-queue[bot]
2f073e43db Publish onyx-stack-0.2.9.tgz 2025-09-05 21:06:41 +00:00
wenxi-onyx
50504fcf3a Publish onyx-stack-0.2.9.tgz 2025-09-05 17:22:35 +00:00
justin-tahara
640e1cbae1 Publish onyx-stack-0.2.9.tgz 2025-09-05 17:03:38 +00:00
github-merge-queue[bot]
11224351d1 Publish onyx-stack-0.2.9.tgz 2025-09-05 07:59:01 +00:00
Weves
997a4ad613 Publish onyx-stack-0.2.9.tgz 2025-09-05 04:52:58 +00:00
Weves
05fe9b743f Publish onyx-stack-0.2.9.tgz 2025-09-05 04:51:41 +00:00
Weves
310b3b3f8b Publish onyx-stack-0.2.9.tgz 2025-09-04 23:15:39 +00:00
wenxi-onyx
f0bbcb3a06 Publish onyx-stack-0.2.9.tgz 2025-09-04 19:07:43 +00:00
Weves
93fdc1793b Publish onyx-stack-0.2.9.tgz 2025-09-04 18:15:00 +00:00
Weves
e55fc27f0c Publish onyx-stack-0.2.9.tgz 2025-09-04 02:08:39 +00:00
wenxi-onyx
68786ecd38 Publish onyx-stack-0.2.9.tgz 2025-09-04 00:33:28 +00:00
wenxi-onyx
954c70f422 Publish onyx-stack-0.2.9.tgz 2025-09-04 00:33:13 +00:00
Weves
6080fe48a7 Publish onyx-stack-0.2.9.tgz 2025-09-03 23:26:43 +00:00
github-merge-queue[bot]
8ba887ccfe Publish onyx-stack-0.2.9.tgz 2025-09-03 23:13:08 +00:00
Weves
c2209c1522 Publish onyx-stack-0.2.9.tgz 2025-09-02 23:45:37 +00:00
github-merge-queue[bot]
85ce395df2 Publish onyx-stack-0.2.9.tgz 2025-09-02 22:53:33 +00:00
github-merge-queue[bot]
fd0d302113 Publish onyx-stack-0.2.9.tgz 2025-09-02 20:52:56 +00:00
Weves
48f3816451 Publish onyx-stack-0.2.9.tgz 2025-09-02 15:58:33 +00:00
wenxi-onyx
73b555c844 Publish onyx-stack-0.2.9.tgz 2025-09-02 04:54:13 +00:00
justin-tahara
ea21f88db8 Publish onyx-stack-0.2.9.tgz 2025-09-02 02:36:52 +00:00
justin-tahara
61670c4be4 Publish onyx-stack-0.2.9.tgz 2025-09-01 22:34:57 +00:00
justin-tahara
094970deb3 Publish onyx-stack-0.2.9.tgz 2025-09-01 22:34:09 +00:00
Weves
5fa375ac3b Publish onyx-stack-0.2.9.tgz 2025-09-01 20:34:01 +00:00
justin-tahara
fd4c5d7389 Publish onyx-stack-0.2.9.tgz 2025-09-01 17:53:28 +00:00
Weves
411e67dad7 Publish onyx-stack-0.2.9.tgz 2025-09-01 17:19:43 +00:00
Weves
9ec7c20f88 Publish onyx-stack-0.2.9.tgz 2025-09-01 17:19:09 +00:00
evan-onyx
d3f65cb8aa Publish onyx-stack-0.2.9.tgz 2025-09-01 16:53:48 +00:00
Weves
9f2e10020e Publish onyx-stack-0.2.9.tgz 2025-09-01 06:20:28 +00:00
Weves
bde4f8d10a Publish onyx-stack-0.2.9.tgz 2025-09-01 04:30:24 +00:00
Weves
625fa4d61a Publish onyx-stack-0.2.9.tgz 2025-09-01 03:57:17 +00:00
Weves
9d35781773 Publish onyx-stack-0.2.9.tgz 2025-09-01 02:51:01 +00:00
wenxi-onyx
94bf94ff1b Publish onyx-stack-0.2.9.tgz 2025-09-01 02:17:33 +00:00
Weves
ae5fe8de0e Publish onyx-stack-0.2.9.tgz 2025-08-31 21:30:06 +00:00
Weves
770bdacc67 Publish onyx-stack-0.2.9.tgz 2025-08-30 00:18:43 +00:00
Weves
d37bc1d5f3 Publish onyx-stack-0.2.9.tgz 2025-08-30 00:18:18 +00:00
wenxi-onyx
8575fbc284 Publish onyx-stack-0.2.9.tgz 2025-08-30 00:09:02 +00:00
Weves
649c3b9391 Publish onyx-stack-0.2.9.tgz 2025-08-30 00:00:09 +00:00
Weves
2ce2ee7614 Publish onyx-stack-0.2.9.tgz 2025-08-29 23:17:10 +00:00
Weves
42779ff17a Publish onyx-stack-0.2.9.tgz 2025-08-29 22:09:28 +00:00
Weves
f9c94693cd Publish onyx-stack-0.2.9.tgz 2025-08-29 21:03:17 +00:00
Weves
5dfb35507a Publish onyx-stack-0.2.9.tgz 2025-08-29 16:03:03 +00:00
Weves
23708dadfd Publish onyx-stack-0.2.9.tgz 2025-08-29 03:43:18 +00:00
wenxi-onyx
578a22c653 Publish onyx-stack-0.2.9.tgz 2025-08-28 21:18:51 +00:00
wenxi-onyx
12657196ca Publish onyx-stack-0.2.9.tgz 2025-08-28 21:18:30 +00:00
wenxi-onyx
65df5dd49d Publish onyx-stack-0.2.9.tgz 2025-08-28 20:36:02 +00:00
Weves
dca2d4cd6b Publish onyx-stack-0.2.9.tgz 2025-08-28 06:25:00 +00:00
rguan72
52b4930e49 Publish onyx-stack-0.2.9.tgz 2025-08-28 03:04:10 +00:00
Weves
8c8e1b239c Publish onyx-stack-0.2.9.tgz 2025-08-27 05:35:03 +00:00
wenxi-onyx
37d883a8a5 Publish onyx-stack-0.2.9.tgz 2025-08-27 01:16:02 +00:00
Weves
d1e4c357e9 Publish onyx-stack-0.2.9.tgz 2025-08-27 00:34:29 +00:00
wenxi-onyx
7f9a8615eb Publish onyx-stack-0.2.9.tgz 2025-08-27 00:28:18 +00:00
wenxi-onyx
faff1f34b5 Publish onyx-stack-0.2.9.tgz 2025-08-26 19:45:46 +00:00
wenxi-onyx
26c8f32e95 Publish onyx-stack-0.2.9.tgz 2025-08-26 19:34:05 +00:00
Weves
c0b027a88e Publish onyx-stack-0.2.9.tgz 2025-08-26 18:22:11 +00:00
evan-onyx
39021f5ecc Publish onyx-stack-0.2.9.tgz 2025-08-26 18:15:24 +00:00
wenxi-onyx
10d00ec489 Publish onyx-stack-0.2.9.tgz 2025-08-26 16:50:41 +00:00
Weves
564f5699c5 Publish onyx-stack-0.2.9.tgz 2025-08-26 07:27:43 +00:00
evan-onyx
fd2f3ad351 Publish onyx-stack-0.2.9.tgz 2025-08-25 23:43:56 +00:00
github-merge-queue[bot]
f2725db40c Publish onyx-stack-0.2.9.tgz 2025-08-25 23:28:03 +00:00
justin-tahara
af4b64304a Publish onyx-stack-0.2.9.tgz 2025-08-25 21:12:23 +00:00
evan-onyx
6abf464c56 Publish onyx-stack-0.2.9.tgz 2025-08-25 20:36:57 +00:00
github-merge-queue[bot]
4ba236e010 Publish onyx-stack-0.2.9.tgz 2025-08-25 19:29:42 +00:00
Subash-Mohan
a997968142 Publish onyx-stack-0.2.9.tgz 2025-08-25 02:38:45 +00:00
Weves
cd3700254a Publish onyx-stack-0.2.9.tgz 2025-08-25 00:44:56 +00:00
justin-tahara
b18842e7fe Publish onyx-stack-0.2.9.tgz 2025-08-23 01:14:16 +00:00
justin-tahara
65bfd97dcc Publish onyx-stack-0.2.9.tgz 2025-08-22 23:40:25 +00:00
justin-tahara
733e44786b Publish onyx-stack-0.2.9.tgz 2025-08-22 00:37:00 +00:00
evan-onyx
a1979f957b Publish onyx-stack-0.2.8.tgz 2025-08-22 00:26:34 +00:00
justin-tahara
bc85c1aa68 Publish onyx-stack-0.2.8.tgz 2025-08-21 21:16:11 +00:00
justin-tahara
db046e4d3c Publish onyx-stack-0.2.7.tgz 2025-08-21 16:44:26 +00:00
github-merge-queue[bot]
3aac46e58b Publish onyx-stack-0.2.7.tgz 2025-08-20 23:27:52 +00:00
justin-tahara
043fc279a8 Publish onyx-stack-0.2.7.tgz 2025-08-20 20:51:11 +00:00
justin-tahara
551dfd5d58 Publish onyx-stack-0.2.7.tgz 2025-08-20 20:51:01 +00:00
wenxi-onyx
4d0c140961 Publish onyx-stack-0.2.6.tgz 2025-08-20 16:15:17 +00:00
github-merge-queue[bot]
3a238277ec Publish onyx-stack-0.2.6.tgz 2025-08-20 05:11:52 +00:00
github-merge-queue[bot]
abf15bb4a6 Publish onyx-stack-0.2.6.tgz 2025-08-20 03:51:11 +00:00
Weves
b68d35d14f Publish onyx-stack-0.2.6.tgz 2025-08-19 22:17:15 +00:00
Weves
ec90a7370a Publish onyx-stack-0.2.6.tgz 2025-08-19 20:02:42 +00:00
justin-tahara
e34a035afc Publish onyx-stack-0.2.6.tgz 2025-08-19 00:46:58 +00:00
wenxi-onyx
7cbdd0b729 Publish onyx-stack-0.2.6.tgz 2025-08-18 21:35:18 +00:00
github-merge-queue[bot]
5bbb6b059b Publish onyx-stack-0.2.6.tgz 2025-08-18 18:25:51 +00:00
github-merge-queue[bot]
ae1635e93d Publish onyx-stack-0.2.6.tgz 2025-08-18 17:27:13 +00:00
github-merge-queue[bot]
0c2d3cbc1a Publish onyx-stack-0.2.6.tgz 2025-08-18 04:30:45 +00:00
github-merge-queue[bot]
102dcefc9d Publish onyx-stack-0.2.6.tgz 2025-08-17 23:37:06 +00:00
github-merge-queue[bot]
af3cc8edb9 Publish onyx-stack-0.2.6.tgz 2025-08-16 03:49:15 +00:00
wenxi-onyx
c96b27389e Publish onyx-stack-0.2.6.tgz 2025-08-16 01:20:47 +00:00
Weves
4b128f3e85 Publish onyx-stack-0.2.6.tgz 2025-08-15 22:44:16 +00:00
github-merge-queue[bot]
691f6797bb Publish onyx-stack-0.2.6.tgz 2025-08-15 01:53:14 +00:00
github-merge-queue[bot]
2e9f41a7f7 Publish onyx-stack-0.2.6.tgz 2025-08-15 00:59:46 +00:00
justin-tahara
d275e440ca Publish onyx-stack-0.2.6.tgz 2025-08-14 23:48:20 +00:00
wenxi-onyx
8f1d5fae8c Publish onyx-stack-0.2.6.tgz 2025-08-14 22:18:29 +00:00
wenxi-onyx
c904b50454 Publish onyx-stack-0.2.6.tgz 2025-08-14 20:21:22 +00:00
github-merge-queue[bot]
fb9d9fd995 Publish onyx-stack-0.2.5.tgz 2025-08-14 10:13:19 +00:00
github-merge-queue[bot]
fd599797db Publish onyx-stack-0.2.5.tgz 2025-08-13 21:21:27 +00:00
github-merge-queue[bot]
094f416441 Publish onyx-stack-0.2.5.tgz 2025-08-13 19:09:25 +00:00
Weves
ba9e777bdf Publish onyx-stack-0.2.5.tgz 2025-08-13 16:58:38 +00:00
github-merge-queue[bot]
e16ba43392 Publish onyx-stack-0.2.5.tgz 2025-08-13 02:23:28 +00:00
github-merge-queue[bot]
4d4ff04d2e Publish onyx-stack-0.2.5.tgz 2025-08-13 01:33:06 +00:00
github-merge-queue[bot]
ba1dcd346b Publish onyx-stack-0.2.5.tgz 2025-08-12 03:45:29 +00:00
github-merge-queue[bot]
3b5352a65a Publish onyx-stack-0.2.5.tgz 2025-08-11 18:16:34 +00:00
evan-onyx
1cb87fe4b1 Publish onyx-stack-0.2.5.tgz 2025-08-11 16:58:46 +00:00
github-merge-queue[bot]
f098eacf09 Publish onyx-stack-0.2.5.tgz 2025-08-10 23:50:24 +00:00
github-merge-queue[bot]
3afea18239 Publish onyx-stack-0.2.5.tgz 2025-08-10 20:09:42 +00:00
justin-tahara
26c6f60595 Publish onyx-stack-0.2.5.tgz 2025-08-09 01:41:59 +00:00
justin-tahara
df03438e34 Update index.yaml
Signed-off-by: justin-tahara <justin-tahara@users.noreply.github.com>
2025-08-07 02:06:52 +00:00
justin-tahara
88c2a87b18 Update index.yaml
Signed-off-by: justin-tahara <justin-tahara@users.noreply.github.com>
2025-08-05 21:12:35 +00:00
justin-tahara
e717796131 Add README.md 2025-07-30 16:39:07 -07:00
Raunak Bhagat
f87d3e9849 fix: Make ungrounded types have a default name when sending to the frontend (#5133)
* Update names in map-comprehension

* Make default name for ungrounded types public

* Return the default name for ungrounded entity-types

* Update backend/onyx/db/entities.py

Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>

---------

Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
2025-07-30 20:46:30 +00:00
Rei Meguro
72cdada893 edit link to custom actions (#5129) 2025-07-30 15:08:39 +00:00
SubashMohan
c442ebaff6 Feature/GitHub permission sync (#4996)
* github perm sync initial draft

* introduce github  doc sync and perm sync

* remove specific start time check

* Refactor GitHub connector to use SlimCheckpointOutputWrapper for improved document handling

* Update GitHub sync frequency defaults from 30 minutes to 5 minutes

* Add stop signal handling and progress reporting in GitHub document sync

* Refactor tests for Confluence and Google Drive connectors to use a mock fetch function for document access

* change the doc_sync approach

* add static typing for ocument columns and where clause

* remove prefix logic in connector runner

* mypy fix

* code review changes

* mypy fix

* fix review comments

* add sort order

* Implement merge heads migration for Alembic and update Confluence and Google Drive test

* github unit tests fix

* delete merge head and rebase the docmetadata field migration

---------

Co-authored-by: Subash <subash@onyx.app>
2025-07-30 02:42:18 +00:00
Justin Tahara
56f16d107e feat(infra): Update helm version after new feature (#5120) 2025-07-29 16:31:35 -07:00
Justin Tahara
0157ae099a [Vespa] Update to optimized configuration pt.2 (#5113) 2025-07-28 20:42:31 +00:00
justin-tahara
565fb42457 Let's do this properly 2025-07-28 10:42:31 -07:00
justin-tahara
a50a8b4a12 [Vespa] Update to optimized configuration 2025-07-28 10:38:48 -07:00
Evan Lohn
4baf4e7d96 feat: pruning freq (#5097)
* pruning frequency increase

* add logs
2025-07-26 22:29:43 +00:00
Wenxi
8b7ab2eb66 onyx metadata minio fix + permissive unstructured fail (#5085) 2025-07-25 21:26:02 +00:00
Evan Lohn
1f75f3633e fix: sidebar ranges (#5084) 2025-07-25 19:46:47 +00:00
Evan Lohn
650884d76a fix: preserve error traces (#5083) 2025-07-25 18:56:11 +00:00
Wenxi
8722bdb414 typo (#5082) 2025-07-25 18:26:21 +00:00
Evan Lohn
71037678c3 attempt to fix parsing of tricky template files (#5080) 2025-07-25 02:18:35 +00:00
Chris Weaver
68de1015e1 feat: support aspx files (#5068)
* Support aspx files

* Add fetching of site pages

* Improve

* Small enhancement

* more improvements

* Improvements

* Fix tests
2025-07-24 19:19:24 -07:00
Evan Lohn
e2b3a6e144 fix: drive external links (#5079) 2025-07-24 17:42:12 -07:00
Evan Lohn
4f04b09efa add library to fall back to for tokenizing (#5078) 2025-07-24 11:15:07 -07:00
SubashMohan
5c4f44d258 fix: sharepoint lg files issue (#5065)
* add SharePoint file size threshold check

* Implement retry logic for SharePoint queries to handle rate limiting and server error

* mypy fix

* add content none check

* remove unreachable code from retry logic in sharepoint connector
2025-07-24 14:26:01 +00:00
Evan Lohn
19652ad60e attempt fix for broken excel files (#5071) 2025-07-24 01:21:13 +00:00
Evan Lohn
70c96b6ab3 fix: remove locks from indexing callback (#5070) 2025-07-23 23:05:35 +00:00
Raunak Bhagat
65076b916f refactor: Update location of sidebar (#5067)
* Use props instead of inline type def

* Add new AppProvider

* Remove unused component file

* Move `sessionSidebar` to be inside of `components` instead of `app/chat`

* Change name of `sessionSidebar` to `sidebar`

* Remove `AppModeProvider`

* Fix bug in how the cookies were set
2025-07-23 21:59:34 +00:00
PaulHLiatrio
06bc0e51db fix: adjust template variable from .Chart.AppVersion to .Values.global.version to match versioning pattern. (#5069) 2025-07-23 14:54:32 -07:00
Devin
508b456b40 fix: explicit api_server dependency on minio in docker compose files (#5066) 2025-07-23 13:37:42 -07:00
Evan Lohn
bf1e2a2661 feat: avoid full rerun (#5063)
* fix: remove extra group sync

* second extra task

* minor improvement for non-checkpointed connectors
2025-07-23 18:01:23 +00:00
Evan Lohn
991d5e4203 fix: regen api key (#5064) 2025-07-23 03:36:51 +00:00
Evan Lohn
d21f012b04 fix: remove extra group sync (#5061)
* fix: remove extra group sync

* second extra task
2025-07-22 23:24:42 +00:00
Wenxi
86b7beab01 fix: too many internet chunks (#5060)
* minor internet search env vars

* add limit to internet search chunks

* note

* nits
2025-07-22 23:11:10 +00:00
Evan Lohn
b4eaa81d8b handle empty doc batches (#5058) 2025-07-22 22:35:59 +00:00
Evan Lohn
ff2a4c8723 fix: time discrepancy (#5056)
* fix time discrepancy

* remove log

* remove log
2025-07-22 22:19:02 +00:00
Raunak Bhagat
51027fd259 fix: Make pr-labeler run on edits too 2025-07-22 15:04:37 -07:00
Raunak Bhagat
7e3fd2b12a refactor: Update the error message that is logged when PR title fails Conventional Commits regex (#5062) 2025-07-22 14:46:22 -07:00
Chris Weaver
d2fef6f0b7 Tiny launch.json template improvement (#5055) 2025-07-22 11:15:44 -07:00
Evan Lohn
bd06147d26 feat: connector indexing decoupling (#4893)
* WIP

* renamed and moved tasks (WIP)

* minio migration

* bug fixes and finally add document batch storage

* WIP: can suceed but status is error

* WIP

* import fixes

* working v1 of decoupled

* catastrophe handling

* refactor

* remove unused db session in prep for new approach

* renaming and docstrings (untested)

* renames

* WIP with no more indexing fences

* robustness improvements

* clean up rebase

* migration and salesforce rate limits

* minor tweaks

* test fix

* connector pausing behavior

* correct checkpoint resumption logic

* cleanups in docfetching

* add heartbeat file

* update template jsonc

* deployment fixes

* fix vespa httpx pool

* error handling

* cosmetic fixes

* dumb

* logging improvements and non checkpointed connector fixes

* didnt save

* misc fixes

* fix import

* fix deletion of old files

* add in attempt prefix

* fix attempt prefix

* tiny log improvement

* minor changes

* fixed resumption behavior

* passing int tests

* fix unit test

* fixed unit tests

* trying timeout bump to see if int tests pass

* trying timeout bump to see if int tests pass

* fix autodiscovery

* helm chart fixes

* helm and logging
2025-07-22 03:33:25 +00:00
Raunak Bhagat
1f3cc9ed6e Make from_.user optional (use "Unknown User") if not found (#5051) 2025-07-21 17:50:28 -07:00
Raunak Bhagat
6086d9e51a feat: Updated KG admin page (#5044)
* Update KG admin UI

* Styling changes

* More changes

* Make edits auto-save

* Add more stylings / transitions

* Fix opacity

* Separate out modal into new component

* Revert backend changes

* Update styling

* Add convenience / styling changes to date-picker

* More styling / functional updates to kg admin-page

* Avoid reducing opacity of active-toggle

* Update backend APIs for new KG admin page

* More updates of styling for kg-admin page

* Remove nullability

* Remove console log

* Remove unused imports

* Change type of `children` variable

* Update web/src/app/admin/kg/interfaces.ts

Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>

* Update web/src/components/CollapsibleCard.tsx

Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>

* Remove null

* Update web/src/components/CollapsibleCard.tsx

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Force non-null

* Fix failing test

---------

Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2025-07-21 15:37:27 -07:00
Raunak Bhagat
e0de24f64e Remove empty tooltip (#5050) 2025-07-21 12:45:48 -07:00
Rei Meguro
08b6b1f8b3 feat: Search and Answer Quality Test Script (#4974)
* aefads

* search quality tests improvement

Co-authored-by: wenxi-onyx <wenxi@onyx.app>

* nits

* refactor: config refactor

* document context + skip genai fix

* feat: answer eval

* more error messages

* mypy ragas

* mypy

* small fixes

* feat: more metrics

* fix

* feat: grab content

* typing

* feat: lazy updates

* mypy

* all at front

* feat: answer correctness

* use api key so it works with auth enabled

* update readme

* feat: auto add path

* feat: rate limit

* fix: readme + remove rerank all

* fix: raise exception immediately

* docs: improved clarity

* feat: federated handling

* fix: mypy

* nits

---------

Co-authored-by: wenxi-onyx <wenxi@onyx.app>
2025-07-19 01:51:51 +00:00
joachim-danswer
afed1a4b37 feat: KG improvements (#5048)
* improvements

* drop views if SQL fails

* mypy fix
2025-07-18 16:15:11 -07:00
Chris Weaver
bca18cacdf fix: improve assistant fetching efficiency (#5047)
* Improve assistant fetching efficiency

* More fix

* Fix weird build stuff

* Improve
2025-07-18 14:16:10 -07:00
Chris Weaver
335db91803 fix: improve check for indexing status (#5042)
* Improve check_for_indexing + check_for_vespa_sync_task

* Remove unused

* Fix

* Simplify query

* Add more logging

* Address bot comments

* Increase # of tasks generated since we're not going cc-pair by cc-pair

* Only index 50 user files at a time
2025-07-17 23:52:51 -07:00
Chris Weaver
67c488ff1f Improve support for non-default postgres schemas (#5046) 2025-07-17 23:51:39 -07:00
Wenxi
deb7f13962 remove chat session necessity from send message simple api (#5040) 2025-07-17 23:23:46 +00:00
Raunak Bhagat
e2d3d65c60 fix: Move around group-sync tests (since they require docker services to be running) (#5041)
* Move around tests

* Add missing fixtures + change directory structure up some more

* Add env variables
2025-07-17 22:41:31 +00:00
Raunak Bhagat
b78a6834f5 fix: Have document show up before message starts streaming back (#5006)
* Have document show up before message starts streaming back

* Add docs
2025-07-17 10:17:57 -07:00
Raunak Bhagat
4abe90aa2c fix: Fix Confluence pagination (#5035)
* Re-implement pagination

* Add note

* Fix invalid integration test configs

* Fix other failing test

* Edit failing test

* Revert test

* Revert pagination size

* Add comment on yielding style

* Use fixture instead of manually initializing sql-engine

* Fix failing tests

* Move code back and copy-paste
2025-07-17 14:02:29 +00:00
Raunak Bhagat
de9568844b Add PR labeller job (#4611) 2025-07-16 18:28:18 -07:00
Evan Lohn
34268f9806 fix bug in index swap (#5036) 2025-07-16 23:09:17 +00:00
Chris Weaver
ed75678837 Add suggested helm resource limits (#5032)
* Add resource suggestions for helm

* Adjust README

* fix

* fix lint
2025-07-15 15:52:16 -07:00
Chris Weaver
3bb58a3dd3 Persona simplification r2 (#5031)
* Revert "Revert "Reduce amount of stuff we fetch on `/persona` (#4988)" (#5024)"

This reverts commit f7ed7cd3cd.

* Enhancements / fix re-render

* re-arrange

* greptile
2025-07-15 14:51:40 -07:00
Chris Weaver
4b02feef31 Add option to disable my documents (#5020)
* Add option to disable my documents

* cleanup
2025-07-14 23:16:14 -07:00
Chris Weaver
6a4d49f02e More pruning logging (#5027) 2025-07-14 12:55:12 -07:00
Chris Weaver
d1736187d3 Fix full tenant sync (#5026) 2025-07-14 10:56:40 -07:00
Wenxi
0e79b96091 Feature/revised internet search (#4994)
* remove unused pruning config

* add env vars

* internet search date time toggle

* revised internet search supporting multiple providers

* env var

* simplify retries and fix mypy issues

* greptile nits

* more mypy

* please mypy

* mypy final straw

* cursor vs. mypy

* simplify fields from provider results

* type-safe prompt, enum nit, provider enums, indexingdoc processing change

---------

Co-authored-by: Wenxi Onyx <wenxi-onyx@Wenxis-MacBook-Pro.local>
2025-07-14 10:24:03 -07:00
Raunak Bhagat
ae302d473d Fix imap tests 2025-07-14 09:50:33 -07:00
Raunak Bhagat
feca4fda78 feat: Add frontend for email connector (#5008)
* Add basic structure for frontend email connector

* Update names of credentials-json keys

* Fix up configurations workflow

* Edit logic on how `mail_client` is used

- imaplib.IMAP4_SSL is supposed to be treated as an ephemeral object

* Edit helper name and add docs

* Fix invalid mailbox selection error

* Implement greptile suggestions

* Make recipients optional and add sender to primary-owners

* Add sender to external-access too; perform dedupe-ing of emails

* Simplify logic
2025-07-14 09:43:36 -07:00
Chris Weaver
f7ed7cd3cd Revert "Reduce amount of stuff we fetch on /persona (#4988)" (#5024)
This reverts commit adf48de652.
2025-07-14 09:20:50 -07:00
Chris Weaver
8377ab3ef2 Send over less data for document sets (#5018)
* Send over less data for document sets

* Fix type errors

* Fix tests

* Fixes

* Don't change packages
2025-07-13 22:47:05 +00:00
Chris Weaver
95c23bf870 Add full sync endpoint (#5019)
* Add full sync endpoint

* Update backend/ee/onyx/server/tenants/billing_api.py

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Update backend/ee/onyx/server/tenants/billing_api.py

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* fix

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2025-07-13 13:59:19 -07:00
Chris Weaver
e49fb8f56d Fix pruning (#5017)
* Use better last_pruned time for never pruned connectors

* improved pruning req / refresh freq selections

* Small tweak

* Update web/src/lib/connectors/connectors.tsx

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2025-07-12 14:46:00 -07:00
Chris Weaver
adf48de652 Reduce amount of stuff we fetch on /persona (#4988)
* claude stuff

* Send over less Assistant data

* more

* Fix build

* Fix mypy

* fix

* small tweak

* Address EL cmments

* fix

* Fix build
2025-07-12 14:15:31 -07:00
Wenxi Onyx
bca2500438 personas no longer overwrite when same name 2025-07-12 10:57:01 -07:00
Raunak Bhagat
89f925662f feat: Add ability to specify vertex-ai model location (#4955)
* Make constant a global

* Add ability to specify vertex location

* Add period

* Add a hardcoding path to the frontend

* Add docs

* Add default value to `CustomConfigKey`

* Consume default value from custom-config-key on frontend

* Use markdown renderer instead

* Update description
2025-07-11 16:16:12 -07:00
Chris Weaver
b64c6d5d40 Skip federated connectors when document sets are specified (#5015) 2025-07-11 15:49:13 -07:00
Raunak Bhagat
36c63950a6 fix: More small IMAP backend fixes (#5014)
* Make recipients an optional header and add IMAP to recognized connectors

* Add sender to external-access; perform dedupe-ing of emails
2025-07-11 20:06:28 +00:00
Raunak Bhagat
3f31340e6f feat: Add support for Confluence Macros (#5001)
* Remove macro stylings from HTML tree

* Add params

* Handle multiple cases of `ac:structured-macro` being found.

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2025-07-11 00:34:49 +00:00
Raunak Bhagat
6ac2258c2e Fixes for imap backend (#5011) 2025-07-10 23:58:28 +00:00
Weves
b4d3b43e8a Add more error handling for drive group sync 2025-07-10 18:33:43 -07:00
Rei Meguro
ca281b71e3 add missing slack scope 2025-07-10 17:37:57 -07:00
Wenxi
9bd5a1de7a check file size first and clarify processing logic (#4985)
* check file size first and clarify processing logic

* basic gdrive extraction clariy

* typo

---------

Co-authored-by: Wenxi Onyx <wenxi-onyx@Wenxis-MacBook-Pro.local>
2025-07-10 00:48:36 +00:00
Wenxi Onyx
d3c5a4fba0 add docx fallback 2025-07-09 17:46:15 -07:00
Chris Weaver
f50006ee63 Stop fetching channel info to make pages load faster (#5005) 2025-07-09 16:45:45 -07:00
Evan Lohn
e0092024af add minIO to README 2025-07-09 16:36:18 -07:00
Evan Lohn
675ef524b0 add minio to contributing instructions 2025-07-09 16:33:56 -07:00
Evan Lohn
240367c775 skip id migration based on env var 2025-07-09 13:37:54 -07:00
Chris Weaver
f0ed063860 Allow curators to create public connectors / document sets (#4972)
* Allow curators to create public connectors / document sets

* Address EL comments
2025-07-09 11:38:56 -07:00
Rei Meguro
bcf0ef0c87 feat: original query + better slack expansion 2025-07-09 09:23:03 -07:00
Rei Meguro
0c7a245a46 Revert "feat: original query + better slack expansion"
This reverts commit 583d82433a.
2025-07-09 20:15:15 +09:00
Rei Meguro
583d82433a feat: original query + better slack expansion 2025-07-09 20:11:24 +09:00
Chris Weaver
391e710b6e Slack federated search ux (#4969)
* slack_search.py

* rem

* fix: get elements

* feat: better stack message processing

* fix: mypy

* fix: url parsing

* refactor: federated search

* feat: proper chunking + source filters

* highlighting + source check

* feat: forced section insertion

* feat: multi slack api queries

* slack query expansion

* feat: max slack queries env

* limit slack search to avoid overloading the search

* Initial draft

* more

* simpify

* Improve modal

* Fix oauth flow

* Fully working versino

* More nicities

* Improved cascade delete

* document set for fed connector UI

* Fix source filters + improve document set selection

* Improve callback modal

* fix: logging error + showing connectors in admin page user settings

* better log

* Fix mypy

* small rei comment

* Fix pydantic

* Improvements to modals

* feat: distributed pruning

* random fix

* greptile

* Encrypt token

* respect source filters + revert llm pruning ordering

* greptile nit

* feat: thread as context in slack search

* feat: slack doc ordering

* small improvements

* rebase

* Small improvements

* Fix web build

* try fix build

* Move to seaprate model file

* Use default_factory

* remove unused model

---------

Co-authored-by: Rei Meguro <36625832+Orbital-Web@users.noreply.github.com>
2025-07-08 21:35:51 -07:00
Raunak Bhagat
004e56a91b feat: IMAP connector (#4987)
* Implement fetching; still need to work on document parsing

* Add basic skeleton of parsing email bodies

* Add id field

* Add email body parsing

* Implement checkpointed imap-connector

* Add testing logic for basic iteration

* Add logic to get different header if "to" isn't present

- possible in mailing-list workflows

* Add ability to index specific mailboxes

* Add breaking when indexing has been fully exhausted

* Sanitize all mailbox names + add space between stripped strings after parsing

* Add multi-recipient parsing

* Change around semantic-identifier and title

* Add imap tests

* Add recipients and content assertions to tests

* Add envvars to github actions workflow file

* Remove encoding header

* Update logic to not immediately establish connection upon init of `ImapConnector`

* Add start and end datetime filtering + edit when connection is established / how login is done

* Remove content-type header

* Add note about guards

* Change default parameters to be `None` instead of `[]`

* Address comment on PR

* Implement more PR suggestions

* More PR suggestions

* Implement more PR suggestions

* Change up login/logout flow (PR suggestion)

* Move port number to be envvar

* Make globals variants in enum instead (PR suggestion)

* Fix more documentation related suggestions on PR

* Have the imap connector implement `CheckpointedConnectorWithPermSync` instead

* Add helper for loading all docs with permission syncing
2025-07-08 23:58:22 +00:00
Evan Lohn
103300798f Bugfix/drive doc ids3 (#4998)
* fix migration

* fix migration2

* cursor based pages

* correct vespa URL

* fix visit api index name

* use correct endpoint and query
2025-07-07 18:23:00 +00:00
Evan Lohn
8349d6f0ea Bugfix/drive doc ids (#4990)
* fixed id extraction in drive connector

* WIP migration

* full migration script

* migration works single tenant without duplicates

* tested single tenant with duplicate docs

* migrations and frontend

* tested mutlitenant

* fix connector tests

* make tests pass
2025-07-06 01:59:12 +00:00
Emerson Gomes
cd63bf6da9 Re-adding .epub file support (#4989)
.epub files apparently were forgotten and were not allowed for upload in the frontend.
2025-07-05 07:48:55 -07:00
Rei Meguro
5f03e85195 fireflies metadata update (#4993)
* fireflies metadata

* str
2025-07-04 18:39:41 -07:00
Raunak Bhagat
cbdbfcab5e fix: Fix bug with incorrect model icon being shown (#4986)
* Fix bug with incorrect model icon being shown

* Update web/src/app/chat/input/LLMPopover.tsx

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Update web/src/app/chat/input/LLMPopover.tsx

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Update web/src/app/chat/input/LLMPopover.tsx

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Update web/src/app/chat/input/LLMPopover.tsx

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Add visibility to filtering

* Update the model names which are shown in the popup

* Fix incorrect llm updating bug

* Fix bug in which the provider name would be used instead

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2025-07-04 01:39:50 +00:00
SubashMohan
6918611287 remove check for folder assistant before uploading (#4975)
Co-authored-by: Subash <subash@onyx.app>
2025-07-03 09:25:03 -07:00
Chris Weaver
b0639add8f Fix migration (#4982) 2025-07-03 09:18:57 -07:00
Evan Lohn
7af10308d7 drive service account shared fixes (#4977)
* drive service account shared fixes

* oops

* ily greptile

* scrollable index attempt errors

* tentatively correct index errors page, needs testing

* mypy

* black

* better bounds in practice

* remove random failures

* remove console log

* CW
2025-07-02 16:56:32 -07:00
Rei Meguro
5e14f23507 mypy fix 2025-07-01 23:00:33 -07:00
Raunak Bhagat
0bf3a5c609 Add type ignore for dynamic sqlalchemy class (#4979) 2025-07-01 18:14:35 -07:00
Emerson Gomes
82724826ce Remove hardcoded image extraction flag for PDFs
PDFs currently always have their images extracted.
This will make use of the "Enable Image Extraction and Analysis" workspace configuration instead.
2025-07-01 13:57:36 -07:00
Wenxi
f9e061926a account for category prefix added by user (#4976)
Co-authored-by: Wenxi Onyx <wenxi-onyx@Wenxis-MacBook-Pro.local>
2025-07-01 10:39:46 -07:00
Chris Weaver
8afd07ff7a Small gdrive perm sync enhancement (#4973)
* Small gdrive perm sync enhancement

* Small enhancement
2025-07-01 09:33:45 -07:00
Evan Lohn
6523a38255 search speedup (#4971) 2025-07-01 01:41:27 +00:00
Yuhong Sun
264878a1c9 Onyx Metadata Header for File Connector (#4968) 2025-06-29 16:09:06 -07:00
Weves
e480946f8a Reduce frequency of heavy checks on primary for cloud 2025-06-28 17:56:34 -07:00
Evan Lohn
be25b1efbd perm sync validation framework (#4958)
* perm synce validation framework

* frontend fixes

* validate perm sync when getting runner

* attempt to fix integration tests

* added new file

* oops

* skipping salesforce test due to creds

* add todo
2025-06-28 19:57:54 +00:00
Chris Weaver
204493439b Move onyx_list_tenants.py to make sure it's in the image (#4966)
* Move onyx_list_tenants.py to make sure it's in the image

* Improve
2025-06-28 13:18:14 -07:00
Weves
106c685afb Remove CONCURRENTLY from migrations 2025-06-28 11:59:59 -07:00
Raunak Bhagat
809122fec3 fix: Fix bug in which emails would be fetched during initial indexing (#4959)
* Add new convenience method

* Fix bug in which emails would be fetched for initial indexing

* Improve tests for MS Teams connector

* Fix test_gdrive_perm_sync_with_real_data patching

* Protect against incorrect truthiness

---------

Co-authored-by: Weves <chrisweaver101@gmail.com>
2025-06-27 22:05:50 -07:00
Chris Weaver
c8741d8e9c Improve mt migration process (#4960)
* Improve MT migration process

* improve MT migrations

* Improve parallel migration

* Add additional options to env.py

* Improve script

* Remove script

* Simplify

* Address greptile comment

* Fix st migration

* fix run_alembic_migrations
2025-06-27 17:31:22 -07:00
Weves
885f01e6a7 Fix test_gdrive_perm_sync_with_real_data patching 2025-06-27 16:34:37 -07:00
Rei Meguro
3180a13cf1 source fix (#4956) 2025-06-27 13:20:42 -07:00
Rei Meguro
630ac31355 KG vespa error handling + separating relationship transfer & vespa updates (#4954)
* feat: move vespa at end in try block

* simplify query

* mypy

* added order by just in case for consistent pagination

* liveness probe

* kg_p check for both extraction and clustering

* fix: better vespa logging
2025-06-26 22:05:57 -07:00
Chris Weaver
80de62f47d Improve drive group sync (#4952)
* Improve drive group sync

* Improve group syncing approach

* Fix github action

* Improve tests

* address greptile
2025-06-26 20:14:35 -07:00
Raunak Bhagat
c75d42aa99 perf: Improve performance of MS Teams permission-syncing logic (#4953)
* Add function stubs for Teams

* Implement more boilerplate code

* Change structure of helper functions

* Implement teams perms for the initial index

* Make private functions start with underscore

* Implement slim_doc retrieval and fix up doc_sync

* Simplify how doc-sync is done

* Refactor jira doc-sync

* Make locally used function start with an underscore

* Update backend/ee/onyx/configs/app_configs.py

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Add docstring to helper function

* Update tests

* Add an expected failure

* Address comment on PR

* Skip expert-info if user does not have a display-name

* Add doc comments

* Fix error in generic_doc_sync

* Move callback invocation to earlier in the loop

* Update tests to include proper list of user emails

* Update logic to grab user emails as well

* Only fetch expert-info if channel is not public

* Pull expert-info creation outside of loop

* Remove unnecessary call to `iter`

* Switch from `dataclass` to `BaseModel`

* Simplify boolean logic

* Simplify logic for determining if channel is public

* Remove unnecessary channel membership-type

* Add log-warns

* Only perform another API fetch if email is not present

* Address comments on PR

* Add message on assertion failure

* Address typo

* Make exception message more descriptive

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2025-06-27 01:41:01 +00:00
Raunak Bhagat
e1766bca55 feat: MS Teams permission syncing (#4934)
* Add function stubs for Teams

* Implement more boilerplate code

* Change structure of helper functions

* Implement teams perms for the initial index

* Make private functions start with underscore

* Implement slim_doc retrieval and fix up doc_sync

* Simplify how doc-sync is done

* Refactor jira doc-sync

* Make locally used function start with an underscore

* Update backend/ee/onyx/configs/app_configs.py

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Add docstring to helper function

* Update tests

* Add an expected failure

* Address comment on PR

* Skip expert-info if user does not have a display-name

* Add doc comments

* Fix error in generic_doc_sync

* Move callback invocation to earlier in the loop

* Update tests to include proper list of user emails

* Update logic to grab user emails as well

* Only fetch expert-info if channel is not public

* Pull expert-info creation outside of loop

* Remove unnecessary call to `iter`

* Switch from `dataclass` to `BaseModel`

* Simplify boolean logic

* Simplify logic for determining if channel is public

* Remove unnecessary channel membership-type

* Add log-warns

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2025-06-26 22:36:09 +00:00
Rei Meguro
211102f5f0 kg cleanup + reintroducing deep extraction & classification (#4949)
* kg cleanup

* more cleanup

* fix: copy over _get_classification_content_from_call_chunks for content formatting

* added back deep extraction logic

* feat: making deep extraction and clustering work

* nit
2025-06-26 14:46:50 -07:00
Weves
c46cc4666f Fix query history 2 2025-06-25 21:35:53 -07:00
joachim-danswer
0b2536b82b expand definition of public 2025-06-25 20:01:09 -07:00
Rei Meguro
600a86f11d Add creator to linear (#4948)
* add creator to linear

* fix: mypy
2025-06-25 18:19:36 -07:00
Rei Meguro
4d97a03935 KG Attribute Overhaul + Processing Tests (#4933)
* feat: extract email

* title

* feat: new type definition

* working

* test and bugfix

* fix: set docid

* fix: mypy

* feat: show implied entities too

* fix import + migration

* fix: added random delay for vespa

* fix: mypy

* mypy again...

* fix: nit

* fix: mypy

* SOLUTION!

* fix

* cleanup

* fix: transfer

* nit

---------

Co-authored-by: joachim-danswer <joachim@danswer.ai>
2025-06-25 05:06:12 +00:00
Raunak Bhagat
5d7169f244 Implement JIRA permission syncing (#4899) 2025-06-24 23:59:26 +00:00
Wenxi
df9329009c curator bug fixes (#4941)
* curator bug fixes

* basic users default to my files

* fix admin param + move delete button

* fix trashcan admin only

---------

Co-authored-by: Wenxi Onyx <wenxi-onyx@Wenxis-MacBook-Pro.local>
2025-06-24 21:33:47 +00:00
Arun Philip
e74a0398dc Update Docker Compose restart policy to unless-stopped
Changed the restart policy to unless-stopped to ensure containers
automatically restart after failures or reboots but allow manual stop
without immediate restart.

This is preferable over always because it prevents containers from
restarting automatically after a manual stop, enabling controlled
shutdowns and maintenance without unintended restarts.
2025-06-24 13:27:50 -07:00
SubashMohan
94c5822cb7 Add MinIO configuration to env template and update restart script for MinIO container (#4944)
Co-authored-by: Subash <subash@onyx.app>
2025-06-24 17:21:16 +00:00
joachim-danswer
dedac55098 KG extraction without vespa queries (#4940)
* no vespa in extraction

* prompt/flow improvements

* EL comments

* nit

* Updated get_session_with_current_tenant import

---------

Co-authored-by: Rei Meguro <36625832+Orbital-Web@users.noreply.github.com>
2025-06-24 15:02:50 +00:00
Chris Weaver
2bbab5cefe Handle very long file names (#4939)
* Handle very long file names

* Add logging

* Enhancements

* EL comments
2025-06-23 19:22:02 -07:00
joachim-danswer
4bef718fad fix kg db proxy (#4942) 2025-06-23 18:27:59 -07:00
Chris Weaver
e7376e9dc2 Add support for db proxy (#4932)
* Split up engine file

* Switch to schema_translate_map

* Fix mass serach/replace

* Remove unused

* Fix mypy

* Fix

* Add back __init__.py

* kg fix for new session management

Adding "<tenant_id>" in front of all views.

* additional kg fix

* better handling

* improve naming

---------

Co-authored-by: joachim-danswer <joachim@danswer.ai>
2025-06-23 17:19:07 -07:00
Raunak Bhagat
8d5136fe8b Fix error in which curator sidebars were hitting kg-exposed endpoint 2025-06-23 17:07:11 -07:00
joachim-danswer
3272050975 docker dev and prod template (#4936)
* docker dev and prod template

* more dev files
2025-06-23 21:43:42 +00:00
Weves
1960714042 Fix query history 2025-06-23 14:32:14 -07:00
Weves
5bddb2632e Fix parallel tool calls 2025-06-23 09:50:44 -07:00
Raunak Bhagat
5cd055dab8 Add minor type-checking fixes (#4916) 2025-06-23 13:34:40 +00:00
Raunak Bhagat
fa32b7f21e Update ruff and remove ruff-formating from pr checks (#4914) 2025-06-23 05:34:34 -07:00
Rei Meguro
37f7227000 fix: too many vespa request fix (#4931) 2025-06-22 14:31:42 -07:00
Chris Weaver
c1f9a9d122 Hubspot connector enhancements (#4927)
* Enhance hubspot connector

* Add companies, deals, and tickets

* improve typing

* Add HUBSPOT_ACCESS_TOKEN to connector tests

* Fix prettier

* Fix mypy

* Address JR comments
2025-06-22 13:54:04 -07:00
Rei Meguro
045b7cc7e2 feat: comma separated citations (#4923)
* feat: comam separated citations

* nit

* fix

* fix: comment
2025-06-21 22:51:32 +00:00
joachim-danswer
970e07a93b Forcing vespa language 2025-06-21 16:12:13 -07:00
joachim-danswer
d463a3f213 KG Updates (#4925)
* updates

 - no classification if deep extraction is False
 - separate names for views in LLM generation
 - better prompts
 - any relationship type provided to LLM that relates to identified entities

* CW feedback/comment update
2025-06-21 20:16:39 +00:00
Wenxi
4ba44c5e48 Fix no subject gmail docs (#4922)
Co-authored-by: Wenxi Onyx <wenxi-onyx@Wenxis-MacBook-Pro.local>
2025-06-20 23:22:49 +00:00
Chris Weaver
6f8176092e S3 like file store (#4897)
* Move to an S3-like file store

* Add non-mocked test

* Add S3 tests

* Improve migration / add auto-running tests

* Refactor

* Fix mypy

* Small fixes

* Improve migration to handle downgrades

* fix file store tests

* Fix file store tests again

* Fix file store tests again

* Fix mypy

* Fix default values

* Add MinIO to other compose files

* Working helm w/ minio

* Fix test

* Address greptile comments

* Harden migration

* Fix README

* Fix it

* Address more greptile comments

* Fix it

* Rebase

* Handle multi-tenant case

* Fix mypy

* Fix test

* fix test

* Improve migration

* Fix test
2025-06-20 14:22:05 -07:00
Wenxi
198ec417ba fix gemini model names + add vertex claude sonnet 4 (#4920)
* fix gemini model names + add vertex claude sonnet 4

* few more models

---------

Co-authored-by: Wenxi Onyx <wenxi-onyx@Wenxis-MacBook-Pro.local>
2025-06-20 18:18:36 +00:00
Wenxi
fbdf7798cf GCS metadata processing (#4879)
* GCS metadata processing

* Unprocessable files should still be indexed to be searched by title

* Moved re-used logic to utils. Combined file metadata PR with GCS metadata changes

* Added OnyxMetadata type, adjusted timestamp naming consistency, clarified timestamp logic

* Use BaseModel

---------

Co-authored-by: Wenxi Onyx <wenxi-onyx@Wenxis-MacBook-Pro.local>
2025-06-20 16:11:38 +00:00
Weves
7bd9c856aa Really add psql to api-server 2025-06-19 18:50:17 -07:00
Rei Meguro
948c719d73 fix (#4915) 2025-06-19 23:06:34 +00:00
Weves
42572479cb Don't load prompts if not necessary 2025-06-19 16:56:33 -07:00
Suvodhoy Sinha
accd363d3f fix(discourse-connector): handle redirect issue with categoryId rewriting page number (#4780) 2025-06-19 16:21:09 -07:00
Rei Meguro
8cf754a8b6 Kg config refactor (#4902)
* refactor: kg_config

* feat: reworked migrations

* nit

* fix: test

* rebase alembic migration

* feat: bypass cache

* fix: mypy

* fix: processing when kg disabled

* feat: celery rework

* fix: grammar

* fix: only do kg commands for KG Beta

* fix: keep config on downgrade

* fix: nit
2025-06-19 20:25:56 +00:00
Raunak Bhagat
bf79220ac0 build: Remove ruff (#4912)
* Update ruff version

* Update format command

* Update pyproject.toml

* Remove line-length

* Remove ruff in general
2025-06-18 19:12:59 -07:00
Weves
4c9dc14e65 ADd slackbot to helm 2025-06-18 11:04:25 -07:00
Weves
f8621f7ea9 Add psql to backend containers 2025-06-17 21:15:40 -07:00
trial-danswer
e0e08427b9 Feature/connector creation feedback (#4644)
* Loading on connector creation

* Dangling connectors cleaned up. Fixed loading modal.

* Dangling connector deletion happens immediately at timeout. Swapped loading modal to spinner for consistency

* Removed redundant delete func
2025-06-17 18:32:37 -07:00
Evan Lohn
169df994da tiny connector logging tweaks (#4908) 2025-06-17 22:13:40 +00:00
Evan Lohn
d83eaf2efb fail loudly when error should be propagated (#4903) 2025-06-17 22:12:19 +00:00
joachim-danswer
4e1e30f751 KG - Entity-Only Path (#4898)
* Create Entity-Only path for simple entity-focussed queries. Plus
other fixes.

* fix: use env var

* mypy fix

* fix: mypy

---------

Co-authored-by: Rei Meguro <36625832+Orbital-Web@users.noreply.github.com>
2025-06-17 22:10:29 +00:00
Raunak Bhagat
561f8c9c53 fix: Implement time-filtering for MS Teams document fetching (#4906)
* Add delta-time filtering

* Remove unused variables

* Update retry logic

* Remove variable change (inside of overriden function)

* Add back helpful variables

* Add missing assignment to variable

* Reorder classes in order to avoid using quotes

* Compress f-strings

* Address PR comment

* Implement pagination
2025-06-17 21:06:04 +00:00
SubashMohan
f625a4d0a7 feat: Add support for Assume Role authentication in S3 (#4907)
Co-authored-by: Subash <subash@onyx.app>
2025-06-17 20:56:44 +00:00
rkuo-danswer
746d4b6d3c Bugfix/salesforce correctness 3 (#4598)
* refactor salesforce sqlite db access

* more refactoring

* refactor again

* refactor again

* rename object

* add finalizer to ensure db connection is always closed

* avoid unnecessarily nesting connections and commit regularly when possible

* remove db usage from csv download

* dead code

* hide deprecation warning in ddtrace

* remove unused param

* local testing WIP

* stuff for pytest-dotenv

* autodetect filter types instead of assuming last modified always works (it doesn't)
Move filtering responsibility up instead of making utility calls excessively stateful

* fix how changed parent id's are yielded

* remove slow part of test

* clean up comments

* small refactor

* more refactor

* add normalize test

* checkpoint and comments

* add helper function

* fix gitignore

* add gitignore

* update pyproject

* delta updates

* remove comments

* fix time import

* fix set init

* add salesforce env vars

* cleanup

* more cleanup

* filtered item is unbound here

* typo

* fix suffix check

* fix empty type query

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-06-17 18:39:22 +00:00
Evan Lohn
fdd48c6588 fix db connection assertion (#4905) 2025-06-17 03:42:55 +00:00
Rei Meguro
23a04f7b9c Kg Subtype Rework (#4892)
* feat: vespa schema update

* fix: vespa multiple entities/relations yql logic

* fix: mypy

* fix: comments

* fix: kgchunkformat

* fix: reset vespa fix

* feat: vespa schema update

* feat: modify entity type and attribute value extraction

* feat: modify entity type and attribute value extraction

* feat: removed entity class and subtype from db

* slightly formatting

* feat: subtype narrowed normalization

* fix: mypy

* nits

* fix: rebase error fix

* fix: null handling

* rename for clarity

* fix: reverse order downgrade

* fix: nit

* rebase leftovers
2025-06-17 01:17:35 +00:00
Chris Weaver
b7b0dde7aa Remove non-helm kubernetes deployment option (#4904)
* Remove non-helm kubernetes deployment option

* Improve Vespa default set up

* Make nginx LoadBalancer

* Add version in values.yaml

* Fix lint

* Fix typo
2025-06-16 18:27:23 -07:00
Wenxi
c40b78c7e9 Bugfix/honor disable default slack config (#4891)
* Honor disable default config & improve UI clarity

* Disable default will also disable DMs

---------

Co-authored-by: Wenxi Onyx <wenxi-onyx@Wenxis-MacBook-Pro.local>
2025-06-16 22:24:51 +00:00
Raunak Bhagat
33c0133cc7 feat: Knowledge graph full-stack implementation (#4790)
* db setup

* transfer 1 - incomplete

* more adjustments

* relationship table + query update

* temp view creation

* restructuring

* nits

* updates

* separate read_only engine

* extraction revamp

* focus on metadata relatonships 1

* dev

* migration downgrade fix

* rebase migration change

* a3+

* progress

* base

* new extraction

* progress

* fixed KG extraction

* nits

* updates

* simplifications & cleanup

* fixes

* updates

* more feature flag checks

* fixes

* extraction process fix

* read-only user creation as part of setup

* fix for missing entity attributes

* kg read-only user creation as part of migration

* typo

* EL initial comments

* initial Account/SF Connector chnges

* SF Connector update

 - include account information

* base w/ salesforce

* evan updates + quite a bit more

* kg-filtered search

* EL changes pt 2

* migrations and env vars

* quick migration fix

* migration update

* post_rebase fixes

* mypy fixes

* test fixes

* test fix

* test fix

* read_only pool + misc

* nf

* env vars

* test improvements

* salesforce fix

* test update

* small changes

* small adjustments

* SF Connector fix & kg_stage removal for one table

* mypy fix

* small fixes

* EL + RK (pt 1) comments

* nit

* setting updated

* Salesforce test update

* EL comments

* read-only user replacement & cleanup

* SQL View fix

* converting entity type-name separators

* sql view group ownership

* view fix

* SQL tweak

* dealing with docs that were skipped by indexing

* increased error handling

* more error handling

* Output formatting fix

* kg-incremental-reindexing

* 0-doc found improvement

* celery

* migration correction

* timeout adjustments

* nit

* Updated migration

* Entity Normalization for KG Dev 1 (#4746)

* feat: trigrams column

* fix: reranking and db

* feat: v1

* fix: convert to orm

* feat: parallel

* fix: default to id_name

* fix: renamed semantic_id and semantic_id_trigrams

* fix: scalar subquery

* fix: tuning + redundancy

* fix: threshold

* fix: typo

* fix: shorten names

* wip

* fix: reverted

* feat: config

* feat: works but it was dumb

* feat: clustering works

* fix: mypy

* normalization <-> language awareness for SQL generation

* small type fixes

---------

Co-authored-by: joachim-danswer <joachim@danswer.ai>

* mypy

* typo and dead code

* kg_time_fencing

* feat: remove temp views on migration downgrade

* remove functions and triggers for now

* rebase adjustments

* EL code review results

* quick fix + trigger/funcs for single tenant

* fix: typo, mypy, dead code

* fix: autoflake

* small updatesd

* nit

* fix: typo

* early + faster view creation

* Extension creation in MT migration

* nit changes to default ETs

* Incremental Clustering and KG Refactor V1 (#4784)

Optimized/restructured incremental clustering. New pipeline actually that moves vespa updates to clustering.
Also, celery configuration has been updated.
---------

Co-authored-by: joachim-danswer <joachim@danswer.ai>

* Move file

* Fix all prior imports

* Clean sidebar items logic; add kg page

* Add kg_processing celery background task

* prompt tweak & ET extraction reset

* more general hierarchical structure

* feat: better vespa reset logic

* Add basic knowledge graph configuration

* Add configurations for KG entity-type

* prompt optimization and entity replacemants

* small prompt changes

* Implement backend APIs

* KG Refactor V2 (#4814)

Clustering & Extraction improvements & various nits 

Co-authored-by: joachim-danswer <joachim@danswer.ai>

* add connector-level coverage days

* Update APIs to be more frontend ergonomic

* Add simple test

* Make config optional in test

* fix: nit

* initial  EL responses

* refactor: helper functions for formatting

* fix: more helper fns & comments

* fix: comment code that's been implemented elsewhere

* Add entity-types APIs

* Hook up frontend to backend

* Finish hookup up entity-types to backend

* Update ordering of entity-types and fix form submitting

* Add backend API to get kg-exposed

* Add kg-exposed to sidebar

* Fix path

* Use existing values, even if kg-enabled is false

* Update what initial values are used

* Add skeleton for kg resetting

* Add return type

* Add default entity-type population when fetching entity-types

* Remove circular deps

* Minor fixes to logic

* Edit logic for default entity-types population

* Add re-index API + skeleton

* Update verbiage for KG

* Remove templatization in favour of function

* Address comments on PR

* Pull call out into its own binding

* Remove re-index API and revert implement of reset back to stub

* Fix circular import error

* Remove 'reindex' button

* Edit how the empty vendor name list is handled

* Edit how exposed is processed

* Redirect if navigated to `/admin/kg` and kg is not exposed

* Address comments on PR

* reset + entity type table display & updating updates

* Update fetching entity-types

* Make KG entity types refresh when reset

* Edit verbiage of reset button

* Update package-lock.json file

* Protect against overflowing

* Re-implement refreshing table after reset

* Edit message when nothing is shown.

* UI enhancements

* small fixes

* remove form validation?

* fix

* nit

* nit

* nit

* nit

* fix configure max coverage days

* EL comments for JR

* refactor: moved functions where they belong to fix circular import

* feat: intuitive coverage days

* feat: intuitive coverage days

* fix: safe date picker

* fix: startdate

* evan fixes

* fix: evan comment on enable/disable

* fix: style

* fix: ui issues

* fix: ui issues for reset too

* fix: tests

* fix: kg entity is not enabled

* fix: entity type reload on enable

---------

Co-authored-by: joachim-danswer <joachim@danswer.ai>
Co-authored-by: Rei Meguro <36625832+Orbital-Web@users.noreply.github.com>
2025-06-16 15:51:11 +00:00
Shahar Mazor
cca5bc13dc Make password validation configurable (#4869) 2025-06-14 14:31:05 -07:00
Wenxi
d5ecaea8e7 new script for hard deleting sessions (#4883)
Co-authored-by: Wenxi Onyx <wenxi-onyx@Wenxis-MacBook-Pro.local>
2025-06-14 01:06:47 -07:00
joachim-danswer
b6d3c38ca9 Prep KG on-demand indexing through celery (#4874)
* filter updates

* nits

* nit

* moving to celery

* RK discussion updates

* fix of postgres reset logic

* greptile comments

* RK comments

* fix

* change num_chunks

* further hardening

* nit

* added logging

* fix: mypy and argument to function

* feat: log so we know when rs finishes

* nits

* nit

---------

Co-authored-by: Rei Meguro <36625832+Orbital-Web@users.noreply.github.com>
2025-06-13 18:00:02 +00:00
Rei Meguro
b5fc1b4323 fix kg (#4881) 2025-06-12 15:44:14 -07:00
rkuo-danswer
a1a9c42b0b bump disk size (#4882)
Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-06-12 20:19:49 +00:00
Raunak Bhagat
e689e143e5 cleanup: Edit logic for default entity-types population (#4876)
* Edit logic for default entity-types population

* Remove templatization in favour of function

* Address comments on PR

* Pull call out into its own binding

* Address comments on PR
2025-06-12 08:46:32 -07:00
joachim-danswer
a7a168d934 Dual search pipeline for non-tool-calling LLMs (#4872)
Added dual pipeline also for non-tool-calling LLMs. 
A helper function was created.
2025-06-11 17:43:44 -07:00
joachim-danswer
69f47fc3e3 kg_update (#4858)
Improving Vespa chunk retrieval

Co-authored-by: Weves <chrisweaver101@gmail.com>
2025-06-11 17:40:20 -07:00
Evan Lohn
8a87140b4f JR comments 2025-06-11 15:51:11 -07:00
Evan Lohn
53db0ddc4d skip large empty excel files 2025-06-11 15:51:11 -07:00
Rei Meguro
087085403f fix: kg answer streaming (#4877)
* fix: answer streaming

* fix: env vars

* fix: remove duplicate
2025-06-11 15:47:32 -07:00
Chris Weaver
c040b1cb47 Switch to chonkie from llamaindex chunker (#4838)
* Switch to chonkie from llamaindex chunker

* Remove un-intended changes

* Order requirements

* Upgrade chonkie version
2025-06-11 14:12:52 -07:00
Raunak Bhagat
1f4d0716b9 Remove invocation of parallel_yield (was causing problems) 2025-06-11 12:19:05 -07:00
SubashMohan
aa4993873f feat: add configurable image model name and update dependencies (#4873)
Co-authored-by: Subash <subash@onyx.app>
2025-06-11 16:17:11 +00:00
Raunak Bhagat
ce031c4394 Change how replies are processed (#4870) 2025-06-11 02:14:34 +00:00
Rei Meguro
d4dadb0dda feat: default kg entity types (#4851)
* feat: default entity types

* refactor: cleaned duplicate code

* fix: delete unused fn

* refactor: dictionary instead of model for better type safety

* fix: mypy
2025-06-10 18:19:41 -07:00
Raunak Bhagat
0ded5813cd fix: Add rate-limiting to Teams API request (#4854)
* Add rate-limiting to Teams API request

* Add comment for rate-limiting

* Implement rate-limiting for office365 library.

* Remove hardcoded value

* Fix nits on PR
2025-06-10 21:12:06 +00:00
Evan Lohn
83137a19fb remove lru cache (#4865)
* remove lru cache

* fix types issue

* mypy
2025-06-10 19:40:07 +00:00
Zhipeng He
be66f8dbeb add: add Qwen icon in LLM list and update provider icon mapping (#4625) 2025-06-10 12:36:18 -07:00
SubashMohan
70baecb402 Enhancement/gpt4o image gen support (#4859)
* initial model switching changes

* Update image generation output format and revise prompt handling

* Add validation for output format in ImageGenerationTool and implement tests

---------

Co-authored-by: Subash <subash@onyx.app>
2025-06-10 08:52:21 -07:00
Chris Weaver
c27ba6bad4 Add perm sync to indexing for google drive (#4842)
* Add perm sync to indexing for google drive

* Applying changes elsewhere

* Turn on EE for perm sync slack tests

* Add new load_from_checkpoint_with_perm_sync

* Adjust way perm sync configs are represented

* Adjust run_indexing to handle perm sync on first run

* Add missing file

* Add sync on index for slack

* Add test + fixes

* Update permission

* Fix connector tests

* skip perm sync test if running MIT tests

* Address EL comments
2025-06-10 02:36:04 +00:00
Evan Lohn
61fda6ec58 drive smaller checkpoints v1 (#4849)
* drive smaller checkpoints v1

* v2

* text encoding fix
2025-06-09 23:35:12 +00:00
Evan Lohn
2c93841eaa errors have correct file id (#4818) 2025-06-09 22:36:35 +00:00
Weves
879db3391b Enable embedding parallelism 2025-06-09 15:36:36 -07:00
Suvodhoy Sinha
6dff3d41fa fix(discourse): Remove early break that was limiting topics to batch size 2025-06-09 15:20:43 -07:00
Raunak Bhagat
e399eeb014 fix: Query History Export (#4841)
* Move task registration to earlier in the API

* Remove unnecessary check
2025-06-09 10:10:53 -07:00
joachim-danswer
b133e8fcf0 enforce sub_question ordering for chat_message (#4848) 2025-06-09 02:37:35 +00:00
SubashMohan
ba9b24a477 Enhance credential management with multi-auth support and improved validation (#4846)
Co-authored-by: Subash <subash@onyx.app>
2025-06-09 00:53:18 +00:00
Rei Meguro
cc7fb625a6 KG autofill metadata (#4834)
* feat: autofill metadata

* fix: typo

* fix: enum

* fix: nit
2025-06-08 21:56:50 +00:00
Rei Meguro
2b812b7d7d Kg batch clustering (#4847)
* super genius kg_entity parent migration

* feat: batched clustering

* fix: nit
2025-06-08 21:16:10 +00:00
joachim-danswer
c5adbe4180 Knowledge Graph v1 (#4626)
* db setup

* transfer 1 - incomplete

* more adjustments

* relationship table + query update

* temp view creation

* restructuring

* nits

* updates

* separate read_only engine

* extraction revamp

* focus on metadata relatonships 1

* dev

* migration downgrade fix

* rebase migration change

* a3+

* progress

* base

* new extraction

* progress

* fixed KG extraction

* nits

* updates

* simplifications & cleanup

* fixes

* updates

* more feature flag checks

* fixes

* extraction process fix

* read-only user creation as part of setup

* fix for missing entity attributes

* kg read-only user creation as part of migration

* typo

* EL initial comments

* initial Account/SF Connector chnges

* SF Connector update

 - include account information

* base w/ salesforce

* evan updates + quite a bit more

* kg-filtered search

* EL changes pt 2

* migrations and env vars

* quick migration fix

* migration update

* post_rebase fixes

* mypy fixes

* test fixes

* test fix

* test fix

* read_only pool + misc

* nf

* env vars

* test improvements

* salesforce fix

* test update

* small changes

* small adjustments

* SF Connector fix & kg_stage removal for one table

* mypy fix

* small fixes

* EL + RK (pt 1) comments

* nit

* setting updated

* Salesforce test update

* EL comments

* read-only user replacement & cleanup

* SQL View fix

* converting entity type-name separators

* sql view group ownership

* view fix

* SQL tweak

* dealing with docs that were skipped by indexing

* increased error handling

* more error handling

* Output formatting fix

* kg-incremental-reindexing

* 0-doc found improvement

* celery

* migration correction

* timeout adjustments

* nit

* Updated migration

* Entity Normalization for KG Dev 1 (#4746)

* feat: trigrams column

* fix: reranking and db

* feat: v1

* fix: convert to orm

* feat: parallel

* fix: default to id_name

* fix: renamed semantic_id and semantic_id_trigrams

* fix: scalar subquery

* fix: tuning + redundancy

* fix: threshold

* fix: typo

* fix: shorten names

* wip

* fix: reverted

* feat: config

* feat: works but it was dumb

* feat: clustering works

* fix: mypy

* normalization <-> language awareness for SQL generation

* small type fixes

---------

Co-authored-by: joachim-danswer <joachim@danswer.ai>

* mypy

* typo and dead code

* kg_time_fencing

* feat: remove temp views on migration downgrade

* remove functions and triggers for now

* rebase adjustments

* EL code review results

* quick fix + trigger/funcs for single tenant

* fix: typo, mypy, dead code

* fix: autoflake

* small updatesd

* nit

* fix: typo

* early + faster view creation

* Extension creation in MT migration

* nit changes to default ETs

* Incremental Clustering and KG Refactor V1 (#4784)

Optimized/restructured incremental clustering. New pipeline actually that moves vespa updates to clustering.
Also, celery configuration has been updated.
---------

Co-authored-by: joachim-danswer <joachim@danswer.ai>

* prompt tweak & ET extraction reset

* more general hierarchical structure

* feat: better vespa reset logic

* prompt optimization and entity replacemants

* small prompt changes

* KG Refactor V2 (#4814)

Clustering & Extraction improvements & various nits 

Co-authored-by: joachim-danswer <joachim@danswer.ai>

* add connector-level coverage days

* fix: nit

* initial  EL responses

* refactor: helper functions for formatting

* fix: more helper fns & comments

* fix: comment code that's been implemented elsewhere

* fix: tenant_id missing arg

* fix: removed debugging stuff

* fix: moved kg_interactions db query to helper fn

* fix: tenant_id

* fix: tenant_id & removed outdated helper fn

* fix always set entity class

* fix: typo

* fix alembic heads

* fix: celery logging

* fix: migrations fix

* fix: multi tenant permissions

* fix: temp connector fix

* fix: downgrade

* Fix upgrade migration

* fix: tenant for normalization

* added additional acl

* stray EL comments

* fix: connector test

* fix mypy

* fix: temporary connector test fix

* fix: jira connector test

* nit

* small nits

* fix: black

* fix: mypy

* fix: mypy

---------

Co-authored-by: Rei Meguro <36625832+Orbital-Web@users.noreply.github.com>
2025-06-07 23:14:20 +00:00
Wenxi
21dc3a2456 Restart script clarity (#4839)
* Add error clarity to restart containers script

* erroneous cleanup on exit

* fix when starting containers for the first time

---------

Co-authored-by: Wenxi Onyx <wenxi-onyx@Wenxis-MacBook-Pro.local>
2025-06-06 09:11:58 -07:00
Wenxi
9631f373f0 Restart script clarity (#4837)
* Add error clarity to restart containers script

* erroneous cleanup on exit

* space

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

---------

Co-authored-by: Wenxi Onyx <wenxi-onyx@Wenxis-MacBook-Pro.local>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2025-06-05 19:24:06 -07:00
rexjohannes
cbd4d46fa5 remove Hagen from CONTRIBUTING.md (#4778)
* remove Hagen from CONTRIBUTING.md

* fix slack invite url

* fix second slack invite
2025-06-05 18:59:34 -07:00
Wenxi
dc4b9bc003 Fixed indexing when no sites are specified (#4822)
* Fixed indexing when no sites are specificed

* Added test for Sharepoint all sites index

* Accounted for paginated results.

* Typing

* Typing

---------

Co-authored-by: Wenxi Onyx <wenxi-onyx@Wenxis-MacBook-Pro.local>
2025-06-05 23:25:20 +00:00
Chris Weaver
affb9e6941 Extend the onyx_vespa_schemas.py script (#4835) 2025-06-05 22:47:32 +00:00
Chris Weaver
dc542fd7fa Enable default quantization (#4815)
* Adjust migration

* update default in form

* Add cloud indices for bfloat16

* Update backend/shared_configs/configs.py

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Update vespa schema gen script

* Move embedding configs

* Remove unused imports

* remove import from shared configs

* Remove unused model

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2025-06-05 14:02:08 -07:00
rkuo-danswer
85eeb21b77 add slack percentage progress (#4809)
* add percentage progress

* range checking

* formatting

* for new channels, skip them if the most recent messages are all from bots

* comments

* bypass bot channels

* code review

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-06-05 17:52:46 +00:00
Rei Meguro
4bb3ee03a0 Update GitHub Connector metadata (#4769)
* feat: updated github metadata

* feat: nullity check

* feat: more metadata

* feat: userinfo

* test: connector test + more metadata

* feat: num files changed

* feat str

* feat: list of str
2025-06-04 18:33:14 +00:00
Maciej Bryński
1bb23d6837 Upgrade asyncpg for Python 3.12 (#4699) 2025-06-04 11:44:52 -07:00
joachim-danswer
f447359815 bump up agent timeouts across the board (#4821) 2025-06-04 14:36:46 +00:00
Weves
851e0b05f2 Small tweak to user invite flow 2025-06-04 08:09:33 -07:00
Chris Weaver
094cc940a4 Small embedding model cleanups (#4820)
* Small embedding model cleanups

* fix

* address greptile

* fix build
2025-06-04 00:10:44 +00:00
rkuo-danswer
51be9000bb Feature/vespa bump (#4819)
* bump cloudformation

* update kubernetes

* bump helm chart

* bump docker compose

* update chart.lock

* ai accident!

* bump vespa helm chart for fix

* increase timeout

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-06-04 00:03:01 +00:00
joachim-danswer
80ecdb711d New metadata for Jira for KG (#4785)
* new metadata components

* nits & tests
2025-06-03 20:12:56 +00:00
Chris Weaver
a599176bbf Improve reasoning detection (#4817)
* Improve reasoning detection

* Address greptile comments

* Fix mypy
2025-06-03 20:01:12 +00:00
rkuo-danswer
e0341b4c8a bumping docker push action version (#4816)
Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-06-03 12:47:01 -07:00
CaptainJeff
4c93fd448f fix: updating gemini models (#4806)
Co-authored-by: Jeffrey Drakos <jeffreydrakos@Jeffreys-MacBook-Pro-2.local>
2025-06-03 11:16:42 -07:00
Chris Weaver
84d916e210 Fix hard delete of agentic chats (#4803)
* Fix hard delete of agentic chats

* Update backend/tests/integration/tests/chat/test_chat_deletion.py

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Address Greptile comments

* fix tests

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2025-06-03 11:14:11 -07:00
Weves
f57ed2a8dd Adjust script 2025-06-02 18:39:00 -07:00
trial-danswer
713889babf [Connectors][Script] Resume Paused Connectors (#4798)
* [Connectors][Script] Resume Paused Connectors

* Addressing comment
2025-06-02 18:34:00 -07:00
Weves
58c641d8ec Remove ordering-only flow 2025-06-02 18:29:42 -07:00
Weves
94985e24c6 Adjust user file access 2025-06-02 17:28:49 -07:00
Evan Lohn
4c71a5f5ff drive perm sync logs + misc deployment improvements (#4788)
* some logs

* give postgress more memory

* give postgress more memory

* give postgress more memory

* revert

* give postgress more memory

* bump external access limit

* vespa timeout

* deployment consistency

* bump vespa version

* skip upgrade check

* retry permission by ids

* logs

* fix temp docx file issue

* fix drive file deduping

* RK comments

* mypy

* aggregate logs
2025-06-01 23:36:57 +00:00
rkuo-danswer
b19e3a500b try fixing slack bot (#4792)
* try fixing slack bot

* add logging

* just use if

* safe msg get

* .close isn't async

* enforce block list size limit

* various fixes and notes

* don't use self

* switch to punkt_tab

* fix return condition

* synchronize waiting, use non thread local redis locks

* fix log format, make collection copy more explicit for readability

* fix some logging

* unnecessary function

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-05-31 00:39:14 +00:00
Chris Weaver
267fe027f5 Fix failed docs table (#4800)
* Fix initial LLM provider set up

* Fix IndexAttemptErrorsModal pagination
2025-05-30 22:19:52 +00:00
Evan Lohn
0d4d8c0d64 jira daylight savings handling (#4797) 2025-05-30 19:13:38 +00:00
Chris Weaver
6f9d8c0cff Simplify passing in of file IDs for filtering (#4791)
* Simplify passing in of file IDs for filtering

* Address RK comments
2025-05-30 05:08:21 +00:00
Weves
5031096a2b Fix frozen add token rate limit migration 2025-05-29 22:22:36 -07:00
rkuo-danswer
797e113000 add a comment (#4789)
Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-05-29 14:11:19 -07:00
Raunak Bhagat
edc2892785 fix: Remove "Refining Answer" popup (#4783)
* Clean up logic

* Remove dead code

* Remove "Refining Answer" prompt
2025-05-29 19:55:38 +00:00
rkuo-danswer
ef4d5dcec3 new slack rate limiting approach (#4779)
* fix slack rate limit retry handler for groups

* trying to mitigate memory usage during csv download

* Revert "trying to mitigate memory usage during csv download"

This reverts commit 48262eacf6.

* integrated approach to rate limiting

* code review

* try no redis setting

* add pytest-dotenv

* add more debugging

* added comments

* add more stats

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-05-29 19:49:32 +00:00
Evan Lohn
0b5e3e5ee4 skip excel files that openpyxl fails on (#4787) 2025-05-29 18:09:46 +00:00
SubashMohan
f5afb3621e connector filter bug fix (#4771)
* connector filter bug fix

* refactor: use ValidStatuses type for last status filter

---------

Co-authored-by: Subash <subash@onyx.app>
2025-05-29 15:17:04 +00:00
rkuo-danswer
9f72826143 Bugfix/slack bot debugging (#4782)
* adding some logging

* better var name

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-05-28 18:43:11 +00:00
rkuo-danswer
ab7a4184df Feature/helm k8s probes 2 (#4766)
* add probes

* lint fixes

* add beat probes

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-05-28 05:20:24 +00:00
rkuo-danswer
16a14bac89 Feature/tenant reporting 2 (#4750)
* add more info

* fix headers

* add filename as param (merge)

* db manager entry in launch template

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-05-27 23:24:47 +00:00
Raunak Bhagat
baaf31513c fix: Create new grouping for CRM connectors (#4776)
* Create new grouping for CRM connectors
* Edit spacing
2025-05-27 06:51:34 -07:00
Rei Meguro
0b01d7f848 refactor: stream_llm_answer (#4772)
* refactor: stream_llm_answer

* fix: lambda

* fix: mypy, docstring
2025-05-26 22:29:33 +00:00
rkuo-danswer
23ff3476bc print sanitized api key to help troubleshoot (#4764)
Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-05-24 22:27:37 +00:00
Chris Weaver
0c7ba8e2ac Fix/add back search with files (#4767)
* Allow search w/ user files

* more

* More

* Fix

* Improve prompt

* Combine user files + regular uploaded files
2025-05-24 15:44:39 -07:00
Evan Lohn
dad99cbec7 v1 refresh drive creds during perm sync (#4768) 2025-05-23 23:01:26 +00:00
Chris Weaver
3e78c2f087 Fix POSTGRES_IDLE_SESSIONS_TIMEOUT (#4765) 2025-05-23 14:55:23 -07:00
rkuo-danswer
e822afdcfa add probes (#4762)
* add probes

* lint fixes

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-05-23 02:24:54 +00:00
rkuo-danswer
b824951c89 add probe signals for beat (#4760)
Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-05-23 01:41:11 +00:00
Evan Lohn
ca20e527fc fix tool calling for bedrock claude models (#4761)
* fix tool calling for bedrock claude models

* unit test

* fix unit test
2025-05-23 01:13:18 +00:00
rkuo-danswer
c8e65cce1e add k8s probes (#4752)
* add file signals to celery workers

* improve probe script

* cancel tref

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-05-22 20:21:59 +00:00
rkuo-danswer
6c349687da improve impersonation logging slightly (#4758)
Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-05-22 11:17:27 -07:00
Raunak Bhagat
3b64793d4b Update listener passing (#4751) 2025-05-22 01:31:20 +00:00
Rei Meguro
9dbe12cea8 Feat: Search Eval Testing Overhaul (provide ground truth, categorize query, etc.) (#4739)
* fix: autoflake & import order

* docs: readme

* fix: mypy

* feat: eval

* docs: readme

* fix: oops forgot to remove comment

* fix: typo

* fix: rename var

* updated default config

* fix: config issue

* oops

* fix: black

* fix: eval and config

* feat: non tool calling query mod
2025-05-21 19:25:10 +00:00
rkuo-danswer
e78637d632 mitigate memory usage during csv download (#4745)
* mitigate memory usage during csv download

* more gc tweaks

* missed some small changes

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-05-21 00:44:27 +00:00
Evan Lohn
cac03c07f7 v1 answer refactor (#4721)
* v1 answer refactor

* fix tests

* good catch, tests

* more cleanup
2025-05-20 23:34:27 +00:00
Raunak Bhagat
95dabfaa18 fix: Add back Teams' replies processing (#4744)
* Add replies to document construction and edit tests

* Update tests

* Add replies processing to teams

* Fix test

* Add try-except block around potential failure

* Update entity-id during ConnectorFailure raise
2025-05-20 22:55:28 +00:00
rkuo-danswer
e92c418e0f Feature/openapi (#4710)
* starting openapi support

* fix app / app_fn

* send gitignore

* dedupe function names

* add readme

* modify gitignore

* update launch template

* fix unused path param

* fix mypy

* local tests pass

* first pass at making integration tests work

* fixes

* fix script path

* set python path

* try full path

* fix output dir

* fix integration test

* more build fixes

* add generated directory

* use the config

* add a comment

* add

* modify tsconfig.json

* fix index linting bugs

* tons of lint fixes

* new gitignore

* remove generated dir

* add tasks template

* check for undefined explicitly

* fix hooks.ts

* refactor destructureValue

* improve readme

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-05-20 21:33:18 +00:00
Chris Weaver
0593d045bf Fix ext_perm_user sign-up for non multi-tenant (#4743)
* OAuth w/ external user fix

* Apply to basic auth as well
2025-05-20 20:17:01 +00:00
rkuo-danswer
fff701b0bb fix slack rate limit retry handler for groups (#4742)
Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-05-20 18:54:27 +00:00
rkuo-danswer
0087a32d8b database isn't a var! (#4741)
Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-05-20 11:02:53 -07:00
rkuo-danswer
06312e485c make sure the permission client uses the proper retry handler (#4737)
* make sure the permission client uses the proper retry handler

* fix client

---------

Co-authored-by: Richard Kuo <rkuo@rkuo.com>
2025-05-19 21:07:00 -07:00
Evan Lohn
e0f5b95cfc full drive perm sync 2025-05-19 21:06:43 -07:00
Chris Weaver
10bc072b4b Improve drive group sync (#4736)
* Improve drive group sync

* Fix mypy
2025-05-20 02:39:27 +00:00
Evan Lohn
b60884d3af don't fail on fake files (#4735)
* don't fail on fake files

* solve at the source

* oops

* oops2
2025-05-19 23:09:34 +00:00
Chris Weaver
95ae6d300c Fix slack bot kubernetes template (#4734)
* Fix slack path for kubernetes files

* Add env variables
2025-05-19 21:25:57 +00:00
Evan Lohn
b76e4754bf anthropic fix (#4733)
* anthropic fix

* naming
2025-05-19 20:34:29 +00:00
rkuo-danswer
b1085039ca fix nltk punkt (#4732)
Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-05-19 20:29:02 +00:00
Rei Meguro
d64f479c9f feat: error handling & optimization (#4722) 2025-05-19 20:27:22 +00:00
Raunak Bhagat
fd735c9a3f perf: Change query-exporting to use generators instead of expanding fully into memory (#4729)
* Change query-exporting to use generators instead of expanding fully into memory

* Fix pagination logic

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Add type annotation

* Add early break if list of chat_sessions is empty

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2025-05-19 20:09:45 +00:00
rkuo-danswer
2282f6a42e fix restart (#4726)
Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-05-17 17:02:27 +00:00
Rei Meguro
0262002883 fix: continue button (#4724) 2025-05-16 15:43:37 -07:00
Chris Weaver
01ca9dc85d Fix OAuth w/ ext_perm_user for multi-tenant (#4723)
* Fix OAuth w/ ext_perm_user for multi-tenant

* Improve comment
2025-05-16 14:44:01 -07:00
Weves
0735a98284 Fix import ordering 2025-05-16 14:43:50 -07:00
Emerson Gomes
8d2e170fc4 Use LiteLLM DB for determining model tool capability (#4698)
* Bump LiteLLM

* Use LiteLLM DB for determining model tool capability instead of using hardcoded list

* Make function defaults explicit
2025-05-16 13:31:39 -07:00
SubashMohan
f3e2795e69 Highlight active link in AdminSidebar based on current pathname (#4719)
* Highlight active link in AdminSidebar based on current pathname

* Refactor AdminSidebar to declare pathname variable earlier

---------

Co-authored-by: Subash <subash@onyx.app>
2025-05-16 04:55:28 +00:00
Rei Meguro
30d9ce1310 feat: search quality eval (#4720)
* fix: import order

* test examples

* fix: import

* wip: reranker based eval

* fix: import order

* feat: adjuted score

* fix: mypy

* fix: suggestions

* sorry cvs, you must go

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* fix: mypy

* fix: suggestions

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2025-05-15 23:44:33 +00:00
Evan Lohn
2af2b7f130 fix connector tests and drive indexing (#4715)
* fix connector tests and drive indexing

* fix other test

* fix checkpoint data bug
2025-05-15 19:15:46 +00:00
SubashMohan
9d41820363 UI fixes (#4709)
Co-authored-by: Subash <subash@onyx.app>
2025-05-15 05:46:51 +00:00
rkuo-danswer
a44f289aed restructure to signal activity while processing (#4712)
Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-05-15 05:23:11 +00:00
SubashMohan
9c078b3acf Implement pagination for retrieving spots in HighspotClient (#4705)
Co-authored-by: Subash <subash@onyx.app>
2025-05-15 00:32:12 +00:00
Rei Meguro
349f2c6ed6 Bugfix/usage report UUID (#4703)
* feat: replace user id with username in user report

* feat: pagelink arrow disable

* fix: import order

* fix: removed things we're not doing
2025-05-14 22:27:01 +00:00
rkuo-danswer
0dc851a1cf use existing session user if it matches the email (#4706)
Co-authored-by: Richard Kuo <rkuo@rkuo.com>
2025-05-14 22:18:56 +00:00
Raunak Bhagat
f27fe068e8 Add env variables (#4711) 2025-05-14 19:39:29 +00:00
Evan Lohn
f836cff935 reset to prs on next checkpoint (#4704)
* reset to prs on next checkpoint

* github time fix
2025-05-14 18:47:38 +00:00
Raunak Bhagat
312e3b92bc perf: Implement checkpointing for Teams Connector. (#4601)
* Add basic foundation for teams checkpointing classes

* Fix slack connector main entrypoint

* Saving changes

* Finish teams checkpointing impl

* Remove commented out code

* Remove more unused code

* Move code around

* Add threadpool to process requests in parallel

* Fix mypy errors / warnings

* Move test import to main function only

* Address nits on PR

* Remove unnecessary check prior to entering while-loop

* Remove print statement

* Change exception message

* Address more nits

* Use indexing instead of destructuring

* Add back invocation of `run_with_timeout` instead of a direct call

* Revert slack testing code

* Move early return to before second API call

* Pull fetch to team outside of loop

* Address nits on PR

* Add back client-side filtering

* Updated connector to return after a team's indexing is finished

* Add type ignore

* Implement proper datetime range fetching

* Address comment on PR

* Rename function

* Change exception type when no team with the given id was found

* Address nit on PR

* Add comment on why `page_loaded` is needed to be specified explicitly

* Remove duplicated calls to fetching channels

* Use helper function for thread-based yielding instead of manual logic

* Move datetime filtering to message-level instead

* Address more comments on PR

* Add new utility function for yielding sections

* Add additional utility function

* Add teams tests

* Edit error message

* Address nits on PR

* Promote url-prefix to be a class level constant

* Fix mypy error

* Remove start/end parameters from function that doesn't use them anymore; move around comments

* Address more nits on PR

* Add comment
2025-05-14 04:30:57 +00:00
Evan Lohn
0cc0964231 Perf/drive finer checkpoints (#4702)
* celery and drive fixes

* some initial nits

* skip weird files

* safer extension check

* fix drive
2025-05-14 03:15:29 +00:00
Chris Weaver
b82278e685 Fix heavy import (#4701) 2025-05-13 23:04:16 +00:00
Richard Kuo (Onyx)
daa1746b4a just readme fixes 2025-05-13 09:56:07 -07:00
rkuo-danswer
d8068f0a68 Feature/helm separate workers (#4679)
* add test

* try breaking out background workers

* fix helm lint complaints

* rename disabled files more

* try different folder structure

* fix beat selector

* vespa setup should break on success

* improved instructions for basic helm chart testing

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-05-13 02:23:32 +00:00
Chris Weaver
d91f776c2d Fix initial checkpoint save (#4697)
* Fix initial checkpoint save

* Improve comment

* Another small fix
2025-05-13 01:59:07 +00:00
Chris Weaver
a01135581f Small GitHub enhancements (#4696)
* Small github enhancements

* Fix manual run

* Address EL comments
2025-05-13 01:14:16 +00:00
rkuo-danswer
392b87fb4f Bugfix/limit permission size (#4695)
* add utility function

* add utility functions to DocExternalAccess

* refactor db access out of individual celery tasks and put it directly into the heavy task

* code review and remove leftovers

* fix circular imports

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-05-13 00:46:31 +00:00
Evan Lohn
551a05aef0 light worker discovers beat task (#4694)
* light worker discovers beat task

* v2: put in right place
2025-05-12 21:20:18 +00:00
rkuo-danswer
6b9d0b5af9 ensure we don't tag 'latest' with cloud images (#4688)
* ensure we don't tag 'latest' with cloud images

* add docker login to trivy

* fix tag names

* flavor latest false (no auto latest tags)

* fix typo

* only run the appropriate workflow for web

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
Co-authored-by: Richard Kuo <rkuo@rkuo.com>
2025-05-12 17:23:01 +00:00
Chris Weaver
b8f3ad3e5d Fix/remove ee fe (#4690)
* Remove ee imports from FE

* Remove ee imports from FE

* Style
2025-05-12 02:31:04 +00:00
Chris Weaver
b19515e25d Fix window_start (#4689)
* Fix window_start

* Add comment
2025-05-12 00:11:20 +00:00
Chris Weaver
913f7cc7d4 Fix/remove ee from mit (#4682)
* Remove some ee imports

* more

* Remove all ee imports

* Fix

* Autodiscover

* fix

* Fix typing

* More celery task stuff

* Fix import
2025-05-11 22:09:50 +00:00
rkuo-danswer
84566debab set field size limit (#4683)
* set field size limit

* don't use sys.maxsize

---------

Co-authored-by: Richard Kuo <rkuo@rkuo.com>
Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-05-09 22:46:13 +00:00
rkuo-danswer
1a8b7abd00 add test (#4676)
* add test

* comment

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-05-09 21:38:51 +00:00
Evan Lohn
4c0423f27b fix github cursor pagination infinite loop (#4673)
* fix infinite loop

* unit test for infinite loop issue

* mypy version

* more logging

* unbound locals
2025-05-09 21:35:37 +00:00
rkuo-danswer
7965fd9cbb run testing (#4681)
* run testing

* need to break on success

* add a readme

* raise vespa to 6GB

* allow test to retry

* add 20 attempts

* put memory limits back to normal

* restore chart testing on changes only

* increase retries to 40

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-05-09 11:49:43 -07:00
Chris Weaver
91831f4d07 Fix user count (#4677)
* Fix user count

* Add helper + fix async function as well

* fix mypy

* Address RK comment
2025-05-08 17:19:40 -07:00
Chris Weaver
1dd98a87cc Try to reduce memory usage on group sync (#4678) 2025-05-08 22:53:53 +00:00
rkuo-danswer
0dd65cc839 enterprise settings needs to 403 on tenant id absence (#4675)
Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-05-08 18:32:12 +00:00
Chris Weaver
519aeb6a1f Drive perm sync enhancement (#4672)
* Enhance drive perm sync

* add tests

* more stuff

* fixes

* Fix

* Speed up

* Add missing file

* Address EL comments

* Add ondelete=CASCADE

* Improve comment
2025-05-08 03:12:41 +00:00
Evan Lohn
0eab6ab935 fix drive slowness (#4668)
* fix slowness

* no more silent failing for users

* nits

* no silly info transfer
2025-05-07 22:48:08 +00:00
Evan Lohn
ee09cb95af fixes foreign key violation (#4670)
* fixes foreign key violation

* nit
2025-05-07 18:27:32 +00:00
Evan Lohn
8a9a66947e make 404s skippable (#4671) 2025-05-07 18:04:35 +00:00
Raunak Bhagat
d744c0dab4 fix: Fix error in which channel names would not have the leading "#" removed (#4664)
* Fix failing entrypoint into slack connector

* Pre-filter channel names upon instantiation of slack connector class

* Add decrypt script

* Add slack connector tests

* Fix mypy errors on decrypt.py

* Add property to SlackConnector class

* Add some basic tests

* Move location of tests

* Change name of env token

* Add secrets for Slack

* Add more parameterized cases

* Change env variable name

* Change names

* Update channel names

* Edit tests

* Modify tests

* Only import type in __main__

* Fix tests to actually test connectors

* Pass parameter to fixture directly
2025-05-07 04:55:21 +00:00
Chris Weaver
70df685709 Non default schema fix (#4667)
* Use correct postgres schema

* Remove raw Session() use

* Refactor + add test

* Fix comment
2025-05-06 20:35:59 -07:00
Chris Weaver
f85ef78238 Add more logging for confluence perm-sync + handle case where permiss… (#4586)
* Add more logging for confluence perm-sync + handle case where permissions are removed from the access token

* Make required permissions are explicit

* more

* Add slim fetch limit + mark all cc pairs of source type as successful upon group sync

* Add to dev compose

* Small teams fix

* Add file

* Add single limit pagination for confluence

* Restrict to server only

* more logging

* cleanup

* Cleanup

* Remove CONFLUENCE_CONNECTOR_SLIM_FETCH_LIMIT

* Handle teams error

* Fix ut

* Remove db dependency from confluence_doc_sync

* move stuff back to debug
2025-05-06 18:35:14 +00:00
Evan Lohn
2d7e48d8e8 possible mangling fix (#4666)
* possible mangling fix

* fixed nextUrl setting

* global bad
2025-05-06 15:51:39 +00:00
rkuo-danswer
8231328dc6 restore caching and fix up some prefixing (#4649)
* restore caching and fix up some prefixing

* try backend matrix build and fix artifact names

* need id

* add backslashes to be consistent

* fix no-cache

* leave docker tags to the meta action

* need checkout in merge

* add comment

* move spammy logs to debug status

* bunch of no-cache updates

* prefix

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-05-05 16:43:29 +00:00
Chris Weaver
7763e2fa23 Fix non-default schema in KV store (#4655)
* Fix non-default schema in KV store

* Fix custom schema
2025-05-04 22:19:35 +00:00
Chris Weaver
6085bff12d Fix test / display models (#4657)
* Fix test / display models

* Address greptile comments

* Increase wait time

* Increase overall timeout

* Move stuff to utils file

* Updates
2025-05-04 14:04:03 -07:00
Weves
97d60a89ae Add LRU cache to get_model_map 2025-05-03 17:43:58 -07:00
Raunak Bhagat
79b981075e perf: Optimize query history exporting process (#4602)
* Update mode to be a default parameter in `FileStore.read`

* Move query history exporting process to be a background job instead

* Move hardcoded report-file-naming to a common utility function

* Add type annotations

* Update download component

* Implement button to re-ping and download CSV file; fix up some backend file-checking logic

* De-indent logic (w/ early return)

* Return different error codes dependings on the type of task status

* Add more resistant failure retrying mechanisms

* Remove default parameter in helper function

* Use popup for error messaging

* Update return code

* Update web/src/app/ee/admin/performance/query-history/DownloadAsCSV.tsx

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Add type to useState call

* Update backend/ee/onyx/server/query_history/api.py

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Update backend/onyx/file_store/file_store.py

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Update backend/ee/onyx/background/celery/apps/primary.py

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Move rerender call to after check

* Run formatter

* Add type conversions back (smh greptile)

* Remove duplicated call to save_file

* Move non-fallible logic out of try-except block

* Pass date-ranges into API call

* Convert to ISO strings before passing it into the API call

* Add API to list all tasks

* Create new pydantic model to represent tasks to return instead

* Change helper to only fetch query-history tasks

* Use `shared_tasks` instead of old method

* Address more comments from PR; consolidate how task name is generated

* Mark task as failed if any exception is raised

* Change the task object which is returned back to the FE

* Add a table to display previously generated query-history-csv's

* Add timestamps to task; delete tasks as soon as file finishes processing

* Raise exception if start_time is not present

* Convert hard-coded string to constant

* Add "Generated At" field to table

* Return task list in sorted order (based off of start-time)

* Implement pagination

* Remove unused props and cleanup tailwind classes

* Change the name of kickoff button

* Redesign how previous query exports are viewed

* Make button a constant width even when contents change

* Remove timezone information before comparing

* Decrease interval time for re-pinging API

* Add timezone to start-time creation

* Add a refreshInterval for getting updated task status

* Add new background queue

* Edit small verbiage and remove error popup when max-retries is hit

* Change up heavy worker to recognize new task in new module

* Ensure `celery_app` is imported

* Change how `celery_app` is imported and defined

* Update comment on why `celery_app` must be imported

* Add basic skeleton for new beat task to cleanup any dead / failed query-history-export tasks

* Move cleanup task to different worker / queue

* Implement cleanup task

* Add return type

* Address comment on PR

* Remove delimiter from prefix

* Change name of function to be more descriptive

* Remove delimiter from prefix constant

* Move function invocation closer to usage location

* Move imports to top of file

* Move variable up a scope due to undefined error

* Remove dangling if-statement

* Make function more pure-functional

* Remove redefinition

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2025-05-03 00:16:35 +00:00
Evan Lohn
113876b276 id not set in checkpoint FINAL (#4656)
* it will never happen again.

* fix perm sync issue

* fix perm sync issue2

* ensure member emails map is populated

* other fix for perm sync

* address CW comments

* nit
2025-05-03 00:10:21 +00:00
rkuo-danswer
5c3820b39f Bugfix/slack timeout (#4652)
* don't log all channels

* print number of channels

* sanitize indexing exception messages

* harden vespa index swap

* use constants and fix list generation

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-05-02 18:24:45 +00:00
Evan Lohn
55e4465782 orphan tag cleanup optimization (#4651)
* move orphan tag cleanup to final cleanup section of associated tparent tasks

* naming
2025-05-02 17:22:59 +00:00
Evan Lohn
6d9693dc51 drive file deduping (#4648)
* drive file deduping

* switched to version that does not require thread safety

* thanks greptile

* CW comments
2025-05-02 10:58:16 -07:00
Weves
75fa10cead fix highspot 2025-05-01 14:34:35 -07:00
Richard Kuo (Onyx)
0497bfdf78 fix double entry 2025-05-01 11:26:57 -07:00
rkuo-danswer
0db2ad2132 memory optimize task generation for connector deletion (#4645)
* memory optimize task generation for connector deletion

* test

* fix up integration test docker file

* more no-cache

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-05-01 10:47:26 -07:00
Chris Weaver
49cd38fb2d Update README.md 2025-05-01 09:58:33 -07:00
Raunak Bhagat
bd36b2ad6d Remove cursor-help for tooltip (#4643) 2025-05-01 09:38:13 -07:00
Evan Lohn
6436b60763 github cursor pagination (#4642)
* v1 of cursor pagination

* mypy

* unit tests

* CW comments
2025-04-30 19:09:20 -07:00
Raunak Bhagat
a6cc1c84dc Add padding to bottom of pages (#4641) 2025-04-30 22:34:18 +00:00
Weves
8515f4b57a Highspot cleanup 2025-04-30 14:57:36 -07:00
joachim-danswer
f68b74ff4a disable Agent Search refinement by default (#4638)
- created env variable  AGENT_ALLOW_REFINEMENT  with default "". Must be set to true to enable Refinement.
 - added an environment variable for the upper limit of docs that can be sent to verification
2025-04-30 19:51:08 +00:00
rkuo-danswer
e254fdc066 add sendgrid as option (#4639)
* add sendgrid as option

* code review

* mypy

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-30 07:33:15 +00:00
Raunak Bhagat
f26de37878 Remove info hoverable (#4637) 2025-04-30 03:16:14 +00:00
rkuo-danswer
94de23fe87 Bugfix/chat images 2 (#4630)
* don't hardcode -1

* extra spaces

* fix binary data in blurb

* add note to binary handling

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-30 01:29:10 +00:00
Chris Weaver
dd242c9926 Fix race condition with archived channels (#4635) 2025-04-29 23:35:40 +00:00
Chris Weaver
47767c1666 Small improvements to checkpoint pickup logic (#4634) 2025-04-29 21:23:54 +00:00
Chris Weaver
9be3da2357 Fix gitlab (#4629)
* Fix gitlab

* Add back assert
2025-04-28 17:42:49 -07:00
Evan Lohn
8961a3cc72 page token for drive group sync (#4627) 2025-04-28 19:06:06 +00:00
Chris Weaver
47b9e7aa62 Fix teams (#4628)
* Fix teams

* Use get_all

* Add comment
2025-04-28 11:53:22 -07:00
Evan Lohn
eebfa5be18 Confluence server api time fix (#4589)
* tolerance of confluence api weirdness

* remove checkpointing

* remove skipping logic from checkpointing

* add back checkpointing

* switch confluence checkpointing to be based on page starts

* address CW comments and fix unit tests

* some mitigations of bad confluence api

* new checkpointing approach and testing fixes

* fix test

* CW comments
2025-04-28 06:06:29 +00:00
Chris Weaver
5047d256b4 Add support for restrictions w/o any access (#4624)
* Add support for restrictions w/o any access

* Fix
2025-04-28 03:09:36 +00:00
Evan Lohn
5db676967f no more duplicate files during folder indexing (#4579)
* no more duplicate files during folder indexing

* cleanup checkpoint after a shared folder has been finished

* cleanup

* lint
2025-04-28 01:01:20 +00:00
Chris Weaver
ea0664e203 Fix LLM API key (#4623)
* Fix LLM API key

* Remove unused import

* Update web/src/app/admin/configuration/llm/LLMProviderUpdateForm.tsx

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2025-04-27 23:10:36 +00:00
Weves
bbd0874200 fix 2025-04-27 14:37:53 -07:00
rkuo-danswer
c6d100b415 Bugfix/chat images (#4618)
* keep chatfiletype as image instead of user_knowledge

* improve continue message

* fix to image handling

* greptile code review

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-27 20:34:30 +00:00
Evan Lohn
5ca7a7def9 fix migration and add test (#4615) 2025-04-25 21:27:59 +00:00
Chris Weaver
92b5e1adf4 Add support for overriding user list (#4616)
* Add support for overriding user list

* Fix

* Add typing

* pythonify
2025-04-25 15:15:23 -07:00
Chris Weaver
23c6e0f3bf Single source of truth for image capability (#4612)
* Single source of truth for image capability

* Update web/src/app/admin/assistants/AssistantEditor.tsx

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Fix tests

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2025-04-25 20:37:16 +00:00
Chris Weaver
ad76e6ac9e Adjust confluence perm sync frequency (#4613)
* Adjust confluence perm sync frequency

* Fiux comment
2025-04-25 19:36:10 +00:00
Evan Lohn
151aabea73 specific user emails for drive connector (#4608)
* specific user emails for drive connector

* fix drive connector tests

* fix connector tests
2025-04-25 18:49:20 +00:00
Chris Weaver
d711680069 Add e2e test for assistant creation/edit (#4597)
* Add e2e test for assistant creation/edit

* Skip initial full reset to have seeded connector
2025-04-25 13:21:34 -07:00
Evan Lohn
9835d55ecb transfer old fileds to new config 2025-04-25 12:25:20 -07:00
Raunak Bhagat
69c539df6e fix: Create migration to re-introduce display_model_names (#4600)
* Fix migration

* Fix migration to take care of various nullability cases

* Address comments on PR

* Rename variables to be more descriptive

* Make helpers private

* Fix select statement

* Add comments to explain the involved logic

* Saving changes

* Finish script to revalidate `display_model_names`

* Address comments on PR by greptile

* Add missing columns

* Pull difference operator out into binding

* Add deletion prior to re-insertion

* Use map from shared llm-provider file instead

* Use helper function instead of copying code

* Remove delete and convert into an update statement

* Use pydantic for ModelConfigurations

* Update to do nothing on-conflict rather than update

* Address nits on PR

* Add default visible model(s) for bedrock

* Perform an update on conflict instead of doing nothing
2025-04-25 10:44:13 -07:00
pablonyx
df67ca18d8 My docs cleanup (#4519)
* update

* improved my docs

* nit

* nit

* k

* push changes

* update

* looking good

* k

* fix preprocessing

* try a fix

* k

* update

* nit

* k

* quick nits

* Cleanup / fixes

* Fixes

* Fix build

* fix

* fix quality checks

---------

Co-authored-by: Weves <chrisweaver101@gmail.com>
2025-04-25 05:20:33 +00:00
Chris Weaver
115cfb6ae9 Fix tool choice (#4596)
* Fix tool choice

* fix
2025-04-24 21:51:14 -07:00
rkuo-danswer
672f3a1c34 fix provisioning and don't spawn tasks which could result in a race condition (#4604)
Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-25 02:41:05 +00:00
Raunak Bhagat
13b71f559f fix: Fix migration issue in which display-model-names were not being appropriately set (#4594)
* Fix migration

* Fix migration to take care of various nullability cases

* Address comments on PR

* Rename variables to be more descriptive

* Make helpers private

* Fix select statement

* Add comments to explain the involved logic

* Add helpers for viewing visible model names

* Fix logic for missing model + display-model names in migration
2025-04-24 21:26:33 +00:00
Evan Lohn
2981b7a425 linear dupe docs fix (#4607) 2025-04-24 21:00:21 +00:00
rkuo-danswer
37adf31a3b fix priority on vespa metadata sync (#4603)
Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-24 19:50:49 +00:00
Raunak Bhagat
5d59850a17 Fix slack formatting bug (#4587) 2025-04-24 17:18:54 +00:00
Evan Lohn
91d6b739a4 ensure drive id set in checkpoint (#4595)
* ensure drive id set in checkpoint

* asserts gone

* address CW
2025-04-24 01:20:13 +00:00
rkuo-danswer
c83ee06062 Feature/salesforce correctness 2 (#4506)
* refactor salesforce sqlite db access

* more refactoring

* refactor again

* refactor again

* rename object

* add finalizer to ensure db connection is always closed

* avoid unnecessarily nesting connections and commit regularly when possible

* remove db usage from csv download

* dead code

* hide deprecation warning in ddtrace

* remove unused param

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-24 01:05:52 +00:00
Raunak Bhagat
c93cebe1ab fix: Add minor fixes to how model configurations are displayed (#4593)
* Add minor fixes to how model configurations are interacted with

* Remove azure entry
2025-04-23 21:42:02 +00:00
rkuo-danswer
ea1d3c1eda Feature/db script (#4574)
* debug script + slight refactor of db class

* better comments

* move setup logger

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
Co-authored-by: Richard Kuo <rkuo@rkuo.com>
2025-04-23 20:00:35 +00:00
rkuo-danswer
c9a609b7d8 Bugfix/slack bot channel config (#4585)
* friendlier handling of slack channel retrieval

* retry on downgrade_postgres deadlock

* fix comment

* text

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-23 20:00:03 +00:00
rkuo-danswer
07f04e35ec Bugfix/alembic sqlengine (#4592)
* need sqlengine to work

* add comments

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-23 19:21:34 +00:00
joachim-danswer
d8b050026d removal of keyword 1st phase 2025-04-22 20:29:57 -07:00
Raunak Bhagat
c76dc2ea2c fix: Fix the add_model_configuration migration by removing duplicate model-names during insertion (#4588)
* Convert the model_names and display_model_names into a set instead

* Update backend/alembic/versions/7a70b7664e37_add_model_configuration_table.py

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2025-04-22 18:59:31 -07:00
rkuo-danswer
5e11c635d9 wrong logger imported in a lot of wrong places (#4582)
Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-22 23:34:02 +00:00
joachim-danswer
669b668463 updated logging and basic search expansion procedure 2025-04-22 11:58:02 -07:00
Raunak Bhagat
85fa083717 fix: Return default value instead of throwing error (#4575)
* Return default value instead of throwing error

* Add default parameter

* Move logic around

* Use dummy value for max_input_tokens in testing flow

* Remove unnecessary assignment
2025-04-22 17:33:36 +00:00
Chris Weaver
420d2614d4 Fix assistants forms (#4578)
* Fix assistant num chunk setting

* test

* Fix test

* Update web/src/app/assistants/mine/AssistantModal.tsx

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Update web/src/app/assistants/mine/AssistantModal.tsx

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2025-04-22 16:09:03 +00:00
Raunak Bhagat
e3218d358d feat: Add assistant name to UI (#4569)
* Add assistant name to UI

* Fix tailwind styling class
2025-04-22 09:35:35 -07:00
Weves
ae632b5fab Fix missing Connector Configuration 2025-04-21 18:50:25 -07:00
rkuo-danswer
0d4c600852 out of process retry for multitenant test reset (#4566)
* tool to generate vespa schema variations for our cloud

* extraneous assign

* use a real templating system instead of search/replace

* fix float

* maybe this should be double

* remove redundant var

* template the other files

* try a spawned process

* move the wrapper

* fix args

* increase timeout

* run multitenant reset operations out of process as well

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
Co-authored-by: Richard Kuo <rkuo@rkuo.com>
2025-04-21 23:30:18 +00:00
Evan Lohn
eb569bf79d add emails to retry with on 403 (#4565)
* add emails to retry with on 403

* attempted fix for connector test

* CW comments

* connector test fix

* test fixes and continue on 403

* fix tests

* fix tests

* fix concurrency tests

* fix integration tests with llmprovider eager loading
2025-04-21 23:27:31 +00:00
Chris Weaver
f3d5303d93 Fix slack bot feedback (#4573)
* Fix slack bot feedback

* Fix

* Make safe
2025-04-21 15:54:48 -07:00
Raunak Bhagat
b97628070e feat: Add ability to specify max input token limit for custom LLM providers (#4510)
* Add multi text array field

* Add multiple values to model configuration for a custom LLM provider

* Fix reference to old field name

* Add migration

* Update all instances of model_names / display_model_names to use new schema migration

* Update background task

* Update endpoints to not throw errors

* Add test

* Update backend/alembic/versions/7a70b7664e37_add_models_configuration_table.py

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Update backend/onyx/background/celery/tasks/llm_model_update/tasks.py

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Fix list comprehension nits

* Update web/src/components/admin/connectors/Field.tsx

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Update web/src/app/admin/configuration/llm/interfaces.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Implement greptile recommendations

* Update backend/onyx/db/llm.py

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Update backend/onyx/server/manage/llm/api.py

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Update backend/onyx/background/celery/tasks/llm_model_update/tasks.py

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Update backend/onyx/db/llm.py

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Fix more greptile suggestions

* Run formatter again

* Update backend/onyx/db/models.py

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Add relationship to `LLMProvider` and `ModelConfigurations` classes

* Use sqlalchemy ORM relationships instead of manually populating fields

* Upgrade migration

* Update interface

* Remove all instances of model_names and display_model_names from backend

* Add more tests and fix bugs

* Run prettier

* Add types

* Update migration to perform data transformation

* Ensure native llm providers don't have custom max input tokens

* Start updating frontend logic to support custom max input tokens

* Pass max input tokens to LLM class (to be passed into `litellm.completion` call later)

* Add ModelConfigurationField component for custom llm providers

* Edit spacing and styling of model configuration matrix

* Fix error message displaying bug

* Edit opacity of `FiX` field for first index

* Change opacity back

* Change roundness

* Address comments on PR

* Perform fetching of `max_input_tokens` at the beginning of the callgraph and rope it throughout the entire callstack

* Change `add` to `execute`

* Move `max_input_tokens` into `LLMConfig`

* Fix bug with error messages not being cleared

* Change field used to fetch LLMProvider

* Fix model-configuration UI

* Address comments

* Remove circular import

* Fix failing tests in GH

* Fix failing tests

* Use `isSubset` instead of equality to determine native vs custom LLM Provider

* Remove unused import

* Make responses always display max_input_tokens

* Fix api endpoint to hit

* Update types in web application

* Update object field

* Fix more type errors

* Fix failing llm provider tests

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2025-04-21 04:30:21 -07:00
pablonyx
72d3a7ff21 Frontend testing (#4500)
* add o3 + o4 mini

* k

* see which ones fail

* attempt

* k

* k

* llm ordering passing

* all tests passing

* quick bump

* Revert "add o3 + o4 mini"

This reverts commit 4cfa1984ec.

* k

* k
2025-04-20 23:29:47 +00:00
rkuo-danswer
2111eccf07 Feature/vespa jinja (#4558)
* tool to generate vespa schema variations for our cloud

* extraneous assign

* use a real templating system instead of search/replace

* fix float

* maybe this should be double

* remove redundant var

* template the other files

* try a spawned process

* move the wrapper

* fix args

* increase timeout

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
Co-authored-by: Richard Kuo <rkuo@rkuo.com>
2025-04-20 22:28:55 +00:00
Chris Weaver
87478c5ca6 Parallelize connector tests (#4563)
* Parallelize connector tests

* Use --dist loadfile

* Add slow test logging
2025-04-19 18:10:50 -07:00
evan-danswer
dc62d83a06 File connector tests (#4561)
* danswer to onyx plus tests for file connector

* actually add test
2025-04-19 15:54:30 -07:00
evan-danswer
5681df9095 address getting attachments forever (#4562)
* address getting attachments forever

* fix unit tests
2025-04-19 15:53:27 -07:00
Chris Weaver
6666300f37 Fix flakey web test (#4551)
* Fix flakey web test

* Increase wait time

* Another attempt to fix

* Simplify + add new test

* Fix web tests
2025-04-19 15:12:11 -07:00
Chris Weaver
7f99c54527 Small improvements to connector UI (#4559)
* Small improvements to connector UI

* Update web/src/app/admin/connector/[ccPairId]/IndexingAttemptsTable.tsx

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Fix last_permission_sync

* Handle cases where a source doesn't need group sync

* fix

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2025-04-19 19:14:05 +00:00
Chris Weaver
4b8ef4b151 Update README.md 2025-04-18 18:29:56 -07:00
rkuo-danswer
e5e0944049 tool to generate vespa schema variations for our cloud (#4556)
* tool to generate vespa schema variations for our cloud

* extraneous assign

* float, not double

* back to double

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-18 20:47:17 +00:00
pablonyx
356336a842 add o3 + o4 mini (#4555) 2025-04-18 20:42:35 +00:00
rkuo-danswer
5bc059881e ping with keep alive (#4550)
Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-18 18:44:07 +00:00
rkuo-danswer
fa80842afe Bugfix/harden activity timeout (#4545)
* add some hardening

* add info memory logging

* fix last_observed

* remove log spam

* properly cache last activity details

* default values

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-18 02:28:22 +00:00
rkuo-danswer
a8a5a82251 slightly better slack logging (#4554)
Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-17 18:45:48 -07:00
evan-danswer
953a4e3793 v1 file connector with metadata (#4552) 2025-04-17 23:02:34 +00:00
rkuo-danswer
04ebde7838 refactor a mega function for readability and make sure to increment r… (#4542)
* refactor a mega function for readability and make sure to increment retry_count on exception so that we don't infinitely loop

* improve session and page level context handling

* don't use pydantic for the session context

* we don't need retry success

* move playwright handling into the session context

* need to break on ok

* return doc from scrape

* fix comment

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-17 06:43:30 +00:00
Chris Weaver
6df1c6c72f Pull in more fields for Jira (#4547)
* Pull in more fields for Jira

* Fix tests

* Fix

* more fix

* Fix

* Fix S3 test

* fix
2025-04-17 01:52:50 +00:00
Raunak Bhagat
fe94bdf936 fix: Fix duplicate kwarg issue when calling litellm.main.completion (#4533)
* Fix duplicate kwarg issue

* Change how vertex_credentials are passed

* Modify temporary dict instead

* Change string to a global constant

* Add extra condition to if-check during population of map
2025-04-16 19:29:53 -07:00
rkuo-danswer
2a9fd9342e small improvement to checking for image attachments (#4543)
* small improvement to checking for image attachments

* better comments

* check centralized list of types instead of hardcoding them in the connector

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-17 00:34:22 +00:00
pablonyx
597ad806e3 Skip image files for S3 (#4535)
* skip image files

* process images s3

* tests

* k

* update

* nit

* update
2025-04-16 23:41:00 +00:00
evan-danswer
5acae2dc80 fix re-processing of previously seen docs Confluence (#4544)
* fix re-processing of previously seen docs

* performance
2025-04-16 23:16:21 +00:00
pablonyx
99455db26c add 4.1 (#4540) 2025-04-16 15:34:01 -07:00
pablonyx
0d12e96362 Fix bug with saml validation (#4522)
* fix bug with saml validation

* k
2025-04-16 19:35:58 +00:00
Chris Weaver
7e7b6e08ff Fix confluence perm sync ancestry (#4536)
* Fix confluence perm sync ancestry

* Address EL comments

* add test for special case

* remove print

* Fix test
2025-04-16 03:02:54 +00:00
Raunak Bhagat
1dd32ebfce Remove alert upon submission (#4537) 2025-04-15 19:12:12 -07:00
Weves
c3ffaa19a4 Small no-letsencrypt improvement 2025-04-15 18:29:07 -07:00
pablonyx
f4ea7e62a7 Miscellaneous cleanup (#4516)
* stricter typing

* k
2025-04-15 23:35:13 +00:00
rkuo-danswer
2ac41c3719 Feature/celery beat watchdog (#4534)
* upgrade celery to release version

* make the watchdog script more reusable

* use constant

* code review

* catch interrupt

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-15 22:05:37 +00:00
evan-danswer
a8cba7abae extra logging for uncommon permissions cases (#4532)
* extra logging for uncommon permissions cases

* address CW comments
2025-04-15 18:56:17 +00:00
evan-danswer
ae9f8c3071 checkpointed confluence (#4473)
* checkpointed confluence

* confluence checkpointing tested

* fixed integration tests

* attempt to fix connector test flakiness

* fix rebase
2025-04-14 23:59:53 +00:00
evan-danswer
742041d97a fix font for dark mode (#4527) 2025-04-14 22:43:03 +00:00
pablonyx
187b93275d k (#4525) 2025-04-14 22:29:47 +00:00
Weves
ca2aeac2cc Fix black 2025-04-14 15:53:09 -07:00
ThomaciousD
f7543c6285 Fix #3764: Dynamically handle default branch in GitLab connector 2025-04-14 15:52:10 -07:00
pablonyx
1430a18d44 cohere validation logic update (#4523) 2025-04-14 21:49:22 +00:00
rkuo-danswer
7c4487585d rollback properly on exception (#4073)
* rollback properly on exception

* rollback on exception

* don't continue if we can't set the search path

* cleaner handling via context manager

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-04-14 21:48:35 +00:00
pablonyx
e572ce95e7 Shore up multi tenant tests (#4484)
* update

* fix

* finalize`

* remove unnecessary prints

* fix

* k
2025-04-14 18:34:57 +00:00
evan-danswer
68c6c1f4f8 refactor to use stricter typing (#4513)
* refactor to use stricter typing

* older version of ruff
2025-04-14 17:23:07 +00:00
Chris Weaver
a5edc8aa0f Fix default log level (#4501)
* Fix default log level

* fix
2025-04-14 16:40:11 +00:00
evan-danswer
a377f6ffb6 Unify document deduping (#4520)
* minor cleanup

* cleanup doc deduping and add unit tests
2025-04-14 16:33:00 +00:00
Weves
72ce2f75cc Add env var to docker compose file 2025-04-13 23:14:06 -07:00
joachim-danswer
2683207a24 Expanded basic search (#4517)
* initial working version

* ranking profile

* modification for keyword/instruction retrieval

* mypy fixes

* EL comments

* added env var (True for now)

* flipped default to False

* mypy & final EL/CW comments + import issue
2025-04-13 23:13:01 -07:00
Chris Weaver
e3aab8e85e Improve index attempt display (#4511) 2025-04-13 15:57:47 -07:00
pablonyx
65fd8b90a8 add image indexing tests (#4477)
* address file path

* k

* update

* update

* nit- fix typing

* k

* should path

* in a good state

* k

* k

* clean up file

* update

* update

* k

* k

* k
2025-04-11 22:16:37 +00:00
Chris Weaver
6eaa774051 Confluence timeout fix? (#4509) 2025-04-11 20:06:27 +00:00
evan-danswer
60da282dd1 ensure individual search tool runs do not affect each other (#4503)
* ensure individual search tool runs do not affect each other

* small bug fixes

* nit
2025-04-11 17:24:57 +00:00
rkuo-danswer
493e5386ec Bugfix/salesforce correctness (#4497)
* refactor salesforce sqlite db access

* more refactoring

* refactor again

* refactor again

* rename object

* add finalizer to ensure db connection is always closed

* avoid unnecessarily nesting connections and commit regularly when possible

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-11 08:41:22 +00:00
rkuo-danswer
bc74bcae3a updating more packages (#4502)
* updating more packages

* mypy fixes

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-10 20:53:36 -07:00
evan-danswer
e51e4b33b6 fix max 10 drives issue (#4505) 2025-04-11 02:22:38 +00:00
rkuo-danswer
1d7d5e1809 fix scheduler init (#4504) 2025-04-10 18:21:47 -07:00
Patrick Weston
4a6998b7e3 If an assistant limits knowledge, don't let a user override it in the Sets filter 2025-04-10 11:56:00 -07:00
Weves
6d48b9b4fd fix drive permission sync 2025-04-10 10:41:40 -07:00
Weves
86680cd45b Fix google drive group sync 2025-04-10 10:41:40 -07:00
rkuo-danswer
77e60b9812 remove try update in init ... we really don't need the init to access the db or do any work. (#4498)
Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-10 10:15:28 -07:00
rkuo-danswer
24184024bb Bugfix/dependency updates (#4482)
* bump fastapi and starlette

* bumping llama index and nltk and associated deps

* bump to fix python-multipart

* bump aiohttp

* update package lock for examples/widget

* bump black

* sentencesplitter has changed namespaces

* fix reorder import check, fix missing passlib

* update package-lock.json

* black formatter updated

* reformatted again

* change to black compatible reorder

* change to black compatible reorder-python-imports fork

* fix pytest dependency

* black format again

* we don't need cdk.txt. update packages to be consistent across all packages

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
Co-authored-by: Richard Kuo <rkuo@rkuo.com>
2025-04-10 08:23:02 +00:00
evan-danswer
e79134eaa0 don't yield expected auth errors (#4494)
* don't yield expected auth errors

* only catch 403s
2025-04-10 01:53:02 +00:00
evan-danswer
b5be1fb948 important clarity comment (#4492) 2025-04-10 01:28:34 +00:00
evan-danswer
1718b8f677 fix claude bug (#4493)
* fix claude bug

* fixed tests
2025-04-10 00:59:18 +00:00
rkuo-danswer
3fc8027e73 pass through various id's and log them in the model server for better… (#4485)
* pass through various id's and log them in the model server for better tracking

* fix test

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-10 00:40:57 +00:00
pablonyx
caa9b106e4 k (#4487) 2025-04-10 00:19:47 +00:00
Chris Weaver
89688f0cef Fix naming of volume (#4491) 2025-04-09 23:46:10 +00:00
Raunak Bhagat
eeab3f06ec fix: Remove advanced options toggle if enterprise features are not enabled (#4489)
* Only show advanced options for custom llm providers *if* the paid features are enabled

* Change variable name
2025-04-09 20:42:20 +00:00
rkuo-danswer
15c74224ad xfail bedrock test (#4490)
Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-09 14:44:02 -07:00
Raunak Bhagat
2da26c16a9 Edit .gitignore file to add zed editor configurations (#4483) 2025-04-08 23:10:42 +00:00
pablonyx
8db80a6bb1 Add latency metrics (#4472)
* k

* update

* Update chat_backend.py

nit

---------

Co-authored-by: evan-danswer <evan@danswer.ai>
2025-04-08 21:23:26 +00:00
rkuo-danswer
9b6c7625fd Bugfix/cloud checkpoint cleanup (#4478)
* use send_task to be consistent

* add pidbox monitoring task

* add logging so we can track the task execution

* log the idletime of the pidbox

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-08 19:47:07 +00:00
Chris Weaver
634d990cb8 Fix startup w/ seed_db (#4481) 2025-04-08 19:46:41 +00:00
pablonyx
5792261a4f Minor doc set fix (#4480)
* update

* update

* update

* k
2025-04-08 19:14:56 +00:00
Chris Weaver
71839e723f Add stuff to better avoid bot-detection in web connector (#4479)
* Add stuff to better avoid bot-detection in web connector

* Switch to exception log
2025-04-08 12:31:30 -07:00
evan-danswer
10f1ac5da1 use persona info when creating tool args (#4397)
* use persona info when creating tool args

* fixed unit test

* include system message

* fix unit test

* nit
2025-04-08 02:55:36 +00:00
Weves
1f80ed11d9 Fix black 2025-04-07 20:33:15 -07:00
Emerson Gomes
ba80191f5b Handle exception for token cost calculation (#4474)
The code for token cost calculation fails when using a LiteLLM proxy due to mismatch with the provider naming. For now, just handle this exception and assume cost 0 when that happens instead of breaking the flow - A more precise, LiteLLM proxy based cost calculation (relying in the `/model/info`) LiteLLM Proxy method will be needed
2025-04-07 20:30:50 -07:00
Raunak Bhagat
206daa6903 feat: Vertex AI support (#4458)
* Add gemini well-known-llm-provider

* Edit styling of anonymous function

* Remove space

* Edit how advanced options are displayed

* Add VertexAI to acceptable llm providers

* Add new `FileUploadFormField` component

* Edit FileUpload component

* Clean up logic for displaying native llm providers; add support for more complex `CustomConfigKey` types

* Fix minor nits in web app

* Add ability to pass vertex credentials to `litellm`

* Remove unused prop

* Change name of enum value

* Add back ability to change form based on first time configurations

* Create new Error with string instead of throwing raw string

* Add more Gemini models

* Edit mappings for Gemini models

* Edit comment

* Rearrange llm models

* Run black formatter

* Remove complex configurations during first time registration

* Fix nit

* Update llm provider name

* Edit temporary formik field to also have the filename

* Run reformatter

* Reorder commits

* Add advanced configurations for enabled LLM Providers
2025-04-08 00:56:47 +00:00
evan-danswer
17562f9b8f Id not set in checkpoint2 (#4468)
* unconditionally set completion

* drive connector improvements

* fixing broader typing issue

* fix tests, CW comments

* actual test fix
2025-04-07 17:00:42 -07:00
evan-danswer
9c73099241 Drive smart chip indexing (#4459)
* WIP

* WIP almost done, but realized we can just do basic retrieval

* rebased and added scripts

* improved approach to extracting smart chips

* remove files from previous branch

* fix connector tests

* fix test
2025-04-07 21:52:45 +00:00
Emerson Gomes
88d4a65e7b Fix hardcoded temperature 2025-04-07 13:56:11 -07:00
Weves
614d0f8d72 Add more options to dev compose file 2025-04-07 10:03:34 -07:00
SubashMohan
157da24504 update test expectations for Highspot connector (#4464) 2025-04-07 05:12:22 +00:00
Evan Lohn
989dab51b9 unconditionally set completion 2025-04-06 22:39:42 -07:00
Weves
6a13401172 Small tweaks to thinking 2025-04-06 15:59:00 -07:00
rkuo-danswer
bb73bb224a slack permission tests are enterprise only (#4463)
* slack permission tests are enterprise only

* xfail highspot connector

* test is broken

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-06 15:23:17 -07:00
Richard Kuo (Onyx)
4dc382b571 Revert "slack permission tests are enterprise only"
This reverts commit 056a83493f.
2025-04-06 14:24:42 -07:00
Richard Kuo (Onyx)
056a83493f slack permission tests are enterprise only 2025-04-06 14:24:25 -07:00
Chris Weaver
aadd4f212a Adjust pg engine intialization (#4408)
* Adjust pg engine intialization

* Fix mypy

* Rename var

* fix typo

* Fix tests
2025-04-06 12:44:49 -07:00
Ferdinand Loesch
8b05f98d54 Thinking mode UI. (#4370)
* Update web connector implementation and fix line length issues

* Update configurations and fix connector issues

* Update Slack connector

* Update connectors and add jira_test_env to gitignore, removing sensitive information

* Restore checkpointing functionality and remove sensitive information

* Fix agent mode to properly handle thinking tokens

* up

* Enhance ThinkingBox component with improved content handling and animations. Added support for partial thinking tokens, refined scrolling behavior, and updated CSS for better visual feedback during thinking states.

* Create clean branch with frontend thinking mode changes only

* Update ThinkingBox component to include new props for completion and streaming states. Refactor smooth scrolling logic into a dedicated function for improved readability. Add new entry to .gitignore for jira_test_env.

* Remove autoCollapse prop from AIMessage component for improved flexibility in message display.

* Update thinking tokens handling in chat utils

* Remove unused cleanThinkingContent import from Messages component to streamline code.

---------

Co-authored-by: ferdinand loesch <f.loesch@sportradar.com>
Co-authored-by: EC2 Default User <ec2-user@ip-10-73-128-233.eu-central-1.compute.internal>
Co-authored-by: Your Name <you@example.com>
Co-authored-by: Chris Weaver <25087905+Weves@users.noreply.github.com>
2025-04-05 17:31:02 -07:00
Weves
1c16c4ea3d Adjusting default search assistant 2025-04-05 16:00:47 -07:00
Weves
cf6ff3ce4a Fix run-nginx 2025-04-05 16:00:10 -07:00
Weves
86d9f5d9dd Update resource limits 2025-04-05 16:00:10 -07:00
pablonyx
09450010cd refresh token limit (#4456) 2025-04-05 01:27:57 +00:00
pablonyx
0acd50b75d docx bugfix 2025-04-04 18:20:31 -07:00
pablonyx
c3c9a0e57c Docx parsing (#4455)
* looks okay

* k

* k

* k

* update values

* k

* quick fix
2025-04-04 23:36:43 +00:00
pablonyx
ef978aea97 Additional ACL Tests + Slackbot fix (#4430)
* try turning drive perm sync on

* try passing in env var

* add some logs

* Update pr-integration-tests.yml

* revert "Update pr-integration-tests.yml"

This reverts commit 76a44adbfe.

* Revert "add some logs"

This reverts commit ab9e6bcfb1.

* Revert "try passing in env var"

This reverts commit 9c0b6162ea.

* Revert "try turning drive perm sync on"

This reverts commit 2d35f61f42.

* try slack connector

* k

* update

* remove logs

* remove more logs

* nit

* k

* k

* address nits

* run test with additional logs

* Revert "run test with additional logs"

This reverts commit 1397a2c4a0.

* Revert "address nits"

This reverts commit d5e24b019d.
2025-04-04 22:00:17 +00:00
rkuo-danswer
15ab0586df handle gong api race condition (#4457)
* working around a gong race condition in their api

* add back gong basic test

* formatting

* add the call index

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-04 19:33:47 +00:00
rkuo-danswer
839c8611b7 Bugfix/salesforce (#4335)
* add some gc

* small refactoring for temp directories

* WIP

* add some gc collects and size calculations

* un-xfail

* fix salesforce test

* loose check for number of docs

* adjust test again

* cleanup

* nuke directory param, remove using sqlite db to cache email / id mappings

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-04 16:21:34 +00:00
joachim-danswer
68f9f157a6 Adding research topics for better search context (#4448)
* research topics addition

* allow for question to overwrite research area
2025-04-04 09:53:39 -07:00
SubashMohan
9dd56a5c80 Enhance Highspot connector with error handling and add unit tests (#4454)
* Enhance Highspot connector with error handling and add unit tests for poll_source functionality

* Fix file extension validation logic to allow either plain text or document format
2025-04-04 09:53:16 -07:00
pablonyx
842a73a242 Mock connector fix (#4446) 2025-04-04 09:26:10 -07:00
Weves
c04c1ea31b Fix onyx_config.jsonl 2025-04-03 22:44:56 -07:00
Chris Weaver
2380c2266c Infra and Deployment for ECS Fargate (#4449)
* Infra and Deployment for ECS Fargate
---------

Co-authored-by: jpb80 <jordan.buttkevitz@gmail.com>
2025-04-03 22:43:56 -07:00
pablonyx
b02af9b280 Div Con (#4442)
* base setup

* Improvements + time boxing

* time box fix

* mypy fix

* EL Comments

* CW comments

* date awareness

---------

Co-authored-by: joachim-danswer <joachim@danswer.ai>
2025-04-04 00:52:00 +00:00
rkuo-danswer
42938dcf62 Bugfix/gong tweaks (#4444)
* gong debugging

* add retries via class level session, add debugging

* add gong connector test

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-03 22:22:45 +00:00
pablonyx
93886f0e2c Assistant Prompt length + client side (#4433) 2025-04-03 11:26:53 -07:00
rkuo-danswer
8c3a953b7a add prometheus metrics endpoints via helper package (#4436)
* add prometheus metrics endpoints via helper package

* model server specific requirements

* mark as public endpoint

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-03 16:52:05 +00:00
evan-danswer
54b883d0ca fix large docs selected in chat pruning (#4412)
* fix large docs selected in chat pruning

* better approach to length restriction

* comments

* comments

* fix unit tests and minor pruning bug

* remove prints
2025-04-03 15:48:10 +00:00
pablonyx
91faac5447 minor fix (#4435) 2025-04-03 15:00:27 +00:00
Chris Weaver
1d8f9fc39d Fix weird re-index state (#4439)
* Fix weird re-index state

* Address rkuo's comments
2025-04-03 02:16:34 +00:00
Weves
9390de21e5 More logging on confluence space permissions 2025-04-02 20:01:38 -07:00
rkuo-danswer
3a33433fc9 unit tests for chunk censoring (#4434)
* unit tests for chunk censoring

* type hints for mypy

* pytestification

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-03 01:28:54 +00:00
Chris Weaver
c4865d57b1 Fix tons of users w/o drive access causing timeouts (#4437) 2025-04-03 00:01:05 +00:00
rkuo-danswer
81d04db08f Feature/request id middleware 2 (#4427)
* stubbing out request id

* passthru or create request id's in api and model server

* add onyx request id

* get request id logging into uvicorn

* no logs

* change prefixes

* fix comment

* docker image needs specific shared files

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-02 22:30:03 +00:00
rkuo-danswer
d50a17db21 add filter unit tests (#4421)
* add filter unit tests

* fix tests

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-02 20:26:25 +00:00
pablonyx
dc5a1e8fd0 add more flexible vision support check (#4429) 2025-04-02 18:11:33 +00:00
pablonyx
c0b3681650 update (#4428) 2025-04-02 18:09:44 +00:00
Chris Weaver
7ec04484d4 Another fix for Salesforce perm sync (#4432)
* Another fix for Salesforce perm sync

* typing
2025-04-02 11:08:40 -07:00
Weves
1cf966ecc1 Fix Salesforce perm sync 2025-04-02 10:47:26 -07:00
rkuo-danswer
8a8526dbbb harden join function (#4424)
* harden join function

* remove log spam

* use time.monotonic

* add pid logging

* client only celery app

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-02 01:04:00 -07:00
Weves
be20586ba1 Add retries for confluence calls 2025-04-01 23:00:37 -07:00
Weves
a314462d1e Fix migrations 2025-04-01 21:48:32 -07:00
rkuo-danswer
155f53c3d7 Revert "Add user invitation test (#4161)" (#4422)
This reverts commit 806de92feb.

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-01 19:55:04 -07:00
pablonyx
7c027df186 Fix cc pair doc deletion (#4420) 2025-04-01 18:44:15 -07:00
pablonyx
0a5db96026 update (#4415) 2025-04-02 00:42:42 +00:00
joachim-danswer
daef985b02 Simpler approach (#4414) 2025-04-01 16:52:59 -07:00
Weves
b7ece296e0 Additional logging to salesforce perm sync 2025-04-01 16:19:50 -07:00
Richard Kuo (Onyx)
d7063e0a1d expose acl link feature in onyx_vespa 2025-04-01 16:19:50 -07:00
pablonyx
ee073f6d30 Tracking things (#4352) 2025-04-01 16:19:50 -07:00
Raunak Bhagat
2e524816a0 Regen (#4409)
* Edit styling of regeneration dropdown

* Finish regeneration style changes

* Remove invalid props

* Update web/src/app/chat/input/ChatInputBar.tsx

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Remove unused variables

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2025-04-01 16:19:50 -07:00
pablonyx
47ef0c8658 Still delete cookies (#4404) 2025-04-01 16:19:50 -07:00
pablonyx
806de92feb Add user invitation test (#4161) 2025-04-01 16:19:50 -07:00
pablonyx
da39f32fea Validate advanced fields + proper yup assurances for lists (#4399) 2025-04-01 16:19:50 -07:00
pablonyx
2a87837ce1 Very minor auth standardization (#4400) 2025-04-01 16:19:50 -07:00
pablonyx
7491cdd0f0 Update migration (#4410) 2025-04-01 16:19:50 -07:00
SubashMohan
aabd698295 refactor tests for Highspot connector to use mocking for API key retrieval (#4346) 2025-04-01 16:19:50 -07:00
Weves
4b725e4d1a Init engine in slackbot 2025-04-01 16:19:50 -07:00
rkuo-danswer
34d2d92fa8 also set permission upsert to medium priority (#4405)
Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-04-01 16:19:50 -07:00
pablonyx
3a3b2a2f8d add user files (#4152) 2025-04-01 16:19:44 -07:00
rkuo-danswer
ccd372cc4a Bugfix/slack rate limiting (#4386)
* use slack's built in rate limit handler for the bot

* WIP

* fix the slack rate limit handler

* change default to 8

* cleanup

* try catch int conversion just in case

* linearize this logic better

* code review comments

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-03-31 21:00:26 +00:00
evan-danswer
ea30f1de1e minor improvement to fireflies connector (#4383)
* minor improvement to fireflies connector

* reduce time diff
2025-03-31 20:00:52 +00:00
evan-danswer
a7130681d9 ensure bedrock model contains API key (#4396)
* ensure bedrock model contains API key

* fix storing bug
2025-03-31 19:58:53 +00:00
pablonyx
04911db715 fix slashes (#4259) 2025-03-31 18:08:17 +00:00
rkuo-danswer
feae7d0cc4 disambiguate job name from ee version (#4403)
Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-03-31 11:48:28 -07:00
pablonyx
ac19c64b3c temporary fix for auth (#4402) 2025-03-31 11:10:41 -07:00
pablonyx
03d5c30fd2 fix (#4372) 2025-03-31 17:25:21 +00:00
joachim-danswer
e988c13e1d Additional logging for the path from Search Results to LLM Context (#4387)
* added logging

* nit

* nit
2025-03-31 00:38:43 +00:00
pablonyx
dc18d53133 Improve multi tenant anonymous user interaction (#3857)
* cleaner handling

* k

* k

* address nits

* fix typing
2025-03-31 00:33:32 +00:00
evan-danswer
a1cef389aa fallback to ignoring unicode chars when huggingface tokenizer fails (#4394) 2025-03-30 23:45:20 +00:00
pablonyx
db8d6ce538 formatting (#4316) 2025-03-30 23:43:17 +00:00
pablonyx
e8370dcb24 Update refresh conditional (#4375)
* update refresh conditional

* k
2025-03-30 17:28:35 -07:00
pablonyx
9951fe13ba Fix image input processing without LLMs (#4390)
* quick fix

* quick fix

* Revert "quick fix"

This reverts commit 906b29bd9b.

* nit
2025-03-30 19:28:49 +00:00
evan-danswer
56f8ab927b Contextual Retrieval (#4029)
* contextual rag implementation

* WIP

* indexing test fix

* workaround for chunking errors, WIP on fixing massive memory cost

* mypy and test fixes

* reformatting

* fixed rebase
2025-03-30 18:49:09 +00:00
rkuo-danswer
cb5bbd3812 Feature/mit integration tests (#4299)
* new mit integration test template

* edit

* fix problem with ACL type tags and MIT testing for test_connector_deletion

* fix test_connector_deletion_for_overlapping_connectors

* disable some enterprise only tests in MIT version

* disable a bunch of user group / curator tests in MIT version

* wire off more tests

* typo fix

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
Co-authored-by: Richard Kuo <rkuo@rkuo.com>
2025-03-30 02:41:08 +00:00
Yuhong Sun
742d29e504 Remove BETA 2025-03-29 15:38:46 -07:00
SubashMohan
ecc155d082 fix: ensure base_url ends with a trailing slash (#4388) 2025-03-29 14:34:30 -07:00
pablonyx
0857e4809d fix background color 2025-03-28 16:33:30 -07:00
Chris Weaver
22e00a1f5c Fix duplicate docs (#4378)
* Initial

* Fix duplicate docs

* Add tests

* Switch to list comprehension

* Fix test
2025-03-28 22:25:26 +00:00
Chris Weaver
0d0588a0c1 Remove OnyxContext (#4376)
* Remove OnyxContext

* Fix UT

* Fix tests v2
2025-03-28 12:39:51 -07:00
rkuo-danswer
aab777f844 Bugfix/acl prefix (#4377)
* fix acl prefixing

* increase timeout a tad

* block access to init'ing DocumentAccess directly, fix test to work with ee/MIT

* fix env var checks

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-03-28 05:52:35 +00:00
pablonyx
babbe7689a k (#4380) 2025-03-28 02:23:45 +00:00
evan-danswer
a123661c92 fixed shared folder issue (#4371)
* fixed shared folder issue

* fix existing tests

* default allow files shared with me for service account
2025-03-27 23:39:52 +00:00
pablonyx
c554889baf Fix actions link (#4374) 2025-03-27 16:39:35 -07:00
rkuo-danswer
f08fa878a6 refactor file extension checking and add test for blob s3 (#4369)
* refactor file extension checking and add test for blob s3

* code review

* fix checking ext

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-03-27 18:57:44 +00:00
pablonyx
d307534781 add some debug logging (#4328) 2025-03-27 11:49:32 -07:00
rkuo-danswer
6f54791910 adjust some vars in real time (#4365)
* adjust some vars in real time

* some sanity checking

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-03-27 17:30:08 +00:00
pablonyx
0d5497bb6b Add multi-tenant user invitation flow test (#4360) 2025-03-27 09:53:15 -07:00
Chris Weaver
7648627503 Save all logs + add log persistence to most Onyx-owned containers (#4368)
* Save all logs + add log persistence to most Onyx-owned containers

* Separate volumes for each container

* Small fixes
2025-03-26 22:25:39 -07:00
pablonyx
927554d5ca slight robustification (#4367) 2025-03-27 03:23:36 +00:00
pablonyx
7dcec6caf5 Fix session touching (#4363)
* fix session touching

* Revert "fix session touching"

This reverts commit c473d5c9a2.

* Revert "Revert "fix session touching""

This reverts commit 26a71d40b6.

* update

* quick nit
2025-03-27 01:18:46 +00:00
rkuo-danswer
036648146d possible fix for confluence query filter (#4280)
* possible fix for confluence query filter

* nuke the attachment filter query ... it doesn't work!

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-03-27 00:35:14 +00:00
rkuo-danswer
2aa4697ac8 permission sync runs so often that it starves out other tasks if run at high priority (#4364)
Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-03-27 00:22:53 +00:00
rkuo-danswer
bc9b4e4f45 use slack's built in rate limit handler for the bot (#4362)
Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-03-26 21:55:04 +00:00
evan-danswer
178a64f298 fix issue with drive connector service account indexing (#4356)
* fix issue with drive connector service account indexing

* correct checkpoint resumption

* final set of fixes

* nit

* fix typing

* logging and CW comments

* nit
2025-03-26 20:54:26 +00:00
pablonyx
c79f1edf1d add a flush (#4361) 2025-03-26 14:40:52 -07:00
pablonyx
7c8e23aa54 Fix saml conversion from ext_perm -> basic (#4343)
* fix saml conversion from ext_perm -> basic

* quick nit

* minor fix

* finalize

* update

* quick fix
2025-03-26 20:36:51 +00:00
pablonyx
d37b427d52 fix email flow (#4339) 2025-03-26 18:59:12 +00:00
pablonyx
a65fefd226 test fix 2025-03-26 12:43:38 -07:00
rkuo-danswer
bb09bde519 Bugfix/google drive size threshold 2 (#4355) 2025-03-26 12:06:36 -07:00
Tim Rosenblatt
0f6cf0fc58 Fixes docker logs helper text in run-nginx.sh (#3678)
The docker container name is slightly wrong, and this commit fixes it.
2025-03-26 09:03:35 -07:00
pablonyx
fed06b592d Auto refresh credentials (#4268)
* Auto refresh credentials

* remove dupes

* clean up + tests

* k

* quick nit

* add brief comment

* misc typing
2025-03-26 01:53:31 +00:00
pablonyx
8d92a1524e fix invitation on cloud (#4351)
* fix invitation on cloud

* k
2025-03-26 01:25:17 +00:00
pablonyx
ecfea9f5ed Email formatting devices (#4353)
* update email formatting

* k

* update

* k

* nit
2025-03-25 21:42:32 +00:00
rkuo-danswer
b269f1ba06 fix broken function call (#4354)
Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-03-25 21:07:31 +00:00
pablonyx
30c878efa5 Quick fix (#4341)
* quick fix

* Revert "quick fix"

This reverts commit f113616276.

* smaller chnage
2025-03-25 18:39:55 +00:00
pablonyx
2024776c19 Respect contextvars when parallelizing for Google Drive (#4291)
* k

* k

* fix typing
2025-03-25 17:40:12 +00:00
pablonyx
431316929c k (#4336) 2025-03-25 17:00:35 +00:00
pablonyx
c5b9c6e308 update (#4344) 2025-03-25 16:56:23 +00:00
pablonyx
73dd188b3f update (#4338) 2025-03-25 16:55:25 +00:00
evan-danswer
79b061abbc Daylight savings time handling (#4345)
* confluence timezone improvements

* confluence timezone improvements
2025-03-25 16:11:30 +00:00
rkuo-danswer
552f1ead4f use correct namespace in redis for certain keys (#4340)
Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-03-25 04:10:31 +00:00
evan-danswer
17925b49e8 typing fix (#4342)
* typing fix

* changed type hint to help future coders
2025-03-25 01:01:13 +00:00
rkuo-danswer
55fb5c3ca5 add size threshold for google drive (#4329)
* add size threshold for google drive

* greptile nits

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-03-24 04:09:28 +00:00
evan-danswer
99546e4a4d zendesk checkpointed connector (#4311)
* zendesk v1

* logic fix

* zendesk testing

* add unit tests

* zendesk caching

* CW comments

* fix unit tests
2025-03-23 20:43:13 +00:00
pablonyx
c25d56f4a5 Improved drive flow UX (#4331)
* wip

* k

* looking good

* clenaed up

* quick nit
2025-03-23 19:21:03 +00:00
Chris Weaver
35f3f4f120 Small slack bot fixes (#4333) 2025-03-22 23:22:17 +00:00
Weves
25b69a8aca Adjust spammy log 2025-03-22 14:52:09 -07:00
pablonyx
1b7d710b2a Fix links from file metadata (#4324)
* quick fix

* clarify comment

* fix file metadata

* k
2025-03-22 18:21:47 +00:00
pablonyx
ae3d3db3f4 Update slack bot listing endpoint (#4325)
* update slack bot listing endpoint

* nit
2025-03-22 18:21:31 +00:00
evan-danswer
fb79a9e700 Checkpointed GitHub connector (#4307)
* WIP github checkpointing

* first draft of github checkpointing

* nit

* CW comments

* github basic connector test

* connector test env var

* secrets cant start with GITHUB_

* unit tests and bug fix

* connector failures

* address CW comments

* validation fix

* validation fix

* remove prints

* fixed tests

* 100 items per page
2025-03-22 01:48:05 +00:00
rkuo-danswer
587ba11bbc alembic script logging fixes (#4322)
* log fixing

* fix typos

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-03-22 00:50:58 +00:00
pablonyx
fce81ebb60 Minor ux nits (#4327)
* k

* quick fix
2025-03-21 21:50:56 +00:00
Chris Weaver
61facfb0a8 Fix slack connector (#4326) 2025-03-21 21:30:03 +00:00
Chris Weaver
52b96854a2 Handle move errors (#4317)
* Handle move errors

* Make a warning
2025-03-21 11:11:12 -07:00
Chris Weaver
d123713c00 Fix GPU status request in sync flow (#4318)
* Fix GPU status request in sync flow

* tweak

* Fix test

* Fix more tests
2025-03-21 11:11:00 -07:00
Chris Weaver
775c847f82 Reduce drive retries (#4312)
* Reduce drive retries

* timestamp format fix

---------

Co-authored-by: Evan Lohn <evan@danswer.ai>
2025-03-21 00:23:55 +00:00
rkuo-danswer
6d330131fd wire off image downloading for confluence and gdrive if not enabled i… (#4305)
* wire off image downloading for confluence and gdrive if not enabled in settings

* fix partial func

* fix confluence basic test

* add test for skipping/allowing images

* review comments

* skip allow images test

* mock function using the db

* mock at the proper level

---------

Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-03-20 23:10:28 +00:00
Chris Weaver
0292ca2445 Add option to control # of slack threads (#4310) 2025-03-20 16:56:05 +00:00
Weves
15dd1e72ca Remove slack channel validation 2025-03-20 08:34:54 -07:00
Weves
91c9be37c0 Fix loader 2025-03-20 08:30:46 -07:00
Weves
2a01c854a0 Fix cases where the bot is disabled 2025-03-20 08:30:46 -07:00
rkuo-danswer
85ebadc8eb sanitize llm keys and handle updates properly (#4270)
* sanitize llm keys and handle updates properly

* fix llm provider testing

* fix test

* mypy

* fix default model editing

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
Co-authored-by: Richard Kuo <rkuo@rkuo.com>
2025-03-20 01:13:02 +00:00
Chris Weaver
5dda53eec3 Notion improvement (#4306)
* Notion connector improvements

* Enable recursive index by default

* Small tweak
2025-03-19 23:16:05 +00:00
Chris Weaver
72bf427cc2 Address invalid connector state (#4304)
* Address invalid connector state

* Fixes

* Address mypy

* Address RK comment
2025-03-19 21:15:06 +00:00
Chris Weaver
f421c6010b Checkpointed Jira connector (#4286)
* Checkpointed Jira connector

* nit

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* typing improvements and test fixes

* cleaner typing

* remove default because it is from the future

* mypy

* Address EL comments

---------

Co-authored-by: evan-danswer <evan@danswer.ai>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2025-03-19 20:41:01 +00:00
rkuo-danswer
0b87549f35 Feature/email whitelabeling (#4260)
* work in progress

* work in progress

* WIP

* refactor, use inline attachment for image (base64 encoding doesn't work)

* pretty sure this belongs behind a multi_tenant check

* code review / refactor

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-03-19 13:08:44 -07:00
evan-danswer
06624a988d Gdrive checkpointed connector (#4262)
* WIP rebased

* style

* WIP, testing theory

* fix type issue

* fixed filtering bug

* fix silliness

* correct serialization and validation of threadsafedict

* concurrent drive access

* nits

* nit

* oauth bug fix

* testing fix

* fix slim retrieval

* fix integration tests

* fix testing change

* CW comments

* nit

* guarantee completion stage existence

* fix default values
2025-03-19 18:49:35 +00:00
Chris Weaver
ae774105e3 Fix slack connector creation (#4303)
* Make it fail fast + succeed validation if rate limiting is happening

* Add logging + reduce spam
2025-03-19 18:26:49 +00:00
evan-danswer
4dafc3aa6d Update README.md 2025-03-18 21:14:05 -07:00
evan-danswer
5d7d471823 Update README.md
fix bullet points
2025-03-18 19:34:08 -07:00
Weves
61366df34c Add execute permission 2025-03-18 12:03:32 -07:00
Chris Weaver
1a444245f6 Memory tracking script (#4297)
* Add simple container-level memory tracking script
2025-03-18 12:00:09 -07:00
rkuo-danswer
c32d234491 xfail highspot connector tests (#4296)
Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-03-18 11:47:17 -07:00
pablonyx
07b68436cf use ONYX_CLOUD_CELERY_TASK_PREFIX for pre provisioning (#4293) 2025-03-18 17:34:22 +00:00
Chris Weaver
293d1a4476 Add process-level memory monitoring (#4294)
* Add process-level memory monitoring

* Switch to every 5 minutes
2025-03-17 22:39:52 -07:00
SubashMohan
ba514aaaa2 Highspot connector (#4277) 2025-03-17 08:36:02 -07:00
Arun Philip
f45798b5dd add overflow-auto to show all content in Modal (#4140) 2025-03-15 11:56:19 -07:00
Weves
64ff5df083 Fix basic auth for non-ee 2025-03-14 11:40:17 -07:00
rkuo-danswer
cf1b7e7a93 add proper boolean validation to field (#4283)
Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-03-14 03:38:25 +00:00
Chris Weaver
63692a6bd3 Fix perm sync memory usage (#4282)
* Fix slack perm sync memory usage

* Make perm syncing run in batches rather than fetching everything

* Update backend/ee/onyx/external_permissions/slack/doc_sync.py

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Update backend/ee/onyx/external_permissions/slack/doc_sync.py

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Loud error on slack doc sync missing permissions

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2025-03-14 02:26:22 +00:00
evan-danswer
934700b928 better drive url cleaning (#4247)
* better drive url cleaning

* nit

* address JR comments
2025-03-13 21:16:24 +00:00
Chris Weaver
b1a7cff9e0 Enable claude 3.7 (#4279) 2025-03-13 18:33:06 +00:00
joachim-danswer
463340b8a1 Reduce ranking scores for short chunks without actual information (#4098)
* remove title for slack

* initial working code

* simplification

* improvements

* name change to information_content_model

* avoid boost_score > 1.0

* nit

* EL comments and improvements

Improvements:
  - proper import of information content model from cache or HF
  - warm up for information content model

Other:
  - EL PR review comments

* nit

* requirements version update

* fixed docker file

* new home for model_server configs

* default off

* small updates

* YS comments - pt 1

* renaming to chunk_boost & chunk table def

* saving and deleting chunk stats in new table

* saving and updating chunk stats

* improved dict score update

* create columns for individual boost factors

* RK comments

* Update migration

* manual import reordering
2025-03-13 17:35:45 +00:00
rkuo-danswer
ba82888e1e change max workers to 2 for the moment (#4278)
Co-authored-by: Richard Kuo (Onyx) <rkuo@onyx.app>
2025-03-13 09:58:24 -07:00
rkuo-danswer
39465d3104 change default build info in dockerfile's to something more obviously source only (#4275)
Co-authored-by: Richard Kuo <rkuo@rkuo.com>
2025-03-13 09:42:10 -07:00
rkuo-danswer
b4ecc870b9 safe handling for mediaType in confluence connector in all places (#4269)
Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-03-13 06:09:19 +00:00
rkuo-danswer
a2ac9f02fb unique constraint here doesn't work (#4271)
Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-03-12 16:25:27 -07:00
pablonyx
f87e559cc4 Separate out indexing-time image analysis into new phase (#4228)
* Separate out indexing-time image analysis into new phase

* looking good

* k

* k
2025-03-12 22:26:05 +00:00
pablonyx
5883336d5e Support image indexing customization (#4261)
* working well

* k

* ready to go

* k

* minor nits

* k

* quick fix

* k

* k
2025-03-12 20:03:45 +00:00
pablonyx
0153ff6b51 Improved logout flow (#4258)
* improved app provider modals

* improved logout flow

* k

* updates

* add docstring
2025-03-12 19:19:39 +00:00
pablonyx
2f8f0f01be Tenants on standby (#4218)
* add tenants on standby feature

* k

* fix alembic

* k

* k
2025-03-12 18:25:30 +00:00
pablonyx
a9e5ae2f11 Fix slash mystery (#4263) 2025-03-12 10:03:21 -07:00
Chris Weaver
997f40500d Add support for sandboxed salesforce (#4252) 2025-03-12 00:21:24 +00:00
rkuo-danswer
a918a84e7b fix oauth downloading and size limits in confluence (#4249)
* fix oauth downloading and size limits in confluence

* bump black to get past corrupt hash

* try working around another corrupt package

* fix raw_bytes

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
Co-authored-by: Richard Kuo <rkuo@rkuo.com>
2025-03-11 23:57:47 +00:00
rkuo-danswer
090f3fe817 handle conflicts on lowercasing emails (#4255)
Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-03-11 21:25:50 +00:00
pablonyx
4e70f99214 Fix slack links (#4254)
* fix slack links

* updates

* k

* nit improvements
2025-03-11 19:58:15 +00:00
pablonyx
ecbd4eb1ad add basic user invite flow (#4253) 2025-03-11 19:02:51 +00:00
pablonyx
f94d335d12 Do not show modals to non-multitenant users (#4256) 2025-03-11 11:53:13 -07:00
pablonyx
59a388ce0a fix tests 2025-03-11 11:12:35 -07:00
rkuo-danswer
9cd3cbb978 fix versions (#4250)
Co-authored-by: Richard Kuo <rkuo@rkuo.com>
2025-03-10 23:50:07 -07:00
pablonyx
ab1b6b487e descrease model server logspam (#4166) 2025-03-10 18:29:27 +00:00
Chris Weaver
6ead9510a4 Small notion tweaks (#4244)
* Small notion tweaks

* Add comment
2025-03-10 15:51:12 +00:00
Chris Weaver
965f9e98bf Eliminate extremely long log line for large checkpointds (#4236)
* Eliminate extremely long log line for large checkpointds

* address greptile
2025-03-10 15:50:50 +00:00
rkuo-danswer
426883bbf5 Feature/agentic buffered (#4231)
* rename agent test script to prevent pytest autodiscovery

* first cut

* fix log message

* fix up typing

* add a sample test

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-03-10 15:48:42 +00:00
rkuo-danswer
6ca400ced9 Bugfix/delete document tags slow (#4232)
* Add Missing Date and Message-ID Headers to Ensure Email Delivery

* fix issue Performance issue during connector deletion #4191

* fix ruff

* bump to rebuild PR

---------

Co-authored-by: ThomaciousD <2194608+ThomaciousD@users.noreply.github.com>
Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-03-10 03:07:30 +00:00
Weves
104c4b9f4d small modal improvement 2025-03-09 20:54:53 -07:00
pablonyx
8b5e8bd5b9 k (#4240) 2025-03-10 03:06:13 +00:00
Weves
7f7621d7c0 SMall gitbook tweaks 2025-03-09 14:46:44 -07:00
pablonyx
06dcc28d05 Improved login experience (#4178)
* functional initial auth modal

* k

* k

* k

* looking good

* k

* k

* k

* k

* update

* k

* k

* misc bunch

* improvements

* k

* address comments

* k

* nit

* update

* k
2025-03-09 01:06:20 +00:00
pablonyx
18df63dfd9 Fix local background jobs (#4241) 2025-03-08 14:47:56 -08:00
Chris Weaver
0d3c72acbf Add basic memory logging (#4234)
* Add basic memory logging

* Small tweaks

* Switch to monotonic
2025-03-08 03:49:47 +00:00
rkuo-danswer
9217243e3e Bugfix/query history notes (#4204)
* early work in progress

* rename utility script

* move actual data seeding to a shareable function

* add test

* make the test pass with the fix

* fix comment

* slight improvements and notes to query history and seeding

* update test

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-03-07 19:52:30 +00:00
rkuo-danswer
61ccba82a9 light worker needs to discover some indexing tasks (#4209)
* light worker needs to discover some indexing tasks

* fix formatting

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-03-07 11:52:09 -08:00
Weves
9e8eba23c3 Fix frozen model issue 2025-03-07 09:05:43 -08:00
evan-danswer
0c29743538 use max_tokens to do better rate limit handling (#4224)
* use max_tokens to do better rate limit handling

* fix unti tests

* address greptile comment, thanks greptile
2025-03-06 18:12:05 -08:00
pablonyx
08b2421947 fix 2025-03-06 17:30:31 -08:00
pablonyx
ed518563db minor typing update 2025-03-06 17:02:39 -08:00
pablonyx
a32f7dc936 Fix Connector tests (confluence) (#4221) 2025-03-06 17:00:01 -08:00
rkuo-danswer
798e10c52f revert to always building model server (#4213)
* revert to always building model server

* fix just in case

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-03-06 23:49:45 +00:00
pablonyx
bf4983e35a Ensure consistent UX (#4222)
* ux consistent

* nit

* Update web/src/app/admin/configuration/llm/interfaces.ts

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2025-03-06 23:13:32 +00:00
evan-danswer
b7da91e3ae improved basic search latency (#4186)
* improved basic search latency

* address PR comments + minor cleanup
2025-03-06 22:22:59 +00:00
Weves
29382656fc Stop trying a million times for the user validity check 2025-03-06 15:35:49 -08:00
pablonyx
7d6db8d500 Comma separated list for Github repos (#4199) 2025-03-06 14:46:57 -08:00
Chris Weaver
a7a374dc81 Confluence fixes (#4220)
* Confluence fixes

* Small tweak

* Address greptile comments
2025-03-06 20:57:07 +00:00
rkuo-danswer
facc8cc2fa add scope needed for permission sync (#4198)
Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-03-06 20:03:38 +00:00
rkuo-danswer
2c0af0a0ca Feature/helm updates (#4201)
* add ingress for api and web

* helm setup docs

* add letsencrypt. close blocks

* use pathType ImplementationSpecific as Prefix is deprecated

* fix backend labels. configure nginx routes. update annotations

* fix linting

---------

Co-authored-by: Sajjad Anwar <sajjadkm@gmail.com>
Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-03-06 19:48:20 +00:00
pablonyx
bfbc1cd954 k (#4172) 2025-03-06 18:55:12 +00:00
pablonyx
626da583aa Fix gated tenants (#4177)
* fix

* mypy .
2025-03-06 18:07:15 +00:00
pablonyx
92faca139d Fix extra tenant mystery (#4197)
* fix extra tenant mystery

* nit
2025-03-06 18:06:49 +00:00
pablonyx
cec05c5ee9 Revert "k"
This reverts commit 687122911d.
2025-03-06 09:38:31 -08:00
Richard Kuo (Danswer)
eaf054ef06 oauth router went missing? 2025-03-05 15:50:23 -08:00
pablonyx
a7a1a24658 minor nit 2025-03-05 15:35:02 -08:00
pablonyx
687122911d k 2025-03-05 15:27:14 -08:00
pablonyx
40953bd4fe Workspace configs (#4202) 2025-03-05 12:28:44 -08:00
rkuo-danswer
a7acc07e79 fix usage report pagination (#4183)
* early work in progress

* rename utility script

* move actual data seeding to a shareable function

* add test

* make the test pass with the fix

* fix comment

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-03-05 19:13:51 +00:00
pablonyx
b6e9e65bb8 * Replaces Amazon and Anthropic Icons with version better suitable fo… (#4190)
* * Replaces Amazon and Anthropic Icons with version better suitable for both Dark and  Light modes;
* Adds icon for DeepSeek;
* Simplify logic on icon selection;
* Adds entries for Phi-4, Claude 3.7, Ministral and Gemini 2.0 models

* nit

* k

* k

---------

Co-authored-by: Emerson Gomes <emerson.gomes@thalesgroup.com>
2025-03-05 17:57:39 +00:00
pablonyx
20f2b9b2bb Add image support for search (#4090)
* add support for image search

* quick fix up

* k

* k

* k

* k

* nit

* quick fix for connector tests
2025-03-05 17:44:18 +00:00
Chris Weaver
f731beca1f Add ONYX_QUERY_HISTORY_TYPE to the dev compose files (#4196) 2025-03-05 17:34:55 +00:00
Weves
fe246aecbb Attempt to address tool happy claude 2025-03-05 09:47:27 -08:00
pablonyx
50ad066712 Better filtering (#4185)
* k

* k

* k

* k

* k
2025-03-05 04:35:50 +00:00
rkuo-danswer
870b59a1cc Bugfix/vertex crash (#4181)
* Update text embedding model to version 005 and enhance embedding retrieval process

* re

* Fix formatting issues

* Add support for Bedrock reranking provider and AWS credentials handling

* fix: improve AWS key format validation and error messages

* Fix vertex embedding model crash

* feat: add environment template for local development setup

* Add display name for Claude 3.7 Sonnet model

* Add display names for Gemini 2.0 models and update Claude 3.7 Sonnet entry

* Fix ruff errors by ensuring lines are within 130 characters

* revert to currently default onyx browser settings

* add / fix boto requirements

---------

Co-authored-by: ferdinand loesch <f.loesch@sportradar.com>
Co-authored-by: Ferdinand Loesch <ferdinandloesch@me.com>
Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-03-05 01:59:46 +00:00
pablonyx
5c896cb0f7 add minor fixes (#4170) 2025-03-04 20:29:28 +00:00
pablonyx
184b30643d Nit: logging adjustments (#4182) 2025-03-04 11:39:53 -08:00
pablonyx
ae585fd84c Delete all chats (#4171)
* nit

* k
2025-03-04 10:00:08 -08:00
rkuo-danswer
61e8f371b9 fix blowing up the entire task on exception and trying to reuse an in… (#4179)
* fix blowing up the entire task on exception and trying to reuse an invalid db session

* list comprehension

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-03-04 00:57:27 +00:00
rkuo-danswer
33cc4be492 Bugfix/GitHub validation (#4173)
* fixing unexpected errors disabling connectors

* rename UnexpectedError to UnexpectedValidationError

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-03-04 00:09:49 +00:00
joachim-danswer
117c8c0d78 Enable ephemeral message responses by Onyx Slack Bots (#4142)
A new setting 'is_ephemeral' has been added to the Slack channel configurations. 

Key features/effects:

  - if is_ephemeral is set for standard channel (and a Search Assistant is chosen):
     - the answer is only shown to user as an ephemeral message
     - the user has access to his private documents for a search (as the answer is only shown to them) 
     - the user has the ability to share the answer with the channel or keep private
     - a recipient list cannot be defined if the channel is set up as ephemeral
 
  - if is_ephemeral is set and DM with bot:
    - the user has access to private docs in searches
    - the message is not sent as ephemeral, as it is a 1:1 discussion with bot

 - if is_ephemeral is not set but recipient list is set:
    - the user search does *not* have access to their private documents as the information goes to the recipient list team members, and they may have different access rights

 - Overall:
     - Unless the channel is set to is_ephemeral or it is a direct conversation with the Bot, only public docs are accessible  
     - The ACL is never bypassed, also not in cases where the admin explicitly attached a document set to the bot config.
2025-03-03 15:02:21 -08:00
rkuo-danswer
9bb8cdfff1 fix web connector tests to handle new deduping (#4175)
Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-03-03 20:54:20 +00:00
Weves
a52d0d29be Small tweak to NumberInput 2025-03-03 11:20:53 -08:00
Chris Weaver
f25e1e80f6 Add option to not re-index (#4157)
* Add option to not re-index

* Add quantizaton / dimensionality override support

* Fix build / ut
2025-03-03 10:54:11 -08:00
Yuhong Sun
39fd6919ad Fix web scrolling 2025-03-03 09:00:05 -08:00
Yuhong Sun
7f0653d173 Handling of #! sites (#4169) 2025-03-03 08:18:44 -08:00
SubashMohan
e9905a398b Enhance iframe content extraction and add thresholds for JavaScript disabled scenarios (#4167) 2025-03-02 19:29:10 -08:00
Brad Slavin
3ed44e8bae Update Unstructured documentation URL to new location (#4168) 2025-03-02 19:16:38 -08:00
pablonyx
64158a5bdf silence_logs (#4165) 2025-03-02 19:00:59 +00:00
pablonyx
afb2393596 fix dark mode index attempt failure (#4163) 2025-03-02 01:23:16 +00:00
pablonyx
d473c4e876 Fix curator default persona editing (#4158)
* k

* k
2025-03-02 00:40:14 +00:00
pablonyx
692058092f fix typo 2025-03-01 13:00:07 -08:00
pablonyx
e88325aad6 bump version (#4164) 2025-03-01 01:58:45 +00:00
pablonyx
7490250e91 Fix user group edge case (#4159)
* fix user group

* k
2025-02-28 23:55:21 +00:00
pablonyx
e5369fcef8 Update warning copy (#4160)
* k

* k

* quick nit
2025-02-28 23:46:21 +00:00
Yuhong Sun
b0f00953bc Add CODEOWNERS 2025-02-28 13:57:33 -08:00
rkuo-danswer
f6a75c86c6 Bugfix/emit background error (#4156)
* print the test name when it runs

* type hints

* can't reuse session after an exception

* better logging

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-02-28 18:35:24 +00:00
pablonyx
ed9989282f nit- update casing enforcement on frontend 2025-02-28 10:09:06 -08:00
pablonyx
e80a0f2716 Improved google connector flow (#4155)
* fix handling

* k

* k

* fix function

* k

* k
2025-02-28 05:13:39 +00:00
rkuo-danswer
909403a648 Feature/confluence oauth (#3477)
* first cut at slack oauth flow

* fix usage of hooks

* fix button spacing

* add additional error logging

* no dev redirect

* early cut at google drive oauth

* second pass

* switch to production uri's

* try handling oauth_interactive differently

* pass through client id and secret if uploaded

* fix call

* fix test

* temporarily disable check for testing

* Revert "temporarily disable check for testing"

This reverts commit 4b5a022a5f.

* support visibility in test

* missed file

* first cut at confluence oauth

* work in progress

* work in progress

* work in progress

* work in progress

* work in progress

* first cut at distributed locking

* WIP to make test work

* add some dev mode affordances and gate usage of redis behind dynamic credentials

* mypy and credentials provider fixes

* WIP

* fix created at

* fix setting initialValue on everything

* remove debugging, fix ??? some TextFormField issues

* npm fixes

* comment cleanup

* fix comments

* pin the size of the card section

* more review fixes

* more fixes

---------

Co-authored-by: Richard Kuo <rkuo@rkuo.com>
Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-02-28 03:48:51 +00:00
pablonyx
cd84b65011 quick fix (#4154) 2025-02-28 02:03:34 +00:00
pablonyx
413f21cec0 Filter assistants fix (#4153)
* k

* quick nit

* minor assistant filtering fix
2025-02-28 02:03:21 +00:00
pablonyx
eb369384a7 Log server side auth error + slackbot pagination fix (#4149) 2025-02-27 18:05:28 -08:00
pablonyx
0a24dbc52c k# Please enter the commit message for your changes. Lines starting (#4144) 2025-02-27 23:34:20 +00:00
pablonyx
a7ba0da8cc Lowercase multi tenant email mapping (#4141) 2025-02-27 15:33:40 -08:00
Richard Kuo (Danswer)
aaced6d551 scan images 2025-02-27 15:25:29 -08:00
Richard Kuo (Danswer)
4c230f92ea trivy test 2025-02-27 15:05:03 -08:00
Richard Kuo (Danswer)
07d75b04d1 enable trivy scan 2025-02-27 14:22:44 -08:00
evan-danswer
a8d10750c1 fix propagation of is_agentic (#4150) 2025-02-27 11:56:51 -08:00
pablonyx
85e3ed57f1 Order chat sessions by time updated, not created (#4143)
* order chat sessions by time updated, not created

* quick update

* k
2025-02-27 17:35:42 +00:00
pablonyx
e10cc8ccdb Multi tenant user google auth fix (#4145) 2025-02-27 10:35:38 -08:00
pablonyx
7018bc974b Better looking errors (#4050)
* add error handling

* fix

* k
2025-02-27 04:58:25 +00:00
pablonyx
9c9075d71d Minor improvements to provisioning (#4109)
* quick fix

* k

* nit
2025-02-27 04:57:31 +00:00
pablonyx
338e084062 Improved tenant handling for slack bot (#4099) 2025-02-27 04:06:26 +00:00
pablonyx
2f64031f5c Improved tenant handling for slack bot1 (#4104) 2025-02-27 03:40:50 +00:00
pablonyx
abb74f2eaa Improved chat search (#4137)
* functional + fast

* k

* adapt

* k

* nit

* k

* k

* fix typing

* k
2025-02-27 02:27:45 +00:00
pablonyx
a3e3d83b7e Improve viewable assistant logic (#4125)
* k

* quick fix

* k
2025-02-27 01:24:39 +00:00
pablonyx
4dc88ca037 debug playwright failure case 2025-02-26 17:32:26 -08:00
rkuo-danswer
11e7e1c4d6 log processed tenant count (#4139)
Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-02-26 17:26:48 -08:00
pablonyx
f2d74ce540 Address Auth Edge Case (#4138) 2025-02-26 17:24:23 -08:00
rkuo-danswer
25389c5120 first cut at anonymizing query history (#4123)
Co-authored-by: Richard Kuo <rkuo@rkuo.com>
2025-02-26 21:32:01 +00:00
pablonyx
ad0721ecd8 update (#4086) 2025-02-26 18:12:07 +00:00
pablonyx
426a8842ae Markdown copying / html formatting (#4120)
* k

* delete unnecessary util
2025-02-26 04:56:38 +00:00
pablonyx
a98dcbc7de Update tenant logic (#4122)
* k

* k

* k

* quick nit

* nit
2025-02-26 03:53:46 +00:00
pablonyx
6f389dc100 Improve lengthy chats (#4126)
* remove scroll

* working well

* nit

* k

* nit
2025-02-26 03:22:21 +00:00
pablonyx
d56177958f fix email headers (#4100) 2025-02-26 03:12:30 +00:00
Kaveen Jayamanna
0e42ae9024 Content of .xlsl are not properly read during indexing. (#4035) 2025-02-25 21:10:47 -08:00
Weves
ce2b4de245 temp remove 2025-02-25 20:46:55 -08:00
Chris Weaver
a515aa78d2 Fix confluence test (#4130) 2025-02-26 03:03:54 +00:00
Weves
23073d91b9 reduce number of chars to index for search 2025-02-25 19:27:50 -08:00
Chris Weaver
f767b1f476 Fix confluence permission syncing at scale (#4129)
* Fix confluence permission syncing at scale

* Remove line

* Better log message

* Adjust log
2025-02-25 19:22:52 -08:00
pablonyx
9ffc8cb2c4 k 2025-02-25 18:15:49 -08:00
pablonyx
98bfb58147 Handle bad slack configurations– multi tenant (#4118)
* k

* quick nit

* k

* k
2025-02-25 22:22:54 +00:00
evan-danswer
6ce810e957 faster indexing status at scale plus minor cleanups (#4081)
* faster indexing status at scale plus minor cleanups

* mypy

* address chris comments

* remove extra prints
2025-02-25 21:22:26 +00:00
pablonyx
07b0b57b31 (nit) bump timeout 2025-02-25 14:10:30 -08:00
pablonyx
118cdd7701 Chat search (#4113)
* add chat search

* don't add the bible

* base functional

* k

* k

* functioning

* functioning well

* functioning well

* k

* delete bible

* quick cleanup

* quick cleanup

* k

* fixed frontend hooks

* delete bible

* nit

* nit

* nit

* fix build

* k

* improved debouncing

* address comments

* fix alembic

* k
2025-02-25 20:49:46 +00:00
rkuo-danswer
ac83b4c365 validate connector deletion (#4108)
* validate connector deletion

* fixes

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-02-25 20:35:21 +00:00
pablonyx
fa408ff447 add 3.7 (#4116) 2025-02-25 12:41:40 -08:00
rkuo-danswer
4aa8eb8b75 fix scrolling test (#4117)
Co-authored-by: Richard Kuo <rkuo@rkuo.com>
2025-02-25 10:23:04 -08:00
rkuo-danswer
60bd9271f7 Bugfix/model tests (#4092)
* trying out a fix

* add ability to manually run model tests

* add log dump

* check status code, not text?

* just the model server

* add port mapping to host

* pass through more api keys

* add azure tests

* fix litellm env vars

* fix env vars in github workflow

* temp disable litellm test

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-02-25 04:53:51 +00:00
Weves
5d58a5e3ea Add ability to index all of Github 2025-02-24 18:56:36 -08:00
Chris Weaver
a99dd05533 Add option to index all Jira projects (#4106)
* Add option to index all Jira projects

* Fix test

* Fix web build

* Address comment
2025-02-25 02:07:00 +00:00
pablonyx
0dce67094e Prettier formatting for bedrock (#4111)
* k

* k
2025-02-25 02:05:29 +00:00
pablonyx
ffd14435a4 Text overflow logic (#4051)
* proper components

* k

* k

* k
2025-02-25 01:05:22 +00:00
rkuo-danswer
c9a3b45ad4 more aggressive handling of tasks blocking deletion (#4093)
* more aggressive handling of tasks blocking deletion

* comment updated

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-02-24 22:41:13 +00:00
pablonyx
7d40676398 Heavy task improvements, logging, and validation (#4058) 2025-02-24 13:48:53 -08:00
rkuo-danswer
b9e79e5db3 tighten up logs (#4076)
Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-02-24 19:23:00 +00:00
rkuo-danswer
558bbe16e4 Bugfix/termination cleanup (#4077)
* move activity timeout cleanup to the function exit

* fix excessive logging

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-02-24 19:21:55 +00:00
evan-danswer
076619ce2c make Settings model match db (#4087) 2025-02-24 19:04:36 +00:00
pablonyx
1263e21eb5 k (#4102) 2025-02-24 17:44:18 +00:00
pablonyx
f0c13b6558 fix starter message editing (#4101) 2025-02-24 01:01:01 +00:00
evan-danswer
a7125662f1 Fix gpt o-series code block formatting (#4089)
* prompt addition for gpt o-series to encourage markdown formatting of code blocks

* fix to match https://simonwillison.net/tags/markdown/

* chris comment

* chris comment
2025-02-24 00:59:48 +00:00
evan-danswer
4a4e4a6c50 thread utils respect contextvars (#4074)
* thread utils respect contextvars now

* address pablo comments

* removed tenant id from places it was already being passed

* fix rate limit check and pablo comment
2025-02-24 00:43:21 +00:00
pablonyx
1f2af373e1 improve scroll (#4096) 2025-02-23 19:20:07 +00:00
Weves
bdaa293ae4 Fix nginx for prod compose file 2025-02-21 16:57:54 -08:00
pablonyx
5a131f4547 Fix integration tests (#4059) 2025-02-21 15:56:11 -08:00
rkuo-danswer
ffb7d5b85b enable manual testing for model server (#4003)
* trying out a fix

* add ability to manually run model tests

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-02-21 14:00:32 -08:00
rkuo-danswer
fe8a5d671a don't spam the logs with texts on auth errors (#4085)
* don't spam the logs with texts on auth errors

* refactor the logging a bit

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-02-21 13:40:07 -08:00
Yuhong Sun
6de53ebf60 README Touchup (#4088) 2025-02-21 13:31:07 -08:00
rkuo-danswer
61d536c782 tool fixes (#4075) 2025-02-21 12:30:33 -08:00
Chris Weaver
e1ff9086a4 Fix LLM selection (#4078) 2025-02-21 11:32:57 -08:00
evan-danswer
ba21bacbbf coerce useLanggraph to boolean (#4084)
* coerce useLanggraph to boolean
2025-02-21 09:43:46 -08:00
pablonyx
158bccc3fc Default on for non-ee (#4083) 2025-02-21 09:11:45 -08:00
Weves
599b7705c2 Fix gitbook connector issues 2025-02-20 15:29:11 -08:00
rkuo-danswer
4958a5355d try more efficient query (#4047) 2025-02-20 12:58:50 -08:00
Chris Weaver
c4b8519381 Add support for sending email invites for single tenant users (#4065) 2025-02-19 21:05:23 -08:00
rkuo-danswer
8b4413694a fix usage of tenant_id (#4062)
Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-02-19 17:50:58 -08:00
pablonyx
57cf7d9fac default agent search on 2025-02-19 17:21:26 -08:00
Chris Weaver
ad4efb5f20 Pin xmlsec version + improve SAML flow (#4054)
* Pin xmlsec version

* testing

* test nginx conf change

* Pass through more

* Cleanup + remove DOMAIN across the board
2025-02-19 16:02:05 -08:00
evan-danswer
e304ec4ab6 Agent search history displayed answer (#4052) 2025-02-19 15:52:16 -08:00
joachim-danswer
1690dc45ba timout bumps (#4057) 2025-02-19 15:51:45 -08:00
pablonyx
7582ba1640 Fix streaming (#4055) 2025-02-19 15:23:40 -08:00
pablonyx
99fc546943 Miscellaneous indexing fixes (#4042) 2025-02-19 11:34:49 -08:00
pablonyx
353c185856 Update error class (#4006) 2025-02-19 10:52:23 -08:00
pablonyx
7c96b7f24e minor alembic nit 2025-02-19 10:47:33 -08:00
pablonyx
31524a3eff add connector validation (#4016) 2025-02-19 10:46:06 -08:00
rkuo-danswer
c9f618798e support scrolling before scraping (#4040)
* support scrolling before scraping

* fix mypy

* install playwright deps

---------

Co-authored-by: Richard Kuo <rkuo@rkuo.com>
2025-02-19 17:54:58 +00:00
rkuo-danswer
11f6b44625 Feature/indexing hard timeout 3 (#3980)
* WIP

* implement hard timeout

* fix callbacks

* put back the timeout

* missed a file

* fixes

* try installing playwright deps

* Revert "try installing playwright deps"

This reverts commit 4217427568.

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
Co-authored-by: Richard Kuo <rkuo@rkuo.com>
2025-02-19 04:12:13 +00:00
pablonyx
e82a25f49e Non-SMTP password reset (#4031)
* update

* validate

* k

* minor cleanup

* nit

* finalize

* k

* fix tests

* fix tests

* fix tests
2025-02-19 02:02:28 +00:00
Weves
5a9ec61446 Don't pass thorugh parallel_tool_calls for o-family models 2025-02-18 18:57:05 -08:00
pablonyx
9635522de8 Admin default (#4032)
* clean up

* minor cleanup

* building

* update agnetic message look

* k

* fix alembic history
2025-02-18 18:31:54 -08:00
Yuhong Sun
630bdf71a3 Update README (#4044) 2025-02-18 18:31:28 -08:00
pablonyx
47fd4fa233 Strict Tenant ID Enforcement (#3871)
* strict tenant id enforcement

* k

* k

* nit

* merge

* nit

* k
2025-02-19 00:52:56 +00:00
Weves
2013beb9e0 Adjust behavior when display_model_names is null 2025-02-18 16:19:08 -08:00
pablonyx
466276161c Quick link fix (#4039) 2025-02-18 16:18:41 -08:00
rkuo-danswer
c934892c68 add index to document__tag.tag_id (#4038)
Co-authored-by: Richard Kuo <rkuo@rkuo.com>
2025-02-18 19:51:36 +00:00
joachim-danswer
1daa3a663d timout bumps (#4037) 2025-02-18 18:26:29 +00:00
Chris Weaver
7324273233 Small confluence group sync tweaks (#4033) 2025-02-18 07:05:41 +00:00
evan-danswer
2b2ba5478c new is_agentic flag for chatmessages (#4026)
* new is_agentic flag for chatmessages

* added cancelled error to db

* added cancelled error to returned message
2025-02-18 04:20:33 +00:00
pablonyx
045a41d929 Add default slack bot disabling (#3935)
* add slack bot disabling

* update

* k

* minor
2025-02-18 04:08:33 +00:00
pablonyx
e3bc7cc747 improve validation schema (#3984) 2025-02-18 03:18:23 +00:00
evan-danswer
0826b035a2 Update README.md (#3908)
* Update README.md

help future integration test runners

* Update README.md

* Update README.md

---------

Co-authored-by: pablonyx <pablo@danswer.ai>
2025-02-18 03:08:47 +00:00
pablonyx
cf0e3d1ff4 fix main 2025-02-17 18:23:15 -08:00
evan-danswer
10c81f75e2 consistent refined answer improvement (#4027) 2025-02-17 21:02:03 +00:00
evan-danswer
5ca898bde2 Force use tool overrides (#4024)
* initial rename + timeout bump

* querry override
2025-02-17 21:01:24 +00:00
pablonyx
58b252727f UX (#4014) 2025-02-17 13:21:43 -08:00
joachim-danswer
86bd121806 no reranking if local model w/o GPU for Agent Search (#4011)
* no reranking if locql model w/o GPU

* more efficient gpu status calling

* fix unit tests

---------

Co-authored-by: Evan Lohn <evan@danswer.ai>
2025-02-17 14:13:24 +00:00
evan-danswer
9324f426c0 added timeouts for agent llm calls (#4019)
* added timeouts for agent llm calls

* timing suggestions in agent config

* improved timeout that actually exits early

* added new global timeout and connection timeout distinction

* fixed error raising bug and made entity extraction recoverable

* warnings and refactor

* mypy

---------

Co-authored-by: joachim-danswer <joachim@danswer.ai>
2025-02-17 07:02:19 +00:00
joachim-danswer
20d3efc86e By default, use primary LLM for initial & refined answer (#4012)
* By default, use primary LLM for initial & refined answer

Use of new env variable

* simplification
2025-02-16 23:20:07 +00:00
pablonyx
ec0e55fd39 Seeding count issue (#4009)
* k

* k

* quick nit

* nit
2025-02-16 20:49:25 +00:00
pablonyx
e441c899af Playwright + Chromatic update (#4015) 2025-02-16 13:03:45 -08:00
Chris Weaver
f1fc8ac19b Connector checkpointing (#3876)
* wip checkpointing/continue on failure

more stuff for checkpointing

Basic implementation

FE stuff

More checkpointing/failure handling

rebase

rebase

initial scaffolding for IT

IT to test checkpointing

Cleanup

cleanup

Fix it

Rebase

Add todo

Fix actions IT

Test more

Pagination + fixes + cleanup

Fix IT networking

fix it

* rebase

* Address misc comments

* Address comments

* Remove unused router

* rebase

* Fix mypy

* Fixes

* fix it

* Fix tests

* Add drop index

* Add retries

* reset lock timeout

* Try hard drop of schema

* Add timeout/retries to downgrade

* rebase

* test

* test

* test

* Close all connections

* test closing idle only

* Fix it

* fix

* try using null pool

* Test

* fix

* rebase

* log

* Fix

* apply null pool

* Fix other test

* Fix quality checks

* Test not using the fixture

* Fix ordering

* fix test

* Change pooling behavior
2025-02-16 02:34:39 +00:00
Weves
bc087fc20e Fix ruff 2025-02-15 16:35:15 -08:00
Yuhong Sun
ab8081c36b k 2025-02-15 13:42:43 -08:00
Adam Siemiginowski
f371efc916 Fix Zulip connector schema + links and enable temporal metadata (#4005) 2025-02-15 11:49:41 -08:00
pablonyx
7fd5d31dbe Minor background process log cleanup (#4010) 2025-02-15 11:03:10 -08:00
rkuo-danswer
2829e6715e Feature/propagate exceptions (#3974)
* better propagation of exceptions up the stack

* remove debug testing

* refactor the watchdog more to emit data consistently at the end of the function

* enumerate a lot more terminal statuses

* handle more codes

* improve logging

* handle "-9"

* single line exception logging

* typo/grammar

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-02-15 04:53:01 +00:00
Weves
bc7b4ec396 Fix typing for metadata 2025-02-14 18:19:37 -08:00
pablonyx
697f8bc1c6 Reduce background errors (#4004) 2025-02-14 17:35:26 -08:00
evan-danswer
3ba65214b8 bump version and fix related issues (#3996) 2025-02-14 19:57:12 +00:00
joachim-danswer
6687d5d499 major Agent Search Updates (#3994) 2025-02-14 19:40:21 +00:00
pablonyx
ec78f78f3c k (#3999) 2025-02-14 02:33:42 +00:00
rkuo-danswer
ed253e469a add nano and vim to base image (#3995)
Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-02-14 02:27:24 +00:00
pablodanswer
e3aafd95af k 2025-02-13 18:34:05 -08:00
Weves
3a704f1950 Add new vars to github action 2025-02-13 18:33:17 -08:00
Weves
2bf8a7aee5 Misc improvements 2025-02-13 18:33:17 -08:00
Weves
c2f3302aa0 Fix mypy 2025-02-13 18:33:17 -08:00
neo773
7f4d1f27a0 Gitbook connector (#3991)
* add parser

* add tests
2025-02-13 17:58:05 -08:00
pablonyx
b70db15622 Bugfix Vespa Deletion Script (#3998) 2025-02-13 17:26:04 -08:00
pablonyx
e9492ce9ec minor read replica fix (#3997) 2025-02-13 17:11:45 -08:00
pablodanswer
35574369ed update cloud build to use public stripe key 2025-02-13 16:55:56 -08:00
pablonyx
eff433bdc5 Reduce errors in workers (#3962) 2025-02-13 15:59:44 -08:00
pablonyx
3260d793d1 Billing fixes (#3976) 2025-02-13 15:59:10 -08:00
Yuhong Sun
1a7aca06b9 Fix Agent Slowness (#3979) 2025-02-13 15:54:34 -08:00
pablonyx
c6434db7eb Add delete all for tenants in Vespa (#3970) 2025-02-13 14:33:49 -08:00
joachim-danswer
667b9e04c5 updated rerank function arguments (#3988) 2025-02-13 14:13:14 -08:00
rkuo-danswer
29c84d7707 xfail this test (#3992)
Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-02-13 14:09:15 -08:00
pablonyx
17c915b11b Improved email formatting (#3985)
* prettier emails

* k

* remove mislieading comment

* minor typing
2025-02-13 21:11:57 +00:00
rkuo-danswer
95ca592d6d fix title check (#3993)
Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-02-13 13:14:55 -08:00
Yuhong Sun
e39a27fd6b Hope this actually skips the model server builds now (#3987) 2025-02-13 11:48:25 -08:00
rkuo-danswer
26d3c952c6 Bugfix/jira connector test 2 (#3986)
* fix jira connector test

* typo fix

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-02-13 10:21:54 -08:00
rkuo-danswer
53683e2f3c fix jira connector test (#3983)
Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-02-13 09:41:45 -08:00
rkuo-danswer
0c0113a481 ignore result when using send_task on lightweight tasks (#3978)
* ignore result when using send_task on lightweight tasks

* fix ignore_result

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
Co-authored-by: Richard Kuo <rkuo@rkuo.com>
2025-02-13 03:22:13 -08:00
Chris Weaver
c0f381e471 Add background errors ability (#3982) 2025-02-13 00:44:55 -08:00
rkuo-danswer
5ed83f1148 no thread local locks in callbacks and raise permission sync timeout … (#3977)
* no thread local locks in callbacks and raise permission sync timeout by a lot based on empirical log observations

* more fixes

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-02-12 22:31:01 -08:00
pablonyx
9db7b67a6c Minor misc ux improvements (#3966)
* minor misc ux

* nit

* k

* quick nit

* k
2025-02-13 04:43:11 +00:00
Yuhong Sun
2850048c6b Jira add key to semantic id (#3981) 2025-02-12 20:04:47 -08:00
rkuo-danswer
61058e5fcd merge monitoring with kickoff tasks (#3953)
* move indexing

* all monitor work moved

* reacquire lock more

* remove monitor task completely

* fix import

* fix pruning finalization

* no multiplier on system/cloud tasks

* monitor queues every 30 seconds in the cloud

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-02-13 02:35:41 +00:00
Yuhong Sun
c87261cda7 Fix edge case with run functions in parallel 2025-02-12 17:57:39 -08:00
pablonyx
e030b0a6fc Address (#3955) 2025-02-12 13:53:13 -08:00
Yuhong Sun
61136975ad Don't build model server every night (#3973) 2025-02-12 13:08:05 -08:00
Weves
0c74bbf9ed Clean illegal chars in metadata 2025-02-12 11:49:16 -08:00
pablonyx
12b2126e69 Update assistants visibility, minor UX, .. (#3965)
* update assistant logic

* quick nit

* k

* fix "featured" logic

* Small tweaks

* k

---------

Co-authored-by: Weves <chrisweaver101@gmail.com>
2025-02-12 00:43:20 +00:00
Chris Weaver
037943c6ff Support share/view IDs for Airtable (#3967) 2025-02-11 16:19:38 -08:00
pablonyx
f9485b1325 Ensure sidepanel defaults sidebar off (#3844)
* ensure sidepanel defaults sidepanel off

* address comment

* reformat

* initial visible
2025-02-11 22:22:56 +00:00
rkuo-danswer
552a0630fe Merge pull request #3948 from onyx-dot-app/feature/beat_rtvar
refactoring and update multiplier in real time
2025-02-11 14:05:14 -08:00
Richard Kuo (Danswer)
5bf520d8b8 comments 2025-02-11 14:04:49 -08:00
Weves
7dc5a77946 Improve starter message splitting 2025-02-11 11:10:13 -08:00
rkuo-danswer
03abd4a1bc Merge pull request #3938 from onyx-dot-app/feature/model_server_logs
improve gpu detection functions and logging in model server
2025-02-11 09:43:25 -08:00
Richard Kuo (Danswer)
16d6d708f6 update logging 2025-02-11 09:15:39 -08:00
Richard Kuo
9740ed32b5 fix reading redis values as floats 2025-02-10 20:48:55 -08:00
rkuo-danswer
b56877cc2e Bugfix/dedupe ids (#3952)
* dedupe make_private_persona and update test

* add comment

* comments, and just have duplicate user id's for the test instead of modifying edit

* found the magic word

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-02-11 02:27:55 +00:00
pablodanswer
da5c83a96d k 2025-02-10 17:45:00 -08:00
Weves
818225c60e Fix starter message overflow 2025-02-10 17:17:31 -08:00
Weves
d78a1fe9c6 Fix for red background 2025-02-10 16:36:26 -08:00
Weves
05b3e594b5 Increase timeout for reasoning models + make o1 available by default 2025-02-10 16:11:01 -08:00
Richard Kuo (Danswer)
5a4d007cf9 comments 2025-02-10 15:03:59 -08:00
pablonyx
3b25a2dd84 Ux improvements (#3947)
* black history sidebar

* misc improvements

* minor misc ux improvemnts

* quick nit

* add nits

* quick nit
2025-02-10 12:18:41 -08:00
pablonyx
baee4c5f22 Multi tenant specific error page (#3928)
Multi tenant specific error page
2025-02-10 11:51:29 -08:00
Richard Kuo (Danswer)
5e32f9d922 refactoring and update multiplier in real time 2025-02-10 11:20:38 -08:00
pablonyx
1454e7e07d New ux dark (#3944) 2025-02-09 21:14:32 -08:00
rkuo-danswer
6848337445 add validation for pruning/group sync etc (#3882)
* add validation for pruning

* fix missing class

* get external group sync validation working

* backport fix for pruning check

* fix pruning

* log the payload id

* remove scan_iter from pruning

* missed removed scan_iter, also remove other scan_iters and replace with sscan_iter of the lookup table

* external group sync needs active signal. h

* log the payload id when the task starts

* log the payload id in more places

* use the replica

* increase primary pool and slow down beat

* scale sql pool based on concurrency

* fix concurrency

* add debugging for external group sync and tenant

* remove debugging and fix payload id

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-02-10 03:12:21 +00:00
pablonyx
519fbd897e Add Dark Mode (#3936)
* k

* intermediate unification

* many changes

* update dark mode configs

* updates

* decent state

* functional

* mostly clean

* updaet model selector

* finalize

* calendar update

* additional styling

* nit

* k

* update colors

* push change

* k

* update

* k

* update

* address additions

* quick nit
2025-02-09 23:09:40 +00:00
evan-danswer
217569104b added context type for when internet search tool is used (#3930) 2025-02-08 20:44:38 -08:00
rkuo-danswer
4c184bb7f0 Bugfix/slack stop 2 (#3916)
* use callback in slim doc functions

* more callbacks

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-02-08 23:45:41 +00:00
rkuo-danswer
a222fae7c8 Bugfix/beat templates (#3754)
* WIP

* migrate most beat tasks to fan out strategy

* fix kwargs

* migrate EE tasks

* lock on the task_name level

* typo fix

* transform beat tasks for cloud

* cloud multiplier is only for cloud tasks

* bumpity

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-02-08 06:57:57 +00:00
pablonyx
94788cda53 Update display (#3934)
* update display

* quick nit
2025-02-08 02:07:47 +00:00
Richard Kuo (Danswer)
fb931ee4de fixes 2025-02-07 17:28:17 -08:00
Richard Kuo (Danswer)
bc2c56dfb6 improve gpu detection functions and logging in model server 2025-02-07 16:59:02 -08:00
rkuo-danswer
ae37f01f62 event driven indexing/docset/usergroup triggers (#3918)
* WIP

* trigger indexing immediately when the ccpair is created

* add some logging and indexing trigger to the mock-credential endpoint

* better comments

* fix integration test

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-02-07 22:53:51 +00:00
pablodanswer
ef31e14518 remove debug logs for integration tests 2025-02-07 10:46:24 -08:00
evan-danswer
9b0cba367e small linear connector improvements (#3929)
* small linear connector improvements

* add todo for url handling
2025-02-07 01:31:49 +00:00
pablonyx
48ac690a70 Multi tenant tests (#3919)
* ensure fail on multi tenant successfully

* attempted fix

* udpate ingration tests

* minor update

* improve

* improve workflow

* fix migrations

* many more logs

* quick fix

* improve

* fix typo

* quick nit

* attempted fix

* very minor clean up
2025-02-07 01:24:00 +00:00
pablodanswer
bfa4fbd691 minor delay 2025-02-06 16:28:38 -08:00
rkuo-danswer
58fdc86d41 fix chromatic save/upload (#3927)
* try adding back some params

* raise timeout

* update chromatic version

* fix typo

* use chromatic imports

* update gitignore

* slim down the config file

* update readme

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-02-06 22:02:14 +00:00
pablonyx
6ff452a2e1 Update popup + misc standardization (#3906)
* pop

* various minor improvements

* improvement

* finalize

* update
2025-02-06 21:22:06 +00:00
pablonyx
e9b892301b Improvements to Redis + Vespa debugging
Improvements to Redis + Vespa debugging
2025-02-06 13:30:32 -08:00
pablodanswer
a202e2bf9d Improvements to Redis + Vespa debugging 2025-02-06 13:30:06 -08:00
pablonyx
3bc4e0d12f Very minor robustification (#3926)
* very minor robustification

* robust
2025-02-06 19:55:38 +00:00
trial-danswer
2fc41cd5df Helm Chart Fixes (#3900)
* initial commit for helm chart refactoring

* Continue refactoring helm. I was able to use helm to deploy all of the apps to a cluster in aws. The bottleneck was setting up PVC dynamic provisioning.

* use default storage class

* Fix linter errors

* Fix broken helm test

* update

* Helm chart fixes

* remove reference to ebsstorage

* Fix linter errors

---------

Co-authored-by: jpb80 <jordan.buttkevitz@gmail.com>
2025-02-06 10:41:09 -08:00
pablodanswer
8c42ff2ff8 slackbot configuration fix 2025-02-06 09:36:58 -08:00
rkuo-danswer
6ccb3f085a select only doc_id (#3920)
* select only doc_id

* select more doc ids

* fix user group

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-02-06 07:00:40 +00:00
pablonyx
a0a1b431be Various UX improvements
Various improvements
2025-02-05 21:13:22 -08:00
pablodanswer
f137fc78a6 various UX improvements 2025-02-05 21:12:55 -08:00
pablonyx
396f096dda Allows for Slackbots that do not have search enabled
Allow no search
2025-02-05 19:20:20 -08:00
pablodanswer
e04b2d6ff3 Allows for Slackbots that do not have search enabled 2025-02-05 19:19:50 -08:00
pablonyx
cbd8b094bd Minor misc docset updates
Minor misc docset updates
2025-02-05 19:14:32 -08:00
pablodanswer
5c7487e91f ensure tests pass 2025-02-05 17:02:49 -08:00
pablodanswer
477f8eeb68 minor update 2025-02-05 16:53:04 -08:00
pablodanswer
737e37170d minor updates 2025-02-05 16:53:02 -08:00
Yuhong Sun
c58a7ef819 Slackbot to know its name (#3917) 2025-02-05 16:39:42 -08:00
rkuo-danswer
bd08e6d787 alert if revisions are null or query fails (#3910)
* alert if revisions are null or query fails

* comment

* mypy

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-02-05 23:45:38 +00:00
rkuo-danswer
47e6192b99 fix bug in validation logic (#3915)
* fix bug in validation logic

* test

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-02-05 22:49:18 +00:00
pablonyx
d1e9760b92 Enforce Slack Channel Default Config
Enforce Slack Channel Default Config
2025-02-05 14:28:03 -08:00
pablodanswer
7153cb09f1 add default slack channel config 2025-02-05 14:26:26 -08:00
evan-danswer
29f5f4edfa fixed citations when sections selected (#3914)
* removed some dead code and fixed citations when a search request is made with sections selected

* fix black formatting issue
2025-02-05 22:16:07 +00:00
pablonyx
b469a7eff4 Put components in components directory + remove unused shortcut commands (#3909) 2025-02-05 14:29:29 -08:00
pablonyx
78153e5012 Merge pull request #3913 from onyx-dot-app/very_minor_ux
remove unused border
2025-02-05 11:57:41 -08:00
pablodanswer
b1ee1efecb remove minor border issue 2025-02-05 11:57:03 -08:00
Sam Warner
526932a7f6 fix chat image upload double read 2025-02-05 09:52:51 -08:00
Weves
6889152d81 Fix issue causing file connector to fail 2025-02-04 22:19:04 -08:00
pablonyx
4affc259a6 Password reset tenant (#3895)
* nots

* functional

* minor naming cleanup

* nit

* update constant

* k
2025-02-05 03:17:11 +00:00
pablonyx
0ec065f1fb Set GPT 4o as default and add O3 mini (#3899)
* quick update to models

* add reqs

* update version
2025-02-05 03:06:05 +00:00
Weves
8eb4320f76 Support not pausing connectors on initialization failure 2025-02-04 19:32:55 -08:00
Weves
1c12ab31f9 Fix extra __init__ file + allow adding API keys to user groups 2025-02-04 17:21:06 -08:00
Yuhong Sun
49fd76b336 Tool Call Error Display (#3897) 2025-02-04 16:12:50 -08:00
rkuo-danswer
5854b39dd4 Merge pull request #3893 from onyx-dot-app/mypy_random
Mypy random fixes
2025-02-04 16:02:18 -08:00
rkuo-danswer
c0271a948a Merge pull request #3856 from onyx-dot-app/feature/no_scan_iter
lessen usage of scan_iter
2025-02-04 15:57:03 -08:00
Richard Kuo (Danswer)
aff4ee5ebf commented code 2025-02-04 15:56:18 -08:00
Richard Kuo (Danswer)
675d2f3539 Merge branch 'main' of https://github.com/onyx-dot-app/onyx into feature/no_scan_iter 2025-02-04 15:55:42 -08:00
rkuo-danswer
2974b57ef4 Merge pull request #3898 from onyx-dot-app/bugfix/temporary_xfail
xfail test until fixed
2025-02-04 15:54:44 -08:00
Richard Kuo (Danswer)
679bdd5e04 xfail test until fixed 2025-02-04 15:53:45 -08:00
Yuhong Sun
e6cb47fcb8 Prompt 2025-02-04 14:42:18 -08:00
Yuhong Sun
a514818e13 Citations 2025-02-04 14:34:44 -08:00
Yuhong Sun
89021cde90 Citation Prompt 2025-02-04 14:17:23 -08:00
Chris Weaver
32ecc282a2 Update README.md
Fix Cal link in README
2025-02-04 13:11:46 -08:00
Yuhong Sun
59b1d4673f Updating some Prompts (#3894) 2025-02-04 12:23:15 -08:00
pablodanswer
ec0c655c8d misc improvement 2025-02-04 12:06:11 -08:00
pablodanswer
42a0f45a96 update 2025-02-04 12:06:11 -08:00
pablodanswer
125e5eaab1 various mypy improvements 2025-02-04 12:06:10 -08:00
Richard Kuo (Danswer)
f2dab9ba89 Merge branch 'main' of https://github.com/onyx-dot-app/onyx into feature/no_scan_iter 2025-02-04 12:01:57 -08:00
Richard Kuo
02a068a68b multiplier from 8 to 4 2025-02-03 23:59:36 -08:00
evan-danswer
91f0650071 Merge pull request #3749 from onyx-dot-app/agent-search-feature
Agent search
2025-02-03 21:31:46 -08:00
pablodanswer
b97819189b push various minor updates 2025-02-03 21:23:45 -08:00
Evan Lohn
b928201397 fixed rebase issue and some cleanup 2025-02-03 20:49:45 -08:00
Yuhong Sun
b500c914b0 cleanup 2025-02-03 20:10:51 -08:00
Yuhong Sun
4b0d22fae3 prompts 2025-02-03 20:10:51 -08:00
joachim-danswer
b46c09ac6c EL comments 2025-02-03 20:10:51 -08:00
joachim-danswer
3ce8923086 fix for citation update 2025-02-03 20:10:51 -08:00
joachim-danswer
7ac6d3ed50 logging level changes 2025-02-03 20:10:51 -08:00
joachim-danswer
3cd057d7a2 LangGraph comments 2025-02-03 20:10:51 -08:00
joachim-danswer
4834ee6223 new citation format 2025-02-03 20:10:51 -08:00
pablodanswer
cb85be41b1 add proper citation handling 2025-02-03 20:10:51 -08:00
joachim-danswer
eb227c0acc nit update 2025-02-03 20:10:51 -08:00
joachim-danswer
25a57e2292 add title and meta-data to doc 2025-02-03 20:10:51 -08:00
pablodanswer
3f3b04a4ee update width 2025-02-03 20:10:51 -08:00
Evan Lohn
3f6de7968a prompt improvements for wekaer models 2025-02-03 20:10:51 -08:00
pablodanswer
024207e2d9 update 2025-02-03 20:10:51 -08:00
Yuhong Sun
8f7db9212c k 2025-02-03 20:10:51 -08:00
pablodanswer
b1e9e03aa4 nit 2025-02-03 20:10:51 -08:00
pablodanswer
87a53d6d80 quick update 2025-02-03 20:10:51 -08:00
Yuhong Sun
59c65a4192 prompts 2025-02-03 20:10:51 -08:00
pablodanswer
c984c6c7f2 add pro search disable 2025-02-03 20:10:51 -08:00
Yuhong Sun
9a3ce504bc beta 2025-02-03 20:10:51 -08:00
Yuhong Sun
16265d27f5 k 2025-02-03 20:10:51 -08:00
Yuhong Sun
570fe43efb log level changes 2025-02-03 20:10:51 -08:00
Yuhong Sun
506a9f1b94 Yuhong 2025-02-03 20:10:51 -08:00
Yuhong Sun
a067b32467 Partial Prompt Updates (#3880) 2025-02-03 20:10:51 -08:00
pablodanswer
9b6e51b4fe k 2025-02-03 20:10:51 -08:00
joachim-danswer
e23dd0a3fa renames + fix of refined answer generation prompt 2025-02-03 20:10:51 -08:00
Evan Lohn
71304e4228 always persist in agent search 2025-02-03 20:10:51 -08:00
Evan Lohn
2adeaaeded loading object into model instead of json 2025-02-03 20:10:51 -08:00
Evan Lohn
a96728ff4d prompt piece optimizations 2025-02-03 20:10:51 -08:00
pablodanswer
eaffdee0dc broadly fixed minus some issues 2025-02-03 20:10:51 -08:00
pablodanswer
feaa3b653f fix misc issues 2025-02-03 20:10:51 -08:00
joachim-danswer
9438f9df05 removal of sone unused states/models 2025-02-03 20:10:51 -08:00
joachim-danswer
b90e0834a5 major renaming 2025-02-03 20:10:51 -08:00
Evan Lohn
29440f5482 alembic heads, basic citations, search pipeline state 2025-02-03 20:10:51 -08:00
Evan Lohn
5a95a5c9fd large number of PR comments addressed 2025-02-03 20:10:51 -08:00
Evan Lohn
118e8afbef reworked config to have logical structure 2025-02-03 20:10:51 -08:00
joachim-danswer
8342168658 initial variable renaming 2025-02-03 20:10:51 -08:00
joachim-danswer
d5661baf98 history summary fix
- adjusted prompt
 - adjusted citation removal
 - length cutoff by words, not characters
2025-02-03 20:10:51 -08:00
joachim-danswer
95fcc0019c history summary update 2025-02-03 20:10:51 -08:00
joachim-danswer
0ccd83e809 deep_search_a and agent_a_config renaming 2025-02-03 20:10:51 -08:00
joachim-danswer
732861a940 rename of documents to verified_reranked_documents 2025-02-03 20:10:51 -08:00
joachim-danswer
d53dd1e356 cited_docs -> cited_documents 2025-02-03 20:10:51 -08:00
joachim-danswer
1a2760edee improved logging through agent_state plus some default fixes 2025-02-03 20:10:51 -08:00
joachim-danswer
23ae4547ca default values of number of strings and other things 2025-02-03 20:10:51 -08:00
Evan Lohn
385b344a43 addressed TODOs 2025-02-03 20:10:51 -08:00
Evan Lohn
a340529de3 sync streaming impl 2025-02-03 20:10:51 -08:00
joachim-danswer
4a0b2a6c09 additional naming fixes 2025-02-03 20:10:51 -08:00
joachim-danswer
756a1cbf8f answer_refined_question_subgraphs 2025-02-03 20:10:51 -08:00
joachim-danswer
8af4f1da8e more renaming 2025-02-03 20:10:51 -08:00
Evan Lohn
4b82440915 finished rebase and fixed issues 2025-02-03 20:10:51 -08:00
Evan Lohn
bb6d55783e addressing PR comments 2025-02-03 20:10:51 -08:00
Evan Lohn
2b8cd63b34 main nodes renaming 2025-02-03 20:10:51 -08:00
joachim-danswer
b0c3098693 more renaming and consolidation 2025-02-03 20:10:51 -08:00
joachim-danswer
2517aa39b2 more renamings 2025-02-03 20:10:51 -08:00
joachim-danswer
ceaaa05af0 renamings and consolidation of formatting nodes in orig question retrieval 2025-02-03 20:10:51 -08:00
joachim-danswer
3b13380051 k 2025-02-03 20:10:51 -08:00
joachim-danswer
ef6e6f9556 more renaming 2025-02-03 20:10:51 -08:00
joachim-danswer
0a6808c4c1 rename initial_sub_question_creation 2025-02-03 20:10:51 -08:00
Evan Lohn
6442c56d82 remaining small find replace fix 2025-02-03 20:10:51 -08:00
Evan Lohn
e191e514b9 fixed find and replace issue 2025-02-03 20:10:51 -08:00
Evan Lohn
f33a2ffb01 node renaming 2025-02-03 20:10:51 -08:00
joachim-danswer
0578c31522 rename retrieval & consolidate_sub_answers (initial and refinement) 2025-02-03 20:10:51 -08:00
joachim-danswer
8cbdc6d8fe fix for refinement renaming 2025-02-03 20:10:51 -08:00
joachim-danswer
60fb06da4e rename initial_answer_generation pt 2 2025-02-03 20:10:51 -08:00
joachim-danswer
55ed6e2294 rename initial_answer_generation 2025-02-03 20:10:50 -08:00
joachim-danswer
42780d5f97 rename of individual_sub_answer_generation 2025-02-03 20:10:50 -08:00
Evan Lohn
f050d281fd refininement->refinement 2025-02-03 20:10:50 -08:00
joachim-danswer
3ca4d532b4 renamed directories, prompts, and small citation fix 2025-02-03 20:10:50 -08:00
pablodanswer
e3e855c526 potential question fix 2025-02-03 20:10:50 -08:00
pablodanswer
23bf50b90a address doc 2025-02-03 20:10:50 -08:00
Yuhong Sun
c43c2320e7 Tiny nits 2025-02-03 20:10:50 -08:00
Evan Lohn
01e6e9a2ba fixed errors on import 2025-02-03 20:10:50 -08:00
Evan Lohn
bd3b1943c4 WIP PR comments 2025-02-03 20:10:50 -08:00
Evan Lohn
1dbf561db0 fix revision to match internal alembic state 2025-02-03 20:10:50 -08:00
Evan Lohn
a43a6627eb fix revision to match internal alembic state 2025-02-03 20:10:50 -08:00
Evan Lohn
5bff8bc8ce collapsed db migrations post-rebase (added missing file) 2025-02-03 20:10:50 -08:00
Evan Lohn
7879ba6a77 collapsed db migrations post-rebase 2025-02-03 20:10:50 -08:00
pablodanswer
a63b341913 latex update 2025-02-03 20:10:50 -08:00
pablodanswer
c062097b2a post rebase fix 2025-02-03 20:10:50 -08:00
Evan Lohn
48e42af8e7 fix rebase issue 2025-02-03 20:10:50 -08:00
Evan Lohn
6c7f8eaefb first pass at dead code deletion 2025-02-03 20:10:50 -08:00
joachim-danswer
3d99ad7bc4 var initialization 2025-02-03 20:10:50 -08:00
joachim-danswer
8fea571f6e k 2025-02-03 20:10:50 -08:00
joachim-danswer
d70bbcc2ce k 2025-02-03 20:10:50 -08:00
joachim-danswer
73769c6cae k 2025-02-03 20:10:50 -08:00
joachim-danswer
7e98936c58 Enrichment prompts, prompt improvements, dispatch logging & reinsert empty tool response 2025-02-03 20:10:50 -08:00
joachim-danswer
4e17fc06ff variable renaming 2025-02-03 20:10:50 -08:00
joachim-danswer
ff4df6f3bf fix for merge error (#3814) 2025-02-03 20:10:50 -08:00
joachim-danswer
91b929d466 graph directory renamings 2025-02-03 20:10:50 -08:00
joachim-danswer
6bef5ca7a4 persona_prompt improvements 2025-02-03 20:10:50 -08:00
joachim-danswer
4817fa0bd1 average dispatch time collection for sub-answers 2025-02-03 20:10:50 -08:00
joachim-danswer
da4a086398 added total time to logging 2025-02-03 20:10:50 -08:00
joachim-danswer
69e8c5f0fc agent default changes/restructuring 2025-02-03 20:10:50 -08:00
joachim-danswer
12d1186888 increased logging 2025-02-03 20:10:50 -08:00
joachim-danswer
325892a21c cleanup of refined answer generation 2025-02-03 20:10:50 -08:00
joachim-danswer
18d92559b5 application of content limitation ion refined answer as well 2025-02-03 20:10:50 -08:00
joachim-danswer
f2aeeb7b3c Optimizations: docs for context & history
- summarize history if long
- introduced cited_docs from SQ as those must be provided to answer generations
- limit number of docs

TODO: same for refined flow
2025-02-03 20:10:50 -08:00
Evan Lohn
110c9f7e1b nit 2025-02-03 20:10:50 -08:00
Evan Lohn
1a22af4f27 AgentPromptConfig in Answer class 2025-02-03 20:10:50 -08:00
Evan Lohn
efa32a8c04 use reranking settings and persona during preprocessing in reranker 2025-02-03 20:10:50 -08:00
Evan Lohn
9bad12968f removed unused files 2025-02-03 20:10:50 -08:00
Evan Lohn
f1d96343a9 always send search response 2025-02-03 20:10:50 -08:00
Evan Lohn
0496ec3bb8 remove debug 2025-02-03 20:10:50 -08:00
pablodanswer
568f927b9b improve regeneration state 2025-02-03 20:10:50 -08:00
pablodanswer
f842e15d64 nit 2025-02-03 20:10:50 -08:00
pablodanswer
3a07093663 improved timing 2025-02-03 20:10:50 -08:00
Evan Lohn
1fe966d0f7 increased timeout to get rid of asyncio logger errors 2025-02-03 20:10:50 -08:00
joachim-danswer
812172f1bd addressing nits of EL 2025-02-03 20:10:50 -08:00
joachim-danswer
9e9bd440f4 updated answer_comparison prompt + small cleanup 2025-02-03 20:10:50 -08:00
joachim-danswer
7487b15522 refined search + question answering as sub-graphs 2025-02-03 20:10:50 -08:00
joachim-danswer
de5ce8a613 sub-graphs for initial question/search 2025-02-03 20:10:50 -08:00
joachim-danswer
8c9577aa95 refined search + question answering as sub-graphs 2025-02-03 20:10:50 -08:00
pablodanswer
4baf3dc484 minor update 2025-02-03 20:10:50 -08:00
pablodanswer
50ef5115e7 k 2025-02-03 20:10:50 -08:00
pablodanswer
a2247363af update switching logic 2025-02-03 20:10:50 -08:00
pablodanswer
a0af8ee91c fix toggling edge case 2025-02-03 20:10:50 -08:00
pablodanswer
25f6543443 update bool 2025-02-03 20:10:50 -08:00
pablodanswer
d52a0b96ac various improvements 2025-02-03 20:10:50 -08:00
pablodanswer
f14b282f0f quick nit 2025-02-03 20:10:50 -08:00
Evan Lohn
7d494cd65e allowed empty Search Tool for non-agentic search 2025-02-03 20:10:50 -08:00
pablodanswer
139374966f minor update - doc ordering 2025-02-03 20:10:50 -08:00
pablodanswer
bf06710215 k 2025-02-03 20:10:50 -08:00
pablodanswer
d4e0d0db05 quick nit 2025-02-03 20:10:50 -08:00
pablodanswer
f96a3ee29a k 2025-02-03 20:10:50 -08:00
joachim-danswer
3bf6b77319 Replaced additional limit with variable 2025-02-03 20:10:50 -08:00
joachim-danswer
3b3b0c8a87 Addressing EL's comments
- created vars for a couple of agent settings
 - moved agent configs
 - created a search function
2025-02-03 20:10:50 -08:00
joachim-danswer
aa8cb44a33 taking out Extraction for now 2025-02-03 20:10:50 -08:00
joachim-danswer
fc60fd0322 earlier entity extraction & sharper generation prompts 2025-02-03 20:10:50 -08:00
joachim-danswer
46402a97c7 tmp: force agent search 2025-02-03 20:10:50 -08:00
Evan Lohn
5bf6a47948 skip reranking for <=1 doc 2025-02-03 20:10:50 -08:00
Evan Lohn
2d8486bac4 stop infos when done streaming answers 2025-02-03 20:10:50 -08:00
Evan Lohn
eea6f2749a make field nullable 2025-02-03 20:10:50 -08:00
Evan Lohn
5e9b2e41ae persisting refined answer improvement 2025-02-03 20:10:50 -08:00
Evan Lohn
2bbe20edc3 address JR comments 2025-02-03 20:10:50 -08:00
Evan Lohn
db2004542e fixed chat tests 2025-02-03 20:10:50 -08:00
Evan Lohn
ddbfc65ad0 implemented top-level tool calling + force search 2025-02-03 20:10:50 -08:00
Evan Lohn
982040c792 WIP, but working basic search using initial tool choice node 2025-02-03 20:10:50 -08:00
pablodanswer
4b0a4a2741 k 2025-02-03 20:10:50 -08:00
pablodanswer
28ba01b361 updated + functional 2025-02-03 20:10:50 -08:00
pablodanswer
d32d1c6079 update- reorg 2025-02-03 20:10:50 -08:00
pablodanswer
dd494d2daa k 2025-02-03 20:10:50 -08:00
pablodanswer
eb6dbf49a1 build fix 2025-02-03 20:10:50 -08:00
joachim-danswer
e5fa411092 EL comments addressed 2025-02-03 20:10:50 -08:00
joachim-danswer
1ced8924b3 loser verification prompt 2025-02-03 20:10:50 -08:00
joachim-danswer
3c3900fac6 turning off initial search pre route decision 2025-02-03 20:10:50 -08:00
joachim-danswer
3b298e19bc change of sub-question answer if no docs recovered 2025-02-03 20:10:50 -08:00
joachim-danswer
71eafe04a8 various fixes from Yuhong's list 2025-02-03 20:10:50 -08:00
Yuhong Sun
80d248e02d Copy changes 2025-02-03 20:10:50 -08:00
Evan Lohn
2032fb10da removed print statements, fixed pass through handling 2025-02-03 20:10:50 -08:00
Evan Lohn
ca1f176c61 fixed basic flow citations and second test 2025-02-03 20:10:50 -08:00
Evan Lohn
3ced9bc28b fix for early cancellation test; solves issue with tasks being destroyed while pending 2025-02-03 20:10:50 -08:00
pablodanswer
deea9c8c3c add agent search frontend 2025-02-03 20:10:47 -08:00
Evan Lohn
4e47c81ed8 fix alembic history 2025-02-03 20:07:57 -08:00
joachim-danswer
00cee71c18 streaming + saving of search docs of no verified ones available
- sub-questions only
2025-02-03 20:07:57 -08:00
Evan Lohn
470c4d15dd reworked history messages in agent config 2025-02-03 20:07:57 -08:00
Evan Lohn
50bacc03b3 missed files from prev commit 2025-02-03 20:07:57 -08:00
Evan Lohn
dd260140b2 basic search restructure: WIP on fixing tests 2025-02-03 20:07:57 -08:00
joachim-danswer
8aa82be12a prompts that even further motivates to cite docs over sub-q's 2025-02-03 20:07:57 -08:00
joachim-danswer
b7f9e431a5 pydantic for LangGraph + changed ERT extraction flow 2025-02-03 20:07:57 -08:00
joachim-danswer
b9bd2ea4e2 history added to agent flow 2025-02-03 20:07:57 -08:00
pablodanswer
e4c93bed8b minor fixes to branch 2025-02-03 20:07:57 -08:00
Evan Lohn
4fd6e36c2f second clean commit 2025-02-03 20:07:57 -08:00
trial-danswer
715359c120 Helm chart refactoring (#3797)
* initial commit for helm chart refactoring

* Continue refactoring helm. I was able to use helm to deploy all of the apps to a cluster in aws. The bottleneck was setting up PVC dynamic provisioning.

* use default storage class

* Fix linter errors

* Fix broken helm test

---------

Co-authored-by: jpb80 <jordan.buttkevitz@gmail.com>
2025-02-03 10:56:07 -08:00
Richard Kuo (Danswer)
6f018d75ee use replica, remove some commented code 2025-02-03 10:10:05 -08:00
Richard Kuo (Danswer)
fd947aadea slow down to 8 again 2025-02-03 00:32:23 -08:00
Weves
e061ba2b93 another airtable fix 2025-02-02 20:58:24 -08:00
Weves
87bccc13cc Handle expiring attachments 2025-02-02 12:02:44 -08:00
Richard Kuo (Danswer)
3a950721b9 get rid of some more scan_iter 2025-02-02 01:14:10 -08:00
Weves
569639eb90 Improved attachment handling 2025-02-01 23:07:01 -08:00
pablodanswer
68cb1f3409 ensure tests don't run temporarily 2025-02-01 17:31:44 -08:00
pablonyx
11da0d9889 Add user specific chat session temperature (#3867)
* add user specific chat session temperature

* kbetter typing

* update
2025-02-01 17:29:58 -08:00
pablodanswer
6a7e2a8036 temporarily disable chat tests 2025-02-01 14:15:16 -08:00
pablodanswer
035f83c464 ensure tests pass (temporary dragging disabled) 2025-02-01 12:58:03 -08:00
pablonyx
3c34ddcc4f E2e assistant tests (#3869)
* adding llm override logic

* update

* general cleanup

* fix various tests

* rm

* update

* update

* better comments

* k

* k

* update to pass tests

* clarify content

* improve timeout
2025-02-01 20:05:53 +00:00
Richard Kuo (Danswer)
bbee2865e9 Merge branch 'main' of https://github.com/onyx-dot-app/onyx into feature/no_scan_iter 2025-02-01 10:46:38 -08:00
pablonyx
a82cac5361 Ensure anonymous users can give feedback
Ensure anonymous users can give feedback
2025-02-01 10:36:14 -08:00
pablodanswer
83e5cb2d2f tested 2025-01-31 16:40:37 -08:00
Chris Weaver
a5d2f0d9ac Fix airtable connector w/ mt cloud + move telem logic to match new st… (#3868)
* Fix airtable connector w/ mt cloud + move telem logic to match new standard

* Address Greptile comment

* Small fixes/improvements

* Revert back monitoring frequency

* Small monitoring fix
2025-01-31 16:29:04 -08:00
Richard Kuo (Danswer)
d3cf18160e lower CLOUD_BEAT_SCHEDULE_MULTIPLIER to 4 2025-01-31 16:13:13 -08:00
Richard Kuo (Danswer)
618e4addd8 better signal names 2025-01-31 13:25:27 -08:00
Richard Kuo (Danswer)
69f16cc972 dont add to the lookup table if it already exists 2025-01-31 13:23:52 -08:00
Richard Kuo (Danswer)
2676d40065 mereging 2025-01-31 12:14:24 -08:00
Richard Kuo (Danswer)
b64545c7c7 build a lookup table every so often to handle cloud migration 2025-01-31 12:12:52 -08:00
Weves
7bc8554e01 Airtable fix 2025-01-31 10:42:27 -08:00
Richard Kuo (Danswer)
5232aeacad Merge branch 'main' of https://github.com/onyx-dot-app/onyx into feature/no_scan_iter
# Conflicts:
#	backend/onyx/background/celery/tasks/vespa/tasks.py
#	backend/onyx/redis/redis_connector_doc_perm_sync.py
2025-01-31 10:38:10 -08:00
rkuo-danswer
261150e81a Validate permission locks (#3799)
* WIP for external group sync lock fixes

* prototyping permissions validation

* validate permission sync tasks in celery

* mypy

* cleanup and wire off external group sync checks for now

* add active key to reset

* improve logging

* reset on payload format change

* return False on exception

* missed a return

* add count of tasks scanned

* add comment

* better logging

* add return

* more return

* catch payload exceptions

* code review fixes

* push to restart test

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-01-31 17:33:07 +00:00
pablonyx
3e0d24a3f6 Update foreign key migration
Update foreign key migration
2025-01-31 08:45:19 -08:00
pablodanswer
ffe8ac168f update foreign key migration 2025-01-31 08:42:28 -08:00
pablonyx
17b280e59e Remove cloud_kubes from public repo
Remove `cloud_kubes` from public repo
2025-01-30 19:19:09 -08:00
pablonyx
5edba4a7f3 Foreign key input prompts
Foreign key input prompts
2025-01-30 19:18:49 -08:00
pablodanswer
d842fed37e foreign key updates 2025-01-30 19:17:32 -08:00
Weves
14981162fd Pin shapely version 2025-01-30 18:02:35 -08:00
Chris Weaver
288daa4e90 Add more airtable logging (#3862)
* Add more airtable logging

* Add multithreading

* Remove empty comment
2025-01-30 17:33:42 -08:00
Richard Kuo (Danswer)
30e8fb12e4 remove commented code 2025-01-30 15:34:00 -08:00
Richard Kuo (Danswer)
d8578bc1cb first full cut 2025-01-30 15:21:52 -08:00
pablonyx
5e21dc6cb3 Optimize /persona query (#3859)
* k

* delete

* k
2025-01-30 23:20:19 +00:00
Weves
39b3a503b4 Add more group sync logging 2025-01-30 14:42:14 -08:00
pablonyx
a70d472b5c Update e2e frontend tests (#3843)
* fix input prompts

* assistant ordering validation

* k

* Revert "fix input prompts"

This reverts commit a4b577bdd7.

* fix alembic

* foreign key updates

* Revert "foreign key updates"

This reverts commit fe17795a037f831790d69229e1067ccb5aab5bd9.

* improve e2e tests

* fix admin
2025-01-30 20:15:29 +00:00
devin-ai-integration[bot]
0ed2886ad0 Can't create starter messages for existing assistants. (#3825)
* fix: move starter messages out of advanced options for better visibility

Co-Authored-By: Chris Weaver <chris@onyx.app>

* fix: ensure starter message input field is visible in edit flow

Co-Authored-By: Chris Weaver <chris@onyx.app>

* chore: fix prettier formatting

Co-Authored-By: Chris Weaver <chris@onyx.app>

* chore: fix prettier formatting for starter messages description

Co-Authored-By: Chris Weaver <chris@onyx.app>

* chore: fix prettier formatting for starter messages initialization

Co-Authored-By: Chris Weaver <chris@onyx.app>

* fix: prevent unintended deletion of second message in StarterMessagesList

Co-Authored-By: Chris Weaver <chris@onyx.app>

* Fix empty starter messages

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Chris Weaver <chris@onyx.app>
Co-authored-by: Weves <chrisweaver101@gmail.com>
2025-01-30 10:26:54 -08:00
pablodanswer
6b31e2f622 remove cloud_kubes from public repo 2025-01-30 09:52:57 -08:00
hagen-danswer
aabf8a99bc Fixed SharePoint connector polling (#3834)
* Fixed SharePoint connector polling

* finish

* fix sharepoint connector
2025-01-30 17:43:11 +00:00
Richard Kuo (Danswer)
7ccfe85ee5 WIP 2025-01-29 22:52:21 -08:00
Chris Weaver
95701db1bd Add more sync records + fix small bug in monitoring task causing deletion metrics to never be emitted (#3837)
Double check we don't double-emit + fix pruning metric

Add log

Fix comment

rename
2025-01-29 18:03:49 -08:00
rkuo-danswer
24105254ac fix race condition with permission sync and fences (#3841)
* fix race condition with permission sync and fences

* comments

* set the fence

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-01-29 23:40:44 +00:00
rkuo-danswer
4fe99d05fd add timings for syncing (#3798)
* add timings for syncing

* add more logging

* more debugging

* refactor multipass/db check out of VespaIndex

* circular imports?

* more debugging

* add logs

* various improvements

* additional logs to narrow down issue

* use global httpx pool for the main vespa flows in celery. Use in more places eventually.

* cleanup debug logging, etc

* remove debug logging

* this should use the secondary index

* mypy

* missed some logging

* review fixes

* refactor get_default_document_index to use search settings

* more missed logging

* fix circular refs

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
Co-authored-by: pablodanswer <pablo@danswer.ai>
2025-01-29 23:24:44 +00:00
pablonyx
d35f93b233 k (#3838) 2025-01-29 22:39:48 +00:00
hagen-danswer
766b0f35df Lowercase all user emails (#3830) 2025-01-29 19:09:06 +00:00
evan-danswer
a0470a96eb removed logic to search first message, fixed query override (#3812) 2025-01-29 19:02:29 +00:00
devin-ai-integration[bot]
b82123563b Fix Unicode sanitization for Vespa document indexing (#3831)
* Add support for filtering 0xFDD0-0xFDEF Unicode range

- Update remove_invalid_unicode_chars to handle 0xFDD0-0xFDEF range
- Add comprehensive test cases for Unicode character sanitization
- Fix issue with illegal code point 0xFDDB in Vespa indexing

Co-Authored-By: Chris Weaver <chris@onyx.app>

* Remove unused pytest import

Co-Authored-By: Chris Weaver <chris@onyx.app>

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Chris Weaver <chris@onyx.app>
2025-01-29 18:32:00 +00:00
rkuo-danswer
787e25cd78 Merge pull request #3823 from onyx-dot-app/bugfix/sharepoint_app_init
app should be initialized once per connector
2025-01-28 23:55:09 -08:00
pablonyx
c6375f8abf Tool id constants (#3827)
* tool id constants

* clarification
2025-01-29 06:33:31 +00:00
Richard Kuo (Danswer)
58e5deba01 Merge branch 'main' of https://github.com/onyx-dot-app/onyx into bugfix/sharepoint_app_init
# Conflicts:
#	backend/onyx/connectors/sharepoint/connector.py
2025-01-28 21:11:13 -08:00
Chris Weaver
028e877342 Sharepoint fixes (#3826)
* Sharepoint connector fixes

* Refactor sharepoint to be better

* Improve env variable naming

* Fix

* Add new secrets

* Fix unstructured failure
2025-01-28 20:06:09 -08:00
Richard Kuo (Danswer)
47bff2b6a9 missed init 2025-01-28 19:11:38 -08:00
Richard Kuo (Danswer)
1502bcea12 do teams too 2025-01-28 19:03:54 -08:00
pablonyx
2701f83634 llm provider re-org (#3810)
* nit

* clean up logic

* update
2025-01-29 02:44:50 +00:00
pablonyx
601037abb5 Customer love (#3813)
* additional logs

* disable gdrive oauth

* Revert "additional ogs"

This reverts commit 1bd7f9d433.
2025-01-28 17:42:28 -08:00
devin-ai-integration[bot]
7e9b12403a Allow Slack workflow messages when respond_to_bots is enabled (#3819)
* Allow workflow 'bot_message' subtype when respond_to_bots is enabled

Co-Authored-By: Chris Weaver <chris@onyx.app>

* refactor: consolidate bot message checks to avoid redundant code

Co-Authored-By: Chris Weaver <chris@onyx.app>

* style: fix black formatting

Co-Authored-By: Chris Weaver <chris@onyx.app>

* Remove unnecessary call

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Chris Weaver <chris@onyx.app>
Co-authored-by: Weves <chrisweaver101@gmail.com>
2025-01-28 17:29:23 -08:00
devin-ai-integration[bot]
d903e5912a feat: add option to treat all non-attachment fields as metadata in Airtable connector (#3817)
* feat: add option to treat all non-attachment fields as metadata in Airtable connector

- Added new UI option 'treat_all_non_attachment_fields_as_metadata'
- Updated backend logic to support treating all fields except attachments as metadata
- Added tests for both default and all-metadata behaviors

Co-Authored-By: Chris Weaver <chris@onyx.app>

* fix: handle missing environment variables gracefully in airtable tests

Co-Authored-By: Chris Weaver <chris@onyx.app>

* fix: clean up test file and handle environment variables properly

Co-Authored-By: Chris Weaver <chris@onyx.app>

* fix: add missing test fixture and fix formatting

Co-Authored-By: Chris Weaver <chris@onyx.app>

* chore: fix black formatting

Co-Authored-By: Chris Weaver <chris@onyx.app>

* fix: add type annotation for metadata dict in airtable tests

Co-Authored-By: Chris Weaver <chris@onyx.app>

* fix: add type annotation for mock_get_api_key fixture

Co-Authored-By: Chris Weaver <chris@onyx.app>

* fix: update Generator import to use collections.abc

Co-Authored-By: Chris Weaver <chris@onyx.app>

* refactor: make treat_all_non_attachment_fields_as_metadata a direct required parameter

- Move parameter from connector_config to direct class parameter
- Place parameter right under table_name_or_id argument
- Make parameter required in UI with no default value
- Update tests to use new parameter structure

Co-Authored-By: Chris Weaver <chris@onyx.app>

* chore: fix black formatting

Co-Authored-By: Chris Weaver <chris@onyx.app>

* chore: rename _METADATA_FIELD_TYPES to DEFAULT_METADATA_FIELD_TYPES and clarify usage

Co-Authored-By: Chris Weaver <chris@onyx.app>

* chore: fix black formatting in docstring

Co-Authored-By: Chris Weaver <chris@onyx.app>

* test: make airtable tests fail loudly on missing env vars

Co-Authored-By: Chris Weaver <chris@onyx.app>

* style: fix black formatting in test file

Co-Authored-By: Chris Weaver <chris@onyx.app>

* style: add required newline between test functions

Co-Authored-By: Chris Weaver <chris@onyx.app>

* test: update error message pattern in parameter validation test

Co-Authored-By: Chris Weaver <chris@onyx.app>

* style: fix black formatting in test file

Co-Authored-By: Chris Weaver <chris@onyx.app>

* test: fix error message pattern in parameter validation test

Co-Authored-By: Chris Weaver <chris@onyx.app>

* style: fix line length in test file

Co-Authored-By: Chris Weaver <chris@onyx.app>

* test: simplify error message pattern in parameter validation test

Co-Authored-By: Chris Weaver <chris@onyx.app>

* test: add type validation test for treat_all_non_attachment_fields_as_metadata

Co-Authored-By: Chris Weaver <chris@onyx.app>

* fix: add missing required parameter in test

Co-Authored-By: Chris Weaver <chris@onyx.app>

* fix: remove parameter from test to properly validate it is required

Co-Authored-By: Chris Weaver <chris@onyx.app>

* fix: add type validation for treat_all_non_attachment_fields_as_metadata parameter

Co-Authored-By: Chris Weaver <chris@onyx.app>

* style: fix black formatting in airtable_connector.py

Co-Authored-By: Chris Weaver <chris@onyx.app>

* fix: update type validation test to handle mypy errors

Co-Authored-By: Chris Weaver <chris@onyx.app>

* fix: specify mypy ignore type for call-arg

Co-Authored-By: Chris Weaver <chris@onyx.app>

* Also handle rows w/o sections

* style: fix black formatting in test assertion

Co-Authored-By: Chris Weaver <chris@onyx.app>

* add TODO

* Remove unnecessary check

* Fix test

* Do not break existing airtable connectors

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Chris Weaver <chris@onyx.app>
Co-authored-by: Weves <chrisweaver101@gmail.com>
2025-01-28 17:28:32 -08:00
pablonyx
d2aea63573 Merge pull request #3824 from onyx-dot-app/naming
Fix search tool name
2025-01-28 16:57:02 -08:00
pablodanswer
57b4639709 fix name 2025-01-28 16:52:00 -08:00
Richard Kuo (Danswer)
1308b6cbe8 app should be initialized once per connector 2025-01-28 15:55:52 -08:00
rkuo-danswer
98abd7d3fa Merge pull request #3821 from onyx-dot-app/bugfix/google_drive_test_fix
don't duplicate test module names
2025-01-28 15:29:55 -08:00
Richard Kuo (Danswer)
e4180cefba don't duplicate test module names 2025-01-28 15:24:05 -08:00
skylares
f67b5356fa Create google drive e2e test (#3635)
* Create e2e google drive test

* Drive sync issue

* Add endpoints for group syncing

* google e2e fixes/improvements and add xfail to zendesk tests

* mypy errors

* Key change

* Small changes

* Merged main to fix group sync issue

* Update test_permission_sync.py

* Update google_drive_api_utils.py

* Update test_zendesk_connector.py

---------

Co-authored-by: hagen-danswer <hagen@danswer.ai>
2025-01-28 14:12:57 -08:00
pablonyx
9bdb581220 Update slack configs (#3776)
* update

* fix build
2025-01-28 21:10:09 +00:00
pablonyx
42d6d935ae continue on internal error (#3728) 2025-01-28 20:19:07 +00:00
pablonyx
8d62b992ef Double check all chat accessible dependencies (#3801)
* double check all chat accessible dependencies

* k

* k

* k

* k

* k

* k
2025-01-28 17:38:32 +00:00
pablonyx
2ad86aa9a6 Unstructured fix (#3809)
* fix v1

* temporary patch for pdfs

* nit
2025-01-28 16:46:27 +00:00
pablonyx
74a472ece7 Remove checkmark
Remove checkmark
2025-01-27 22:38:22 -08:00
pablodanswer
b2ce848b53 add fix 2025-01-27 21:54:20 -08:00
pablonyx
519ec20d05 Feedback (#3800)
* k

* k:wq

* update user auth

* update
2025-01-28 03:13:21 +00:00
pablodanswer
3b1e26d0d4 remove checkmark 2025-01-27 19:12:49 -08:00
pablonyx
118d2b52e6 Improvements for web build (#3786)
* k

* improvements for web build
2025-01-27 20:40:06 +00:00
pablonyx
e625884702 Chat Touchups (#3775) 2025-01-27 12:30:43 -08:00
rkuo-danswer
fa78f50fe3 Bugfix/celery ignore result (#3770)
* try using a redis replica in some areas

* harden up replica usage

* ignore results

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-01-27 08:53:01 +00:00
Yuhong Sun
05ab94945b Fix Sharepoint Folder Parsing (#3791) 2025-01-26 16:45:24 -08:00
Yuhong Sun
7a64a25ff4 Fix Confluence Missing Labels (#3788) 2025-01-26 14:05:02 -08:00
pablonyx
7f10494bbe Better vespa interface (#3781)
* k

* much cleaner vespa util class

* log

* typing

* improvement

* improve
2025-01-26 21:22:44 +00:00
pablodanswer
f2d4024783 improve base page latency 2025-01-26 11:44:34 -08:00
pablonyx
70795a4047 Sync status improvements (#3782)
* minor improvments / clarity

* additional comment for clarity

* typing

* quick updates to monitoring

* connector deletion

* quick nit

* fix typing

* update values

* quick nit

* functioning

* improvements to monitoring

* update

* minutes -> seconds
2025-01-26 17:35:26 +00:00
rkuo-danswer
d8a17a7238 try using a redis replica in some areas (#3748)
* try using a redis replica in some areas

* harden up replica usage

* comment

* slow down cloud dispatch temporarily

* add ignored syncing list back

* raise multiplier to 8

* comment out per tenant code (no longer used by fanout)

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-01-26 03:48:25 +00:00
Yuhong Sun
cbf98c0128 Fix Seeding Link for Support Use Case (#3784) 2025-01-25 19:39:36 -08:00
pablodanswer
a5fe5e136b add web vitals 2025-01-25 17:33:20 -08:00
pablonyx
d6863ec775 Improved linking + scrolling (#3744)
* nits

* quick nit

* update various components

* quick nit

* update

* chat nits

* minor linear check fix
2025-01-25 23:52:07 +00:00
Yuhong Sun
b12c51f56c Turn off Unstructured telemetry (#3778) 2025-01-24 18:13:25 -08:00
pablonyx
b9561fc46c Unzip files + no double x (#3767)
* unzip files

* quick nit

* quick nit

* nit
2025-01-24 20:52:58 +00:00
pablonyx
9b19990764 Input shortcut fix in multi tenant case (#3768)
* validated fix

* nit

* k
2025-01-24 20:40:08 +00:00
Chris Weaver
5d6a18f358 Add support for more /models/list formats (#3739) 2025-01-24 18:25:19 +00:00
pablonyx
3c37764974 Allow all LLMs for image generation assistants (#3730)
* Allow all LLMs for image generation assistants

* ensure pushed

* update color + assistant -> model

* update prompt

* fix silly conditional
2025-01-24 18:23:55 +00:00
Chris Weaver
6551d6bc87 Add support for overridding scopes for OIDC (#3759) 2025-01-23 21:20:34 -08:00
pablonyx
2a1bb4ac41 Vespa scripts + Redis script update (#3758)
* update onyx redis script

* looking good

* simplify comments

* remove unnecessary apps option

* iterate

* fix typing
2025-01-23 23:46:17 +00:00
Chris Weaver
5d653e7c19 Add back postgres auth backend support (#3753) 2025-01-23 21:19:35 +00:00
rkuo-danswer
68c959d8ef Merge pull request #3755 from onyx-dot-app/bugfix/ee_tasks
missed ee_tasks_to_schedule declaration
2025-01-23 12:33:53 -08:00
Richard Kuo (Danswer)
ba771483d8 missed ee_tasks_to_schedule declaration 2025-01-23 12:32:43 -08:00
rkuo-danswer
a2d8e815f6 Feature/more celery fanout (#3740)
* WIP

* migrate most beat tasks to fan out strategy

* fix kwargs

* migrate EE tasks

* lock on the task_name level

* typo fix

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-01-23 19:08:42 +00:00
rkuo-danswer
b1e05bb909 Merge pull request #3751 from onyx-dot-app/bugfix/remove_index_debugging
remove debugging for specific problem tenants
2025-01-23 10:20:36 -08:00
pablonyx
ccb16b7484 Indexing latency check fix (#3747)
* add logs + update dev script

* update conig

* remove prints

* temporarily turn off

* va

* update

* fix

* finalize monitoring updates

* update
2025-01-23 17:14:26 +00:00
pablonyx
1613a8ba4f Anonymous Polish (#3746)
* update auth

* k

* address nit
2025-01-23 02:42:44 +00:00
pablonyx
e94ffbc2a1 Fix image wonkiness (#3735)
* fix images

* quick nit

* quick nit

* update

* update for clarity
2025-01-23 02:38:51 +00:00
Richard Kuo (Danswer)
32f220e02c remove debugging for specific problem tenants 2025-01-22 16:23:24 -08:00
rkuo-danswer
69c60feda4 cloud check for migrations (#3734)
* cloud check for migrations

* fix table declaration

* change back interval

* Fix usage of POSTGRES_DEFAULT_SCHEMA

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-01-22 22:41:28 +00:00
pablonyx
a215ea9143 Performance monitoring (#3725)
* nit

* minimal

* config

* not too big a change

* k

* update

* update web push

* node options

* k

* update config

* attempt fix
2025-01-22 19:54:07 +00:00
pablonyx
f81a42b4e8 fix image edge case width screen size (#3738) 2025-01-22 18:54:00 +00:00
rkuo-danswer
b095e17827 Bugfix/watchdog signal (#3699)
* signal from the watchdog so that the monitor task doesn't try to clean up before it can exit

* ttl constants

* improve comment

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-01-22 17:51:06 +00:00
pablonyx
2a758ae33f Slack doc set fix (#3737) 2025-01-22 09:57:21 -08:00
hagen-danswer
3e58cf2667 Added ability to use a tag to insert the current datetime in prompts (#3697)
* Added ability to use a tag to insert the current datetime in prompts

* made tagging logic more robust

* rename

* k

---------

Co-authored-by: Yuhong Sun <yuhongsun96@gmail.com>
2025-01-22 16:17:20 +00:00
hagen-danswer
b9c29f2a36 Fix pagination for index attempts table DAN-1284 (#3722)
* Fix pagination for index attempts table

* fixed index attempts pagination

* fixed query history table

* query clearnup

* fixed test

* fixed weird tests???
2025-01-22 01:51:16 +00:00
Yuhong Sun
647adb9ba0 Change Persona to Assistant for Analytics Page (#3741) 2025-01-21 17:08:03 -08:00
pablonyx
7d6d73529b fix gmail connector (#3733) 2025-01-21 20:43:25 +00:00
Chris Weaver
420476ad92 Add basic passthrough auth (#3731)
* Add basic passthrough auth

* Add server-side validation

* Disallow for non-oauth

* Fix npm build
2025-01-20 23:39:23 -08:00
pablonyx
4ca7325d1a Finalize ux rework (#3720)
* colors

* nit

* finalize chat ux

* fix seeding waiting

* update chat input bar icons

* k

* Revert "fix seeding waiting"

This reverts commit e1aa93ff0c.
2025-01-21 01:09:16 +00:00
pablonyx
8ddd95d0d4 Fix exceptional seeding delay (#3723)
* fix seeding waiting

* k

* updated
2025-01-21 01:02:13 +00:00
Weves
1378364686 Pass in tenant_id to kv_store in monitoring job 2025-01-20 15:23:16 -08:00
pablonyx
cc4953b560 Slackbot optimization (#3696)
* initial pass

* update

* nit

* nit

* bot -> app

* nit

* quick update

* various improvements

* k

* k

* nit
2025-01-20 19:46:52 +00:00
pablonyx
fe3eae3680 Update JWT expiry time config (#3717)
* update redis configs

* update comment
2025-01-20 11:12:48 -08:00
hagen-danswer
2a7a22d953 fixed broken zendesk connector tests 2025-01-20 11:09:04 -08:00
pablonyx
f163b798ea Input Formik + hidden screen (#3715) 2025-01-20 10:16:10 -08:00
pablonyx
d4563b8693 Add linear check to PRs (#3708)
* add linear check

* Update pull_request_template.md
2025-01-20 03:48:22 +00:00
Weves
a54ed77140 Enhance airtable connector 2025-01-19 18:57:48 -08:00
Devin AI
f27979ef7f docs: fix typo in README.md ('Any many' -> 'And many')
Co-Authored-By: Chris Weaver <chris@onyx.app>
2025-01-19 14:26:39 -08:00
pablonyx
122a9af9b3 Polish (#3692) 2025-01-19 14:22:08 -08:00
pablodanswer
32a97e5479 fix bug 2025-01-19 13:42:23 -08:00
Chris Weaver
bf30dab9c4 Enable location support for Vertex AI (#3707) 2025-01-19 17:41:35 +00:00
Chris Weaver
342bb9f685 Fix document counts (#3671)
* Various fixes/improvements to document counting

* Add new column + index

* Avoid double scan

* comment fixes

* Fix revision history

* Fix IT

* Fix IT

* Fix migration

* Rebase
2025-01-19 05:36:07 +00:00
hagen-danswer
b25668c83a fixed group sync to account for changes in drive permissions (#3666)
* fixed group sync to account for changes in drive permissions

* mypy

* addressed

* reeeeeeeee
2025-01-19 00:08:50 +00:00
Weves
a72bd31f5d Small background telemetry fix 2025-01-18 16:19:28 -08:00
hagen-danswer
896e716d02 query history pagination tests (#3700)
* dummy pr

* Update prompts.yaml

* fixed tests and added query history pagination test

* done

* fixed

* utils!
2025-01-18 21:28:03 +00:00
pablonyx
eec3ce8162 Markdown rendering (#3698)
* nit

* update comment
2025-01-18 12:12:19 -08:00
pablonyx
2761a837c6 quick nit for no-longer living files (#3702) 2025-01-18 11:09:34 -08:00
hagen-danswer
da43abe644 Made copy button and cmd+c work for cmd+v and cmd+shift+v (#3693)
* Made copy button and cmd+c work for cmd+v and cmd+shift+v

* made sub selections work as well

* ok it works

* fixed npm run build

* im not from earth

* added logging

* more logging

* bye logs

* should work now

* whoops

* added stuff

* made it robust

* ctrl shift v behavior
2025-01-18 10:34:32 -08:00
skylares
af953ff8a3 Paginate Query History table (#3592)
* Add pagination for query history table

* Fix method name

* Fix mypy
2025-01-17 15:31:42 -08:00
rkuo-danswer
6fc52c81ab Bugfix/beat redux (#3639)
* WIP

* WIP

* try spinning out check for indexing into a system task

* check for the correct delimiter

* use constants

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
Co-authored-by: Richard Kuo <rkuo@rkuo.com>
2025-01-17 20:59:43 +00:00
hagen-danswer
1ad2128b2a Combined Persona and Prompt API (#3690)
* Combined Persona and Prompt API

* quality

* added tests

* consolidated models and got rid of redundant fields

* tenant appreciation day

* reverted default
2025-01-17 20:21:20 +00:00
Kaveen Jayamanna
880c42ad41 Validating slackbot tokens (#3695)
* added missing dependency, missing api key placeholder, updated docs

* Apply black formatting and validate bot token functionality

* acknowledging black formatting

* added the validation to update tokens as well

* Made the token validation errors looks nicer

* getting rif of duplicate dependency
2025-01-17 11:50:22 -08:00
pablonyx
c9e0d77c93 Minor large PR cleanup (misc fies)
Minor large PR cleanup
2025-01-16 09:41:06 -08:00
pablodanswer
7a750dc2ca Minor large PR cleanup 2025-01-16 09:39:27 -08:00
pablonyx
44b70a87df UX Refresh (#3687)
* add new ux

* quick nit

* additional nit

* finalize

* quick fix

* fix typing
2025-01-16 08:08:01 +00:00
Chris Weaver
a05addec19 Add is_cloud info to telemetry + get consistent customer_uuid's for a… (#3684)
* Add is_cloud info to telemetry + get consistent customer_uuid's for a given tenant

* Address Richard's comments
2025-01-16 02:43:21 +00:00
Chris Weaver
8a4d762798 Fix follow ups in thread + fix user name (#3686)
* Fix follow ups in thread + fix user name

* Add back single history str

* Remove newline
2025-01-16 02:40:25 +00:00
rkuo-danswer
c9a420ec49 better logging and reduce long sessions (#3673)
* testing some tweaks based on issues seen with okteto

* shorten session usage in indexing. still a couple of long running sessions to clean up

* merge sessions

* fixing detached session issues

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-01-16 01:27:12 +00:00
pablodanswer
beccca5fa2 Remove stranded file 2025-01-15 16:34:13 -08:00
pablonyx
66d8b8bb10 Add chrome extension pages (#3629) 2025-01-15 15:09:49 -08:00
pablonyx
76ca650972 Admin usage for seeding (#3683)
* admin usage for seeding

* functional

* proper fix

* k

* typing
2025-01-15 19:04:25 +00:00
hagen-danswer
eb70699c0b temp test fixes (#3682)
* fix discord test

* Fix discord test

* fixed fireflies test too
2025-01-15 09:07:05 -08:00
skylares
b401f83eb6 Salesforce daily test (#3611)
* Add daily salesforce test

* Add more assertions

* Add assertions for data by parsing the key-value strings

* Fix grammar
2025-01-15 07:53:50 -08:00
skylares
993a1a6caf Add discord daily test (#3676)
* Add discord daily test

* Fix mypy error
2025-01-15 07:50:33 -08:00
skylares
c3481c7356 Fireflies daily test (#3663)
* Init test files for fireflies

* Finish creating daily test and update parsing of sections

* Added comment
2025-01-15 06:40:31 -08:00
Chris Weaver
3b7695539f Add monitoring worker (#3677)
* Add monitoring worker

* Add locks

* Add tenant id to lock

* Remove unneeded tenant postfix
2025-01-15 01:39:56 +00:00
hagen-danswer
b1957737f2 refactored _add_user_filter usage (#3674)
* refactored db.connector_credential_pair

* Rerfactored the db.credentials user filtering

* the restr
2025-01-14 23:35:52 +00:00
rkuo-danswer
5f462056f6 Merge pull request #3660 from onyx-dot-app/bugfix/index_attempt_query
optimize another index attempt check
2025-01-13 20:02:54 -08:00
Richard Kuo (Danswer)
0de4d61b6d Merge branch 'main' of https://github.com/onyx-dot-app/onyx into bugfix/index_attempt_query 2025-01-13 16:26:22 -08:00
rkuo-danswer
7a28a5c216 Merge pull request #3669 from onyx-dot-app/bugfix/fix_time_updated
fix missed var names
2025-01-13 15:04:17 -08:00
Richard Kuo (Danswer)
d8aa21ca3a fix missed var names 2025-01-13 14:32:26 -08:00
Richard Kuo (Danswer)
c4323573d2 fix alembic 2025-01-13 13:23:40 -08:00
Richard Kuo (Danswer)
46cfaa96b7 Merge branch 'main' of https://github.com/danswer-ai/danswer into bugfix/index_attempt_query 2025-01-13 13:23:30 -08:00
Weves
a610b6bd8d Support new model for image input 2025-01-13 13:17:51 -08:00
rkuo-danswer
cb66aadd80 Merge pull request #3648 from onyx-dot-app/bugfix/light_cpu
figuring out why multiprocessing set_start_method isn't working.
2025-01-13 13:08:55 -08:00
Chris Weaver
9ea2ae267e Performance monitoring (#3658)
* Initial scaffolding for metrics

* iterate

* more

* More metrics + SyncRecord concept

* Add indices, standardize timing

* Small cleanup

* Address comments
2025-01-13 12:36:45 -08:00
Richard Kuo (Danswer)
7d86b28335 maybe we don't need pre ping yet 2025-01-13 12:14:32 -08:00
Richard Kuo (Danswer)
4f8e48df7c try more sql settings 2025-01-13 11:50:04 -08:00
Richard Kuo (Danswer)
d96d2fc6e9 add comment 2025-01-13 11:35:58 -08:00
Richard Kuo (Danswer)
b6dd999c1b add some type hints 2025-01-13 11:31:57 -08:00
Richard Kuo (Danswer)
9a09222b7d add comments 2025-01-13 10:58:33 -08:00
Richard Kuo (Danswer)
be3cfdd4a6 saved files 2025-01-13 10:46:20 -08:00
Richard Kuo (Danswer)
f5bdf9d2c9 move to celeryd_init 2025-01-13 02:46:03 -08:00
hagen-danswer
6afd27f9c9 fix group sync name capitalization (#3653)
* fix group sync name capitalization

* everything is lowercased now

* comments

* Added test for be2ab2aa50ee migration

* polish
2025-01-10 16:51:33 -08:00
Richard Kuo (Danswer)
ccef350287 try using spawn specifically 2025-01-10 14:19:31 -08:00
Richard Kuo (Danswer)
4400a945e3 optimize another index attempt check 2025-01-10 14:18:49 -08:00
Richard Kuo (Danswer)
384a38418b test set_spawn_method and handle exceptions 2025-01-10 12:59:34 -08:00
Richard Kuo (Danswer)
2163a138ed logging 2025-01-10 12:41:05 -08:00
Richard Kuo (Danswer)
b6c2ecfecb more debugging of start method 2025-01-10 12:16:13 -08:00
Richard Kuo (Danswer)
ac182c74b3 log all start methods 2025-01-10 12:11:33 -08:00
pablonyx
cab7e60542 Proper anonymous user restricting (#3645) 2025-01-10 11:31:11 -08:00
Richard Kuo (Danswer)
8e25c3c412 Merge branch 'main' of https://github.com/danswer-ai/danswer into bugfix/light_cpu 2025-01-10 11:01:12 -08:00
Weves
1470b7e038 Add tests for some LLM provider endpoints + small logic change to ensure that display_model_names is not empty 2025-01-10 08:55:53 -08:00
rkuo-danswer
bf78fb79f8 possible fix for gdrive oauth in the cloud (#3642)
* possible fix for gd oauth in the cloud

* missed code in rename/merge

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-01-10 02:10:59 +00:00
rkuo-danswer
d972a78f45 Make connector pause and delete fast (#3646)
* first cut

* refresh on delete

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-01-10 01:39:45 +00:00
Richard Kuo (Danswer)
962240031f figuring out why multiprocessing set_start_method isn't working. 2025-01-09 16:29:37 -08:00
hagen-danswer
50131ba22c Better logging for confluence space permissions 2025-01-09 15:13:02 -08:00
rkuo-danswer
439217317f Merge pull request #3644 from onyx-dot-app/bugfix/model-server-build-fix
hope this env var works.
2025-01-09 14:34:25 -08:00
hagen-danswer
c55de28423 added distinct when outer joining for user filters (#3641)
* added distinct when outer joining for user filters

* Added distinct when outer joining for user filters for all
2025-01-09 14:15:38 -08:00
Richard Kuo (Danswer)
91e32e801d hope this env var works. 2025-01-09 13:51:58 -08:00
rkuo-danswer
2ae91f0f2b Feature/redis prod tool (#3619)
* prototype tools for handling prod issues

* add some commands

* add batching and dry run options

* custom redis tool

* comment

* default to app config settings for redis

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-01-09 21:34:07 +00:00
hagen-danswer
d40fd82803 Conf doc sync improvements (#3643)
* Reduce number of requests to Confluence

* undo

* added a way to dynamically adjust the pagination limit

* undo
2025-01-09 12:56:56 -08:00
rkuo-danswer
97a963b4bf add index to speed up get last attempt (#3636)
* add index to speed up get last attempt

* use descending order

* put back unique param

* how did this not get formatted?

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-01-09 00:56:55 +00:00
pablonyx
7f6ef1ff57 Remove unnecessary logspam
Remove unnecessary logs
2025-01-08 17:03:52 -08:00
pablodanswer
d98746b988 remove unnecessary logs 2025-01-08 17:03:15 -08:00
rkuo-danswer
a76f1b4c1b Merge pull request #3628 from onyx-dot-app/bugfix/debug_tenant
add more debug logging for locking issue
2025-01-08 15:14:37 -08:00
hagen-danswer
4c4ff46fe3 Fixing google drive tests (#3634)
* Fixing google drive texts

* Update conftest.py
2025-01-08 22:34:38 +00:00
hagen-danswer
0f9842064f Added env var to skip warm up (#3633) 2025-01-08 14:29:15 -08:00
pablonyx
d7bc32c0ec Fully remove visit API (#3621)
* v1

* update indexing logic

* update updates

* nit

* clean up args

* update for clarity + best practices

* nit + logs

* fix

* minor clean up

* remove logs

* quick nit
2025-01-08 13:49:01 -08:00
Richard Kuo (Danswer)
1f48de9731 more logging 2025-01-08 12:49:24 -08:00
Richard Kuo (Danswer)
a22d02ff70 add another log line 2025-01-08 10:01:24 -08:00
Richard Kuo (Danswer)
dcfc621a66 add more debug logging for locking issue 2025-01-08 09:43:47 -08:00
Chris Weaver
eac73a1bf1 Improve egnyte connector (#3626) 2025-01-08 03:09:46 +00:00
pablonyx
717560872f Merge pull request #3627 from onyx-dot-app/whitelabeling_name
Whitelabelling
2025-01-07 19:16:01 -08:00
pablodanswer
ce2572134c k 2025-01-07 19:06:52 -08:00
rkuo-danswer
02f72a5c86 Multiple cloud/indexing fixes (#3609)
* more debugging

* test reacquire outside of loop

* more logging

* move lock_beat test outside the try catch so that we don't worry about testing locks we never took

* use a larger scan_iter value for performance

* batch stale document sync batches

* add debug logging for a particular timeout issue

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-01-08 01:30:29 +00:00
hagen-danswer
eb916df139 added debugger step 2025-01-07 16:18:46 -08:00
hagen-danswer
fafad5e119 Improve contributing guide (#3625)
* Improve contributing guide

* more improvements to contributing guide
2025-01-07 16:16:17 -08:00
pablonyx
a314a08309 Speed up admin pages (#3623)
* ni

* speed up pages

* minor nit

* nit
2025-01-07 15:40:26 -08:00
hagen-danswer
4ce24d68f7 prevent other tests from interfering with existing google drive tests (#3624)
* prevent other tests from interfering with existing google drive tests

* cleanup gdrive tests

* finished

* done
2025-01-07 15:32:36 -08:00
hagen-danswer
a95f4298ad Improved logging for confluence calls (#3622)
* Improved logging for confluence calls

* cleanup

* idk

* combined logging
2025-01-07 21:53:08 +00:00
rkuo-danswer
7cd76ec404 comment out the per doc sync hack (#3620)
* comment out the per doc sync hack

* fix commented code

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-01-07 19:44:15 +00:00
pablonyx
5b5c1166ca Async Redis (#3618)
* k

* update configs for clarity

* typing

* update
2025-01-07 19:34:57 +00:00
pablonyx
d9e9c6973d Multitenant anonymous (#3595)
* anonymous users for multi tenant setting

* nit

* k
2025-01-07 02:57:20 +00:00
pablonyx
91903141cd Built in tool cache with tool call id (#3617)
* k

* improved

* k

* nit

* nit

* nit
2025-01-07 01:03:52 +00:00
hagen-danswer
e329b63b89 Added Permission Syncing for Salesforce (#3551)
* Added Permission Syncing for Salesforce

* cleanup

* updated connector doc conversion

* finished salesforce permission syncing

* fixed connector to batch Salesforce queries

* tests!

* k

* Added error handling and check for ee and sync type for postprocessing

* comments

* minor touchups

* tested to work!

* done

* my pie

* lil cleanup

* minor comment
2025-01-07 00:37:03 +00:00
hagen-danswer
71c2559ea9 Discord cleanup (#3615)
* Discord cleanup

* fix case discrepancy
2025-01-06 15:11:03 -08:00
Ishankoradia
ceb34a41d9 discord connector (#3023)
* discord: frontend and backend poll connector

* added requirements for discord installation

* fixed the mypy errors

* process messages not part of any thread

* minor change

* updated the connector; this logic works & am able to docs when i print

* minor change

* ability to enter a start date to pull docs from and refactor

* added the load connector and fixed mypy errors

* local commit test

done!

* minor refactor and properly commented everything

* updated the logic to handle permissions and index active/archived threads

* basic discord test template

* cleanup

* going away with the danswer discord client class ; using an async context manager

* moved to proper folder

* minor fixes

* needs improvement

* fixed discord icon

---------

Co-authored-by: hagen-danswer <hagen@danswer.ai>
2025-01-06 14:54:22 -08:00
pablonyx
82eab9d704 Doc explore fix (#3614)
* k

* k

* add comment
2025-01-06 19:42:07 +00:00
pablonyx
2b8d3a6ef5 fix white labelling empty string (#3603) 2025-01-06 19:26:55 +00:00
pablonyx
4fb129e77b Increase timeout + revert changes for clarity (#3604)
* increase timeout + revert changes for clarity

* quick nit

* k
2025-01-06 18:20:53 +00:00
pablonyx
f16ca1b735 minor auth fix (#3613) 2025-01-06 17:51:02 +00:00
pablonyx
e3b2c9d944 Tracking update (#3605)
* tracking update

* k
2025-01-06 17:17:00 +00:00
pablodanswer
6c9c25642d remove empty files on main 2025-01-06 09:01:33 -08:00
hagen-danswer
2862d8bbd3 Minor opensource cleanup (#3610) 2025-01-06 07:26:07 -08:00
skylares
143be6a524 Add assertions to Zendesk connector tests (#3600)
Co-authored-by: hagen-danswer <hagen@danswer.ai>
2025-01-06 06:43:23 -08:00
SubashMohan
c2444a5cff Slim connector for Zendesk (#3367)
* Add SlimConnector support for Zendesk

* ZenDesk format changes

* code formating

---------

Co-authored-by: hagen-danswer <hagen@danswer.ai>
2025-01-06 06:41:41 -08:00
rkuo-danswer
7f8194798a Merge pull request #3608 from onyx-dot-app/bugfix/locking_4
fix timing calculations and don't spam the queue lengths check from e…
2025-01-05 21:13:47 -08:00
Richard Kuo (Danswer)
e3947e4b64 fix timing calculations and don't spam the queue lengths check from every task 2025-01-05 21:13:08 -08:00
rkuo-danswer
98005510ad Merge pull request #3607 from onyx-dot-app/bugfix/locking_redux
add detailed timings to monitor vespa sync
2025-01-05 20:03:17 -08:00
Richard Kuo
ca54bd0b21 add logging 2025-01-05 20:02:05 -08:00
Richard Kuo
d26f8ce852 add detailed timings to monitor vespa sync 2025-01-05 19:24:58 -08:00
pablonyx
c8090ab75b Auth fix + Registration Clarity (#3590)
* clarify auth flow

* k

* nit

* k

* fix typing
2025-01-06 02:17:45 +00:00
hagen-danswer
e100a5e965 Properly account for anonymous access in Confluence 2025-01-05 18:01:39 -08:00
pablonyx
ddec239fef Improved indexing (#3594)
* nit

* k

* add steps

* main util functions

* functioning fully

* quick nit

* k

* typing fix

* k

* address comments
2025-01-05 23:31:53 +00:00
Chris Weaver
e83542f572 Add support for auto-refreshing available models based on an API call (#3576) 2025-01-05 15:45:49 -08:00
joachim-danswer
8750f14647 alignment & renaming of objects for initial (displayed) ranking and re-ranking/validation citations
- renamed post-reranking/validation citation information consistently to final_... (example: doc_id_to_rank_map -> final_doc_id_to_rank_map)
 - changed and renamed objects containing initial ranking information (now: display_...) consistent with final rankings (final_...). Specifically, {} to [] for displayed_search_results
 - for CitationInfo, changed citation_num from 'x-th citation in response stream' to the initial position of the doc [NOTE: test implications]
-  changed tests:
    onyx/backend/tests/unit/onyx/chat/stream_processing/test_citation_processing.py
    onyx/backend/tests/unit/onyx/chat/stream_processing/test_citation_substitution.py
2025-01-05 15:44:34 -08:00
rkuo-danswer
27699c8216 Merge pull request #3602 from onyx-dot-app/bugfix/lock_not_owned
various lock diagnostics and timing adjustments
2025-01-05 15:12:01 -08:00
Richard Kuo (Danswer)
6fcd712a00 comment for lock and usage 2025-01-05 15:11:39 -08:00
Richard Kuo (Danswer)
b027a08698 various lock diagnostics and timing adjustments 2025-01-05 13:59:36 -08:00
Chris Weaver
1db778baa8 Small airtable refactor + handle files with uppercase extensions (#3598)
* Small airtable refactor + handle files with uppercase extensions

* Fix mypy
2025-01-05 11:27:50 -08:00
Chris Weaver
f895e5f7d0 Speedup orphan doc cleanup script (#3596)
* Speedup orphan doc cleanup script

* Fix mypy
2025-01-05 14:28:25 +00:00
rkuo-danswer
2fc58252f4 Merge pull request #3599 from onyx-dot-app/bugfix/doc-sync
quick hack to prevent resyncing the same doc
2025-01-05 04:14:28 -08:00
Richard Kuo (Danswer)
371d1ccd8f move to just setting keys 2025-01-05 03:26:33 -08:00
Richard Kuo (Danswer)
7fb92d42a0 quick hack to prevent resyncing the same doc 2025-01-05 03:05:32 -08:00
Weves
af2061c4db Add Linear OAuth env variables to dev compose 2025-01-04 16:02:04 -08:00
pablonyx
ffec19645b JWT -> Redis (#3574)
* functional v1

* functional logout

* minor clean up

* quick clean up

* update configuration

* ni

* nit

* finalize

* update login page

* delete unused import

* quick nit

* updates

* clean up

* ni

* k

* k
2025-01-04 19:35:43 +00:00
pablonyx
67d2c86250 Remove Exclamation marks + comments (#3586)
* remove explanation marks + comments

* nit
2025-01-04 18:39:16 +00:00
pablonyx
6c018cb53f add personal assistant usage stats (#3543) 2025-01-04 18:38:41 +00:00
pablonyx
62302e3faf Latex for $10 and $100 (#3585)
* nit

* k
2025-01-04 17:37:04 +00:00
rkuo-danswer
0460531c72 Merge pull request #3593 from onyx-dot-app/bugfix/primary_worker_lock
the primary worker lock doesn't always exist
2025-01-03 22:01:11 -08:00
Richard Kuo
6af07a888b the primary worker lock doesn't always exist 2025-01-03 21:12:11 -08:00
Weves
ea75f5cd5d Move google-cloud-aiplatform to default requirements to support vertex AI llama 2025-01-03 15:20:59 -08:00
rkuo-danswer
b92c183022 re-prep user group deletion on the actual deletion (#3588)
* re-prep user group deletion on the actual deletion

* user group needs to be synced to be prepped

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2025-01-03 22:35:56 +00:00
skylares
c191e23256 Pagination Hook (#3494)
* Backend changes for pagination hook + Paginated users table

* Frontend changes for pagination hook

* Fix invited users endpoint

* Fix layout shift & add enter to submit user invites

* mypy

* Cleanup

* Resolve PR concerns & remove UserStatus

* Fix errors

---------

Co-authored-by: hagen-danswer <hagen@danswer.ai>
2025-01-03 14:32:55 -08:00
rkuo-danswer
66f9124135 Merge pull request #3584 from onyx-dot-app/bugfix/log_spacing
fix formatting
2025-01-03 00:43:36 -08:00
Richard Kuo
8f0fb70bbf fix formatting 2025-01-02 23:21:54 -08:00
rkuo-danswer
ef5e5c80bb Merge pull request #3577 from onyx-dot-app/bugfix/model_server_exception_logging
fix response logging
2025-01-02 23:08:46 -08:00
rkuo-danswer
03acb6587a Feature/model server logging (#3579)
* improve model server logging

* improve exception logging with provider/model names

* get everything into one log line

---------

Co-authored-by: Richard Kuo <rkuo@rkuo.com>
2025-01-03 01:40:29 +00:00
hagen-danswer
d1ec72b5e5 Reworked salesforce connector to use bulk api (#3581) 2025-01-02 18:09:02 -08:00
Weves
3b214133a8 Airtable improvement 2025-01-02 17:56:05 -08:00
rkuo-danswer
2232702e99 retry the individual delete's (#3580)
* retry the individual delete's

* need to raise inside the retry

* just use retry for now

---------

Co-authored-by: Richard Kuo <rkuo@rkuo.com>
2025-01-02 17:39:37 -08:00
hagen-danswer
8108ff0a4b Added logging for permissions upsert queue length 2025-01-02 17:39:01 -08:00
Richard Kuo
f64e78e986 fix response logging 2025-01-02 13:39:19 -08:00
Chris Weaver
08312a4394 Update Slack link in README.md 2025-01-01 10:03:59 -08:00
Weves
92add655e0 Slack fixes 2024-12-31 18:04:12 -08:00
Chris Weaver
d64464ca7c Add support for OAuth connectors that require user input (#3571)
* Add support for OAuth connectors that require user input

* Cleanup

* Fix linear

* Small re-naming

* Remove console.log
2024-12-31 18:03:33 -08:00
Yuhong Sun
ccd3983802 Linear OAuth Connector (#3570) 2024-12-31 16:11:09 -08:00
pablonyx
240f3e4fff Ensure users cannot modify their roles on main
Ensure users cannot modify their roles
2024-12-31 15:59:27 -05:00
pablonyx
1291b3d930 Add anonymous user to main
Anonymous user
2024-12-31 15:58:52 -05:00
rkuo-danswer
d05f1997b5 Merge pull request #3569 from onyx-dot-app/bugfix/alt_index
we didn't want to rename the alt index suffix, reverting
2024-12-31 12:39:00 -08:00
Chris Weaver
aa2e2a62b9 Small Egnyte tweaks (#3568) 2024-12-31 19:28:38 +00:00
Richard Kuo
174e5968f8 we didn't want to rename the alt index suffix, reverting 2024-12-31 11:28:11 -08:00
pablodanswer
1f27606e17 minor clean up 2024-12-31 13:04:02 -05:00
pablodanswer
60355b84c1 quick nits 2024-12-31 13:04:02 -05:00
pablodanswer
680ab9ea30 updated logic 2024-12-31 13:04:02 -05:00
pablodanswer
c2447dbb1c cosmetic updates 2024-12-31 13:04:02 -05:00
pablodanswer
52bad522f8 update for multi-tenant clarity 2024-12-31 13:04:02 -05:00
pablodanswer
63e5e58313 add anonymous user 2024-12-31 13:04:02 -05:00
rkuo-danswer
2643782e30 Merge pull request #3567 from onyx-dot-app/bugfix/revert_vespa
Revert "More efficient Vespa indexing (#3552)"
2024-12-31 09:47:00 -08:00
Richard Kuo
3eb72e5c1d Revert "More efficient Vespa indexing (#3552)"
This reverts commit 2783216781.
2024-12-31 09:40:23 -08:00
rkuo-danswer
9b65c23a7e Merge pull request #3566 from onyx-dot-app/bugfix/primary_task_timings
re-enable celery task execution logging in primary worker
2024-12-31 01:29:05 -08:00
Richard Kuo (Danswer)
b43a8e48c6 add some return types to distinguish when the task is actually performing work 2024-12-31 00:10:33 -08:00
Richard Kuo (Danswer)
1955c1d67b re-enable celery task execution logging in primary worker 2024-12-30 21:53:00 -08:00
Chris Weaver
3f92ed9d29 Airtable connector (#3564)
* Airtable connector

* Improvements

* improve

* Clean up test

* Add secrets

* Fix mypy + add access token

* Mock unstructured call

* Adjust comments

* Fix ID in test
2024-12-31 03:06:28 +00:00
Weves
618369f4a1 Small fix 2024-12-30 19:20:30 -08:00
pablonyx
2783216781 More efficient Vespa indexing (#3552)
---------

Co-authored-by: Chris Weaver <25087905+Weves@users.noreply.github.com>
2024-12-30 18:51:14 -08:00
rkuo-danswer
bec0f9fb23 permission sync in cloud and beat expiry adjustment (#3544)
* try fixing exception in cloud

* raise beat expiry ... 60 seconds might be starving certain tasks completely

* adjust expiry down to 10 min

* raise concurrency overflow for indexing worker.

* parent pid check

* fix comment

* fix parent pid check, also actually raise an exception from the task if the spawned task exit status is bad

* fix pid check

* some cleanup and task wait fixes

* review fixes

* comment some code so we don't change too many things at once

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
Co-authored-by: Richard Kuo <rkuo@rkuo.com>
2024-12-31 01:05:57 +00:00
pablodanswer
97a03e7fc8 nit 2024-12-29 21:07:12 -05:00
pablodanswer
8d6e8269b7 k 2024-12-29 21:07:12 -05:00
pablodanswer
9ce2c6c517 minor change 2024-12-29 21:07:12 -05:00
pablodanswer
2ad8bdbc65 k 2024-12-29 21:07:12 -05:00
rkuo-danswer
a83c9b40d5 Bugfix/oauth fix (#3507)
* old oauth file left behind

* fix function change that was lost in merge

* fix some testing vars

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2024-12-30 01:49:12 +00:00
Chris Weaver
340fab1375 Additional error handling + logging for google drive connector (#3563)
* Additional error handling + logging for google drive connector

* Fix mypy
2024-12-29 17:48:02 -08:00
hagen-danswer
3ec338307f Fixed indexing issues with Salesforce 2024-12-29 16:45:29 -08:00
pablonyx
27acd3387a Auth specific rate limiting (#3463)
* k

* v1

* fully functional

* finalize

* nit

* nit

* nit

* clean up with wrapper + comments

* k

* update

* minor clean
2024-12-29 23:34:23 +00:00
hagen-danswer
d14ef431a7 Improve Salesforce connector 2024-12-29 14:18:40 -08:00
pablonyx
9bffeb65af Eagerly load CCpair connectors (#3531)
* remove left over vim command

* eager loading

* Revert "remove left over vim command"

This reverts commit 184a134ae0.
2024-12-29 15:58:38 +00:00
Yuhong Sun
f4806da653 Fix Null Value in PG (#3559)
* k

* k

* k

* k

* k
2024-12-29 01:53:16 +00:00
pablonyx
e2700b2bbd Remove left over yaml errors (#3527)
* remove left over vim command

* additional misconfigurations

* ensure all regions updated
2024-12-29 01:45:07 +00:00
Yuhong Sun
fc81a3fb12 Zendesk Retries (#3558)
* k

* k

* k

* k
2024-12-28 23:51:49 +00:00
pablonyx
2203cfabea Prevent SSRF risk
Prevent SSRF risk
2024-12-28 15:25:57 -05:00
pablodanswer
f4050306d6 Prevent SSRF risk 2024-12-28 15:25:12 -05:00
Weves
2d960a477f Fix discourse connector 2024-12-24 12:43:10 -08:00
hagen-danswer
8837b8ea79 Curators can now update the curator relationship (#3536)
* Curators can now update the curator relationship

* mypy

* mypy

* whoops haha
2024-12-24 18:49:58 +00:00
hagen-danswer
3dfb214f73 Slackbot polish (#3547) 2024-12-24 16:19:15 +00:00
pablonyx
18d7262608 fix logo rendering (#3542) 2024-12-22 23:00:33 +00:00
pablonyx
09b879ee73 Ensure gmail works for personal accounts (#3541)
* Ensure gmail works for personal accounts

* nit

* minor update
2024-12-22 23:00:14 +00:00
rkuo-danswer
aaa668c963 Merge pull request #3534 from onyx-dot-app/bugfix/validate_ttl
raise activity timeout to one hour
2024-12-22 13:13:57 -08:00
pablonyx
edb877f4bc fix NUL character (#3540) 2024-12-21 23:30:25 +00:00
rkuo-danswer
eb369caefb log attempt id, log elapsed since task execution start, remove log spam (#3539)
* log attempt id, log elapsed since task execution start, remove log spam

* diagnostic lock logs

---------

Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2024-12-21 23:03:50 +00:00
Chris Weaver
b9567eabd7 Fix bedrock w/ access keys (#3538)
* Fix bedrock w/ access keys

* cleanup

* Remove extra #
2024-12-21 02:24:11 +00:00
Richard Kuo (Danswer)
13bbf67091 raise activity timeout to one hour 2024-12-20 16:18:35 -08:00
hagen-danswer
457a4c73f0 Made sure confluence connector recursive by page includes top level page (#3532)
* Made sure confluence connector by page includes top level page

* surface level change
2024-12-20 21:53:59 +00:00
rkuo-danswer
ce37688b5b allow limited user to create chat session (#3533)
Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2024-12-20 21:36:41 +00:00
pablonyx
4e2c90f4af Proper user deletion / organization leaving (#3460)
* Proper user deletion / organization leaving

* minor nit

* update

* udpate provisioning

* minor cleanup

* typing

* post rebase
2024-12-20 21:01:03 +00:00
pablonyx
513dd8a319 update toggling states (#3519) 2024-12-20 20:27:22 +00:00
hagen-danswer
71c5043832 Added filter to exclude attachments with unsupported file extensions (#3530)
* Added filter to exclude attachments with unsupported file extensions

* extension
2024-12-20 19:48:15 +00:00
pablonyx
64b6f15e95 AWS extraneous error fix (#3529)
* remove left over vim command

* aws fix

* k

* remove double
2024-12-20 19:31:04 +00:00
hagen-danswer
35022f5f09 Fix group table (#3523) 2024-12-20 17:51:26 +00:00
hagen-danswer
0d44014c16 Cleanup PR template to make it more concise (#3524) 2024-12-20 17:49:31 +00:00
Yuhong Sun
1b9e9f48fa Update README.md 2024-12-20 10:26:57 -08:00
Yuhong Sun
05fb5aa27b Update README.md 2024-12-20 10:25:34 -08:00
Yuhong Sun
3b645b72a3 Crop Logo Closer 2024-12-20 10:23:52 -08:00
Yuhong Sun
fe770b5c3a Fix Logo On DarkMode (#3525) 2024-12-20 10:15:48 -08:00
hagen-danswer
1eaf885f50 associating credentials with connectors is not considered editing (#3522)
* associating credentials with connectors is not considered editing

* formatting

* formatting

* Update credentials.py

---------

Co-authored-by: Yuhong Sun <yuhongsun96@gmail.com>
2024-12-20 17:36:25 +00:00
rkuo-danswer
a187aa508c use redis exclusively with active signal renewal in more places to perform indexing fence validation (#3517)
Co-authored-by: Richard Kuo (Danswer) <rkuo@onyx.app>
2024-12-20 06:54:00 +00:00
pablonyx
aa4bfa2a78 Forgot password feature (#3437)
* forgot password feature

* improved config

* nit

* nit
2024-12-20 04:53:37 +00:00
pablonyx
9011b8a139 Update citations in shared chat display (#3487)
* update shared chat display

* Change Copy

* fix icon

* remove secret!

---------

Co-authored-by: Yuhong Sun <yuhongsun96@gmail.com>
2024-12-20 01:48:29 +00:00
pablonyx
59c774353a Latex formatting (#3499) 2024-12-19 14:48:06 -08:00
pablonyx
b458d504af Sidebar Default Open (#3488) 2024-12-19 14:04:50 -08:00
Yuhong Sun
f83e7bfcd9 Fix Default CC Pair (#3513) 2024-12-19 09:43:12 -08:00
pablonyx
4d2e26ce4b MT Cloud Tracking Fix (#3514) 2024-12-19 08:47:02 -08:00
pablonyx
817fdc1f36 Ensure metadata overrides file contents (#3512)
* ensure metadata overrides file contents

* update more blocks
2024-12-19 04:44:24 +00:00
1924 changed files with 188350 additions and 44112 deletions

1
.github/CODEOWNERS vendored Normal file
View File

@@ -0,0 +1 @@
* @onyx-dot-app/onyx-core-team

View File

@@ -25,6 +25,10 @@ inputs:
tags:
description: 'Image tags'
required: true
no-cache:
description: 'Read from cache'
required: false
default: 'false'
cache-from:
description: 'Cache sources'
required: false
@@ -55,6 +59,7 @@ runs:
push: ${{ inputs.push }}
load: ${{ inputs.load }}
tags: ${{ inputs.tags }}
no-cache: ${{ inputs.no-cache }}
cache-from: ${{ inputs.cache-from }}
cache-to: ${{ inputs.cache-to }}
@@ -77,6 +82,7 @@ runs:
push: ${{ inputs.push }}
load: ${{ inputs.load }}
tags: ${{ inputs.tags }}
no-cache: ${{ inputs.no-cache }}
cache-from: ${{ inputs.cache-from }}
cache-to: ${{ inputs.cache-to }}
@@ -99,6 +105,7 @@ runs:
push: ${{ inputs.push }}
load: ${{ inputs.load }}
tags: ${{ inputs.tags }}
no-cache: ${{ inputs.no-cache }}
cache-from: ${{ inputs.cache-from }}
cache-to: ${{ inputs.cache-to }}

View File

@@ -1,29 +1,14 @@
## Description
[Provide a brief description of the changes in this PR]
## How Has This Been Tested?
[Describe the tests you ran to verify your changes]
## Accepted Risk (provide if relevant)
N/A
## Related Issue(s) (provide if relevant)
N/A
## Mental Checklist:
- All of the automated tests pass
- All PR comments are addressed and marked resolved
- If there are migrations, they have been rebased to latest main
- If there are new dependencies, they are added to the requirements
- If there are new environment variables, they are added to all of the deployment methods
- If there are new APIs that don't require auth, they are added to PUBLIC_ENDPOINT_SPECS
- Docker images build and basic functionalities work
- Author has done a final read through of the PR right before merge
## Backporting (check the box to trigger backport action)
Note: You have to check that the action passes, otherwise resolve the conflicts manually and tag the patches.
- [ ] This PR should be backported (make sure to check that the backport attempt succeeds)
- [ ] [Optional] Override Linear Check

View File

@@ -7,18 +7,47 @@ on:
env:
REGISTRY_IMAGE: ${{ contains(github.ref_name, 'cloud') && 'onyxdotapp/onyx-backend-cloud' || 'onyxdotapp/onyx-backend' }}
LATEST_TAG: ${{ contains(github.ref_name, 'latest') }}
DEPLOYMENT: ${{ contains(github.ref_name, 'cloud') && 'cloud' || 'standalone' }}
# don't tag cloud images with "latest"
LATEST_TAG: ${{ contains(github.ref_name, 'latest') && !contains(github.ref_name, 'cloud') }}
jobs:
build-and-push:
# TODO: investigate a matrix build like the web container
# See https://runs-on.com/runners/linux/
runs-on: [runs-on, runner=8cpu-linux-x64, "run-id=${{ github.run_id }}"]
runs-on:
- runs-on
- runner=${{ matrix.platform == 'linux/amd64' && '8cpu-linux-x64' || '8cpu-linux-arm64' }}
- run-id=${{ github.run_id }}
- tag=platform-${{ matrix.platform }}
strategy:
fail-fast: false
matrix:
platform:
- linux/amd64
- linux/arm64
steps:
- name: Prepare
run: |
platform=${{ matrix.platform }}
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV
- name: Checkout code
uses: actions/checkout@v4
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY_IMAGE }}
flavor: |
latest=false
tags: |
type=raw,value=${{ github.ref_name }}
type=raw,value=${{ env.LATEST_TAG == 'true' && 'latest' || '' }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
@@ -34,18 +63,80 @@ jobs:
sudo apt-get install -y build-essential
- name: Backend Image Docker Build and Push
uses: docker/build-push-action@v5
id: build
uses: docker/build-push-action@v6
with:
context: ./backend
file: ./backend/Dockerfile
platforms: linux/amd64,linux/arm64
platforms: ${{ matrix.platform }}
push: true
tags: |
${{ env.REGISTRY_IMAGE }}:${{ github.ref_name }}
${{ env.LATEST_TAG == 'true' && format('{0}:latest', env.REGISTRY_IMAGE) || '' }}
build-args: |
ONYX_VERSION=${{ github.ref_name }}
labels: ${{ steps.meta.outputs.labels }}
outputs: type=image,name=${{ env.REGISTRY_IMAGE }},push-by-digest=true,name-canonical=true,push=true
cache-from: type=s3,prefix=cache/${{ github.repository }}/${{ env.DEPLOYMENT }}/backend-${{ env.PLATFORM_PAIR }}/,region=${{ env.RUNS_ON_AWS_REGION }},bucket=${{ env.RUNS_ON_S3_BUCKET_CACHE }}
cache-to: type=s3,prefix=cache/${{ github.repository }}/${{ env.DEPLOYMENT }}/backend-${{ env.PLATFORM_PAIR }}/,region=${{ env.RUNS_ON_AWS_REGION }},bucket=${{ env.RUNS_ON_S3_BUCKET_CACHE }},mode=max
- name: Export digest
run: |
mkdir -p /tmp/digests
digest="${{ steps.build.outputs.digest }}"
touch "/tmp/digests/${digest#sha256:}"
- name: Upload digest
uses: actions/upload-artifact@v4
with:
name: backend-digests-${{ env.PLATFORM_PAIR }}-${{ github.run_id }}
path: /tmp/digests/*
if-no-files-found: error
retention-days: 1
merge:
runs-on: ubuntu-latest
needs:
- build-and-push
steps:
# Needed for trivyignore
- name: Checkout
uses: actions/checkout@v4
- name: Download digests
uses: actions/download-artifact@v4
with:
path: /tmp/digests
pattern: backend-digests-*-${{ github.run_id }}
merge-multiple: true
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY_IMAGE }}
flavor: |
latest=false
tags: |
type=raw,value=${{ github.ref_name }}
type=raw,value=${{ env.LATEST_TAG == 'true' && 'latest' || '' }}
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }}
- name: Create manifest list and push
working-directory: /tmp/digests
run: |
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
$(printf '${{ env.REGISTRY_IMAGE }}@sha256:%s ' *)
- name: Inspect image
run: |
docker buildx imagetools inspect ${{ env.REGISTRY_IMAGE }}:${{ steps.meta.outputs.version }}
# trivy has their own rate limiting issues causing this action to flake
# we worked around it by hardcoding to different db repos in env
# can re-enable when they figure it out
@@ -56,6 +147,8 @@ jobs:
env:
TRIVY_DB_REPOSITORY: "public.ecr.aws/aquasecurity/trivy-db:2"
TRIVY_JAVA_DB_REPOSITORY: "public.ecr.aws/aquasecurity/trivy-java-db:1"
TRIVY_USERNAME: ${{ secrets.DOCKER_USERNAME }}
TRIVY_PASSWORD: ${{ secrets.DOCKER_TOKEN }}
with:
# To run locally: trivy image --severity HIGH,CRITICAL onyxdotapp/onyx-backend
image-ref: docker.io/${{ env.REGISTRY_IMAGE }}:${{ github.ref_name }}

View File

@@ -4,12 +4,12 @@ name: Build and Push Cloud Web Image on Tag
on:
push:
tags:
- "*"
- "*cloud*"
env:
REGISTRY_IMAGE: onyxdotapp/onyx-web-server-cloud
LATEST_TAG: ${{ contains(github.ref_name, 'latest') }}
DEPLOYMENT: cloud
jobs:
build:
runs-on:
@@ -38,9 +38,10 @@ jobs:
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY_IMAGE }}
flavor: |
latest=false
tags: |
type=raw,value=${{ env.REGISTRY_IMAGE }}:${{ github.ref_name }}
type=raw,value=${{ env.LATEST_TAG == 'true' && format('{0}:latest', env.REGISTRY_IMAGE) || '' }}
type=raw,value=${{ github.ref_name }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
@@ -53,7 +54,7 @@ jobs:
- name: Build and push by digest
id: build
uses: docker/build-push-action@v5
uses: docker/build-push-action@v6
with:
context: ./web
file: ./web/Dockerfile
@@ -65,11 +66,17 @@ jobs:
NEXT_PUBLIC_POSTHOG_KEY=${{ secrets.POSTHOG_KEY }}
NEXT_PUBLIC_POSTHOG_HOST=${{ secrets.POSTHOG_HOST }}
NEXT_PUBLIC_SENTRY_DSN=${{ secrets.SENTRY_DSN }}
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=${{ secrets.STRIPE_PUBLISHABLE_KEY }}
NEXT_PUBLIC_GTM_ENABLED=true
# needed due to weird interactions with the builds for different platforms
no-cache: true
NEXT_PUBLIC_FORGOT_PASSWORD_ENABLED=true
NEXT_PUBLIC_INCLUDE_ERROR_POPUP_SUPPORT_LINK=true
NODE_OPTIONS=--max-old-space-size=8192
labels: ${{ steps.meta.outputs.labels }}
outputs: type=image,name=${{ env.REGISTRY_IMAGE }},push-by-digest=true,name-canonical=true,push=true
cache-from: type=s3,prefix=cache/${{ github.repository }}/${{ env.DEPLOYMENT }}/cloudweb-${{ env.PLATFORM_PAIR }}/,region=${{ env.RUNS_ON_AWS_REGION }},bucket=${{ env.RUNS_ON_S3_BUCKET_CACHE }}
cache-to: type=s3,prefix=cache/${{ github.repository }}/${{ env.DEPLOYMENT }}/cloudweb-${{ env.PLATFORM_PAIR }}/,region=${{ env.RUNS_ON_AWS_REGION }},bucket=${{ env.RUNS_ON_S3_BUCKET_CACHE }},mode=max
# no-cache needed due to weird interactions with the builds for different platforms
# NOTE(rkuo): this may not be true any more with the proper cache prefixing by architecture - currently testing with it off
- name: Export digest
run: |
@@ -80,7 +87,7 @@ jobs:
- name: Upload digest
uses: actions/upload-artifact@v4
with:
name: digests-${{ env.PLATFORM_PAIR }}
name: cloudweb-digests-${{ env.PLATFORM_PAIR }}-${{ github.run_id }}
path: /tmp/digests/*
if-no-files-found: error
retention-days: 1
@@ -94,7 +101,7 @@ jobs:
uses: actions/download-artifact@v4
with:
path: /tmp/digests
pattern: digests-*
pattern: cloudweb-digests-*-${{ github.run_id }}
merge-multiple: true
- name: Set up Docker Buildx
@@ -105,6 +112,10 @@ jobs:
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY_IMAGE }}
flavor: |
latest=false
tags: |
type=raw,value=${{ github.ref_name }}
- name: Login to Docker Hub
uses: docker/login-action@v3
@@ -132,6 +143,8 @@ jobs:
env:
TRIVY_DB_REPOSITORY: "public.ecr.aws/aquasecurity/trivy-db:2"
TRIVY_JAVA_DB_REPOSITORY: "public.ecr.aws/aquasecurity/trivy-java-db:1"
TRIVY_USERNAME: ${{ secrets.DOCKER_USERNAME }}
TRIVY_PASSWORD: ${{ secrets.DOCKER_TOKEN }}
with:
image-ref: docker.io/${{ env.REGISTRY_IMAGE }}:${{ github.ref_name }}
severity: "CRITICAL,HIGH"

View File

@@ -7,14 +7,55 @@ on:
env:
REGISTRY_IMAGE: ${{ contains(github.ref_name, 'cloud') && 'onyxdotapp/onyx-model-server-cloud' || 'onyxdotapp/onyx-model-server' }}
LATEST_TAG: ${{ contains(github.ref_name, 'latest') }}
DOCKER_BUILDKIT: 1
BUILDKIT_PROGRESS: plain
DEPLOYMENT: ${{ contains(github.ref_name, 'cloud') && 'cloud' || 'standalone' }}
# don't tag cloud images with "latest"
LATEST_TAG: ${{ contains(github.ref_name, 'latest') && !contains(github.ref_name, 'cloud') }}
jobs:
# Bypassing this for now as the idea of not building is glitching
# releases and builds that depends on everything being tagged in docker
# 1) Preliminary job to check if the changed files are relevant
# check_model_server_changes:
# runs-on: ubuntu-latest
# outputs:
# changed: ${{ steps.check.outputs.changed }}
# steps:
# - name: Checkout code
# uses: actions/checkout@v4
#
# - name: Check if relevant files changed
# id: check
# run: |
# # Default to "false"
# echo "changed=false" >> $GITHUB_OUTPUT
#
# # Compare the previous commit (github.event.before) to the current one (github.sha)
# # If any file in backend/model_server/** or backend/Dockerfile.model_server is changed,
# # set changed=true
# if git diff --name-only ${{ github.event.before }} ${{ github.sha }} \
# | grep -E '^backend/model_server/|^backend/Dockerfile.model_server'; then
# echo "changed=true" >> $GITHUB_OUTPUT
# fi
check_model_server_changes:
runs-on: ubuntu-latest
outputs:
changed: "true"
steps:
- name: Bypass check and set output
run: echo "changed=true" >> $GITHUB_OUTPUT
build-amd64:
needs: [check_model_server_changes]
if: needs.check_model_server_changes.outputs.changed == 'true'
runs-on:
[runs-on, runner=8cpu-linux-x64, "run-id=${{ github.run_id }}-amd64"]
env:
PLATFORM_PAIR: linux-amd64
steps:
- name: Checkout code
uses: actions/checkout@v4
@@ -39,7 +80,7 @@ jobs:
password: ${{ secrets.DOCKER_TOKEN }}
- name: Build and Push AMD64
uses: docker/build-push-action@v5
uses: docker/build-push-action@v6
with:
context: ./backend
file: ./backend/Dockerfile.model_server
@@ -50,10 +91,17 @@ jobs:
DANSWER_VERSION=${{ github.ref_name }}
outputs: type=registry
provenance: false
cache-from: type=s3,prefix=cache/${{ github.repository }}/${{ env.DEPLOYMENT }}/model-server-${{ env.PLATFORM_PAIR }}/,region=${{ env.RUNS_ON_AWS_REGION }},bucket=${{ env.RUNS_ON_S3_BUCKET_CACHE }}
cache-to: type=s3,prefix=cache/${{ github.repository }}/${{ env.DEPLOYMENT }}/model-server-${{ env.PLATFORM_PAIR }}/,region=${{ env.RUNS_ON_AWS_REGION }},bucket=${{ env.RUNS_ON_S3_BUCKET_CACHE }},mode=max
# no-cache: true
build-arm64:
needs: [check_model_server_changes]
if: needs.check_model_server_changes.outputs.changed == 'true'
runs-on:
[runs-on, runner=8cpu-linux-x64, "run-id=${{ github.run_id }}-arm64"]
env:
PLATFORM_PAIR: linux-arm64
steps:
- name: Checkout code
uses: actions/checkout@v4
@@ -78,7 +126,7 @@ jobs:
password: ${{ secrets.DOCKER_TOKEN }}
- name: Build and Push ARM64
uses: docker/build-push-action@v5
uses: docker/build-push-action@v6
with:
context: ./backend
file: ./backend/Dockerfile.model_server
@@ -89,9 +137,12 @@ jobs:
DANSWER_VERSION=${{ github.ref_name }}
outputs: type=registry
provenance: false
cache-from: type=s3,prefix=cache/${{ github.repository }}/${{ env.DEPLOYMENT }}/model-server-${{ env.PLATFORM_PAIR }}/,region=${{ env.RUNS_ON_AWS_REGION }},bucket=${{ env.RUNS_ON_S3_BUCKET_CACHE }}
cache-to: type=s3,prefix=cache/${{ github.repository }}/${{ env.DEPLOYMENT }}/model-server-${{ env.PLATFORM_PAIR }}/,region=${{ env.RUNS_ON_AWS_REGION }},bucket=${{ env.RUNS_ON_S3_BUCKET_CACHE }},mode=max
merge-and-scan:
needs: [build-amd64, build-arm64]
needs: [build-amd64, build-arm64, check_model_server_changes]
if: needs.check_model_server_changes.outputs.changed == 'true'
runs-on: ubuntu-latest
steps:
- name: Login to Docker Hub
@@ -117,7 +168,9 @@ jobs:
env:
TRIVY_DB_REPOSITORY: "public.ecr.aws/aquasecurity/trivy-db:2"
TRIVY_JAVA_DB_REPOSITORY: "public.ecr.aws/aquasecurity/trivy-java-db:1"
TRIVY_USERNAME: ${{ secrets.DOCKER_USERNAME }}
TRIVY_PASSWORD: ${{ secrets.DOCKER_TOKEN }}
with:
image-ref: docker.io/onyxdotapp/onyx-model-server:${{ github.ref_name }}
image-ref: docker.io/${{ env.REGISTRY_IMAGE }}:${{ github.ref_name }}
severity: "CRITICAL,HIGH"
timeout: "10m"

View File

@@ -8,9 +8,25 @@ on:
env:
REGISTRY_IMAGE: onyxdotapp/onyx-web-server
LATEST_TAG: ${{ contains(github.ref_name, 'latest') }}
DEPLOYMENT: standalone
jobs:
precheck:
runs-on: [runs-on, runner=2cpu-linux-x64, "run-id=${{ github.run_id }}"]
outputs:
should-run: ${{ steps.set-output.outputs.should-run }}
steps:
- name: Check if tag contains "cloud"
id: set-output
run: |
if [[ "${{ github.ref_name }}" == *cloud* ]]; then
echo "should-run=false" >> "$GITHUB_OUTPUT"
else
echo "should-run=true" >> "$GITHUB_OUTPUT"
fi
build:
needs: precheck
if: needs.precheck.outputs.should-run == 'true'
runs-on:
- runs-on
- runner=${{ matrix.platform == 'linux/amd64' && '8cpu-linux-x64' || '8cpu-linux-arm64' }}
@@ -37,9 +53,11 @@ jobs:
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY_IMAGE }}
flavor: |
latest=false
tags: |
type=raw,value=${{ env.REGISTRY_IMAGE }}:${{ github.ref_name }}
type=raw,value=${{ env.LATEST_TAG == 'true' && format('{0}:latest', env.REGISTRY_IMAGE) || '' }}
type=raw,value=${{ github.ref_name }}
type=raw,value=${{ env.LATEST_TAG == 'true' && 'latest' || '' }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
@@ -52,7 +70,7 @@ jobs:
- name: Build and push by digest
id: build
uses: docker/build-push-action@v5
uses: docker/build-push-action@v6
with:
context: ./web
file: ./web/Dockerfile
@@ -60,11 +78,15 @@ jobs:
push: true
build-args: |
ONYX_VERSION=${{ github.ref_name }}
# needed due to weird interactions with the builds for different platforms
no-cache: true
NODE_OPTIONS=--max-old-space-size=8192
labels: ${{ steps.meta.outputs.labels }}
outputs: type=image,name=${{ env.REGISTRY_IMAGE }},push-by-digest=true,name-canonical=true,push=true
cache-from: type=s3,prefix=cache/${{ github.repository }}/${{ env.DEPLOYMENT }}/web-${{ env.PLATFORM_PAIR }}/,region=${{ env.RUNS_ON_AWS_REGION }},bucket=${{ env.RUNS_ON_S3_BUCKET_CACHE }}
cache-to: type=s3,prefix=cache/${{ github.repository }}/${{ env.DEPLOYMENT }}/web-${{ env.PLATFORM_PAIR }}/,region=${{ env.RUNS_ON_AWS_REGION }},bucket=${{ env.RUNS_ON_S3_BUCKET_CACHE }},mode=max
# no-cache needed due to weird interactions with the builds for different platforms
# NOTE(rkuo): this may not be true any more with the proper cache prefixing by architecture - currently testing with it off
- name: Export digest
run: |
mkdir -p /tmp/digests
@@ -74,21 +96,22 @@ jobs:
- name: Upload digest
uses: actions/upload-artifact@v4
with:
name: digests-${{ env.PLATFORM_PAIR }}
name: web-digests-${{ env.PLATFORM_PAIR }}-${{ github.run_id }}
path: /tmp/digests/*
if-no-files-found: error
retention-days: 1
merge:
runs-on: ubuntu-latest
needs:
- build
if: needs.precheck.outputs.should-run == 'true'
runs-on: ubuntu-latest
steps:
- name: Download digests
uses: actions/download-artifact@v4
with:
path: /tmp/digests
pattern: digests-*
pattern: web-digests-*-${{ github.run_id }}
merge-multiple: true
- name: Set up Docker Buildx
@@ -99,6 +122,11 @@ jobs:
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY_IMAGE }}
flavor: |
latest=false
tags: |
type=raw,value=${{ github.ref_name }}
type=raw,value=${{ env.LATEST_TAG == 'true' && 'latest' || '' }}
- name: Login to Docker Hub
uses: docker/login-action@v3
@@ -126,6 +154,8 @@ jobs:
env:
TRIVY_DB_REPOSITORY: "public.ecr.aws/aquasecurity/trivy-db:2"
TRIVY_JAVA_DB_REPOSITORY: "public.ecr.aws/aquasecurity/trivy-java-db:1"
TRIVY_USERNAME: ${{ secrets.DOCKER_USERNAME }}
TRIVY_PASSWORD: ${{ secrets.DOCKER_TOKEN }}
with:
image-ref: docker.io/${{ env.REGISTRY_IMAGE }}:${{ github.ref_name }}
severity: "CRITICAL,HIGH"

View File

@@ -53,24 +53,90 @@ jobs:
exclude: '(?i)^(pylint|aio[-_]*).*'
- name: Print report
if: ${{ always() }}
if: always()
run: echo "${{ steps.license_check_report.outputs.report }}"
- name: Install npm dependencies
working-directory: ./web
run: npm ci
- name: Run Trivy vulnerability scanner in repo mode
uses: aquasecurity/trivy-action@0.28.0
with:
scan-type: fs
scanners: license
format: table
# format: sarif
# output: trivy-results.sarif
severity: HIGH,CRITICAL
# - name: Upload Trivy scan results to GitHub Security tab
# uses: github/codeql-action/upload-sarif@v3
# be careful enabling the sarif and upload as it may spam the security tab
# with a huge amount of items. Work out the issues before enabling upload.
# - name: Run Trivy vulnerability scanner in repo mode
# if: always()
# uses: aquasecurity/trivy-action@0.29.0
# with:
# sarif_file: trivy-results.sarif
# scan-type: fs
# scan-ref: .
# scanners: license
# format: table
# severity: HIGH,CRITICAL
# # format: sarif
# # output: trivy-results.sarif
#
# # - name: Upload Trivy scan results to GitHub Security tab
# # uses: github/codeql-action/upload-sarif@v3
# # with:
# # sarif_file: trivy-results.sarif
scan-trivy:
# See https://runs-on.com/runners/linux/
runs-on: [runs-on,runner=2cpu-linux-x64,"run-id=${{ github.run_id }}"]
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }}
# Backend
- name: Pull backend docker image
run: docker pull onyxdotapp/onyx-backend:latest
- name: Run Trivy vulnerability scanner on backend
uses: aquasecurity/trivy-action@0.29.0
env:
TRIVY_DB_REPOSITORY: 'public.ecr.aws/aquasecurity/trivy-db:2'
TRIVY_JAVA_DB_REPOSITORY: 'public.ecr.aws/aquasecurity/trivy-java-db:1'
with:
image-ref: onyxdotapp/onyx-backend:latest
scanners: license
severity: HIGH,CRITICAL
vuln-type: library
exit-code: 0 # Set to 1 if we want a failed scan to fail the workflow
# Web server
- name: Pull web server docker image
run: docker pull onyxdotapp/onyx-web-server:latest
- name: Run Trivy vulnerability scanner on web server
uses: aquasecurity/trivy-action@0.29.0
env:
TRIVY_DB_REPOSITORY: 'public.ecr.aws/aquasecurity/trivy-db:2'
TRIVY_JAVA_DB_REPOSITORY: 'public.ecr.aws/aquasecurity/trivy-java-db:1'
with:
image-ref: onyxdotapp/onyx-web-server:latest
scanners: license
severity: HIGH,CRITICAL
vuln-type: library
exit-code: 0
# Model server
- name: Pull model server docker image
run: docker pull onyxdotapp/onyx-model-server:latest
- name: Run Trivy vulnerability scanner
uses: aquasecurity/trivy-action@0.29.0
env:
TRIVY_DB_REPOSITORY: 'public.ecr.aws/aquasecurity/trivy-db:2'
TRIVY_JAVA_DB_REPOSITORY: 'public.ecr.aws/aquasecurity/trivy-java-db:1'
with:
image-ref: onyxdotapp/onyx-model-server:latest
scanners: license
severity: HIGH,CRITICAL
vuln-type: library
exit-code: 0

View File

@@ -0,0 +1,94 @@
name: External Dependency Unit Tests
on:
merge_group:
pull_request:
branches: [main]
env:
# AWS
S3_AWS_ACCESS_KEY_ID: ${{ secrets.S3_AWS_ACCESS_KEY_ID }}
S3_AWS_SECRET_ACCESS_KEY: ${{ secrets.S3_AWS_SECRET_ACCESS_KEY }}
# MinIO
S3_ENDPOINT_URL: "http://localhost:9004"
# Confluence
CONFLUENCE_TEST_SPACE_URL: ${{ secrets.CONFLUENCE_TEST_SPACE_URL }}
CONFLUENCE_TEST_SPACE: ${{ secrets.CONFLUENCE_TEST_SPACE }}
CONFLUENCE_TEST_PAGE_ID: ${{ secrets.CONFLUENCE_TEST_PAGE_ID }}
CONFLUENCE_IS_CLOUD: ${{ secrets.CONFLUENCE_IS_CLOUD }}
CONFLUENCE_USER_NAME: ${{ secrets.CONFLUENCE_USER_NAME }}
CONFLUENCE_ACCESS_TOKEN: ${{ secrets.CONFLUENCE_ACCESS_TOKEN }}
jobs:
discover-test-dirs:
runs-on: ubuntu-latest
outputs:
test-dirs: ${{ steps.set-matrix.outputs.test-dirs }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Discover test directories
id: set-matrix
run: |
# Find all subdirectories in backend/tests/external_dependency_unit
dirs=$(find backend/tests/external_dependency_unit -mindepth 1 -maxdepth 1 -type d -exec basename {} \; | sort | jq -R -s -c 'split("\n")[:-1]')
echo "test-dirs=$dirs" >> $GITHUB_OUTPUT
external-dependency-unit-tests:
needs: discover-test-dirs
# See https://runs-on.com/runners/linux/
runs-on: [runs-on, runner=8cpu-linux-x64, "run-id=${{ github.run_id }}"]
strategy:
fail-fast: false
matrix:
test-dir: ${{ fromJson(needs.discover-test-dirs.outputs.test-dirs) }}
env:
PYTHONPATH: ./backend
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: "pip"
cache-dependency-path: |
backend/requirements/default.txt
backend/requirements/dev.txt
- name: Install Dependencies
run: |
python -m pip install --upgrade pip
pip install --retries 5 --timeout 30 -r backend/requirements/default.txt
pip install --retries 5 --timeout 30 -r backend/requirements/dev.txt
playwright install chromium
playwright install-deps chromium
- name: Set up Standard Dependencies
run: |
cd deployment/docker_compose
docker compose -f docker-compose.dev.yml -p onyx-stack up -d minio relational_db cache index
- name: Run migrations
run: |
cd backend
alembic upgrade head
- name: Run Tests for ${{ matrix.test-dir }}
shell: script -q -e -c "bash --noprofile --norc -eo pipefail {0}"
run: |
py.test \
-n 8 \
--dist loadfile \
--durations=8 \
-o junit_family=xunit2 \
-xv \
--ff \
backend/tests/external_dependency_unit/${{ matrix.test-dir }}

View File

@@ -21,10 +21,10 @@ jobs:
- name: Set up Helm
uses: azure/setup-helm@v4.2.0
with:
version: v3.14.4
version: v3.17.0
- name: Set up chart-testing
uses: helm/chart-testing-action@v2.6.1
uses: helm/chart-testing-action@v2.7.0
# even though we specify chart-dirs in ct.yaml, it isn't used by ct for the list-changed command...
- name: Run chart-testing (list-changed)
@@ -37,22 +37,11 @@ jobs:
echo "changed=true" >> "$GITHUB_OUTPUT"
fi
# rkuo: I don't think we need python?
# - name: Set up Python
# uses: actions/setup-python@v5
# with:
# python-version: '3.11'
# cache: 'pip'
# cache-dependency-path: |
# backend/requirements/default.txt
# backend/requirements/dev.txt
# backend/requirements/model_server.txt
# - run: |
# python -m pip install --upgrade pip
# pip install --retries 5 --timeout 30 -r backend/requirements/default.txt
# pip install --retries 5 --timeout 30 -r backend/requirements/dev.txt
# pip install --retries 5 --timeout 30 -r backend/requirements/model_server.txt
# uncomment to force run chart-testing
# - name: Force run chart-testing (list-changed)
# id: list-changed
# run: echo "changed=true" >> $GITHUB_OUTPUT
# lint all charts if any changes were detected
- name: Run chart-testing (lint)
if: steps.list-changed.outputs.changed == 'true'
@@ -62,7 +51,7 @@ jobs:
- name: Create kind cluster
if: steps.list-changed.outputs.changed == 'true'
uses: helm/kind-action@v1.10.0
uses: helm/kind-action@v1.12.0
- name: Run chart-testing (install)
if: steps.list-changed.outputs.changed == 'true'

View File

@@ -16,15 +16,58 @@ env:
CONFLUENCE_TEST_SPACE_URL: ${{ secrets.CONFLUENCE_TEST_SPACE_URL }}
CONFLUENCE_USER_NAME: ${{ secrets.CONFLUENCE_USER_NAME }}
CONFLUENCE_ACCESS_TOKEN: ${{ secrets.CONFLUENCE_ACCESS_TOKEN }}
JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }}
JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }}
JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
PLATFORM_PAIR: linux-amd64
jobs:
integration-tests:
# See https://runs-on.com/runners/linux/
runs-on: [runs-on, runner=32cpu-linux-x64, "run-id=${{ github.run_id }}"]
runs-on:
[
runs-on,
runner=32cpu-linux-x64,
disk=large,
"run-id=${{ github.run_id }}",
]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: "pip"
cache-dependency-path: |
backend/requirements/default.txt
backend/requirements/dev.txt
backend/requirements/ee.txt
- run: |
python -m pip install --upgrade pip
pip install --retries 5 --timeout 30 -r backend/requirements/default.txt
pip install --retries 5 --timeout 30 -r backend/requirements/dev.txt
pip install --retries 5 --timeout 30 -r backend/requirements/ee.txt
- name: Generate OpenAPI schema
working-directory: ./backend
env:
PYTHONPATH: "."
run: |
python scripts/onyx_openapi_schema.py --filename generated/openapi.json
- name: Generate OpenAPI Python client
working-directory: ./backend
run: |
docker run --rm \
-v "${{ github.workspace }}/backend/generated:/local" \
openapitools/openapi-generator-cli generate \
-i /local/openapi.json \
-g python \
-o /local/onyx_openapi_client \
--package-name onyx_openapi_client
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
@@ -61,8 +104,8 @@ jobs:
tags: onyxdotapp/onyx-backend:test
push: false
load: true
cache-from: type=s3,prefix=cache/${{ github.repository }}/integration-tests/backend/,region=${{ env.RUNS_ON_AWS_REGION }},bucket=${{ env.RUNS_ON_S3_BUCKET_CACHE }}
cache-to: type=s3,prefix=cache/${{ github.repository }}/integration-tests/backend/,region=${{ env.RUNS_ON_AWS_REGION }},bucket=${{ env.RUNS_ON_S3_BUCKET_CACHE }},mode=max
cache-from: type=s3,prefix=cache/${{ github.repository }}/integration-tests/backend-${{ env.PLATFORM_PAIR }}/,region=${{ env.RUNS_ON_AWS_REGION }},bucket=${{ env.RUNS_ON_S3_BUCKET_CACHE }}
cache-to: type=s3,prefix=cache/${{ github.repository }}/integration-tests/backend-${{ env.PLATFORM_PAIR }}/,region=${{ env.RUNS_ON_AWS_REGION }},bucket=${{ env.RUNS_ON_S3_BUCKET_CACHE }},mode=max
- name: Build Model Server Docker image
uses: ./.github/actions/custom-build-and-push
@@ -73,8 +116,8 @@ jobs:
tags: onyxdotapp/onyx-model-server:test
push: false
load: true
cache-from: type=s3,prefix=cache/${{ github.repository }}/integration-tests/model-server/,region=${{ env.RUNS_ON_AWS_REGION }},bucket=${{ env.RUNS_ON_S3_BUCKET_CACHE }}
cache-to: type=s3,prefix=cache/${{ github.repository }}/integration-tests/model-server/,region=${{ env.RUNS_ON_AWS_REGION }},bucket=${{ env.RUNS_ON_S3_BUCKET_CACHE }},mode=max
cache-from: type=s3,prefix=cache/${{ github.repository }}/integration-tests/model-server-${{ env.PLATFORM_PAIR }}/,region=${{ env.RUNS_ON_AWS_REGION }},bucket=${{ env.RUNS_ON_S3_BUCKET_CACHE }}
cache-to: type=s3,prefix=cache/${{ github.repository }}/integration-tests/model-server-${{ env.PLATFORM_PAIR }}/,region=${{ env.RUNS_ON_AWS_REGION }},bucket=${{ env.RUNS_ON_S3_BUCKET_CACHE }},mode=max
- name: Build integration test Docker image
uses: ./.github/actions/custom-build-and-push
@@ -85,8 +128,8 @@ jobs:
tags: onyxdotapp/onyx-integration:test
push: false
load: true
cache-from: type=s3,prefix=cache/${{ github.repository }}/integration-tests/integration/,region=${{ env.RUNS_ON_AWS_REGION }},bucket=${{ env.RUNS_ON_S3_BUCKET_CACHE }}
cache-to: type=s3,prefix=cache/${{ github.repository }}/integration-tests/integration/,region=${{ env.RUNS_ON_AWS_REGION }},bucket=${{ env.RUNS_ON_S3_BUCKET_CACHE }},mode=max
cache-from: type=s3,prefix=cache/${{ github.repository }}/integration-tests/integration-${{ env.PLATFORM_PAIR }}/,region=${{ env.RUNS_ON_AWS_REGION }},bucket=${{ env.RUNS_ON_S3_BUCKET_CACHE }}
cache-to: type=s3,prefix=cache/${{ github.repository }}/integration-tests/integration-${{ env.PLATFORM_PAIR }}/,region=${{ env.RUNS_ON_AWS_REGION }},bucket=${{ env.RUNS_ON_S3_BUCKET_CACHE }},mode=max
# Start containers for multi-tenant tests
- name: Start Docker containers for multi-tenant tests
@@ -94,23 +137,29 @@ jobs:
cd deployment/docker_compose
ENABLE_PAID_ENTERPRISE_EDITION_FEATURES=true \
MULTI_TENANT=true \
AUTH_TYPE=basic \
AUTH_TYPE=cloud \
REQUIRE_EMAIL_VERIFICATION=false \
DISABLE_TELEMETRY=true \
IMAGE_TAG=test \
docker compose -f docker-compose.dev.yml -p danswer-stack up -d
DEV_MODE=true \
docker compose -f docker-compose.multitenant-dev.yml -p onyx-stack up -d
id: start_docker_multi_tenant
# In practice, `cloud` Auth type would require OAUTH credentials to be set.
- name: Run Multi-Tenant Integration Tests
run: |
echo "Waiting for 3 minutes to ensure API server is ready..."
sleep 180
echo "Running integration tests..."
docker run --rm --network danswer-stack_default \
docker run --rm --network onyx-stack_default \
--name test-runner \
-e POSTGRES_HOST=relational_db \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=password \
-e DB_READONLY_USER=db_readonly_user \
-e DB_READONLY_PASSWORD=password \
-e POSTGRES_DB=postgres \
-e POSTGRES_USE_NULL_POOL=true \
-e VESPA_HOST=index \
-e REDIS_HOST=cache \
-e API_SERVER_HOST=api_server \
@@ -119,6 +168,10 @@ jobs:
-e TEST_WEB_HOSTNAME=test-runner \
-e AUTH_TYPE=cloud \
-e MULTI_TENANT=true \
-e REQUIRE_EMAIL_VERIFICATION=false \
-e DISABLE_TELEMETRY=true \
-e IMAGE_TAG=test \
-e DEV_MODE=true \
onyxdotapp/onyx-integration:test \
/app/tests/integration/multitenant_tests
continue-on-error: true
@@ -126,34 +179,39 @@ jobs:
- name: Check multi-tenant test results
run: |
if [ ${{ steps.run_tests.outcome }} == 'failure' ]; then
echo "Integration tests failed. Exiting with error."
if [ ${{ steps.run_multitenant_tests.outcome }} == 'failure' ]; then
echo "Multi-tenant integration tests failed. Exiting with error."
exit 1
else
echo "All integration tests passed successfully."
echo "All multi-tenant integration tests passed successfully."
fi
- name: Stop multi-tenant Docker containers
run: |
cd deployment/docker_compose
docker compose -f docker-compose.dev.yml -p danswer-stack down -v
docker compose -f docker-compose.multitenant-dev.yml -p onyx-stack down -v
# NOTE: Use pre-ping/null pool to reduce flakiness due to dropped connections
- name: Start Docker containers
run: |
cd deployment/docker_compose
ENABLE_PAID_ENTERPRISE_EDITION_FEATURES=true \
AUTH_TYPE=basic \
POSTGRES_POOL_PRE_PING=true \
POSTGRES_USE_NULL_POOL=true \
REQUIRE_EMAIL_VERIFICATION=false \
DISABLE_TELEMETRY=true \
IMAGE_TAG=test \
docker compose -f docker-compose.dev.yml -p danswer-stack up -d
INTEGRATION_TESTS_MODE=true \
CHECK_TTL_MANAGEMENT_TASK_FREQUENCY_IN_HOURS=0.001 \
docker compose -f docker-compose.dev.yml -p onyx-stack up -d
id: start_docker
- name: Wait for service to be ready
run: |
echo "Starting wait-for-service script..."
docker logs -f danswer-stack-api_server-1 &
docker logs -f onyx-stack-api_server-1 &
start_time=$(date +%s)
timeout=300 # 5 minutes in seconds
@@ -183,15 +241,26 @@ jobs:
done
echo "Finished waiting for service."
- name: Start Mock Services
run: |
cd backend/tests/integration/mock_services
docker compose -f docker-compose.mock-it-services.yml \
-p mock-it-services-stack up -d
# NOTE: Use pre-ping/null to reduce flakiness due to dropped connections
- name: Run Standard Integration Tests
run: |
echo "Running integration tests..."
docker run --rm --network danswer-stack_default \
docker run --rm --network onyx-stack_default \
--name test-runner \
-e POSTGRES_HOST=relational_db \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=password \
-e DB_READONLY_USER=db_readonly_user \
-e DB_READONLY_PASSWORD=password \
-e POSTGRES_DB=postgres \
-e POSTGRES_POOL_PRE_PING=true \
-e POSTGRES_USE_NULL_POOL=true \
-e VESPA_HOST=index \
-e REDIS_HOST=cache \
-e API_SERVER_HOST=api_server \
@@ -200,7 +269,12 @@ jobs:
-e CONFLUENCE_TEST_SPACE_URL=${CONFLUENCE_TEST_SPACE_URL} \
-e CONFLUENCE_USER_NAME=${CONFLUENCE_USER_NAME} \
-e CONFLUENCE_ACCESS_TOKEN=${CONFLUENCE_ACCESS_TOKEN} \
-e JIRA_BASE_URL=${JIRA_BASE_URL} \
-e JIRA_USER_EMAIL=${JIRA_USER_EMAIL} \
-e JIRA_API_TOKEN=${JIRA_API_TOKEN} \
-e TEST_WEB_HOSTNAME=test-runner \
-e MOCK_CONNECTOR_SERVER_HOST=mock_connector_server \
-e MOCK_CONNECTOR_SERVER_PORT=8001 \
onyxdotapp/onyx-integration:test \
/app/tests/integration/tests \
/app/tests/integration/connector_job_tests
@@ -216,27 +290,30 @@ jobs:
echo "All integration tests passed successfully."
fi
# save before stopping the containers so the logs can be captured
- name: Save Docker logs
if: success() || failure()
# ------------------------------------------------------------
# Always gather logs BEFORE "down":
- name: Dump API server logs
if: always()
run: |
cd deployment/docker_compose
docker compose -f docker-compose.dev.yml -p danswer-stack logs > docker-compose.log
mv docker-compose.log ${{ github.workspace }}/docker-compose.log
docker compose -f docker-compose.dev.yml -p onyx-stack logs --no-color api_server > $GITHUB_WORKSPACE/api_server.log || true
- name: Stop Docker containers
- name: Dump all-container logs (optional)
if: always()
run: |
cd deployment/docker_compose
docker compose -f docker-compose.dev.yml -p danswer-stack down -v
docker compose -f docker-compose.dev.yml -p onyx-stack logs --no-color > $GITHUB_WORKSPACE/docker-compose.log || true
- name: Upload logs
if: success() || failure()
if: always()
uses: actions/upload-artifact@v4
with:
name: docker-logs
name: docker-all-logs
path: ${{ github.workspace }}/docker-compose.log
# ------------------------------------------------------------
- name: Stop Docker containers
if: always()
run: |
cd deployment/docker_compose
docker compose -f docker-compose.dev.yml -p danswer-stack down -v
docker compose -f docker-compose.dev.yml -p onyx-stack down -v

38
.github/workflows/pr-labeler.yml vendored Normal file
View File

@@ -0,0 +1,38 @@
name: PR Labeler
on:
pull_request_target:
branches:
- main
types:
- opened
- reopened
- synchronize
- edited
permissions:
contents: read
pull-requests: write
jobs:
validate_pr_title:
runs-on: ubuntu-latest
steps:
- name: Check PR title for Conventional Commits
env:
PR_TITLE: ${{ github.event.pull_request.title }}
run: |
echo "PR Title: $PR_TITLE"
if [[ ! "$PR_TITLE" =~ ^(feat|fix|docs|test|ci|refactor|perf|chore|revert|build)(\(.+\))?:\ .+ ]]; then
echo "::error::❌ Your PR title does not follow the Conventional Commits format.
This check ensures that all pull requests use clear, consistent titles that help automate changelogs and improve project history.
Please update your PR title to follow the Conventional Commits style.
Here is a link to a blog explaining the reason why we've included the Conventional Commits style into our PR titles: https://xfuture-blog.com/working-with-conventional-commits
**Here are some examples of valid PR titles:**
- feat: add user authentication
- fix(login): handle null password error
- docs(readme): update installation instructions"
exit 1
fi

29
.github/workflows/pr-linear-check.yml vendored Normal file
View File

@@ -0,0 +1,29 @@
name: Ensure PR references Linear
on:
pull_request:
types: [opened, edited, reopened, synchronize]
jobs:
linear-check:
runs-on: ubuntu-latest
steps:
- name: Check PR body for Linear link or override
env:
PR_BODY: ${{ github.event.pull_request.body }}
run: |
# Looking for "https://linear.app" in the body
if echo "$PR_BODY" | grep -qE "https://linear\.app"; then
echo "Found a Linear link. Check passed."
exit 0
fi
# Looking for a checked override: "[x] Override Linear Check"
if echo "$PR_BODY" | grep -q "\[x\].*Override Linear Check"; then
echo "Override box is checked. Check passed."
exit 0
fi
# Otherwise, fail the run
echo "No Linear link or override found in the PR description."
exit 1

View File

@@ -0,0 +1,254 @@
name: Run MIT Integration Tests v2
concurrency:
group: Run-MIT-Integration-Tests-${{ github.workflow }}-${{ github.head_ref || github.event.workflow_run.head_branch || github.run_id }}
cancel-in-progress: true
on:
merge_group:
pull_request:
branches:
- main
- "release/**"
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
CONFLUENCE_TEST_SPACE_URL: ${{ secrets.CONFLUENCE_TEST_SPACE_URL }}
CONFLUENCE_USER_NAME: ${{ secrets.CONFLUENCE_USER_NAME }}
CONFLUENCE_ACCESS_TOKEN: ${{ secrets.CONFLUENCE_ACCESS_TOKEN }}
JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }}
JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }}
JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
PLATFORM_PAIR: linux-amd64
jobs:
integration-tests-mit:
# See https://runs-on.com/runners/linux/
runs-on:
[
runs-on,
runner=32cpu-linux-x64,
disk=large,
"run-id=${{ github.run_id }}",
]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: "pip"
cache-dependency-path: |
backend/requirements/default.txt
backend/requirements/dev.txt
- run: |
python -m pip install --upgrade pip
pip install --retries 5 --timeout 30 -r backend/requirements/default.txt
pip install --retries 5 --timeout 30 -r backend/requirements/dev.txt
- name: Generate OpenAPI schema
working-directory: ./backend
env:
PYTHONPATH: "."
run: |
python scripts/onyx_openapi_schema.py --filename generated/openapi.json
- name: Generate OpenAPI Python client
working-directory: ./backend
run: |
docker run --rm \
-v "${{ github.workspace }}/backend/generated:/local" \
openapitools/openapi-generator-cli generate \
-i /local/openapi.json \
-g python \
-o /local/onyx_openapi_client \
--package-name onyx_openapi_client
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }}
# tag every docker image with "test" so that we can spin up the correct set
# of images during testing
# We don't need to build the Web Docker image since it's not yet used
# in the integration tests. We have a separate action to verify that it builds
# successfully.
- name: Pull Web Docker image
run: |
docker pull onyxdotapp/onyx-web-server:latest
docker tag onyxdotapp/onyx-web-server:latest onyxdotapp/onyx-web-server:test
# we use the runs-on cache for docker builds
# in conjunction with runs-on runners, it has better speed and unlimited caching
# https://runs-on.com/caching/s3-cache-for-github-actions/
# https://runs-on.com/caching/docker/
# https://github.com/moby/buildkit#s3-cache-experimental
# images are built and run locally for testing purposes. Not pushed.
- name: Build Backend Docker image
uses: ./.github/actions/custom-build-and-push
with:
context: ./backend
file: ./backend/Dockerfile
platforms: linux/amd64
tags: onyxdotapp/onyx-backend:test
push: false
load: true
cache-from: type=s3,prefix=cache/${{ github.repository }}/mit-integration-tests/backend-${{ env.PLATFORM_PAIR }}/,region=${{ env.RUNS_ON_AWS_REGION }},bucket=${{ env.RUNS_ON_S3_BUCKET_CACHE }}
cache-to: type=s3,prefix=cache/${{ github.repository }}/mit-integration-tests/backend-${{ env.PLATFORM_PAIR }}/,region=${{ env.RUNS_ON_AWS_REGION }},bucket=${{ env.RUNS_ON_S3_BUCKET_CACHE }},mode=max
- name: Build Model Server Docker image
uses: ./.github/actions/custom-build-and-push
with:
context: ./backend
file: ./backend/Dockerfile.model_server
platforms: linux/amd64
tags: onyxdotapp/onyx-model-server:test
push: false
load: true
cache-from: type=s3,prefix=cache/${{ github.repository }}/mit-integration-tests/model-server-${{ env.PLATFORM_PAIR }}/,region=${{ env.RUNS_ON_AWS_REGION }},bucket=${{ env.RUNS_ON_S3_BUCKET_CACHE }}
cache-to: type=s3,prefix=cache/${{ github.repository }}/mit-integration-tests/model-server-${{ env.PLATFORM_PAIR }}/,region=${{ env.RUNS_ON_AWS_REGION }},bucket=${{ env.RUNS_ON_S3_BUCKET_CACHE }},mode=max
- name: Build integration test Docker image
uses: ./.github/actions/custom-build-and-push
with:
context: ./backend
file: ./backend/tests/integration/Dockerfile
platforms: linux/amd64
tags: onyxdotapp/onyx-integration:test
push: false
load: true
cache-from: type=s3,prefix=cache/${{ github.repository }}/mit-integration-tests/integration-${{ env.PLATFORM_PAIR }}/,region=${{ env.RUNS_ON_AWS_REGION }},bucket=${{ env.RUNS_ON_S3_BUCKET_CACHE }}
cache-to: type=s3,prefix=cache/${{ github.repository }}/mit-integration-tests/integration-${{ env.PLATFORM_PAIR }}/,region=${{ env.RUNS_ON_AWS_REGION }},bucket=${{ env.RUNS_ON_S3_BUCKET_CACHE }},mode=max
# NOTE: Use pre-ping/null pool to reduce flakiness due to dropped connections
- name: Start Docker containers
run: |
cd deployment/docker_compose
AUTH_TYPE=basic \
POSTGRES_POOL_PRE_PING=true \
POSTGRES_USE_NULL_POOL=true \
REQUIRE_EMAIL_VERIFICATION=false \
DISABLE_TELEMETRY=true \
IMAGE_TAG=test \
INTEGRATION_TESTS_MODE=true \
docker compose -f docker-compose.dev.yml -p onyx-stack up -d
id: start_docker
- name: Wait for service to be ready
run: |
echo "Starting wait-for-service script..."
docker logs -f onyx-stack-api_server-1 &
start_time=$(date +%s)
timeout=300 # 5 minutes in seconds
while true; do
current_time=$(date +%s)
elapsed_time=$((current_time - start_time))
if [ $elapsed_time -ge $timeout ]; then
echo "Timeout reached. Service did not become ready in 5 minutes."
exit 1
fi
# Use curl with error handling to ignore specific exit code 56
response=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:8080/health || echo "curl_error")
if [ "$response" = "200" ]; then
echo "Service is ready!"
break
elif [ "$response" = "curl_error" ]; then
echo "Curl encountered an error, possibly exit code 56. Continuing to retry..."
else
echo "Service not ready yet (HTTP status $response). Retrying in 5 seconds..."
fi
sleep 5
done
echo "Finished waiting for service."
- name: Start Mock Services
run: |
cd backend/tests/integration/mock_services
docker compose -f docker-compose.mock-it-services.yml \
-p mock-it-services-stack up -d
# NOTE: Use pre-ping/null to reduce flakiness due to dropped connections
- name: Run Standard Integration Tests
run: |
echo "Running integration tests..."
docker run --rm --network onyx-stack_default \
--name test-runner \
-e POSTGRES_HOST=relational_db \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=password \
-e POSTGRES_DB=postgres \
-e DB_READONLY_USER=db_readonly_user \
-e DB_READONLY_PASSWORD=password \
-e POSTGRES_POOL_PRE_PING=true \
-e POSTGRES_USE_NULL_POOL=true \
-e VESPA_HOST=index \
-e REDIS_HOST=cache \
-e API_SERVER_HOST=api_server \
-e OPENAI_API_KEY=${OPENAI_API_KEY} \
-e SLACK_BOT_TOKEN=${SLACK_BOT_TOKEN} \
-e CONFLUENCE_TEST_SPACE_URL=${CONFLUENCE_TEST_SPACE_URL} \
-e CONFLUENCE_USER_NAME=${CONFLUENCE_USER_NAME} \
-e CONFLUENCE_ACCESS_TOKEN=${CONFLUENCE_ACCESS_TOKEN} \
-e JIRA_BASE_URL=${JIRA_BASE_URL} \
-e JIRA_USER_EMAIL=${JIRA_USER_EMAIL} \
-e JIRA_API_TOKEN=${JIRA_API_TOKEN} \
-e TEST_WEB_HOSTNAME=test-runner \
-e MOCK_CONNECTOR_SERVER_HOST=mock_connector_server \
-e MOCK_CONNECTOR_SERVER_PORT=8001 \
onyxdotapp/onyx-integration:test \
/app/tests/integration/tests \
/app/tests/integration/connector_job_tests
continue-on-error: true
id: run_tests
- name: Check test results
run: |
if [ ${{ steps.run_tests.outcome }} == 'failure' ]; then
echo "Integration tests failed. Exiting with error."
exit 1
else
echo "All integration tests passed successfully."
fi
# ------------------------------------------------------------
# Always gather logs BEFORE "down":
- name: Dump API server logs
if: always()
run: |
cd deployment/docker_compose
docker compose -f docker-compose.dev.yml -p onyx-stack logs --no-color api_server > $GITHUB_WORKSPACE/api_server.log || true
- name: Dump all-container logs (optional)
if: always()
run: |
cd deployment/docker_compose
docker compose -f docker-compose.dev.yml -p onyx-stack logs --no-color > $GITHUB_WORKSPACE/docker-compose.log || true
- name: Upload logs
if: always()
uses: actions/upload-artifact@v4
with:
name: docker-all-logs
path: ${{ github.workspace }}/docker-compose.log
# ------------------------------------------------------------
- name: Stop Docker containers
if: always()
run: |
cd deployment/docker_compose
docker compose -f docker-compose.dev.yml -p onyx-stack down -v

View File

@@ -1,6 +1,6 @@
name: Run Chromatic Tests
name: Run Playwright Tests
concurrency:
group: Run-Chromatic-Tests-${{ github.workflow }}-${{ github.head_ref || github.event.workflow_run.head_branch || github.run_id }}
group: Run-Playwright-Tests-${{ github.workflow }}-${{ github.head_ref || github.event.workflow_run.head_branch || github.run_id }}
cancel-in-progress: true
on: push
@@ -8,6 +8,9 @@ on: push
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
GEN_AI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
MOCK_LLM_RESPONSE: true
PYTEST_PLAYWRIGHT_SKIP_INITIAL_RESET: true
jobs:
playwright-tests:
@@ -196,43 +199,47 @@ jobs:
cd deployment/docker_compose
docker compose -f docker-compose.dev.yml -p danswer-stack down -v
chromatic-tests:
name: Chromatic Tests
# NOTE: Chromatic UI diff testing is currently disabled.
# We are using Playwright for local and CI testing without visual regression checks.
# Chromatic may be reintroduced in the future for UI diff testing if needed.
needs: playwright-tests
runs-on:
[
runs-on,
runner=32cpu-linux-x64,
disk=large,
"run-id=${{ github.run_id }}",
]
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
# chromatic-tests:
# name: Chromatic Tests
- name: Setup node
uses: actions/setup-node@v4
with:
node-version: 22
# needs: playwright-tests
# runs-on:
# [
# runs-on,
# runner=32cpu-linux-x64,
# disk=large,
# "run-id=${{ github.run_id }}",
# ]
# steps:
# - name: Checkout code
# uses: actions/checkout@v4
# with:
# fetch-depth: 0
- name: Install node dependencies
working-directory: ./web
run: npm ci
# - name: Setup node
# uses: actions/setup-node@v4
# with:
# node-version: 22
- name: Download Playwright test results
uses: actions/download-artifact@v4
with:
name: test-results
path: ./web/test-results
# - name: Install node dependencies
# working-directory: ./web
# run: npm ci
- name: Run Chromatic
uses: chromaui/action@latest
with:
playwright: true
projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
workingDir: ./web
env:
CHROMATIC_ARCHIVE_LOCATION: ./test-results
# - name: Download Playwright test results
# uses: actions/download-artifact@v4
# with:
# name: test-results
# path: ./web/test-results
# - name: Run Chromatic
# uses: chromaui/action@latest
# with:
# playwright: true
# projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
# workingDir: ./web
# env:
# CHROMATIC_ARCHIVE_LOCATION: ./test-results

View File

@@ -31,20 +31,33 @@ jobs:
pip install --retries 5 --timeout 30 -r backend/requirements/dev.txt
pip install --retries 5 --timeout 30 -r backend/requirements/model_server.txt
- name: Generate OpenAPI schema
working-directory: ./backend
env:
PYTHONPATH: "."
run: |
python scripts/onyx_openapi_schema.py --filename generated/openapi.json
- name: Generate OpenAPI Python client
working-directory: ./backend
run: |
docker run --rm \
-v "${{ github.workspace }}/backend/generated:/local" \
openapitools/openapi-generator-cli generate \
-i /local/openapi.json \
-g python \
-o /local/onyx_openapi_client \
--package-name onyx_openapi_client \
- name: Run MyPy
run: |
cd backend
mypy .
- name: Run ruff
run: |
cd backend
ruff .
- name: Check import order with reorder-python-imports
run: |
cd backend
find ./danswer -name "*.py" | xargs reorder-python-imports --py311-plus
find ./onyx -name "*.py" | xargs reorder-python-imports --py311-plus
- name: Check code formatting with Black
run: |

View File

@@ -1,6 +1,7 @@
name: Connector Tests
on:
merge_group:
pull_request:
branches: [main]
schedule:
@@ -8,29 +9,97 @@ on:
- cron: "0 16 * * *"
env:
# AWS
AWS_ACCESS_KEY_ID_DAILY_CONNECTOR_TESTS: ${{ secrets.AWS_ACCESS_KEY_ID_DAILY_CONNECTOR_TESTS }}
AWS_SECRET_ACCESS_KEY_DAILY_CONNECTOR_TESTS: ${{ secrets.AWS_SECRET_ACCESS_KEY_DAILY_CONNECTOR_TESTS }}
# Confluence
CONFLUENCE_TEST_SPACE_URL: ${{ secrets.CONFLUENCE_TEST_SPACE_URL }}
CONFLUENCE_TEST_SPACE: ${{ secrets.CONFLUENCE_TEST_SPACE }}
CONFLUENCE_IS_CLOUD: ${{ secrets.CONFLUENCE_IS_CLOUD }}
CONFLUENCE_TEST_PAGE_ID: ${{ secrets.CONFLUENCE_TEST_PAGE_ID }}
CONFLUENCE_IS_CLOUD: ${{ secrets.CONFLUENCE_IS_CLOUD }}
CONFLUENCE_USER_NAME: ${{ secrets.CONFLUENCE_USER_NAME }}
CONFLUENCE_ACCESS_TOKEN: ${{ secrets.CONFLUENCE_ACCESS_TOKEN }}
# Jira
JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }}
JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }}
JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
# Gong
GONG_ACCESS_KEY: ${{ secrets.GONG_ACCESS_KEY }}
GONG_ACCESS_KEY_SECRET: ${{ secrets.GONG_ACCESS_KEY_SECRET }}
# Google
GOOGLE_DRIVE_SERVICE_ACCOUNT_JSON_STR: ${{ secrets.GOOGLE_DRIVE_SERVICE_ACCOUNT_JSON_STR }}
GOOGLE_DRIVE_OAUTH_CREDENTIALS_JSON_STR_TEST_USER_1: ${{ secrets.GOOGLE_DRIVE_OAUTH_CREDENTIALS_JSON_STR_TEST_USER_1 }}
GOOGLE_DRIVE_OAUTH_CREDENTIALS_JSON_STR: ${{ secrets.GOOGLE_DRIVE_OAUTH_CREDENTIALS_JSON_STR }}
GOOGLE_GMAIL_SERVICE_ACCOUNT_JSON_STR: ${{ secrets.GOOGLE_GMAIL_SERVICE_ACCOUNT_JSON_STR }}
GOOGLE_GMAIL_OAUTH_CREDENTIALS_JSON_STR: ${{ secrets.GOOGLE_GMAIL_OAUTH_CREDENTIALS_JSON_STR }}
# Slab
SLAB_BOT_TOKEN: ${{ secrets.SLAB_BOT_TOKEN }}
# Zendesk
ZENDESK_SUBDOMAIN: ${{ secrets.ZENDESK_SUBDOMAIN }}
ZENDESK_EMAIL: ${{ secrets.ZENDESK_EMAIL }}
ZENDESK_TOKEN: ${{ secrets.ZENDESK_TOKEN }}
# Salesforce
SF_USERNAME: ${{ secrets.SF_USERNAME }}
SF_PASSWORD: ${{ secrets.SF_PASSWORD }}
SF_SECURITY_TOKEN: ${{ secrets.SF_SECURITY_TOKEN }}
# Hubspot
HUBSPOT_ACCESS_TOKEN: ${{ secrets.HUBSPOT_ACCESS_TOKEN }}
# IMAP
IMAP_HOST: ${{ secrets.IMAP_HOST }}
IMAP_USERNAME: ${{ secrets.IMAP_USERNAME }}
IMAP_PASSWORD: ${{ secrets.IMAP_PASSWORD }}
IMAP_MAILBOXES: ${{ secrets.IMAP_MAILBOXES }}
# Airtable
AIRTABLE_TEST_BASE_ID: ${{ secrets.AIRTABLE_TEST_BASE_ID }}
AIRTABLE_TEST_TABLE_ID: ${{ secrets.AIRTABLE_TEST_TABLE_ID }}
AIRTABLE_TEST_TABLE_NAME: ${{ secrets.AIRTABLE_TEST_TABLE_NAME }}
AIRTABLE_ACCESS_TOKEN: ${{ secrets.AIRTABLE_ACCESS_TOKEN }}
# Sharepoint
SHAREPOINT_CLIENT_ID: ${{ secrets.SHAREPOINT_CLIENT_ID }}
SHAREPOINT_CLIENT_SECRET: ${{ secrets.SHAREPOINT_CLIENT_SECRET }}
SHAREPOINT_CLIENT_DIRECTORY_ID: ${{ secrets.SHAREPOINT_CLIENT_DIRECTORY_ID }}
SHAREPOINT_SITE: ${{ secrets.SHAREPOINT_SITE }}
# Github
ACCESS_TOKEN_GITHUB: ${{ secrets.ACCESS_TOKEN_GITHUB }}
# Gitlab
GITLAB_ACCESS_TOKEN: ${{ secrets.GITLAB_ACCESS_TOKEN }}
# Gitbook
GITBOOK_SPACE_ID: ${{ secrets.GITBOOK_SPACE_ID }}
GITBOOK_API_KEY: ${{ secrets.GITBOOK_API_KEY }}
# Notion
NOTION_INTEGRATION_TOKEN: ${{ secrets.NOTION_INTEGRATION_TOKEN }}
# Highspot
HIGHSPOT_KEY: ${{ secrets.HIGHSPOT_KEY }}
HIGHSPOT_SECRET: ${{ secrets.HIGHSPOT_SECRET }}
# Slack
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
# Teams
TEAMS_APPLICATION_ID: ${{ secrets.TEAMS_APPLICATION_ID }}
TEAMS_DIRECTORY_ID: ${{ secrets.TEAMS_DIRECTORY_ID }}
TEAMS_SECRET: ${{ secrets.TEAMS_SECRET }}
jobs:
connectors-check:
# See https://runs-on.com/runners/linux/
runs-on: [runs-on,runner=8cpu-linux-x64,"run-id=${{ github.run_id }}"]
runs-on: [runs-on, runner=8cpu-linux-x64, "run-id=${{ github.run_id }}"]
env:
PYTHONPATH: ./backend
@@ -53,10 +122,20 @@ jobs:
python -m pip install --upgrade pip
pip install --retries 5 --timeout 30 -r backend/requirements/default.txt
pip install --retries 5 --timeout 30 -r backend/requirements/dev.txt
playwright install chromium
playwright install-deps chromium
- name: Run Tests
shell: script -q -e -c "bash --noprofile --norc -eo pipefail {0}"
run: py.test -o junit_family=xunit2 -xv --ff backend/tests/daily/connectors
run: |
py.test \
-n 8 \
--dist loadfile \
--durations=8 \
-o junit_family=xunit2 \
-xv \
--ff \
backend/tests/daily/connectors
- name: Alert on Failure
if: failure() && github.event_name == 'schedule'

View File

@@ -1,18 +1,29 @@
name: Connector Tests
name: Model Server Tests
on:
schedule:
# This cron expression runs the job daily at 16:00 UTC (9am PT)
- cron: "0 16 * * *"
workflow_dispatch:
inputs:
branch:
description: 'Branch to run the workflow on'
required: false
default: 'main'
env:
# Bedrock
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION_NAME: ${{ secrets.AWS_REGION_NAME }}
# OpenAI
# API keys for testing
COHERE_API_KEY: ${{ secrets.COHERE_API_KEY }}
LITELLM_API_KEY: ${{ secrets.LITELLM_API_KEY }}
LITELLM_API_URL: ${{ secrets.LITELLM_API_URL }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
AZURE_API_KEY: ${{ secrets.AZURE_API_KEY }}
AZURE_API_URL: ${{ secrets.AZURE_API_URL }}
jobs:
model-check:
@@ -26,6 +37,23 @@ jobs:
- name: Checkout code
uses: actions/checkout@v4
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }}
# tag every docker image with "test" so that we can spin up the correct set
# of images during testing
# We don't need to build the Web Docker image since it's not yet used
# in the integration tests. We have a separate action to verify that it builds
# successfully.
- name: Pull Model Server Docker image
run: |
docker pull onyxdotapp/onyx-model-server:latest
docker tag onyxdotapp/onyx-model-server:latest onyxdotapp/onyx-model-server:test
- name: Set up Python
uses: actions/setup-python@v5
with:
@@ -41,6 +69,49 @@ jobs:
pip install --retries 5 --timeout 30 -r backend/requirements/default.txt
pip install --retries 5 --timeout 30 -r backend/requirements/dev.txt
- name: Start Docker containers
run: |
cd deployment/docker_compose
ENABLE_PAID_ENTERPRISE_EDITION_FEATURES=true \
AUTH_TYPE=basic \
REQUIRE_EMAIL_VERIFICATION=false \
DISABLE_TELEMETRY=true \
IMAGE_TAG=test \
docker compose -f docker-compose.model-server-test.yml -p onyx-stack up -d indexing_model_server
id: start_docker
- name: Wait for service to be ready
run: |
echo "Starting wait-for-service script..."
start_time=$(date +%s)
timeout=300 # 5 minutes in seconds
while true; do
current_time=$(date +%s)
elapsed_time=$((current_time - start_time))
if [ $elapsed_time -ge $timeout ]; then
echo "Timeout reached. Service did not become ready in 5 minutes."
exit 1
fi
# Use curl with error handling to ignore specific exit code 56
response=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:9000/api/health || echo "curl_error")
if [ "$response" = "200" ]; then
echo "Service is ready!"
break
elif [ "$response" = "curl_error" ]; then
echo "Curl encountered an error, possibly exit code 56. Continuing to retry..."
else
echo "Service not ready yet (HTTP status $response). Retrying in 5 seconds..."
fi
sleep 5
done
echo "Finished waiting for service."
- name: Run Tests
shell: script -q -e -c "bash --noprofile --norc -eo pipefail {0}"
run: |
@@ -56,3 +127,23 @@ jobs:
-H 'Content-type: application/json' \
--data '{"text":"Scheduled Model Tests failed! Check the run at: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"}' \
$SLACK_WEBHOOK
- name: Dump all-container logs (optional)
if: always()
run: |
cd deployment/docker_compose
docker compose -f docker-compose.model-server-test.yml -p onyx-stack logs --no-color > $GITHUB_WORKSPACE/docker-compose.log || true
- name: Upload logs
if: always()
uses: actions/upload-artifact@v4
with:
name: docker-all-logs
path: ${{ github.workspace }}/docker-compose.log
- name: Stop Docker containers
if: always()
run: |
cd deployment/docker_compose
docker compose -f docker-compose.model-server-test.yml -p onyx-stack down -v

View File

@@ -15,6 +15,9 @@ jobs:
env:
PYTHONPATH: ./backend
REDIS_CLOUD_PYTEST_PASSWORD: ${{ secrets.REDIS_CLOUD_PYTEST_PASSWORD }}
SF_USERNAME: ${{ secrets.SF_USERNAME }}
SF_PASSWORD: ${{ secrets.SF_PASSWORD }}
SF_SECURITY_TOKEN: ${{ secrets.SF_SECURITY_TOKEN }}
steps:
- name: Checkout code

24
.gitignore vendored
View File

@@ -1,10 +1,28 @@
.env
# editors
.vscode
.zed
# macos
.DS_store
# python
.venv
.mypy_cache
.idea
# testing
/web/test-results/
backend/onyx/agent_search/main/test_data.json
backend/tests/regression/answer_quality/test_data.json
backend/tests/regression/search_quality/eval-*
backend/tests/regression/search_quality/search_eval_config.yaml
backend/tests/regression/search_quality/*.json
# secret files
.env
jira_test_env
# others
/deployment/data/nginx/app.conf
.vscode/
*.sw?
/backend/tests/regression/answer_quality/search_test_config.yaml
/web/test-results/

View File

@@ -1,12 +1,13 @@
repos:
- repo: https://github.com/psf/black
rev: 23.3.0
rev: 25.1.0
hooks:
- id: black
language_version: python3.11
- repo: https://github.com/asottile/reorder_python_imports
rev: v3.9.0
# this is a fork which keeps compatibility with black
- repo: https://github.com/wimglenn/reorder-python-imports-black
rev: v3.14.0
hooks:
- id: reorder-python-imports
args: ['--py311-plus', '--application-directories=backend/']
@@ -18,14 +19,14 @@ repos:
# These settings will remove unused imports with side effects
# Note: The repo currently does not and should not have imports with side effects
- repo: https://github.com/PyCQA/autoflake
rev: v2.2.0
rev: v2.3.1
hooks:
- id: autoflake
args: [ '--remove-all-unused-imports', '--remove-unused-variables', '--in-place' , '--recursive']
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
rev: v0.0.286
rev: v0.11.4
hooks:
- id: ruff
- repo: https://github.com/pre-commit/mirrors-prettier

View File

@@ -5,6 +5,8 @@
# For local dev, often user Authentication is not needed
AUTH_TYPE=disabled
# Skip warm up for dev
SKIP_WARM_UP=True
# Always keep these on for Dev
# Logs all model prompts to stdout
@@ -27,6 +29,7 @@ REQUIRE_EMAIL_VERIFICATION=False
# Set these so if you wipe the DB, you don't end up having to go through the UI every time
GEN_AI_API_KEY=<REPLACE THIS>
OPENAI_API_KEY=<REPLACE THIS>
# If answer quality isn't important for dev, use gpt-4o-mini since it's cheaper
GEN_AI_MODEL_VERSION=gpt-4o
FAST_GEN_AI_MODEL_VERSION=gpt-4o
@@ -42,10 +45,23 @@ PYTHONPATH=../backend
PYTHONUNBUFFERED=1
# Internet Search
# Internet Search
BING_API_KEY=<REPLACE THIS>
EXA_API_KEY=<REPLACE THIS>
# Enable the full set of Danswer Enterprise Edition features
# NOTE: DO NOT ENABLE THIS UNLESS YOU HAVE A PAID ENTERPRISE LICENSE (or if you are using this for local testing/development)
ENABLE_PAID_ENTERPRISE_EDITION_FEATURES=False
# Agent Search configs # TODO: Remove give proper namings
AGENT_RETRIEVAL_STATS=False # Note: This setting will incur substantial re-ranking effort
AGENT_RERANKING_STATS=True
AGENT_MAX_QUERY_RETRIEVAL_RESULTS=20
AGENT_RERANKING_MAX_QUERY_RETRIEVAL_RESULTS=20
# S3 File Store Configuration (MinIO for local development)
S3_ENDPOINT_URL=http://localhost:9004
S3_FILE_STORE_BUCKET_NAME=onyx-file-store-bucket
S3_AWS_ACCESS_KEY_ID=minioadmin
S3_AWS_SECRET_ACCESS_KEY=minioadmin

View File

@@ -6,354 +6,461 @@
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"compounds": [
{
// Dummy entry used to label the group
"name": "--- Compound ---",
"configurations": [
"--- Individual ---"
],
"presentation": {
"group": "1",
}
},
{
"name": "Run All Onyx Services",
"configurations": [
"Web Server",
"Model Server",
"API Server",
"Slack Bot",
"Celery primary",
"Celery light",
"Celery heavy",
"Celery indexing",
"Celery beat",
],
"presentation": {
"group": "1",
}
},
{
"name": "Web / Model / API",
"configurations": [
"Web Server",
"Model Server",
"API Server",
],
"presentation": {
"group": "1",
}
},
{
"name": "Celery (all)",
"configurations": [
"Celery primary",
"Celery light",
"Celery heavy",
"Celery indexing",
"Celery beat"
],
"presentation": {
"group": "1",
}
}
{
// Dummy entry used to label the group
"name": "--- Compound ---",
"configurations": ["--- Individual ---"],
"presentation": {
"group": "1"
}
},
{
"name": "Run All Onyx Services",
"configurations": [
"Web Server",
"Model Server",
"API Server",
"Slack Bot",
"Celery primary",
"Celery light",
"Celery heavy",
"Celery docfetching",
"Celery docprocessing",
"Celery beat",
"Celery monitoring"
],
"presentation": {
"group": "1"
}
},
{
"name": "Web / Model / API",
"configurations": ["Web Server", "Model Server", "API Server"],
"presentation": {
"group": "1"
}
},
{
"name": "Celery (all)",
"configurations": [
"Celery primary",
"Celery light",
"Celery heavy",
"Celery docfetching",
"Celery docprocessing",
"Celery beat",
"Celery monitoring"
],
"presentation": {
"group": "1"
}
}
],
"configurations": [
{
// Dummy entry used to label the group
"name": "--- Individual ---",
"type": "node",
"request": "launch",
"presentation": {
"group": "2",
"order": 0
}
},
{
"name": "Web Server",
"type": "node",
"request": "launch",
"cwd": "${workspaceRoot}/web",
"runtimeExecutable": "npm",
"envFile": "${workspaceFolder}/.vscode/.env",
"runtimeArgs": [
"run", "dev"
],
"presentation": {
"group": "2",
},
"console": "integratedTerminal",
"consoleTitle": "Web Server Console"
{
// Dummy entry used to label the group
"name": "--- Individual ---",
"type": "node",
"request": "launch",
"presentation": {
"group": "2",
"order": 0
}
},
{
"name": "Web Server",
"type": "node",
"request": "launch",
"cwd": "${workspaceRoot}/web",
"runtimeExecutable": "npm",
"envFile": "${workspaceFolder}/.vscode/.env",
"runtimeArgs": ["run", "dev"],
"presentation": {
"group": "2"
},
{
"name": "Model Server",
"consoleName": "Model Server",
"type": "debugpy",
"request": "launch",
"module": "uvicorn",
"cwd": "${workspaceFolder}/backend",
"envFile": "${workspaceFolder}/.vscode/.env",
"env": {
"LOG_LEVEL": "DEBUG",
"PYTHONUNBUFFERED": "1"
},
"args": [
"model_server.main:app",
"--reload",
"--port",
"9000"
],
"presentation": {
"group": "2",
},
"consoleTitle": "Model Server Console"
"console": "integratedTerminal",
"consoleTitle": "Web Server Console"
},
{
"name": "Model Server",
"consoleName": "Model Server",
"type": "debugpy",
"request": "launch",
"module": "uvicorn",
"cwd": "${workspaceFolder}/backend",
"envFile": "${workspaceFolder}/.vscode/.env",
"env": {
"LOG_LEVEL": "DEBUG",
"PYTHONUNBUFFERED": "1"
},
{
"name": "API Server",
"consoleName": "API Server",
"type": "debugpy",
"request": "launch",
"module": "uvicorn",
"cwd": "${workspaceFolder}/backend",
"envFile": "${workspaceFolder}/.vscode/.env",
"env": {
"LOG_DANSWER_MODEL_INTERACTIONS": "True",
"LOG_LEVEL": "DEBUG",
"PYTHONUNBUFFERED": "1"
},
"args": [
"onyx.main:app",
"--reload",
"--port",
"8080"
],
"presentation": {
"group": "2",
},
"consoleTitle": "API Server Console"
"args": ["model_server.main:app", "--reload", "--port", "9000"],
"presentation": {
"group": "2"
},
// For the listener to access the Slack API,
// DANSWER_BOT_SLACK_APP_TOKEN & DANSWER_BOT_SLACK_BOT_TOKEN need to be set in .env file located in the root of the project
{
"name": "Slack Bot",
"consoleName": "Slack Bot",
"type": "debugpy",
"request": "launch",
"program": "onyx/onyxbot/slack/listener.py",
"cwd": "${workspaceFolder}/backend",
"envFile": "${workspaceFolder}/.vscode/.env",
"env": {
"LOG_LEVEL": "DEBUG",
"PYTHONUNBUFFERED": "1",
"PYTHONPATH": "."
},
"presentation": {
"group": "2",
},
"consoleTitle": "Slack Bot Console"
"consoleTitle": "Model Server Console"
},
{
"name": "API Server",
"consoleName": "API Server",
"type": "debugpy",
"request": "launch",
"module": "uvicorn",
"cwd": "${workspaceFolder}/backend",
"envFile": "${workspaceFolder}/.vscode/.env",
"env": {
"LOG_DANSWER_MODEL_INTERACTIONS": "True",
"LOG_LEVEL": "DEBUG",
"PYTHONUNBUFFERED": "1"
},
{
"name": "Celery primary",
"type": "debugpy",
"request": "launch",
"module": "celery",
"cwd": "${workspaceFolder}/backend",
"envFile": "${workspaceFolder}/.vscode/.env",
"env": {
"LOG_LEVEL": "INFO",
"PYTHONUNBUFFERED": "1",
"PYTHONPATH": "."
},
"args": [
"-A",
"onyx.background.celery.versioned_apps.primary",
"worker",
"--pool=threads",
"--concurrency=4",
"--prefetch-multiplier=1",
"--loglevel=INFO",
"--hostname=primary@%n",
"-Q",
"celery",
],
"presentation": {
"group": "2",
},
"consoleTitle": "Celery primary Console"
"args": ["onyx.main:app", "--reload", "--port", "8080"],
"presentation": {
"group": "2"
},
{
"name": "Celery light",
"type": "debugpy",
"request": "launch",
"module": "celery",
"cwd": "${workspaceFolder}/backend",
"envFile": "${workspaceFolder}/.vscode/.env",
"env": {
"LOG_LEVEL": "INFO",
"PYTHONUNBUFFERED": "1",
"PYTHONPATH": "."
},
"args": [
"-A",
"onyx.background.celery.versioned_apps.light",
"worker",
"--pool=threads",
"--concurrency=64",
"--prefetch-multiplier=8",
"--loglevel=INFO",
"--hostname=light@%n",
"-Q",
"vespa_metadata_sync,connector_deletion,doc_permissions_upsert",
],
"presentation": {
"group": "2",
},
"consoleTitle": "Celery light Console"
"consoleTitle": "API Server Console"
},
// For the listener to access the Slack API,
// DANSWER_BOT_SLACK_APP_TOKEN & DANSWER_BOT_SLACK_BOT_TOKEN need to be set in .env file located in the root of the project
{
"name": "Slack Bot",
"consoleName": "Slack Bot",
"type": "debugpy",
"request": "launch",
"program": "onyx/onyxbot/slack/listener.py",
"cwd": "${workspaceFolder}/backend",
"envFile": "${workspaceFolder}/.vscode/.env",
"env": {
"LOG_LEVEL": "DEBUG",
"PYTHONUNBUFFERED": "1",
"PYTHONPATH": "."
},
{
"name": "Celery heavy",
"type": "debugpy",
"request": "launch",
"module": "celery",
"cwd": "${workspaceFolder}/backend",
"envFile": "${workspaceFolder}/.vscode/.env",
"env": {
"LOG_LEVEL": "INFO",
"PYTHONUNBUFFERED": "1",
"PYTHONPATH": "."
},
"args": [
"-A",
"onyx.background.celery.versioned_apps.heavy",
"worker",
"--pool=threads",
"--concurrency=4",
"--prefetch-multiplier=1",
"--loglevel=INFO",
"--hostname=heavy@%n",
"-Q",
"connector_pruning,connector_doc_permissions_sync,connector_external_group_sync",
],
"presentation": {
"group": "2",
},
"consoleTitle": "Celery heavy Console"
"presentation": {
"group": "2"
},
{
"name": "Celery indexing",
"type": "debugpy",
"request": "launch",
"module": "celery",
"cwd": "${workspaceFolder}/backend",
"envFile": "${workspaceFolder}/.vscode/.env",
"env": {
"ENABLE_MULTIPASS_INDEXING": "false",
"LOG_LEVEL": "DEBUG",
"PYTHONUNBUFFERED": "1",
"PYTHONPATH": "."
},
"args": [
"-A",
"onyx.background.celery.versioned_apps.indexing",
"worker",
"--pool=threads",
"--concurrency=1",
"--prefetch-multiplier=1",
"--loglevel=INFO",
"--hostname=indexing@%n",
"-Q",
"connector_indexing",
],
"presentation": {
"group": "2",
},
"consoleTitle": "Celery indexing Console"
"consoleTitle": "Slack Bot Console"
},
{
"name": "Celery primary",
"type": "debugpy",
"request": "launch",
"module": "celery",
"cwd": "${workspaceFolder}/backend",
"envFile": "${workspaceFolder}/.vscode/.env",
"env": {
"LOG_LEVEL": "INFO",
"PYTHONUNBUFFERED": "1",
"PYTHONPATH": "."
},
{
"name": "Celery beat",
"type": "debugpy",
"request": "launch",
"module": "celery",
"cwd": "${workspaceFolder}/backend",
"envFile": "${workspaceFolder}/.vscode/.env",
"env": {
"LOG_LEVEL": "DEBUG",
"PYTHONUNBUFFERED": "1",
"PYTHONPATH": "."
},
"args": [
"-A",
"onyx.background.celery.versioned_apps.beat",
"beat",
"--loglevel=INFO",
],
"presentation": {
"group": "2",
},
"consoleTitle": "Celery beat Console"
"args": [
"-A",
"onyx.background.celery.versioned_apps.primary",
"worker",
"--pool=threads",
"--concurrency=4",
"--prefetch-multiplier=1",
"--loglevel=INFO",
"--hostname=primary@%n",
"-Q",
"celery"
],
"presentation": {
"group": "2"
},
{
"name": "Pytest",
"consoleName": "Pytest",
"type": "debugpy",
"request": "launch",
"module": "pytest",
"cwd": "${workspaceFolder}/backend",
"envFile": "${workspaceFolder}/.vscode/.env",
"env": {
"LOG_LEVEL": "DEBUG",
"PYTHONUNBUFFERED": "1",
"PYTHONPATH": "."
},
"args": [
"-v"
// Specify a sepcific module/test to run or provide nothing to run all tests
//"tests/unit/onyx/llm/answering/test_prune_and_merge.py"
],
"presentation": {
"group": "2",
},
"consoleTitle": "Pytest Console"
"consoleTitle": "Celery primary Console"
},
{
"name": "Celery light",
"type": "debugpy",
"request": "launch",
"module": "celery",
"cwd": "${workspaceFolder}/backend",
"envFile": "${workspaceFolder}/.vscode/.env",
"env": {
"LOG_LEVEL": "INFO",
"PYTHONUNBUFFERED": "1",
"PYTHONPATH": "."
},
{
// Dummy entry used to label the group
"name": "--- Tasks ---",
"type": "node",
"request": "launch",
"presentation": {
"group": "3",
"order": 0
}
},
{
"name": "Clear and Restart External Volumes and Containers",
"type": "node",
"request": "launch",
"runtimeExecutable": "bash",
"runtimeArgs": ["${workspaceFolder}/backend/scripts/restart_containers.sh"],
"cwd": "${workspaceFolder}",
"console": "integratedTerminal",
"stopOnEntry": true,
"presentation": {
"group": "3",
},
"args": [
"-A",
"onyx.background.celery.versioned_apps.light",
"worker",
"--pool=threads",
"--concurrency=64",
"--prefetch-multiplier=8",
"--loglevel=INFO",
"--hostname=light@%n",
"-Q",
"vespa_metadata_sync,connector_deletion,doc_permissions_upsert"
],
"presentation": {
"group": "2"
},
{
// Celery jobs launched through a single background script (legacy)
// Recommend using the "Celery (all)" compound launch instead.
"name": "Background Jobs",
"consoleName": "Background Jobs",
"type": "debugpy",
"request": "launch",
"program": "scripts/dev_run_background_jobs.py",
"cwd": "${workspaceFolder}/backend",
"envFile": "${workspaceFolder}/.vscode/.env",
"env": {
"LOG_DANSWER_MODEL_INTERACTIONS": "True",
"LOG_LEVEL": "DEBUG",
"PYTHONUNBUFFERED": "1",
"PYTHONPATH": "."
},
"consoleTitle": "Celery light Console"
},
{
"name": "Celery heavy",
"type": "debugpy",
"request": "launch",
"module": "celery",
"cwd": "${workspaceFolder}/backend",
"envFile": "${workspaceFolder}/.vscode/.env",
"env": {
"LOG_LEVEL": "INFO",
"PYTHONUNBUFFERED": "1",
"PYTHONPATH": "."
},
"args": [
"-A",
"onyx.background.celery.versioned_apps.heavy",
"worker",
"--pool=threads",
"--concurrency=4",
"--prefetch-multiplier=1",
"--loglevel=INFO",
"--hostname=heavy@%n",
"-Q",
"connector_pruning,connector_doc_permissions_sync,connector_external_group_sync"
],
"presentation": {
"group": "2"
},
"consoleTitle": "Celery heavy Console"
},
{
"name": "Celery docfetching",
"type": "debugpy",
"request": "launch",
"module": "celery",
"cwd": "${workspaceFolder}/backend",
"envFile": "${workspaceFolder}/.vscode/.env",
"env": {
"LOG_LEVEL": "DEBUG",
"PYTHONUNBUFFERED": "1",
"PYTHONPATH": "."
},
"args": [
"-A",
"onyx.background.celery.versioned_apps.docfetching",
"worker",
"--pool=threads",
"--concurrency=1",
"--prefetch-multiplier=1",
"--loglevel=INFO",
"--hostname=docfetching@%n",
"-Q",
"connector_doc_fetching,user_files_indexing"
],
"presentation": {
"group": "2"
},
"consoleTitle": "Celery docfetching Console",
"justMyCode": false
},
{
"name": "Celery docprocessing",
"type": "debugpy",
"request": "launch",
"module": "celery",
"cwd": "${workspaceFolder}/backend",
"envFile": "${workspaceFolder}/.vscode/.env",
"env": {
"ENABLE_MULTIPASS_INDEXING": "false",
"LOG_LEVEL": "DEBUG",
"PYTHONUNBUFFERED": "1",
"PYTHONPATH": "."
},
"args": [
"-A",
"onyx.background.celery.versioned_apps.docprocessing",
"worker",
"--pool=threads",
"--concurrency=6",
"--prefetch-multiplier=1",
"--loglevel=INFO",
"--hostname=docprocessing@%n",
"-Q",
"docprocessing"
],
"presentation": {
"group": "2"
},
"consoleTitle": "Celery docprocessing Console",
"justMyCode": false
},
{
"name": "Celery monitoring",
"type": "debugpy",
"request": "launch",
"module": "celery",
"cwd": "${workspaceFolder}/backend",
"envFile": "${workspaceFolder}/.vscode/.env",
"env": {},
"args": [
"-A",
"onyx.background.celery.versioned_apps.monitoring",
"worker",
"--pool=solo",
"--concurrency=1",
"--prefetch-multiplier=1",
"--loglevel=INFO",
"--hostname=monitoring@%n",
"-Q",
"monitoring"
],
"presentation": {
"group": "2"
},
"consoleTitle": "Celery monitoring Console"
},
{
"name": "Celery beat",
"type": "debugpy",
"request": "launch",
"module": "celery",
"cwd": "${workspaceFolder}/backend",
"envFile": "${workspaceFolder}/.vscode/.env",
"env": {
"LOG_LEVEL": "DEBUG",
"PYTHONUNBUFFERED": "1",
"PYTHONPATH": "."
},
"args": [
"-A",
"onyx.background.celery.versioned_apps.beat",
"beat",
"--loglevel=INFO"
],
"presentation": {
"group": "2"
},
"consoleTitle": "Celery beat Console"
},
{
"name": "Pytest",
"consoleName": "Pytest",
"type": "debugpy",
"request": "launch",
"module": "pytest",
"cwd": "${workspaceFolder}/backend",
"envFile": "${workspaceFolder}/.vscode/.env",
"env": {
"LOG_LEVEL": "DEBUG",
"PYTHONUNBUFFERED": "1",
"PYTHONPATH": "."
},
"args": [
"-v"
// Specify a sepcific module/test to run or provide nothing to run all tests
//"tests/unit/onyx/llm/answering/test_prune_and_merge.py"
],
"presentation": {
"group": "2"
},
"consoleTitle": "Pytest Console"
},
{
// Dummy entry used to label the group
"name": "--- Tasks ---",
"type": "node",
"request": "launch",
"presentation": {
"group": "3",
"order": 0
}
},
{
"name": "Clear and Restart External Volumes and Containers",
"type": "node",
"request": "launch",
"runtimeExecutable": "bash",
"runtimeArgs": [
"${workspaceFolder}/backend/scripts/restart_containers.sh"
],
"cwd": "${workspaceFolder}",
"console": "integratedTerminal",
"stopOnEntry": true,
"presentation": {
"group": "3"
}
},
{
// Celery jobs launched through a single background script (legacy)
// Recommend using the "Celery (all)" compound launch instead.
"name": "Background Jobs",
"consoleName": "Background Jobs",
"type": "debugpy",
"request": "launch",
"program": "scripts/dev_run_background_jobs.py",
"cwd": "${workspaceFolder}/backend",
"envFile": "${workspaceFolder}/.vscode/.env",
"env": {
"LOG_DANSWER_MODEL_INTERACTIONS": "True",
"LOG_LEVEL": "DEBUG",
"PYTHONUNBUFFERED": "1",
"PYTHONPATH": "."
}
},
{
"name": "Install Python Requirements",
"type": "node",
"request": "launch",
"runtimeExecutable": "bash",
"runtimeArgs": [
"-c",
"pip install -r backend/requirements/default.txt && pip install -r backend/requirements/dev.txt && pip install -r backend/requirements/ee.txt && pip install -r backend/requirements/model_server.txt"
],
"cwd": "${workspaceFolder}",
"console": "integratedTerminal",
"presentation": {
"group": "3"
}
},
{
// script to generate the openapi schema
"name": "Onyx OpenAPI Schema Generator",
"type": "debugpy",
"request": "launch",
"program": "scripts/onyx_openapi_schema.py",
"cwd": "${workspaceFolder}/backend",
"envFile": "${workspaceFolder}/.env",
"env": {
"PYTHONUNBUFFERED": "1",
"PYTHONPATH": "."
},
"args": [
"--filename",
"generated/openapi.json"
]
},
{
// script to debug multi tenant db issues
"name": "Onyx DB Manager (Top Chunks)",
"type": "debugpy",
"request": "launch",
"program": "scripts/debugging/onyx_db.py",
"cwd": "${workspaceFolder}/backend",
"envFile": "${workspaceFolder}/.env",
"env": {
"PYTHONUNBUFFERED": "1",
"PYTHONPATH": "."
},
"args": [
"--password",
"your_password_here",
"--port",
"5433",
"--report",
"top-chunks",
"--filename",
"generated/tenants_by_num_docs.csv"
]
},
{
"name": "Debug React Web App in Chrome",
"type": "chrome",
"request": "launch",
"url": "http://localhost:3000",
"webRoot": "${workspaceFolder}/web"
}
]
}
}

101
.vscode/tasks.template.jsonc vendored Normal file
View File

@@ -0,0 +1,101 @@
{
"version": "2.0.0",
"tasks": [
{
"type": "austin",
"label": "Profile celery beat",
"envFile": "${workspaceFolder}/.env",
"options": {
"cwd": "${workspaceFolder}/backend"
},
"command": [
"sudo",
"-E"
],
"args": [
"celery",
"-A",
"onyx.background.celery.versioned_apps.beat",
"beat",
"--loglevel=INFO"
]
},
{
"type": "shell",
"label": "Generate Onyx OpenAPI Python client",
"cwd": "${workspaceFolder}/backend",
"envFile": "${workspaceFolder}/.env",
"options": {
"cwd": "${workspaceFolder}/backend"
},
"command": [
"openapi-generator"
],
"args": [
"generate",
"-i",
"generated/openapi.json",
"-g",
"python",
"-o",
"generated/onyx_openapi_client",
"--package-name",
"onyx_openapi_client",
]
},
{
"type": "shell",
"label": "Generate Typescript Fetch client (openapi-generator)",
"envFile": "${workspaceFolder}/.env",
"options": {
"cwd": "${workspaceFolder}"
},
"command": [
"openapi-generator"
],
"args": [
"generate",
"-i",
"backend/generated/openapi.json",
"-g",
"typescript-fetch",
"-o",
"${workspaceFolder}/web/src/lib/generated/onyx_api",
"--additional-properties=disallowAdditionalPropertiesIfNotPresent=false,legacyDiscriminatorBehavior=false,supportsES6=true",
]
},
{
"type": "shell",
"label": "Generate TypeScript Client (openapi-ts)",
"envFile": "${workspaceFolder}/.env",
"options": {
"cwd": "${workspaceFolder}/web"
},
"command": [
"npx"
],
"args": [
"openapi-typescript",
"../backend/generated/openapi.json",
"--output",
"./src/lib/generated/onyx-schema.ts",
]
},
{
"type": "shell",
"label": "Generate TypeScript Client (orval)",
"envFile": "${workspaceFolder}/.env",
"options": {
"cwd": "${workspaceFolder}/web"
},
"command": [
"npx"
],
"args": [
"orval",
"--config",
"orval.config.js",
]
}
]
}

View File

@@ -1,4 +1,4 @@
<!-- DANSWER_METADATA={"link": "https://github.com/onyx-dot-app/onyx/blob/main/CONTRIBUTING.md"} -->
<!-- ONYX_METADATA={"link": "https://github.com/onyx-dot-app/onyx/blob/main/CONTRIBUTING.md"} -->
# Contributing to Onyx
@@ -12,6 +12,10 @@ As an open source project in a rapidly changing space, we welcome all contributi
The [GitHub Issues](https://github.com/onyx-dot-app/onyx/issues) page is a great place to start for contribution ideas.
To ensure that your contribution is aligned with the project's direction, please reach out to any maintainer on the Onyx team
via [Slack](https://join.slack.com/t/onyx-dot-app/shared_invite/zt-34lu4m7xg-TsKGO6h8PDvR5W27zTdyhA) /
[Discord](https://discord.gg/TDJ59cGV2X) or [email](mailto:founders@onyx.app).
Issues that have been explicitly approved by the maintainers (aligned with the direction of the project)
will be marked with the `approved by maintainers` label.
Issues marked `good first issue` are an especially great place to start.
@@ -23,8 +27,8 @@ If you have a new/different contribution in mind, we'd love to hear about it!
Your input is vital to making sure that Onyx moves in the right direction.
Before starting on implementation, please raise a GitHub issue.
And always feel free to message us (Chris Weaver / Yuhong Sun) on
[Slack](https://join.slack.com/t/danswer/shared_invite/zt-1w76msxmd-HJHLe3KNFIAIzk_0dSOKaQ) /
Also, always feel free to message the founders (Chris Weaver / Yuhong Sun) on
[Slack](https://join.slack.com/t/onyx-dot-app/shared_invite/zt-34lu4m7xg-TsKGO6h8PDvR5W27zTdyhA) /
[Discord](https://discord.gg/TDJ59cGV2X) directly about anything at all.
### Contributing Code
@@ -42,7 +46,7 @@ Our goal is to make contributing as easy as possible. If you run into any issues
That way we can help future contributors and users can avoid the same issue.
We also have support channels and generally interesting discussions on our
[Slack](https://join.slack.com/t/danswer/shared_invite/zt-1w76msxmd-HJHLe3KNFIAIzk_0dSOKaQ)
[Slack](https://join.slack.com/t/onyx-dot-app/shared_invite/zt-2twesxdr6-5iQitKZQpgq~hYIZ~dv3KA)
and
[Discord](https://discord.gg/TDJ59cGV2X).
@@ -55,6 +59,7 @@ Onyx being a fully functional app, relies on some external software, specificall
- [Postgres](https://www.postgresql.org/) (Relational DB)
- [Vespa](https://vespa.ai/) (Vector DB/Search Engine)
- [Redis](https://redis.io/) (Cache)
- [MinIO](https://min.io/) (File Store)
- [Nginx](https://nginx.org/) (Not needed for development flows generally)
> **Note:**
@@ -123,19 +128,59 @@ Once the above is done, navigate to `onyx/web` run:
npm i
```
#### Docker containers for external software
## Formatting and Linting
### Backend
For the backend, you'll need to setup pre-commit hooks (black / reorder-python-imports).
First, install pre-commit (if you don't have it already) following the instructions
[here](https://pre-commit.com/#installation).
With the virtual environment active, install the pre-commit library with:
```bash
pip install pre-commit
```
Then, from the `onyx/backend` directory, run:
```bash
pre-commit install
```
Additionally, we use `mypy` for static type checking.
Onyx is fully type-annotated, and we want to keep it that way!
To run the mypy checks manually, run `python -m mypy .` from the `onyx/backend` directory.
### Web
We use `prettier` for formatting. The desired version (2.8.8) will be installed via a `npm i` from the `onyx/web` directory.
To run the formatter, use `npx prettier --write .` from the `onyx/web` directory.
Please double check that prettier passes before creating a pull request.
# Running the application for development
## Developing using VSCode Debugger (recommended)
We highly recommend using VSCode debugger for development.
See [CONTRIBUTING_VSCODE.md](./CONTRIBUTING_VSCODE.md) for more details.
Otherwise, you can follow the instructions below to run the application for development.
## Manually running the application for development
### Docker containers for external software
You will need Docker installed to run these containers.
First navigate to `onyx/deployment/docker_compose`, then start up Postgres/Vespa/Redis with:
First navigate to `onyx/deployment/docker_compose`, then start up Postgres/Vespa/Redis/MinIO with:
```bash
docker compose -f docker-compose.dev.yml -p onyx-stack up -d index relational_db cache
docker compose -f docker-compose.dev.yml -p onyx-stack up -d index relational_db cache minio
```
(index refers to Vespa, relational_db refers to Postgres, and cache refers to Redis)
#### Running Onyx locally
### Running Onyx locally
To start the frontend, navigate to `onyx/web` and run:
@@ -223,35 +268,6 @@ If you want to make changes to Onyx and run those changes in Docker, you can als
docker compose -f docker-compose.dev.yml -p onyx-stack up -d --build
```
### Formatting and Linting
#### Backend
For the backend, you'll need to setup pre-commit hooks (black / reorder-python-imports).
First, install pre-commit (if you don't have it already) following the instructions
[here](https://pre-commit.com/#installation).
With the virtual environment active, install the pre-commit library with:
```bash
pip install pre-commit
```
Then, from the `onyx/backend` directory, run:
```bash
pre-commit install
```
Additionally, we use `mypy` for static type checking.
Onyx is fully type-annotated, and we want to keep it that way!
To run the mypy checks manually, run `python -m mypy .` from the `onyx/backend` directory.
#### Web
We use `prettier` for formatting. The desired version (2.8.8) will be installed via a `npm i` from the `onyx/web` directory.
To run the formatter, use `npx prettier --write .` from the `onyx/web` directory.
Please double check that prettier passes before creating a pull request.
### Release Process

30
CONTRIBUTING_VSCODE.md Normal file
View File

@@ -0,0 +1,30 @@
# VSCode Debugging Setup
This guide explains how to set up and use VSCode's debugging capabilities with this project.
## Initial Setup
1. **Environment Setup**:
- Copy `.vscode/.env.template` to `.vscode/.env`
- Fill in the necessary environment variables in `.vscode/.env`
2. **launch.json**:
- Copy `.vscode/launch.template.jsonc` to `.vscode/launch.json`
## Using the Debugger
Before starting, make sure the Docker Daemon is running.
1. Open the Debug view in VSCode (Cmd+Shift+D on macOS)
2. From the dropdown at the top, select "Clear and Restart External Volumes and Containers" and press the green play button
3. From the dropdown at the top, select "Run All Onyx Services" and press the green play button
4. CD into web, run "npm i" followed by npm run dev.
5. Now, you can navigate to onyx in your browser (default is http://localhost:3000) and start using the app
6. You can set breakpoints by clicking to the left of line numbers to help debug while the app is running
7. Use the debug toolbar to step through code, inspect variables, etc.
## Features
- Hot reload is enabled for the web server and API servers
- Python debugging is configured with debugpy
- Environment variables are loaded from `.vscode/.env`
- Console output is organized in the integrated terminal with labeled tabs

138
README.md
View File

@@ -1,9 +1,9 @@
<!-- DANSWER_METADATA={"link": "https://github.com/onyx-dot-app/onyx/blob/main/README.md"} -->
<!-- ONYX_METADATA={"link": "https://github.com/onyx-dot-app/onyx/blob/main/README.md"} -->
<a name="readme-top"></a>
<h2 align="center">
<a href="https://www.onyx.app/"> <img width="50%" src="https://github.com/onyx-dot-app/onyx/blob/logo/LogoOnyx.png?raw=true)" /></a>
<a href="https://www.onyx.app/"> <img width="50%" src="https://github.com/onyx-dot-app/onyx/blob/logo/OnyxLogoCropped.jpg?raw=true)" /></a>
</h2>
<p align="center">
@@ -13,7 +13,7 @@
<a href="https://docs.onyx.app/" target="_blank">
<img src="https://img.shields.io/badge/docs-view-blue" alt="Documentation">
</a>
<a href="https://join.slack.com/t/danswer/shared_invite/zt-1w76msxmd-HJHLe3KNFIAIzk_0dSOKaQ" target="_blank">
<a href="https://join.slack.com/t/onyx-dot-app/shared_invite/zt-34lu4m7xg-TsKGO6h8PDvR5W27zTdyhA" target="_blank">
<img src="https://img.shields.io/badge/slack-join-blue.svg?logo=slack" alt="Slack">
</a>
<a href="https://discord.gg/TDJ59cGV2X" target="_blank">
@@ -24,124 +24,94 @@
</a>
</p>
<strong>[Onyx](https://www.onyx.app/)</strong> (Formerly Danswer) is the AI Assistant connected to your company's docs, apps, and people.
Onyx provides a Chat interface and plugs into any LLM of your choice. Onyx can be deployed anywhere and for any
scale - on a laptop, on-premise, or to cloud. Since you own the deployment, your user data and chats are fully in your
own control. Onyx is dual Licensed with most of it under MIT license and designed to be modular and easily extensible. The system also comes fully ready
for production usage with user authentication, role management (admin/basic users), chat persistence, and a UI for
configuring AI Assistants.
<strong>[Onyx](https://www.onyx.app/)</strong> (formerly Danswer) is the AI platform connected to your company's docs, apps, and people.
Onyx provides a feature rich Chat interface and plugs into any LLM of your choice.
Keep knowledge and access controls sync-ed across over 40 connectors like Google Drive, Slack, Confluence, Salesforce, etc.
Create custom AI agents with unique prompts, knowledge, and actions that the agents can take.
Onyx can be deployed securely anywhere and for any scale - on a laptop, on-premise, or to cloud.
Onyx also serves as a Enterprise Search across all common workplace tools such as Slack, Google Drive, Confluence, etc.
By combining LLMs and team specific knowledge, Onyx becomes a subject matter expert for the team. Imagine ChatGPT if
it had access to your team's unique knowledge! It enables questions such as "A customer wants feature X, is this already
supported?" or "Where's the pull request for feature Y?"
<h3>Usage</h3>
<h3>Feature Highlights</h3>
Onyx Web App:
**Deep research over your team's knowledge:**
https://github.com/onyx-dot-app/onyx/assets/32520769/563be14c-9304-47b5-bf0a-9049c2b6f410
https://private-user-images.githubusercontent.com/32520769/414509312-48392e83-95d0-4fb5-8650-a396e05e0a32.mp4?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk5Mjg2MzYsIm5iZiI6MTczOTkyODMzNiwicGF0aCI6Ii8zMjUyMDc2OS80MTQ1MDkzMTItNDgzOTJlODMtOTVkMC00ZmI1LTg2NTAtYTM5NmUwNWUwYTMyLm1wND9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE5VDAxMjUzNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWFhMzk5Njg2Y2Y5YjFmNDNiYTQ2YzM5ZTg5YWJiYTU2NWMyY2YwNmUyODE2NWUxMDRiMWQxZWJmODI4YTA0MTUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.a9D8A0sgKE9AoaoE-mfFbJ6_OKYeqaf7TZ4Han2JfW8
Or, plug Onyx into your existing Slack workflows (more integrations to come 😁):
https://github.com/onyx-dot-app/onyx/assets/25087905/3e19739b-d178-4371-9a38-011430bdec1b
**Use Onyx as a secure AI Chat with any LLM:**
![Onyx Chat Silent Demo](https://github.com/onyx-dot-app/onyx/releases/download/v0.21.1/OnyxChatSilentDemo.gif)
**Easily set up connectors to your apps:**
![Onyx Connector Silent Demo](https://github.com/onyx-dot-app/onyx/releases/download/v0.21.1/OnyxConnectorSilentDemo.gif)
**Access Onyx where your team already works:**
![Onyx Bot Demo](https://github.com/onyx-dot-app/onyx/releases/download/v0.21.1/OnyxBot.png)
For more details on the Admin UI to manage connectors and users, check out our
<strong><a href="https://www.youtube.com/watch?v=geNzY1nbCnU">Full Video Demo</a></strong>!
## Deployment
**To try it out for free and get started in seconds, check out [Onyx Cloud](https://cloud.onyx.app/signup)**.
Onyx can easily be run locally (even on a laptop) or deployed on a virtual machine with a single
Onyx can also be run locally (even on a laptop) or deployed on a virtual machine with a single
`docker compose` command. Checkout our [docs](https://docs.onyx.app/quickstart) to learn more.
We also have built-in support for deployment on Kubernetes. Files for that can be found [here](https://github.com/onyx-dot-app/onyx/tree/main/deployment/kubernetes).
We also have built-in support for high-availability/scalable deployment on Kubernetes.
References [here](https://github.com/onyx-dot-app/onyx/tree/main/deployment).
## 💃 Main Features
- Chat UI with the ability to select documents to chat with.
- Create custom AI Assistants with different prompts and backing knowledge sets.
- Connect Onyx with LLM of your choice (self-host for a fully airgapped solution).
- Document Search + AI Answers for natural language queries.
- Connectors to all common workplace tools like Google Drive, Confluence, Slack, etc.
- Slack integration to get answers and search results directly in Slack.
## 🔍 Other Notable Benefits of Onyx
- Custom deep learning models for indexing and inference time, only through Onyx + learning from user feedback.
- Flexible security features like SSO (OIDC/SAML/OAuth2), RBAC, encryption of credentials, etc.
- Knowledge curation features like document-sets, query history, usage analytics, etc.
- Scalable deployment options tested up to many tens of thousands users and hundreds of millions of documents.
## 🚧 Roadmap
- Chat/Prompt sharing with specific teammates and user groups.
- Multimodal model support, chat with images, video etc.
- Choosing between LLMs and parameters during chat session.
- Tool calling and agent configurations options.
- New methods in information retrieval (StructRAG, LightGraphRAG, etc.)
- Personalized Search
- Organizational understanding and ability to locate and suggest experts from your team.
- Code Search
- SQL and Structured Query Language
## Other Notable Benefits of Onyx
- User Authentication with document level access management.
- Best in class Hybrid Search across all sources (BM-25 + prefix aware embedding models).
- Admin Dashboard to configure connectors, document-sets, access, etc.
- Custom deep learning models + learn from user feedback.
- Easy deployment and ability to host Onyx anywhere of your choosing.
## 🔌 Connectors
Keep knowledge and access up to sync across 40+ connectors:
Efficiently pulls the latest changes from:
- Slack
- GitHub
- Google Drive
- Confluence
- Slack
- Gmail
- Salesforce
- Microsoft Sharepoint
- Github
- Jira
- Zendesk
- Gmail
- Notion
- Gong
- Slab
- Linear
- Productboard
- Guru
- Bookstack
- Document360
- Sharepoint
- Hubspot
- Microsoft Teams
- Dropbox
- Local Files
- Websites
- And more ...
## 📚 Editions
See the full list [here](https://docs.onyx.app/connectors).
## 📚 Licensing
There are two editions of Onyx:
- Onyx Community Edition (CE) is available freely under the MIT Expat license. This version has ALL the core features discussed above. This is the version of Onyx you will get if you follow the Deployment guide above.
- Onyx Enterprise Edition (EE) includes extra features that are primarily useful for larger organizations. Specifically, this includes:
- Single Sign-On (SSO), with support for both SAML and OIDC
- Role-based access control
- Document permission inheritance from connected sources
- Usage analytics and query history accessible to admins
- Whitelabeling
- API key authentication
- Encryption of secrets
- Any many more! Checkout [our website](https://www.onyx.app/) for the latest.
- Onyx Community Edition (CE) is available freely under the MIT Expat license. Simply follow the Deployment guide above.
- Onyx Enterprise Edition (EE) includes extra features that are primarily useful for larger organizations.
For feature details, check out [our website](https://www.onyx.app/pricing).
To try the Onyx Enterprise Edition:
1. Checkout [Onyx Cloud](https://cloud.onyx.app/signup).
2. For self-hosting the Enterprise Edition, contact us at [founders@onyx.app](mailto:founders@onyx.app) or book a call with us on our [Cal](https://cal.com/team/onyx/founders).
1. Checkout our [Cloud product](https://cloud.onyx.app/signup).
2. For self-hosting, contact us at [founders@onyx.app](mailto:founders@onyx.app) or book a call with us on our [Cal](https://cal.com/team/danswer/founders).
## 💡 Contributing
Looking to contribute? Please check out the [Contribution Guide](CONTRIBUTING.md) for more details.
## ⭐Star History
[![Star History Chart](https://api.star-history.com/svg?repos=onyx-dot-app/onyx&type=Date)](https://star-history.com/#onyx-dot-app/onyx&Date)
## ✨Contributors
<a href="https://github.com/onyx-dot-app/onyx/graphs/contributors">
<img alt="contributors" src="https://contrib.rocks/image?repo=onyx-dot-app/onyx"/>
</a>
<p align="right" style="font-size: 14px; color: #555; margin-top: 20px;">
<a href="#readme-top" style="text-decoration: none; color: #007bff; font-weight: bold;">
↑ Back to Top ↑
</a>
</p>

3
backend/.gitignore vendored
View File

@@ -9,3 +9,6 @@ api_keys.py
vespa-app.zip
dynamic_config_storage/
celerybeat-schedule*
onyx/connectors/salesforce/data/
.test.env
/generated

View File

@@ -8,9 +8,11 @@ Edition features outside of personal development or testing purposes. Please rea
founders@onyx.app for more information. Please visit https://github.com/onyx-dot-app/onyx"
# Default ONYX_VERSION, typically overriden during builds by GitHub Actions.
ARG ONYX_VERSION=0.8-dev
ARG ONYX_VERSION=0.0.0-dev
# DO_NOT_TRACK is used to disable telemetry for Unstructured
ENV ONYX_VERSION=${ONYX_VERSION} \
DANSWER_RUNNING_IN_DOCKER="true"
DANSWER_RUNNING_IN_DOCKER="true" \
DO_NOT_TRACK="true"
RUN echo "ONYX_VERSION: ${ONYX_VERSION}"
@@ -26,14 +28,16 @@ RUN apt-get update && \
curl \
zip \
ca-certificates \
libgnutls30=3.7.9-2+deb12u3 \
libblkid1=2.38.1-5+deb12u1 \
libmount1=2.38.1-5+deb12u1 \
libsmartcols1=2.38.1-5+deb12u1 \
libuuid1=2.38.1-5+deb12u1 \
libgnutls30 \
libblkid1 \
libmount1 \
libsmartcols1 \
libuuid1 \
libxmlsec1-dev \
pkg-config \
gcc && \
gcc \
nano \
vim && \
rm -rf /var/lib/apt/lists/* && \
apt-get clean
@@ -73,6 +77,9 @@ RUN apt-get update && \
rm -rf /var/lib/apt/lists/* && \
rm -f /usr/local/lib/python3.11/site-packages/tornado/test/test.key
# Install postgresql-client for easy manual tests
# Install it here to avoid it being cleaned up above
RUN apt-get update && apt-get install -y postgresql-client
# Pre-downloading models for setups with limited egress
RUN python -c "from tokenizers import Tokenizer; \
@@ -81,7 +88,7 @@ Tokenizer.from_pretrained('nomic-ai/nomic-embed-text-v1')"
# Pre-downloading NLTK for setups with limited egress
RUN python -c "import nltk; \
nltk.download('stopwords', quiet=True); \
nltk.download('punkt', quiet=True);"
nltk.download('punkt_tab', quiet=True);"
# nltk.download('wordnet', quiet=True); introduce this back if lemmatization is needed
# Set up application files
@@ -98,8 +105,10 @@ COPY ./alembic /app/alembic
COPY ./alembic_tenants /app/alembic_tenants
COPY ./alembic.ini /app/alembic.ini
COPY supervisord.conf /usr/etc/supervisord.conf
COPY ./static /app/static
# Escape hatch
# Escape hatch scripts
COPY ./scripts/debugging /app/scripts/debugging
COPY ./scripts/force_delete_connector_by_id.py /app/scripts/force_delete_connector_by_id.py
# Put logo in assets

View File

@@ -7,7 +7,7 @@ You can find it at https://hub.docker.com/r/onyx/onyx-model-server. For more det
visit https://github.com/onyx-dot-app/onyx."
# Default ONYX_VERSION, typically overriden during builds by GitHub Actions.
ARG ONYX_VERSION=0.8-dev
ARG ONYX_VERSION=0.0.0-dev
ENV ONYX_VERSION=${ONYX_VERSION} \
DANSWER_RUNNING_IN_DOCKER="true"
@@ -31,7 +31,8 @@ RUN python -c "from transformers import AutoTokenizer; \
AutoTokenizer.from_pretrained('distilbert-base-uncased'); \
AutoTokenizer.from_pretrained('mixedbread-ai/mxbai-rerank-xsmall-v1'); \
from huggingface_hub import snapshot_download; \
snapshot_download(repo_id='danswer/hybrid-intent-token-classifier', revision='v1.0.3'); \
snapshot_download(repo_id='onyx-dot-app/hybrid-intent-token-classifier'); \
snapshot_download(repo_id='onyx-dot-app/information-content-model'); \
snapshot_download('nomic-ai/nomic-embed-text-v1'); \
snapshot_download('mixedbread-ai/mxbai-rerank-xsmall-v1'); \
from sentence_transformers import SentenceTransformer; \
@@ -45,6 +46,7 @@ WORKDIR /app
# Utils used by model server
COPY ./onyx/utils/logger.py /app/onyx/utils/logger.py
COPY ./onyx/utils/middleware.py /app/onyx/utils/middleware.py
# Place to fetch version information
COPY ./onyx/__init__.py /app/onyx/__init__.py

View File

@@ -84,7 +84,7 @@ keys = console
keys = generic
[logger_root]
level = WARN
level = INFO
handlers = console
qualname =

View File

@@ -1,4 +1,4 @@
<!-- DANSWER_METADATA={"link": "https://github.com/onyx-dot-app/onyx/blob/main/backend/alembic/README.md"} -->
<!-- ONYX_METADATA={"link": "https://github.com/onyx-dot-app/onyx/blob/main/backend/alembic/README.md"} -->
# Alembic DB Migrations
@@ -20,3 +20,44 @@ To run all un-applied migrations:
To undo migrations:
`alembic downgrade -X`
where X is the number of migrations you want to undo from the current state
### Multi-tenant migrations
For multi-tenant deployments, you can use additional options:
**Upgrade all tenants:**
```bash
alembic -x upgrade_all_tenants=true upgrade head
```
**Upgrade specific schemas:**
```bash
# Single schema
alembic -x schemas=tenant_12345678-1234-1234-1234-123456789012 upgrade head
# Multiple schemas (comma-separated)
alembic -x schemas=tenant_12345678-1234-1234-1234-123456789012,public,another_tenant upgrade head
```
**Upgrade tenants within an alphabetical range:**
```bash
# Upgrade tenants 100-200 when sorted alphabetically (positions 100 to 200)
alembic -x upgrade_all_tenants=true -x tenant_range_start=100 -x tenant_range_end=200 upgrade head
# Upgrade tenants starting from position 1000 alphabetically
alembic -x upgrade_all_tenants=true -x tenant_range_start=1000 upgrade head
# Upgrade first 500 tenants alphabetically
alembic -x upgrade_all_tenants=true -x tenant_range_end=500 upgrade head
```
**Continue on error (for batch operations):**
```bash
alembic -x upgrade_all_tenants=true -x continue=true upgrade head
```
The tenant range filtering works by:
1. Sorting tenant IDs alphabetically
2. Using 1-based position numbers (1st, 2nd, 3rd tenant, etc.)
3. Filtering to the specified range of positions
4. Non-tenant schemas (like 'public') are always included

View File

@@ -1,12 +1,12 @@
from typing import Any, Literal
from onyx.db.engine import get_iam_auth_token
from onyx.db.engine.iam_auth import get_iam_auth_token
from onyx.configs.app_configs import USE_IAM_AUTH
from onyx.configs.app_configs import POSTGRES_HOST
from onyx.configs.app_configs import POSTGRES_PORT
from onyx.configs.app_configs import POSTGRES_USER
from onyx.configs.app_configs import AWS_REGION
from onyx.db.engine import build_connection_string
from onyx.db.engine import get_all_tenant_ids
from onyx.configs.app_configs import AWS_REGION_NAME
from onyx.db.engine.sql_engine import build_connection_string
from onyx.db.engine.tenant_utils import get_all_tenant_ids
from sqlalchemy import event
from sqlalchemy import pool
from sqlalchemy import text
@@ -21,9 +21,17 @@ from alembic import context
from sqlalchemy.ext.asyncio import create_async_engine
from sqlalchemy.sql.schema import SchemaItem
from onyx.configs.constants import SSL_CERT_FILE
from shared_configs.configs import MULTI_TENANT, POSTGRES_DEFAULT_SCHEMA
from shared_configs.configs import (
MULTI_TENANT,
POSTGRES_DEFAULT_SCHEMA,
TENANT_ID_PREFIX,
)
from onyx.db.models import Base
from celery.backends.database.session import ResultModelBase # type: ignore
from onyx.db.engine.sql_engine import SqlEngine
# Make sure in alembic.ini [logger_root] level=INFO is set or most logging will be
# hidden! (defaults to level=WARN)
# Alembic Config object
config = context.config
@@ -36,6 +44,7 @@ if config.config_file_name is not None and config.attributes.get(
target_metadata = [Base.metadata, ResultModelBase.metadata]
EXCLUDE_TABLES = {"kombu_queue", "kombu_message"}
logger = logging.getLogger(__name__)
ssl_context: ssl.SSLContext | None = None
@@ -64,36 +73,154 @@ def include_object(
return True
def get_schema_options() -> tuple[str, bool, bool]:
def filter_tenants_by_range(
tenant_ids: list[str], start_range: int | None = None, end_range: int | None = None
) -> list[str]:
"""
Filter tenant IDs by alphabetical position range.
Args:
tenant_ids: List of tenant IDs to filter
start_range: Starting position in alphabetically sorted list (1-based, inclusive)
end_range: Ending position in alphabetically sorted list (1-based, inclusive)
Returns:
Filtered list of tenant IDs in their original order
"""
if start_range is None and end_range is None:
return tenant_ids
# Separate tenant IDs from non-tenant schemas
tenant_schemas = [tid for tid in tenant_ids if tid.startswith(TENANT_ID_PREFIX)]
non_tenant_schemas = [
tid for tid in tenant_ids if not tid.startswith(TENANT_ID_PREFIX)
]
# Sort tenant schemas alphabetically.
# NOTE: can cause missed schemas if a schema is created in between workers
# fetching of all tenant IDs. We accept this risk for now. Just re-running
# the migration will fix the issue.
sorted_tenant_schemas = sorted(tenant_schemas)
# Apply range filtering (0-based indexing)
start_idx = start_range if start_range is not None else 0
end_idx = end_range if end_range is not None else len(sorted_tenant_schemas)
# Ensure indices are within bounds
start_idx = max(0, start_idx)
end_idx = min(len(sorted_tenant_schemas), end_idx)
# Get the filtered tenant schemas
filtered_tenant_schemas = sorted_tenant_schemas[start_idx:end_idx]
# Combine with non-tenant schemas and preserve original order
filtered_tenants = []
for tenant_id in tenant_ids:
if tenant_id in filtered_tenant_schemas or tenant_id in non_tenant_schemas:
filtered_tenants.append(tenant_id)
return filtered_tenants
def get_schema_options() -> (
tuple[bool, bool, bool, int | None, int | None, list[str] | None]
):
x_args_raw = context.get_x_argument()
x_args = {}
for arg in x_args_raw:
for pair in arg.split(","):
if "=" in pair:
key, value = pair.split("=", 1)
x_args[key.strip()] = value.strip()
schema_name = x_args.get("schema", POSTGRES_DEFAULT_SCHEMA)
if "=" in arg:
key, value = arg.split("=", 1)
x_args[key.strip()] = value.strip()
else:
raise ValueError(f"Invalid argument: {arg}")
create_schema = x_args.get("create_schema", "true").lower() == "true"
upgrade_all_tenants = x_args.get("upgrade_all_tenants", "false").lower() == "true"
if (
MULTI_TENANT
and schema_name == POSTGRES_DEFAULT_SCHEMA
and not upgrade_all_tenants
):
# continue on error with individual tenant
# only applies to online migrations
continue_on_error = x_args.get("continue", "false").lower() == "true"
# Tenant range filtering
tenant_range_start = None
tenant_range_end = None
if "tenant_range_start" in x_args:
try:
tenant_range_start = int(x_args["tenant_range_start"])
except ValueError:
raise ValueError(
f"Invalid tenant_range_start value: {x_args['tenant_range_start']}. Must be an integer."
)
if "tenant_range_end" in x_args:
try:
tenant_range_end = int(x_args["tenant_range_end"])
except ValueError:
raise ValueError(
f"Invalid tenant_range_end value: {x_args['tenant_range_end']}. Must be an integer."
)
# Validate range
if tenant_range_start is not None and tenant_range_end is not None:
if tenant_range_start > tenant_range_end:
raise ValueError(
f"tenant_range_start ({tenant_range_start}) cannot be greater than tenant_range_end ({tenant_range_end})"
)
# Specific schema names filtering (replaces both schema_name and the old tenant_ids approach)
schemas = None
if "schemas" in x_args:
schema_names_str = x_args["schemas"].strip()
if schema_names_str:
# Split by comma and strip whitespace
schemas = [
name.strip() for name in schema_names_str.split(",") if name.strip()
]
if schemas:
logger.info(f"Specific schema names specified: {schemas}")
# Validate that only one method is used at a time
range_filtering = tenant_range_start is not None or tenant_range_end is not None
specific_filtering = schemas is not None and len(schemas) > 0
if range_filtering and specific_filtering:
raise ValueError(
"Cannot run default migrations in public schema when multi-tenancy is enabled. "
"Please specify a tenant-specific schema."
"Cannot use both tenant range filtering (tenant_range_start/tenant_range_end) "
"and specific schema filtering (schemas) at the same time. "
"Please use only one filtering method."
)
return schema_name, create_schema, upgrade_all_tenants
if upgrade_all_tenants and specific_filtering:
raise ValueError(
"Cannot use both upgrade_all_tenants=true and schemas at the same time. "
"Use either upgrade_all_tenants=true for all tenants, or schemas for specific schemas."
)
# If any filtering parameters are specified, we're not doing the default single schema migration
if range_filtering:
upgrade_all_tenants = True
# Validate multi-tenant requirements
if MULTI_TENANT and not upgrade_all_tenants and not specific_filtering:
raise ValueError(
"In multi-tenant mode, you must specify either upgrade_all_tenants=true "
"or provide schemas. Cannot run default migration."
)
return (
create_schema,
upgrade_all_tenants,
continue_on_error,
tenant_range_start,
tenant_range_end,
schemas,
)
def do_run_migrations(
connection: Connection, schema_name: str, create_schema: bool
) -> None:
logger.info(f"About to migrate schema: {schema_name}")
if create_schema:
connection.execute(text(f'CREATE SCHEMA IF NOT EXISTS "{schema_name}"'))
connection.execute(text("COMMIT"))
@@ -120,7 +247,7 @@ def provide_iam_token_for_alembic(
) -> None:
if USE_IAM_AUTH:
# Database connection settings
region = AWS_REGION
region = AWS_REGION_NAME
host = POSTGRES_HOST
port = POSTGRES_PORT
user = POSTGRES_USER
@@ -134,7 +261,20 @@ def provide_iam_token_for_alembic(
async def run_async_migrations() -> None:
schema_name, create_schema, upgrade_all_tenants = get_schema_options()
(
create_schema,
upgrade_all_tenants,
continue_on_error,
tenant_range_start,
tenant_range_end,
schemas,
) = get_schema_options()
if not schemas and not MULTI_TENANT:
schemas = [POSTGRES_DEFAULT_SCHEMA]
# without init_engine, subsequent engine calls fail hard intentionally
SqlEngine.init_engine(pool_size=20, max_overflow=5)
engine = create_async_engine(
build_connection_string(),
@@ -149,11 +289,18 @@ async def run_async_migrations() -> None:
) -> None:
provide_iam_token_for_alembic(dialect, conn_rec, cargs, cparams)
if upgrade_all_tenants:
tenant_schemas = get_all_tenant_ids()
for schema in tenant_schemas:
if schemas:
# Use specific schema names directly without fetching all tenants
logger.info(f"Migrating specific schema names: {schemas}")
i_schema = 0
num_schemas = len(schemas)
for schema in schemas:
i_schema += 1
logger.info(
f"Migrating schema: index={i_schema} num_schemas={num_schemas} schema={schema}"
)
try:
logger.info(f"Migrating schema: {schema}")
async with engine.connect() as connection:
await connection.run_sync(
do_run_migrations,
@@ -162,28 +309,108 @@ async def run_async_migrations() -> None:
)
except Exception as e:
logger.error(f"Error migrating schema {schema}: {e}")
raise
if not continue_on_error:
logger.error("--continue=true is not set, raising exception!")
raise
logger.warning("--continue=true is set, continuing to next schema.")
elif upgrade_all_tenants:
tenant_schemas = get_all_tenant_ids()
filtered_tenant_schemas = filter_tenants_by_range(
tenant_schemas, tenant_range_start, tenant_range_end
)
if tenant_range_start is not None or tenant_range_end is not None:
logger.info(
f"Filtering tenants by range: start={tenant_range_start}, end={tenant_range_end}"
)
logger.info(
f"Total tenants: {len(tenant_schemas)}, Filtered tenants: {len(filtered_tenant_schemas)}"
)
i_tenant = 0
num_tenants = len(filtered_tenant_schemas)
for schema in filtered_tenant_schemas:
i_tenant += 1
logger.info(
f"Migrating schema: index={i_tenant} num_tenants={num_tenants} schema={schema}"
)
try:
async with engine.connect() as connection:
await connection.run_sync(
do_run_migrations,
schema_name=schema,
create_schema=create_schema,
)
except Exception as e:
logger.error(f"Error migrating schema {schema}: {e}")
if not continue_on_error:
logger.error("--continue=true is not set, raising exception!")
raise
logger.warning("--continue=true is set, continuing to next schema.")
else:
try:
logger.info(f"Migrating schema: {schema_name}")
async with engine.connect() as connection:
await connection.run_sync(
do_run_migrations,
schema_name=schema_name,
create_schema=create_schema,
)
except Exception as e:
logger.error(f"Error migrating schema {schema_name}: {e}")
raise
# This should not happen in the new design since we require either
# upgrade_all_tenants=true or schemas in multi-tenant mode
# and for non-multi-tenant mode, we should use schemas with the default schema
raise ValueError(
"No migration target specified. Use either upgrade_all_tenants=true for all tenants "
"or schemas for specific schemas."
)
await engine.dispose()
def run_migrations_offline() -> None:
schema_name, _, upgrade_all_tenants = get_schema_options()
"""
NOTE(rkuo): This generates a sql script that can be used to migrate the database ...
instead of migrating the db live via an open connection
Not clear on when this would be used by us or if it even works.
If it is offline, then why are there calls to the db engine?
This doesn't really get used when we migrate in the cloud."""
logger.info("run_migrations_offline starting.")
# without init_engine, subsequent engine calls fail hard intentionally
SqlEngine.init_engine(pool_size=20, max_overflow=5)
(
create_schema,
upgrade_all_tenants,
continue_on_error,
tenant_range_start,
tenant_range_end,
schemas,
) = get_schema_options()
url = build_connection_string()
if upgrade_all_tenants:
if schemas:
# Use specific schema names directly without fetching all tenants
logger.info(f"Migrating specific schema names: {schemas}")
for schema in schemas:
logger.info(f"Migrating schema: {schema}")
context.configure(
url=url,
target_metadata=target_metadata, # type: ignore
literal_binds=True,
include_object=include_object,
version_table_schema=schema,
include_schemas=True,
script_location=config.get_main_option("script_location"),
dialect_opts={"paramstyle": "named"},
)
with context.begin_transaction():
context.run_migrations()
elif upgrade_all_tenants:
engine = create_async_engine(url)
if USE_IAM_AUTH:
@@ -197,7 +424,19 @@ def run_migrations_offline() -> None:
tenant_schemas = get_all_tenant_ids()
engine.sync_engine.dispose()
for schema in tenant_schemas:
filtered_tenant_schemas = filter_tenants_by_range(
tenant_schemas, tenant_range_start, tenant_range_end
)
if tenant_range_start is not None or tenant_range_end is not None:
logger.info(
f"Filtering tenants by range: start={tenant_range_start}, end={tenant_range_end}"
)
logger.info(
f"Total tenants: {len(tenant_schemas)}, Filtered tenants: {len(filtered_tenant_schemas)}"
)
for schema in filtered_tenant_schemas:
logger.info(f"Migrating schema: {schema}")
context.configure(
url=url,
@@ -213,23 +452,15 @@ def run_migrations_offline() -> None:
with context.begin_transaction():
context.run_migrations()
else:
logger.info(f"Migrating schema: {schema_name}")
context.configure(
url=url,
target_metadata=target_metadata, # type: ignore
literal_binds=True,
include_object=include_object,
version_table_schema=schema_name,
include_schemas=True,
script_location=config.get_main_option("script_location"),
dialect_opts={"paramstyle": "named"},
# This should not happen in the new design
raise ValueError(
"No migration target specified. Use either upgrade_all_tenants=true for all tenants "
"or schemas for specific schemas."
)
with context.begin_transaction():
context.run_migrations()
def run_migrations_online() -> None:
logger.info("run_migrations_online starting.")
asyncio.run(run_async_migrations())

View File

@@ -0,0 +1,30 @@
"""add shortcut option for users
Revision ID: 027381bce97c
Revises: 6fc7886d665d
Create Date: 2025-01-14 12:14:00.814390
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = "027381bce97c"
down_revision = "6fc7886d665d"
branch_labels = None
depends_on = None
def upgrade() -> None:
op.add_column(
"user",
sa.Column(
"shortcut_enabled", sa.Boolean(), nullable=False, server_default="false"
),
)
def downgrade() -> None:
op.drop_column("user", "shortcut_enabled")

View File

@@ -0,0 +1,121 @@
"""rework-kg-config
Revision ID: 03bf8be6b53a
Revises: 65bc6e0f8500
Create Date: 2025-06-16 10:52:34.815335
"""
import json
from datetime import datetime
from datetime import timedelta
from sqlalchemy.dialects import postgresql
from sqlalchemy import text
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = "03bf8be6b53a"
down_revision = "65bc6e0f8500"
branch_labels = None
depends_on = None
def upgrade() -> None:
# get current config
current_configs = (
op.get_bind()
.execute(text("SELECT kg_variable_name, kg_variable_values FROM kg_config"))
.all()
)
current_config_dict = {
config.kg_variable_name: (
config.kg_variable_values[0]
if config.kg_variable_name
not in ("KG_VENDOR_DOMAINS", "KG_IGNORE_EMAIL_DOMAINS")
else config.kg_variable_values
)
for config in current_configs
if config.kg_variable_values
}
# not using the KGConfigSettings model here in case it changes in the future
kg_config_settings = json.dumps(
{
"KG_EXPOSED": current_config_dict.get("KG_EXPOSED", False),
"KG_ENABLED": current_config_dict.get("KG_ENABLED", False),
"KG_VENDOR": current_config_dict.get("KG_VENDOR", None),
"KG_VENDOR_DOMAINS": current_config_dict.get("KG_VENDOR_DOMAINS", []),
"KG_IGNORE_EMAIL_DOMAINS": current_config_dict.get(
"KG_IGNORE_EMAIL_DOMAINS", []
),
"KG_COVERAGE_START": current_config_dict.get(
"KG_COVERAGE_START",
(datetime.now() - timedelta(days=90)).strftime("%Y-%m-%d"),
),
"KG_MAX_COVERAGE_DAYS": current_config_dict.get("KG_MAX_COVERAGE_DAYS", 90),
"KG_MAX_PARENT_RECURSION_DEPTH": current_config_dict.get(
"KG_MAX_PARENT_RECURSION_DEPTH", 2
),
"KG_BETA_PERSONA_ID": current_config_dict.get("KG_BETA_PERSONA_ID", None),
}
)
op.execute(
f"INSERT INTO key_value_store (key, value) VALUES ('kg_config', '{kg_config_settings}')"
)
# drop kg config table
op.drop_table("kg_config")
def downgrade() -> None:
# get current config
current_config_dict = {
"KG_EXPOSED": False,
"KG_ENABLED": False,
"KG_VENDOR": [],
"KG_VENDOR_DOMAINS": [],
"KG_IGNORE_EMAIL_DOMAINS": [],
"KG_COVERAGE_START": (datetime.now() - timedelta(days=90)).strftime("%Y-%m-%d"),
"KG_MAX_COVERAGE_DAYS": 90,
"KG_MAX_PARENT_RECURSION_DEPTH": 2,
}
current_configs = (
op.get_bind()
.execute(text("SELECT value FROM key_value_store WHERE key = 'kg_config'"))
.one_or_none()
)
if current_configs is not None:
current_config_dict.update(current_configs[0])
insert_values = [
{
"kg_variable_name": name,
"kg_variable_values": (
[str(val).lower() if isinstance(val, bool) else str(val)]
if not isinstance(val, list)
else val
),
}
for name, val in current_config_dict.items()
]
op.create_table(
"kg_config",
sa.Column("id", sa.Integer(), primary_key=True, nullable=False, index=True),
sa.Column("kg_variable_name", sa.String(), nullable=False, index=True),
sa.Column("kg_variable_values", postgresql.ARRAY(sa.String()), nullable=False),
sa.UniqueConstraint("kg_variable_name", name="uq_kg_config_variable_name"),
)
op.bulk_insert(
sa.table(
"kg_config",
sa.column("kg_variable_name", sa.String),
sa.column("kg_variable_values", postgresql.ARRAY(sa.String)),
),
insert_values,
)
op.execute("DELETE FROM key_value_store WHERE key = 'kg_config'")

View File

@@ -0,0 +1,72 @@
"""add federated connector tables
Revision ID: 0816326d83aa
Revises: 12635f6655b7
Create Date: 2025-06-29 14:09:45.109518
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql
# revision identifiers, used by Alembic.
revision = "0816326d83aa"
down_revision = "12635f6655b7"
branch_labels = None
depends_on = None
def upgrade() -> None:
# Create federated_connector table
op.create_table(
"federated_connector",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("source", sa.String(), nullable=False),
sa.Column("credentials", sa.LargeBinary(), nullable=False),
sa.PrimaryKeyConstraint("id"),
)
# Create federated_connector_oauth_token table
op.create_table(
"federated_connector_oauth_token",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("federated_connector_id", sa.Integer(), nullable=False),
sa.Column("user_id", postgresql.UUID(as_uuid=True), nullable=False),
sa.Column("token", sa.LargeBinary(), nullable=False),
sa.Column("expires_at", sa.DateTime(), nullable=True),
sa.ForeignKeyConstraint(
["federated_connector_id"], ["federated_connector.id"], ondelete="CASCADE"
),
sa.ForeignKeyConstraint(["user_id"], ["user.id"], ondelete="CASCADE"),
sa.PrimaryKeyConstraint("id"),
)
# Create federated_connector__document_set table
op.create_table(
"federated_connector__document_set",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("federated_connector_id", sa.Integer(), nullable=False),
sa.Column("document_set_id", sa.Integer(), nullable=False),
sa.Column("entities", postgresql.JSONB(), nullable=False),
sa.ForeignKeyConstraint(
["federated_connector_id"], ["federated_connector.id"], ondelete="CASCADE"
),
sa.ForeignKeyConstraint(
["document_set_id"], ["document_set.id"], ondelete="CASCADE"
),
sa.PrimaryKeyConstraint("id"),
sa.UniqueConstraint(
"federated_connector_id",
"document_set_id",
name="uq_federated_connector_document_set",
),
)
def downgrade() -> None:
# Drop tables in reverse order due to foreign key dependencies
op.drop_table("federated_connector__document_set")
op.drop_table("federated_connector_oauth_token")
op.drop_table("federated_connector")

View File

@@ -5,6 +5,7 @@ Revises: 8a87bd6ec550
Create Date: 2024-07-23 11:12:39.462397
"""
from alembic import op
import sqlalchemy as sa

View File

@@ -5,6 +5,7 @@ Revises: 5f4b8568a221
Create Date: 2024-03-02 23:23:49.960309
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql

View File

@@ -5,6 +5,7 @@ Revises: 570282d33c49
Create Date: 2024-05-05 19:30:34.317972
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.sql import table

View File

@@ -5,6 +5,7 @@ Revises: 52a219fb5233
Create Date: 2024-09-10 15:03:48.233926
"""
from alembic import op
import sqlalchemy as sa

View File

@@ -0,0 +1,37 @@
"""add index to index_attempt.time_created
Revision ID: 0f7ff6d75b57
Revises: 369644546676
Create Date: 2025-01-10 14:01:14.067144
"""
from alembic import op
# revision identifiers, used by Alembic.
revision = "0f7ff6d75b57"
down_revision = "fec3db967bf7"
branch_labels: None = None
depends_on: None = None
def upgrade() -> None:
op.create_index(
op.f("ix_index_attempt_status"),
"index_attempt",
["status"],
unique=False,
)
op.create_index(
op.f("ix_index_attempt_time_created"),
"index_attempt",
["time_created"],
unique=False,
)
def downgrade() -> None:
op.drop_index(op.f("ix_index_attempt_time_created"), table_name="index_attempt")
op.drop_index(op.f("ix_index_attempt_status"), table_name="index_attempt")

View File

@@ -0,0 +1,596 @@
"""drive-canonical-ids
Revision ID: 12635f6655b7
Revises: 58c50ef19f08
Create Date: 2025-06-20 14:44:54.241159
"""
from alembic import op
import sqlalchemy as sa
from urllib.parse import urlparse, urlunparse
from httpx import HTTPStatusError
import httpx
from onyx.document_index.factory import get_default_document_index
from onyx.db.search_settings import SearchSettings
from onyx.document_index.vespa.shared_utils.utils import get_vespa_http_client
from onyx.document_index.vespa.shared_utils.utils import (
replace_invalid_doc_id_characters,
)
from onyx.document_index.vespa_constants import DOCUMENT_ID_ENDPOINT
from onyx.utils.logger import setup_logger
import os
logger = setup_logger()
# revision identifiers, used by Alembic.
revision = "12635f6655b7"
down_revision = "58c50ef19f08"
branch_labels = None
depends_on = None
SKIP_CANON_DRIVE_IDS = os.environ.get("SKIP_CANON_DRIVE_IDS", "true").lower() == "true"
def active_search_settings() -> tuple[SearchSettings, SearchSettings | None]:
result = op.get_bind().execute(
sa.text(
"""
SELECT * FROM search_settings WHERE status = 'PRESENT' ORDER BY id DESC LIMIT 1
"""
)
)
search_settings_fetch = result.fetchall()
search_settings = (
SearchSettings(**search_settings_fetch[0]._asdict())
if search_settings_fetch
else None
)
result2 = op.get_bind().execute(
sa.text(
"""
SELECT * FROM search_settings WHERE status = 'FUTURE' ORDER BY id DESC LIMIT 1
"""
)
)
search_settings_future_fetch = result2.fetchall()
search_settings_future = (
SearchSettings(**search_settings_future_fetch[0]._asdict())
if search_settings_future_fetch
else None
)
if not isinstance(search_settings, SearchSettings):
raise RuntimeError(
"current search settings is of type " + str(type(search_settings))
)
if (
not isinstance(search_settings_future, SearchSettings)
and search_settings_future is not None
):
raise RuntimeError(
"future search settings is of type " + str(type(search_settings_future))
)
return search_settings, search_settings_future
def normalize_google_drive_url(url: str) -> str:
"""Remove query parameters from Google Drive URLs to create canonical document IDs.
NOTE: copied from drive doc_conversion.py
"""
parsed_url = urlparse(url)
parsed_url = parsed_url._replace(query="")
spl_path = parsed_url.path.split("/")
if spl_path and (spl_path[-1] in ["edit", "view", "preview"]):
spl_path.pop()
parsed_url = parsed_url._replace(path="/".join(spl_path))
# Remove query parameters and reconstruct URL
return urlunparse(parsed_url)
def get_google_drive_documents_from_database() -> list[dict]:
"""Get all Google Drive documents from the database."""
bind = op.get_bind()
result = bind.execute(
sa.text(
"""
SELECT d.id
FROM document d
JOIN document_by_connector_credential_pair dcc ON d.id = dcc.id
JOIN connector_credential_pair cc ON dcc.connector_id = cc.connector_id
AND dcc.credential_id = cc.credential_id
JOIN connector c ON cc.connector_id = c.id
WHERE c.source = 'GOOGLE_DRIVE'
"""
)
)
documents = []
for row in result:
documents.append({"document_id": row.id})
return documents
def update_document_id_in_database(
old_doc_id: str, new_doc_id: str, index_name: str
) -> None:
"""Update document IDs in all relevant database tables using copy-and-swap approach."""
bind = op.get_bind()
# print(f"Updating database tables for document {old_doc_id} -> {new_doc_id}")
# Check if new document ID already exists
result = bind.execute(
sa.text("SELECT COUNT(*) FROM document WHERE id = :new_id"),
{"new_id": new_doc_id},
)
row = result.fetchone()
if row and row[0] > 0:
# print(f"Document with ID {new_doc_id} already exists, deleting old one")
delete_document_from_db(old_doc_id, index_name)
return
# Step 1: Create a new document row with the new ID (copy all fields from old row)
# Use a conservative approach to handle columns that might not exist in all installations
try:
bind.execute(
sa.text(
"""
INSERT INTO document (id, from_ingestion_api, boost, hidden, semantic_id,
link, doc_updated_at, primary_owners, secondary_owners,
external_user_emails, external_user_group_ids, is_public,
chunk_count, last_modified, last_synced, kg_stage, kg_processing_time)
SELECT :new_id, from_ingestion_api, boost, hidden, semantic_id,
link, doc_updated_at, primary_owners, secondary_owners,
external_user_emails, external_user_group_ids, is_public,
chunk_count, last_modified, last_synced, kg_stage, kg_processing_time
FROM document
WHERE id = :old_id
"""
),
{"new_id": new_doc_id, "old_id": old_doc_id},
)
# print(f"Successfully updated database tables for document {old_doc_id} -> {new_doc_id}")
except Exception as e:
# If the full INSERT fails, try a more basic version with only core columns
logger.warning(f"Full INSERT failed, trying basic version: {e}")
bind.execute(
sa.text(
"""
INSERT INTO document (id, from_ingestion_api, boost, hidden, semantic_id,
link, doc_updated_at, primary_owners, secondary_owners)
SELECT :new_id, from_ingestion_api, boost, hidden, semantic_id,
link, doc_updated_at, primary_owners, secondary_owners
FROM document
WHERE id = :old_id
"""
),
{"new_id": new_doc_id, "old_id": old_doc_id},
)
# Step 2: Update all foreign key references to point to the new ID
# Update document_by_connector_credential_pair table
bind.execute(
sa.text(
"UPDATE document_by_connector_credential_pair SET id = :new_id WHERE id = :old_id"
),
{"new_id": new_doc_id, "old_id": old_doc_id},
)
# print(f"Successfully updated document_by_connector_credential_pair table for document {old_doc_id} -> {new_doc_id}")
# Update search_doc table (stores search results for chat replay)
# This is critical for agent functionality
bind.execute(
sa.text(
"UPDATE search_doc SET document_id = :new_id WHERE document_id = :old_id"
),
{"new_id": new_doc_id, "old_id": old_doc_id},
)
# print(f"Successfully updated search_doc table for document {old_doc_id} -> {new_doc_id}")
# Update document_retrieval_feedback table (user feedback on documents)
bind.execute(
sa.text(
"UPDATE document_retrieval_feedback SET document_id = :new_id WHERE document_id = :old_id"
),
{"new_id": new_doc_id, "old_id": old_doc_id},
)
# print(f"Successfully updated document_retrieval_feedback table for document {old_doc_id} -> {new_doc_id}")
# Update document__tag table (document-tag relationships)
bind.execute(
sa.text(
"UPDATE document__tag SET document_id = :new_id WHERE document_id = :old_id"
),
{"new_id": new_doc_id, "old_id": old_doc_id},
)
# print(f"Successfully updated document__tag table for document {old_doc_id} -> {new_doc_id}")
# Update user_file table (user uploaded files linked to documents)
bind.execute(
sa.text(
"UPDATE user_file SET document_id = :new_id WHERE document_id = :old_id"
),
{"new_id": new_doc_id, "old_id": old_doc_id},
)
# print(f"Successfully updated user_file table for document {old_doc_id} -> {new_doc_id}")
# Update KG and chunk_stats tables (these may not exist in all installations)
try:
# Update kg_entity table
bind.execute(
sa.text(
"UPDATE kg_entity SET document_id = :new_id WHERE document_id = :old_id"
),
{"new_id": new_doc_id, "old_id": old_doc_id},
)
# print(f"Successfully updated kg_entity table for document {old_doc_id} -> {new_doc_id}")
# Update kg_entity_extraction_staging table
bind.execute(
sa.text(
"UPDATE kg_entity_extraction_staging SET document_id = :new_id WHERE document_id = :old_id"
),
{"new_id": new_doc_id, "old_id": old_doc_id},
)
# print(f"Successfully updated kg_entity_extraction_staging table for document {old_doc_id} -> {new_doc_id}")
# Update kg_relationship table
bind.execute(
sa.text(
"UPDATE kg_relationship SET source_document = :new_id WHERE source_document = :old_id"
),
{"new_id": new_doc_id, "old_id": old_doc_id},
)
# print(f"Successfully updated kg_relationship table for document {old_doc_id} -> {new_doc_id}")
# Update kg_relationship_extraction_staging table
bind.execute(
sa.text(
"UPDATE kg_relationship_extraction_staging SET source_document = :new_id WHERE source_document = :old_id"
),
{"new_id": new_doc_id, "old_id": old_doc_id},
)
# print(f"Successfully updated kg_relationship_extraction_staging table for document {old_doc_id} -> {new_doc_id}")
# Update chunk_stats table
bind.execute(
sa.text(
"UPDATE chunk_stats SET document_id = :new_id WHERE document_id = :old_id"
),
{"new_id": new_doc_id, "old_id": old_doc_id},
)
# print(f"Successfully updated chunk_stats table for document {old_doc_id} -> {new_doc_id}")
# Update chunk_stats ID field which includes document_id
bind.execute(
sa.text(
"""
UPDATE chunk_stats
SET id = REPLACE(id, :old_id, :new_id)
WHERE id LIKE :old_id_pattern
"""
),
{
"new_id": new_doc_id,
"old_id": old_doc_id,
"old_id_pattern": f"{old_doc_id}__%",
},
)
# print(f"Successfully updated chunk_stats ID field for document {old_doc_id} -> {new_doc_id}")
except Exception as e:
logger.warning(f"Some KG/chunk tables may not exist or failed to update: {e}")
# Step 3: Delete the old document row (this should now be safe since all FKs point to new row)
bind.execute(
sa.text("DELETE FROM document WHERE id = :old_id"), {"old_id": old_doc_id}
)
# print(f"Successfully deleted document {old_doc_id} from database")
def _visit_chunks(
*,
http_client: httpx.Client,
index_name: str,
selection: str,
continuation: str | None = None,
) -> tuple[list[dict], str | None]:
"""Helper that calls the /document/v1 visit API once and returns (docs, next_token)."""
# Use the same URL as the document API, but with visit-specific params
base_url = DOCUMENT_ID_ENDPOINT.format(index_name=index_name)
params: dict[str, str] = {
"selection": selection,
"wantedDocumentCount": "1000",
}
if continuation:
params["continuation"] = continuation
# print(f"Visiting chunks for selection '{selection}' with params {params}")
resp = http_client.get(base_url, params=params, timeout=None)
# print(f"Visited chunks for document {selection}")
resp.raise_for_status()
payload = resp.json()
return payload.get("documents", []), payload.get("continuation")
def delete_document_chunks_from_vespa(index_name: str, doc_id: str) -> None:
"""Delete all chunks for *doc_id* from Vespa using continuation-token paging (no offset)."""
total_deleted = 0
# Use exact match instead of contains - Document Selector Language doesn't support contains
selection = f'{index_name}.document_id=="{doc_id}"'
with get_vespa_http_client() as http_client:
continuation: str | None = None
while True:
docs, continuation = _visit_chunks(
http_client=http_client,
index_name=index_name,
selection=selection,
continuation=continuation,
)
if not docs:
break
for doc in docs:
vespa_full_id = doc.get("id")
if not vespa_full_id:
continue
vespa_doc_uuid = vespa_full_id.split("::")[-1]
delete_url = f"{DOCUMENT_ID_ENDPOINT.format(index_name=index_name)}/{vespa_doc_uuid}"
try:
resp = http_client.delete(delete_url)
resp.raise_for_status()
total_deleted += 1
except Exception as e:
print(f"Failed to delete chunk {vespa_doc_uuid}: {e}")
if not continuation:
break
def update_document_id_in_vespa(
index_name: str, old_doc_id: str, new_doc_id: str
) -> None:
"""Update all chunks' document_id field from *old_doc_id* to *new_doc_id* using continuation paging."""
clean_new_doc_id = replace_invalid_doc_id_characters(new_doc_id)
# Use exact match instead of contains - Document Selector Language doesn't support contains
selection = f'{index_name}.document_id=="{old_doc_id}"'
with get_vespa_http_client() as http_client:
continuation: str | None = None
while True:
# print(f"Visiting chunks for document {old_doc_id} -> {new_doc_id}")
docs, continuation = _visit_chunks(
http_client=http_client,
index_name=index_name,
selection=selection,
continuation=continuation,
)
if not docs:
break
for doc in docs:
vespa_full_id = doc.get("id")
if not vespa_full_id:
continue
vespa_doc_uuid = vespa_full_id.split("::")[-1]
vespa_url = f"{DOCUMENT_ID_ENDPOINT.format(index_name=index_name)}/{vespa_doc_uuid}"
update_request = {
"fields": {"document_id": {"assign": clean_new_doc_id}}
}
try:
resp = http_client.put(vespa_url, json=update_request)
resp.raise_for_status()
except Exception as e:
print(f"Failed to update chunk {vespa_doc_uuid}: {e}")
raise
if not continuation:
break
def delete_document_from_db(current_doc_id: str, index_name: str) -> None:
# Delete all foreign key references first, then delete the document
try:
bind = op.get_bind()
# Delete from agent-related tables first (order matters due to foreign keys)
# Delete from agent__sub_query__search_doc first since it references search_doc
bind.execute(
sa.text(
"""
DELETE FROM agent__sub_query__search_doc
WHERE search_doc_id IN (
SELECT id FROM search_doc WHERE document_id = :doc_id
)
"""
),
{"doc_id": current_doc_id},
)
# Delete from chat_message__search_doc
bind.execute(
sa.text(
"""
DELETE FROM chat_message__search_doc
WHERE search_doc_id IN (
SELECT id FROM search_doc WHERE document_id = :doc_id
)
"""
),
{"doc_id": current_doc_id},
)
# Now we can safely delete from search_doc
bind.execute(
sa.text("DELETE FROM search_doc WHERE document_id = :doc_id"),
{"doc_id": current_doc_id},
)
# Delete from document_by_connector_credential_pair
bind.execute(
sa.text(
"DELETE FROM document_by_connector_credential_pair WHERE id = :doc_id"
),
{"doc_id": current_doc_id},
)
# Delete from other tables that reference this document
bind.execute(
sa.text(
"DELETE FROM document_retrieval_feedback WHERE document_id = :doc_id"
),
{"doc_id": current_doc_id},
)
bind.execute(
sa.text("DELETE FROM document__tag WHERE document_id = :doc_id"),
{"doc_id": current_doc_id},
)
bind.execute(
sa.text("DELETE FROM user_file WHERE document_id = :doc_id"),
{"doc_id": current_doc_id},
)
# Delete from KG tables if they exist
try:
bind.execute(
sa.text("DELETE FROM kg_entity WHERE document_id = :doc_id"),
{"doc_id": current_doc_id},
)
bind.execute(
sa.text(
"DELETE FROM kg_entity_extraction_staging WHERE document_id = :doc_id"
),
{"doc_id": current_doc_id},
)
bind.execute(
sa.text("DELETE FROM kg_relationship WHERE source_document = :doc_id"),
{"doc_id": current_doc_id},
)
bind.execute(
sa.text(
"DELETE FROM kg_relationship_extraction_staging WHERE source_document = :doc_id"
),
{"doc_id": current_doc_id},
)
bind.execute(
sa.text("DELETE FROM chunk_stats WHERE document_id = :doc_id"),
{"doc_id": current_doc_id},
)
bind.execute(
sa.text("DELETE FROM chunk_stats WHERE id LIKE :doc_id_pattern"),
{"doc_id_pattern": f"{current_doc_id}__%"},
)
except Exception as e:
logger.warning(
f"Some KG/chunk tables may not exist or failed to delete from: {e}"
)
# Finally delete the document itself
bind.execute(
sa.text("DELETE FROM document WHERE id = :doc_id"),
{"doc_id": current_doc_id},
)
# Delete chunks from vespa
delete_document_chunks_from_vespa(index_name, current_doc_id)
except Exception as e:
print(f"Failed to delete duplicate document {current_doc_id}: {e}")
# Continue with other documents instead of failing the entire migration
def upgrade() -> None:
if SKIP_CANON_DRIVE_IDS:
return
current_search_settings, future_search_settings = active_search_settings()
document_index = get_default_document_index(
current_search_settings,
future_search_settings,
)
# Get the index name
if hasattr(document_index, "index_name"):
index_name = document_index.index_name
else:
# Default index name if we can't get it from the document_index
index_name = "danswer_index"
# Get all Google Drive documents from the database (this is faster and more reliable)
gdrive_documents = get_google_drive_documents_from_database()
if not gdrive_documents:
return
# Track normalized document IDs to detect duplicates
all_normalized_doc_ids = set()
updated_count = 0
for doc_info in gdrive_documents:
current_doc_id = doc_info["document_id"]
normalized_doc_id = normalize_google_drive_url(current_doc_id)
print(f"Processing document {current_doc_id} -> {normalized_doc_id}")
# Check for duplicates
if normalized_doc_id in all_normalized_doc_ids:
# print(f"Deleting duplicate document {current_doc_id}")
delete_document_from_db(current_doc_id, index_name)
continue
all_normalized_doc_ids.add(normalized_doc_id)
# If the document ID already doesn't have query parameters, skip it
if current_doc_id == normalized_doc_id:
# print(f"Skipping document {current_doc_id} -> {normalized_doc_id} because it already has no query parameters")
continue
try:
# Update both database and Vespa in order
# Database first to ensure consistency
update_document_id_in_database(
current_doc_id, normalized_doc_id, index_name
)
# For Vespa, we can now use the original document IDs since we're using contains matching
update_document_id_in_vespa(index_name, current_doc_id, normalized_doc_id)
updated_count += 1
# print(f"Finished updating document {current_doc_id} -> {normalized_doc_id}")
except Exception as e:
print(f"Failed to update document {current_doc_id}: {e}")
if isinstance(e, HTTPStatusError):
print(f"HTTPStatusError: {e}")
print(f"Response: {e.response.text}")
print(f"Status: {e.response.status_code}")
print(f"Headers: {e.response.headers}")
print(f"Request: {e.request.url}")
print(f"Request headers: {e.request.headers}")
# Note: Rollback is complex with copy-and-swap approach since the old document is already deleted
# In case of failure, manual intervention may be required
# Continue with other documents instead of failing the entire migration
continue
logger.info(f"Migration complete. Updated {updated_count} Google Drive documents")
def downgrade() -> None:
# this is a one way migration, so no downgrade.
# It wouldn't make sense to store the extra query parameters
# and duplicate documents to allow a reversal.
pass

View File

@@ -5,6 +5,7 @@ Revises: 77d07dffae64
Create Date: 2023-11-11 20:51:24.228999
"""
from alembic import op
import sqlalchemy as sa

View File

@@ -5,6 +5,7 @@ Revises: e50154680a5c
Create Date: 2024-03-19 15:30:44.425436
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql

View File

@@ -5,6 +5,7 @@ Revises: 4ee1287bd26a
Create Date: 2024-11-21 11:49:04.488677
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql

View File

@@ -0,0 +1,28 @@
"""Add indexes to document__tag
Revision ID: 1a03d2c2856b
Revises: 9c00a2bccb83
Create Date: 2025-02-18 10:45:13.957807
"""
from alembic import op
# revision identifiers, used by Alembic.
revision = "1a03d2c2856b"
down_revision = "9c00a2bccb83"
branch_labels: None = None
depends_on: None = None
def upgrade() -> None:
op.create_index(
op.f("ix_document__tag_tag_id"),
"document__tag",
["tag_id"],
unique=False,
)
def downgrade() -> None:
op.drop_index(op.f("ix_document__tag_tag_id"), table_name="document__tag")

View File

@@ -5,6 +5,7 @@ Revises: 6756efa39ada
Create Date: 2024-10-15 19:26:44.071259
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql

View File

@@ -5,6 +5,7 @@ Revises: 35e6853a51d5
Create Date: 2024-09-18 11:48:59.418726
"""
from alembic import op

View File

@@ -5,6 +5,7 @@ Revises: 5fc1f54cc252
Create Date: 2024-08-10 11:13:36.070790
"""
from alembic import op
import sqlalchemy as sa

View File

@@ -0,0 +1,45 @@
"""Add foreign key to user__external_user_group_id
Revision ID: 238b84885828
Revises: a7688ab35c45
Create Date: 2025-05-19 17:15:33.424584
"""
from alembic import op
# revision identifiers, used by Alembic.
revision = "238b84885828"
down_revision = "a7688ab35c45"
branch_labels = None
depends_on = None
def upgrade() -> None:
# First, clean up any entries that don't have a valid cc_pair_id
op.execute(
"""
DELETE FROM user__external_user_group_id
WHERE cc_pair_id NOT IN (SELECT id FROM connector_credential_pair)
"""
)
# Add foreign key constraint with cascade delete
op.create_foreign_key(
"fk_user__external_user_group_id_cc_pair_id",
"user__external_user_group_id",
"connector_credential_pair",
["cc_pair_id"],
["id"],
ondelete="CASCADE",
)
def downgrade() -> None:
# Drop the foreign key constraint
op.drop_constraint(
"fk_user__external_user_group_id_cc_pair_id",
"user__external_user_group_id",
type_="foreignkey",
)

View File

@@ -5,6 +5,7 @@ Revises: bc9771dccadf
Create Date: 2024-06-27 16:04:51.480437
"""
from alembic import op
import sqlalchemy as sa

View File

@@ -5,6 +5,7 @@ Revises: 6d387b3196c2
Create Date: 2023-05-05 15:49:35.716016
"""
import fastapi_users_db_sqlalchemy
import sqlalchemy as sa
from alembic import op

View File

@@ -5,6 +5,7 @@ Revises: 2daa494a0851
Create Date: 2024-11-12 13:23:29.858995
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql

View File

@@ -5,6 +5,7 @@ Revises: 2666d766cb9b
Create Date: 2023-05-24 18:45:17.244495
"""
import fastapi_users_db_sqlalchemy
import sqlalchemy as sa
from alembic import op
@@ -143,27 +144,34 @@ def upgrade() -> None:
def downgrade() -> None:
op.execute("TRUNCATE TABLE index_attempt")
op.add_column(
"index_attempt",
sa.Column("input_type", sa.VARCHAR(), autoincrement=False, nullable=False),
)
op.add_column(
"index_attempt",
sa.Column("source", sa.VARCHAR(), autoincrement=False, nullable=False),
)
op.add_column(
"index_attempt",
sa.Column(
"connector_specific_config",
postgresql.JSONB(astext_type=sa.Text()),
autoincrement=False,
nullable=False,
),
)
# Check if the constraint exists before dropping
conn = op.get_bind()
inspector = sa.inspect(conn)
existing_columns = {col["name"] for col in inspector.get_columns("index_attempt")}
if "input_type" not in existing_columns:
op.add_column(
"index_attempt",
sa.Column("input_type", sa.VARCHAR(), autoincrement=False, nullable=False),
)
if "source" not in existing_columns:
op.add_column(
"index_attempt",
sa.Column("source", sa.VARCHAR(), autoincrement=False, nullable=False),
)
if "connector_specific_config" not in existing_columns:
op.add_column(
"index_attempt",
sa.Column(
"connector_specific_config",
postgresql.JSONB(astext_type=sa.Text()),
autoincrement=False,
nullable=False,
),
)
# Check if the constraint exists before dropping
constraints = inspector.get_foreign_keys("index_attempt")
if any(
@@ -182,8 +190,12 @@ def downgrade() -> None:
"fk_index_attempt_connector_id", "index_attempt", type_="foreignkey"
)
op.drop_column("index_attempt", "credential_id")
op.drop_column("index_attempt", "connector_id")
op.drop_table("connector_credential_pair")
op.drop_table("credential")
op.drop_table("connector")
if "credential_id" in existing_columns:
op.drop_column("index_attempt", "credential_id")
if "connector_id" in existing_columns:
op.drop_column("index_attempt", "connector_id")
op.execute("DROP TABLE IF EXISTS connector_credential_pair CASCADE")
op.execute("DROP TABLE IF EXISTS credential CASCADE")
op.execute("DROP TABLE IF EXISTS connector CASCADE")

View File

@@ -0,0 +1,25 @@
"""add chunk count to document
Revision ID: 2955778aa44c
Revises: c0aab6edb6dd
Create Date: 2025-01-04 11:39:43.268612
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = "2955778aa44c"
down_revision = "c0aab6edb6dd"
branch_labels = None
depends_on = None
def upgrade() -> None:
op.add_column("document", sa.Column("chunk_count", sa.Integer(), nullable=True))
def downgrade() -> None:
op.drop_column("document", "chunk_count")

View File

@@ -0,0 +1,33 @@
"""set built in to default
Revision ID: 2cdeff6d8c93
Revises: f5437cc136c5
Create Date: 2025-02-11 14:57:51.308775
"""
from alembic import op
# revision identifiers, used by Alembic.
revision = "2cdeff6d8c93"
down_revision = "f5437cc136c5"
branch_labels = None
depends_on = None
def upgrade() -> None:
# Prior to this migration / point in the codebase history,
# built in personas were implicitly treated as default personas (with no option to change this)
# This migration makes that explicit
op.execute(
"""
UPDATE persona
SET is_default_persona = TRUE
WHERE builtin_persona = TRUE
"""
)
def downgrade() -> None:
pass

View File

@@ -5,6 +5,7 @@ Revises: 4b08d97e175a
Create Date: 2024-08-21 19:15:15.762948
"""
from alembic import op
import sqlalchemy as sa

View File

@@ -5,6 +5,7 @@ Revises: c0fd6e4da83a
Create Date: 2024-11-11 10:57:22.991157
"""
from alembic import op
import sqlalchemy as sa

View File

@@ -0,0 +1,37 @@
"""add chat session specific temperature override
Revision ID: 2f80c6a2550f
Revises: 33ea50e88f24
Create Date: 2025-01-31 10:30:27.289646
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = "2f80c6a2550f"
down_revision = "33ea50e88f24"
branch_labels = None
depends_on = None
def upgrade() -> None:
op.add_column(
"chat_session", sa.Column("temperature_override", sa.Float(), nullable=True)
)
op.add_column(
"user",
sa.Column(
"temperature_override_enabled",
sa.Boolean(),
nullable=False,
server_default=sa.false(),
),
)
def downgrade() -> None:
op.drop_column("chat_session", "temperature_override")
op.drop_column("user", "temperature_override_enabled")

View File

@@ -0,0 +1,115 @@
"""add_indexing_coordination
Revision ID: 2f95e36923e6
Revises: 0816326d83aa
Create Date: 2025-07-10 16:17:57.762182
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = "2f95e36923e6"
down_revision = "0816326d83aa"
branch_labels = None
depends_on = None
def upgrade() -> None:
# Add database-based coordination fields (replacing Redis fencing)
op.add_column(
"index_attempt", sa.Column("celery_task_id", sa.String(), nullable=True)
)
op.add_column(
"index_attempt",
sa.Column(
"cancellation_requested",
sa.Boolean(),
nullable=False,
server_default="false",
),
)
# Add batch coordination fields (replacing FileStore state)
op.add_column(
"index_attempt", sa.Column("total_batches", sa.Integer(), nullable=True)
)
op.add_column(
"index_attempt",
sa.Column(
"completed_batches", sa.Integer(), nullable=False, server_default="0"
),
)
op.add_column(
"index_attempt",
sa.Column(
"total_failures_batch_level",
sa.Integer(),
nullable=False,
server_default="0",
),
)
op.add_column(
"index_attempt",
sa.Column("total_chunks", sa.Integer(), nullable=False, server_default="0"),
)
# Progress tracking for stall detection
op.add_column(
"index_attempt",
sa.Column("last_progress_time", sa.DateTime(timezone=True), nullable=True),
)
op.add_column(
"index_attempt",
sa.Column(
"last_batches_completed_count",
sa.Integer(),
nullable=False,
server_default="0",
),
)
# Heartbeat tracking for worker liveness detection
op.add_column(
"index_attempt",
sa.Column(
"heartbeat_counter", sa.Integer(), nullable=False, server_default="0"
),
)
op.add_column(
"index_attempt",
sa.Column(
"last_heartbeat_value", sa.Integer(), nullable=False, server_default="0"
),
)
op.add_column(
"index_attempt",
sa.Column("last_heartbeat_time", sa.DateTime(timezone=True), nullable=True),
)
# Add index for coordination queries
op.create_index(
"ix_index_attempt_active_coordination",
"index_attempt",
["connector_credential_pair_id", "search_settings_id", "status"],
)
def downgrade() -> None:
# Remove the new index
op.drop_index("ix_index_attempt_active_coordination", table_name="index_attempt")
# Remove the new columns
op.drop_column("index_attempt", "last_batches_completed_count")
op.drop_column("index_attempt", "last_progress_time")
op.drop_column("index_attempt", "last_heartbeat_time")
op.drop_column("index_attempt", "last_heartbeat_value")
op.drop_column("index_attempt", "heartbeat_counter")
op.drop_column("index_attempt", "total_chunks")
op.drop_column("index_attempt", "total_failures_batch_level")
op.drop_column("index_attempt", "completed_batches")
op.drop_column("index_attempt", "total_batches")
op.drop_column("index_attempt", "cancellation_requested")
op.drop_column("index_attempt", "celery_task_id")

View File

@@ -5,6 +5,7 @@ Revises: 7f99be1cb9f5
Create Date: 2023-10-16 23:21:01.283424
"""
from alembic import op
import sqlalchemy as sa

View File

@@ -5,6 +5,7 @@ Revises: 91ffac7e65b3
Create Date: 2024-07-24 21:29:31.784562
"""
import random
from alembic import op
import sqlalchemy as sa

View File

@@ -5,6 +5,7 @@ Revises: 5b29123cd710
Create Date: 2024-11-01 12:51:01.535003
"""
from alembic import op
import sqlalchemy as sa

View File

@@ -0,0 +1,81 @@
"""foreign key input prompts
Revision ID: 33ea50e88f24
Revises: a6df6b88ef81
Create Date: 2025-01-29 10:54:22.141765
"""
from alembic import op
# revision identifiers, used by Alembic.
revision = "33ea50e88f24"
down_revision = "a6df6b88ef81"
branch_labels = None
depends_on = None
def upgrade() -> None:
# Safely drop constraints if exists
op.execute(
"""
ALTER TABLE inputprompt__user
DROP CONSTRAINT IF EXISTS inputprompt__user_input_prompt_id_fkey
"""
)
op.execute(
"""
ALTER TABLE inputprompt__user
DROP CONSTRAINT IF EXISTS inputprompt__user_user_id_fkey
"""
)
# Recreate with ON DELETE CASCADE
op.create_foreign_key(
"inputprompt__user_input_prompt_id_fkey",
"inputprompt__user",
"inputprompt",
["input_prompt_id"],
["id"],
ondelete="CASCADE",
)
op.create_foreign_key(
"inputprompt__user_user_id_fkey",
"inputprompt__user",
"user",
["user_id"],
["id"],
ondelete="CASCADE",
)
def downgrade() -> None:
# Drop the new FKs with ondelete
op.drop_constraint(
"inputprompt__user_input_prompt_id_fkey",
"inputprompt__user",
type_="foreignkey",
)
op.drop_constraint(
"inputprompt__user_user_id_fkey",
"inputprompt__user",
type_="foreignkey",
)
# Recreate them without cascading
op.create_foreign_key(
"inputprompt__user_input_prompt_id_fkey",
"inputprompt__user",
"inputprompt",
["input_prompt_id"],
["id"],
)
op.create_foreign_key(
"inputprompt__user_user_id_fkey",
"inputprompt__user",
"user",
["user_id"],
["id"],
)

View File

@@ -5,6 +5,7 @@ Revises: ee3f4b47fad5
Create Date: 2024-08-15 22:37:08.397052
"""
from alembic import op
import sqlalchemy as sa

View File

@@ -5,6 +5,7 @@ Revises: 91a0a4d62b14
Create Date: 2024-09-20 21:24:04.891018
"""
from alembic import op

View File

@@ -5,6 +5,7 @@ Revises: c99d76fcd298
Create Date: 2024-09-13 13:20:32.885317
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql

View File

@@ -0,0 +1,36 @@
"""add composite index for index attempt time updated
Revision ID: 369644546676
Revises: 2955778aa44c
Create Date: 2025-01-08 15:38:17.224380
"""
from alembic import op
from sqlalchemy import text
# revision identifiers, used by Alembic.
revision = "369644546676"
down_revision = "2955778aa44c"
branch_labels: None = None
depends_on: None = None
def upgrade() -> None:
op.create_index(
"ix_index_attempt_ccpair_search_settings_time_updated",
"index_attempt",
[
"connector_credential_pair_id",
"search_settings_id",
text("time_updated DESC"),
],
unique=False,
)
def downgrade() -> None:
op.drop_index(
"ix_index_attempt_ccpair_search_settings_time_updated",
table_name="index_attempt",
)

View File

@@ -0,0 +1,136 @@
"""update_kg_trigger_functions
Revision ID: 36e9220ab794
Revises: c9e2cd766c29
Create Date: 2025-06-22 17:33:25.833733
"""
from alembic import op
from sqlalchemy.orm import Session
from sqlalchemy import text
from shared_configs.configs import POSTGRES_DEFAULT_SCHEMA
# revision identifiers, used by Alembic.
revision = "36e9220ab794"
down_revision = "c9e2cd766c29"
branch_labels = None
depends_on = None
def _get_tenant_contextvar(session: Session) -> str:
"""Get the current schema for the migration"""
current_tenant = session.execute(text("SELECT current_schema()")).scalar()
if isinstance(current_tenant, str):
return current_tenant
else:
raise ValueError("Current tenant is not a string")
def upgrade() -> None:
bind = op.get_bind()
session = Session(bind=bind)
# Create kg_entity trigger to update kg_entity.name and its trigrams
tenant_id = _get_tenant_contextvar(session)
alphanum_pattern = r"[^a-z0-9]+"
truncate_length = 1000
function = "update_kg_entity_name"
op.execute(
text(
f"""
CREATE OR REPLACE FUNCTION "{tenant_id}".{function}()
RETURNS TRIGGER AS $$
DECLARE
name text;
cleaned_name text;
BEGIN
-- Set name to semantic_id if document_id is not NULL
IF NEW.document_id IS NOT NULL THEN
SELECT lower(semantic_id) INTO name
FROM "{tenant_id}".document
WHERE id = NEW.document_id;
ELSE
name = lower(NEW.name);
END IF;
-- Clean name and truncate if too long
cleaned_name = regexp_replace(
name,
'{alphanum_pattern}', '', 'g'
);
IF length(cleaned_name) > {truncate_length} THEN
cleaned_name = left(cleaned_name, {truncate_length});
END IF;
-- Set name and name trigrams
NEW.name = name;
NEW.name_trigrams = {POSTGRES_DEFAULT_SCHEMA}.show_trgm(cleaned_name);
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
"""
)
)
trigger = f"{function}_trigger"
op.execute(f'DROP TRIGGER IF EXISTS {trigger} ON "{tenant_id}".kg_entity')
op.execute(
f"""
CREATE TRIGGER {trigger}
BEFORE INSERT OR UPDATE OF name
ON "{tenant_id}".kg_entity
FOR EACH ROW
EXECUTE FUNCTION "{tenant_id}".{function}();
"""
)
# Create kg_entity trigger to update kg_entity.name and its trigrams
function = "update_kg_entity_name_from_doc"
op.execute(
text(
f"""
CREATE OR REPLACE FUNCTION "{tenant_id}".{function}()
RETURNS TRIGGER AS $$
DECLARE
doc_name text;
cleaned_name text;
BEGIN
doc_name = lower(NEW.semantic_id);
-- Clean name and truncate if too long
cleaned_name = regexp_replace(
doc_name,
'{alphanum_pattern}', '', 'g'
);
IF length(cleaned_name) > {truncate_length} THEN
cleaned_name = left(cleaned_name, {truncate_length});
END IF;
-- Set name and name trigrams for all entities referencing this document
UPDATE "{tenant_id}".kg_entity
SET
name = doc_name,
name_trigrams = {POSTGRES_DEFAULT_SCHEMA}.show_trgm(cleaned_name)
WHERE document_id = NEW.id;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
"""
)
)
trigger = f"{function}_trigger"
op.execute(f'DROP TRIGGER IF EXISTS {trigger} ON "{tenant_id}".document')
op.execute(
f"""
CREATE TRIGGER {trigger}
AFTER UPDATE OF semantic_id
ON "{tenant_id}".document
FOR EACH ROW
EXECUTE FUNCTION "{tenant_id}".{function}();
"""
)
def downgrade() -> None:
pass

View File

@@ -0,0 +1,52 @@
"""add chunk stats table
Revision ID: 3781a5eb12cb
Revises: df46c75b714e
Create Date: 2025-03-10 10:02:30.586666
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = "3781a5eb12cb"
down_revision = "df46c75b714e"
branch_labels = None
depends_on = None
def upgrade() -> None:
op.create_table(
"chunk_stats",
sa.Column("id", sa.String(), primary_key=True, index=True),
sa.Column(
"document_id",
sa.String(),
sa.ForeignKey("document.id"),
nullable=False,
index=True,
),
sa.Column("chunk_in_doc_id", sa.Integer(), nullable=False),
sa.Column("information_content_boost", sa.Float(), nullable=True),
sa.Column(
"last_modified",
sa.DateTime(timezone=True),
nullable=False,
index=True,
server_default=sa.func.now(),
),
sa.Column("last_synced", sa.DateTime(timezone=True), nullable=True, index=True),
sa.UniqueConstraint(
"document_id", "chunk_in_doc_id", name="uq_chunk_stats_doc_chunk"
),
)
op.create_index(
"ix_chunk_sync_status", "chunk_stats", ["last_modified", "last_synced"]
)
def downgrade() -> None:
op.drop_index("ix_chunk_sync_status", table_name="chunk_stats")
op.drop_table("chunk_stats")

View File

@@ -5,6 +5,7 @@ Revises: f1c6478c3fd8
Create Date: 2024-05-11 16:11:23.718084
"""
from alembic import op
import sqlalchemy as sa

View File

@@ -5,6 +5,7 @@ Revises: 776b3bbe9092
Create Date: 2024-03-27 19:41:29.073594
"""
from alembic import op
import sqlalchemy as sa

View File

@@ -0,0 +1,126 @@
"""Update GitHub connector repo_name to repositories
Revision ID: 3934b1bc7b62
Revises: b7c2b63c4a03
Create Date: 2025-03-05 10:50:30.516962
"""
from alembic import op
import sqlalchemy as sa
import json
import logging
# revision identifiers, used by Alembic.
revision = "3934b1bc7b62"
down_revision = "b7c2b63c4a03"
branch_labels = None
depends_on = None
logger = logging.getLogger("alembic.runtime.migration")
def upgrade() -> None:
# Get all GitHub connectors
conn = op.get_bind()
# First get all GitHub connectors
github_connectors = conn.execute(
sa.text(
"""
SELECT id, connector_specific_config
FROM connector
WHERE source = 'GITHUB'
"""
)
).fetchall()
# Update each connector's config
updated_count = 0
for connector_id, config in github_connectors:
try:
if not config:
logger.warning(f"Connector {connector_id} has no config, skipping")
continue
# Parse the config if it's a string
if isinstance(config, str):
config = json.loads(config)
if "repo_name" not in config:
continue
# Create new config with repositories instead of repo_name
new_config = dict(config)
repo_name_value = new_config.pop("repo_name")
new_config["repositories"] = repo_name_value
# Update the connector with the new config
conn.execute(
sa.text(
"""
UPDATE connector
SET connector_specific_config = :new_config
WHERE id = :connector_id
"""
),
{"connector_id": connector_id, "new_config": json.dumps(new_config)},
)
updated_count += 1
except Exception as e:
logger.error(f"Error updating connector {connector_id}: {str(e)}")
def downgrade() -> None:
# Get all GitHub connectors
conn = op.get_bind()
logger.debug(
"Starting rollback of GitHub connectors from repositories to repo_name"
)
github_connectors = conn.execute(
sa.text(
"""
SELECT id, connector_specific_config
FROM connector
WHERE source = 'GITHUB'
"""
)
).fetchall()
logger.debug(f"Found {len(github_connectors)} GitHub connectors to rollback")
# Revert each GitHub connector to use repo_name instead of repositories
reverted_count = 0
for connector_id, config in github_connectors:
try:
if not config:
continue
# Parse the config if it's a string
if isinstance(config, str):
config = json.loads(config)
if "repositories" not in config:
continue
# Create new config with repo_name instead of repositories
new_config = dict(config)
repositories_value = new_config.pop("repositories")
new_config["repo_name"] = repositories_value
# Update the connector with the new config
conn.execute(
sa.text(
"""
UPDATE connector
SET connector_specific_config = :new_config
WHERE id = :connector_id
"""
),
{"new_config": json.dumps(new_config), "connector_id": connector_id},
)
reverted_count += 1
except Exception as e:
logger.error(f"Error reverting connector {connector_id}: {str(e)}")

View File

@@ -5,6 +5,7 @@ Revises: e0a68a81d434
Create Date: 2023-10-05 18:47:09.582849
"""
from alembic import op
import sqlalchemy as sa

View File

@@ -0,0 +1,82 @@
"""improved index
Revision ID: 3bd4c84fe72f
Revises: 8f43500ee275
Create Date: 2025-02-26 13:07:56.217791
"""
from alembic import op
# revision identifiers, used by Alembic.
revision = "3bd4c84fe72f"
down_revision = "8f43500ee275"
branch_labels = None
depends_on = None
# NOTE:
# This migration addresses issues with the previous migration (8f43500ee275) which caused
# an outage by creating an index without using CONCURRENTLY. This migration:
#
# 1. Creates more efficient full-text search capabilities using tsvector columns and GIN indexes
# 2. Adds indexes to both chat_message and chat_session tables for comprehensive search
# 3. Note: CONCURRENTLY was removed due to operational issues
def upgrade() -> None:
# First, drop any existing indexes to avoid conflicts
op.execute("DROP INDEX IF EXISTS idx_chat_message_tsv;")
op.execute("DROP INDEX IF EXISTS idx_chat_session_desc_tsv;")
op.execute("DROP INDEX IF EXISTS idx_chat_message_message_lower;")
# Drop existing columns if they exist
op.execute("ALTER TABLE chat_message DROP COLUMN IF EXISTS message_tsv;")
op.execute("ALTER TABLE chat_session DROP COLUMN IF EXISTS description_tsv;")
# Create a GIN index for full-text search on chat_message.message
op.execute(
"""
ALTER TABLE chat_message
ADD COLUMN message_tsv tsvector
GENERATED ALWAYS AS (to_tsvector('english', message)) STORED;
"""
)
op.execute(
"""
CREATE INDEX IF NOT EXISTS idx_chat_message_tsv
ON chat_message
USING GIN (message_tsv)
"""
)
# Also add a stored tsvector column for chat_session.description
op.execute(
"""
ALTER TABLE chat_session
ADD COLUMN description_tsv tsvector
GENERATED ALWAYS AS (to_tsvector('english', coalesce(description, ''))) STORED;
"""
)
op.execute(
"""
CREATE INDEX IF NOT EXISTS idx_chat_session_desc_tsv
ON chat_session
USING GIN (description_tsv)
"""
)
def downgrade() -> None:
# Drop the indexes first
op.execute("DROP INDEX IF EXISTS idx_chat_message_tsv;")
op.execute("DROP INDEX IF EXISTS idx_chat_session_desc_tsv;")
# Then drop the columns
op.execute("ALTER TABLE chat_message DROP COLUMN IF EXISTS message_tsv;")
op.execute("ALTER TABLE chat_session DROP COLUMN IF EXISTS description_tsv;")
op.execute("DROP INDEX IF EXISTS idx_chat_message_message_lower;")

View File

@@ -5,6 +5,7 @@ Revises: 27c6ecc08586
Create Date: 2023-06-14 23:45:51.760440
"""
import sqlalchemy as sa
from alembic import op

View File

@@ -0,0 +1,60 @@
"""add back input prompts
Revision ID: 3c6531f32351
Revises: aeda5f2df4f6
Create Date: 2025-01-13 12:49:51.705235
"""
from alembic import op
import sqlalchemy as sa
import fastapi_users_db_sqlalchemy
# revision identifiers, used by Alembic.
revision = "3c6531f32351"
down_revision = "aeda5f2df4f6"
branch_labels = None
depends_on = None
def upgrade() -> None:
op.create_table(
"inputprompt",
sa.Column("id", sa.Integer(), autoincrement=True, nullable=False),
sa.Column("prompt", sa.String(), nullable=False),
sa.Column("content", sa.String(), nullable=False),
sa.Column("active", sa.Boolean(), nullable=False),
sa.Column("is_public", sa.Boolean(), nullable=False),
sa.Column(
"user_id",
fastapi_users_db_sqlalchemy.generics.GUID(),
nullable=True,
),
sa.ForeignKeyConstraint(
["user_id"],
["user.id"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_table(
"inputprompt__user",
sa.Column("input_prompt_id", sa.Integer(), nullable=False),
sa.Column(
"user_id", fastapi_users_db_sqlalchemy.generics.GUID(), nullable=False
),
sa.Column("disabled", sa.Boolean(), nullable=False, default=False),
sa.ForeignKeyConstraint(
["input_prompt_id"],
["inputprompt.id"],
),
sa.ForeignKeyConstraint(
["user_id"],
["user.id"],
),
sa.PrimaryKeyConstraint("input_prompt_id", "user_id"),
)
def downgrade() -> None:
op.drop_table("inputprompt__user")
op.drop_table("inputprompt")

View File

@@ -0,0 +1,30 @@
"""add_doc_metadata_field_in_document_model
Revision ID: 3fc5d75723b3
Revises: 2f95e36923e6
Create Date: 2025-07-28 18:45:37.985406
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql
# revision identifiers, used by Alembic.
revision = "3fc5d75723b3"
down_revision = "2f95e36923e6"
branch_labels = None
depends_on = None
def upgrade() -> None:
op.add_column(
"document",
sa.Column(
"doc_metadata", postgresql.JSONB(astext_type=sa.Text()), nullable=True
),
)
def downgrade() -> None:
op.drop_column("document", "doc_metadata")

View File

@@ -5,6 +5,7 @@ Revises: 703313b75876
Create Date: 2024-04-13 18:07:29.153817
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql

View File

@@ -5,6 +5,7 @@ Revises: e1392f05e840
Create Date: 2024-08-01 12:38:54.466081
"""
from alembic import op
# revision identifiers, used by Alembic.

View File

@@ -5,6 +5,7 @@ Revises: d716b0791ddd
Create Date: 2024-06-28 20:01:05.927647
"""
from alembic import op
import sqlalchemy as sa

View File

@@ -5,6 +5,7 @@ Revises: c18cdf4b497e
Create Date: 2024-06-18 20:46:09.095034
"""
from alembic import op
import sqlalchemy as sa

View File

@@ -5,6 +5,7 @@ Revises: 3c5e35aa9af0
Create Date: 2023-07-18 17:33:40.365034
"""
from alembic import op
import sqlalchemy as sa

View File

@@ -5,6 +5,7 @@ Revises: 9d97fecfab7f
Create Date: 2023-10-27 11:38:33.803145
"""
from alembic import op
from sqlalchemy import String

View File

@@ -5,6 +5,7 @@ Revises: f32615f71aeb
Create Date: 2024-09-23 12:58:03.894038
"""
from alembic import op
# revision identifiers, used by Alembic.

View File

@@ -5,6 +5,7 @@ Revises: e91df4e935ef
Create Date: 2024-03-20 18:53:32.461518
"""
from alembic import op
import sqlalchemy as sa

View File

@@ -5,6 +5,7 @@ Revises:
Create Date: 2023-05-04 00:55:32.971991
"""
import sqlalchemy as sa
from alembic import op
from sqlalchemy.dialects import postgresql

View File

@@ -5,6 +5,7 @@ Revises: ecab2b3f1a3b
Create Date: 2024-04-11 11:05:18.414438
"""
from alembic import op
import sqlalchemy as sa

View File

@@ -0,0 +1,51 @@
"""update prompt length
Revision ID: 4794bc13e484
Revises: f7505c5b0284
Create Date: 2025-04-02 11:26:36.180328
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = "4794bc13e484"
down_revision = "f7505c5b0284"
branch_labels = None
depends_on = None
def upgrade() -> None:
op.alter_column(
"prompt",
"system_prompt",
existing_type=sa.TEXT(),
type_=sa.String(length=5000000),
existing_nullable=False,
)
op.alter_column(
"prompt",
"task_prompt",
existing_type=sa.TEXT(),
type_=sa.String(length=5000000),
existing_nullable=False,
)
def downgrade() -> None:
op.alter_column(
"prompt",
"system_prompt",
existing_type=sa.String(length=5000000),
type_=sa.TEXT(),
existing_nullable=False,
)
op.alter_column(
"prompt",
"task_prompt",
existing_type=sa.String(length=5000000),
type_=sa.TEXT(),
existing_nullable=False,
)

View File

@@ -0,0 +1,150 @@
"""Fix invalid model-configurations state
Revision ID: 47a07e1a38f1
Revises: 7a70b7664e37
Create Date: 2025-04-23 15:39:43.159504
"""
from alembic import op
from pydantic import BaseModel, ConfigDict
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql
from onyx.llm.llm_provider_options import (
fetch_model_names_for_provider_as_set,
fetch_visible_model_names_for_provider_as_set,
)
# revision identifiers, used by Alembic.
revision = "47a07e1a38f1"
down_revision = "7a70b7664e37"
branch_labels = None
depends_on = None
class _SimpleModelConfiguration(BaseModel):
# Configure model to read from attributes
model_config = ConfigDict(from_attributes=True)
id: int
llm_provider_id: int
name: str
is_visible: bool
max_input_tokens: int | None
def upgrade() -> None:
llm_provider_table = sa.sql.table(
"llm_provider",
sa.column("id", sa.Integer),
sa.column("provider", sa.String),
sa.column("model_names", postgresql.ARRAY(sa.String)),
sa.column("display_model_names", postgresql.ARRAY(sa.String)),
sa.column("default_model_name", sa.String),
sa.column("fast_default_model_name", sa.String),
)
model_configuration_table = sa.sql.table(
"model_configuration",
sa.column("id", sa.Integer),
sa.column("llm_provider_id", sa.Integer),
sa.column("name", sa.String),
sa.column("is_visible", sa.Boolean),
sa.column("max_input_tokens", sa.Integer),
)
connection = op.get_bind()
llm_providers = connection.execute(
sa.select(
llm_provider_table.c.id,
llm_provider_table.c.provider,
)
).fetchall()
for llm_provider in llm_providers:
llm_provider_id, provider_name = llm_provider
default_models = fetch_model_names_for_provider_as_set(provider_name)
display_models = fetch_visible_model_names_for_provider_as_set(
provider_name=provider_name
)
# if `fetch_model_names_for_provider_as_set` returns `None`, then
# that means that `provider_name` is not a well-known llm provider.
if not default_models:
continue
if not display_models:
raise RuntimeError(
"If `default_models` is non-None, `display_models` must be non-None too."
)
model_configurations = [
_SimpleModelConfiguration.model_validate(model_configuration)
for model_configuration in connection.execute(
sa.select(
model_configuration_table.c.id,
model_configuration_table.c.llm_provider_id,
model_configuration_table.c.name,
model_configuration_table.c.is_visible,
model_configuration_table.c.max_input_tokens,
).where(model_configuration_table.c.llm_provider_id == llm_provider_id)
).fetchall()
]
if model_configurations:
at_least_one_is_visible = any(
[
model_configuration.is_visible
for model_configuration in model_configurations
]
)
# If there is at least one model which is public, this is a valid state.
# Therefore, don't touch it and move on to the next one.
if at_least_one_is_visible:
continue
existing_visible_model_names: set[str] = set(
[
model_configuration.name
for model_configuration in model_configurations
if model_configuration.is_visible
]
)
difference = display_models.difference(existing_visible_model_names)
for model_name in difference:
if not model_name:
continue
insert_statement = postgresql.insert(model_configuration_table).values(
llm_provider_id=llm_provider_id,
name=model_name,
is_visible=True,
max_input_tokens=None,
)
connection.execute(
insert_statement.on_conflict_do_update(
index_elements=["llm_provider_id", "name"],
set_={"is_visible": insert_statement.excluded.is_visible},
)
)
else:
for model_name in default_models:
connection.execute(
model_configuration_table.insert().values(
llm_provider_id=llm_provider_id,
name=model_name,
is_visible=model_name in display_models,
max_input_tokens=None,
)
)
def downgrade() -> None:
pass

View File

@@ -5,6 +5,7 @@ Revises: dfbe9e93d3c7
Create Date: 2024-11-05 18:55:02.221064
"""
from alembic import op
import sqlalchemy as sa
@@ -40,6 +41,6 @@ def upgrade() -> None:
def downgrade() -> None:
op.drop_constraint("fk_persona_category", "persona", type_="foreignkey")
op.drop_constraint("persona_category_id_fkey", "persona", type_="foreignkey")
op.drop_column("persona", "category_id")
op.drop_table("persona_category")

View File

@@ -5,6 +5,7 @@ Revises: b85f02ec1308
Create Date: 2024-06-09 14:58:19.946509
"""
from alembic import op
import fastapi_users_db_sqlalchemy
import sqlalchemy as sa

View File

@@ -0,0 +1,691 @@
"""create knowledge graph tables
Revision ID: 495cb26ce93e
Revises: ca04500b9ee8
Create Date: 2025-03-19 08:51:14.341989
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql
from sqlalchemy import text
from datetime import datetime, timedelta
from onyx.configs.app_configs import DB_READONLY_USER
from onyx.configs.app_configs import DB_READONLY_PASSWORD
from shared_configs.configs import MULTI_TENANT
from shared_configs.configs import POSTGRES_DEFAULT_SCHEMA
# revision identifiers, used by Alembic.
revision = "495cb26ce93e"
down_revision = "ca04500b9ee8"
branch_labels = None
depends_on = None
def upgrade() -> None:
# Create a new permission-less user to be later used for knowledge graph queries.
# The user will later get temporary read privileges for a specific view that will be
# ad hoc generated specific to a knowledge graph query.
#
# Note: in order for the migration to run, the DB_READONLY_USER and DB_READONLY_PASSWORD
# environment variables MUST be set. Otherwise, an exception will be raised.
if not MULTI_TENANT:
# Enable pg_trgm extension if not already enabled
op.execute("CREATE EXTENSION IF NOT EXISTS pg_trgm")
# Create read-only db user here only in single tenant mode. For multi-tenant mode,
# the user is created in the alembic_tenants migration.
if not (DB_READONLY_USER and DB_READONLY_PASSWORD):
raise Exception("DB_READONLY_USER or DB_READONLY_PASSWORD is not set")
op.execute(
text(
f"""
DO $$
BEGIN
-- Check if the read-only user already exists
IF NOT EXISTS (SELECT FROM pg_catalog.pg_roles WHERE rolname = '{DB_READONLY_USER}') THEN
-- Create the read-only user with the specified password
EXECUTE format('CREATE USER %I WITH PASSWORD %L', '{DB_READONLY_USER}', '{DB_READONLY_PASSWORD}');
-- First revoke all privileges to ensure a clean slate
EXECUTE format('REVOKE ALL ON DATABASE %I FROM %I', current_database(), '{DB_READONLY_USER}');
-- Grant only the CONNECT privilege to allow the user to connect to the database
-- but not perform any operations without additional specific grants
EXECUTE format('GRANT CONNECT ON DATABASE %I TO %I', current_database(), '{DB_READONLY_USER}');
END IF;
END
$$;
"""
)
)
# Grant usage on current schema to readonly user
op.execute(
text(
f"""
DO $$
BEGIN
IF EXISTS (SELECT FROM pg_catalog.pg_roles WHERE rolname = '{DB_READONLY_USER}') THEN
EXECUTE format('GRANT USAGE ON SCHEMA %I TO %I', current_schema(), '{DB_READONLY_USER}');
END IF;
END
$$;
"""
)
)
op.execute("DROP TABLE IF EXISTS kg_config CASCADE")
op.create_table(
"kg_config",
sa.Column("id", sa.Integer(), primary_key=True, nullable=False, index=True),
sa.Column("kg_variable_name", sa.String(), nullable=False, index=True),
sa.Column("kg_variable_values", postgresql.ARRAY(sa.String()), nullable=False),
sa.UniqueConstraint("kg_variable_name", name="uq_kg_config_variable_name"),
)
# Insert initial data into kg_config table
op.bulk_insert(
sa.table(
"kg_config",
sa.column("kg_variable_name", sa.String),
sa.column("kg_variable_values", postgresql.ARRAY(sa.String)),
),
[
{"kg_variable_name": "KG_EXPOSED", "kg_variable_values": ["false"]},
{"kg_variable_name": "KG_ENABLED", "kg_variable_values": ["false"]},
{"kg_variable_name": "KG_VENDOR", "kg_variable_values": []},
{"kg_variable_name": "KG_VENDOR_DOMAINS", "kg_variable_values": []},
{"kg_variable_name": "KG_IGNORE_EMAIL_DOMAINS", "kg_variable_values": []},
{
"kg_variable_name": "KG_EXTRACTION_IN_PROGRESS",
"kg_variable_values": ["false"],
},
{
"kg_variable_name": "KG_CLUSTERING_IN_PROGRESS",
"kg_variable_values": ["false"],
},
{
"kg_variable_name": "KG_COVERAGE_START",
"kg_variable_values": [
(datetime.now() - timedelta(days=90)).strftime("%Y-%m-%d")
],
},
{"kg_variable_name": "KG_MAX_COVERAGE_DAYS", "kg_variable_values": ["90"]},
{
"kg_variable_name": "KG_MAX_PARENT_RECURSION_DEPTH",
"kg_variable_values": ["2"],
},
],
)
op.execute("DROP TABLE IF EXISTS kg_entity_type CASCADE")
op.create_table(
"kg_entity_type",
sa.Column("id_name", sa.String(), primary_key=True, nullable=False, index=True),
sa.Column("description", sa.String(), nullable=True),
sa.Column("grounding", sa.String(), nullable=False),
sa.Column(
"attributes",
postgresql.JSONB,
nullable=False,
server_default="{}",
),
sa.Column("occurrences", sa.Integer(), server_default="1", nullable=False),
sa.Column("active", sa.Boolean(), nullable=False, default=False),
sa.Column("deep_extraction", sa.Boolean(), nullable=False, default=False),
sa.Column(
"time_updated",
sa.DateTime(timezone=True),
server_default=sa.text("now()"),
onupdate=sa.text("now()"),
),
sa.Column(
"time_created", sa.DateTime(timezone=True), server_default=sa.text("now()")
),
sa.Column("grounded_source_name", sa.String(), nullable=True),
sa.Column("entity_values", postgresql.ARRAY(sa.String()), nullable=True),
sa.Column(
"clustering",
postgresql.JSONB,
nullable=False,
server_default="{}",
),
)
op.execute("DROP TABLE IF EXISTS kg_relationship_type CASCADE")
# Create KGRelationshipType table
op.create_table(
"kg_relationship_type",
sa.Column("id_name", sa.String(), primary_key=True, nullable=False, index=True),
sa.Column("name", sa.String(), nullable=False, index=True),
sa.Column(
"source_entity_type_id_name", sa.String(), nullable=False, index=True
),
sa.Column(
"target_entity_type_id_name", sa.String(), nullable=False, index=True
),
sa.Column("definition", sa.Boolean(), nullable=False, default=False),
sa.Column("occurrences", sa.Integer(), server_default="1", nullable=False),
sa.Column("type", sa.String(), nullable=False, index=True),
sa.Column("active", sa.Boolean(), nullable=False, default=True),
sa.Column(
"time_updated",
sa.DateTime(timezone=True),
server_default=sa.text("now()"),
onupdate=sa.text("now()"),
),
sa.Column(
"time_created", sa.DateTime(timezone=True), server_default=sa.text("now()")
),
sa.Column(
"clustering",
postgresql.JSONB,
nullable=False,
server_default="{}",
),
sa.ForeignKeyConstraint(
["source_entity_type_id_name"], ["kg_entity_type.id_name"]
),
sa.ForeignKeyConstraint(
["target_entity_type_id_name"], ["kg_entity_type.id_name"]
),
)
op.execute("DROP TABLE IF EXISTS kg_relationship_type_extraction_staging CASCADE")
# Create KGRelationshipTypeExtractionStaging table
op.create_table(
"kg_relationship_type_extraction_staging",
sa.Column("id_name", sa.String(), primary_key=True, nullable=False, index=True),
sa.Column("name", sa.String(), nullable=False, index=True),
sa.Column(
"source_entity_type_id_name", sa.String(), nullable=False, index=True
),
sa.Column(
"target_entity_type_id_name", sa.String(), nullable=False, index=True
),
sa.Column("definition", sa.Boolean(), nullable=False, default=False),
sa.Column("occurrences", sa.Integer(), server_default="1", nullable=False),
sa.Column("type", sa.String(), nullable=False, index=True),
sa.Column("active", sa.Boolean(), nullable=False, default=True),
sa.Column(
"time_created", sa.DateTime(timezone=True), server_default=sa.text("now()")
),
sa.Column(
"clustering",
postgresql.JSONB,
nullable=False,
server_default="{}",
),
sa.Column("transferred", sa.Boolean(), nullable=False, server_default="false"),
sa.ForeignKeyConstraint(
["source_entity_type_id_name"], ["kg_entity_type.id_name"]
),
sa.ForeignKeyConstraint(
["target_entity_type_id_name"], ["kg_entity_type.id_name"]
),
)
op.execute("DROP TABLE IF EXISTS kg_entity CASCADE")
# Create KGEntity table
op.create_table(
"kg_entity",
sa.Column("id_name", sa.String(), primary_key=True, nullable=False, index=True),
sa.Column("name", sa.String(), nullable=False, index=True),
sa.Column("entity_class", sa.String(), nullable=True, index=True),
sa.Column("entity_subtype", sa.String(), nullable=True, index=True),
sa.Column("entity_key", sa.String(), nullable=True, index=True),
sa.Column("name_trigrams", postgresql.ARRAY(sa.String(3)), nullable=True),
sa.Column("document_id", sa.String(), nullable=True, index=True),
sa.Column(
"alternative_names",
postgresql.ARRAY(sa.String()),
nullable=False,
server_default="{}",
),
sa.Column("entity_type_id_name", sa.String(), nullable=False, index=True),
sa.Column("description", sa.String(), nullable=True),
sa.Column(
"keywords",
postgresql.ARRAY(sa.String()),
nullable=False,
server_default="{}",
),
sa.Column("occurrences", sa.Integer(), server_default="1", nullable=False),
sa.Column(
"acl", postgresql.ARRAY(sa.String()), nullable=False, server_default="{}"
),
sa.Column("boosts", postgresql.JSONB, nullable=False, server_default="{}"),
sa.Column("attributes", postgresql.JSONB, nullable=False, server_default="{}"),
sa.Column("event_time", sa.DateTime(timezone=True), nullable=True),
sa.Column(
"time_updated",
sa.DateTime(timezone=True),
server_default=sa.text("now()"),
onupdate=sa.text("now()"),
),
sa.Column(
"time_created", sa.DateTime(timezone=True), server_default=sa.text("now()")
),
sa.ForeignKeyConstraint(["entity_type_id_name"], ["kg_entity_type.id_name"]),
sa.ForeignKeyConstraint(["document_id"], ["document.id"]),
sa.UniqueConstraint(
"name",
"entity_type_id_name",
"document_id",
name="uq_kg_entity_name_type_doc",
),
)
op.create_index("ix_entity_type_acl", "kg_entity", ["entity_type_id_name", "acl"])
op.create_index(
"ix_entity_name_search", "kg_entity", ["name", "entity_type_id_name"]
)
op.execute("DROP TABLE IF EXISTS kg_entity_extraction_staging CASCADE")
# Create KGEntityExtractionStaging table
op.create_table(
"kg_entity_extraction_staging",
sa.Column("id_name", sa.String(), primary_key=True, nullable=False, index=True),
sa.Column("name", sa.String(), nullable=False, index=True),
sa.Column("document_id", sa.String(), nullable=True, index=True),
sa.Column(
"alternative_names",
postgresql.ARRAY(sa.String()),
nullable=False,
server_default="{}",
),
sa.Column("entity_type_id_name", sa.String(), nullable=False, index=True),
sa.Column("description", sa.String(), nullable=True),
sa.Column(
"keywords",
postgresql.ARRAY(sa.String()),
nullable=False,
server_default="{}",
),
sa.Column("occurrences", sa.Integer(), server_default="1", nullable=False),
sa.Column(
"acl", postgresql.ARRAY(sa.String()), nullable=False, server_default="{}"
),
sa.Column("boosts", postgresql.JSONB, nullable=False, server_default="{}"),
sa.Column("attributes", postgresql.JSONB, nullable=False, server_default="{}"),
sa.Column("transferred_id_name", sa.String(), nullable=True, default=None),
sa.Column("entity_class", sa.String(), nullable=True, index=True),
sa.Column("entity_key", sa.String(), nullable=True, index=True),
sa.Column("entity_subtype", sa.String(), nullable=True, index=True),
sa.Column("parent_key", sa.String(), nullable=True, index=True),
sa.Column("event_time", sa.DateTime(timezone=True), nullable=True),
sa.Column(
"time_created", sa.DateTime(timezone=True), server_default=sa.text("now()")
),
sa.ForeignKeyConstraint(["entity_type_id_name"], ["kg_entity_type.id_name"]),
sa.ForeignKeyConstraint(["document_id"], ["document.id"]),
)
op.create_index(
"ix_entity_extraction_staging_acl",
"kg_entity_extraction_staging",
["entity_type_id_name", "acl"],
)
op.create_index(
"ix_entity_extraction_staging_name_search",
"kg_entity_extraction_staging",
["name", "entity_type_id_name"],
)
op.execute("DROP TABLE IF EXISTS kg_relationship CASCADE")
# Create KGRelationship table
op.create_table(
"kg_relationship",
sa.Column("id_name", sa.String(), nullable=False, index=True),
sa.Column("source_node", sa.String(), nullable=False, index=True),
sa.Column("target_node", sa.String(), nullable=False, index=True),
sa.Column("source_node_type", sa.String(), nullable=False, index=True),
sa.Column("target_node_type", sa.String(), nullable=False, index=True),
sa.Column("source_document", sa.String(), nullable=True, index=True),
sa.Column("type", sa.String(), nullable=False, index=True),
sa.Column("relationship_type_id_name", sa.String(), nullable=False, index=True),
sa.Column("occurrences", sa.Integer(), server_default="1", nullable=False),
sa.Column(
"time_updated",
sa.DateTime(timezone=True),
server_default=sa.text("now()"),
onupdate=sa.text("now()"),
),
sa.Column(
"time_created", sa.DateTime(timezone=True), server_default=sa.text("now()")
),
sa.ForeignKeyConstraint(["source_node"], ["kg_entity.id_name"]),
sa.ForeignKeyConstraint(["target_node"], ["kg_entity.id_name"]),
sa.ForeignKeyConstraint(["source_node_type"], ["kg_entity_type.id_name"]),
sa.ForeignKeyConstraint(["target_node_type"], ["kg_entity_type.id_name"]),
sa.ForeignKeyConstraint(["source_document"], ["document.id"]),
sa.ForeignKeyConstraint(
["relationship_type_id_name"], ["kg_relationship_type.id_name"]
),
sa.UniqueConstraint(
"source_node",
"target_node",
"type",
name="uq_kg_relationship_source_target_type",
),
sa.PrimaryKeyConstraint("id_name", "source_document"),
)
op.create_index(
"ix_kg_relationship_nodes", "kg_relationship", ["source_node", "target_node"]
)
op.execute("DROP TABLE IF EXISTS kg_relationship_extraction_staging CASCADE")
# Create KGRelationshipExtractionStaging table
op.create_table(
"kg_relationship_extraction_staging",
sa.Column("id_name", sa.String(), nullable=False, index=True),
sa.Column("source_node", sa.String(), nullable=False, index=True),
sa.Column("target_node", sa.String(), nullable=False, index=True),
sa.Column("source_node_type", sa.String(), nullable=False, index=True),
sa.Column("target_node_type", sa.String(), nullable=False, index=True),
sa.Column("source_document", sa.String(), nullable=True, index=True),
sa.Column("type", sa.String(), nullable=False, index=True),
sa.Column("relationship_type_id_name", sa.String(), nullable=False, index=True),
sa.Column("occurrences", sa.Integer(), server_default="1", nullable=False),
sa.Column("transferred", sa.Boolean(), nullable=False, server_default="false"),
sa.Column(
"time_created", sa.DateTime(timezone=True), server_default=sa.text("now()")
),
sa.ForeignKeyConstraint(
["source_node"], ["kg_entity_extraction_staging.id_name"]
),
sa.ForeignKeyConstraint(
["target_node"], ["kg_entity_extraction_staging.id_name"]
),
sa.ForeignKeyConstraint(["source_node_type"], ["kg_entity_type.id_name"]),
sa.ForeignKeyConstraint(["target_node_type"], ["kg_entity_type.id_name"]),
sa.ForeignKeyConstraint(["source_document"], ["document.id"]),
sa.ForeignKeyConstraint(
["relationship_type_id_name"],
["kg_relationship_type_extraction_staging.id_name"],
),
sa.UniqueConstraint(
"source_node",
"target_node",
"type",
name="uq_kg_relationship_extraction_staging_source_target_type",
),
sa.PrimaryKeyConstraint("id_name", "source_document"),
)
op.create_index(
"ix_kg_relationship_extraction_staging_nodes",
"kg_relationship_extraction_staging",
["source_node", "target_node"],
)
op.execute("DROP TABLE IF EXISTS kg_term CASCADE")
# Create KGTerm table
op.create_table(
"kg_term",
sa.Column("id_term", sa.String(), primary_key=True, nullable=False, index=True),
sa.Column(
"entity_types",
postgresql.ARRAY(sa.String()),
nullable=False,
server_default="{}",
),
sa.Column(
"time_updated",
sa.DateTime(timezone=True),
server_default=sa.text("now()"),
onupdate=sa.text("now()"),
),
sa.Column(
"time_created", sa.DateTime(timezone=True), server_default=sa.text("now()")
),
)
op.create_index("ix_search_term_entities", "kg_term", ["entity_types"])
op.create_index("ix_search_term_term", "kg_term", ["id_term"])
op.add_column(
"document",
sa.Column("kg_stage", sa.String(), nullable=True, index=True),
)
op.add_column(
"document",
sa.Column("kg_processing_time", sa.DateTime(timezone=True), nullable=True),
)
op.add_column(
"connector",
sa.Column(
"kg_processing_enabled",
sa.Boolean(),
nullable=True,
server_default="false",
),
)
op.add_column(
"connector",
sa.Column(
"kg_coverage_days",
sa.Integer(),
nullable=True,
server_default=None,
),
)
# Create GIN index for clustering and normalization
op.execute(
"CREATE INDEX IF NOT EXISTS idx_kg_entity_clustering_trigrams "
f"ON kg_entity USING GIN (name {POSTGRES_DEFAULT_SCHEMA}.gin_trgm_ops)"
)
op.execute(
"CREATE INDEX IF NOT EXISTS idx_kg_entity_normalization_trigrams "
"ON kg_entity USING GIN (name_trigrams)"
)
# Create kg_entity trigger to update kg_entity.name and its trigrams
alphanum_pattern = r"[^a-z0-9]+"
truncate_length = 1000
function = "update_kg_entity_name"
op.execute(
text(
f"""
CREATE OR REPLACE FUNCTION {function}()
RETURNS TRIGGER AS $$
DECLARE
name text;
cleaned_name text;
BEGIN
-- Set name to semantic_id if document_id is not NULL
IF NEW.document_id IS NOT NULL THEN
SELECT lower(semantic_id) INTO name
FROM document
WHERE id = NEW.document_id;
ELSE
name = lower(NEW.name);
END IF;
-- Clean name and truncate if too long
cleaned_name = regexp_replace(
name,
'{alphanum_pattern}', '', 'g'
);
IF length(cleaned_name) > {truncate_length} THEN
cleaned_name = left(cleaned_name, {truncate_length});
END IF;
-- Set name and name trigrams
NEW.name = name;
NEW.name_trigrams = {POSTGRES_DEFAULT_SCHEMA}.show_trgm(cleaned_name);
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
"""
)
)
trigger = f"{function}_trigger"
op.execute(f"DROP TRIGGER IF EXISTS {trigger} ON kg_entity")
op.execute(
f"""
CREATE TRIGGER {trigger}
BEFORE INSERT OR UPDATE OF name
ON kg_entity
FOR EACH ROW
EXECUTE FUNCTION {function}();
"""
)
# Create kg_entity trigger to update kg_entity.name and its trigrams
function = "update_kg_entity_name_from_doc"
op.execute(
text(
f"""
CREATE OR REPLACE FUNCTION {function}()
RETURNS TRIGGER AS $$
DECLARE
doc_name text;
cleaned_name text;
BEGIN
doc_name = lower(NEW.semantic_id);
-- Clean name and truncate if too long
cleaned_name = regexp_replace(
doc_name,
'{alphanum_pattern}', '', 'g'
);
IF length(cleaned_name) > {truncate_length} THEN
cleaned_name = left(cleaned_name, {truncate_length});
END IF;
-- Set name and name trigrams for all entities referencing this document
UPDATE kg_entity
SET
name = doc_name,
name_trigrams = {POSTGRES_DEFAULT_SCHEMA}.show_trgm(cleaned_name)
WHERE document_id = NEW.id;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
"""
)
)
trigger = f"{function}_trigger"
op.execute(f"DROP TRIGGER IF EXISTS {trigger} ON document")
op.execute(
f"""
CREATE TRIGGER {trigger}
AFTER UPDATE OF semantic_id
ON document
FOR EACH ROW
EXECUTE FUNCTION {function}();
"""
)
def downgrade() -> None:
# Drop all views that start with 'kg_'
op.execute(
"""
DO $$
DECLARE
view_name text;
BEGIN
FOR view_name IN
SELECT c.relname
FROM pg_catalog.pg_class c
JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind = 'v'
AND n.nspname = current_schema()
AND c.relname LIKE 'kg_relationships_with_access%'
LOOP
EXECUTE 'DROP VIEW IF EXISTS ' || quote_ident(view_name);
END LOOP;
END $$;
"""
)
op.execute(
"""
DO $$
DECLARE
view_name text;
BEGIN
FOR view_name IN
SELECT c.relname
FROM pg_catalog.pg_class c
JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind = 'v'
AND n.nspname = current_schema()
AND c.relname LIKE 'allowed_docs%'
LOOP
EXECUTE 'DROP VIEW IF EXISTS ' || quote_ident(view_name);
END LOOP;
END $$;
"""
)
for table, function in (
("kg_entity", "update_kg_entity_name"),
("document", "update_kg_entity_name_from_doc"),
):
op.execute(f"DROP TRIGGER IF EXISTS {function}_trigger ON {table}")
op.execute(f"DROP FUNCTION IF EXISTS {function}()")
# Drop index
op.execute("DROP INDEX IF EXISTS idx_kg_entity_clustering_trigrams")
op.execute("DROP INDEX IF EXISTS idx_kg_entity_normalization_trigrams")
# Drop tables in reverse order of creation to handle dependencies
op.drop_table("kg_term")
op.drop_table("kg_relationship")
op.drop_table("kg_entity")
op.drop_table("kg_relationship_type")
op.drop_table("kg_relationship_extraction_staging")
op.drop_table("kg_relationship_type_extraction_staging")
op.drop_table("kg_entity_extraction_staging")
op.drop_table("kg_entity_type")
op.drop_column("connector", "kg_processing_enabled")
op.drop_column("connector", "kg_coverage_days")
op.drop_column("document", "kg_stage")
op.drop_column("document", "kg_processing_time")
op.drop_table("kg_config")
# Revoke usage on current schema for the readonly user
op.execute(
text(
f"""
DO $$
BEGIN
IF EXISTS (SELECT FROM pg_catalog.pg_roles WHERE rolname = '{DB_READONLY_USER}') THEN
EXECUTE format('REVOKE ALL ON SCHEMA %I FROM %I', current_schema(), '{DB_READONLY_USER}');
END IF;
END
$$;
"""
)
)
if not MULTI_TENANT:
# Drop read-only db user here only in single tenant mode. For multi-tenant mode,
# the user is dropped in the alembic_tenants migration.
op.execute(
text(
f"""
DO $$
BEGIN
IF EXISTS (SELECT FROM pg_catalog.pg_roles WHERE rolname = '{DB_READONLY_USER}') THEN
-- First revoke all privileges from the database
EXECUTE format('REVOKE ALL ON DATABASE %I FROM %I', current_database(), '{DB_READONLY_USER}');
-- Then drop the user
EXECUTE format('DROP USER %I', '{DB_READONLY_USER}');
END IF;
END
$$;
"""
)
)
op.execute(text("DROP EXTENSION IF EXISTS pg_trgm"))

View File

@@ -5,6 +5,7 @@ Revises: 7477a5f5d728
Create Date: 2024-08-10 19:20:34.527559
"""
from alembic import op
import sqlalchemy as sa

View File

@@ -5,6 +5,7 @@ Revises: d9ec13955951
Create Date: 2024-08-20 15:28:52.993827
"""
from alembic import op
# revision identifiers, used by Alembic.

View File

@@ -0,0 +1,65 @@
"""lowercase_user_emails
Revision ID: 4d58345da04a
Revises: f1ca58b2f2ec
Create Date: 2025-01-29 07:48:46.784041
"""
import logging
from typing import cast
from alembic import op
from sqlalchemy.exc import IntegrityError
from sqlalchemy.sql import text
# revision identifiers, used by Alembic.
revision = "4d58345da04a"
down_revision = "f1ca58b2f2ec"
branch_labels = None
depends_on = None
logger = logging.getLogger("alembic.runtime.migration")
def upgrade() -> None:
"""Conflicts on lowercasing will result in the uppercased email getting a
unique integer suffix when converted to lowercase."""
connection = op.get_bind()
# Fetch all user emails that are not already lowercase
user_emails = connection.execute(
text('SELECT id, email FROM "user" WHERE email != LOWER(email)')
).fetchall()
for user_id, email in user_emails:
email = cast(str, email)
username, domain = email.rsplit("@", 1)
new_email = f"{username.lower()}@{domain.lower()}"
attempt = 1
while True:
try:
# Try updating the email
connection.execute(
text('UPDATE "user" SET email = :new_email WHERE id = :user_id'),
{"new_email": new_email, "user_id": user_id},
)
break # Success, exit loop
except IntegrityError:
next_email = f"{username.lower()}_{attempt}@{domain.lower()}"
# Email conflict occurred, append `_1`, `_2`, etc., to the username
logger.warning(
f"Conflict while lowercasing email: "
f"old_email={email} "
f"conflicting_email={new_email} "
f"next_email={next_email}"
)
new_email = next_email
attempt += 1
def downgrade() -> None:
# Cannot restore original case of emails
pass

View File

@@ -5,7 +5,7 @@ Revises: 47e5bef3a1d7
Create Date: 2024-11-06 13:15:53.302644
"""
import logging
from typing import cast
from alembic import op
import sqlalchemy as sa
@@ -20,13 +20,8 @@ down_revision = "47e5bef3a1d7"
branch_labels: None = None
depends_on: None = None
# Configure logging
logger = logging.getLogger("alembic.runtime.migration")
logger.setLevel(logging.INFO)
def upgrade() -> None:
logger.info(f"{revision}: create_table: slack_bot")
# Create new slack_bot table
op.create_table(
"slack_bot",
@@ -63,7 +58,6 @@ def upgrade() -> None:
)
# Handle existing Slack bot tokens first
logger.info(f"{revision}: Checking for existing Slack bot.")
bot_token = None
app_token = None
first_row_id = None
@@ -71,15 +65,12 @@ def upgrade() -> None:
try:
tokens = cast(dict, get_kv_store().load("slack_bot_tokens_config_key"))
except Exception:
logger.warning("No existing Slack bot tokens found.")
tokens = {}
bot_token = tokens.get("bot_token")
app_token = tokens.get("app_token")
if bot_token and app_token:
logger.info(f"{revision}: Found bot and app tokens.")
session = Session(bind=op.get_bind())
new_slack_bot = SlackBot(
name="Slack Bot (Migrated)",
@@ -170,10 +161,9 @@ def upgrade() -> None:
# Clean up old tokens if they existed
try:
if bot_token and app_token:
logger.info(f"{revision}: Removing old bot and app tokens.")
get_kv_store().delete("slack_bot_tokens_config_key")
except Exception:
logger.warning("tried to delete tokens in dynamic config but failed")
pass
# Rename the table
op.rename_table(
"slack_bot_config__standard_answer_category",
@@ -190,8 +180,6 @@ def upgrade() -> None:
# Drop the table with CASCADE to handle dependent objects
op.execute("DROP TABLE slack_bot_config CASCADE")
logger.info(f"{revision}: Migration complete.")
def downgrade() -> None:
# Recreate the old slack_bot_config table
@@ -273,7 +261,7 @@ def downgrade() -> None:
}
get_kv_store().store("slack_bot_tokens_config_key", tokens)
except Exception:
logger.warning("Failed to save tokens back to KV store")
pass
# Drop the new tables in reverse order
op.drop_table("slack_channel_config")

View File

@@ -5,6 +5,7 @@ Revises: 7da0ae5ad583
Create Date: 2023-11-27 17:23:29.668422
"""
from alembic import op
import sqlalchemy as sa

View File

@@ -5,6 +5,7 @@ Revises: f7e58d357687
Create Date: 2024-08-28 17:40:46.077470
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.sql import func

View File

@@ -5,6 +5,7 @@ Revises: 94dc3d0236f8
Create Date: 2024-12-11 18:05:05.490737
"""
from alembic import op

Some files were not shown because too many files have changed in this diff Show More