birdclaw 0.5.1 → 0.7.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.
- package/CHANGELOG.md +92 -1
- package/README.md +75 -5
- package/package.json +8 -2
- package/scripts/browser-perf.mjs +1 -0
- package/scripts/start-test-server.mjs +16 -3
- package/src/cli.ts +812 -37
- package/src/components/AccountSwitcher.tsx +186 -0
- package/src/components/AppNav.tsx +37 -7
- package/src/components/AvatarChip.tsx +9 -3
- package/src/components/DmWorkspace.tsx +18 -8
- package/src/components/LinkPreviewCard.tsx +40 -18
- package/src/components/MarkdownViewer.tsx +818 -0
- package/src/components/ProfileAnalysisStream.tsx +428 -0
- package/src/components/ProfilePreview.tsx +120 -9
- package/src/components/SavedTimelineView.tsx +30 -8
- package/src/components/SyncNowButton.tsx +60 -25
- package/src/components/ThemeSlider.tsx +55 -50
- package/src/components/TimelineCard.tsx +240 -92
- package/src/components/TimelineRouteFrame.tsx +38 -8
- package/src/components/TweetMediaGrid.tsx +87 -38
- package/src/components/TweetRichText.tsx +45 -17
- package/src/components/account-selection.ts +64 -0
- package/src/components/useTimelineRouteData.ts +97 -13
- package/src/lib/account-sync-job.ts +666 -0
- package/src/lib/actions-transport.ts +216 -146
- package/src/lib/api-client.ts +128 -53
- package/src/lib/archive-finder.ts +78 -63
- package/src/lib/archive-import.ts +1593 -1291
- package/src/lib/authored-live.ts +262 -204
- package/src/lib/avatar-cache.ts +208 -43
- package/src/lib/backup.ts +1536 -954
- package/src/lib/bird-actions.ts +139 -57
- package/src/lib/bird-command.ts +101 -28
- package/src/lib/bird.ts +582 -194
- package/src/lib/blocklist.ts +40 -23
- package/src/lib/blocks-write.ts +129 -80
- package/src/lib/blocks.ts +165 -97
- package/src/lib/bookmark-sync-job.ts +250 -160
- package/src/lib/config.ts +35 -2
- package/src/lib/conversation-surface.ts +79 -48
- package/src/lib/data-sources.ts +219 -0
- package/src/lib/db.ts +95 -4
- package/src/lib/dms-live.ts +720 -66
- package/src/lib/effect-runtime.ts +45 -0
- package/src/lib/follow-graph.ts +224 -180
- package/src/lib/geocoding.ts +296 -0
- package/src/lib/http-effect.ts +222 -0
- package/src/lib/inbox.ts +74 -43
- package/src/lib/link-index.ts +88 -76
- package/src/lib/link-insights.ts +24 -0
- package/src/lib/link-preview-metadata.ts +472 -52
- package/src/lib/location.ts +137 -0
- package/src/lib/media-fetch.ts +286 -213
- package/src/lib/mention-threads-live.ts +445 -288
- package/src/lib/mentions-live.ts +549 -354
- package/src/lib/moderation-target.ts +102 -65
- package/src/lib/moderation-write.ts +77 -18
- package/src/lib/mutes-write.ts +129 -80
- package/src/lib/mutes.ts +8 -1
- package/src/lib/network-map.ts +382 -0
- package/src/lib/openai.ts +84 -53
- package/src/lib/period-digest.ts +1317 -0
- package/src/lib/profile-affiliation-hydration.ts +93 -54
- package/src/lib/profile-analysis.ts +1272 -0
- package/src/lib/profile-bio-entities.ts +1 -1
- package/src/lib/profile-hydration.ts +124 -72
- package/src/lib/profile-replies.ts +60 -43
- package/src/lib/profile-resolver.ts +402 -294
- package/src/lib/queries.ts +983 -203
- package/src/lib/research.ts +165 -120
- package/src/lib/search-discussion.ts +1016 -0
- package/src/lib/sqlite.ts +1 -0
- package/src/lib/timeline-collections-live.ts +204 -167
- package/src/lib/timeline-live.ts +325 -51
- package/src/lib/tweet-account-edges.ts +2 -0
- package/src/lib/tweet-lookup.ts +30 -19
- package/src/lib/tweet-render.ts +141 -1
- package/src/lib/tweet-search-live.ts +565 -0
- package/src/lib/types.ts +75 -3
- package/src/lib/ui.ts +31 -8
- package/src/lib/url-expansion.ts +226 -55
- package/src/lib/url-safety.ts +220 -0
- package/src/lib/web-sync.ts +222 -149
- package/src/lib/whois.ts +166 -147
- package/src/lib/x-web.ts +102 -71
- package/src/lib/xurl-rate-limits.ts +267 -0
- package/src/lib/xurl.ts +1185 -405
- package/src/routeTree.gen.ts +273 -0
- package/src/routes/__root.tsx +24 -5
- package/src/routes/api/action.tsx +127 -78
- package/src/routes/api/avatar.tsx +39 -30
- package/src/routes/api/blocks.tsx +26 -23
- package/src/routes/api/conversation.tsx +25 -14
- package/src/routes/api/data-sources.tsx +24 -0
- package/src/routes/api/inbox.tsx +27 -21
- package/src/routes/api/link-insights.tsx +31 -25
- package/src/routes/api/link-preview.tsx +25 -21
- package/src/routes/api/network-map.tsx +55 -0
- package/src/routes/api/period-digest.tsx +133 -0
- package/src/routes/api/profile-analysis.tsx +152 -0
- package/src/routes/api/profile-hydrate.tsx +31 -28
- package/src/routes/api/query.tsx +80 -55
- package/src/routes/api/search-discussion.tsx +169 -0
- package/src/routes/api/status.tsx +18 -10
- package/src/routes/api/sync.tsx +75 -29
- package/src/routes/api/xurl-rate-limits.tsx +24 -0
- package/src/routes/data-sources.tsx +255 -0
- package/src/routes/discuss.tsx +419 -0
- package/src/routes/dms.tsx +95 -28
- package/src/routes/inbox.tsx +32 -19
- package/src/routes/network-map.tsx +1035 -0
- package/src/routes/profile-analyze.tsx +112 -0
- package/src/routes/profiles.$handle.tsx +228 -0
- package/src/routes/rate-limits.tsx +309 -0
- package/src/routes/today.tsx +455 -0
- package/src/styles.css +22 -0
package/src/routeTree.gen.ts
CHANGED
|
@@ -9,26 +9,59 @@
|
|
|
9
9
|
// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.
|
|
10
10
|
|
|
11
11
|
import { Route as rootRouteImport } from './routes/__root'
|
|
12
|
+
import { Route as TodayRouteImport } from './routes/today'
|
|
13
|
+
import { Route as RateLimitsRouteImport } from './routes/rate-limits'
|
|
14
|
+
import { Route as ProfileAnalyzeRouteImport } from './routes/profile-analyze'
|
|
15
|
+
import { Route as NetworkMapRouteImport } from './routes/network-map'
|
|
12
16
|
import { Route as MentionsRouteImport } from './routes/mentions'
|
|
13
17
|
import { Route as LinksRouteImport } from './routes/links'
|
|
14
18
|
import { Route as LikesRouteImport } from './routes/likes'
|
|
15
19
|
import { Route as InboxRouteImport } from './routes/inbox'
|
|
16
20
|
import { Route as DmsRouteImport } from './routes/dms'
|
|
21
|
+
import { Route as DiscussRouteImport } from './routes/discuss'
|
|
22
|
+
import { Route as DataSourcesRouteImport } from './routes/data-sources'
|
|
17
23
|
import { Route as BookmarksRouteImport } from './routes/bookmarks'
|
|
18
24
|
import { Route as BlocksRouteImport } from './routes/blocks'
|
|
19
25
|
import { Route as IndexRouteImport } from './routes/index'
|
|
26
|
+
import { Route as ProfilesHandleRouteImport } from './routes/profiles.$handle'
|
|
27
|
+
import { Route as ApiXurlRateLimitsRouteImport } from './routes/api/xurl-rate-limits'
|
|
20
28
|
import { Route as ApiSyncRouteImport } from './routes/api/sync'
|
|
21
29
|
import { Route as ApiStatusRouteImport } from './routes/api/status'
|
|
30
|
+
import { Route as ApiSearchDiscussionRouteImport } from './routes/api/search-discussion'
|
|
22
31
|
import { Route as ApiQueryRouteImport } from './routes/api/query'
|
|
23
32
|
import { Route as ApiProfileHydrateRouteImport } from './routes/api/profile-hydrate'
|
|
33
|
+
import { Route as ApiProfileAnalysisRouteImport } from './routes/api/profile-analysis'
|
|
34
|
+
import { Route as ApiPeriodDigestRouteImport } from './routes/api/period-digest'
|
|
35
|
+
import { Route as ApiNetworkMapRouteImport } from './routes/api/network-map'
|
|
24
36
|
import { Route as ApiLinkPreviewRouteImport } from './routes/api/link-preview'
|
|
25
37
|
import { Route as ApiLinkInsightsRouteImport } from './routes/api/link-insights'
|
|
26
38
|
import { Route as ApiInboxRouteImport } from './routes/api/inbox'
|
|
39
|
+
import { Route as ApiDataSourcesRouteImport } from './routes/api/data-sources'
|
|
27
40
|
import { Route as ApiConversationRouteImport } from './routes/api/conversation'
|
|
28
41
|
import { Route as ApiBlocksRouteImport } from './routes/api/blocks'
|
|
29
42
|
import { Route as ApiAvatarRouteImport } from './routes/api/avatar'
|
|
30
43
|
import { Route as ApiActionRouteImport } from './routes/api/action'
|
|
31
44
|
|
|
45
|
+
const TodayRoute = TodayRouteImport.update({
|
|
46
|
+
id: '/today',
|
|
47
|
+
path: '/today',
|
|
48
|
+
getParentRoute: () => rootRouteImport,
|
|
49
|
+
} as any)
|
|
50
|
+
const RateLimitsRoute = RateLimitsRouteImport.update({
|
|
51
|
+
id: '/rate-limits',
|
|
52
|
+
path: '/rate-limits',
|
|
53
|
+
getParentRoute: () => rootRouteImport,
|
|
54
|
+
} as any)
|
|
55
|
+
const ProfileAnalyzeRoute = ProfileAnalyzeRouteImport.update({
|
|
56
|
+
id: '/profile-analyze',
|
|
57
|
+
path: '/profile-analyze',
|
|
58
|
+
getParentRoute: () => rootRouteImport,
|
|
59
|
+
} as any)
|
|
60
|
+
const NetworkMapRoute = NetworkMapRouteImport.update({
|
|
61
|
+
id: '/network-map',
|
|
62
|
+
path: '/network-map',
|
|
63
|
+
getParentRoute: () => rootRouteImport,
|
|
64
|
+
} as any)
|
|
32
65
|
const MentionsRoute = MentionsRouteImport.update({
|
|
33
66
|
id: '/mentions',
|
|
34
67
|
path: '/mentions',
|
|
@@ -54,6 +87,16 @@ const DmsRoute = DmsRouteImport.update({
|
|
|
54
87
|
path: '/dms',
|
|
55
88
|
getParentRoute: () => rootRouteImport,
|
|
56
89
|
} as any)
|
|
90
|
+
const DiscussRoute = DiscussRouteImport.update({
|
|
91
|
+
id: '/discuss',
|
|
92
|
+
path: '/discuss',
|
|
93
|
+
getParentRoute: () => rootRouteImport,
|
|
94
|
+
} as any)
|
|
95
|
+
const DataSourcesRoute = DataSourcesRouteImport.update({
|
|
96
|
+
id: '/data-sources',
|
|
97
|
+
path: '/data-sources',
|
|
98
|
+
getParentRoute: () => rootRouteImport,
|
|
99
|
+
} as any)
|
|
57
100
|
const BookmarksRoute = BookmarksRouteImport.update({
|
|
58
101
|
id: '/bookmarks',
|
|
59
102
|
path: '/bookmarks',
|
|
@@ -69,6 +112,16 @@ const IndexRoute = IndexRouteImport.update({
|
|
|
69
112
|
path: '/',
|
|
70
113
|
getParentRoute: () => rootRouteImport,
|
|
71
114
|
} as any)
|
|
115
|
+
const ProfilesHandleRoute = ProfilesHandleRouteImport.update({
|
|
116
|
+
id: '/profiles/$handle',
|
|
117
|
+
path: '/profiles/$handle',
|
|
118
|
+
getParentRoute: () => rootRouteImport,
|
|
119
|
+
} as any)
|
|
120
|
+
const ApiXurlRateLimitsRoute = ApiXurlRateLimitsRouteImport.update({
|
|
121
|
+
id: '/api/xurl-rate-limits',
|
|
122
|
+
path: '/api/xurl-rate-limits',
|
|
123
|
+
getParentRoute: () => rootRouteImport,
|
|
124
|
+
} as any)
|
|
72
125
|
const ApiSyncRoute = ApiSyncRouteImport.update({
|
|
73
126
|
id: '/api/sync',
|
|
74
127
|
path: '/api/sync',
|
|
@@ -79,6 +132,11 @@ const ApiStatusRoute = ApiStatusRouteImport.update({
|
|
|
79
132
|
path: '/api/status',
|
|
80
133
|
getParentRoute: () => rootRouteImport,
|
|
81
134
|
} as any)
|
|
135
|
+
const ApiSearchDiscussionRoute = ApiSearchDiscussionRouteImport.update({
|
|
136
|
+
id: '/api/search-discussion',
|
|
137
|
+
path: '/api/search-discussion',
|
|
138
|
+
getParentRoute: () => rootRouteImport,
|
|
139
|
+
} as any)
|
|
82
140
|
const ApiQueryRoute = ApiQueryRouteImport.update({
|
|
83
141
|
id: '/api/query',
|
|
84
142
|
path: '/api/query',
|
|
@@ -89,6 +147,21 @@ const ApiProfileHydrateRoute = ApiProfileHydrateRouteImport.update({
|
|
|
89
147
|
path: '/api/profile-hydrate',
|
|
90
148
|
getParentRoute: () => rootRouteImport,
|
|
91
149
|
} as any)
|
|
150
|
+
const ApiProfileAnalysisRoute = ApiProfileAnalysisRouteImport.update({
|
|
151
|
+
id: '/api/profile-analysis',
|
|
152
|
+
path: '/api/profile-analysis',
|
|
153
|
+
getParentRoute: () => rootRouteImport,
|
|
154
|
+
} as any)
|
|
155
|
+
const ApiPeriodDigestRoute = ApiPeriodDigestRouteImport.update({
|
|
156
|
+
id: '/api/period-digest',
|
|
157
|
+
path: '/api/period-digest',
|
|
158
|
+
getParentRoute: () => rootRouteImport,
|
|
159
|
+
} as any)
|
|
160
|
+
const ApiNetworkMapRoute = ApiNetworkMapRouteImport.update({
|
|
161
|
+
id: '/api/network-map',
|
|
162
|
+
path: '/api/network-map',
|
|
163
|
+
getParentRoute: () => rootRouteImport,
|
|
164
|
+
} as any)
|
|
92
165
|
const ApiLinkPreviewRoute = ApiLinkPreviewRouteImport.update({
|
|
93
166
|
id: '/api/link-preview',
|
|
94
167
|
path: '/api/link-preview',
|
|
@@ -104,6 +177,11 @@ const ApiInboxRoute = ApiInboxRouteImport.update({
|
|
|
104
177
|
path: '/api/inbox',
|
|
105
178
|
getParentRoute: () => rootRouteImport,
|
|
106
179
|
} as any)
|
|
180
|
+
const ApiDataSourcesRoute = ApiDataSourcesRouteImport.update({
|
|
181
|
+
id: '/api/data-sources',
|
|
182
|
+
path: '/api/data-sources',
|
|
183
|
+
getParentRoute: () => rootRouteImport,
|
|
184
|
+
} as any)
|
|
107
185
|
const ApiConversationRoute = ApiConversationRouteImport.update({
|
|
108
186
|
id: '/api/conversation',
|
|
109
187
|
path: '/api/conversation',
|
|
@@ -129,65 +207,104 @@ export interface FileRoutesByFullPath {
|
|
|
129
207
|
'/': typeof IndexRoute
|
|
130
208
|
'/blocks': typeof BlocksRoute
|
|
131
209
|
'/bookmarks': typeof BookmarksRoute
|
|
210
|
+
'/data-sources': typeof DataSourcesRoute
|
|
211
|
+
'/discuss': typeof DiscussRoute
|
|
132
212
|
'/dms': typeof DmsRoute
|
|
133
213
|
'/inbox': typeof InboxRoute
|
|
134
214
|
'/likes': typeof LikesRoute
|
|
135
215
|
'/links': typeof LinksRoute
|
|
136
216
|
'/mentions': typeof MentionsRoute
|
|
217
|
+
'/network-map': typeof NetworkMapRoute
|
|
218
|
+
'/profile-analyze': typeof ProfileAnalyzeRoute
|
|
219
|
+
'/rate-limits': typeof RateLimitsRoute
|
|
220
|
+
'/today': typeof TodayRoute
|
|
137
221
|
'/api/action': typeof ApiActionRoute
|
|
138
222
|
'/api/avatar': typeof ApiAvatarRoute
|
|
139
223
|
'/api/blocks': typeof ApiBlocksRoute
|
|
140
224
|
'/api/conversation': typeof ApiConversationRoute
|
|
225
|
+
'/api/data-sources': typeof ApiDataSourcesRoute
|
|
141
226
|
'/api/inbox': typeof ApiInboxRoute
|
|
142
227
|
'/api/link-insights': typeof ApiLinkInsightsRoute
|
|
143
228
|
'/api/link-preview': typeof ApiLinkPreviewRoute
|
|
229
|
+
'/api/network-map': typeof ApiNetworkMapRoute
|
|
230
|
+
'/api/period-digest': typeof ApiPeriodDigestRoute
|
|
231
|
+
'/api/profile-analysis': typeof ApiProfileAnalysisRoute
|
|
144
232
|
'/api/profile-hydrate': typeof ApiProfileHydrateRoute
|
|
145
233
|
'/api/query': typeof ApiQueryRoute
|
|
234
|
+
'/api/search-discussion': typeof ApiSearchDiscussionRoute
|
|
146
235
|
'/api/status': typeof ApiStatusRoute
|
|
147
236
|
'/api/sync': typeof ApiSyncRoute
|
|
237
|
+
'/api/xurl-rate-limits': typeof ApiXurlRateLimitsRoute
|
|
238
|
+
'/profiles/$handle': typeof ProfilesHandleRoute
|
|
148
239
|
}
|
|
149
240
|
export interface FileRoutesByTo {
|
|
150
241
|
'/': typeof IndexRoute
|
|
151
242
|
'/blocks': typeof BlocksRoute
|
|
152
243
|
'/bookmarks': typeof BookmarksRoute
|
|
244
|
+
'/data-sources': typeof DataSourcesRoute
|
|
245
|
+
'/discuss': typeof DiscussRoute
|
|
153
246
|
'/dms': typeof DmsRoute
|
|
154
247
|
'/inbox': typeof InboxRoute
|
|
155
248
|
'/likes': typeof LikesRoute
|
|
156
249
|
'/links': typeof LinksRoute
|
|
157
250
|
'/mentions': typeof MentionsRoute
|
|
251
|
+
'/network-map': typeof NetworkMapRoute
|
|
252
|
+
'/profile-analyze': typeof ProfileAnalyzeRoute
|
|
253
|
+
'/rate-limits': typeof RateLimitsRoute
|
|
254
|
+
'/today': typeof TodayRoute
|
|
158
255
|
'/api/action': typeof ApiActionRoute
|
|
159
256
|
'/api/avatar': typeof ApiAvatarRoute
|
|
160
257
|
'/api/blocks': typeof ApiBlocksRoute
|
|
161
258
|
'/api/conversation': typeof ApiConversationRoute
|
|
259
|
+
'/api/data-sources': typeof ApiDataSourcesRoute
|
|
162
260
|
'/api/inbox': typeof ApiInboxRoute
|
|
163
261
|
'/api/link-insights': typeof ApiLinkInsightsRoute
|
|
164
262
|
'/api/link-preview': typeof ApiLinkPreviewRoute
|
|
263
|
+
'/api/network-map': typeof ApiNetworkMapRoute
|
|
264
|
+
'/api/period-digest': typeof ApiPeriodDigestRoute
|
|
265
|
+
'/api/profile-analysis': typeof ApiProfileAnalysisRoute
|
|
165
266
|
'/api/profile-hydrate': typeof ApiProfileHydrateRoute
|
|
166
267
|
'/api/query': typeof ApiQueryRoute
|
|
268
|
+
'/api/search-discussion': typeof ApiSearchDiscussionRoute
|
|
167
269
|
'/api/status': typeof ApiStatusRoute
|
|
168
270
|
'/api/sync': typeof ApiSyncRoute
|
|
271
|
+
'/api/xurl-rate-limits': typeof ApiXurlRateLimitsRoute
|
|
272
|
+
'/profiles/$handle': typeof ProfilesHandleRoute
|
|
169
273
|
}
|
|
170
274
|
export interface FileRoutesById {
|
|
171
275
|
__root__: typeof rootRouteImport
|
|
172
276
|
'/': typeof IndexRoute
|
|
173
277
|
'/blocks': typeof BlocksRoute
|
|
174
278
|
'/bookmarks': typeof BookmarksRoute
|
|
279
|
+
'/data-sources': typeof DataSourcesRoute
|
|
280
|
+
'/discuss': typeof DiscussRoute
|
|
175
281
|
'/dms': typeof DmsRoute
|
|
176
282
|
'/inbox': typeof InboxRoute
|
|
177
283
|
'/likes': typeof LikesRoute
|
|
178
284
|
'/links': typeof LinksRoute
|
|
179
285
|
'/mentions': typeof MentionsRoute
|
|
286
|
+
'/network-map': typeof NetworkMapRoute
|
|
287
|
+
'/profile-analyze': typeof ProfileAnalyzeRoute
|
|
288
|
+
'/rate-limits': typeof RateLimitsRoute
|
|
289
|
+
'/today': typeof TodayRoute
|
|
180
290
|
'/api/action': typeof ApiActionRoute
|
|
181
291
|
'/api/avatar': typeof ApiAvatarRoute
|
|
182
292
|
'/api/blocks': typeof ApiBlocksRoute
|
|
183
293
|
'/api/conversation': typeof ApiConversationRoute
|
|
294
|
+
'/api/data-sources': typeof ApiDataSourcesRoute
|
|
184
295
|
'/api/inbox': typeof ApiInboxRoute
|
|
185
296
|
'/api/link-insights': typeof ApiLinkInsightsRoute
|
|
186
297
|
'/api/link-preview': typeof ApiLinkPreviewRoute
|
|
298
|
+
'/api/network-map': typeof ApiNetworkMapRoute
|
|
299
|
+
'/api/period-digest': typeof ApiPeriodDigestRoute
|
|
300
|
+
'/api/profile-analysis': typeof ApiProfileAnalysisRoute
|
|
187
301
|
'/api/profile-hydrate': typeof ApiProfileHydrateRoute
|
|
188
302
|
'/api/query': typeof ApiQueryRoute
|
|
303
|
+
'/api/search-discussion': typeof ApiSearchDiscussionRoute
|
|
189
304
|
'/api/status': typeof ApiStatusRoute
|
|
190
305
|
'/api/sync': typeof ApiSyncRoute
|
|
306
|
+
'/api/xurl-rate-limits': typeof ApiXurlRateLimitsRoute
|
|
307
|
+
'/profiles/$handle': typeof ProfilesHandleRoute
|
|
191
308
|
}
|
|
192
309
|
export interface FileRouteTypes {
|
|
193
310
|
fileRoutesByFullPath: FileRoutesByFullPath
|
|
@@ -195,90 +312,170 @@ export interface FileRouteTypes {
|
|
|
195
312
|
| '/'
|
|
196
313
|
| '/blocks'
|
|
197
314
|
| '/bookmarks'
|
|
315
|
+
| '/data-sources'
|
|
316
|
+
| '/discuss'
|
|
198
317
|
| '/dms'
|
|
199
318
|
| '/inbox'
|
|
200
319
|
| '/likes'
|
|
201
320
|
| '/links'
|
|
202
321
|
| '/mentions'
|
|
322
|
+
| '/network-map'
|
|
323
|
+
| '/profile-analyze'
|
|
324
|
+
| '/rate-limits'
|
|
325
|
+
| '/today'
|
|
203
326
|
| '/api/action'
|
|
204
327
|
| '/api/avatar'
|
|
205
328
|
| '/api/blocks'
|
|
206
329
|
| '/api/conversation'
|
|
330
|
+
| '/api/data-sources'
|
|
207
331
|
| '/api/inbox'
|
|
208
332
|
| '/api/link-insights'
|
|
209
333
|
| '/api/link-preview'
|
|
334
|
+
| '/api/network-map'
|
|
335
|
+
| '/api/period-digest'
|
|
336
|
+
| '/api/profile-analysis'
|
|
210
337
|
| '/api/profile-hydrate'
|
|
211
338
|
| '/api/query'
|
|
339
|
+
| '/api/search-discussion'
|
|
212
340
|
| '/api/status'
|
|
213
341
|
| '/api/sync'
|
|
342
|
+
| '/api/xurl-rate-limits'
|
|
343
|
+
| '/profiles/$handle'
|
|
214
344
|
fileRoutesByTo: FileRoutesByTo
|
|
215
345
|
to:
|
|
216
346
|
| '/'
|
|
217
347
|
| '/blocks'
|
|
218
348
|
| '/bookmarks'
|
|
349
|
+
| '/data-sources'
|
|
350
|
+
| '/discuss'
|
|
219
351
|
| '/dms'
|
|
220
352
|
| '/inbox'
|
|
221
353
|
| '/likes'
|
|
222
354
|
| '/links'
|
|
223
355
|
| '/mentions'
|
|
356
|
+
| '/network-map'
|
|
357
|
+
| '/profile-analyze'
|
|
358
|
+
| '/rate-limits'
|
|
359
|
+
| '/today'
|
|
224
360
|
| '/api/action'
|
|
225
361
|
| '/api/avatar'
|
|
226
362
|
| '/api/blocks'
|
|
227
363
|
| '/api/conversation'
|
|
364
|
+
| '/api/data-sources'
|
|
228
365
|
| '/api/inbox'
|
|
229
366
|
| '/api/link-insights'
|
|
230
367
|
| '/api/link-preview'
|
|
368
|
+
| '/api/network-map'
|
|
369
|
+
| '/api/period-digest'
|
|
370
|
+
| '/api/profile-analysis'
|
|
231
371
|
| '/api/profile-hydrate'
|
|
232
372
|
| '/api/query'
|
|
373
|
+
| '/api/search-discussion'
|
|
233
374
|
| '/api/status'
|
|
234
375
|
| '/api/sync'
|
|
376
|
+
| '/api/xurl-rate-limits'
|
|
377
|
+
| '/profiles/$handle'
|
|
235
378
|
id:
|
|
236
379
|
| '__root__'
|
|
237
380
|
| '/'
|
|
238
381
|
| '/blocks'
|
|
239
382
|
| '/bookmarks'
|
|
383
|
+
| '/data-sources'
|
|
384
|
+
| '/discuss'
|
|
240
385
|
| '/dms'
|
|
241
386
|
| '/inbox'
|
|
242
387
|
| '/likes'
|
|
243
388
|
| '/links'
|
|
244
389
|
| '/mentions'
|
|
390
|
+
| '/network-map'
|
|
391
|
+
| '/profile-analyze'
|
|
392
|
+
| '/rate-limits'
|
|
393
|
+
| '/today'
|
|
245
394
|
| '/api/action'
|
|
246
395
|
| '/api/avatar'
|
|
247
396
|
| '/api/blocks'
|
|
248
397
|
| '/api/conversation'
|
|
398
|
+
| '/api/data-sources'
|
|
249
399
|
| '/api/inbox'
|
|
250
400
|
| '/api/link-insights'
|
|
251
401
|
| '/api/link-preview'
|
|
402
|
+
| '/api/network-map'
|
|
403
|
+
| '/api/period-digest'
|
|
404
|
+
| '/api/profile-analysis'
|
|
252
405
|
| '/api/profile-hydrate'
|
|
253
406
|
| '/api/query'
|
|
407
|
+
| '/api/search-discussion'
|
|
254
408
|
| '/api/status'
|
|
255
409
|
| '/api/sync'
|
|
410
|
+
| '/api/xurl-rate-limits'
|
|
411
|
+
| '/profiles/$handle'
|
|
256
412
|
fileRoutesById: FileRoutesById
|
|
257
413
|
}
|
|
258
414
|
export interface RootRouteChildren {
|
|
259
415
|
IndexRoute: typeof IndexRoute
|
|
260
416
|
BlocksRoute: typeof BlocksRoute
|
|
261
417
|
BookmarksRoute: typeof BookmarksRoute
|
|
418
|
+
DataSourcesRoute: typeof DataSourcesRoute
|
|
419
|
+
DiscussRoute: typeof DiscussRoute
|
|
262
420
|
DmsRoute: typeof DmsRoute
|
|
263
421
|
InboxRoute: typeof InboxRoute
|
|
264
422
|
LikesRoute: typeof LikesRoute
|
|
265
423
|
LinksRoute: typeof LinksRoute
|
|
266
424
|
MentionsRoute: typeof MentionsRoute
|
|
425
|
+
NetworkMapRoute: typeof NetworkMapRoute
|
|
426
|
+
ProfileAnalyzeRoute: typeof ProfileAnalyzeRoute
|
|
427
|
+
RateLimitsRoute: typeof RateLimitsRoute
|
|
428
|
+
TodayRoute: typeof TodayRoute
|
|
267
429
|
ApiActionRoute: typeof ApiActionRoute
|
|
268
430
|
ApiAvatarRoute: typeof ApiAvatarRoute
|
|
269
431
|
ApiBlocksRoute: typeof ApiBlocksRoute
|
|
270
432
|
ApiConversationRoute: typeof ApiConversationRoute
|
|
433
|
+
ApiDataSourcesRoute: typeof ApiDataSourcesRoute
|
|
271
434
|
ApiInboxRoute: typeof ApiInboxRoute
|
|
272
435
|
ApiLinkInsightsRoute: typeof ApiLinkInsightsRoute
|
|
273
436
|
ApiLinkPreviewRoute: typeof ApiLinkPreviewRoute
|
|
437
|
+
ApiNetworkMapRoute: typeof ApiNetworkMapRoute
|
|
438
|
+
ApiPeriodDigestRoute: typeof ApiPeriodDigestRoute
|
|
439
|
+
ApiProfileAnalysisRoute: typeof ApiProfileAnalysisRoute
|
|
274
440
|
ApiProfileHydrateRoute: typeof ApiProfileHydrateRoute
|
|
275
441
|
ApiQueryRoute: typeof ApiQueryRoute
|
|
442
|
+
ApiSearchDiscussionRoute: typeof ApiSearchDiscussionRoute
|
|
276
443
|
ApiStatusRoute: typeof ApiStatusRoute
|
|
277
444
|
ApiSyncRoute: typeof ApiSyncRoute
|
|
445
|
+
ApiXurlRateLimitsRoute: typeof ApiXurlRateLimitsRoute
|
|
446
|
+
ProfilesHandleRoute: typeof ProfilesHandleRoute
|
|
278
447
|
}
|
|
279
448
|
|
|
280
449
|
declare module '@tanstack/react-router' {
|
|
281
450
|
interface FileRoutesByPath {
|
|
451
|
+
'/today': {
|
|
452
|
+
id: '/today'
|
|
453
|
+
path: '/today'
|
|
454
|
+
fullPath: '/today'
|
|
455
|
+
preLoaderRoute: typeof TodayRouteImport
|
|
456
|
+
parentRoute: typeof rootRouteImport
|
|
457
|
+
}
|
|
458
|
+
'/rate-limits': {
|
|
459
|
+
id: '/rate-limits'
|
|
460
|
+
path: '/rate-limits'
|
|
461
|
+
fullPath: '/rate-limits'
|
|
462
|
+
preLoaderRoute: typeof RateLimitsRouteImport
|
|
463
|
+
parentRoute: typeof rootRouteImport
|
|
464
|
+
}
|
|
465
|
+
'/profile-analyze': {
|
|
466
|
+
id: '/profile-analyze'
|
|
467
|
+
path: '/profile-analyze'
|
|
468
|
+
fullPath: '/profile-analyze'
|
|
469
|
+
preLoaderRoute: typeof ProfileAnalyzeRouteImport
|
|
470
|
+
parentRoute: typeof rootRouteImport
|
|
471
|
+
}
|
|
472
|
+
'/network-map': {
|
|
473
|
+
id: '/network-map'
|
|
474
|
+
path: '/network-map'
|
|
475
|
+
fullPath: '/network-map'
|
|
476
|
+
preLoaderRoute: typeof NetworkMapRouteImport
|
|
477
|
+
parentRoute: typeof rootRouteImport
|
|
478
|
+
}
|
|
282
479
|
'/mentions': {
|
|
283
480
|
id: '/mentions'
|
|
284
481
|
path: '/mentions'
|
|
@@ -314,6 +511,20 @@ declare module '@tanstack/react-router' {
|
|
|
314
511
|
preLoaderRoute: typeof DmsRouteImport
|
|
315
512
|
parentRoute: typeof rootRouteImport
|
|
316
513
|
}
|
|
514
|
+
'/discuss': {
|
|
515
|
+
id: '/discuss'
|
|
516
|
+
path: '/discuss'
|
|
517
|
+
fullPath: '/discuss'
|
|
518
|
+
preLoaderRoute: typeof DiscussRouteImport
|
|
519
|
+
parentRoute: typeof rootRouteImport
|
|
520
|
+
}
|
|
521
|
+
'/data-sources': {
|
|
522
|
+
id: '/data-sources'
|
|
523
|
+
path: '/data-sources'
|
|
524
|
+
fullPath: '/data-sources'
|
|
525
|
+
preLoaderRoute: typeof DataSourcesRouteImport
|
|
526
|
+
parentRoute: typeof rootRouteImport
|
|
527
|
+
}
|
|
317
528
|
'/bookmarks': {
|
|
318
529
|
id: '/bookmarks'
|
|
319
530
|
path: '/bookmarks'
|
|
@@ -335,6 +546,20 @@ declare module '@tanstack/react-router' {
|
|
|
335
546
|
preLoaderRoute: typeof IndexRouteImport
|
|
336
547
|
parentRoute: typeof rootRouteImport
|
|
337
548
|
}
|
|
549
|
+
'/profiles/$handle': {
|
|
550
|
+
id: '/profiles/$handle'
|
|
551
|
+
path: '/profiles/$handle'
|
|
552
|
+
fullPath: '/profiles/$handle'
|
|
553
|
+
preLoaderRoute: typeof ProfilesHandleRouteImport
|
|
554
|
+
parentRoute: typeof rootRouteImport
|
|
555
|
+
}
|
|
556
|
+
'/api/xurl-rate-limits': {
|
|
557
|
+
id: '/api/xurl-rate-limits'
|
|
558
|
+
path: '/api/xurl-rate-limits'
|
|
559
|
+
fullPath: '/api/xurl-rate-limits'
|
|
560
|
+
preLoaderRoute: typeof ApiXurlRateLimitsRouteImport
|
|
561
|
+
parentRoute: typeof rootRouteImport
|
|
562
|
+
}
|
|
338
563
|
'/api/sync': {
|
|
339
564
|
id: '/api/sync'
|
|
340
565
|
path: '/api/sync'
|
|
@@ -349,6 +574,13 @@ declare module '@tanstack/react-router' {
|
|
|
349
574
|
preLoaderRoute: typeof ApiStatusRouteImport
|
|
350
575
|
parentRoute: typeof rootRouteImport
|
|
351
576
|
}
|
|
577
|
+
'/api/search-discussion': {
|
|
578
|
+
id: '/api/search-discussion'
|
|
579
|
+
path: '/api/search-discussion'
|
|
580
|
+
fullPath: '/api/search-discussion'
|
|
581
|
+
preLoaderRoute: typeof ApiSearchDiscussionRouteImport
|
|
582
|
+
parentRoute: typeof rootRouteImport
|
|
583
|
+
}
|
|
352
584
|
'/api/query': {
|
|
353
585
|
id: '/api/query'
|
|
354
586
|
path: '/api/query'
|
|
@@ -363,6 +595,27 @@ declare module '@tanstack/react-router' {
|
|
|
363
595
|
preLoaderRoute: typeof ApiProfileHydrateRouteImport
|
|
364
596
|
parentRoute: typeof rootRouteImport
|
|
365
597
|
}
|
|
598
|
+
'/api/profile-analysis': {
|
|
599
|
+
id: '/api/profile-analysis'
|
|
600
|
+
path: '/api/profile-analysis'
|
|
601
|
+
fullPath: '/api/profile-analysis'
|
|
602
|
+
preLoaderRoute: typeof ApiProfileAnalysisRouteImport
|
|
603
|
+
parentRoute: typeof rootRouteImport
|
|
604
|
+
}
|
|
605
|
+
'/api/period-digest': {
|
|
606
|
+
id: '/api/period-digest'
|
|
607
|
+
path: '/api/period-digest'
|
|
608
|
+
fullPath: '/api/period-digest'
|
|
609
|
+
preLoaderRoute: typeof ApiPeriodDigestRouteImport
|
|
610
|
+
parentRoute: typeof rootRouteImport
|
|
611
|
+
}
|
|
612
|
+
'/api/network-map': {
|
|
613
|
+
id: '/api/network-map'
|
|
614
|
+
path: '/api/network-map'
|
|
615
|
+
fullPath: '/api/network-map'
|
|
616
|
+
preLoaderRoute: typeof ApiNetworkMapRouteImport
|
|
617
|
+
parentRoute: typeof rootRouteImport
|
|
618
|
+
}
|
|
366
619
|
'/api/link-preview': {
|
|
367
620
|
id: '/api/link-preview'
|
|
368
621
|
path: '/api/link-preview'
|
|
@@ -384,6 +637,13 @@ declare module '@tanstack/react-router' {
|
|
|
384
637
|
preLoaderRoute: typeof ApiInboxRouteImport
|
|
385
638
|
parentRoute: typeof rootRouteImport
|
|
386
639
|
}
|
|
640
|
+
'/api/data-sources': {
|
|
641
|
+
id: '/api/data-sources'
|
|
642
|
+
path: '/api/data-sources'
|
|
643
|
+
fullPath: '/api/data-sources'
|
|
644
|
+
preLoaderRoute: typeof ApiDataSourcesRouteImport
|
|
645
|
+
parentRoute: typeof rootRouteImport
|
|
646
|
+
}
|
|
387
647
|
'/api/conversation': {
|
|
388
648
|
id: '/api/conversation'
|
|
389
649
|
path: '/api/conversation'
|
|
@@ -419,22 +679,35 @@ const rootRouteChildren: RootRouteChildren = {
|
|
|
419
679
|
IndexRoute: IndexRoute,
|
|
420
680
|
BlocksRoute: BlocksRoute,
|
|
421
681
|
BookmarksRoute: BookmarksRoute,
|
|
682
|
+
DataSourcesRoute: DataSourcesRoute,
|
|
683
|
+
DiscussRoute: DiscussRoute,
|
|
422
684
|
DmsRoute: DmsRoute,
|
|
423
685
|
InboxRoute: InboxRoute,
|
|
424
686
|
LikesRoute: LikesRoute,
|
|
425
687
|
LinksRoute: LinksRoute,
|
|
426
688
|
MentionsRoute: MentionsRoute,
|
|
689
|
+
NetworkMapRoute: NetworkMapRoute,
|
|
690
|
+
ProfileAnalyzeRoute: ProfileAnalyzeRoute,
|
|
691
|
+
RateLimitsRoute: RateLimitsRoute,
|
|
692
|
+
TodayRoute: TodayRoute,
|
|
427
693
|
ApiActionRoute: ApiActionRoute,
|
|
428
694
|
ApiAvatarRoute: ApiAvatarRoute,
|
|
429
695
|
ApiBlocksRoute: ApiBlocksRoute,
|
|
430
696
|
ApiConversationRoute: ApiConversationRoute,
|
|
697
|
+
ApiDataSourcesRoute: ApiDataSourcesRoute,
|
|
431
698
|
ApiInboxRoute: ApiInboxRoute,
|
|
432
699
|
ApiLinkInsightsRoute: ApiLinkInsightsRoute,
|
|
433
700
|
ApiLinkPreviewRoute: ApiLinkPreviewRoute,
|
|
701
|
+
ApiNetworkMapRoute: ApiNetworkMapRoute,
|
|
702
|
+
ApiPeriodDigestRoute: ApiPeriodDigestRoute,
|
|
703
|
+
ApiProfileAnalysisRoute: ApiProfileAnalysisRoute,
|
|
434
704
|
ApiProfileHydrateRoute: ApiProfileHydrateRoute,
|
|
435
705
|
ApiQueryRoute: ApiQueryRoute,
|
|
706
|
+
ApiSearchDiscussionRoute: ApiSearchDiscussionRoute,
|
|
436
707
|
ApiStatusRoute: ApiStatusRoute,
|
|
437
708
|
ApiSyncRoute: ApiSyncRoute,
|
|
709
|
+
ApiXurlRateLimitsRoute: ApiXurlRateLimitsRoute,
|
|
710
|
+
ProfilesHandleRoute: ProfilesHandleRoute,
|
|
438
711
|
}
|
|
439
712
|
export const routeTree = rootRouteImport
|
|
440
713
|
._addFileChildren(rootRouteChildren)
|
package/src/routes/__root.tsx
CHANGED
|
@@ -1,10 +1,21 @@
|
|
|
1
1
|
import { TanStackDevtools } from "@tanstack/react-devtools";
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
createRootRoute,
|
|
4
|
+
HeadContent,
|
|
5
|
+
Scripts,
|
|
6
|
+
useRouterState,
|
|
7
|
+
} from "@tanstack/react-router";
|
|
3
8
|
import { TanStackRouterDevtoolsPanel } from "@tanstack/react-router-devtools";
|
|
4
9
|
import type { ReactNode } from "react";
|
|
5
10
|
import { AppNav } from "#/components/AppNav";
|
|
6
11
|
import { ThemeProvider, themeScript } from "#/lib/theme";
|
|
7
|
-
import {
|
|
12
|
+
import {
|
|
13
|
+
bodyClass,
|
|
14
|
+
mainColumnClass,
|
|
15
|
+
mainColumnDmClass,
|
|
16
|
+
siteShellClass,
|
|
17
|
+
siteShellDmClass,
|
|
18
|
+
} from "#/lib/ui";
|
|
8
19
|
|
|
9
20
|
import appCss from "../styles.css?url";
|
|
10
21
|
|
|
@@ -42,6 +53,12 @@ function NotFoundView() {
|
|
|
42
53
|
}
|
|
43
54
|
|
|
44
55
|
function RootDocument({ children }: { children: ReactNode }) {
|
|
56
|
+
const pathname = useRouterState({
|
|
57
|
+
select: (state) => state.location.pathname,
|
|
58
|
+
});
|
|
59
|
+
const wideMode =
|
|
60
|
+
pathname.startsWith("/dms") || pathname.startsWith("/network-map");
|
|
61
|
+
|
|
45
62
|
return (
|
|
46
63
|
<html lang="en" suppressHydrationWarning>
|
|
47
64
|
<head>
|
|
@@ -50,9 +67,11 @@ function RootDocument({ children }: { children: ReactNode }) {
|
|
|
50
67
|
</head>
|
|
51
68
|
<body className={bodyClass}>
|
|
52
69
|
<ThemeProvider>
|
|
53
|
-
<div className={siteShellClass}>
|
|
54
|
-
<AppNav />
|
|
55
|
-
<main className={mainColumnClass}>
|
|
70
|
+
<div className={wideMode ? siteShellDmClass : siteShellClass}>
|
|
71
|
+
<AppNav compact={wideMode} />
|
|
72
|
+
<main className={wideMode ? mainColumnDmClass : mainColumnClass}>
|
|
73
|
+
{children}
|
|
74
|
+
</main>
|
|
56
75
|
</div>
|
|
57
76
|
</ThemeProvider>
|
|
58
77
|
<TanStackDevtools
|