pool-anything 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +280 -0
  3. package/bin/pool-anything.js +4 -0
  4. package/data/providers.json +38 -0
  5. package/dist/admin/branding.js +34 -0
  6. package/dist/admin/components.js +189 -0
  7. package/dist/admin/pages.js +1891 -0
  8. package/dist/admin/shell.js +129 -0
  9. package/dist/admin/tokens.js +32 -0
  10. package/dist/cli/nl.js +147 -0
  11. package/dist/cli/repl.js +470 -0
  12. package/dist/cli/ui.js +81 -0
  13. package/dist/cli.js +199 -0
  14. package/dist/common/http.js +55 -0
  15. package/dist/config/env.js +94 -0
  16. package/dist/config/paths.js +112 -0
  17. package/dist/data/providers.json +38 -0
  18. package/dist/db/index.js +20 -0
  19. package/dist/db/init.js +11 -0
  20. package/dist/logo.png +0 -0
  21. package/dist/media/capabilities.js +103 -0
  22. package/dist/middleware/auth.js +37 -0
  23. package/dist/observability/health.js +31 -0
  24. package/dist/pool/index.js +407 -0
  25. package/dist/pool/rotation.js +123 -0
  26. package/dist/proxy/dns.js +39 -0
  27. package/dist/proxy/forward.js +350 -0
  28. package/dist/public/logos/anthropic.svg +1 -0
  29. package/dist/public/logos/anyscale.svg +1 -0
  30. package/dist/public/logos/appwrite.svg +1 -0
  31. package/dist/public/logos/brave.svg +1 -0
  32. package/dist/public/logos/cartesia.svg +4 -0
  33. package/dist/public/logos/claude.svg +1 -0
  34. package/dist/public/logos/cloudflare.svg +1 -0
  35. package/dist/public/logos/cohere-command.svg +1 -0
  36. package/dist/public/logos/cohere.svg +1 -0
  37. package/dist/public/logos/deepgram.svg +1 -0
  38. package/dist/public/logos/elevenlabs.svg +1 -0
  39. package/dist/public/logos/finnhub.png +0 -0
  40. package/dist/public/logos/fireworks.svg +1 -0
  41. package/dist/public/logos/gemini.svg +1 -0
  42. package/dist/public/logos/google.svg +1 -0
  43. package/dist/public/logos/googlemaps.svg +1 -0
  44. package/dist/public/logos/groq.svg +1 -0
  45. package/dist/public/logos/huggingface.svg +1 -0
  46. package/dist/public/logos/mailgun.svg +1 -0
  47. package/dist/public/logos/manifest.json +197 -0
  48. package/dist/public/logos/mapbox.svg +1 -0
  49. package/dist/public/logos/mistral.svg +1 -0
  50. package/dist/public/logos/neon.svg +1 -0
  51. package/dist/public/logos/openai.svg +1 -0
  52. package/dist/public/logos/openrouter.svg +1 -0
  53. package/dist/public/logos/openweather.png +0 -0
  54. package/dist/public/logos/perplexity.svg +1 -0
  55. package/dist/public/logos/pool-anything.svg +111 -0
  56. package/dist/public/logos/postmark.svg +4 -0
  57. package/dist/public/logos/replicate.svg +1 -0
  58. package/dist/public/logos/resend.svg +1 -0
  59. package/dist/public/logos/scrapingbee.svg +72 -0
  60. package/dist/public/logos/sendgrid.svg +1 -0
  61. package/dist/public/logos/serper.png +0 -0
  62. package/dist/public/logos/supabase.svg +1 -0
  63. package/dist/public/logos/tavily.svg +1 -0
  64. package/dist/public/logos/together.svg +1 -0
  65. package/dist/public/logos/turso.svg +1 -0
  66. package/dist/public/logos/twilio.svg +1 -0
  67. package/dist/public/logos/upstash.svg +1 -0
  68. package/dist/router/api.js +20 -0
  69. package/dist/server.js +431 -0
  70. package/dist/upstream/index.js +137 -0
  71. package/package.json +68 -0
  72. package/public/logos/anthropic.svg +1 -0
  73. package/public/logos/anyscale.svg +1 -0
  74. package/public/logos/appwrite.svg +1 -0
  75. package/public/logos/brave.svg +1 -0
  76. package/public/logos/cartesia.svg +4 -0
  77. package/public/logos/claude.svg +1 -0
  78. package/public/logos/cloudflare.svg +1 -0
  79. package/public/logos/cohere-command.svg +1 -0
  80. package/public/logos/cohere.svg +1 -0
  81. package/public/logos/deepgram.svg +1 -0
  82. package/public/logos/elevenlabs.svg +1 -0
  83. package/public/logos/finnhub.png +0 -0
  84. package/public/logos/fireworks.svg +1 -0
  85. package/public/logos/gemini.svg +1 -0
  86. package/public/logos/google.svg +1 -0
  87. package/public/logos/googlemaps.svg +1 -0
  88. package/public/logos/groq.svg +1 -0
  89. package/public/logos/huggingface.svg +1 -0
  90. package/public/logos/mailgun.svg +1 -0
  91. package/public/logos/manifest.json +197 -0
  92. package/public/logos/mapbox.svg +1 -0
  93. package/public/logos/mistral.svg +1 -0
  94. package/public/logos/neon.svg +1 -0
  95. package/public/logos/openai.svg +1 -0
  96. package/public/logos/openrouter.svg +1 -0
  97. package/public/logos/openweather.png +0 -0
  98. package/public/logos/perplexity.svg +1 -0
  99. package/public/logos/pool-anything.svg +111 -0
  100. package/public/logos/postmark.svg +4 -0
  101. package/public/logos/replicate.svg +1 -0
  102. package/public/logos/resend.svg +1 -0
  103. package/public/logos/scrapingbee.svg +72 -0
  104. package/public/logos/sendgrid.svg +1 -0
  105. package/public/logos/serper.png +0 -0
  106. package/public/logos/supabase.svg +1 -0
  107. package/public/logos/tavily.svg +1 -0
  108. package/public/logos/together.svg +1 -0
  109. package/public/logos/turso.svg +1 -0
  110. package/public/logos/twilio.svg +1 -0
  111. package/public/logos/upstash.svg +1 -0
@@ -0,0 +1,197 @@
1
+ {
2
+ "anyscale": {
3
+ "file": "public/logos/anyscale.svg",
4
+ "bytes": 652,
5
+ "source": "lobehub icons-static-svg"
6
+ },
7
+ "appwrite": {
8
+ "file": "public/logos/appwrite.svg",
9
+ "bytes": 509,
10
+ "source": "simple-icons SVG"
11
+ },
12
+ "brave": {
13
+ "file": "public/logos/brave.svg",
14
+ "bytes": 2614,
15
+ "source": "lobehub icons-static-svg"
16
+ },
17
+ "cartesia": {
18
+ "file": "public/logos/cartesia.svg",
19
+ "bytes": 968,
20
+ "source": "official site SVG"
21
+ },
22
+ "claude": {
23
+ "file": "public/logos/claude.svg",
24
+ "bytes": 1701,
25
+ "source": "lobehub icons-static-svg"
26
+ },
27
+ "cloudflare": {
28
+ "file": "public/logos/cloudflare.svg",
29
+ "bytes": 1083,
30
+ "source": "lobehub icons-static-svg"
31
+ },
32
+ "cohere-command": {
33
+ "file": "public/logos/cohere-command.svg",
34
+ "bytes": 726,
35
+ "source": "lobehub icons-static-svg"
36
+ },
37
+ "cohere": {
38
+ "file": "public/logos/cohere.svg",
39
+ "bytes": 724,
40
+ "source": "lobehub icons-static-svg"
41
+ },
42
+ "deepgram": {
43
+ "file": "public/logos/deepgram.svg",
44
+ "bytes": 438,
45
+ "source": "simple-icons SVG"
46
+ },
47
+ "elevenlabs": {
48
+ "file": "public/logos/elevenlabs.svg",
49
+ "bytes": 236,
50
+ "source": "lobehub icons-static-svg"
51
+ },
52
+ "finnhub": {
53
+ "file": "public/logos/finnhub.png",
54
+ "bytes": 99070,
55
+ "source": "official site PNG/ICO"
56
+ },
57
+ "fireworks": {
58
+ "file": "public/logos/fireworks.svg",
59
+ "bytes": 597,
60
+ "source": "lobehub icons-static-svg"
61
+ },
62
+ "gemini": {
63
+ "file": "public/logos/gemini.svg",
64
+ "bytes": 651,
65
+ "source": "lobehub icons-static-svg"
66
+ },
67
+ "google": {
68
+ "file": "public/logos/google.svg",
69
+ "bytes": 900,
70
+ "source": "lobehub icons-static-svg"
71
+ },
72
+ "googlemaps": {
73
+ "file": "public/logos/googlemaps.svg",
74
+ "bytes": 1039,
75
+ "source": "simple-icons SVG"
76
+ },
77
+ "groq": {
78
+ "file": "public/logos/groq.svg",
79
+ "bytes": 568,
80
+ "source": "lobehub icons-static-svg"
81
+ },
82
+ "huggingface": {
83
+ "file": "public/logos/huggingface.svg",
84
+ "bytes": 4589,
85
+ "source": "lobehub icons-static-svg"
86
+ },
87
+ "mailgun": {
88
+ "file": "public/logos/mailgun.svg",
89
+ "bytes": 780,
90
+ "source": "simple-icons SVG"
91
+ },
92
+ "mapbox": {
93
+ "file": "public/logos/mapbox.svg",
94
+ "bytes": 437,
95
+ "source": "simple-icons SVG"
96
+ },
97
+ "mistral": {
98
+ "file": "public/logos/mistral.svg",
99
+ "bytes": 418,
100
+ "source": "lobehub icons-static-svg"
101
+ },
102
+ "neon": {
103
+ "file": "public/logos/neon.svg",
104
+ "bytes": 208,
105
+ "source": "simple-icons SVG"
106
+ },
107
+ "openai": {
108
+ "file": "public/logos/openai.svg",
109
+ "bytes": 1687,
110
+ "source": "lobehub icons-static-svg"
111
+ },
112
+ "openrouter": {
113
+ "file": "public/logos/openrouter.svg",
114
+ "bytes": 382,
115
+ "source": "lobehub icons-static-svg"
116
+ },
117
+ "openweather": {
118
+ "file": "public/logos/openweather.png",
119
+ "bytes": 17136,
120
+ "source": "official site PNG/ICO"
121
+ },
122
+ "perplexity": {
123
+ "file": "public/logos/perplexity.svg",
124
+ "bytes": 608,
125
+ "source": "lobehub icons-static-svg"
126
+ },
127
+ "postmark": {
128
+ "file": "public/logos/postmark.svg",
129
+ "bytes": 3699,
130
+ "source": "official site SVG"
131
+ },
132
+ "replicate": {
133
+ "file": "public/logos/replicate.svg",
134
+ "bytes": 313,
135
+ "source": "lobehub icons-static-svg"
136
+ },
137
+ "resend": {
138
+ "file": "public/logos/resend.svg",
139
+ "bytes": 359,
140
+ "source": "simple-icons SVG"
141
+ },
142
+ "scrapingbee": {
143
+ "file": "public/logos/scrapingbee.svg",
144
+ "bytes": 7363,
145
+ "source": "official site SVG"
146
+ },
147
+ "sendgrid": {
148
+ "file": "public/logos/sendgrid.svg",
149
+ "bytes": 420,
150
+ "source": "simple-icons SVG"
151
+ },
152
+ "serper": {
153
+ "file": "public/logos/serper.png",
154
+ "bytes": 2798,
155
+ "source": "official site PNG/ICO"
156
+ },
157
+ "supabase": {
158
+ "file": "public/logos/supabase.svg",
159
+ "bytes": 318,
160
+ "source": "simple-icons SVG"
161
+ },
162
+ "tavily": {
163
+ "file": "public/logos/tavily.svg",
164
+ "bytes": 897,
165
+ "source": "lobehub icons-static-svg"
166
+ },
167
+ "together": {
168
+ "file": "public/logos/together.svg",
169
+ "bytes": 577,
170
+ "source": "lobehub icons-static-svg"
171
+ },
172
+ "turso": {
173
+ "file": "public/logos/turso.svg",
174
+ "bytes": 937,
175
+ "source": "simple-icons SVG"
176
+ },
177
+ "twilio": {
178
+ "file": "public/logos/twilio.svg",
179
+ "bytes": 923,
180
+ "source": "simple-icons SVG"
181
+ },
182
+ "upstash": {
183
+ "file": "public/logos/upstash.svg",
184
+ "bytes": 829,
185
+ "source": "simple-icons SVG"
186
+ },
187
+ "anthropic": {
188
+ "file": "public/logos/anthropic.svg",
189
+ "bytes": 368,
190
+ "source": "lobehub icons-static-svg"
191
+ },
192
+ "pool-anything": {
193
+ "file": "public/logos/pool-anything.svg",
194
+ "bytes": 3601,
195
+ "source": "custom designed"
196
+ }
197
+ }
@@ -0,0 +1 @@
1
+ <svg fill="#000000" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mapbox</title><path d="M12 0C5.372 0 0 5.372 0 12s5.372 12 12 12 12-5.372 12-12S18.628 0 12 0zm5.696 14.943c-4.103 4.103-11.433 2.794-11.433 2.794S4.94 10.421 9.057 6.304c2.281-2.281 6.061-2.187 8.45.189s2.471 6.168.189 8.45zm-4.319-7.91l-1.174 2.416-2.416 1.174 2.416 1.174 1.174 2.416 1.174-2.416 2.416-1.174-2.416-1.174-1.174-2.416z"/></svg>
@@ -0,0 +1 @@
1
+ <svg fill="currentColor" fill-rule="evenodd" height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>Mistral</title><path clip-rule="evenodd" d="M3.428 3.4h3.429v3.428h3.429v3.429h-.002 3.431V6.828h3.427V3.4h3.43v13.714H24v3.429H13.714v-3.428h-3.428v-3.429h-3.43v3.428h3.43v3.429H0v-3.429h3.428V3.4zm10.286 13.715h3.428v-3.429h-3.427v3.429z"></path></svg>
@@ -0,0 +1 @@
1
+ <svg fill="#34D59A" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Neon</title><path d="M24 0V24l-9.365-8.045V24H0V0ZM2.942 21.087h8.751V9.563l9.365 8.204V2.919L2.942 2.914Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg fill="currentColor" fill-rule="evenodd" height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>OpenAI</title><path d="M9.205 8.658v-2.26c0-.19.072-.333.238-.428l4.543-2.616c.619-.357 1.356-.523 2.117-.523 2.854 0 4.662 2.212 4.662 4.566 0 .167 0 .357-.024.547l-4.71-2.759a.797.797 0 00-.856 0l-5.97 3.473zm10.609 8.8V12.06c0-.333-.143-.57-.429-.737l-5.97-3.473 1.95-1.118a.433.433 0 01.476 0l4.543 2.617c1.309.76 2.189 2.378 2.189 3.948 0 1.808-1.07 3.473-2.76 4.163zM7.802 12.703l-1.95-1.142c-.167-.095-.239-.238-.239-.428V5.899c0-2.545 1.95-4.472 4.591-4.472 1 0 1.927.333 2.712.928L8.23 5.067c-.285.166-.428.404-.428.737v6.898zM12 15.128l-2.795-1.57v-3.33L12 8.658l2.795 1.57v3.33L12 15.128zm1.796 7.23c-1 0-1.927-.332-2.712-.927l4.686-2.712c.285-.166.428-.404.428-.737v-6.898l1.974 1.142c.167.095.238.238.238.428v5.233c0 2.545-1.974 4.472-4.614 4.472zm-5.637-5.303l-4.544-2.617c-1.308-.761-2.188-2.378-2.188-3.948A4.482 4.482 0 014.21 6.327v5.423c0 .333.143.571.428.738l5.947 3.449-1.95 1.118a.432.432 0 01-.476 0zm-.262 3.9c-2.688 0-4.662-2.021-4.662-4.519 0-.19.024-.38.047-.57l4.686 2.71c.286.167.571.167.856 0l5.97-3.448v2.26c0 .19-.07.333-.237.428l-4.543 2.616c-.619.357-1.356.523-2.117.523zm5.899 2.83a5.947 5.947 0 005.827-4.756C22.287 18.339 24 15.84 24 13.296c0-1.665-.713-3.282-1.998-4.448.119-.5.19-.999.19-1.498 0-3.401-2.759-5.947-5.946-5.947-.642 0-1.26.095-1.88.31A5.962 5.962 0 0010.205 0a5.947 5.947 0 00-5.827 4.757C1.713 5.447 0 7.945 0 10.49c0 1.666.713 3.283 1.998 4.448-.119.5-.19 1-.19 1.499 0 3.401 2.759 5.946 5.946 5.946.642 0 1.26-.095 1.88-.309a5.96 5.96 0 004.162 1.713z"></path></svg>
@@ -0,0 +1 @@
1
+ <svg fill="currentColor" fill-rule="evenodd" height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>OpenRouter</title><path d="M18.654 3.87a5.087 5.087 0 110 10.174L23.7 19.09c.64.641.187 1.737-.72 1.737H8.48a8.479 8.479 0 010-16.958h10.175zM8.479 7.26a5.087 5.087 0 100 10.176 5.087 5.087 0 000-10.175z"></path></svg>
@@ -0,0 +1 @@
1
+ <svg fill="currentColor" fill-rule="evenodd" height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>Perplexity</title><path d="M19.785 0v7.272H22.5V17.62h-2.935V24l-7.037-6.194v6.145h-1.091v-6.152L4.392 24v-6.465H1.5V7.188h2.884V0l7.053 6.494V.19h1.09v6.49L19.786 0zm-7.257 9.044v7.319l5.946 5.234V14.44l-5.946-5.397zm-1.099-.08l-5.946 5.398v7.235l5.946-5.234V8.965zm8.136 7.58h1.844V8.349H13.46l6.105 5.54v2.655zm-8.982-8.28H2.59v8.195h1.8v-2.576l6.192-5.62zM5.475 2.476v4.71h5.115l-5.115-4.71zm13.219 0l-5.115 4.71h5.115v-4.71z"></path></svg>
@@ -0,0 +1,111 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- Custom animated pool-anything logo -->
3
+ <svg viewBox="0 0 64 64" width="64" height="64" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
4
+ <defs>
5
+ <!-- Pulse animation for pool nodes -->
6
+ <animateTransform
7
+ attributeName="transform"
8
+ type="scale"
9
+ dur="2s"
10
+ repeatCount="indefinite"
11
+ values="1;1.25;1"
12
+ additive="sum"/>
13
+ <!-- Float animation for subtle movement -->
14
+ <animateTransform
15
+ attributeName="transform"
16
+ type="translate"
17
+ dur="4s"
18
+ repeatCount="indefinite"
19
+ values="0,0; 0,-4; 0,0"
20
+ additive="sum"/>
21
+ </defs>
22
+ <!-- Background ring -->
23
+ <circle cx="32" cy="32" r="28" fill="none" stroke="currentColor" stroke-width="1" opacity="0.4"/>
24
+ <!-- Three pool nodes (representing keys/pools) -->
25
+ <g id="nodes" transform="translate(8,8)">
26
+ <!-- Node 1: left -->
27
+ <g transform="translate(10,20)">
28
+ <circle cx="0" cy="0" r="8" fill="none" stroke="currentColor" stroke-width="2">
29
+ <animateTransform
30
+ attributeName="transform"
31
+ type="scale"
32
+ dur="2s"
33
+ repeatCount="indefinite"
34
+ values="1;1.3;1"
35
+ additive="sum"/>
36
+ </circle>
37
+ <circle cx="0" cy="0" r="5" fill="currentColor" opacity="0.8">
38
+ <animateTransform
39
+ attributeName="transform"
40
+ type="scale"
41
+ dur="2s"
42
+ repeatCount="indefinite"
43
+ values="1;1.2;1"
44
+ additive="sum"/>
45
+ </circle>
46
+ </g>
47
+ <!-- Node 2: center -->
48
+ <g transform="translate(28,20)">
49
+ <circle cx="0" cy="0" r="8" fill="none" stroke="currentColor" stroke-width="2">
50
+ <animateTransform
51
+ attributeName="transform"
52
+ type="scale"
53
+ dur="2s"
54
+ repeatCount="indefinite"
55
+ values="1;1.3;1"
56
+ additive="sum"/>
57
+ <!-- Stagger the pulse start -->
58
+ <animateTransform
59
+ attributeName="transform"
60
+ type="scale"
61
+ dur="2s"
62
+ repeatCount="indefinite"
63
+ values="1;1.3;1"
64
+ additive="sum"
65
+ begin="0.3s"/>
66
+ </circle>
67
+ <circle cx="0" cy="0" r="5" fill="currentColor" opacity="0.8">
68
+ <animateTransform
69
+ attributeName="transform"
70
+ type="scale"
71
+ dur="2s"
72
+ repeatCount="indefinite"
73
+ values="1;1.2;1"
74
+ additive="sum"
75
+ begin="0.3s"/>
76
+ </circle>
77
+ </g>
78
+ <!-- Node 3: right -->
79
+ <g transform="translate(46,20)">
80
+ <circle cx="0" cy="0" r="8" fill="none" stroke="currentColor" stroke-width="2">
81
+ <animateTransform
82
+ attributeName="transform"
83
+ type="scale"
84
+ dur="2s"
85
+ repeatCount="indefinite"
86
+ values="1;1.3;1"
87
+ additive="sum"
88
+ begin="0.6s"/>
89
+ </circle>
90
+ <circle cx="0" cy="0" r="5" fill="currentColor" opacity="0.8">
91
+ <animateTransform
92
+ attributeName="transform"
93
+ type="scale"
94
+ dur="2s"
95
+ repeatCount="indefinite"
96
+ values="1;1.2;1"
97
+ additive="sum"
98
+ begin="0.6s"/>
99
+ </circle>
100
+ </g>
101
+ </g>
102
+ <!-- Connecting lines between nodes -->
103
+ <g id="connectors" stroke="currentColor" stroke-width="1.5" stroke-opacity="0.6">
104
+ <line x1="18" y1="28" x2="30" y2="28"/>
105
+ <line x1="34" y1="28" x2="50" y2="28"/>
106
+ </g>
107
+ <!-- Project text label -->
108
+ <text x="32" y="58" text-anchor="middle" font-family="system-ui, sans-serif" font-size="11" fill="currentColor" opacity="0.9">
109
+ pool-anything
110
+ </text>
111
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M30 27.4219V28.8281C29.3528 28.8281 28.8281 29.3528 28.8281 30H27.4219C27.4219 29.3528 26.8972 28.8281 26.25 28.8281C25.6028 28.8281 25.0781 29.3528 25.0781 30H23.6719C23.6719 29.3528 23.1472 28.8281 22.5 28.8281C21.8528 28.8281 21.3281 29.3528 21.3281 30H19.9219C19.9219 29.3528 19.3972 28.8281 18.75 28.8281C18.1028 28.8281 17.5781 29.3528 17.5781 30H16.1719C16.1719 29.3528 15.6472 28.8281 15 28.8281C14.3528 28.8281 13.8281 29.3528 13.8281 30H12.4219C12.4219 29.3528 11.8972 28.8281 11.25 28.8281C10.6028 28.8281 10.0781 29.3528 10.0781 30H8.67188C8.67188 29.3528 8.14721 28.8281 7.5 28.8281C6.85279 28.8281 6.32812 29.3528 6.32812 30H4.92188C4.92188 29.5813 4.69852 29.1945 4.33594 28.9851C3.97336 28.7758 3.52664 28.7758 3.16406 28.9851C2.80148 29.1945 2.57812 29.5813 2.57812 30H1.17188C1.17188 29.3528 0.647209 28.8281 0 28.8281V27.4219C0.647209 27.4219 1.17188 26.8972 1.17188 26.25C1.17188 25.6028 0.647209 25.0781 0 25.0781V23.6719C0.647209 23.6719 1.17188 23.1472 1.17188 22.5C1.17188 21.8528 0.647209 21.3281 0 21.3281V19.9219C0.647209 19.9219 1.17188 19.3972 1.17188 18.75C1.17188 18.1028 0.647209 17.5781 0 17.5781V16.1719C0.647209 16.1719 1.17188 15.6472 1.17188 15C1.17188 14.3528 0.647209 13.8281 0 13.8281V12.4219C0.647209 12.4219 1.17188 11.8972 1.17188 11.25C1.17188 10.6028 0.647209 10.0781 0 10.0781V8.67188C0.647209 8.67188 1.17188 8.14721 1.17188 7.5C1.17188 6.85279 0.647209 6.32812 0 6.32812V4.92188C0.647209 4.92187 1.17188 4.39721 1.17188 3.75C1.17188 3.10279 0.647209 2.57813 0 2.57812V1.17188C0.647209 1.17188 1.17188 0.647209 1.17188 0H2.57812C2.57813 0.647209 3.10279 1.17188 3.75 1.17188C4.39721 1.17188 4.92187 0.647209 4.92188 0H6.32812C6.32812 0.647209 6.85279 1.17188 7.5 1.17188C8.14721 1.17188 8.67188 0.647209 8.67188 0H10.0781C10.0781 0.647209 10.6028 1.17188 11.25 1.17188C11.8972 1.17188 12.4219 0.647209 12.4219 0H13.8281C13.8281 0.647209 14.3528 1.17188 15 1.17188C15.6472 1.17188 16.1719 0.647209 16.1719 0H17.5781C17.5781 0.647209 18.1028 1.17188 18.75 1.17188C19.3972 1.17188 19.9219 0.647209 19.9219 0H21.3281C21.3281 0.647209 21.8528 1.17188 22.5 1.17188C23.1472 1.17188 23.6719 0.647209 23.6719 0H25.0781C25.0781 0.647209 25.6028 1.17188 26.25 1.17188C26.8972 1.17188 27.4219 0.647209 27.4219 0H28.8281C28.8281 0.647209 29.3528 1.17188 30 1.17188V2.57812C29.3528 2.57812 28.8281 3.10279 28.8281 3.75C28.8281 4.39721 29.3528 4.92188 30 4.92188V6.32812C29.3528 6.32812 28.8281 6.85279 28.8281 7.5C28.8281 8.14721 29.3528 8.67188 30 8.67188V10.0781C29.3528 10.0781 28.8281 10.6028 28.8281 11.25C28.8281 11.8972 29.3528 12.4219 30 12.4219V13.8281C29.5813 13.8281 29.1945 14.0515 28.9851 14.4141C28.7758 14.7766 28.7758 15.2234 28.9851 15.5859C29.1945 15.9485 29.5813 16.1719 30 16.1719V17.5781C29.3528 17.5781 28.8281 18.1028 28.8281 18.75C28.8281 19.3972 29.3528 19.9219 30 19.9219V21.3281C29.3528 21.3281 28.8281 21.8528 28.8281 22.5C28.8281 23.1472 29.3528 23.6719 30 23.6719V25.0781C29.3528 25.0781 28.8281 25.6028 28.8281 26.25C28.8281 26.8972 29.3528 27.4219 30 27.4219V27.4219Z" fill="#FFDE00"/>
3
+ <path d="M8.70312 21.3804H9.63846C10.1188 21.3804 10.4221 21.0705 10.4221 20.5798V9.62885C10.4221 9.13812 10.1188 8.82819 9.63846 8.82819H8.70312V6.40039H15.478C19.1182 6.40039 22 8.28581 22 11.8759C22 15.4917 19.1182 17.3772 15.478 17.3772H13.1523V20.5798C13.1523 21.0705 13.4556 21.3804 13.9612 21.3804H15.8571V23.8341H8.70312V21.3804ZM15.2757 14.846C17.6773 14.846 19.0676 13.8129 19.0676 11.9275C19.0676 9.99044 17.6773 9.00899 15.2757 9.00899H13.1523V14.8719H15.2757V14.846Z" fill="black"/>
4
+ </svg>
@@ -0,0 +1 @@
1
+ <svg fill="currentColor" fill-rule="evenodd" height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>Replicate</title><path d="M22 10.552v2.26h-7.932V22H11.54V10.552H22zM22 2v2.264H4.528V22H2V2h20zm0 4.276V8.54H9.296V22H6.768V6.276H22z"></path></svg>
@@ -0,0 +1 @@
1
+ <svg fill="#000000" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Resend</title><path d="M14.679 0c4.648 0 7.413 2.765 7.413 6.434s-2.765 6.434-7.413 6.434H12.33L24 24h-8.245l-8.88-8.44c-.636-.588-.93-1.273-.93-1.86 0-.831.587-1.565 1.713-1.883l4.574-1.224c1.737-.465 2.936-1.81 2.936-3.572 0-2.153-1.761-3.4-3.939-3.4H0V0z"/></svg>
@@ -0,0 +1,72 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 25.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 163.3 27" style="enable-background:new 0 0 163.3 27;" xml:space="preserve">
5
+ <style type="text/css">
6
+ .st0{fill:#FFFFFF;}
7
+ .st1{fill:#FFC91F;}
8
+ .st2{fill:#0F0F0E;}
9
+ </style>
10
+ <g>
11
+ <path class="st0" d="M1,8.3v10.3c0-2,0.8-3.9,2.3-5.3c1.5-1.4,3.5-2.2,5.5-2.2h7.8V8.3c0-2-0.8-3.9-2.3-5.3
12
+ c-1.5-1.4-3.5-2.2-5.5-2.2C6.7,0.8,4.7,1.6,3.3,3C1.8,4.4,1,6.3,1,8.3L1,8.3z"/>
13
+ <path class="st0" d="M8.8,26.1h10.8c2.1,0,4.1-0.8,5.5-2.2c1.5-1.4,2.3-3.3,2.3-5.3l0,0c0-2-0.8-3.9-2.3-5.3
14
+ c-1.5-1.4-3.5-2.2-5.5-2.2h-2.9v7.5c0,2-0.8,3.9-2.3,5.3C12.9,25.3,10.9,26.1,8.8,26.1L8.8,26.1z"/>
15
+ <path class="st1" d="M1,18.6c0,2,0.8,3.9,2.3,5.3c1.5,1.4,3.5,2.2,5.5,2.2l0,0c2.1,0,4.1-0.8,5.5-2.2s2.3-3.3,2.3-5.3v-7.5H8.8
16
+ c-2.1,0-4.1,0.8-5.5,2.2C1.8,14.7,1,16.6,1,18.6L1,18.6z"/>
17
+ <path class="st2" d="M19.6,10.2h-2V8.3c0-2.2-1-4.3-2.6-5.9C13.3,0.9,11.1,0,8.8,0C6.5,0,4.3,0.9,2.6,2.4C1,4,0,6.1,0,8.3v10.3
18
+ c0,2.2,0.9,4.4,2.6,5.9C4.2,26.1,6.5,27,8.8,27h10.8c2.3,0,4.5-0.9,6.1-2.5c1.6-1.6,2.5-3.7,2.5-5.9s-0.9-4.3-2.5-5.9
19
+ C24.1,11.1,21.9,10.2,19.6,10.2L19.6,10.2z M2,13.3v-5c0-1.7,0.8-3.4,2-4.6s3-1.9,4.8-1.9s3.5,0.7,4.8,1.9c1.3,1.2,2,2.8,2,4.6v1.9
20
+ H8.8c-0.2,0-0.3,0-0.5,0l-0.2,0c-0.1,0-0.2,0-0.3,0l-0.2,0c-0.1,0-0.2,0-0.3,0l-0.2,0l-0.3,0.1l-0.2,0c-0.1,0-0.2,0-0.3,0.1l-0.2,0
21
+ L6,10.6l-0.2,0c-0.1,0-0.2,0.1-0.4,0.1l-0.1,0C5.3,10.9,5.1,10.9,5,11l-0.1,0.1c-0.1,0-0.2,0.1-0.3,0.1l-0.2,0.1
22
+ c-0.1,0-0.2,0.1-0.2,0.1c-0.1,0-0.1,0.1-0.2,0.1l-0.2,0.1l-0.2,0.1c-0.1,0.1-0.1,0.1-0.2,0.2L3.3,12c-0.1,0.1-0.1,0.1-0.2,0.2
23
+ l-0.1,0.1c-0.1,0.1-0.2,0.1-0.2,0.2l-0.1,0.1c-0.1,0.1-0.2,0.2-0.3,0.3c0,0-0.1,0.1-0.1,0.1C2.1,13.1,2.1,13.2,2,13.3L2,13.3z
24
+ M2,18.6c0-1.7,0.7-3.4,2-4.6C5.2,12.7,7,12,8.8,12h6.8v6.5c0,0.9-0.2,1.7-0.5,2.5c-0.3,0.8-0.8,1.5-1.5,2.2
25
+ c-0.6,0.6-1.4,1.1-2.2,1.4c-0.8,0.3-1.7,0.5-2.6,0.5S7,25.1,6.2,24.7c-0.8-0.3-1.6-0.8-2.2-1.4c-0.6-0.6-1.1-1.4-1.5-2.2
26
+ C2.1,20.3,1.9,19.4,2,18.6L2,18.6z M19.6,25.1h-5.2l0,0c0.1-0.1,0.2-0.1,0.2-0.2c0,0,0.1-0.1,0.1-0.1c0.1-0.1,0.2-0.2,0.3-0.3
27
+ l0.1-0.1c0.1-0.1,0.1-0.1,0.2-0.2l0.1-0.1c0.1-0.1,0.1-0.1,0.2-0.2c0.1-0.1,0.1-0.1,0.1-0.1s0.1-0.1,0.2-0.2
28
+ c0.1-0.1,0.1-0.1,0.1-0.1c0-0.1,0.1-0.1,0.2-0.2l0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0,0,0.1-0.1,0.1-0.1c0.1-0.1,0.1-0.2,0.1-0.3
29
+ c0,0,0-0.1,0.1-0.1c0.1-0.1,0.1-0.3,0.2-0.4c0,0,0,0,0-0.1c0-0.1,0.1-0.2,0.1-0.3c0,0,0-0.1,0.1-0.1c0-0.1,0.1-0.2,0.1-0.3
30
+ c0-0.1,0-0.1,0-0.2c0-0.1,0.1-0.2,0.1-0.3c0-0.1,0-0.1,0-0.2c0-0.1,0-0.2,0.1-0.3c0-0.1,0-0.1,0-0.2c0-0.1,0-0.2,0-0.3
31
+ c0-0.1,0-0.1,0-0.2c0-0.1,0-0.2,0-0.3c0-0.1,0-0.1,0-0.2c0-0.2,0-0.3,0-0.5V12h2c1.8,0,3.6,0.7,4.8,1.9c1.3,1.2,2,2.9,2,4.6
32
+ s-0.7,3.4-2,4.6C23.1,24.4,21.4,25.1,19.6,25.1L19.6,25.1z"/>
33
+ <path d="M50.8,9.7l-2.3,0.7c-0.1-0.6-0.4-1.1-0.9-1.6c-0.5-0.5-1.2-0.7-2.1-0.7c-0.8,0-1.4,0.2-1.9,0.6c-0.5,0.4-0.7,0.9-0.7,1.5
34
+ c0,1,0.6,1.7,1.8,2l2.2,0.5c1.3,0.3,2.3,0.8,3.1,1.6c0.7,0.8,1.1,1.7,1.1,2.8c0,1.3-0.5,2.3-1.5,3.3c-1,0.9-2.3,1.4-3.9,1.4
35
+ c-1.8,0-3.2-0.5-4.2-1.4c-1-0.9-1.6-2-1.7-3.3l2.4-0.7c0.1,0.9,0.4,1.6,1,2.2c0.6,0.6,1.4,0.9,2.4,0.9c0.9,0,1.6-0.2,2-0.6
36
+ c0.5-0.4,0.7-0.9,0.7-1.5c0-0.5-0.2-0.9-0.5-1.3c-0.4-0.4-0.9-0.6-1.5-0.8l-2.1-0.5C43,14.5,42,14,41.3,13.3c-0.7-0.7-1-1.7-1-2.8
37
+ c0-1.3,0.5-2.4,1.5-3.3c1-0.9,2.2-1.4,3.7-1.4c1.6,0,2.9,0.4,3.7,1.2C50,7.8,50.6,8.7,50.8,9.7z M57.9,12.9c-0.8,0-1.5,0.3-2,0.9
38
+ c-0.6,0.6-0.8,1.4-0.8,2.4c0,1,0.3,1.8,0.8,2.4c0.6,0.6,1.3,0.9,2.1,0.9c0.7,0,1.3-0.2,1.7-0.6c0.4-0.4,0.7-0.9,0.9-1.4l2.2,0.8
39
+ c-0.3,0.9-0.8,1.7-1.7,2.4c-0.8,0.7-1.9,1-3.1,1c-1.5,0-2.8-0.5-3.9-1.6c-1-1.1-1.5-2.4-1.5-4c0-1.6,0.5-2.9,1.5-4
40
+ c1-1,2.3-1.6,3.8-1.6c1.3,0,2.4,0.3,3.2,1c0.8,0.7,1.4,1.5,1.6,2.4l-2.2,0.8c-0.1-0.5-0.4-1-0.8-1.4C59.2,13.1,58.6,12.9,57.9,12.9
41
+ z M71.2,10.9v2.5c-0.3,0-0.6-0.1-0.8-0.1c-1.9,0-2.8,1-2.8,3.1v5H65V10.9h2.4v1.7c0.2-0.6,0.6-1,1.2-1.3c0.5-0.3,1.2-0.5,1.8-0.5
42
+ C70.7,10.8,71,10.8,71.2,10.9z M72.7,18.5c0-0.9,0.3-1.6,0.9-2.1c0.6-0.5,1.4-0.9,2.3-1l2.7-0.4c0.5-0.1,0.8-0.3,0.8-0.8
43
+ c0-0.5-0.2-0.9-0.5-1.1c-0.3-0.3-0.8-0.5-1.5-0.5c-0.6,0-1.1,0.2-1.5,0.5c-0.4,0.3-0.6,0.8-0.6,1.4L72.9,14
44
+ c0.1-0.9,0.6-1.7,1.4-2.4c0.8-0.7,1.8-1,3.1-1c1.5,0,2.6,0.4,3.4,1.1c0.7,0.7,1.1,1.7,1.1,2.8v5.2c0,0.7,0,1.2,0.1,1.7h-2.3
45
+ c-0.1-0.2-0.1-0.7-0.1-1.3c-0.7,1.1-1.8,1.7-3.2,1.7c-1.1,0-1.9-0.3-2.6-0.9C73,20.1,72.7,19.4,72.7,18.5z M76.7,19.7
46
+ c0.8,0,1.4-0.2,1.9-0.6c0.5-0.4,0.7-1.1,0.7-2.1v-0.5L76.6,17c-0.9,0.2-1.4,0.6-1.4,1.4c0,0.4,0.1,0.7,0.4,1
47
+ C75.9,19.6,76.2,19.7,76.7,19.7z M87.3,25.5h-2.5V10.9h2.4v1.4c0.3-0.5,0.7-0.9,1.3-1.2c0.6-0.3,1.3-0.5,2-0.5
48
+ c1.5,0,2.7,0.5,3.5,1.5c0.9,1,1.3,2.3,1.3,3.9s-0.5,2.9-1.4,4c-0.9,1-2.1,1.5-3.6,1.5c-0.7,0-1.4-0.1-1.9-0.4c-0.6-0.3-1-0.6-1.3-1
49
+ V25.5z M92.9,16.1c0-1-0.3-1.8-0.8-2.3c-0.5-0.6-1.2-0.9-2-0.9c-0.8,0-1.5,0.3-2,0.9c-0.5,0.6-0.8,1.4-0.8,2.3c0,1,0.3,1.8,0.8,2.4
50
+ c0.5,0.6,1.2,0.9,2,0.9s1.5-0.3,2-0.9C92.7,17.9,92.9,17.1,92.9,16.1z M100.4,21.4h-2.5V10.9h2.5V21.4z M98,8.4
51
+ c-0.3-0.3-0.5-0.7-0.5-1.1c0-0.4,0.2-0.8,0.5-1.1c0.3-0.3,0.7-0.5,1.1-0.5c0.5,0,0.8,0.2,1.2,0.5c0.3,0.3,0.5,0.7,0.5,1.2
52
+ c0,0.4-0.2,0.8-0.5,1.1c-0.3,0.3-0.7,0.5-1.2,0.5C98.7,8.9,98.3,8.7,98,8.4z M106.2,15.3v6h-2.5V10.9h2.4v1.4
53
+ c0.3-0.6,0.8-1,1.3-1.3c0.6-0.3,1.2-0.4,1.8-0.4c1.2,0,2.2,0.4,2.8,1.2c0.6,0.8,1,1.8,1,3v6.6h-2.5v-6.2c0-0.7-0.2-1.3-0.5-1.7
54
+ c-0.3-0.4-0.9-0.6-1.6-0.6c-0.7,0-1.2,0.2-1.6,0.7C106.3,14,106.2,14.6,106.2,15.3z M115.3,22l2.3-0.6c0.1,0.7,0.4,1.2,0.8,1.6
55
+ c0.5,0.4,1.1,0.6,1.8,0.6c2,0,3-1,3-3.1v-1.1c-0.2,0.4-0.6,0.8-1.2,1.1c-0.5,0.3-1.2,0.4-1.9,0.4c-1.4,0-2.6-0.5-3.5-1.4
56
+ c-0.9-1-1.4-2.2-1.4-3.7c0-1.4,0.5-2.6,1.4-3.6c0.9-1,2.1-1.5,3.5-1.5c1.5,0,2.6,0.5,3.1,1.5v-1.3h2.4v9.5c0,1.5-0.4,2.8-1.3,3.8
57
+ c-0.9,1-2.2,1.5-4.1,1.5c-1.3,0-2.5-0.4-3.4-1.1C116,24,115.5,23,115.3,22z M120.6,18.8c0.8,0,1.4-0.3,1.9-0.8
58
+ c0.5-0.5,0.8-1.3,0.8-2.2c0-0.9-0.2-1.6-0.8-2.1c-0.5-0.5-1.1-0.8-1.9-0.8c-0.8,0-1.5,0.3-2,0.8c-0.5,0.5-0.8,1.2-0.8,2.1
59
+ c0,0.9,0.3,1.6,0.8,2.2C119.1,18.5,119.8,18.8,120.6,18.8z M129,6.1h5.2c1.4,0,2.6,0.4,3.4,1.1c0.8,0.8,1.2,1.7,1.2,3
60
+ c0,0.8-0.2,1.5-0.6,2.1c-0.4,0.6-1,1-1.6,1.2c0.8,0.2,1.5,0.7,2,1.3c0.5,0.7,0.8,1.4,0.8,2.3c0,1.2-0.4,2.2-1.3,3
61
+ c-0.9,0.8-2,1.2-3.4,1.2H129V6.1z M131.6,12.6h2.3c0.7,0,1.3-0.2,1.8-0.6c0.4-0.4,0.6-0.9,0.6-1.5c0-0.7-0.2-1.2-0.7-1.5
62
+ c-0.4-0.4-1-0.6-1.8-0.6h-2.3V12.6z M131.6,19.2h2.6c0.8,0,1.4-0.2,1.8-0.6c0.5-0.4,0.7-0.9,0.7-1.6c0-0.7-0.2-1.2-0.7-1.6
63
+ c-0.4-0.4-1-0.6-1.8-0.6h-2.7V19.2z M143.8,15h5.1c0-0.7-0.3-1.2-0.7-1.7c-0.4-0.4-1.1-0.7-1.9-0.7c-0.7,0-1.3,0.2-1.8,0.7
64
+ C144.1,13.8,143.8,14.4,143.8,15z M149.2,17.7l2.1,0.7c-0.3,1-0.9,1.8-1.7,2.4c-0.8,0.6-1.8,0.9-3,0.9c-1.5,0-2.8-0.5-3.8-1.5
65
+ c-1-1-1.5-2.4-1.5-4.1c0-1.6,0.5-2.9,1.5-4c1-1,2.2-1.5,3.6-1.5c1.6,0,2.9,0.5,3.8,1.5c0.9,1,1.4,2.3,1.4,4c0,0.4,0,0.7-0.1,0.8
66
+ h-7.6c0,0.8,0.3,1.4,0.9,2c0.6,0.5,1.2,0.8,2,0.8C147.9,19.6,148.8,18.9,149.2,17.7z M155.6,15h5.1c0-0.7-0.3-1.2-0.7-1.7
67
+ c-0.4-0.4-1.1-0.7-1.9-0.7c-0.7,0-1.3,0.2-1.8,0.7C155.9,13.8,155.7,14.4,155.6,15z M161,17.7l2.1,0.7c-0.3,1-0.9,1.8-1.7,2.4
68
+ c-0.8,0.6-1.8,0.9-3,0.9c-1.5,0-2.8-0.5-3.8-1.5c-1-1-1.5-2.4-1.5-4.1c0-1.6,0.5-2.9,1.5-4c1-1,2.2-1.5,3.6-1.5
69
+ c1.6,0,2.9,0.5,3.8,1.5c0.9,1,1.4,2.3,1.4,4c0,0.4,0,0.7-0.1,0.8h-7.6c0,0.8,0.3,1.4,0.9,2c0.6,0.5,1.2,0.8,2,0.8
70
+ C159.8,19.6,160.6,18.9,161,17.7z"/>
71
+ </g>
72
+ </svg>
@@ -0,0 +1 @@
1
+ <svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>SendGrid</title><path d="M.8 24h13.6c.88 0 1.6-.72 1.6-1.6v-4.8c0-.88-.72-1.6-1.6-1.6H9.6c-.88 0-1.6-.72-1.6-1.6V9.6C8 8.72 7.28 8 6.4 8H1.6C.72 8 0 8.72 0 9.6v13.6c0 .44.36.8.8.8zM23.2 0H9.6C8.72 0 8 .72 8 1.6v4.8C8 7.28 8.72 8 9.6 8h4.8c.88 0 1.6.72 1.6 1.6v4.8c0 .88.72 1.6 1.6 1.6h4.8c.88 0 1.6-.72 1.6-1.6V.8c0-.44-.36-.8-.8-.8Z"/></svg>
Binary file
@@ -0,0 +1 @@
1
+ <svg fill="#3FCF8E" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Supabase</title><path d="M11.9 1.036c-.015-.986-1.26-1.41-1.874-.637L.764 12.05C-.33 13.427.65 15.455 2.409 15.455h9.579l.113 7.51c.014.985 1.259 1.408 1.873.636l9.262-11.653c1.093-1.375.113-3.403-1.645-3.403h-9.642z"/></svg>
@@ -0,0 +1 @@
1
+ <svg fill="currentColor" fill-rule="evenodd" height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>Tavily</title><path d="M8.033 14.273a1.612 1.612 0 011.139.47l.04.042.044.043a1.61 1.61 0 010 2.277l-3.073 3.073.816.816c.6.6.303 1.627-.525 1.814l-5.159 1.165a1.07 1.07 0 01-.897-.2l-.102-.09a1.07 1.07 0 01-.289-1l1.164-5.158A1.079 1.079 0 013.006 17l.816.817 3.074-3.074a1.612 1.612 0 011.137-.47zM17.042 13.246c0-.85.935-1.366 1.653-.912l4.47 2.824c.336.212.503.562.503.911 0 .35-.167.7-.501.913l-4.472 2.824a1.079 1.079 0 01-1.654-.912v-1.155h-7.027c.37-.4.605-.902.677-1.438l.022-.232a2.65 2.65 0 00-.492-1.669h6.821v-1.154zM8.188 0c.35 0 .7.168.913.503l2.823 4.47a1.079 1.079 0 01-.911 1.655H9.857v6.692h-1.67a2.633 2.633 0 00-1.668.48V6.629H5.365c-.849 0-1.366-.936-.912-1.654L7.276.503A1.072 1.072 0 018.188 0z"></path></svg>
@@ -0,0 +1 @@
1
+ <svg fill="currentColor" fill-rule="evenodd" height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>together.ai</title><path d="M23.197 4.503A6 6 0 0015 2.307a5.973 5.973 0 00-2.995 4.933l5.996.008v.515h-5.996c.039.937.298 1.87.8 2.74a6 6 0 1010.39-6z"></path><path d="M.805 4.5A6 6 0 003 12.697a5.972 5.972 0 005.77.127L5.779 7.627l.446-.257 2.997 5.192A6 6 0 10.804 4.5z"></path><path d="M12 23.894a6 6 0 005.999-6c0-2.13-1.1-3.996-2.775-5.06l-3.005 5.189-.444-.258 2.997-5.192A6 6 0 1012 23.894z"></path></svg>
@@ -0,0 +1 @@
1
+ <svg fill="#4FF8D2" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Turso</title><path d="m23.31.803-.563-.42-1.11 1.189-.891-1.286-.512.235.704 1.798-.326.35L18.082 0l-.574.284 2.25 4.836-2.108.741h-.05l-1.143-1.359-1.144 1.36H8.687l-1.144-1.36-1.146 1.363H6.36l-2.12-.745L6.491.284 5.919 0l-2.53 2.668-.327-.349.705-1.798-.512-.236-.89 1.287L1.253.382.69.804 2.42 3.69l-.89.939.311 2.375 2.061.787L3.9 8.817H1.947v.444l.755 1.078 1.197.433v6.971l3.057 4.55L7.657 24l1.101-1.606L9.9 24l.999-1.606L12 24l1.102-1.606L14.1 24l1.141-1.606L16.343 24l.701-1.706 3.058-4.55v-6.972l1.196-.433.756-1.078v-.444h-1.952l.003-1.03 2.054-.784.311-2.375-.89-.939zm-8.93 18.718H8.033l.793-1.615.794 1.615.793-1.083.793 1.083.794-1.083.793 1.083.794-1.083.793 1.083.793-1.615.794 1.615zm3.886-7.39-3.3 1.084-.143 3.061-2.827.627-2.826-.627-.142-3.06-3.3-1.085v-1.635l4.266 1.21-.052 4.126h4.109l-.052-4.127 4.266-1.209z"/></svg>
@@ -0,0 +1 @@
1
+ <svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Twilio</title><path d="M12 0C5.381-.008.008 5.352 0 11.971V12c0 6.64 5.359 12 12 12 6.64 0 12-5.36 12-12 0-6.641-5.36-12-12-12zm0 20.801c-4.846.015-8.786-3.904-8.801-8.75V12c-.014-4.846 3.904-8.786 8.75-8.801H12c4.847-.014 8.786 3.904 8.801 8.75V12c.015 4.847-3.904 8.786-8.75 8.801H12zm5.44-11.76c0 1.359-1.12 2.479-2.481 2.479-1.366-.007-2.472-1.113-2.479-2.479 0-1.361 1.12-2.481 2.479-2.481 1.361 0 2.481 1.12 2.481 2.481zm0 5.919c0 1.36-1.12 2.48-2.481 2.48-1.367-.008-2.473-1.114-2.479-2.48 0-1.359 1.12-2.479 2.479-2.479 1.361-.001 2.481 1.12 2.481 2.479zm-5.919 0c0 1.36-1.12 2.48-2.479 2.48-1.368-.007-2.475-1.113-2.481-2.48 0-1.359 1.12-2.479 2.481-2.479 1.358-.001 2.479 1.12 2.479 2.479zm0-5.919c0 1.359-1.12 2.479-2.479 2.479-1.367-.007-2.475-1.112-2.481-2.479 0-1.361 1.12-2.481 2.481-2.481 1.358 0 2.479 1.12 2.479 2.481z"/></svg>
@@ -0,0 +1 @@
1
+ <svg fill="#00E9A3" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Upstash</title><path d="M13.8027 0C11.193 0 8.583.9952 6.5918 2.9863c-3.9823 3.9823-3.9823 10.4396 0 14.4219 1.9911 1.9911 5.2198 1.9911 7.211 0 1.991-1.9911 1.991-5.2198 0-7.211L12 12c.9956.9956.9956 2.6098 0 3.6055-.9956.9955-2.6099.9955-3.6055 0-2.9866-2.9868-2.9866-7.8297 0-10.8164 2.9868-2.9868 7.8297-2.9868 10.8164 0l1.8028-1.8028C19.0225.9952 16.4125 0 13.8027 0zM12 12c-.9956-.9956-.9956-2.6098 0-3.6055.9956-.9955 2.6098-.9955 3.6055 0 2.9867 2.9868 2.9867 7.8297 0 10.8164-2.9867 2.9868-7.8297 2.9868-10.8164 0l-1.8028 1.8028c3.9823 3.9822 10.4396 3.9822 14.4219 0 3.9823-3.9824 3.9823-10.4396 0-14.4219-.9956-.9956-2.3006-1.4922-3.6055-1.4922-1.3048 0-2.6099.4966-3.6054 1.4922-1.9912 1.9912-1.9912 5.2198 0 7.211z"/></svg>
@@ -0,0 +1,20 @@
1
+ /** Abuse caps (see SECURITY.md): unbounded creation grows the SQLite file. */
2
+ export const MAX_POOLS = 1000;
3
+ export const MAX_KEYS_PER_POOL = 100;
4
+ export const MAX_API_KEY_CHARS = 4096;
5
+ /** Match /api/pools/:id[/next|/consume|/usage|/proxy] (never /keys). */
6
+ export function matchPoolRoute(pathname) {
7
+ if (pathname.includes("/keys"))
8
+ return null;
9
+ const m = pathname.match(/^\/api\/pools\/(\d+)(\/next|\/consume|\/usage|\/proxy)?$/);
10
+ if (!m)
11
+ return null;
12
+ return { poolId: Number(m[1]), sub: (m[2] ?? "") };
13
+ }
14
+ /** Match /api/pools/:id/keys[/:keyId]. */
15
+ export function matchKeyRoute(pathname) {
16
+ const m = pathname.match(/^\/api\/pools\/(\d+)\/keys(?:\/(\d+))?$/);
17
+ if (!m)
18
+ return null;
19
+ return { poolId: Number(m[1]), keyId: m[2] === undefined ? null : Number(m[2]) };
20
+ }