diff --git a/frontend/src/types/index.ts b/frontend/src/types/index.ts
index 65aacdd..27d1b98 100644
--- a/frontend/src/types/index.ts
+++ b/frontend/src/types/index.ts
@@ -861,7 +861,8 @@ export interface DailyReportConfig {
deep_read_limit: number;
send_email_report: boolean;
recipient_emails: string[];
- report_time_utc: number;
+ cron_expression: string; // 新增:cron 表达式
+ report_time_utc: number; // 保留:向后兼容
include_paper_details: boolean;
include_graph_insights: boolean;
}
diff --git a/infra/migrations/versions/20260317_0012_add_cron_expression_to_daily_report.py b/infra/migrations/versions/20260317_0012_add_cron_expression_to_daily_report.py
new file mode 100644
index 0000000..eaf3c5e
--- /dev/null
+++ b/infra/migrations/versions/20260317_0012_add_cron_expression_to_daily_report.py
@@ -0,0 +1,32 @@
+"""add cron_expression to daily_report_configs
+
+Revision ID: 20260317_0012
+Revises: 5ae0d73c1013
+Create Date: 2026-03-17
+
+"""
+
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision = "20260317_0012"
+down_revision = "5ae0d73c1013"
+branch_labels = None
+depends_on = None
+
+
+def upgrade() -> None:
+ # 添加 cron_expression 字段
+ op.add_column(
+ "daily_report_configs",
+ sa.Column("cron_expression", sa.String(64), nullable=False, server_default="0 4 * * *"),
+ )
+
+ # 标记 report_time_utc 为废弃(保留字段兼容性)
+ # 不删除,保持向后兼容
+
+
+def downgrade() -> None:
+ op.drop_column("daily_report_configs", "cron_expression")
diff --git a/logs/backend.log b/logs/backend.log
index 5a5cfa6..5f30151 100644
--- a/logs/backend.log
+++ b/logs/backend.log
@@ -1,7246 +1,514 @@
INFO: Will watch for changes in these directories: ['/Users/haojiang/Documents/2026/PaperMind']
-INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
-INFO: Started reloader process [83780] using StatReload
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:190: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [83789]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-2026-02-26 13:21:14,899 [INFO] papermind.api: [f31ffae1] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:57096 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:21:14,982 [INFO] papermind.api: [11f283b6] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57096 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:21:17,892 [INFO] papermind.api: [582eb10d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57115 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:21:17,980 [INFO] papermind.api: [032dcd16] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57115 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:21:20,889 [INFO] papermind.api: [a3b0ee99] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57115 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:21:20,981 [INFO] papermind.api: [d92cf9c4] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57117 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:21:22,910 [INFO] papermind.api: [7f1cf14e] GET /tasks/active → 200 (17ms)
-INFO: 127.0.0.1:57138 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:21:22,913 [INFO] papermind.api: [c13504b5] GET /papers/folder-stats → 200 (22ms)
-INFO: 127.0.0.1:57117 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:21:22,914 [INFO] papermind.api: [0b2ed767] GET /tasks/active → 200 (4ms)
-INFO: 127.0.0.1:57138 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:21:22,917 [INFO] papermind.api: [46e4e3c6] GET /topics → 200 (8ms)
-INFO: 127.0.0.1:57142 - "GET /topics?enabled_only=false HTTP/1.1" 200 OK
-2026-02-26 13:21:22,920 [INFO] papermind.api: [74aa00cc] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:57144 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:21:22,925 [INFO] papermind.api: [0b32f624] GET /topics → 200 (4ms)
-INFO: 127.0.0.1:57138 - "GET /topics?enabled_only=false HTTP/1.1" 200 OK
-2026-02-26 13:21:23,890 [INFO] papermind.api: [f02dc70d] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57138 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:21:25,553 [INFO] papermind.api: [031527ec] GET /settings/llm-providers → 200 (7ms)
-INFO: 127.0.0.1:57138 - "GET /settings/llm-providers HTTP/1.1" 200 OK
-2026-02-26 13:21:25,554 [INFO] papermind.api: [ba3d2ebe] GET /settings/llm-providers/active → 200 (7ms)
-INFO: 127.0.0.1:57144 - "GET /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:21:25,558 [INFO] papermind.api: [83a3abe3] GET /settings/llm-providers → 200 (3ms)
-INFO: 127.0.0.1:57142 - "GET /settings/llm-providers HTTP/1.1" 200 OK
-2026-02-26 13:21:25,559 [INFO] papermind.api: [50e6e0a0] GET /settings/llm-providers/active → 200 (3ms)
-INFO: 127.0.0.1:57117 - "GET /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:21:25,891 [INFO] papermind.api: [4ffe3138] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57117 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:21:26,890 [INFO] papermind.api: [e890307c] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57156 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:21:26,962 [INFO] papermind.api: [8b656fb6] GET /settings/email-configs → 200 (2ms)
-INFO: 127.0.0.1:57156 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:21:26,964 [INFO] papermind.api: [12514584] GET /settings/email-configs → 200 (1ms)
-INFO: 127.0.0.1:57156 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:21:26,966 [INFO] papermind.api: [2c75ec89] GET /settings/daily-report-config → 200 (5ms)
-INFO: 127.0.0.1:57158 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:21:26,968 [INFO] papermind.api: [311a3f6c] GET /settings/daily-report-config → 200 (0ms)
-INFO: 127.0.0.1:57156 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:21:28,628 [INFO] papermind.api: [d8ca66b1] POST /jobs/daily-report/run-once → 200 (0ms)
-INFO: 127.0.0.1:57156 - "POST /jobs/daily-report/run-once HTTP/1.1" 200 OK
-ERROR: Exception in ASGI application
-Traceback (most recent call last):
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/uvicorn/protocols/http/h11_impl.py", line 410, in run_asgi
- result = await app( # type: ignore[func-returns-value]
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- self.scope, self.receive, self.send
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- )
- ^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
- return await self.app(scope, receive, send)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/fastapi/applications.py", line 1160, in __call__
- await super().__call__(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/applications.py", line 107, in __call__
- await self.middleware_stack(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/errors.py", line 186, in __call__
- raise exc
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/errors.py", line 164, in __call__
- await self.app(scope, receive, _send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/cors.py", line 95, in __call__
- await self.simple_response(scope, receive, send, request_headers=headers)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/cors.py", line 153, in simple_response
- await self.app(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/base.py", line 198, in __call__
- raise app_exc
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/base.py", line 144, in coro
- await self.app(scope, receive_or_disconnect, send_no_error)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/exceptions.py", line 63, in __call__
- await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
- raise exc
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
- await app(scope, receive, sender)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
- await self.app(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/routing.py", line 716, in __call__
- await self.middleware_stack(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/routing.py", line 736, in app
- await route.handle(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/routing.py", line 290, in handle
- await self.app(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/fastapi/routing.py", line 119, in app
- await wrap_app_handling_exceptions(app, request)(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
- raise exc
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
- await app(scope, receive, sender)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/fastapi/routing.py", line 106, in app
- await response(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/responses.py", line 167, in __call__
- await self.background()
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/background.py", line 36, in __call__
- await task()
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/background.py", line 23, in __call__
- await run_in_threadpool(self.func, *self.args, **self.kwargs)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/concurrency.py", line 32, in run_in_threadpool
- return await anyio.to_thread.run_sync(func)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/anyio/to_thread.py", line 63, in run_sync
- return await get_async_backend().run_sync_in_worker_thread(
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- func, args, abandon_on_cancel=abandon_on_cancel, limiter=limiter
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- )
- ^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/anyio/_backends/_asyncio.py", line 2502, in run_sync_in_worker_thread
- return await future
- ^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/anyio/_backends/_asyncio.py", line 986, in run
- result = context.run(func, *args)
- File "/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py", line 1936, in _run_daily_workflow_bg
- task_id = f"daily_report_{uuid.uuid4().hex[:8]}"
- ^^^^
-NameError: name 'uuid' is not defined. Did you mean: '_uuid'? Or did you forget to import 'uuid'?
-2026-02-26 13:21:28,892 [INFO] papermind.api: [1ba08db3] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57158 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:21:29,891 [INFO] papermind.api: [72b442ba] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57158 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:21:31,892 [INFO] papermind.api: [70928e4e] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57181 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:21:32,712 [INFO] papermind.api: [f763dd91] GET /papers/folder-stats → 200 (3ms)
-INFO: 127.0.0.1:57181 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:21:32,891 [INFO] papermind.api: [4ed188db] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57181 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:21:34,050 [INFO] papermind.api: [fe824864] GET /papers/folder-stats → 200 (6ms)
-INFO: 127.0.0.1:57181 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:21:34,052 [INFO] papermind.api: [c1386d4a] GET /pipelines/runs → 200 (6ms)
-INFO: 127.0.0.1:57197 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:21:34,056 [INFO] papermind.api: [1a229080] GET /pipelines/runs → 200 (3ms)
-INFO: 127.0.0.1:57181 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:21:34,065 [INFO] papermind.api: [75da3276] GET /metrics/costs → 200 (20ms)
-INFO: 127.0.0.1:57194 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
-2026-02-26 13:21:34,068 [INFO] papermind.api: [301a1fb1] GET /metrics/costs → 200 (2ms)
-INFO: 127.0.0.1:57181 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
-2026-02-26 13:21:34,145 [INFO] papermind.api: [d1cf9fe5] GET /system/status → 200 (99ms)
-INFO: 127.0.0.1:57193 - "GET /system/status HTTP/1.1" 200 OK
-2026-02-26 13:21:34,149 [INFO] papermind.api: [b7740926] GET /today → 200 (104ms)
-INFO: 127.0.0.1:57198 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:21:34,150 [INFO] papermind.api: [3b4de799] GET /today → 200 (0ms)
-INFO: 127.0.0.1:57193 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:21:34,169 [INFO] papermind.api: [13d4b991] GET /system/status → 200 (23ms)
-INFO: 127.0.0.1:57181 - "GET /system/status HTTP/1.1" 200 OK
-2026-02-26 13:21:34,892 [INFO] papermind.api: [fcf5b6ed] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57181 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:21:35,889 [INFO] papermind.api: [41667dd4] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57181 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:21:37,893 [INFO] papermind.api: [7e72e0dc] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57213 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:21:38,132 [INFO] papermind.api: [b8963d04] GET /papers/folder-stats → 200 (2ms)
-INFO: 127.0.0.1:57213 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:21:38,133 [INFO] papermind.api: [35f649cb] GET /topics → 200 (3ms)
-INFO: 127.0.0.1:57217 - "GET /topics?enabled_only=false HTTP/1.1" 200 OK
-2026-02-26 13:21:38,135 [INFO] papermind.api: [f9307bc4] GET /topics → 200 (2ms)
-INFO: 127.0.0.1:57213 - "GET /topics?enabled_only=false HTTP/1.1" 200 OK
-2026-02-26 13:21:38,889 [INFO] papermind.api: [0d7179cf] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57213 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:21:40,895 [INFO] papermind.api: [950b10aa] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57213 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:21:41,890 [INFO] papermind.api: [4c7616ca] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57221 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:21:43,674 [INFO] papermind.api: [4d8a0247] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:57246 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:21:43,675 [INFO] papermind.api: [da0846b0] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:57221 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:21:43,677 [INFO] papermind.api: [47684caa] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:57246 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:21:43,679 [INFO] papermind.api: [63d20944] GET /topics → 200 (3ms)
-INFO: 127.0.0.1:57221 - "GET /topics?enabled_only=false HTTP/1.1" 200 OK
-2026-02-26 13:21:43,680 [INFO] papermind.api: [2c9989d8] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:57248 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:21:43,682 [INFO] papermind.api: [57df6074] GET /topics → 200 (2ms)
-INFO: 127.0.0.1:57246 - "GET /topics?enabled_only=false HTTP/1.1" 200 OK
-2026-02-26 13:21:44,890 [INFO] papermind.api: [ada465f3] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57246 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:21:44,953 [INFO] papermind.api: [6219511d] GET /actions → 200 (5ms)
-INFO: 127.0.0.1:57248 - "GET /actions?limit=30 HTTP/1.1" 200 OK
-2026-02-26 13:21:44,954 [INFO] papermind.api: [8d6b0cf8] GET /papers/folder-stats → 200 (6ms)
-INFO: 127.0.0.1:57246 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:21:44,959 [INFO] papermind.api: [6eb99a63] GET /papers/latest → 200 (10ms)
-INFO: 127.0.0.1:57221 - "GET /papers/latest?page=1&page_size=20 HTTP/1.1" 200 OK
-2026-02-26 13:21:44,961 [INFO] papermind.api: [0f8ed31a] GET /actions → 200 (4ms)
-INFO: 127.0.0.1:57248 - "GET /actions?limit=30 HTTP/1.1" 200 OK
-2026-02-26 13:21:44,963 [INFO] papermind.api: [9ac2fc27] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:57254 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:21:44,966 [INFO] papermind.api: [709e7988] GET /papers/latest → 200 (6ms)
-INFO: 127.0.0.1:57246 - "GET /papers/latest?page=1&page_size=20 HTTP/1.1" 200 OK
-2026-02-26 13:21:44,967 [INFO] papermind.api: [bd5edb4a] GET /papers/folder-stats → 200 (2ms)
-INFO: 127.0.0.1:57248 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-INFO: 127.0.0.1:57263 - "OPTIONS /generated/list?type=daily_brief&limit=50 HTTP/1.1" 200 OK
-INFO: 127.0.0.1:57264 - "OPTIONS /generated/list?type=daily_brief&limit=50 HTTP/1.1" 200 OK
-2026-02-26 13:21:46,096 [INFO] papermind.api: [e77ca274] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:57262 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:21:46,098 [INFO] papermind.api: [7b0e7c24] GET /generated/list → 200 (4ms)
-INFO: 127.0.0.1:57264 - "GET /generated/list?type=daily_brief&limit=50 HTTP/1.1" 200 OK
-2026-02-26 13:21:46,099 [INFO] papermind.api: [74a952cf] GET /generated/list → 200 (1ms)
-INFO: 127.0.0.1:57262 - "GET /generated/list?type=daily_brief&limit=50 HTTP/1.1" 200 OK
-INFO: 127.0.0.1:57262 - "OPTIONS /generated/936d8d45-1fce-4c33-aa26-39c997638593 HTTP/1.1" 200 OK
-2026-02-26 13:21:46,103 [INFO] papermind.api: [9a457d11] GET /generated/936d8d45-1fce-4c33-aa26-39c997638593 → 200 (2ms)
-INFO: 127.0.0.1:57262 - "GET /generated/936d8d45-1fce-4c33-aa26-39c997638593 HTTP/1.1" 200 OK
-2026-02-26 13:21:46,105 [INFO] papermind.api: [367aa39a] GET /generated/936d8d45-1fce-4c33-aa26-39c997638593 → 200 (1ms)
-INFO: 127.0.0.1:57264 - "GET /generated/936d8d45-1fce-4c33-aa26-39c997638593 HTTP/1.1" 200 OK
-2026-02-26 13:21:46,664 [INFO] papermind.api: [dabf7d9f] GET /today → 200 (3ms)
-INFO: 127.0.0.1:57272 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:21:46,666 [INFO] papermind.api: [f0b81427] GET /metrics/costs → 200 (6ms)
-INFO: 127.0.0.1:57263 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
-2026-02-26 13:21:46,666 [INFO] papermind.api: [20e9dfa0] GET /pipelines/runs → 200 (5ms)
-INFO: 127.0.0.1:57271 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:21:46,667 [INFO] papermind.api: [31588048] GET /papers/folder-stats → 200 (8ms)
-INFO: 127.0.0.1:57264 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:21:46,668 [INFO] papermind.api: [b5653f3d] GET /today → 200 (3ms)
-INFO: 127.0.0.1:57272 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:21:46,670 [INFO] papermind.api: [5785d44a] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:57274 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:21:46,672 [INFO] papermind.api: [7a3e3042] GET /pipelines/runs → 200 (4ms)
-INFO: 127.0.0.1:57271 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:21:46,674 [INFO] papermind.api: [543a25fc] GET /metrics/costs → 200 (7ms)
-INFO: 127.0.0.1:57263 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
-2026-02-26 13:21:46,696 [INFO] papermind.api: [2f527953] GET /system/status → 200 (37ms)
-INFO: 127.0.0.1:57262 - "GET /system/status HTTP/1.1" 200 OK
-2026-02-26 13:21:46,719 [INFO] papermind.api: [99334087] GET /system/status → 200 (22ms)
-INFO: 127.0.0.1:57263 - "GET /system/status HTTP/1.1" 200 OK
-2026-02-26 13:21:47,892 [INFO] papermind.api: [4403c4e4] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57263 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:21:49,669 [INFO] papermind.api: [c4e88105] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57263 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:21:50,889 [INFO] papermind.api: [5593ae5a] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57263 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:21:52,671 [INFO] papermind.api: [6bc7df92] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57290 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:21:52,780 [INFO] papermind.api: [74ce9372] GET /today → 200 (2ms)
-INFO: 127.0.0.1:57296 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:21:52,780 [INFO] papermind.api: [3165f7d3] GET /pipelines/runs → 200 (3ms)
-INFO: 127.0.0.1:57295 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:21:52,781 [INFO] papermind.api: [b5c398bb] GET /metrics/costs → 200 (3ms)
-INFO: 127.0.0.1:57293 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
-2026-02-26 13:21:52,805 [INFO] papermind.api: [66177b7f] GET /system/status → 200 (29ms)
-INFO: 127.0.0.1:57290 - "GET /system/status HTTP/1.1" 200 OK
-2026-02-26 13:21:53,415 [INFO] papermind.api: [0dd60352] GET /today → 200 (4ms)
-INFO: 127.0.0.1:57296 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:21:53,416 [INFO] papermind.api: [910ca483] GET /pipelines/runs → 200 (5ms)
-INFO: 127.0.0.1:57295 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:21:53,419 [INFO] papermind.api: [3c8cb658] GET /metrics/costs → 200 (7ms)
-INFO: 127.0.0.1:57293 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
-2026-02-26 13:21:53,448 [INFO] papermind.api: [d484132e] GET /system/status → 200 (37ms)
-INFO: 127.0.0.1:57290 - "GET /system/status HTTP/1.1" 200 OK
-2026-02-26 13:21:53,596 [INFO] papermind.api: [d059235a] GET /pipelines/runs → 200 (2ms)
-INFO: 127.0.0.1:57295 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:21:53,597 [INFO] papermind.api: [ad99f28e] GET /today → 200 (2ms)
-INFO: 127.0.0.1:57296 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:21:53,626 [INFO] papermind.api: [3085ee3e] GET /metrics/costs → 200 (32ms)
-INFO: 127.0.0.1:57293 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
-2026-02-26 13:21:53,626 [INFO] papermind.api: [42004a4c] GET /system/status → 200 (32ms)
-INFO: 127.0.0.1:57290 - "GET /system/status HTTP/1.1" 200 OK
-2026-02-26 13:21:53,781 [INFO] papermind.api: [fe2f066e] GET /today → 200 (3ms)
-INFO: 127.0.0.1:57295 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:21:53,781 [INFO] papermind.api: [1f95e5cd] GET /pipelines/runs → 200 (3ms)
-INFO: 127.0.0.1:57296 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:21:53,782 [INFO] papermind.api: [5ce09e51] GET /metrics/costs → 200 (4ms)
-INFO: 127.0.0.1:57293 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
-2026-02-26 13:21:53,807 [INFO] papermind.api: [5616d063] GET /system/status → 200 (29ms)
-INFO: 127.0.0.1:57290 - "GET /system/status HTTP/1.1" 200 OK
-2026-02-26 13:21:53,890 [INFO] papermind.api: [cde42f46] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57290 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:21:53,946 [INFO] papermind.api: [d2a5dc45] GET /today → 200 (2ms)
-INFO: 127.0.0.1:57295 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:21:53,947 [INFO] papermind.api: [1fae92f4] GET /pipelines/runs → 200 (3ms)
-INFO: 127.0.0.1:57296 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:21:53,947 [INFO] papermind.api: [485d9955] GET /metrics/costs → 200 (3ms)
-INFO: 127.0.0.1:57293 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
-2026-02-26 13:21:53,969 [INFO] papermind.api: [dd88eb31] GET /system/status → 200 (26ms)
-INFO: 127.0.0.1:57290 - "GET /system/status HTTP/1.1" 200 OK
-2026-02-26 13:21:55,344 [INFO] papermind.api: [becb2b48] GET /papers/folder-stats → 200 (8ms)
-INFO: 127.0.0.1:57290 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:21:55,344 [INFO] papermind.api: [02cae13c] GET /actions → 200 (8ms)
-INFO: 127.0.0.1:57293 - "GET /actions?limit=30 HTTP/1.1" 200 OK
-2026-02-26 13:21:55,349 [INFO] papermind.api: [2edd69ab] GET /papers/latest → 200 (13ms)
-INFO: 127.0.0.1:57296 - "GET /papers/latest?page=1&page_size=20 HTTP/1.1" 200 OK
-2026-02-26 13:21:55,353 [INFO] papermind.api: [1a580672] GET /actions → 200 (6ms)
-INFO: 127.0.0.1:57290 - "GET /actions?limit=30 HTTP/1.1" 200 OK
-2026-02-26 13:21:55,354 [INFO] papermind.api: [0eace1b4] GET /papers/folder-stats → 200 (8ms)
-INFO: 127.0.0.1:57295 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:21:55,359 [INFO] papermind.api: [651cfbe7] GET /papers/latest → 200 (8ms)
-INFO: 127.0.0.1:57293 - "GET /papers/latest?page=1&page_size=20 HTTP/1.1" 200 OK
-2026-02-26 13:21:55,361 [INFO] papermind.api: [b02f8579] GET /papers/folder-stats → 200 (6ms)
-INFO: 127.0.0.1:57290 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:21:55,668 [INFO] papermind.api: [839162f0] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57290 - "GET /tasks/active HTTP/1.1" 200 OK
-INFO: 127.0.0.1:57311 - "OPTIONS /generated/list?type=topic_wiki&limit=50 HTTP/1.1" 200 OK
-INFO: 127.0.0.1:57312 - "OPTIONS /generated/list?type=topic_wiki&limit=50 HTTP/1.1" 200 OK
-2026-02-26 13:21:56,085 [INFO] papermind.api: [3a5b8e6f] GET /papers/folder-stats → 200 (3ms)
-INFO: 127.0.0.1:57310 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:21:56,092 [INFO] papermind.api: [487cd44e] GET /generated/list → 200 (8ms)
-INFO: 127.0.0.1:57312 - "GET /generated/list?type=topic_wiki&limit=50 HTTP/1.1" 200 OK
-2026-02-26 13:21:56,095 [INFO] papermind.api: [191a3ea1] GET /generated/list → 200 (3ms)
-INFO: 127.0.0.1:57310 - "GET /generated/list?type=topic_wiki&limit=50 HTTP/1.1" 200 OK
-INFO: 127.0.0.1:57312 - "OPTIONS /writing/templates HTTP/1.1" 200 OK
-INFO: 127.0.0.1:57311 - "OPTIONS /writing/templates HTTP/1.1" 200 OK
-2026-02-26 13:21:56,561 [INFO] papermind.api: [a0fbcf97] GET /papers/folder-stats → 200 (2ms)
-INFO: 127.0.0.1:57310 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:21:56,564 [INFO] papermind.api: [ce93dbed] GET /writing/templates → 200 (3ms)
-INFO: 127.0.0.1:57311 - "GET /writing/templates HTTP/1.1" 200 OK
-2026-02-26 13:21:56,565 [INFO] papermind.api: [eec64725] GET /writing/templates → 200 (0ms)
-INFO: 127.0.0.1:57310 - "GET /writing/templates HTTP/1.1" 200 OK
-2026-02-26 13:21:56,890 [INFO] papermind.api: [f8dc02c3] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57310 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:21:57,149 [INFO] papermind.api: [b19bac67] GET /topics → 200 (8ms)
-INFO: 127.0.0.1:57311 - "GET /topics?enabled_only=false HTTP/1.1" 200 OK
-2026-02-26 13:21:57,149 [INFO] papermind.api: [96a3c9dc] GET /papers/folder-stats → 200 (9ms)
-INFO: 127.0.0.1:57310 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:21:57,154 [INFO] papermind.api: [05cdbd8b] GET /topics → 200 (3ms)
-INFO: 127.0.0.1:57312 - "GET /topics?enabled_only=false HTTP/1.1" 200 OK
-INFO: 127.0.0.1:57310 - "OPTIONS /graph/overview HTTP/1.1" 200 OK
-INFO: 127.0.0.1:57311 - "OPTIONS /graph/bridges HTTP/1.1" 200 OK
-INFO: 127.0.0.1:57329 - "OPTIONS /graph/frontier?days=90 HTTP/1.1" 200 OK
-INFO: 127.0.0.1:57331 - "OPTIONS /graph/cocitation-clusters?min_cocite=2 HTTP/1.1" 200 OK
-INFO: 127.0.0.1:57332 - "OPTIONS /graph/similarity-map?topic_id=&limit=200 HTTP/1.1" 200 OK
-2026-02-26 13:21:57,820 [INFO] papermind.api: [06e7fabb] GET /papers/folder-stats → 200 (6ms)
-INFO: 127.0.0.1:57312 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:21:57,956 [INFO] papermind.api: [fa4e68e1] GET /graph/cocitation-clusters → 200 (137ms)
-INFO: 127.0.0.1:57334 - "GET /graph/cocitation-clusters?min_cocite=2 HTTP/1.1" 200 OK
-2026-02-26 13:21:57,978 [INFO] papermind.api: [b00df21f] GET /graph/frontier → 200 (160ms)
-INFO: 127.0.0.1:57329 - "GET /graph/frontier?days=90 HTTP/1.1" 200 OK
-2026-02-26 13:21:57,984 [INFO] papermind.api: [95dfa47d] GET /graph/overview → 200 (168ms)
-INFO: 127.0.0.1:57311 - "GET /graph/overview HTTP/1.1" 200 OK
-2026-02-26 13:21:57,986 [INFO] papermind.api: [0e98824a] GET /graph/bridges → 200 (169ms)
-INFO: 127.0.0.1:57310 - "GET /graph/bridges HTTP/1.1" 200 OK
-2026-02-26 13:21:58,114 [WARNING] packages.ai.graph_service: UMAP failed: No module named 'umap', falling back to PCA
-2026-02-26 13:21:58,687 [INFO] papermind.api: [ae695240] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57310 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:21:58,915 [INFO] papermind.api: [16079e11] GET /papers/folder-stats → 200 (27ms)
-INFO: 127.0.0.1:57310 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:21:58,916 [INFO] papermind.api: [6b8cd12d] GET /generated/list → 200 (17ms)
-INFO: 127.0.0.1:57311 - "GET /generated/list?type=topic_wiki&limit=50 HTTP/1.1" 200 OK
-2026-02-26 13:21:58,921 [INFO] papermind.api: [84c6d136] GET /generated/list → 200 (4ms)
-INFO: 127.0.0.1:57329 - "GET /generated/list?type=topic_wiki&limit=50 HTTP/1.1" 200 OK
-2026-02-26 13:21:59,535 [INFO] papermind.api: [5fa97a5f] GET /generated/list → 200 (22ms)
-INFO: 127.0.0.1:57311 - "GET /generated/list?type=daily_brief&limit=50 HTTP/1.1" 200 OK
-2026-02-26 13:21:59,537 [INFO] papermind.api: [f63b8728] GET /papers/folder-stats → 200 (56ms)
-INFO: 127.0.0.1:57329 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:21:59,566 [INFO] papermind.api: [7f1df100] GET /generated/936d8d45-1fce-4c33-aa26-39c997638593 → 200 (1ms)
-INFO: 127.0.0.1:57311 - "GET /generated/936d8d45-1fce-4c33-aa26-39c997638593 HTTP/1.1" 200 OK
-2026-02-26 13:21:59,566 [INFO] papermind.api: [64d272ab] GET /generated/list → 200 (6ms)
-INFO: 127.0.0.1:57310 - "GET /generated/list?type=daily_brief&limit=50 HTTP/1.1" 200 OK
-2026-02-26 13:21:59,896 [INFO] papermind.api: [da8707b8] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57310 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:01,141 [INFO] papermind.api: [b1df64f2] GET /graph/similarity-map → 200 (3324ms)
-INFO: 127.0.0.1:57332 - "GET /graph/similarity-map?topic_id=&limit=200 HTTP/1.1" 200 OK
-2026-02-26 13:22:01,435 [INFO] papermind.api: [c0cf49cd] GET /actions → 200 (4ms)
-INFO: 127.0.0.1:57343 - "GET /actions?limit=30 HTTP/1.1" 200 OK
-2026-02-26 13:22:01,438 [INFO] papermind.api: [35d5961f] GET /papers/folder-stats → 200 (7ms)
-INFO: 127.0.0.1:57332 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:22:01,443 [INFO] papermind.api: [3d5fa18f] GET /actions → 200 (6ms)
-INFO: 127.0.0.1:57343 - "GET /actions?limit=30 HTTP/1.1" 200 OK
-2026-02-26 13:22:01,445 [INFO] papermind.api: [17cacc99] GET /papers/latest → 200 (13ms)
-INFO: 127.0.0.1:57344 - "GET /papers/latest?page=1&page_size=20 HTTP/1.1" 200 OK
-2026-02-26 13:22:01,446 [INFO] papermind.api: [f3ce3b12] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:57346 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:22:01,450 [INFO] papermind.api: [7a2b44c0] GET /papers/latest → 200 (5ms)
-INFO: 127.0.0.1:57343 - "GET /papers/latest?page=1&page_size=20 HTTP/1.1" 200 OK
-2026-02-26 13:22:01,452 [INFO] papermind.api: [f311f195] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:57344 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:22:01,668 [INFO] papermind.api: [d395a091] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57344 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:02,474 [INFO] papermind.api: [af8d8c04] GET /generated/list → 200 (4ms)
-INFO: 127.0.0.1:57343 - "GET /generated/list?type=daily_brief&limit=50 HTTP/1.1" 200 OK
-2026-02-26 13:22:02,476 [INFO] papermind.api: [41ad934a] GET /papers/folder-stats → 200 (6ms)
-INFO: 127.0.0.1:57344 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:22:02,477 [INFO] papermind.api: [b76d55ec] GET /generated/list → 200 (2ms)
-INFO: 127.0.0.1:57346 - "GET /generated/list?type=daily_brief&limit=50 HTTP/1.1" 200 OK
-2026-02-26 13:22:02,479 [INFO] papermind.api: [8c014756] GET /generated/936d8d45-1fce-4c33-aa26-39c997638593 → 200 (1ms)
-INFO: 127.0.0.1:57346 - "GET /generated/936d8d45-1fce-4c33-aa26-39c997638593 HTTP/1.1" 200 OK
-2026-02-26 13:22:02,481 [INFO] papermind.api: [99913a83] GET /generated/936d8d45-1fce-4c33-aa26-39c997638593 → 200 (1ms)
-INFO: 127.0.0.1:57346 - "GET /generated/936d8d45-1fce-4c33-aa26-39c997638593 HTTP/1.1" 200 OK
-2026-02-26 13:22:02,712 [INFO] papermind.api: [2ba86de0] GET /papers/folder-stats → 200 (2ms)
-INFO: 127.0.0.1:57346 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:22:02,889 [INFO] papermind.api: [1a8f3ee3] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57346 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:04,514 [INFO] papermind.api: [56ede169] GET /settings/llm-providers → 200 (1ms)
-INFO: 127.0.0.1:57346 - "GET /settings/llm-providers HTTP/1.1" 200 OK
-2026-02-26 13:22:04,514 [INFO] papermind.api: [9fed4e08] GET /settings/llm-providers/active → 200 (1ms)
-INFO: 127.0.0.1:57344 - "GET /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:22:04,516 [INFO] papermind.api: [02e154a1] GET /settings/llm-providers/active → 200 (1ms)
-INFO: 127.0.0.1:57346 - "GET /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:22:04,517 [INFO] papermind.api: [412cf2de] GET /settings/llm-providers → 200 (2ms)
-INFO: 127.0.0.1:57343 - "GET /settings/llm-providers HTTP/1.1" 200 OK
-2026-02-26 13:22:04,669 [INFO] papermind.api: [741ac8fa] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57343 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:05,732 [INFO] papermind.api: [187bb084] GET /settings/daily-report-config → 200 (2ms)
-INFO: 127.0.0.1:57346 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:22:05,732 [INFO] papermind.api: [a2b382ce] GET /settings/email-configs → 200 (3ms)
-INFO: 127.0.0.1:57343 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:22:05,735 [INFO] papermind.api: [727ef3a0] GET /settings/daily-report-config → 200 (2ms)
-INFO: 127.0.0.1:57344 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:22:05,736 [INFO] papermind.api: [d56bcdac] GET /settings/email-configs → 200 (3ms)
-INFO: 127.0.0.1:57343 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:22:05,890 [INFO] papermind.api: [6ac4618a] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57343 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:07,669 [INFO] papermind.api: [8b260c0c] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57359 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:08,890 [INFO] papermind.api: [04769e5e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57359 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:10,670 [INFO] papermind.api: [140e8a97] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57359 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:11,890 [INFO] papermind.api: [831508d9] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57367 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:13,667 [INFO] papermind.api: [728dc056] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57367 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:14,890 [INFO] papermind.api: [5357bc7b] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57367 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:16,667 [INFO] papermind.api: [6859c6aa] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57374 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:17,889 [INFO] papermind.api: [c249e24d] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57374 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:19,667 [INFO] papermind.api: [fe3fce32] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57374 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:20,890 [INFO] papermind.api: [880a2be5] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57374 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:22,668 [INFO] papermind.api: [321db3de] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57385 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:23,895 [INFO] papermind.api: [f881b10b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57385 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:25,667 [INFO] papermind.api: [2917d25b] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57385 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:26,891 [INFO] papermind.api: [6d90b9e6] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57390 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:28,668 [INFO] papermind.api: [6c228488] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57390 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:29,896 [INFO] papermind.api: [b578dabd] GET /tasks/active → 200 (4ms)
-INFO: 127.0.0.1:57390 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:31,668 [INFO] papermind.api: [dc5641ab] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57401 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:32,480 [INFO] papermind.api: [01c4874d] GET /papers/folder-stats → 200 (9ms)
-INFO: 127.0.0.1:57401 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:22:32,712 [INFO] papermind.api: [cea89136] GET /papers/folder-stats → 200 (1ms)
-INFO: 127.0.0.1:57401 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:22:32,892 [INFO] papermind.api: [1e5075a6] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57401 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:34,668 [INFO] papermind.api: [5a058080] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57401 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:35,893 [INFO] papermind.api: [f9621b95] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57401 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:37,671 [INFO] papermind.api: [20ca5867] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57420 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:38,890 [INFO] papermind.api: [d29d040f] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57420 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:40,668 [INFO] papermind.api: [e4d4b674] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57420 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:41,891 [INFO] papermind.api: [ce3e8c67] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57433 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:43,671 [INFO] papermind.api: [009b5fdf] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57433 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:44,889 [INFO] papermind.api: [9eb64e5a] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57433 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:46,674 [INFO] papermind.api: [db2ec487] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:57450 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:47,890 [INFO] papermind.api: [9f11027b] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57450 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:49,669 [INFO] papermind.api: [8bf52251] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57450 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:50,890 [INFO] papermind.api: [8e39f360] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57450 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:51,873 [INFO] papermind.api: [0a99a3b3] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57459 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:52,671 [INFO] papermind.api: [6d40faca] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57461 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:53,891 [INFO] papermind.api: [12c19e19] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57461 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:55,668 [INFO] papermind.api: [7907a9dd] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57461 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:56,710 [INFO] papermind.api: [b705fd5c] POST /jobs/daily/run-once → 200 (1ms)
-INFO: 127.0.0.1:57472 - "POST /jobs/daily/run-once HTTP/1.1" 200 OK
-2026-02-26 13:22:56,721 [INFO] packages.integrations.arxiv_client: ArXiv search: 3D texture mapping textured surface → all:3D AND all:texture AND all:mapping (sort=submittedDate start=0)
-2026-02-26 13:22:56,899 [INFO] papermind.api: [2efa6b4d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57475 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:58,230 [INFO] httpx: HTTP Request: GET https://export.arxiv.org/api/query?search_query=all%3A3D+AND+all%3Atexture+AND+all%3Amapping&sortBy=submittedDate&sortOrder=descending&start=0&max_results=20 "HTTP/1.1 200 OK"
-2026-02-26 13:22:58,668 [INFO] papermind.api: [12cbc8d8] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57475 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:58,738 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.21893v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:22:58,756 [INFO] papermind.api: [7477c562] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57485 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:22:58,839 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.21893v1 "HTTP/1.1 200 OK"
-2026-02-26 13:22:59,663 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.21141v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:22:59,767 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.21141v1 "HTTP/1.1 200 OK"
-2026-02-26 13:22:59,892 [INFO] papermind.api: [df37327e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57475 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:01,046 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.19874v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:23:01,146 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.19874v1 "HTTP/1.1 200 OK"
-2026-02-26 13:23:01,670 [INFO] papermind.api: [45c21743] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57493 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:02,476 [INFO] papermind.api: [3b6a2c5c] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:57493 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:23:02,715 [INFO] papermind.api: [53febd63] GET /papers/folder-stats → 200 (3ms)
-INFO: 127.0.0.1:57493 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:23:02,891 [INFO] papermind.api: [670660be] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57493 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:04,557 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.18741v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:23:04,658 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.18741v1 "HTTP/1.1 200 OK"
-2026-02-26 13:23:04,669 [INFO] papermind.api: [e7d7a063] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57493 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:05,890 [INFO] papermind.api: [29357c1d] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57493 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:07,669 [INFO] papermind.api: [c75fa8b1] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57509 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:07,774 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.18258v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:23:07,874 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.18258v1 "HTTP/1.1 200 OK"
-2026-02-26 13:23:08,891 [INFO] papermind.api: [1a263638] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57509 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:09,414 [INFO] papermind.api: [1b26e8bc] GET /papers/folder-stats → 200 (14ms)
-INFO: 127.0.0.1:57509 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:23:09,417 [INFO] papermind.api: [82f24615] GET /topics → 200 (17ms)
-INFO: 127.0.0.1:57516 - "GET /topics?enabled_only=false HTTP/1.1" 200 OK
-2026-02-26 13:23:09,422 [INFO] papermind.api: [24bddc4f] GET /topics → 200 (4ms)
-INFO: 127.0.0.1:57509 - "GET /topics?enabled_only=false HTTP/1.1" 200 OK
-2026-02-26 13:23:10,254 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.18174v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:23:10,356 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.18174v1 "HTTP/1.1 200 OK"
-2026-02-26 13:23:10,668 [INFO] papermind.api: [f5ff132b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57509 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:11,272 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.13909v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:23:11,382 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.13909v1 "HTTP/1.1 200 OK"
-2026-02-26 13:23:11,891 [INFO] papermind.api: [aa0d24bd] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57522 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:12,573 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.12157v2.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:23:12,677 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.12157v2 "HTTP/1.1 200 OK"
-2026-02-26 13:23:12,711 [INFO] papermind.api: [924fd253] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:57522 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:23:12,711 [INFO] papermind.api: [d09a55f2] GET /actions → 200 (5ms)
-INFO: 127.0.0.1:57525 - "GET /actions?limit=30 HTTP/1.1" 200 OK
-2026-02-26 13:23:12,714 [INFO] papermind.api: [12109969] GET /actions → 200 (2ms)
-INFO: 127.0.0.1:57525 - "GET /actions?limit=30 HTTP/1.1" 200 OK
-2026-02-26 13:23:12,717 [INFO] papermind.api: [0d7e849c] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:57522 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:23:12,717 [INFO] papermind.api: [f79550c5] GET /papers/latest → 200 (10ms)
-INFO: 127.0.0.1:57526 - "GET /papers/latest?page=1&page_size=20 HTTP/1.1" 200 OK
-2026-02-26 13:23:12,724 [INFO] papermind.api: [eb009c1a] GET /papers/folder-stats → 200 (6ms)
-INFO: 127.0.0.1:57525 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:23:12,725 [INFO] papermind.api: [d63759e4] GET /papers/latest → 200 (7ms)
-INFO: 127.0.0.1:57522 - "GET /papers/latest?page=1&page_size=20 HTTP/1.1" 200 OK
-2026-02-26 13:23:13,668 [INFO] papermind.api: [5bfe29f8] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57522 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:13,761 [INFO] papermind.api: [3a30fb0e] GET /today → 200 (2ms)
-INFO: 127.0.0.1:57525 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:23:13,762 [INFO] papermind.api: [35c698a3] GET /today → 200 (1ms)
-INFO: 127.0.0.1:57526 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:23:13,763 [INFO] papermind.api: [d773151e] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:57522 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:23:14,128 [INFO] papermind.api: [c6d7a7a8] GET /papers/folder-stats → 200 (21ms)
-INFO: 127.0.0.1:57522 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:23:14,129 [INFO] papermind.api: [52c06b98] GET /tasks/active → 200 (21ms)
-INFO: 127.0.0.1:57526 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:14,130 [INFO] papermind.api: [18b02cfc] GET /today → 200 (17ms)
-INFO: 127.0.0.1:57528 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:23:14,137 [INFO] papermind.api: [6ae1a911] GET /topics → 200 (25ms)
-INFO: 127.0.0.1:57525 - "GET /topics?enabled_only=false HTTP/1.1" 200 OK
-2026-02-26 13:23:14,144 [INFO] papermind.api: [4887459d] GET /papers/folder-stats → 200 (12ms)
-INFO: 127.0.0.1:57522 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:23:14,153 [INFO] papermind.api: [2034abca] GET /tasks/active → 200 (19ms)
-INFO: 127.0.0.1:57547 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:14,154 [INFO] papermind.api: [421e4b49] GET /today → 200 (20ms)
-INFO: 127.0.0.1:57526 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:23:14,159 [INFO] papermind.api: [427c7819] GET /topics → 200 (16ms)
-INFO: 127.0.0.1:57528 - "GET /topics?enabled_only=false HTTP/1.1" 200 OK
-2026-02-26 13:23:14,160 [INFO] papermind.api: [fa528f38] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:57525 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:23:14,163 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.08397v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:23:14,165 [INFO] papermind.api: [702a5550] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:57528 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:23:14,621 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.08397v1 "HTTP/1.1 200 OK"
-2026-02-26 13:23:14,898 [INFO] papermind.api: [48f5be85] POST /jobs/daily/run-once → 200 (1ms)
-INFO: 127.0.0.1:57553 - "POST /jobs/daily/run-once HTTP/1.1" 200 OK
-2026-02-26 13:23:14,901 [INFO] packages.integrations.arxiv_client: ArXiv search: 3D texture mapping textured surface → all:3D AND all:texture AND all:mapping (sort=submittedDate start=0)
-2026-02-26 13:23:15,390 [INFO] httpx: HTTP Request: GET https://export.arxiv.org/api/query?search_query=all%3A3D+AND+all%3Atexture+AND+all%3Amapping&sortBy=submittedDate&sortOrder=descending&start=0&max_results=20 "HTTP/1.1 200 OK"
-2026-02-26 13:23:16,105 [INFO] papermind.api: [eb337c81] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57557 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:16,108 [INFO] papermind.api: [cb12b444] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57557 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:17,918 [INFO] papermind.api: [033135a2] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57564 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:18,105 [INFO] papermind.api: [e6c7aa10] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57557 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:18,108 [INFO] papermind.api: [10e04b8e] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57557 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:20,105 [INFO] papermind.api: [1dfc7c16] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57557 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:20,107 [INFO] papermind.api: [869a6710] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57557 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:22,104 [INFO] papermind.api: [72ebe885] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57570 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:22,107 [INFO] papermind.api: [1ddce009] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57570 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:24,105 [INFO] papermind.api: [4dce02c7] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57570 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:24,108 [INFO] papermind.api: [552f9624] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57570 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:24,998 [INFO] papermind.api: [ce1d8531] POST /citations/sync/incremental → 200 (1ms)
-INFO: 127.0.0.1:57575 - "POST /citations/sync/incremental HTTP/1.1" 200 OK
-2026-02-26 13:23:26,021 [INFO] papermind.api: [7dccfe63] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57579 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:26,105 [INFO] papermind.api: [0d4bd246] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57581 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:26,108 [INFO] papermind.api: [3ae7d677] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57581 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:27,195 [INFO] papermind.api: [5d807f0d] GET /today → 200 (3ms)
-INFO: 127.0.0.1:57591 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:23:27,197 [INFO] papermind.api: [2201c07d] GET /pipelines/runs → 200 (6ms)
-INFO: 127.0.0.1:57590 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:23:27,197 [INFO] papermind.api: [660c43fb] GET /papers/folder-stats → 200 (8ms)
-INFO: 127.0.0.1:57581 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:23:27,198 [INFO] papermind.api: [4047c93e] GET /today → 200 (1ms)
-INFO: 127.0.0.1:57591 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:23:27,200 [INFO] papermind.api: [8c10382b] GET /metrics/costs → 200 (8ms)
-INFO: 127.0.0.1:57589 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
-2026-02-26 13:23:27,201 [INFO] papermind.api: [db201907] GET /pipelines/runs → 200 (3ms)
-INFO: 127.0.0.1:57593 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:23:27,204 [INFO] papermind.api: [9e62022a] GET /metrics/costs → 200 (3ms)
-INFO: 127.0.0.1:57591 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
-2026-02-26 13:23:27,229 [INFO] papermind.api: [255faf74] GET /system/status → 200 (37ms)
-INFO: 127.0.0.1:57587 - "GET /system/status HTTP/1.1" 200 OK
-2026-02-26 13:23:27,255 [INFO] papermind.api: [f8b44eb4] GET /system/status → 200 (26ms)
-INFO: 127.0.0.1:57591 - "GET /system/status HTTP/1.1" 200 OK
-2026-02-26 13:23:27,396 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Enhanced+Diffusion+Sampling%3A+Efficient+Rare+Event+Sampling+and+Free+Energy+Calculation+with+Diffusion+Models%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:23:27,805 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7130542318&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:23:28,104 [INFO] papermind.api: [bf8be357] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57591 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:28,107 [INFO] papermind.api: [cedf2299] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57591 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:28,843 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Enhanced+Diffusion+Sampling%3A+Efficient+Rare+Event+Sampling+and+Free+Energy+Calculation+with+Diffusion+Models&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:23:29,403 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/8b305a5b5d043fef8b823f75f964dd8495199537?fields=references.title%2Ccitations.title "HTTP/1.1 200 OK"
-2026-02-26 13:23:30,105 [INFO] papermind.api: [23d75665] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57591 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:30,107 [INFO] papermind.api: [4e3437b9] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57591 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:32,105 [INFO] papermind.api: [8adff1a5] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57608 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:32,108 [INFO] papermind.api: [fc05bf2a] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57608 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:32,204 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.06122v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:23:32,576 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.06122v1 "HTTP/1.1 200 OK"
-2026-02-26 13:23:34,106 [INFO] papermind.api: [45d1b019] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57608 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:34,110 [INFO] papermind.api: [9250c490] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57608 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:36,106 [INFO] papermind.api: [1a3ddbea] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57617 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:36,108 [INFO] papermind.api: [00dfefcd] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57617 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:36,636 [INFO] papermind.api: [21c01c26] POST /jobs/batch-process-unread → 200 (4ms)
-INFO: 127.0.0.1:57621 - "POST /jobs/batch-process-unread?max_papers=10 HTTP/1.1" 200 OK
-2026-02-26 13:23:37,213 [INFO] httpx: HTTP Request: POST https://open.bigmodel.cn/api/paas/v4/embeddings "HTTP/1.1 200 OK"
-2026-02-26 13:23:37,224 [INFO] httpx: HTTP Request: POST https://open.bigmodel.cn/api/paas/v4/embeddings "HTTP/1.1 200 OK"
-2026-02-26 13:23:37,269 [INFO] httpx: HTTP Request: POST https://open.bigmodel.cn/api/paas/v4/embeddings "HTTP/1.1 200 OK"
-2026-02-26 13:23:37,654 [INFO] papermind.api: [6c1cd7d8] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57635 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:38,104 [INFO] papermind.api: [fe196071] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57617 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:38,107 [INFO] papermind.api: [141b3ad9] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57617 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:39,706 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2601.17895v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:23:39,807 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2601.17895v1 "HTTP/1.1 200 OK"
-2026-02-26 13:23:40,106 [INFO] papermind.api: [8605b1c4] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:57617 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:40,108 [INFO] papermind.api: [25787766] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57617 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:40,998 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2601.14703v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:23:41,354 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2601.14703v1 "HTTP/1.1 200 OK"
-2026-02-26 13:23:41,859 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2601.13706v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:23:42,106 [INFO] papermind.api: [49235888] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57646 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:42,107 [INFO] papermind.api: [3a8dc7df] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57646 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:42,233 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2601.13706v1 "HTTP/1.1 200 OK"
-2026-02-26 13:23:44,106 [INFO] papermind.api: [6c89a83d] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:57646 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:44,109 [INFO] papermind.api: [d499cd35] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57646 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:44,110 [INFO] papermind.api: [369b529b] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:57651 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:23:46,106 [INFO] papermind.api: [357601f5] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57671 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:46,108 [INFO] papermind.api: [c52f0314] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57671 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:46,569 [INFO] packages.integrations.arxiv_client: ArXiv search: 3D texture mapping textured surface → all:3D AND all:texture AND all:mapping (sort=submittedDate start=0)
-2026-02-26 13:23:46,936 [INFO] httpx: HTTP Request: GET https://export.arxiv.org/api/query?search_query=all%3A3D+AND+all%3Atexture+AND+all%3Amapping&sortBy=submittedDate&sortOrder=descending&start=0&max_results=20 "HTTP/1.1 200 OK"
-2026-02-26 13:23:48,105 [INFO] papermind.api: [fcd9971a] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57671 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:48,107 [INFO] papermind.api: [966e1c4d] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57671 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:50,105 [INFO] papermind.api: [cbc16115] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57671 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:50,108 [INFO] papermind.api: [6cfcf3d9] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57671 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:52,106 [INFO] papermind.api: [d88a6c81] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57688 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:52,108 [INFO] papermind.api: [49fb6dcf] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57688 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:54,055 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2601.13371v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:23:54,104 [INFO] papermind.api: [9f048cac] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57688 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:54,108 [INFO] papermind.api: [3307bd27] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57688 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:55,579 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2601.13371v1 "HTTP/1.1 200 OK"
-2026-02-26 13:23:56,107 [INFO] papermind.api: [b5f97606] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57699 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:56,110 [INFO] papermind.api: [9bcbf36b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57699 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:57,195 [INFO] papermind.api: [4a8b40fb] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:57699 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:23:58,105 [INFO] papermind.api: [5bb1a959] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57699 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:23:58,107 [INFO] papermind.api: [b775d217] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57699 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:00,106 [INFO] papermind.api: [920ebc1d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57699 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:00,108 [INFO] papermind.api: [8feb5414] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57699 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:00,546 [WARNING] packages.ai.graph_service: sync_incremental skip 7f946b67: (sqlite3.OperationalError) database is locked
-[SQL: INSERT INTO papers (id, title, arxiv_id, abstract, pdf_path, publication_date, read_status, metadata, favorited, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
-[parameters: ('54278752-8e32-4a9f-9c32-c812f8c6c788', 'Enhanced Diffusion Sampling: Efficient Rare Event Sampling and Free Energy Calculation with Diffusion Models', 'ss-enhanced-diffusion-sampling--efficient-rare-even', '', None, None, 'unread', '{"source": "semantic_scholar"}', 0, '2026-02-26 05:23:29.433902', '2026-02-26 05:23:29.433905')]
-(Background on this error at: https://sqlalche.me/e/20/e3q8)
-2026-02-26 13:24:02,107 [INFO] papermind.api: [3eefaa50] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:57712 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:02,108 [INFO] papermind.api: [5b804f03] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57712 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:02,488 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22AREG%3A+Adversarial+Resource+Extraction+Game+for+Evaluating+Persuasion+and+Resistance+in+Large+Language+Models%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:24:02,892 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7130573691&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:24:03,442 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=AREG%3A+Adversarial+Resource+Extraction+Game+for+Evaluating+Persuasion+and+Resistance+in+Large+Language+Models&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:24:03,442 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:24:04,117 [INFO] papermind.api: [eafdf2f2] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57712 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:04,119 [INFO] papermind.api: [39aa40ac] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57714 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:06,056 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=AREG%3A+Adversarial+Resource+Extraction+Game+for+Evaluating+Persuasion+and+Resistance+in+Large+Language+Models&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:24:06,056 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:24:06,106 [INFO] papermind.api: [4da35af7] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57719 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:06,109 [INFO] papermind.api: [166df90d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57719 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:07,754 [WARNING] packages.ai.daily_runner: skim 082d2d12 failed: (sqlite3.OperationalError) database is locked
-[SQL: INSERT INTO pipeline_runs (id, paper_id, pipeline_name, status, retry_count, elapsed_ms, decision_note, error_message, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
-[parameters: ('2c450082-673a-4875-99bb-f08b07daf974', '082d2d12-70ea-45c5-a308-80448c5a50db', 'skim', 'running', 0, None, None, None, '2026-02-26 05:23:36.641710', '2026-02-26 05:23:36.641713')]
-(Background on this error at: https://sqlalche.me/e/20/e3q8)
-2026-02-26 13:24:07,768 [WARNING] packages.ai.daily_runner: skim 228a4e67 failed: (sqlite3.OperationalError) database is locked
-[SQL: INSERT INTO pipeline_runs (id, paper_id, pipeline_name, status, retry_count, elapsed_ms, decision_note, error_message, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
-[parameters: ('314befb3-6f01-4c7d-a509-e9b74c74fd88', '228a4e67-5607-4150-9c17-a9d7bda9259d', 'skim', 'running', 0, None, None, None, '2026-02-26 05:23:36.643224', '2026-02-26 05:23:36.643225')]
-(Background on this error at: https://sqlalche.me/e/20/e3q8)
-2026-02-26 13:24:07,780 [WARNING] packages.ai.daily_runner: skim 1b8826bb failed: (sqlite3.OperationalError) database is locked
-[SQL: INSERT INTO pipeline_runs (id, paper_id, pipeline_name, status, retry_count, elapsed_ms, decision_note, error_message, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
-[parameters: ('a0fb56ad-b017-417e-a802-104a29cb004a', '1b8826bb-b7ad-4672-9ede-f3f58f93feca', 'skim', 'running', 0, None, None, None, '2026-02-26 05:23:36.638935', '2026-02-26 05:23:36.638942')]
-(Background on this error at: https://sqlalche.me/e/20/e3q8)
-2026-02-26 13:24:08,105 [INFO] papermind.api: [0aaa3ccd] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57719 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:08,108 [INFO] papermind.api: [2eb25c5b] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57719 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:10,105 [INFO] papermind.api: [c278cea3] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57719 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:10,108 [INFO] papermind.api: [eff66423] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57719 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:10,654 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=AREG%3A+Adversarial+Resource+Extraction+Game+for+Evaluating+Persuasion+and+Resistance+in+Large+Language+Models&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:24:10,655 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:24:12,107 [INFO] papermind.api: [744586cc] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57741 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:12,110 [INFO] papermind.api: [da41cb4a] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57741 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:14,107 [INFO] papermind.api: [bbf9ca9c] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:57741 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:14,108 [INFO] papermind.api: [0bb426ef] GET /papers/folder-stats → 200 (2ms)
-INFO: 127.0.0.1:57743 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:24:14,109 [INFO] papermind.api: [0b07407d] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57741 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:16,106 [INFO] papermind.api: [f151af5d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57755 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:16,108 [INFO] papermind.api: [c11364cc] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57755 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:18,106 [INFO] papermind.api: [e80ee6a9] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57755 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:18,107 [INFO] papermind.api: [4a774cd2] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57755 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:18,171 [INFO] packages.integrations.arxiv_client: ArXiv search: 3D texture mapping textured surface → all:3D AND all:texture AND all:mapping (sort=submittedDate start=0)
-2026-02-26 13:24:18,580 [INFO] httpx: HTTP Request: GET https://export.arxiv.org/api/query?search_query=all%3A3D+AND+all%3Atexture+AND+all%3Amapping&sortBy=submittedDate&sortOrder=descending&start=0&max_results=20 "HTTP/1.1 200 OK"
-2026-02-26 13:24:19,241 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=AREG%3A+Adversarial+Resource+Extraction+Game+for+Evaluating+Persuasion+and+Resistance+in+Large+Language+Models&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:24:19,241 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:24:20,105 [INFO] papermind.api: [ca5c7149] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57755 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:20,107 [INFO] papermind.api: [156d6e68] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57755 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:22,107 [INFO] papermind.api: [acac6809] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57776 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:22,109 [INFO] papermind.api: [52c1bfcc] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57776 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:24,105 [INFO] papermind.api: [53fd21b8] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57776 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:24,107 [INFO] papermind.api: [99690505] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57776 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:26,106 [INFO] papermind.api: [c5924fac] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57779 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:26,108 [INFO] papermind.api: [e84a2367] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57779 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:27,195 [INFO] papermind.api: [826f9912] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:57779 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:24:28,104 [INFO] papermind.api: [fa95c2e7] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57779 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:28,107 [INFO] papermind.api: [1fb95c7b] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57779 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:30,106 [INFO] papermind.api: [7bf990d0] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57779 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:30,108 [INFO] papermind.api: [726b0587] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57779 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:32,105 [INFO] papermind.api: [97a603a1] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57798 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:32,108 [INFO] papermind.api: [5e33ae9b] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57798 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:34,105 [INFO] papermind.api: [5eeb2f13] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57798 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:34,108 [INFO] papermind.api: [9de5dbfb] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57798 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:35,122 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=AREG%3A+Adversarial+Resource+Extraction+Game+for+Evaluating+Persuasion+and+Resistance+in+Large+Language+Models&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:24:35,122 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 5/5 in 15.0s
-2026-02-26 13:24:36,106 [INFO] papermind.api: [004728df] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57807 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:36,109 [INFO] papermind.api: [38cf1082] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57807 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:38,105 [INFO] papermind.api: [75077cea] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57807 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:38,108 [INFO] papermind.api: [087bdb8b] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57807 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:39,460 [WARNING] packages.ai.daily_runner: embed 228a4e67 failed: (sqlite3.OperationalError) database is locked
-[SQL: UPDATE papers SET embedding=?, updated_at=? WHERE papers.id = ?]
-[parameters: ('[-0.011545514, -0.014175208, -0.0018845274, -0.000897737, 0.0039314465, -0.0024437304, 0.005772757, -0.016773473, 0.010833086, 0.008942011, -0.013075 ... (27518 characters truncated) ... .025479754, -0.0026611255, -0.004601966, 0.021854756, -0.0069356896, 0.0034128411, -0.02489305, 0.016459167, 0.016427737, -0.05980199, -0.0040702648]', '2026-02-26 05:24:08.363881', '228a4e67-5607-4150-9c17-a9d7bda9259d')]
-(Background on this error at: https://sqlalche.me/e/20/e3q8)
-2026-02-26 13:24:39,490 [WARNING] packages.ai.daily_runner: embed 082d2d12 failed: (sqlite3.OperationalError) database is locked
-[SQL: UPDATE papers SET embedding=?, updated_at=? WHERE papers.id = ?]
-[parameters: ('[-0.01096707, -0.003603252, 0.011027, 0.0017604246, -0.00801555, -0.028346581, -0.017369522, 0.0078107915, -0.002936538, -0.00043261496, 0.025789596, ... (27548 characters truncated) ... 3116326, 0.024650939, -0.0038379752, -0.013394209, -0.0025282693, -0.0027367736, -0.024291363, -0.008704738, 0.009768483, -0.028286653, 0.0049167033]', '2026-02-26 05:24:08.349930', '082d2d12-70ea-45c5-a308-80448c5a50db')]
-(Background on this error at: https://sqlalche.me/e/20/e3q8)
-2026-02-26 13:24:39,519 [WARNING] packages.ai.daily_runner: embed 1b8826bb failed: (sqlite3.OperationalError) database is locked
-[SQL: UPDATE papers SET embedding=?, updated_at=? WHERE papers.id = ?]
-[parameters: ('[-0.028504645, 0.004618321, 0.020841654, -0.0016065441, -0.018894328, -0.0035867644, 0.0038130754, -0.0045709535, -0.023262653, 0.010178727, -0.00855 ... (27542 characters truncated) ... -0.025599446, 0.025894176, 0.005410409, 0.0012302365, -0.010399775, -0.023304759, 0.0367571, -0.003936757, -0.007820883, -0.018241711, -0.0108523965]', '2026-02-26 05:24:08.379012', '1b8826bb-b7ad-4672-9ede-f3f58f93feca')]
-(Background on this error at: https://sqlalche.me/e/20/e3q8)
-2026-02-26 13:24:39,731 [INFO] httpx: HTTP Request: POST https://open.bigmodel.cn/api/paas/v4/embeddings "HTTP/1.1 200 OK"
-2026-02-26 13:24:39,870 [INFO] httpx: HTTP Request: POST https://open.bigmodel.cn/api/paas/v4/embeddings "HTTP/1.1 200 OK"
-2026-02-26 13:24:39,870 [INFO] httpx: HTTP Request: POST https://open.bigmodel.cn/api/paas/v4/embeddings "HTTP/1.1 200 OK"
-2026-02-26 13:24:40,106 [INFO] papermind.api: [cfc2c18c] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57807 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:40,108 [INFO] papermind.api: [aa2120fa] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57807 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:42,105 [INFO] papermind.api: [b9797054] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57836 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:42,109 [INFO] papermind.api: [97d325ac] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57836 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:44,106 [INFO] papermind.api: [eaf4a155] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57836 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:44,109 [INFO] papermind.api: [03717b3f] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57836 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:44,111 [INFO] papermind.api: [f6343aa1] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:57841 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:24:46,106 [INFO] papermind.api: [48acdf68] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57851 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:46,108 [INFO] papermind.api: [63845059] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57851 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:48,106 [INFO] papermind.api: [1f8c14bb] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57851 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:48,108 [INFO] papermind.api: [290bdfbe] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57851 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:49,834 [INFO] packages.integrations.arxiv_client: ArXiv search: texture mapping 3D → all:texture AND all:mapping AND all:3D (sort=submittedDate start=0)
-2026-02-26 13:24:50,107 [INFO] papermind.api: [34b8f736] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57851 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:50,111 [INFO] papermind.api: [17c961b8] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57851 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:50,127 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/search
-2026-02-26 13:24:50,736 [INFO] httpx: HTTP Request: GET https://export.arxiv.org/api/query?search_query=all%3Atexture+AND+all%3Amapping+AND+all%3A3D&sortBy=submittedDate&sortOrder=descending&start=0&max_results=20 "HTTP/1.1 200 OK"
-2026-02-26 13:24:51,375 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Quecto-V1%3A+Empirical+Analysis+of+8-bit+Quantized+Small+Language+Models+for+On-Device+Legal+Retrieval%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:24:51,802 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7130617415&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:24:52,105 [INFO] papermind.api: [f594cf2d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57872 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:52,108 [INFO] papermind.api: [5b73e7ed] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57872 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:52,385 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Quecto-V1%3A+Empirical+Analysis+of+8-bit+Quantized+Small+Language+Models+for+On-Device+Legal+Retrieval&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:24:52,386 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:24:54,105 [INFO] papermind.api: [2b19efd9] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57872 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:54,108 [INFO] papermind.api: [a2c5a48f] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57872 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:54,676 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Quecto-V1%3A+Empirical+Analysis+of+8-bit+Quantized+Small+Language+Models+for+On-Device+Legal+Retrieval&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:24:54,676 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:24:56,107 [INFO] papermind.api: [60f38879] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57877 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:56,109 [INFO] papermind.api: [0233b310] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57877 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:56,631 [INFO] papermind.api: [a6377cf3] GET /today → 200 (3ms)
-INFO: 127.0.0.1:57889 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:24:58,106 [INFO] papermind.api: [46648995] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57896 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:58,108 [INFO] papermind.api: [20b65dd6] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57896 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:24:58,968 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Quecto-V1%3A+Empirical+Analysis+of+8-bit+Quantized+Small+Language+Models+for+On-Device+Legal+Retrieval&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:24:58,968 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:25:00,106 [INFO] papermind.api: [a4050eba] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57896 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:00,108 [INFO] papermind.api: [8dc431e1] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57896 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:02,105 [INFO] papermind.api: [b0ac7b88] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57904 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:02,108 [INFO] papermind.api: [b1318caf] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57904 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:04,106 [INFO] papermind.api: [289d0e05] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57904 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:04,107 [INFO] papermind.api: [fe938d1d] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57904 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:06,105 [INFO] papermind.api: [56f3d008] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57911 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:06,108 [INFO] papermind.api: [e3b8b83d] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57911 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:07,448 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Quecto-V1%3A+Empirical+Analysis+of+8-bit+Quantized+Small+Language+Models+for+On-Device+Legal+Retrieval&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:25:07,448 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:25:08,107 [INFO] papermind.api: [699592a7] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57911 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:08,110 [INFO] papermind.api: [1dac6b90] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57911 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:10,105 [INFO] papermind.api: [8919fdfd] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57911 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:10,108 [INFO] papermind.api: [d9ef3069] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57911 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:10,336 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2601.10814v2.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:25:10,440 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2601.10814v2 "HTTP/1.1 200 OK"
-2026-02-26 13:25:10,602 [WARNING] packages.ai.daily_runner: skim 0adc4a13 failed: (sqlite3.OperationalError) database is locked
-[SQL: INSERT INTO pipeline_runs (id, paper_id, pipeline_name, status, retry_count, elapsed_ms, decision_note, error_message, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
-[parameters: ('045cca09-e468-4d31-9830-50bf50fc1ea3', '0adc4a13-766b-4e0d-873e-83ca660aa9e3', 'skim', 'running', 0, None, None, None, '2026-02-26 05:24:39.492079', '2026-02-26 05:24:39.492086')]
-(Background on this error at: https://sqlalche.me/e/20/e3q8)
-2026-02-26 13:25:10,609 [INFO] papermind.api: [f5982fc4] GET /metrics/costs → 200 (13981ms)
-INFO: 127.0.0.1:57886 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
-2026-02-26 13:25:10,610 [INFO] papermind.api: [a570a5a6] GET /pipelines/runs → 200 (13982ms)
-INFO: 127.0.0.1:57887 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:25:10,611 [INFO] papermind.api: [a3a3d42d] GET /system/status → 200 (13984ms)
-INFO: 127.0.0.1:57877 - "GET /system/status HTTP/1.1" 200 OK
-2026-02-26 13:25:10,612 [INFO] papermind.api: [d086bf6c] GET /papers/folder-stats → 200 (13421ms)
-INFO: 127.0.0.1:57889 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:25:10,624 [WARNING] packages.ai.daily_runner: skim 28d49135 failed: (sqlite3.OperationalError) database is locked
-[SQL: INSERT INTO pipeline_runs (id, paper_id, pipeline_name, status, retry_count, elapsed_ms, decision_note, error_message, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
-[parameters: ('4efe01cb-1e4e-40b4-a041-bccef42ec3ca', '28d49135-6c26-405b-b71c-a810271b0355', 'skim', 'running', 0, None, None, None, '2026-02-26 05:24:39.466926', '2026-02-26 05:24:39.466935')]
-(Background on this error at: https://sqlalche.me/e/20/e3q8)
-2026-02-26 13:25:10,695 [WARNING] packages.ai.daily_runner: skim f98771c2 failed: (sqlite3.OperationalError) database is locked
-[SQL: INSERT INTO pipeline_runs (id, paper_id, pipeline_name, status, retry_count, elapsed_ms, decision_note, error_message, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
-[parameters: ('0391865e-e7a9-4412-96eb-f3d89f4c3454', 'f98771c2-8da2-49dc-ac30-eba0ba4b1465', 'skim', 'running', 0, None, None, None, '2026-02-26 05:24:39.520693', '2026-02-26 05:24:39.520695')]
-(Background on this error at: https://sqlalche.me/e/20/e3q8)
-2026-02-26 13:25:11,385 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2601.07571v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:25:12,110 [INFO] papermind.api: [dd2a192f] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:57927 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:12,113 [INFO] papermind.api: [ed884956] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57927 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:12,417 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2601.07571v1 "HTTP/1.1 200 OK"
-2026-02-26 13:25:14,107 [INFO] papermind.api: [b452cc0e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57927 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:14,108 [INFO] papermind.api: [d1023bc8] GET /papers/folder-stats → 200 (2ms)
-INFO: 127.0.0.1:57929 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:25:14,108 [INFO] papermind.api: [49833c42] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57927 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:16,107 [INFO] papermind.api: [173c510b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57936 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:16,109 [INFO] papermind.api: [8141a14b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57938 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:18,105 [INFO] papermind.api: [14726648] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57938 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:18,107 [INFO] papermind.api: [4498a664] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57938 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:20,105 [INFO] papermind.api: [dc6fb32c] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57938 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:20,108 [INFO] papermind.api: [f6218406] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57938 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:22,001 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2601.04520v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:25:22,025 [INFO] packages.integrations.arxiv_client: ArXiv search: texture mapping 3D → all:texture AND all:mapping AND all:3D (sort=submittedDate start=0)
-2026-02-26 13:25:22,107 [INFO] papermind.api: [6a095adf] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57952 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:22,109 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2601.04520v1 "HTTP/1.1 200 OK"
-2026-02-26 13:25:22,110 [INFO] papermind.api: [ab492dff] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57954 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:22,434 [INFO] httpx: HTTP Request: GET https://export.arxiv.org/api/query?search_query=all%3Atexture+AND+all%3Amapping+AND+all%3A3D&sortBy=submittedDate&sortOrder=descending&start=0&max_results=20 "HTTP/1.1 200 OK"
-2026-02-26 13:25:23,293 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Quecto-V1%3A+Empirical+Analysis+of+8-bit+Quantized+Small+Language+Models+for+On-Device+Legal+Retrieval&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:25:23,294 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 5/5 in 15.0s
-2026-02-26 13:25:24,105 [INFO] papermind.api: [aeefd5e3] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57954 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:24,109 [INFO] papermind.api: [4a4861a9] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57954 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:24,296 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2512.23635v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:25:24,775 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2512.23635v1 "HTTP/1.1 200 OK"
-2026-02-26 13:25:26,105 [INFO] papermind.api: [32f4b702] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57966 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:26,108 [INFO] papermind.api: [0382b3f9] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57966 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:27,194 [INFO] papermind.api: [fb3ccbd7] GET /papers/folder-stats → 200 (3ms)
-INFO: 127.0.0.1:57966 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:25:27,743 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2512.22486v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:25:28,105 [INFO] papermind.api: [add654da] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57966 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:28,108 [INFO] papermind.api: [53e6032a] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57966 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:28,875 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2512.22486v1 "HTTP/1.1 200 OK"
-2026-02-26 13:25:29,847 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2512.19402v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:25:30,107 [INFO] papermind.api: [2a424f20] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57966 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:30,108 [INFO] papermind.api: [12d07825] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57966 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:31,555 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2512.19402v1 "HTTP/1.1 200 OK"
-2026-02-26 13:25:32,105 [INFO] papermind.api: [714f5a4e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57977 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:32,108 [INFO] papermind.api: [37a5d641] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57977 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:34,105 [INFO] papermind.api: [5a62753c] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57977 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:34,108 [INFO] papermind.api: [550aa16f] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57977 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:36,125 [INFO] papermind.api: [7702b61b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57988 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:36,127 [INFO] papermind.api: [1b178709] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57990 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:36,607 [ERROR] apps.api.main: 每日任务失败: Instance
is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
-Traceback (most recent call last):
- File "/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py", line 1321, in _run_daily
- ingest = run_daily_ingest()
- File "/Users/haojiang/Documents/2026/PaperMind/packages/ai/daily_runner.py", line 147, in run_daily_ingest
- results.append(run_topic_ingest(tid))
- ~~~~~~~~~~~~~~~~^^^^^
- File "/Users/haojiang/Documents/2026/PaperMind/packages/ai/daily_runner.py", line 106, in run_topic_ingest
- futs = {pool.submit(_process_paper, p.id): p for p in unique}
- ^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/sqlalchemy/orm/attributes.py", line 569, in __get__
- return self.impl.get(state, dict_) # type: ignore[no-any-return]
- ~~~~~~~~~~~~~^^^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/sqlalchemy/orm/attributes.py", line 1096, in get
- value = self._fire_loader_callables(state, key, passive)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/sqlalchemy/orm/attributes.py", line 1126, in _fire_loader_callables
- return state._load_expired(state, passive)
- ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/sqlalchemy/orm/state.py", line 828, in _load_expired
- self.manager.expired_attribute_loader(self, toload, passive)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/sqlalchemy/orm/loading.py", line 1607, in load_scalar_attributes
- raise orm_exc.DetachedInstanceError(
- ...<2 lines>...
- )
-sqlalchemy.orm.exc.DetachedInstanceError: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
-2026-02-26 13:25:36,924 [INFO] httpx: HTTP Request: POST https://open.bigmodel.cn/api/paas/v4/embeddings "HTTP/1.1 200 OK"
-2026-02-26 13:25:38,105 [INFO] papermind.api: [fa42b281] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:57990 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:38,108 [INFO] papermind.api: [4453d801] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57990 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:38,299 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/search
-2026-02-26 13:25:38,566 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22EndoDDC%3A+Learning+Sparse+to+Dense+Reconstruction+for+Endoscopic+Robotic+Navigation+via+Diffusion+Depth+Completion%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:25:40,062 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Optimizer+choice+matters+for+the+emergence+of+Neural+Collapse%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:25:40,105 [INFO] papermind.api: [27632aa8] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57990 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:40,109 [INFO] papermind.api: [58625a62] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:57990 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:40,441 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7130618016&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:25:40,967 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Optimizer+choice+matters+for+the+emergence+of+Neural+Collapse&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:25:40,967 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:25:41,130 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=EndoDDC%3A+Learning+Sparse+to+Dense+Reconstruction+for+Endoscopic+Robotic+Navigation+via+Diffusion+Depth+Completion&limit=1&fields=title "HTTP/1.1 500 Internal Server Error"
-2026-02-26 13:25:41,130 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 500 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:25:42,052 [WARNING] packages.ai.daily_runner: embed 0adc4a13 failed: (sqlite3.OperationalError) database is locked
-[SQL: UPDATE papers SET embedding=?, updated_at=? WHERE papers.id = ?]
-[parameters: ('[-0.011054196, -0.0021972682, -0.0037702706, 0.0077231326, -0.02003573, -0.01949289, -0.034978636, -0.0049595837, -0.0068743285, -0.008458435, -0.002 ... (27551 characters truncated) ... 02175308, 0.013807876, -0.010540966, -0.010077084, -0.009243085, 0.0020701943, 0.0034346967, 0.0073135355, -0.0047794594, -0.008739724, -0.020252867]', '2026-02-26 05:25:10.927785', '0adc4a13-766b-4e0d-873e-83ca660aa9e3')]
-(Background on this error at: https://sqlalche.me/e/20/e3q8)
-2026-02-26 13:25:42,106 [INFO] papermind.api: [eb2315d0] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58027 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:42,108 [INFO] papermind.api: [f1cbf185] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58027 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:42,262 [WARNING] packages.ai.daily_runner: embed 28d49135 failed: (sqlite3.OperationalError) database is locked
-[SQL: UPDATE papers SET embedding=?, updated_at=? WHERE papers.id = ?]
-[parameters: ('[-0.019162674, 0.012785112, 0.008881604, 0.020832036, -0.02451063, -0.01564402, 0.008181872, -0.005947726, 0.028389147, 0.02487049, -0.0009758769, 0. ... (27527 characters truncated) ... 15753977, 0.033207305, -0.014334519, 0.0021304355, -0.009851233, 0.027109634, -0.00074409053, -0.0028664041, 0.023870872, -0.012585188, -0.018782819]', '2026-02-26 05:25:11.110385', '28d49135-6c26-405b-b71c-a810271b0355')]
-(Background on this error at: https://sqlalche.me/e/20/e3q8)
-2026-02-26 13:25:42,295 [INFO] httpx: HTTP Request: POST https://open.bigmodel.cn/api/paas/v4/embeddings "HTTP/1.1 200 OK"
-2026-02-26 13:25:42,588 [INFO] httpx: HTTP Request: POST https://open.bigmodel.cn/api/paas/v4/embeddings "HTTP/1.1 200 OK"
-2026-02-26 13:25:43,413 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=EndoDDC%3A+Learning+Sparse+to+Dense+Reconstruction+for+Endoscopic+Robotic+Navigation+via+Diffusion+Depth+Completion&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:25:43,414 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:25:43,566 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Optimizer+choice+matters+for+the+emergence+of+Neural+Collapse&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:25:43,566 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:25:44,110 [INFO] papermind.api: [472cf710] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:58027 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:44,115 [INFO] papermind.api: [6c94f29e] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:58027 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:44,123 [INFO] papermind.api: [e242dcc7] GET /papers/folder-stats → 200 (14ms)
-INFO: 127.0.0.1:58044 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:25:46,105 [INFO] papermind.api: [181a7b55] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58060 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:46,108 [INFO] papermind.api: [5f6610f0] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58060 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:47,836 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Optimizer+choice+matters+for+the+emergence+of+Neural+Collapse&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:25:47,837 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:25:48,103 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=EndoDDC%3A+Learning+Sparse+to+Dense+Reconstruction+for+Endoscopic+Robotic+Navigation+via+Diffusion+Depth+Completion&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:25:48,108 [INFO] papermind.api: [caab9488] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58060 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:48,109 [INFO] papermind.api: [9494173b] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58060 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:49,673 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22SynthRender+and+IRIS%3A+Open-Source+Framework+and+Dataset+for+Bidirectional+Sim-Real+Transfer+in+Industrial+Object+Perception%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:25:50,107 [INFO] papermind.api: [98a50dc1] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58060 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:50,111 [INFO] papermind.api: [7d620bd9] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58060 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:50,140 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=SynthRender+and+IRIS%3A+Open-Source+Framework+and+Dataset+for+Bidirectional+Sim-Real+Transfer+in+Industrial+Object+Perception&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:25:50,982 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/7d9d8f49ecc464bc2dfc86193d18e7e4a0943898?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 200 OK"
-2026-02-26 13:25:52,106 [INFO] papermind.api: [11981075] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58079 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:52,108 [INFO] papermind.api: [66168eeb] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58079 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:52,242 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22BigMaQ%3A+A+Big+Macaque+Motion+and+Animation+Dataset+Bridging+Image+and+3D+Pose+Representations%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:25:52,764 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7131319101&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:25:53,444 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=BigMaQ%3A+A+Big+Macaque+Motion+and+Animation+Dataset+Bridging+Image+and+3D+Pose+Representations&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:25:53,444 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:25:53,687 [INFO] packages.integrations.arxiv_client: ArXiv search: texture mapping 3D → all:texture AND all:mapping AND all:3D (sort=submittedDate start=0)
-2026-02-26 13:25:54,066 [INFO] httpx: HTTP Request: GET https://export.arxiv.org/api/query?search_query=all%3Atexture+AND+all%3Amapping+AND+all%3A3D&sortBy=submittedDate&sortOrder=descending&start=0&max_results=20 "HTTP/1.1 200 OK"
-2026-02-26 13:25:54,106 [INFO] papermind.api: [f547d2e2] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58079 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:54,109 [INFO] papermind.api: [e1d9969a] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58079 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:56,046 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=BigMaQ%3A+A+Big+Macaque+Motion+and+Animation+Dataset+Bridging+Image+and+3D+Pose+Representations&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:25:56,046 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:25:56,106 [INFO] papermind.api: [257d149c] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58090 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:56,108 [INFO] papermind.api: [b98a0ed9] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58090 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:56,676 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Optimizer+choice+matters+for+the+emergence+of+Neural+Collapse&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:25:56,677 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:25:56,913 [INFO] httpx: HTTP Request: POST https://open.bigmodel.cn/api/paas/v4/chat/completions "HTTP/1.1 200 OK"
-2026-02-26 13:25:57,194 [INFO] papermind.api: [a16deed6] GET /papers/folder-stats → 200 (3ms)
-INFO: 127.0.0.1:58090 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:25:58,106 [INFO] papermind.api: [62de5c49] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58090 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:25:58,108 [INFO] papermind.api: [a57ac789] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58090 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:00,107 [INFO] papermind.api: [5367f84c] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58090 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:00,110 [INFO] papermind.api: [955d5074] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58090 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:00,642 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=BigMaQ%3A+A+Big+Macaque+Motion+and+Animation+Dataset+Bridging+Image+and+3D+Pose+Representations&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:26:00,642 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:26:00,899 [INFO] papermind.api: [608fa2cc] GET /today → 200 (2ms)
-INFO: 127.0.0.1:58111 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:26:00,902 [INFO] papermind.api: [4f0775de] GET /pipelines/runs → 200 (5ms)
-INFO: 127.0.0.1:58109 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:26:00,904 [INFO] papermind.api: [75001e87] GET /metrics/costs → 200 (7ms)
-INFO: 127.0.0.1:58108 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
-2026-02-26 13:26:00,930 [INFO] papermind.api: [5a9aa231] GET /system/status → 200 (34ms)
-INFO: 127.0.0.1:58090 - "GET /system/status HTTP/1.1" 200 OK
-2026-02-26 13:26:02,106 [INFO] papermind.api: [57ca24ce] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58115 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:02,109 [INFO] papermind.api: [bdf314b3] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58115 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:04,106 [INFO] papermind.api: [12297801] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58115 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:04,109 [INFO] papermind.api: [2748427c] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58115 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:06,106 [INFO] papermind.api: [d04bbca8] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58122 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:06,109 [INFO] papermind.api: [9a25a2be] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58122 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:08,106 [INFO] papermind.api: [6f97c0a4] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58122 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:08,108 [INFO] papermind.api: [3ace04cd] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58122 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:09,186 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=BigMaQ%3A+A+Big+Macaque+Motion+and+Animation+Dataset+Bridging+Image+and+3D+Pose+Representations&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:26:09,187 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:26:10,051 [INFO] papermind.api: [2834c4a4] GET /today → 200 (2ms)
-INFO: 127.0.0.1:58151 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:26:10,051 [INFO] papermind.api: [1ee419c9] GET /pipelines/runs → 200 (2ms)
-INFO: 127.0.0.1:58150 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:26:10,054 [INFO] papermind.api: [35a14b1f] GET /metrics/costs → 200 (5ms)
-INFO: 127.0.0.1:58148 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
-2026-02-26 13:26:10,080 [INFO] papermind.api: [d16c2a46] GET /system/status → 200 (32ms)
-INFO: 127.0.0.1:58122 - "GET /system/status HTTP/1.1" 200 OK
-2026-02-26 13:26:10,105 [INFO] papermind.api: [19868b97] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58122 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:10,109 [INFO] papermind.api: [a94eb0af] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58122 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:12,106 [INFO] papermind.api: [26115da8] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58157 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:12,109 [INFO] papermind.api: [d5e292a5] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58157 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:12,922 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Optimizer+choice+matters+for+the+emergence+of+Neural+Collapse&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:26:13,345 [WARNING] packages.ai.daily_runner: skim 4f986c68 failed: (sqlite3.OperationalError) database is locked
-[SQL: INSERT INTO pipeline_runs (id, paper_id, pipeline_name, status, retry_count, elapsed_ms, decision_note, error_message, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
-[parameters: ('6b200659-3131-4c0e-a096-c5b9e71163aa', '4f986c68-6f7e-4fbe-a66f-5bf5345a494e', 'skim', 'running', 0, None, None, None, '2026-02-26 05:25:42.264050', '2026-02-26 05:25:42.264054')]
-(Background on this error at: https://sqlalche.me/e/20/e3q8)
-2026-02-26 13:26:13,507 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/47e11b6ab7f7894cb37d44a6f859c24025804be9?fields=references.title%2Ccitations.title "HTTP/1.1 429 "
-2026-02-26 13:26:13,507 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/47e11b6ab7f7894cb37d44a6f859c24025804be9, retry 1/5 in 2.0s
-2026-02-26 13:26:14,109 [INFO] papermind.api: [dd97a120] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:58157 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:14,112 [INFO] papermind.api: [ebd3e93c] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58157 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:14,113 [INFO] papermind.api: [219a6676] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:58166 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:26:16,092 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/47e11b6ab7f7894cb37d44a6f859c24025804be9?fields=references.title%2Ccitations.title "HTTP/1.1 429 "
-2026-02-26 13:26:16,093 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/47e11b6ab7f7894cb37d44a6f859c24025804be9, retry 2/5 in 4.0s
-2026-02-26 13:26:16,106 [INFO] papermind.api: [e0429787] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58174 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:16,108 [INFO] papermind.api: [e82b298b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58174 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:18,106 [INFO] papermind.api: [4b1590ed] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58174 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:18,109 [INFO] papermind.api: [51d455b5] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58174 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:20,107 [INFO] papermind.api: [c93ff83d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58174 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:20,109 [INFO] papermind.api: [092958fd] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58174 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:20,425 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/47e11b6ab7f7894cb37d44a6f859c24025804be9?fields=references.title%2Ccitations.title "HTTP/1.1 200 OK"
-2026-02-26 13:26:22,107 [INFO] papermind.api: [6e68b74f] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58187 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:22,109 [INFO] papermind.api: [42f9345d] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58187 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:24,108 [INFO] papermind.api: [2936c998] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58187 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:24,111 [INFO] papermind.api: [d3ba70e7] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58187 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:24,550 [INFO] httpx: HTTP Request: POST https://open.bigmodel.cn/api/paas/v4/chat/completions "HTTP/1.1 200 OK"
-2026-02-26 13:26:24,971 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.21893v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:26:25,061 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.21893v1 "HTTP/1.1 200 OK"
-2026-02-26 13:26:25,102 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=BigMaQ%3A+A+Big+Macaque+Motion+and+Animation+Dataset+Bridging+Image+and+3D+Pose+Representations&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:26:25,103 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 5/5 in 15.0s
-2026-02-26 13:26:25,545 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.21141v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:26:25,634 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.21141v1 "HTTP/1.1 200 OK"
-2026-02-26 13:26:26,106 [INFO] papermind.api: [486c74ed] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58207 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:26,108 [INFO] papermind.api: [17be82b0] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58207 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:26,673 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.19874v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:26:26,762 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.19874v1 "HTTP/1.1 200 OK"
-2026-02-26 13:26:27,194 [INFO] papermind.api: [9237d273] GET /papers/folder-stats → 200 (2ms)
-INFO: 127.0.0.1:58207 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:26:28,107 [INFO] papermind.api: [336cde7d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58207 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:28,111 [INFO] papermind.api: [a28b07ee] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58207 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:29,771 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.18741v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:26:29,860 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.18741v1 "HTTP/1.1 200 OK"
-2026-02-26 13:26:30,106 [INFO] papermind.api: [cf9a3471] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58207 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:30,109 [INFO] papermind.api: [1bc58af3] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58207 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:32,106 [INFO] papermind.api: [50d8e617] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58220 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:32,109 [INFO] papermind.api: [b4dd6e4f] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58220 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:32,579 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.18258v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:26:32,676 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.18258v1 "HTTP/1.1 200 OK"
-2026-02-26 13:26:34,105 [INFO] papermind.api: [134351ee] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58220 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:34,109 [INFO] papermind.api: [79540194] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58220 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:34,275 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.18174v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:26:34,365 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.18174v1 "HTTP/1.1 200 OK"
-2026-02-26 13:26:34,955 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.13909v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:26:35,050 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.13909v1 "HTTP/1.1 200 OK"
-2026-02-26 13:26:36,109 [INFO] papermind.api: [d8102a68] GET /tasks/active → 200 (4ms)
-INFO: 127.0.0.1:58235 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:36,111 [INFO] papermind.api: [861d955c] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58235 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:36,214 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.12157v2.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:26:36,308 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.12157v2 "HTTP/1.1 200 OK"
-2026-02-26 13:26:37,501 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.08397v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:26:37,593 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.08397v1 "HTTP/1.1 200 OK"
-2026-02-26 13:26:38,106 [INFO] papermind.api: [8df23599] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58235 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:38,109 [INFO] papermind.api: [78cc1e87] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58235 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:39,211 [WARNING] packages.ai.daily_runner: embed 44fc9319 failed: (sqlite3.OperationalError) database is locked
-[SQL: UPDATE papers SET updated_at=? WHERE papers.id = ?]
-[parameters: ('2026-02-26 05:26:08.080128', '44fc9319-f3e8-48b0-a0dd-dc2148208563')]
-(Background on this error at: https://sqlalche.me/e/20/e3q8)
-2026-02-26 13:26:40,106 [INFO] papermind.api: [f6c7ca4c] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58235 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:40,108 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/search
-2026-02-26 13:26:40,110 [INFO] papermind.api: [c9f5f4e4] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58235 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:40,289 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.06122v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:26:40,379 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2602.06122v1 "HTTP/1.1 200 OK"
-2026-02-26 13:26:41,208 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2601.17895v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:26:41,305 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2601.17895v1 "HTTP/1.1 200 OK"
-2026-02-26 13:26:41,660 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Compact+Hadamard+Latent+Codes+for+Efficient+Spectral+Rendering%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:26:42,090 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7131319533&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:26:42,107 [INFO] papermind.api: [4b5e1a37] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58256 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:42,109 [INFO] papermind.api: [69567a86] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58256 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:42,252 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2601.14703v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:26:42,341 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2601.14703v1 "HTTP/1.1 200 OK"
-2026-02-26 13:26:42,498 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2601.13706v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:26:42,589 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2601.13706v1 "HTTP/1.1 200 OK"
-2026-02-26 13:26:44,108 [INFO] papermind.api: [4d5cca76] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:58256 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:44,110 [INFO] papermind.api: [eb2dcf0c] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58256 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:44,112 [INFO] papermind.api: [1c3da37e] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:58265 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:26:44,566 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Compact+Hadamard+Latent+Codes+for+Efficient+Spectral+Rendering&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:26:44,611 [WARNING] packages.ai.daily_runner: embed 005ace55 failed: (sqlite3.OperationalError) database is locked
-[SQL: UPDATE papers SET embedding=?, updated_at=? WHERE papers.id = ?]
-[parameters: ('[0.006871188, 0.009001206, 0.01389273, 0.0028391888, -0.013150983, -0.013150983, 0.0016313433, 0.021069638, 0.006064287, 0.011477039, 0.0013519351, - ... (27479 characters truncated) ... 0.013952872, 0.015316083, -0.02387625, 0.031514246, -0.0016426198, -0.012439306, 0.014333769, -0.0036110072, -0.004550721, -0.022833794, -0.03241637]', '2026-02-26 05:26:13.459510', '005ace55-b3f3-46bf-a1ab-810390f8c1fd')]
-(Background on this error at: https://sqlalche.me/e/20/e3q8)
-2026-02-26 13:26:44,884 [WARNING] packages.ai.daily_runner: embed 4f986c68 failed: (sqlite3.OperationalError) database is locked
-[SQL: UPDATE papers SET updated_at=? WHERE papers.id = ?]
-[parameters: ('2026-02-26 05:26:13.778127', '4f986c68-6f7e-4fbe-a66f-5bf5345a494e')]
-(Background on this error at: https://sqlalche.me/e/20/e3q8)
-2026-02-26 13:26:45,340 [INFO] httpx: HTTP Request: POST https://open.bigmodel.cn/api/paas/v4/embeddings "HTTP/1.1 200 OK"
-2026-02-26 13:26:45,694 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22RoEL%3A+Robust+Event-based+3D+Line+Reconstruction%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:26:46,074 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2601.13371v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:26:46,106 [INFO] papermind.api: [9cb49dd0] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58275 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:46,109 [INFO] papermind.api: [92749b0b] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58275 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:46,114 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7131191878&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:26:46,164 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2601.13371v1 "HTTP/1.1 200 OK"
-2026-02-26 13:26:47,132 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=RoEL%3A+Robust+Event-based+3D+Line+Reconstruction&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:26:47,839 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/c7240b74b1809cf16a85dca2ff6d54a21456df56?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 200 OK"
-2026-02-26 13:26:48,115 [INFO] papermind.api: [f3ff0415] GET /tasks/active → 200 (6ms)
-INFO: 127.0.0.1:58275 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:48,117 [INFO] papermind.api: [6b5e4f88] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58275 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:48,644 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Have+We+Mastered+Scale+in+Deep+Monocular+Visual+SLAM%3F+The+ScaleMaster+Dataset+and+Benchmark%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:26:49,034 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7131089518&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:26:49,652 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Have+We+Mastered+Scale+in+Deep+Monocular+Visual+SLAM%3F+The+ScaleMaster+Dataset+and+Benchmark&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:26:49,652 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:26:50,106 [INFO] papermind.api: [d8624f01] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58275 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:50,109 [INFO] papermind.api: [15a35239] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58275 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:51,587 [WARNING] packages.ai.graph_service: sync_incremental skip 798bbc27: (sqlite3.OperationalError) database is locked
-[SQL: INSERT INTO papers (id, title, arxiv_id, abstract, pdf_path, publication_date, read_status, metadata, favorited, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
-[parameters: ('996885fb-fd41-412c-96d4-853102d9c2c3', 'Optimizer choice matters for the emergence of Neural Collapse', 'ss-optimizer-choice-matters-for-the-emergence-of-ne', '', None, None, 'unread', '{"source": "semantic_scholar"}', 0, '2026-02-26 05:26:20.428782', '2026-02-26 05:26:20.428786')]
-(Background on this error at: https://sqlalche.me/e/20/e3q8)
-2026-02-26 13:26:52,107 [INFO] papermind.api: [bb7789ae] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58296 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:52,109 [INFO] papermind.api: [89b21d97] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58296 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:52,246 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Have+We+Mastered+Scale+in+Deep+Monocular+Visual+SLAM%3F+The+ScaleMaster+Dataset+and+Benchmark&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:26:52,246 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:26:53,850 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Factorization+Machine+with+Quadratic-Optimization+Annealing+for+RNA+Inverse+Folding+and+Evaluation+of+Binary-Integer+Encoding+and+Nucleotide+Assignment%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:26:53,860 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2601.10814v2.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:26:53,949 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2601.10814v2 "HTTP/1.1 200 OK"
-2026-02-26 13:26:54,106 [INFO] papermind.api: [95f85729] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58296 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:54,109 [INFO] papermind.api: [506b49b3] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58296 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:54,485 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2601.07571v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:26:54,575 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2601.07571v1 "HTTP/1.1 200 OK"
-2026-02-26 13:26:55,208 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7130618067&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:26:55,793 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2601.04520v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:26:55,830 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Factorization+Machine+with+Quadratic-Optimization+Annealing+for+RNA+Inverse+Folding+and+Evaluation+of+Binary-Integer+Encoding+and+Nucleotide+Assignment&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:26:55,831 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:26:55,883 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2601.04520v1 "HTTP/1.1 200 OK"
-2026-02-26 13:26:56,109 [INFO] papermind.api: [be2782a4] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58303 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:56,110 [INFO] papermind.api: [ecbd0396] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58303 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:56,263 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2512.23635v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:26:56,351 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2512.23635v1 "HTTP/1.1 200 OK"
-2026-02-26 13:26:57,196 [INFO] papermind.api: [2ce75481] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:58303 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:26:57,492 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2512.22486v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:26:57,581 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2512.22486v1 "HTTP/1.1 200 OK"
-2026-02-26 13:26:57,822 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2512.19402v1.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:26:57,923 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/2512.19402v1 "HTTP/1.1 200 OK"
-2026-02-26 13:26:58,106 [INFO] papermind.api: [8176918f] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58303 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:58,109 [INFO] papermind.api: [36bedcd6] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58303 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:26:58,439 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Factorization+Machine+with+Quadratic-Optimization+Annealing+for+RNA+Inverse+Folding+and+Evaluation+of+Binary-Integer+Encoding+and+Nucleotide+Assignment&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:26:58,439 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:26:59,377 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Have+We+Mastered+Scale+in+Deep+Monocular+Visual+SLAM%3F+The+ScaleMaster+Dataset+and+Benchmark&limit=1&fields=title "HTTP/1.1 500 Internal Server Error"
-2026-02-26 13:26:59,377 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 500 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:26:59,588 [ERROR] apps.api.main: 每日任务失败: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
-Traceback (most recent call last):
- File "/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py", line 1321, in _run_daily
- ingest = run_daily_ingest()
- File "/Users/haojiang/Documents/2026/PaperMind/packages/ai/daily_runner.py", line 147, in run_daily_ingest
- results.append(run_topic_ingest(tid))
- ~~~~~~~~~~~~~~~~^^^^^
- File "/Users/haojiang/Documents/2026/PaperMind/packages/ai/daily_runner.py", line 106, in run_topic_ingest
- futs = {pool.submit(_process_paper, p.id): p for p in unique}
- ^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/sqlalchemy/orm/attributes.py", line 569, in __get__
- return self.impl.get(state, dict_) # type: ignore[no-any-return]
- ~~~~~~~~~~~~~^^^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/sqlalchemy/orm/attributes.py", line 1096, in get
- value = self._fire_loader_callables(state, key, passive)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/sqlalchemy/orm/attributes.py", line 1126, in _fire_loader_callables
- return state._load_expired(state, passive)
- ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/sqlalchemy/orm/state.py", line 828, in _load_expired
- self.manager.expired_attribute_loader(self, toload, passive)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/sqlalchemy/orm/loading.py", line 1607, in load_scalar_attributes
- raise orm_exc.DetachedInstanceError(
- ...<2 lines>...
- )
-sqlalchemy.orm.exc.DetachedInstanceError: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3)
-2026-02-26 13:27:00,107 [INFO] papermind.api: [1d74dfaa] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58303 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:00,109 [INFO] papermind.api: [ac11f831] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58303 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:00,361 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/ss-deepperfusion--a-comprehensible-two-branched-dee.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:27:00,746 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/ss-deepperfusion--a-comprehensible-two-branched-dee "HTTP/1.1 404 Not Found"
-2026-02-26 13:27:00,746 [WARNING] packages.ai.daily_runner: deep_dive 005ace55 failed: Client error '404 Not Found' for url 'https://arxiv.org/pdf/ss-deepperfusion--a-comprehensible-two-branched-dee'
-For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404
-2026-02-26 13:27:01,145 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22EndoDDC%3A+Learning+Sparse+to+Dense+Reconstruction+for+Endoscopic+Robotic+Navigation+via+Diffusion+Depth+Completion%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:27:02,106 [INFO] papermind.api: [1a37805e] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58330 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:02,109 [INFO] papermind.api: [011a9601] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58330 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:02,713 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Factorization+Machine+with+Quadratic-Optimization+Annealing+for+RNA+Inverse+Folding+and+Evaluation+of+Binary-Integer+Encoding+and+Nucleotide+Assignment&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:27:02,714 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:27:02,893 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=EndoDDC%3A+Learning+Sparse+to+Dense+Reconstruction+for+Endoscopic+Robotic+Navigation+via+Diffusion+Depth+Completion&limit=1&fields=title "HTTP/1.1 500 Internal Server Error"
-2026-02-26 13:27:02,893 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 500 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:27:04,107 [INFO] papermind.api: [b70b85e1] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58330 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:04,109 [INFO] papermind.api: [acc3d1b5] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58330 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:05,200 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=EndoDDC%3A+Learning+Sparse+to+Dense+Reconstruction+for+Endoscopic+Robotic+Navigation+via+Diffusion+Depth+Completion&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:27:05,201 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:27:06,107 [INFO] papermind.api: [473b761d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58349 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:06,109 [INFO] papermind.api: [f0e57437] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58349 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:08,106 [INFO] papermind.api: [5e086134] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58349 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:08,109 [INFO] papermind.api: [db25fc92] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58349 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:08,606 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Have+We+Mastered+Scale+in+Deep+Monocular+Visual+SLAM%3F+The+ScaleMaster+Dataset+and+Benchmark&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:27:09,200 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/16dce0cedad31ed2b1924fd706788550d95bb3fb?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 429 "
-2026-02-26 13:27:09,200 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/16dce0cedad31ed2b1924fd706788550d95bb3fb, retry 1/5 in 2.0s
-2026-02-26 13:27:09,681 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=EndoDDC%3A+Learning+Sparse+to+Dense+Reconstruction+for+Endoscopic+Robotic+Navigation+via+Diffusion+Depth+Completion&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:27:10,107 [INFO] papermind.api: [06b359e5] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58349 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:10,110 [INFO] papermind.api: [c1278a35] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58349 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:10,337 [WARNING] packages.ai.daily_runner: deep_dive 44fc9319 failed: (sqlite3.OperationalError) database is locked
-[SQL: INSERT INTO pipeline_runs (id, paper_id, pipeline_name, status, retry_count, elapsed_ms, decision_note, error_message, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]
-[parameters: ('20716090-8896-4956-ae47-2437a6c3fce3', '44fc9319-f3e8-48b0-a0dd-dc2148208563', 'deep_dive', 'running', 0, None, None, None, '2026-02-26 05:26:39.212026', '2026-02-26 05:26:39.212029')]
-(Background on this error at: https://sqlalche.me/e/20/e3q8)
-2026-02-26 13:27:11,255 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Factorization+Machine+with+Quadratic-Optimization+Annealing+for+RNA+Inverse+Folding+and+Evaluation+of+Binary-Integer+Encoding+and+Nucleotide+Assignment&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:27:11,255 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:27:11,481 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/16dce0cedad31ed2b1924fd706788550d95bb3fb?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 429 "
-2026-02-26 13:27:11,481 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/16dce0cedad31ed2b1924fd706788550d95bb3fb, retry 2/5 in 4.0s
-2026-02-26 13:27:11,623 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22SynthRender+and+IRIS%3A+Open-Source+Framework+and+Dataset+for+Bidirectional+Sim-Real+Transfer+in+Industrial+Object+Perception%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:27:11,917 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=SynthRender+and+IRIS%3A+Open-Source+Framework+and+Dataset+for+Bidirectional+Sim-Real+Transfer+in+Industrial+Object+Perception&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:27:11,917 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:27:12,106 [INFO] papermind.api: [99661020] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58366 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:12,109 [INFO] papermind.api: [91f5dc48] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58366 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:14,109 [INFO] papermind.api: [e5f1f37a] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:58366 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:14,112 [INFO] papermind.api: [549fd75f] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58366 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:14,112 [INFO] papermind.api: [fcee5938] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:58371 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:27:14,197 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=SynthRender+and+IRIS%3A+Open-Source+Framework+and+Dataset+for+Bidirectional+Sim-Real+Transfer+in+Industrial+Object+Perception&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:27:14,198 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:27:15,761 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/16dce0cedad31ed2b1924fd706788550d95bb3fb?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 429 "
-2026-02-26 13:27:15,761 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/16dce0cedad31ed2b1924fd706788550d95bb3fb, retry 3/5 in 8.0s
-2026-02-26 13:27:16,108 [INFO] papermind.api: [352c22c7] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58377 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:16,110 [INFO] papermind.api: [33344f36] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58377 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:18,106 [INFO] papermind.api: [dd845c75] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58377 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:18,109 [INFO] papermind.api: [92c103ef] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58377 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:18,803 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=SynthRender+and+IRIS%3A+Open-Source+Framework+and+Dataset+for+Bidirectional+Sim-Real+Transfer+in+Industrial+Object+Perception&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:27:18,803 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:27:20,107 [INFO] papermind.api: [ed91de1a] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58377 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:20,110 [INFO] papermind.api: [3736b965] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58377 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:22,106 [INFO] papermind.api: [bef813dc] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58386 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:22,109 [INFO] papermind.api: [2e6ba1ab] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58386 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:24,107 [INFO] papermind.api: [d9946e18] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58386 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:24,109 [INFO] papermind.api: [dcc8bd5d] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58386 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:24,324 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/16dce0cedad31ed2b1924fd706788550d95bb3fb?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 429 "
-2026-02-26 13:27:24,324 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/16dce0cedad31ed2b1924fd706788550d95bb3fb, retry 4/5 in 15.0s
-2026-02-26 13:27:26,109 [INFO] papermind.api: [f35b152d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58402 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:26,111 [INFO] papermind.api: [8c344736] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58402 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:26,827 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Factorization+Machine+with+Quadratic-Optimization+Annealing+for+RNA+Inverse+Folding+and+Evaluation+of+Binary-Integer+Encoding+and+Nucleotide+Assignment&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:27:26,827 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 5/5 in 15.0s
-2026-02-26 13:27:26,847 [INFO] httpx: HTTP Request: POST https://open.bigmodel.cn/api/paas/v4/chat/completions "HTTP/1.1 200 OK"
-2026-02-26 13:27:27,215 [INFO] papermind.api: [ccd0b449] GET /papers/folder-stats → 200 (21ms)
-INFO: 127.0.0.1:58402 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:27:27,597 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/ss-super4dr--4d-radar-centric-self-supervised-odome.pdf "HTTP/1.1 301 Moved Permanently"
-2026-02-26 13:27:27,666 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=SynthRender+and+IRIS%3A+Open-Source+Framework+and+Dataset+for+Bidirectional+Sim-Real+Transfer+in+Industrial+Object+Perception&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:27:27,666 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:27:28,016 [INFO] httpx: HTTP Request: GET https://arxiv.org/pdf/ss-super4dr--4d-radar-centric-self-supervised-odome "HTTP/1.1 404 Not Found"
-2026-02-26 13:27:28,017 [WARNING] packages.ai.daily_runner: deep_dive 1bcfd820 failed: Client error '404 Not Found' for url 'https://arxiv.org/pdf/ss-super4dr--4d-radar-centric-self-supervised-odome'
-For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404
-2026-02-26 13:27:28,018 [INFO] apps.api.main: 批量处理完成: 10 成功, 0 失败
-2026-02-26 13:27:28,106 [INFO] papermind.api: [c77894f8] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58402 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:28,109 [INFO] papermind.api: [becd30f9] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58402 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:30,107 [INFO] papermind.api: [38f18365] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58402 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:30,110 [INFO] papermind.api: [d8707778] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58402 - "GET /tasks/active HTTP/1.1" 200 OK
-INFO: 127.0.0.1:58422 - "OPTIONS /actions?limit=30 HTTP/1.1" 200 OK
-INFO: 127.0.0.1:58424 - "OPTIONS /papers/latest?page=1&page_size=20 HTTP/1.1" 200 OK
-INFO: 127.0.0.1:58425 - "OPTIONS /actions?limit=30 HTTP/1.1" 200 OK
-INFO: 127.0.0.1:58428 - "OPTIONS /papers/latest?page=1&page_size=20 HTTP/1.1" 200 OK
-2026-02-26 13:27:32,111 [INFO] papermind.api: [4fad1737] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:58429 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:32,112 [INFO] papermind.api: [3bc5e667] GET /papers/folder-stats → 200 (6ms)
-INFO: 127.0.0.1:58419 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:27:32,113 [INFO] papermind.api: [aad9c10e] GET /actions → 200 (5ms)
-INFO: 127.0.0.1:58422 - "GET /actions?limit=30 HTTP/1.1" 200 OK
-2026-02-26 13:27:32,113 [INFO] papermind.api: [baaf032e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58428 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:32,117 [INFO] papermind.api: [e31401ab] GET /papers/latest → 200 (9ms)
-INFO: 127.0.0.1:58425 - "GET /papers/latest?page=1&page_size=20 HTTP/1.1" 200 OK
-2026-02-26 13:27:32,118 [INFO] papermind.api: [58c2e6c0] GET /actions → 200 (4ms)
-INFO: 127.0.0.1:58419 - "GET /actions?limit=30 HTTP/1.1" 200 OK
-2026-02-26 13:27:32,118 [INFO] papermind.api: [ed9f8efe] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:58429 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:27:32,124 [INFO] papermind.api: [756a9ebd] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:58419 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:27:32,126 [INFO] papermind.api: [25e59ef3] GET /papers/latest → 200 (8ms)
-INFO: 127.0.0.1:58428 - "GET /papers/latest?page=1&page_size=20 HTTP/1.1" 200 OK
-2026-02-26 13:27:34,108 [INFO] papermind.api: [78e9b720] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58428 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:34,109 [INFO] papermind.api: [c61c4fe7] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58428 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:36,109 [INFO] papermind.api: [eb60f5a2] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58438 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:36,111 [INFO] papermind.api: [9dc82bd2] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58438 - "GET /tasks/active HTTP/1.1" 200 OK
-INFO: 127.0.0.1:58440 - "OPTIONS /topics?enabled_only=false HTTP/1.1" 200 OK
-INFO: 127.0.0.1:58446 - "OPTIONS /topics?enabled_only=false HTTP/1.1" 200 OK
-2026-02-26 13:27:38,092 [INFO] papermind.api: [a90e17a4] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:58438 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:27:38,092 [INFO] papermind.api: [0d9c2dac] GET /topics → 200 (3ms)
-INFO: 127.0.0.1:58440 - "GET /topics?enabled_only=false HTTP/1.1" 200 OK
-2026-02-26 13:27:38,094 [INFO] papermind.api: [55feb3e8] GET /topics → 200 (2ms)
-INFO: 127.0.0.1:58438 - "GET /topics?enabled_only=false HTTP/1.1" 200 OK
-2026-02-26 13:27:38,106 [INFO] papermind.api: [645d6097] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58438 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:38,109 [INFO] papermind.api: [b5ae10c6] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58438 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:39,256 [INFO] papermind.api: [7809c4fb] GET /papers/folder-stats → 200 (2ms)
-INFO: 127.0.0.1:58438 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:27:39,264 [INFO] papermind.api: [699b785e] GET /generated/list → 200 (9ms)
-INFO: 127.0.0.1:58440 - "GET /generated/list?type=topic_wiki&limit=50 HTTP/1.1" 200 OK
-2026-02-26 13:27:39,269 [INFO] papermind.api: [1889483e] GET /generated/list → 200 (4ms)
-INFO: 127.0.0.1:58438 - "GET /generated/list?type=topic_wiki&limit=50 HTTP/1.1" 200 OK
-2026-02-26 13:27:39,874 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/16dce0cedad31ed2b1924fd706788550d95bb3fb?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 429 "
-2026-02-26 13:27:39,874 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/16dce0cedad31ed2b1924fd706788550d95bb3fb, retry 5/5 in 15.0s
-2026-02-26 13:27:40,041 [INFO] papermind.api: [101c3d20] GET /writing/templates → 200 (2ms)
-INFO: 127.0.0.1:58440 - "GET /writing/templates HTTP/1.1" 200 OK
-2026-02-26 13:27:40,043 [INFO] papermind.api: [60feedfd] GET /writing/templates → 200 (1ms)
-INFO: 127.0.0.1:58446 - "GET /writing/templates HTTP/1.1" 200 OK
-2026-02-26 13:27:40,043 [INFO] papermind.api: [286abcc9] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:58438 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:27:40,106 [INFO] papermind.api: [d6901d7b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58438 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:40,110 [INFO] papermind.api: [b69196b1] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58438 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:41,190 [INFO] papermind.api: [1d713c20] GET /papers/folder-stats → 200 (3ms)
-INFO: 127.0.0.1:58460 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:27:41,191 [INFO] papermind.api: [ef88819e] GET /generated/list → 200 (4ms)
-INFO: 127.0.0.1:58461 - "GET /generated/list?type=daily_brief&limit=50 HTTP/1.1" 200 OK
-2026-02-26 13:27:41,193 [INFO] papermind.api: [9ed3d321] GET /generated/list → 200 (1ms)
-INFO: 127.0.0.1:58460 - "GET /generated/list?type=daily_brief&limit=50 HTTP/1.1" 200 OK
-2026-02-26 13:27:41,195 [INFO] papermind.api: [a9df9b6b] GET /generated/936d8d45-1fce-4c33-aa26-39c997638593 → 200 (1ms)
-INFO: 127.0.0.1:58460 - "GET /generated/936d8d45-1fce-4c33-aa26-39c997638593 HTTP/1.1" 200 OK
-2026-02-26 13:27:41,196 [INFO] papermind.api: [4e91cc1a] GET /generated/936d8d45-1fce-4c33-aa26-39c997638593 → 200 (1ms)
-INFO: 127.0.0.1:58460 - "GET /generated/936d8d45-1fce-4c33-aa26-39c997638593 HTTP/1.1" 200 OK
-2026-02-26 13:27:41,832 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/search
-2026-02-26 13:27:42,106 [INFO] papermind.api: [f791fd8b] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58460 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:42,110 [INFO] papermind.api: [82a9da38] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58460 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:42,267 [INFO] papermind.api: [90f4b146] GET /papers/folder-stats → 200 (113ms)
-INFO: 127.0.0.1:58460 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:27:42,373 [INFO] papermind.api: [e4b1b7d4] GET /graph/frontier → 200 (109ms)
-INFO: 127.0.0.1:58468 - "GET /graph/frontier?days=90 HTTP/1.1" 200 OK
-2026-02-26 13:27:42,376 [INFO] papermind.api: [01aa7b8d] GET /graph/cocitation-clusters → 200 (112ms)
-INFO: 127.0.0.1:58470 - "GET /graph/cocitation-clusters?min_cocite=2 HTTP/1.1" 200 OK
-2026-02-26 13:27:42,383 [WARNING] packages.ai.graph_service: UMAP failed: No module named 'umap', falling back to PCA
-2026-02-26 13:27:42,392 [INFO] papermind.api: [d6b97e7b] GET /graph/overview → 200 (238ms)
-INFO: 127.0.0.1:58461 - "GET /graph/overview HTTP/1.1" 200 OK
-2026-02-26 13:27:42,392 [INFO] papermind.api: [f9afc775] GET /graph/bridges → 200 (129ms)
-INFO: 127.0.0.1:58467 - "GET /graph/bridges HTTP/1.1" 200 OK
-2026-02-26 13:27:42,415 [INFO] papermind.api: [a68637c9] GET /graph/similarity-map → 200 (152ms)
-INFO: 127.0.0.1:58471 - "GET /graph/similarity-map?topic_id=&limit=200 HTTP/1.1" 200 OK
-2026-02-26 13:27:42,711 [INFO] papermind.api: [2a302a60] GET /actions → 200 (4ms)
-INFO: 127.0.0.1:58467 - "GET /actions?limit=30 HTTP/1.1" 200 OK
-2026-02-26 13:27:42,712 [INFO] papermind.api: [e00f3d7d] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:58471 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:27:42,713 [INFO] papermind.api: [c2c0e37f] GET /papers/latest → 200 (6ms)
-INFO: 127.0.0.1:58461 - "GET /papers/latest?page=1&page_size=20 HTTP/1.1" 200 OK
-2026-02-26 13:27:42,715 [INFO] papermind.api: [045d4c94] GET /actions → 200 (3ms)
-INFO: 127.0.0.1:58470 - "GET /actions?limit=30 HTTP/1.1" 200 OK
-2026-02-26 13:27:42,715 [INFO] papermind.api: [656cf971] GET /papers/folder-stats → 200 (3ms)
-INFO: 127.0.0.1:58467 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:27:42,720 [INFO] papermind.api: [6a5aa369] GET /papers/latest → 200 (5ms)
-INFO: 127.0.0.1:58471 - "GET /papers/latest?page=1&page_size=20 HTTP/1.1" 200 OK
-2026-02-26 13:27:42,721 [INFO] papermind.api: [662d80e1] GET /papers/folder-stats → 200 (3ms)
-INFO: 127.0.0.1:58470 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:27:43,264 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=SynthRender+and+IRIS%3A+Open-Source+Framework+and+Dataset+for+Bidirectional+Sim-Real+Transfer+in+Industrial+Object+Perception&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:27:43,265 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 5/5 in 15.0s
-2026-02-26 13:27:43,741 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Investigating+Nonlinear+Quenching+Effects+on+Polar+Field+Buildup+in+the+Sun+Using+Physics-Informed+Neural+Networks%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:27:44,108 [INFO] papermind.api: [64e132ad] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:58470 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:44,110 [INFO] papermind.api: [e5661f45] GET /papers/folder-stats → 200 (3ms)
-INFO: 127.0.0.1:58471 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:27:44,111 [INFO] papermind.api: [0fe72e89] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58470 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:44,133 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7130534694&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:27:44,159 [INFO] papermind.api: [82a1c13a] GET /papers/folder-stats → 200 (3ms)
-INFO: 127.0.0.1:58470 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:27:44,160 [INFO] papermind.api: [5cefbe06] GET /topics → 200 (4ms)
-INFO: 127.0.0.1:58471 - "GET /topics?enabled_only=false HTTP/1.1" 200 OK
-2026-02-26 13:27:44,162 [INFO] papermind.api: [6b00d3f9] GET /topics → 200 (1ms)
-INFO: 127.0.0.1:58470 - "GET /topics?enabled_only=false HTTP/1.1" 200 OK
-2026-02-26 13:27:44,716 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Investigating+Nonlinear+Quenching+Effects+on+Polar+Field+Buildup+in+the+Sun+Using+Physics-Informed+Neural+Networks&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:27:44,716 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:27:46,106 [INFO] papermind.api: [66fc2697] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58490 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:46,110 [INFO] papermind.api: [e9e89f9a] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58490 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:46,991 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Investigating+Nonlinear+Quenching+Effects+on+Polar+Field+Buildup+in+the+Sun+Using+Physics-Informed+Neural+Networks&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:27:46,991 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:27:48,107 [INFO] papermind.api: [1c8143fa] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58490 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:48,109 [INFO] papermind.api: [e7f85980] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58490 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:50,106 [INFO] papermind.api: [c04c4de0] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58490 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:50,110 [INFO] papermind.api: [60041e00] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58490 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:51,608 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Investigating+Nonlinear+Quenching+Effects+on+Polar+Field+Buildup+in+the+Sun+Using+Physics-Informed+Neural+Networks&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:27:51,610 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:27:52,108 [INFO] papermind.api: [e6bffb24] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58501 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:52,110 [INFO] papermind.api: [6202919d] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58501 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:53,427 [INFO] papermind.api: [cfffef61] GET /actions → 200 (5ms)
-INFO: 127.0.0.1:58503 - "GET /actions?limit=30 HTTP/1.1" 200 OK
-2026-02-26 13:27:53,428 [INFO] papermind.api: [53c76f28] GET /papers/folder-stats → 200 (6ms)
-INFO: 127.0.0.1:58501 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:27:53,430 [INFO] papermind.api: [f48ca6a5] GET /papers/latest → 200 (7ms)
-INFO: 127.0.0.1:58505 - "GET /papers/latest?page=1&page_size=20 HTTP/1.1" 200 OK
-2026-02-26 13:27:53,432 [INFO] papermind.api: [348624b3] GET /actions → 200 (3ms)
-INFO: 127.0.0.1:58503 - "GET /actions?limit=30 HTTP/1.1" 200 OK
-2026-02-26 13:27:53,434 [INFO] papermind.api: [5075c422] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:58507 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:27:53,435 [INFO] papermind.api: [e0aeb80f] GET /papers/latest → 200 (4ms)
-INFO: 127.0.0.1:58501 - "GET /papers/latest?page=1&page_size=20 HTTP/1.1" 200 OK
-2026-02-26 13:27:53,437 [INFO] papermind.api: [d8fbf65c] GET /papers/folder-stats → 200 (2ms)
-INFO: 127.0.0.1:58503 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:27:54,106 [INFO] papermind.api: [0a95eb2b] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58503 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:54,109 [INFO] papermind.api: [4543e95b] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58503 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:54,803 [INFO] papermind.api: [1c039b92] GET /generated/list → 200 (5ms)
-INFO: 127.0.0.1:58501 - "GET /generated/list?type=daily_brief&limit=50 HTTP/1.1" 200 OK
-2026-02-26 13:27:54,805 [INFO] papermind.api: [adc96592] GET /papers/folder-stats → 200 (7ms)
-INFO: 127.0.0.1:58503 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:27:54,807 [INFO] papermind.api: [9f8f006f] GET /generated/list → 200 (2ms)
-INFO: 127.0.0.1:58507 - "GET /generated/list?type=daily_brief&limit=50 HTTP/1.1" 200 OK
-2026-02-26 13:27:54,809 [INFO] papermind.api: [ef138990] GET /generated/936d8d45-1fce-4c33-aa26-39c997638593 → 200 (1ms)
-INFO: 127.0.0.1:58503 - "GET /generated/936d8d45-1fce-4c33-aa26-39c997638593 HTTP/1.1" 200 OK
-2026-02-26 13:27:54,811 [INFO] papermind.api: [c05c7f14] GET /generated/936d8d45-1fce-4c33-aa26-39c997638593 → 200 (1ms)
-INFO: 127.0.0.1:58503 - "GET /generated/936d8d45-1fce-4c33-aa26-39c997638593 HTTP/1.1" 200 OK
-2026-02-26 13:27:54,878 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/16dce0cedad31ed2b1924fd706788550d95bb3fb
-2026-02-26 13:27:55,411 [INFO] papermind.api: [fa1ae631] GET /papers/folder-stats → 200 (6ms)
-INFO: 127.0.0.1:58503 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:27:55,518 [INFO] papermind.api: [4f63b328] GET /graph/frontier → 200 (113ms)
-INFO: 127.0.0.1:58505 - "GET /graph/frontier?days=90 HTTP/1.1" 200 OK
-2026-02-26 13:27:55,524 [WARNING] packages.ai.graph_service: UMAP failed: No module named 'umap', falling back to PCA
-2026-02-26 13:27:55,524 [INFO] papermind.api: [9e1e1b52] GET /graph/cocitation-clusters → 200 (117ms)
-INFO: 127.0.0.1:58515 - "GET /graph/cocitation-clusters?min_cocite=2 HTTP/1.1" 200 OK
-2026-02-26 13:27:55,525 [INFO] papermind.api: [16f65b33] GET /graph/overview → 200 (120ms)
-INFO: 127.0.0.1:58507 - "GET /graph/overview HTTP/1.1" 200 OK
-2026-02-26 13:27:55,525 [INFO] papermind.api: [5f980ddd] GET /graph/bridges → 200 (120ms)
-INFO: 127.0.0.1:58501 - "GET /graph/bridges HTTP/1.1" 200 OK
-2026-02-26 13:27:55,530 [INFO] papermind.api: [488c5f6f] GET /graph/similarity-map → 200 (123ms)
-INFO: 127.0.0.1:58516 - "GET /graph/similarity-map?topic_id=&limit=200 HTTP/1.1" 200 OK
-2026-02-26 13:27:56,107 [INFO] papermind.api: [a34f977f] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58518 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:56,109 [INFO] papermind.api: [d0dedaad] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58518 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:56,141 [INFO] papermind.api: [f0cc3a31] GET /writing/templates → 200 (2ms)
-INFO: 127.0.0.1:58520 - "GET /writing/templates HTTP/1.1" 200 OK
-2026-02-26 13:27:56,141 [INFO] papermind.api: [2ac8e538] GET /papers/folder-stats → 200 (3ms)
-INFO: 127.0.0.1:58518 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:27:56,142 [INFO] papermind.api: [0e5283f3] GET /writing/templates → 200 (0ms)
-INFO: 127.0.0.1:58520 - "GET /writing/templates HTTP/1.1" 200 OK
-2026-02-26 13:27:56,444 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22High-fidelity+3D+reconstruction+for+planetary+exploration%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:27:56,997 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7129673408&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:27:57,042 [INFO] papermind.api: [d4117893] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:58520 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:27:57,043 [INFO] papermind.api: [a086b1fb] GET /topics → 200 (4ms)
-INFO: 127.0.0.1:58518 - "GET /topics?enabled_only=false HTTP/1.1" 200 OK
-2026-02-26 13:27:57,045 [INFO] papermind.api: [c91010b6] GET /topics → 200 (2ms)
-INFO: 127.0.0.1:58520 - "GET /topics?enabled_only=false HTTP/1.1" 200 OK
-2026-02-26 13:27:57,529 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=High-fidelity+3D+reconstruction+for+planetary+exploration&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:27:57,530 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:27:58,109 [INFO] papermind.api: [4bfed7a2] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58520 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:58,112 [INFO] papermind.api: [fb6d9418] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58518 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:27:58,270 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/search
-INFO: 127.0.0.1:58520 - "OPTIONS /system/status HTTP/1.1" 200 OK
-INFO: 127.0.0.1:58522 - "OPTIONS /metrics/costs?days=7 HTTP/1.1" 200 OK
-INFO: 127.0.0.1:58533 - "OPTIONS /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-INFO: 127.0.0.1:58520 - "OPTIONS /metrics/costs?days=7 HTTP/1.1" 200 OK
-INFO: 127.0.0.1:58522 - "OPTIONS /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-INFO: 127.0.0.1:58534 - "OPTIONS /today HTTP/1.1" 200 OK
-INFO: 127.0.0.1:58535 - "OPTIONS /system/status HTTP/1.1" 200 OK
-INFO: 127.0.0.1:58533 - "OPTIONS /today HTTP/1.1" 200 OK
-2026-02-26 13:27:58,625 [INFO] papermind.api: [e978ea26] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:58518 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:27:58,626 [INFO] papermind.api: [b5d11fad] GET /pipelines/runs → 200 (3ms)
-INFO: 127.0.0.1:58534 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:27:58,628 [INFO] papermind.api: [1a9b18d8] GET /metrics/costs → 200 (4ms)
-INFO: 127.0.0.1:58537 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
-2026-02-26 13:27:58,632 [INFO] papermind.api: [0817d454] GET /pipelines/runs → 200 (5ms)
-INFO: 127.0.0.1:58518 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:27:58,634 [INFO] papermind.api: [94785400] GET /metrics/costs → 200 (2ms)
-INFO: 127.0.0.1:58534 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
-2026-02-26 13:27:58,656 [INFO] papermind.api: [16a92b52] GET /system/status → 200 (33ms)
-INFO: 127.0.0.1:58520 - "GET /system/status HTTP/1.1" 200 OK
-2026-02-26 13:27:58,682 [INFO] papermind.api: [628afbbe] GET /today → 200 (58ms)
-INFO: 127.0.0.1:58535 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:27:58,684 [INFO] papermind.api: [70169eaf] GET /today → 200 (1ms)
-INFO: 127.0.0.1:58520 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:27:58,703 [INFO] papermind.api: [96517434] GET /system/status → 200 (33ms)
-INFO: 127.0.0.1:58534 - "GET /system/status HTTP/1.1" 200 OK
-2026-02-26 13:28:00,107 [INFO] papermind.api: [5e858b6d] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58534 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:00,110 [INFO] papermind.api: [8bcc31fd] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58534 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:00,143 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=High-fidelity+3D+reconstruction+for+planetary+exploration&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:28:00,143 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:28:00,282 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22BigMaQ%3A+A+Big+Macaque+Motion+and+Animation+Dataset+Bridging+Image+and+3D+Pose+Representations%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:28:00,486 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Investigating+Nonlinear+Quenching+Effects+on+Polar+Field+Buildup+in+the+Sun+Using+Physics-Informed+Neural+Networks&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:28:00,486 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:28:00,823 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7131319101&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:28:01,368 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=BigMaQ%3A+A+Big+Macaque+Motion+and+Animation+Dataset+Bridging+Image+and+3D+Pose+Representations&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:28:01,368 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:28:02,109 [INFO] papermind.api: [2f7a9975] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58549 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:02,112 [INFO] papermind.api: [37a7436b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58549 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:03,653 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=BigMaQ%3A+A+Big+Macaque+Motion+and+Animation+Dataset+Bridging+Image+and+3D+Pose+Representations&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:28:03,653 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:28:04,106 [INFO] papermind.api: [6e713710] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58549 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:04,110 [INFO] papermind.api: [6cda3e27] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58549 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:04,417 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=High-fidelity+3D+reconstruction+for+planetary+exploration&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:28:04,417 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:28:06,107 [INFO] papermind.api: [6c23c600] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58556 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:06,110 [INFO] papermind.api: [fec59365] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58556 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:08,102 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=BigMaQ%3A+A+Big+Macaque+Motion+and+Animation+Dataset+Bridging+Image+and+3D+Pose+Representations&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:28:08,108 [INFO] papermind.api: [4e380688] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58556 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:08,112 [INFO] papermind.api: [c43d3788] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58556 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:08,701 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/f74d83fae9df475bd4631b54199c449b9c55d257?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 429 "
-2026-02-26 13:28:08,701 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/f74d83fae9df475bd4631b54199c449b9c55d257, retry 1/5 in 2.0s
-2026-02-26 13:28:10,107 [INFO] papermind.api: [3cfaeea4] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58556 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:10,110 [INFO] papermind.api: [15f80dbe] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58556 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:11,302 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/f74d83fae9df475bd4631b54199c449b9c55d257?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 429 "
-2026-02-26 13:28:11,302 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/f74d83fae9df475bd4631b54199c449b9c55d257, retry 2/5 in 4.0s
-2026-02-26 13:28:12,109 [INFO] papermind.api: [e68b88d8] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:58595 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:12,111 [INFO] papermind.api: [5c52d035] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58595 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:13,000 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=High-fidelity+3D+reconstruction+for+planetary+exploration&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:28:13,000 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:28:14,110 [INFO] papermind.api: [25becde7] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:58595 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:14,112 [INFO] papermind.api: [5ab83f77] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58604 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:14,112 [INFO] papermind.api: [9b0f5f8c] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:58597 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:28:15,903 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/f74d83fae9df475bd4631b54199c449b9c55d257?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 429 "
-2026-02-26 13:28:15,903 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/f74d83fae9df475bd4631b54199c449b9c55d257, retry 3/5 in 8.0s
-2026-02-26 13:28:16,044 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Investigating+Nonlinear+Quenching+Effects+on+Polar+Field+Buildup+in+the+Sun+Using+Physics-Informed+Neural+Networks&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:28:16,044 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 5/5 in 15.0s
-2026-02-26 13:28:16,107 [INFO] papermind.api: [074ac1cd] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58624 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:16,110 [INFO] papermind.api: [13cf4aa6] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58624 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:17,635 [INFO] papermind.api: [ce16d52f] GET /today → 200 (3ms)
-INFO: 127.0.0.1:58636 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:28:17,636 [INFO] papermind.api: [9598518c] GET /pipelines/runs → 200 (4ms)
-INFO: 127.0.0.1:58635 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:28:17,638 [INFO] papermind.api: [5ff96c92] GET /metrics/costs → 200 (6ms)
-INFO: 127.0.0.1:58633 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
-2026-02-26 13:28:17,671 [INFO] papermind.api: [f8a5693f] GET /system/status → 200 (40ms)
-INFO: 127.0.0.1:58624 - "GET /system/status HTTP/1.1" 200 OK
-2026-02-26 13:28:18,107 [INFO] papermind.api: [623b0dcb] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58624 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:18,111 [INFO] papermind.api: [53a2ef35] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58624 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:20,106 [INFO] papermind.api: [27108e9e] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58624 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:20,110 [INFO] papermind.api: [fc175474] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58624 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:22,108 [INFO] papermind.api: [9fdbb7ce] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58661 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:22,110 [INFO] papermind.api: [0630d108] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58661 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:24,109 [INFO] papermind.api: [8981ce17] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58661 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:24,112 [INFO] papermind.api: [b44cd272] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58661 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:24,699 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/f74d83fae9df475bd4631b54199c449b9c55d257?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 200 OK"
-2026-02-26 13:28:26,107 [INFO] papermind.api: [e085560f] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58677 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:26,110 [INFO] papermind.api: [8f563099] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58677 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:26,812 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Compact+Hadamard+Latent+Codes+for+Efficient+Spectral+Rendering%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:28:27,179 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7131319533&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:28:27,466 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Compact+Hadamard+Latent+Codes+for+Efficient+Spectral+Rendering&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:28:27,468 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:28:28,107 [INFO] papermind.api: [fd85b50d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58677 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:28,111 [INFO] papermind.api: [dc30ddd4] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58677 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:28,623 [INFO] papermind.api: [8ef045be] GET /papers/folder-stats → 200 (2ms)
-INFO: 127.0.0.1:58677 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:28:28,941 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=High-fidelity+3D+reconstruction+for+planetary+exploration&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:28:28,942 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 5/5 in 15.0s
-2026-02-26 13:28:29,902 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Compact+Hadamard+Latent+Codes+for+Efficient+Spectral+Rendering&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:28:30,112 [INFO] papermind.api: [3c52aab8] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:58677 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:30,114 [INFO] papermind.api: [3643e147] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58677 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:30,506 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/06dd0fc8d36d46d59fa9ad3b76cc2881f6703183?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 429 "
-2026-02-26 13:28:30,507 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/06dd0fc8d36d46d59fa9ad3b76cc2881f6703183, retry 1/5 in 2.0s
-2026-02-26 13:28:31,056 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/search
-2026-02-26 13:28:32,107 [INFO] papermind.api: [34690b04] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58735 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:32,111 [INFO] papermind.api: [153672e7] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58735 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:32,490 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Align+Once%2C+Benefit+Multilingually%3A+Enforcing+Multilingual+Consistency+for+LLM+Safety+Alignment%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:28:32,899 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7130552415&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:28:33,370 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/06dd0fc8d36d46d59fa9ad3b76cc2881f6703183?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 200 OK"
-2026-02-26 13:28:34,106 [INFO] papermind.api: [4f42e2af] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58735 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:34,111 [INFO] papermind.api: [e56db58f] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58735 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:34,767 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Align+Once%2C+Benefit+Multilingually%3A+Enforcing+Multilingual+Consistency+for+LLM+Safety+Alignment&limit=1&fields=title "HTTP/1.1 500 Internal Server Error"
-2026-02-26 13:28:34,767 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 500 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:28:34,838 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22RoEL%3A+Robust+Event-based+3D+Line+Reconstruction%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:28:35,232 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7131191878&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:28:35,827 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=RoEL%3A+Robust+Event-based+3D+Line+Reconstruction&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:28:35,827 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:28:36,107 [INFO] papermind.api: [524174da] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58760 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:36,109 [INFO] papermind.api: [8043b753] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58760 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:37,040 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Align+Once%2C+Benefit+Multilingually%3A+Enforcing+Multilingual+Consistency+for+LLM+Safety+Alignment&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:28:37,040 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:28:38,107 [INFO] papermind.api: [4d198443] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58760 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:38,110 [INFO] papermind.api: [e853c561] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58760 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:38,440 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=RoEL%3A+Robust+Event-based+3D+Line+Reconstruction&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:28:38,440 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:28:40,107 [INFO] papermind.api: [a97af3af] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58760 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:40,110 [INFO] papermind.api: [4f5f9f6c] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58760 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:42,107 [INFO] papermind.api: [baebec9c] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58775 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:42,110 [INFO] papermind.api: [df913f6d] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58775 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:42,321 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Align+Once%2C+Benefit+Multilingually%3A+Enforcing+Multilingual+Consistency+for+LLM+Safety+Alignment&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:28:42,917 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/0936e9c8fd95cd382335148c4b69d809a2571db0?fields=references.title%2Ccitations.title "HTTP/1.1 429 "
-2026-02-26 13:28:42,917 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/0936e9c8fd95cd382335148c4b69d809a2571db0, retry 1/5 in 2.0s
-2026-02-26 13:28:43,943 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/search
-2026-02-26 13:28:43,947 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=RoEL%3A+Robust+Event-based+3D+Line+Reconstruction&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:28:44,108 [INFO] papermind.api: [fb994437] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:58775 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:44,110 [INFO] papermind.api: [e40d0b2f] GET /papers/folder-stats → 200 (3ms)
-INFO: 127.0.0.1:58786 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:28:44,110 [INFO] papermind.api: [802becad] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58775 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:44,799 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/c7240b74b1809cf16a85dca2ff6d54a21456df56?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 200 OK"
-2026-02-26 13:28:45,188 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/0936e9c8fd95cd382335148c4b69d809a2571db0?fields=references.title%2Ccitations.title "HTTP/1.1 429 "
-2026-02-26 13:28:45,188 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/0936e9c8fd95cd382335148c4b69d809a2571db0, retry 2/5 in 4.0s
-2026-02-26 13:28:45,536 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22TexSpot%3A+3D+Texture+Enhancement+with+Spatially-uniform+Point+Latent+Representation%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:28:46,014 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Have+We+Mastered+Scale+in+Deep+Monocular+Visual+SLAM%3F+The+ScaleMaster+Dataset+and+Benchmark%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:28:46,109 [INFO] papermind.api: [d4aef563] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58796 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:46,112 [INFO] papermind.api: [4ebc2f04] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58796 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:46,895 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7128840807&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:28:47,294 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7131089518&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:28:47,529 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=TexSpot%3A+3D+Texture+Enhancement+with+Spatially-uniform+Point+Latent+Representation&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:28:47,530 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:28:47,891 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Have+We+Mastered+Scale+in+Deep+Monocular+Visual+SLAM%3F+The+ScaleMaster+Dataset+and+Benchmark&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:28:47,891 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:28:48,107 [INFO] papermind.api: [461342d8] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58796 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:48,110 [INFO] papermind.api: [8c333141] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58796 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:49,790 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/0936e9c8fd95cd382335148c4b69d809a2571db0?fields=references.title%2Ccitations.title "HTTP/1.1 429 "
-2026-02-26 13:28:49,790 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/0936e9c8fd95cd382335148c4b69d809a2571db0, retry 3/5 in 8.0s
-2026-02-26 13:28:49,825 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=TexSpot%3A+3D+Texture+Enhancement+with+Spatially-uniform+Point+Latent+Representation&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:28:49,825 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:28:50,107 [INFO] papermind.api: [af11f711] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58796 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:50,110 [INFO] papermind.api: [4ec4df50] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58796 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:50,507 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Have+We+Mastered+Scale+in+Deep+Monocular+Visual+SLAM%3F+The+ScaleMaster+Dataset+and+Benchmark&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:28:50,507 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:28:52,110 [INFO] papermind.api: [d2cfe8bc] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58815 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:52,113 [INFO] papermind.api: [25b46169] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58815 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:54,107 [INFO] papermind.api: [4119c6d5] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58815 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:54,110 [INFO] papermind.api: [ad90caf7] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58815 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:54,426 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=TexSpot%3A+3D+Texture+Enhancement+with+Spatially-uniform+Point+Latent+Representation&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:28:54,426 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:28:54,796 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Have+We+Mastered+Scale+in+Deep+Monocular+Visual+SLAM%3F+The+ScaleMaster+Dataset+and+Benchmark&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:28:54,796 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:28:56,109 [INFO] papermind.api: [0a42fe30] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58842 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:56,111 [INFO] papermind.api: [d9fe7ee4] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58842 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:58,109 [INFO] papermind.api: [ebe2261d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58842 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:58,110 [INFO] papermind.api: [475a7f2d] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58842 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:28:58,485 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/0936e9c8fd95cd382335148c4b69d809a2571db0?fields=references.title%2Ccitations.title "HTTP/1.1 200 OK"
-2026-02-26 13:28:58,624 [INFO] papermind.api: [390d2ed1] GET /papers/folder-stats → 200 (3ms)
-INFO: 127.0.0.1:58842 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:29:00,073 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Towards+a+Science+of+AI+Agent+Reliability%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:29:00,107 [INFO] papermind.api: [3a8a4c99] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58842 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:00,110 [INFO] papermind.api: [82849f6a] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58842 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:00,598 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7130615426&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:29:01,627 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Towards+a+Science+of+AI+Agent+Reliability&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:29:01,952 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/59b605dcf17521e13d6cb71d9f4d8406facabb44?fields=references.title%2Ccitations.title "HTTP/1.1 200 OK"
-2026-02-26 13:29:02,107 [INFO] papermind.api: [23136548] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58853 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:02,110 [INFO] papermind.api: [a93b805c] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58853 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:02,532 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Neighborhood+Stability+as+a+Measure+of+Nearest+Neighbor+Searchability%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:29:02,999 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=TexSpot%3A+3D+Texture+Enhancement+with+Spatially-uniform+Point+Latent+Representation&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:29:03,000 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:29:03,067 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7130617652&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:29:03,298 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Have+We+Mastered+Scale+in+Deep+Monocular+Visual+SLAM%3F+The+ScaleMaster+Dataset+and+Benchmark&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:29:03,299 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:29:03,676 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Neighborhood+Stability+as+a+Measure+of+Nearest+Neighbor+Searchability&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:29:03,677 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:29:04,109 [INFO] papermind.api: [141a13f9] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58853 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:04,112 [INFO] papermind.api: [c86007a0] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58853 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:06,107 [INFO] papermind.api: [3b43d286] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58864 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:06,110 [INFO] papermind.api: [7546cb17] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58864 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:06,291 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Neighborhood+Stability+as+a+Measure+of+Nearest+Neighbor+Searchability&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:29:06,292 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:29:08,108 [INFO] papermind.api: [8030d7c1] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58864 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:08,111 [INFO] papermind.api: [5120790f] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58864 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:10,108 [INFO] papermind.api: [0221fb16] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58864 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:10,110 [INFO] papermind.api: [9bbb7110] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58864 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:10,581 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Neighborhood+Stability+as+a+Measure+of+Nearest+Neighbor+Searchability&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:29:10,582 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:29:12,107 [INFO] papermind.api: [4caaffed] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58900 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:12,110 [INFO] papermind.api: [62aa809e] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58900 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:14,116 [INFO] papermind.api: [767f6ff8] GET /tasks/active → 200 (8ms)
-INFO: 127.0.0.1:58900 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:14,121 [INFO] papermind.api: [cc12ad3b] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:58900 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:14,123 [INFO] papermind.api: [7f2495c9] GET /papers/folder-stats → 200 (13ms)
-INFO: 127.0.0.1:58907 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:29:16,107 [INFO] papermind.api: [c9bc78f6] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58919 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:16,110 [INFO] papermind.api: [af2dd7cb] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58919 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:18,109 [INFO] papermind.api: [1897b20a] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58919 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:18,111 [INFO] papermind.api: [a94fdcc5] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58919 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:18,835 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Have+We+Mastered+Scale+in+Deep+Monocular+Visual+SLAM%3F+The+ScaleMaster+Dataset+and+Benchmark&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:29:18,836 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 5/5 in 15.0s
-2026-02-26 13:29:19,157 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Neighborhood+Stability+as+a+Measure+of+Nearest+Neighbor+Searchability&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:29:19,158 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:29:20,108 [INFO] papermind.api: [252966f0] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58919 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:20,110 [INFO] papermind.api: [910190d9] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58919 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:21,022 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=TexSpot%3A+3D+Texture+Enhancement+with+Spatially-uniform+Point+Latent+Representation&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:29:21,903 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22RealSynCol%3A+a+high-fidelity+synthetic+colon+dataset+for+3D+reconstruction+applications%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:29:22,109 [INFO] papermind.api: [f6a80304] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58942 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:22,111 [INFO] papermind.api: [13606ef3] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58942 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:22,451 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7128515110&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:29:22,727 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=RealSynCol%3A+a+high-fidelity+synthetic+colon+dataset+for+3D+reconstruction+applications&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:29:22,727 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:29:22,935 [INFO] papermind.api: [a0914f14] GET /today → 200 (2ms)
-INFO: 127.0.0.1:58954 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:29:22,936 [INFO] papermind.api: [b771ce5e] GET /pipelines/runs → 200 (3ms)
-INFO: 127.0.0.1:58953 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:29:22,938 [INFO] papermind.api: [b00a98e9] GET /metrics/costs → 200 (5ms)
-INFO: 127.0.0.1:58951 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
-2026-02-26 13:29:22,968 [INFO] papermind.api: [32017038] GET /system/status → 200 (36ms)
-INFO: 127.0.0.1:58942 - "GET /system/status HTTP/1.1" 200 OK
-2026-02-26 13:29:24,108 [INFO] papermind.api: [109ac52e] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58942 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:24,110 [INFO] papermind.api: [32bb823f] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58942 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:25,205 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=RealSynCol%3A+a+high-fidelity+synthetic+colon+dataset+for+3D+reconstruction+applications&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:29:26,108 [INFO] papermind.api: [d5320771] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58961 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:26,110 [INFO] papermind.api: [b0ff234f] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58961 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:26,160 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/64a4dbd7bd42f8da6d78a501fd21511e6288fae6?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 200 OK"
-2026-02-26 13:29:27,652 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22From+Blurry+to+Believable%3A+Enhancing+Low-quality+Talking+Heads+with+3D+Generative+Priors%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:29:28,108 [INFO] papermind.api: [2964bbc5] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58961 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:28,111 [INFO] papermind.api: [d206a086] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58961 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:28,193 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7128408400&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:29:28,623 [INFO] papermind.api: [27fa1215] GET /papers/folder-stats → 200 (2ms)
-INFO: 127.0.0.1:58961 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:29:28,792 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=From+Blurry+to+Believable%3A+Enhancing+Low-quality+Talking+Heads+with+3D+Generative+Priors&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:29:28,792 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:29:30,107 [INFO] papermind.api: [6143af79] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58961 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:30,111 [INFO] papermind.api: [23f489bb] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58961 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:31,418 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=From+Blurry+to+Believable%3A+Enhancing+Low-quality+Talking+Heads+with+3D+Generative+Priors&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:29:31,419 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:29:32,109 [INFO] papermind.api: [8d12f12f] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58970 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:32,111 [INFO] papermind.api: [92079195] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58970 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:33,841 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/search
-2026-02-26 13:29:34,108 [INFO] papermind.api: [e44dd111] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58970 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:34,111 [INFO] papermind.api: [2a548957] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58970 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:34,699 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Neighborhood+Stability+as+a+Measure+of+Nearest+Neighbor+Searchability&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:29:34,700 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 5/5 in 15.0s
-2026-02-26 13:29:35,432 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22High-fidelity+3D+reconstruction+for+planetary+exploration%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:29:35,691 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=From+Blurry+to+Believable%3A+Enhancing+Low-quality+Talking+Heads+with+3D+Generative+Priors&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:29:35,691 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:29:35,987 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7129673408&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:29:36,107 [INFO] papermind.api: [c70455e7] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58992 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:36,110 [INFO] papermind.api: [d36596cc] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58992 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:38,108 [INFO] papermind.api: [366df3a0] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58992 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:38,112 [INFO] papermind.api: [56423228] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:58992 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:38,291 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=High-fidelity+3D+reconstruction+for+planetary+exploration&limit=1&fields=title "HTTP/1.1 500 Internal Server Error"
-2026-02-26 13:29:38,291 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 500 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:29:40,107 [INFO] papermind.api: [1fe51016] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58992 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:40,111 [INFO] papermind.api: [b07ccc05] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:58992 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:40,896 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=High-fidelity+3D+reconstruction+for+planetary+exploration&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:29:40,897 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:29:42,107 [INFO] papermind.api: [e55ac8bc] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59007 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:42,127 [INFO] papermind.api: [06972cd3] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59007 - "GET /tasks/active HTTP/1.1" 200 OK
-INFO: 127.0.0.1:59018 - "OPTIONS /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:29:44,107 [INFO] papermind.api: [b7d9750e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59007 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:44,110 [INFO] papermind.api: [9f6048d3] GET /papers/folder-stats → 200 (2ms)
-INFO: 127.0.0.1:59018 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:29:44,111 [INFO] papermind.api: [b4cb3b92] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59007 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:44,195 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=From+Blurry+to+Believable%3A+Enhancing+Low-quality+Talking+Heads+with+3D+Generative+Priors&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:29:44,195 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:29:45,175 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=High-fidelity+3D+reconstruction+for+planetary+exploration&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:29:45,176 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:29:46,107 [INFO] papermind.api: [4c73aafc] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59030 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:46,111 [INFO] papermind.api: [acf67d21] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59030 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:48,109 [INFO] papermind.api: [e4735523] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59030 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:48,112 [INFO] papermind.api: [c8977584] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59030 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:49,703 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/search
-2026-02-26 13:29:50,107 [INFO] papermind.api: [0041dcb4] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59030 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:50,111 [INFO] papermind.api: [72358894] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59030 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:51,605 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Retrieval-Augmented+Foundation+Models+for+Matched+Molecular+Pair+Transformations+to+Recapitulate+Medicinal+Chemistry+Intuition%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:29:52,111 [INFO] papermind.api: [1056a528] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59045 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:52,113 [INFO] papermind.api: [277b1f47] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59045 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:52,847 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7130617881&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:29:53,373 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Retrieval-Augmented+Foundation+Models+for+Matched+Molecular+Pair+Transformations+to+Recapitulate+Medicinal+Chemistry+Intuition&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:29:53,373 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:29:53,709 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=High-fidelity+3D+reconstruction+for+planetary+exploration&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:29:53,710 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:29:54,108 [INFO] papermind.api: [77c83a38] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59045 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:54,111 [INFO] papermind.api: [8962dcb2] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59045 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:55,644 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Retrieval-Augmented+Foundation+Models+for+Matched+Molecular+Pair+Transformations+to+Recapitulate+Medicinal+Chemistry+Intuition&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:29:55,644 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:29:56,107 [INFO] papermind.api: [f070f386] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59056 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:56,111 [INFO] papermind.api: [d1b311e6] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59056 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:58,109 [INFO] papermind.api: [0f68331f] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:59056 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:58,115 [INFO] papermind.api: [3e7335fc] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59056 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:29:58,624 [INFO] papermind.api: [28667a30] GET /papers/folder-stats → 200 (3ms)
-INFO: 127.0.0.1:59056 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:29:59,924 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Retrieval-Augmented+Foundation+Models+for+Matched+Molecular+Pair+Transformations+to+Recapitulate+Medicinal+Chemistry+Intuition&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:29:59,925 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:30:00,059 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=From+Blurry+to+Believable%3A+Enhancing+Low-quality+Talking+Heads+with+3D+Generative+Priors&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:30:00,059 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 5/5 in 15.0s
-2026-02-26 13:30:00,113 [INFO] papermind.api: [df29ee89] GET /tasks/active → 200 (4ms)
-INFO: 127.0.0.1:59056 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:00,115 [INFO] papermind.api: [708047bf] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59056 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:02,108 [INFO] papermind.api: [776f14f5] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59093 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:02,111 [INFO] papermind.api: [3d0235ab] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59093 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:04,108 [INFO] papermind.api: [ae9b3d2b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59093 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:04,111 [INFO] papermind.api: [ea2aed79] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59093 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:06,109 [INFO] papermind.api: [e1fbbeb7] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59100 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:06,111 [INFO] papermind.api: [cc2856e3] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59100 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:08,117 [INFO] papermind.api: [33389ed2] GET /tasks/active → 200 (8ms)
-INFO: 127.0.0.1:59100 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:08,127 [INFO] papermind.api: [99c801c2] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:59100 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:08,503 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Retrieval-Augmented+Foundation+Models+for+Matched+Molecular+Pair+Transformations+to+Recapitulate+Medicinal+Chemistry+Intuition&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:30:08,503 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:30:09,274 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=High-fidelity+3D+reconstruction+for+planetary+exploration&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:30:09,274 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 5/5 in 15.0s
-2026-02-26 13:30:10,108 [INFO] papermind.api: [515b1838] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59100 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:10,111 [INFO] papermind.api: [c1599ece] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59100 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:12,117 [INFO] papermind.api: [1dae661d] GET /tasks/active → 200 (4ms)
-INFO: 127.0.0.1:59149 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:12,117 [INFO] papermind.api: [31e757c6] GET /today → 200 (5ms)
-INFO: 127.0.0.1:59148 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:30:12,118 [INFO] papermind.api: [8ed0ac41] GET /pipelines/runs → 200 (6ms)
-INFO: 127.0.0.1:59145 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:30:12,119 [INFO] papermind.api: [1c1a6dbb] GET /papers/folder-stats → 200 (9ms)
-INFO: 127.0.0.1:59139 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:30:12,121 [INFO] papermind.api: [8b6ad702] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:59148 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:12,123 [INFO] papermind.api: [a388a599] GET /metrics/costs → 200 (10ms)
-INFO: 127.0.0.1:59144 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
-2026-02-26 13:30:12,123 [INFO] papermind.api: [31474a85] GET /today → 200 (3ms)
-INFO: 127.0.0.1:59145 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:30:12,126 [INFO] papermind.api: [9db02473] GET /topics → 200 (8ms)
-INFO: 127.0.0.1:59149 - "GET /topics?enabled_only=false HTTP/1.1" 200 OK
-2026-02-26 13:30:12,126 [INFO] papermind.api: [7a5aad77] GET /pipelines/runs → 200 (5ms)
-INFO: 127.0.0.1:59139 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:30:12,127 [INFO] papermind.api: [de09602a] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:59144 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:12,129 [INFO] papermind.api: [0e556703] GET /papers/folder-stats → 200 (7ms)
-INFO: 127.0.0.1:59148 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:30:12,130 [INFO] papermind.api: [3a634088] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:59139 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:12,131 [INFO] papermind.api: [d7cbc2de] GET /metrics/costs → 200 (6ms)
-INFO: 127.0.0.1:59145 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
-2026-02-26 13:30:12,133 [INFO] papermind.api: [b173ba10] GET /topics → 200 (5ms)
-INFO: 127.0.0.1:59149 - "GET /topics?enabled_only=false HTTP/1.1" 200 OK
-2026-02-26 13:30:12,136 [INFO] papermind.api: [d9235aec] GET /papers/folder-stats → 200 (6ms)
-INFO: 127.0.0.1:59144 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:30:12,139 [INFO] papermind.api: [43e2fd3b] GET /papers/folder-stats → 200 (2ms)
-INFO: 127.0.0.1:59149 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:30:12,165 [INFO] papermind.api: [c247e7b3] GET /system/status → 200 (53ms)
-INFO: 127.0.0.1:59141 - "GET /system/status HTTP/1.1" 200 OK
-2026-02-26 13:30:12,190 [INFO] papermind.api: [b8fbcb9f] GET /system/status → 200 (25ms)
-INFO: 127.0.0.1:59149 - "GET /system/status HTTP/1.1" 200 OK
-2026-02-26 13:30:14,112 [INFO] papermind.api: [bbdd71f8] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59149 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:14,113 [INFO] papermind.api: [028370ac] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59141 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:15,063 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/search
-2026-02-26 13:30:15,846 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Masked+Depth+Modeling+for+Spatial+Perception%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:30:16,112 [INFO] papermind.api: [efc1b302] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59160 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:16,113 [INFO] papermind.api: [73d79c5c] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59160 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:16,249 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7125877890&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:30:16,772 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Masked+Depth+Modeling+for+Spatial+Perception&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:30:16,772 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:30:18,111 [INFO] papermind.api: [1be24142] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59160 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:18,112 [INFO] papermind.api: [d59286e6] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59162 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:19,072 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Masked+Depth+Modeling+for+Spatial+Perception&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:30:19,072 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:30:20,112 [INFO] papermind.api: [bb15669f] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59162 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:20,113 [INFO] papermind.api: [9e2eff2e] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59160 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:22,115 [INFO] papermind.api: [ea774d4e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59177 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:22,119 [INFO] papermind.api: [74208c43] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59177 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:23,670 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Masked+Depth+Modeling+for+Spatial+Perception&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:30:23,670 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:30:24,111 [INFO] papermind.api: [64af4792] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59177 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:24,112 [INFO] papermind.api: [57c229ea] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59179 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:24,198 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Retrieval-Augmented+Foundation+Models+for+Matched+Molecular+Pair+Transformations+to+Recapitulate+Medicinal+Chemistry+Intuition&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:30:24,276 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/search
-2026-02-26 13:30:24,812 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/d3893e7202ca9f3dd690dfe7b0ee428f27524428?fields=references.title%2Ccitations.title "HTTP/1.1 429 "
-2026-02-26 13:30:24,812 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/d3893e7202ca9f3dd690dfe7b0ee428f27524428, retry 1/5 in 2.0s
-2026-02-26 13:30:25,739 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22TexSpot%3A+3D+Texture+Enhancement+with+Spatially-uniform+Point+Latent+Representation%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:30:26,112 [INFO] papermind.api: [2d722acf] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59190 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:26,114 [INFO] papermind.api: [157f4039] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59190 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:26,309 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7128840807&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:30:26,830 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=TexSpot%3A+3D+Texture+Enhancement+with+Spatially-uniform+Point+Latent+Representation&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:30:26,830 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:30:27,094 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/d3893e7202ca9f3dd690dfe7b0ee428f27524428?fields=references.title%2Ccitations.title "HTTP/1.1 429 "
-2026-02-26 13:30:27,095 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/d3893e7202ca9f3dd690dfe7b0ee428f27524428, retry 2/5 in 4.0s
-2026-02-26 13:30:28,115 [INFO] papermind.api: [e63daf11] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59190 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:28,118 [INFO] papermind.api: [59c4a737] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:59192 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:29,366 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=TexSpot%3A+3D+Texture+Enhancement+with+Spatially-uniform+Point+Latent+Representation&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:30:29,635 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/48c77b4cdd7567544cfd03832494d920abbe082c?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 429 "
-2026-02-26 13:30:29,635 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/48c77b4cdd7567544cfd03832494d920abbe082c, retry 1/5 in 2.0s
-2026-02-26 13:30:30,112 [INFO] papermind.api: [cbe607c0] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59192 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:30,113 [INFO] papermind.api: [4c53d2bb] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59190 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:31,384 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/d3893e7202ca9f3dd690dfe7b0ee428f27524428?fields=references.title%2Ccitations.title "HTTP/1.1 429 "
-2026-02-26 13:30:31,384 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/d3893e7202ca9f3dd690dfe7b0ee428f27524428, retry 3/5 in 8.0s
-2026-02-26 13:30:32,112 [INFO] papermind.api: [f7449381] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59213 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:32,113 [INFO] papermind.api: [ddb1307b] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59213 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:32,198 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Masked+Depth+Modeling+for+Spatial+Perception&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:30:32,198 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:30:32,230 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/48c77b4cdd7567544cfd03832494d920abbe082c?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 429 "
-2026-02-26 13:30:32,230 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/48c77b4cdd7567544cfd03832494d920abbe082c, retry 2/5 in 4.0s
-2026-02-26 13:30:34,113 [INFO] papermind.api: [3cf59072] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59213 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:34,114 [INFO] papermind.api: [ebaccee4] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59215 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:36,113 [INFO] papermind.api: [f766518e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59227 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:36,115 [INFO] papermind.api: [4f179679] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59227 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:36,851 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/48c77b4cdd7567544cfd03832494d920abbe082c?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 429 "
-2026-02-26 13:30:36,851 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/48c77b4cdd7567544cfd03832494d920abbe082c, retry 3/5 in 8.0s
-2026-02-26 13:30:38,112 [INFO] papermind.api: [45b7e4de] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59227 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:38,112 [INFO] papermind.api: [58feb8ad] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59229 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:39,941 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/d3893e7202ca9f3dd690dfe7b0ee428f27524428?fields=references.title%2Ccitations.title "HTTP/1.1 429 "
-2026-02-26 13:30:39,941 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/d3893e7202ca9f3dd690dfe7b0ee428f27524428, retry 4/5 in 15.0s
-2026-02-26 13:30:40,112 [INFO] papermind.api: [fb72fb86] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59229 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:40,114 [INFO] papermind.api: [eb010d94] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59227 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:42,120 [INFO] papermind.api: [19f00905] GET /tasks/active → 200 (6ms)
-INFO: 127.0.0.1:59265 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:42,123 [INFO] papermind.api: [4c4206a1] GET /papers/folder-stats → 200 (9ms)
-INFO: 127.0.0.1:59264 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:30:42,126 [INFO] papermind.api: [214ad74a] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:59265 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:42,128 [INFO] papermind.api: [9e11d2fd] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:59267 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:30:44,111 [INFO] papermind.api: [81023b77] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59267 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:44,112 [INFO] papermind.api: [6ec08d09] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59265 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:45,421 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/48c77b4cdd7567544cfd03832494d920abbe082c?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 429 "
-2026-02-26 13:30:45,421 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/48c77b4cdd7567544cfd03832494d920abbe082c, retry 4/5 in 15.0s
-2026-02-26 13:30:46,112 [INFO] papermind.api: [19563659] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59300 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:46,114 [INFO] papermind.api: [ba8ff86b] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59300 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:47,731 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Masked+Depth+Modeling+for+Spatial+Perception&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:30:47,731 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 5/5 in 15.0s
-2026-02-26 13:30:48,112 [INFO] papermind.api: [8a3bf1da] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59300 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:48,113 [INFO] papermind.api: [b11b5e4d] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59302 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:50,112 [INFO] papermind.api: [54f8bfac] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59302 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:50,113 [INFO] papermind.api: [7eb882b7] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59300 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:52,114 [INFO] papermind.api: [908b4e49] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59333 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:52,115 [INFO] papermind.api: [ef8e016f] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59333 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:54,112 [INFO] papermind.api: [f412e493] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59333 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:54,113 [INFO] papermind.api: [0cd34b1f] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59335 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:55,595 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/d3893e7202ca9f3dd690dfe7b0ee428f27524428?fields=references.title%2Ccitations.title "HTTP/1.1 200 OK"
-2026-02-26 13:30:56,024 [INFO] papermind.api: [36f4b4a0] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:59358 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:56,112 [INFO] papermind.api: [00a717dc] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59360 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:56,113 [INFO] papermind.api: [ae6bdd3d] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59360 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:56,359 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Scaling+Open+Discrete+Audio+Foundation+Models+with+Interleaved+Semantic%2C+Acoustic%2C+and+Text+Tokens%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:30:56,745 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7130570766&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:30:57,354 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Scaling+Open+Discrete+Audio+Foundation+Models+with+Interleaved+Semantic%2C+Acoustic%2C+and+Text+Tokens&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:30:57,354 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:30:58,111 [INFO] papermind.api: [1a07f2d7] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59360 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:30:58,112 [INFO] papermind.api: [8720d664] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59363 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:00,113 [INFO] papermind.api: [3bc55472] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59363 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:00,114 [INFO] papermind.api: [501eeb71] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59360 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:00,123 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Scaling+Open+Discrete+Audio+Foundation+Models+with+Interleaved+Semantic%2C+Acoustic%2C+and+Text+Tokens&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:31:00,724 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/03d5df97e2302b5f31bda39df350accac244a40d?fields=references.title%2Ccitations.title "HTTP/1.1 429 "
-2026-02-26 13:31:00,724 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/03d5df97e2302b5f31bda39df350accac244a40d, retry 1/5 in 2.0s
-2026-02-26 13:31:01,565 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/48c77b4cdd7567544cfd03832494d920abbe082c?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 200 OK"
-2026-02-26 13:31:02,112 [INFO] papermind.api: [691e61fc] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59408 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:02,113 [INFO] papermind.api: [a8abe21c] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59408 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:02,734 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/search
-2026-02-26 13:31:03,333 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/03d5df97e2302b5f31bda39df350accac244a40d?fields=references.title%2Ccitations.title "HTTP/1.1 429 "
-2026-02-26 13:31:03,333 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/03d5df97e2302b5f31bda39df350accac244a40d, retry 2/5 in 4.0s
-2026-02-26 13:31:03,380 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22RegFreeNet%3A+A+Registration-Free+Network+for+CBCT-based+3D+Dental+Implant+Planning%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:31:03,599 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22RealSynCol%3A+a+high-fidelity+synthetic+colon+dataset+for+3D+reconstruction+applications%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:31:03,770 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7125379692&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:31:03,969 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7128515110&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:31:04,113 [INFO] papermind.api: [c33803f7] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59408 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:04,115 [INFO] papermind.api: [57bf0d73] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59410 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:04,148 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22ParkingTwin%3A+Training-Free+Streaming+3D+Reconstruction+for+Parking-Lot+Digital+Twins%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:31:04,239 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=RealSynCol%3A+a+high-fidelity+synthetic+colon+dataset+for+3D+reconstruction+applications&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:31:04,239 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:31:04,524 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7125260881&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:31:05,211 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=ParkingTwin%3A+Training-Free+Streaming+3D+Reconstruction+for+Parking-Lot+Digital+Twins&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:31:05,799 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/57dedf7a93ab7a1138459da6069e44907c2086ee?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 200 OK"
-2026-02-26 13:31:06,113 [INFO] papermind.api: [e991fead] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59421 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:06,114 [INFO] papermind.api: [452ad9ec] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59421 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:06,552 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Spherical+Geometry+Diffusion%3A+Generating+High-quality+3D+Face+Geometry+via+Sphere-anchored+Representations%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:31:06,897 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=RealSynCol%3A+a+high-fidelity+synthetic+colon+dataset+for+3D+reconstruction+applications&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:31:07,045 [INFO] papermind.api: [04946adf] GET /settings/daily-report → 404 (1ms)
-INFO: 127.0.0.1:59425 - "GET /settings/daily-report HTTP/1.1" 404 Not Found
-2026-02-26 13:31:07,614 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/03d5df97e2302b5f31bda39df350accac244a40d?fields=references.title%2Ccitations.title "HTTP/1.1 429 "
-2026-02-26 13:31:07,614 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/03d5df97e2302b5f31bda39df350accac244a40d, retry 3/5 in 8.0s
-2026-02-26 13:31:07,771 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7125227049&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:31:07,796 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/64a4dbd7bd42f8da6d78a501fd21511e6288fae6?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 200 OK"
-2026-02-26 13:31:08,112 [INFO] papermind.api: [0a4e32e3] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59421 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:08,113 [INFO] papermind.api: [3442dcaa] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59423 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:08,365 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Spherical+Geometry+Diffusion%3A+Generating+High-quality+3D+Face+Geometry+via+Sphere-anchored+Representations&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:31:08,365 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:31:08,509 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22From+Blurry+to+Believable%3A+Enhancing+Low-quality+Talking+Heads+with+3D+Generative+Priors%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:31:09,044 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7128408400&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:31:09,642 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=From+Blurry+to+Believable%3A+Enhancing+Low-quality+Talking+Heads+with+3D+Generative+Priors&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:31:09,642 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:31:10,115 [INFO] papermind.api: [b0f8f522] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59423 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:10,118 [INFO] papermind.api: [364334b9] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59421 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:10,503 [INFO] papermind.api: [54e48faf] GET /pipelines/runs → 200 (2ms)
-INFO: 127.0.0.1:59451 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:31:10,650 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Spherical+Geometry+Diffusion%3A+Generating+High-quality+3D+Face+Geometry+via+Sphere-anchored+Representations&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:31:10,651 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:31:12,114 [INFO] papermind.api: [3cd72d24] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:59459 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:12,117 [INFO] papermind.api: [2657b633] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:59459 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:12,118 [INFO] papermind.api: [87b4a46d] GET /papers/folder-stats → 200 (6ms)
-INFO: 127.0.0.1:59458 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:31:12,120 [INFO] papermind.api: [bad55756] GET /papers/folder-stats → 200 (1ms)
-INFO: 127.0.0.1:59461 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:31:12,901 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=From+Blurry+to+Believable%3A+Enhancing+Low-quality+Talking+Heads+with+3D+Generative+Priors&limit=1&fields=title "HTTP/1.1 500 Internal Server Error"
-2026-02-26 13:31:12,902 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 500 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:31:13,295 [INFO] papermind.api: [0ee598fe] GET /pipelines/runs → 200 (1ms)
-INFO: 127.0.0.1:59465 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:31:14,112 [INFO] papermind.api: [d845f387] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59461 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:14,113 [INFO] papermind.api: [1d9b23de] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59458 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:15,271 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Spherical+Geometry+Diffusion%3A+Generating+High-quality+3D+Face+Geometry+via+Sphere-anchored+Representations&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:31:15,271 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:31:16,112 [INFO] papermind.api: [fbc0f6f8] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59472 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:16,114 [INFO] papermind.api: [c2438696] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59472 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:16,318 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/03d5df97e2302b5f31bda39df350accac244a40d?fields=references.title%2Ccitations.title "HTTP/1.1 200 OK"
-2026-02-26 13:31:16,394 [INFO] papermind.api: [e5517f46] GET /settings/emails → 404 (0ms)
-INFO: 127.0.0.1:59478 - "GET /settings/emails HTTP/1.1" 404 Not Found
-2026-02-26 13:31:17,188 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=From+Blurry+to+Believable%3A+Enhancing+Low-quality+Talking+Heads+with+3D+Generative+Priors&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:31:17,189 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:31:18,114 [INFO] papermind.api: [c5108493] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59472 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:18,116 [INFO] papermind.api: [60ed3edf] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59474 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:18,178 [INFO] papermind.api: [392cccdf] GET /settings/emails → 404 (0ms)
-INFO: 127.0.0.1:59484 - "GET /settings/emails HTTP/1.1" 404 Not Found
-2026-02-26 13:31:18,620 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22On+the+Hardness+of+Approximation+of+the+Fair+k-Center+Problem%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:31:19,186 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7130604222&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:31:20,113 [INFO] papermind.api: [7e063a99] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59474 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:20,114 [INFO] papermind.api: [299ce83d] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59472 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:20,390 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=On+the+Hardness+of+Approximation+of+the+Fair+k-Center+Problem&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:31:20,661 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/851fae962977787822c103424240bb48d6488768?fields=references.title%2Ccitations.title "HTTP/1.1 429 "
-2026-02-26 13:31:20,661 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/851fae962977787822c103424240bb48d6488768, retry 1/5 in 2.0s
-2026-02-26 13:31:22,118 [INFO] papermind.api: [5b93457f] GET /tasks/active → 200 (4ms)
-INFO: 127.0.0.1:59495 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:22,122 [INFO] papermind.api: [ed5f60ab] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59495 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:22,936 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/851fae962977787822c103424240bb48d6488768?fields=references.title%2Ccitations.title "HTTP/1.1 429 "
-2026-02-26 13:31:22,939 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/851fae962977787822c103424240bb48d6488768, retry 2/5 in 4.0s
-2026-02-26 13:31:23,871 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Spherical+Geometry+Diffusion%3A+Generating+High-quality+3D+Face+Geometry+via+Sphere-anchored+Representations&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:31:23,871 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:31:24,112 [INFO] papermind.api: [98e7fb7e] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59495 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:24,113 [INFO] papermind.api: [2e454861] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59497 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:26,062 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=From+Blurry+to+Believable%3A+Enhancing+Low-quality+Talking+Heads+with+3D+Generative+Priors&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:31:26,062 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:31:26,112 [INFO] papermind.api: [73f4b199] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59510 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:26,113 [INFO] papermind.api: [d65f647b] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59510 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:27,218 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/851fae962977787822c103424240bb48d6488768?fields=references.title%2Ccitations.title "HTTP/1.1 429 "
-2026-02-26 13:31:27,218 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/851fae962977787822c103424240bb48d6488768, retry 3/5 in 8.0s
-2026-02-26 13:31:28,112 [INFO] papermind.api: [e7af96c8] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59510 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:28,113 [INFO] papermind.api: [b98774d5] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59512 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:30,113 [INFO] papermind.api: [59bba8ad] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59512 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:30,114 [INFO] papermind.api: [f13dae9d] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59510 - "GET /tasks/active HTTP/1.1" 200 OK
-INFO: 127.0.0.1:59510 - "OPTIONS /settings/llm-providers HTTP/1.1" 200 OK
-INFO: 127.0.0.1:59512 - "OPTIONS /settings/llm-providers/active HTTP/1.1" 200 OK
-INFO: 127.0.0.1:59526 - "OPTIONS /settings/llm-providers HTTP/1.1" 200 OK
-INFO: 127.0.0.1:59527 - "OPTIONS /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:31:30,765 [INFO] papermind.api: [2fb49f02] GET /settings/llm-providers → 200 (3ms)
-INFO: 127.0.0.1:59510 - "GET /settings/llm-providers HTTP/1.1" 200 OK
-2026-02-26 13:31:30,765 [INFO] papermind.api: [ed2eb412] GET /settings/llm-providers/active → 200 (3ms)
-INFO: 127.0.0.1:59512 - "GET /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:31:30,767 [INFO] papermind.api: [7765fe96] GET /settings/llm-providers/active → 200 (1ms)
-INFO: 127.0.0.1:59526 - "GET /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:31:30,768 [INFO] papermind.api: [63f7fb0d] GET /settings/llm-providers → 200 (2ms)
-INFO: 127.0.0.1:59527 - "GET /settings/llm-providers HTTP/1.1" 200 OK
-2026-02-26 13:31:31,979 [INFO] papermind.api: [db151270] GET /settings/email-configs → 200 (2ms)
-INFO: 127.0.0.1:59530 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:31:31,980 [INFO] papermind.api: [770367f5] GET /settings/daily-report-config → 200 (2ms)
-INFO: 127.0.0.1:59531 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:31:31,982 [INFO] papermind.api: [00b6798f] GET /settings/daily-report-config → 200 (1ms)
-INFO: 127.0.0.1:59531 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:31:31,982 [INFO] papermind.api: [72b2fad4] GET /settings/email-configs → 200 (1ms)
-INFO: 127.0.0.1:59530 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:31:32,113 [INFO] papermind.api: [4536ccfa] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59530 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:32,115 [INFO] papermind.api: [e674874e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59531 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:34,112 [INFO] papermind.api: [8e95a4ee] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59531 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:34,113 [INFO] papermind.api: [a3f8cd70] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59530 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:35,808 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/851fae962977787822c103424240bb48d6488768?fields=references.title%2Ccitations.title "HTTP/1.1 429 "
-2026-02-26 13:31:35,809 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/851fae962977787822c103424240bb48d6488768, retry 4/5 in 15.0s
-2026-02-26 13:31:36,112 [INFO] papermind.api: [3ee96f82] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59548 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:36,114 [INFO] papermind.api: [779030e9] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59548 - "GET /tasks/active HTTP/1.1" 200 OK
-INFO: 127.0.0.1:59548 - "OPTIONS /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:31:36,290 [INFO] papermind.api: [7281c96e] PUT /settings/daily-report-config → 200 (7ms)
-INFO: 127.0.0.1:59548 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:31:36,299 [INFO] papermind.api: [69729863] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59548 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:37,494 [INFO] papermind.api: [3705557f] PUT /settings/daily-report-config → 200 (1ms)
-INFO: 127.0.0.1:59548 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:31:37,506 [INFO] papermind.api: [c5c3f72f] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59548 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:37,927 [INFO] papermind.api: [e33d2588] PUT /settings/daily-report-config → 200 (1ms)
-INFO: 127.0.0.1:59548 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:31:37,939 [INFO] papermind.api: [9c968685] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59548 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:38,096 [INFO] papermind.api: [ee3152f3] PUT /settings/daily-report-config → 200 (4ms)
-INFO: 127.0.0.1:59548 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:31:38,107 [INFO] papermind.api: [dbdca940] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59548 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:38,112 [INFO] papermind.api: [586cc803] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59548 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:38,227 [INFO] papermind.api: [f13693e0] PUT /settings/daily-report-config → 200 (1ms)
-INFO: 127.0.0.1:59548 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:31:38,239 [INFO] papermind.api: [97a5d95a] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59548 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:38,378 [INFO] papermind.api: [3eeaf5a0] PUT /settings/daily-report-config → 200 (2ms)
-INFO: 127.0.0.1:59548 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:31:38,390 [INFO] papermind.api: [a560c928] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59548 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:38,512 [INFO] papermind.api: [ced9449d] PUT /settings/daily-report-config → 200 (2ms)
-INFO: 127.0.0.1:59548 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:31:38,525 [INFO] papermind.api: [6154a023] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59548 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:38,644 [INFO] papermind.api: [802c7c37] PUT /settings/daily-report-config → 200 (1ms)
-INFO: 127.0.0.1:59548 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:31:38,655 [INFO] papermind.api: [860884c8] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59548 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:38,761 [INFO] papermind.api: [a1ba7d62] PUT /settings/daily-report-config → 200 (1ms)
-INFO: 127.0.0.1:59548 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:31:38,773 [INFO] papermind.api: [87a06811] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59548 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:39,394 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Spherical+Geometry+Diffusion%3A+Generating+High-quality+3D+Face+Geometry+via+Sphere-anchored+Representations&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:31:39,394 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 5/5 in 15.0s
-2026-02-26 13:31:39,796 [INFO] papermind.api: [66c7a515] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59548 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:40,112 [INFO] papermind.api: [ba03922a] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59548 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:41,011 [INFO] papermind.api: [1299df5d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59548 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:41,441 [INFO] papermind.api: [3ec9b032] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59570 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:41,607 [INFO] papermind.api: [958431d5] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59570 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:41,740 [INFO] papermind.api: [c294f92b] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59570 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:41,908 [INFO] papermind.api: [6072969a] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59570 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:42,015 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=From+Blurry+to+Believable%3A+Enhancing+Low-quality+Talking+Heads+with+3D+Generative+Priors&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:31:42,024 [INFO] papermind.api: [4c699f55] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59570 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:42,114 [INFO] papermind.api: [9bbb8cf7] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59574 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:42,117 [INFO] papermind.api: [cf814f09] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:59570 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:31:42,120 [INFO] papermind.api: [469253db] GET /papers/folder-stats → 200 (2ms)
-INFO: 127.0.0.1:59574 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:31:42,157 [INFO] papermind.api: [b0838bcc] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59574 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:42,276 [INFO] papermind.api: [0493fb78] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59574 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:42,445 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/7c100ed2292e7ac9e8c88ca6129cd0dce5494ef7?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 200 OK"
-2026-02-26 13:31:44,116 [INFO] papermind.api: [15fe6a64] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59574 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:44,277 [INFO] papermind.api: [65ba475a] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59574 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:44,590 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Masked+Depth+Modeling+for+Spatial+Perception%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:31:44,961 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7125877890&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:31:45,229 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Masked+Depth+Modeling+for+Spatial+Perception&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:31:45,229 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:31:46,130 [INFO] papermind.api: [67ef2541] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59595 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:46,277 [INFO] papermind.api: [850a3738] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59595 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:48,112 [INFO] papermind.api: [fa9e6059] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59595 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:48,277 [INFO] papermind.api: [39cc2b6a] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59595 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:48,571 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Masked+Depth+Modeling+for+Spatial+Perception&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:31:49,156 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/0e90207e6f0b58815e7b50a87f721f364d8905ac?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 429 "
-2026-02-26 13:31:49,156 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/0e90207e6f0b58815e7b50a87f721f364d8905ac, retry 1/5 in 2.0s
-2026-02-26 13:31:50,112 [INFO] papermind.api: [fcaff640] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59595 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:50,278 [INFO] papermind.api: [7469b6da] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59595 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:51,389 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/851fae962977787822c103424240bb48d6488768?fields=references.title%2Ccitations.title "HTTP/1.1 429 "
-2026-02-26 13:31:51,389 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/851fae962977787822c103424240bb48d6488768, retry 5/5 in 15.0s
-2026-02-26 13:31:52,106 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/0e90207e6f0b58815e7b50a87f721f364d8905ac?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 200 OK"
-2026-02-26 13:31:52,113 [INFO] papermind.api: [35923a8b] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59614 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:52,278 [INFO] papermind.api: [dc587c29] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59614 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:53,579 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22RegFreeNet%3A+A+Registration-Free+Network+for+CBCT-based+3D+Dental+Implant+Planning%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:31:54,115 [INFO] papermind.api: [402948cd] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59614 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:54,180 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7125379692&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:31:54,277 [INFO] papermind.api: [6f8571c2] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59614 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:54,399 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/search
-2026-02-26 13:31:54,719 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22ParkingTwin%3A+Training-Free+Streaming+3D+Reconstruction+for+Parking-Lot+Digital+Twins%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:31:55,235 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7125260881&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:31:55,845 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=ParkingTwin%3A+Training-Free+Streaming+3D+Reconstruction+for+Parking-Lot+Digital+Twins&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:31:55,846 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:31:56,114 [INFO] papermind.api: [b0f88c35] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59625 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:56,277 [INFO] papermind.api: [aa1875c6] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59625 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:56,322 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22SurfSLAM%3A+Sim-to-Real+Underwater+Stereo+Reconstruction+For+Real-Time+SLAM%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:31:56,827 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7124714199&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:31:57,378 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=SurfSLAM%3A+Sim-to-Real+Underwater+Stereo+Reconstruction+For+Real-Time+SLAM&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:31:57,378 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:31:58,117 [INFO] papermind.api: [f88d0934] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:59625 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:58,278 [INFO] papermind.api: [1507012b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59625 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:31:58,447 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=ParkingTwin%3A+Training-Free+Streaming+3D+Reconstruction+for+Parking-Lot+Digital+Twins&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:31:58,447 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:31:59,655 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=SurfSLAM%3A+Sim-to-Real+Underwater+Stereo+Reconstruction+For+Real-Time+SLAM&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:31:59,655 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:32:00,117 [INFO] papermind.api: [58265d18] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:59625 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:00,277 [INFO] papermind.api: [85058688] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59625 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:02,113 [INFO] papermind.api: [83ba84ef] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59658 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:02,277 [INFO] papermind.api: [fc327e90] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59658 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:02,728 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=ParkingTwin%3A+Training-Free+Streaming+3D+Reconstruction+for+Parking-Lot+Digital+Twins&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:32:02,729 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:32:03,925 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=SurfSLAM%3A+Sim-to-Real+Underwater+Stereo+Reconstruction+For+Real-Time+SLAM&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:32:03,925 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:32:04,115 [INFO] papermind.api: [872a7105] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59658 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:04,277 [INFO] papermind.api: [eeb522d5] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59658 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:06,115 [INFO] papermind.api: [90df9e73] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59669 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:06,277 [INFO] papermind.api: [16ccfa85] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59669 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:06,394 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/851fae962977787822c103424240bb48d6488768
-2026-02-26 13:32:07,202 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Are+Object-Centric+Representations+Better+At+Compositional+Generalization%3F%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:32:07,575 [INFO] papermind.api: [eba34468] GET /settings/daily-report-config → 200 (4ms)
-INFO: 127.0.0.1:59675 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:32:08,116 [INFO] papermind.api: [7e1c8b26] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59669 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:08,276 [INFO] papermind.api: [9ac6b4c5] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59669 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:08,459 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7130617499&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:32:09,315 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Are+Object-Centric+Representations+Better+At+Compositional+Generalization%3F&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:32:09,315 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:32:10,116 [INFO] papermind.api: [d21c947a] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:59669 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:10,284 [INFO] papermind.api: [56b768da] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:59669 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:12,118 [INFO] papermind.api: [2d82033d] GET /tasks/active → 200 (5ms)
-INFO: 127.0.0.1:59698 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:12,120 [INFO] papermind.api: [ea92bc6d] GET /papers/folder-stats → 200 (6ms)
-INFO: 127.0.0.1:59696 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:32:12,123 [INFO] papermind.api: [238f2d11] GET /papers/folder-stats → 200 (2ms)
-INFO: 127.0.0.1:59698 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:32:12,277 [INFO] papermind.api: [9c96ae4b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59698 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:12,564 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=SurfSLAM%3A+Sim-to-Real+Underwater+Stereo+Reconstruction+For+Real-Time+SLAM&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:32:12,565 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:32:14,115 [INFO] papermind.api: [20bc2f5d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59698 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:14,276 [INFO] papermind.api: [af3119a9] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59698 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:14,416 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=ParkingTwin%3A+Training-Free+Streaming+3D+Reconstruction+for+Parking-Lot+Digital+Twins&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:32:14,971 [INFO] papermind.api: [c109f7e4] PUT /settings/daily-report-config → 200 (3ms)
-INFO: 127.0.0.1:59713 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:32:15,265 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Spherical+Geometry+Diffusion%3A+Generating+High-quality+3D+Face+Geometry+via+Sphere-anchored+Representations%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:32:15,470 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Are+Object-Centric+Representations+Better+At+Compositional+Generalization%3F&limit=1&fields=title "HTTP/1.1 500 Internal Server Error"
-2026-02-26 13:32:15,470 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 500 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:32:16,112 [INFO] papermind.api: [c8e80c10] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59719 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:16,277 [INFO] papermind.api: [f14286e5] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59719 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:16,728 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7125227049&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:32:17,001 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Spherical+Geometry+Diffusion%3A+Generating+High-quality+3D+Face+Geometry+via+Sphere-anchored+Representations&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:32:17,002 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:32:17,142 [INFO] papermind.api: [914f8de8] PUT /settings/daily-report-config → 200 (3ms)
-INFO: 127.0.0.1:59723 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:32:18,113 [INFO] papermind.api: [b4419c2e] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59719 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:18,277 [INFO] papermind.api: [e4a02e4c] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59719 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:19,282 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Spherical+Geometry+Diffusion%3A+Generating+High-quality+3D+Face+Geometry+via+Sphere-anchored+Representations&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:32:19,282 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:32:19,761 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Are+Object-Centric+Representations+Better+At+Compositional+Generalization%3F&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:32:19,761 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:32:20,113 [INFO] papermind.api: [c3effc81] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59719 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:20,277 [INFO] papermind.api: [a4898a1a] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59719 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:22,113 [INFO] papermind.api: [3dce06f3] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59738 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:22,276 [INFO] papermind.api: [0fb46f4d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59738 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:23,556 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Spherical+Geometry+Diffusion%3A+Generating+High-quality+3D+Face+Geometry+via+Sphere-anchored+Representations&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:32:23,556 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:32:24,114 [INFO] papermind.api: [d71985e5] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59738 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:24,277 [INFO] papermind.api: [5bdd7621] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59738 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:26,115 [INFO] papermind.api: [74b20163] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59761 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:26,277 [INFO] papermind.api: [9f1a3c7a] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59761 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:28,112 [INFO] papermind.api: [45f8bae9] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59761 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:28,278 [INFO] papermind.api: [0a56e63d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59761 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:28,311 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Are+Object-Centric+Representations+Better+At+Compositional+Generalization%3F&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:32:28,312 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:32:28,422 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=SurfSLAM%3A+Sim-to-Real+Underwater+Stereo+Reconstruction+For+Real-Time+SLAM&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:32:28,422 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 5/5 in 15.0s
-2026-02-26 13:32:30,114 [INFO] papermind.api: [b1cfcdd7] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59761 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:30,279 [INFO] papermind.api: [52df6792] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59761 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:32,116 [INFO] papermind.api: [b85abc29] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59788 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:32,277 [INFO] papermind.api: [25d465c4] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59788 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:34,113 [INFO] papermind.api: [b320928a] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59788 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:34,278 [INFO] papermind.api: [e83108ea] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59788 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:34,924 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Spherical+Geometry+Diffusion%3A+Generating+High-quality+3D+Face+Geometry+via+Sphere-anchored+Representations&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:32:35,526 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/9e0ca78ff7f834a7d95e7a8dff1f3bdee0bb7e33?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 429 "
-2026-02-26 13:32:35,527 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/9e0ca78ff7f834a7d95e7a8dff1f3bdee0bb7e33, retry 1/5 in 2.0s
-2026-02-26 13:32:36,113 [INFO] papermind.api: [9805f6e0] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59811 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:36,279 [INFO] papermind.api: [3c2e3b28] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59811 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:38,115 [INFO] papermind.api: [5693d1c2] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59811 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:38,188 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/9e0ca78ff7f834a7d95e7a8dff1f3bdee0bb7e33?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 200 OK"
-2026-02-26 13:32:38,277 [INFO] papermind.api: [96f61fe9] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59811 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:40,109 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22SurfSLAM%3A+Sim-to-Real+Underwater+Stereo+Reconstruction+For+Real-Time+SLAM%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:32:40,113 [INFO] papermind.api: [0fcae9b4] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59811 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:40,278 [INFO] papermind.api: [da763f35] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59811 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:40,504 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7124714199&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:32:40,796 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=SurfSLAM%3A+Sim-to-Real+Underwater+Stereo+Reconstruction+For+Real-Time+SLAM&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:32:40,797 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:32:42,115 [INFO] papermind.api: [c43029ee] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59839 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:42,116 [INFO] papermind.api: [2c479173] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:59837 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:32:42,119 [INFO] papermind.api: [19aa70e3] GET /papers/folder-stats → 200 (2ms)
-INFO: 127.0.0.1:59839 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:32:42,279 [INFO] papermind.api: [ac5c2cc5] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59839 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:43,071 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=SurfSLAM%3A+Sim-to-Real+Underwater+Stereo+Reconstruction+For+Real-Time+SLAM&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:32:43,071 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:32:43,428 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/search
-2026-02-26 13:32:43,877 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Are+Object-Centric+Representations+Better+At+Compositional+Generalization%3F&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:32:43,877 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 5/5 in 15.0s
-2026-02-26 13:32:44,080 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22GPU+accelerated+surface-based+gaze+mapping+for+XR+experiences%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:32:44,115 [INFO] papermind.api: [adc3ec33] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59839 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:44,277 [INFO] papermind.api: [a50904e1] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59839 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:44,449 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7123802116&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:32:45,199 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=GPU+accelerated+surface-based+gaze+mapping+for+XR+experiences&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:32:45,481 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/f3549378ddf89f07085a2475b19521b21b7cdd73?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 429 "
-2026-02-26 13:32:45,481 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/f3549378ddf89f07085a2475b19521b21b7cdd73, retry 1/5 in 2.0s
-2026-02-26 13:32:46,116 [INFO] papermind.api: [1603a10b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59867 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:46,277 [INFO] papermind.api: [f069832b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59867 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:47,676 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=SurfSLAM%3A+Sim-to-Real+Underwater+Stereo+Reconstruction+For+Real-Time+SLAM&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:32:47,676 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:32:48,078 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/f3549378ddf89f07085a2475b19521b21b7cdd73?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 429 "
-2026-02-26 13:32:48,078 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/f3549378ddf89f07085a2475b19521b21b7cdd73, retry 2/5 in 4.0s
-2026-02-26 13:32:48,113 [INFO] papermind.api: [3cf8a6e5] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59867 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:48,279 [INFO] papermind.api: [71c75f39] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59867 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:50,114 [INFO] papermind.api: [9e7102c2] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59867 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:50,277 [INFO] papermind.api: [4b0dff4b] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59867 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:51,623 [INFO] papermind.api: [355c527e] GET /settings/daily-report-config → 200 (3ms)
-INFO: 127.0.0.1:59910 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:32:52,114 [INFO] papermind.api: [fb39e3af] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59912 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:52,280 [INFO] papermind.api: [600cf8ad] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59912 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:52,361 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/f3549378ddf89f07085a2475b19521b21b7cdd73?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 429 "
-2026-02-26 13:32:52,362 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/f3549378ddf89f07085a2475b19521b21b7cdd73, retry 3/5 in 8.0s
-2026-02-26 13:32:54,113 [INFO] papermind.api: [38d1b51f] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59912 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:54,277 [INFO] papermind.api: [d28408df] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59912 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:56,114 [INFO] papermind.api: [88d9809d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59927 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:56,218 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=SurfSLAM%3A+Sim-to-Real+Underwater+Stereo+Reconstruction+For+Real-Time+SLAM&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:32:56,219 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:32:56,277 [INFO] papermind.api: [4e277ce7] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59927 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:58,114 [INFO] papermind.api: [61493461] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59927 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:58,279 [INFO] papermind.api: [283ad7b8] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59927 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:32:58,880 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/search
-2026-02-26 13:32:59,712 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Synthetic-Powered+Multiple+Testing+with+FDR+Control%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:33:00,115 [INFO] papermind.api: [1f1b4679] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59927 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:00,133 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7130595924&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:33:00,277 [INFO] papermind.api: [c4e626cf] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59927 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:00,699 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Synthetic-Powered+Multiple+Testing+with+FDR+Control&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:33:00,699 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:33:01,171 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/f3549378ddf89f07085a2475b19521b21b7cdd73?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 200 OK"
-2026-02-26 13:33:01,582 [INFO] papermind.api: [7663cd59] PUT /settings/daily-report-config → 200 (2ms)
-INFO: 127.0.0.1:59960 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:33:01,591 [INFO] papermind.api: [167a4483] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59960 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:01,943 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22FaceRefiner%3A+High-Fidelity+Facial+Texture+Refinement+with+Differentiable+Rendering-based+Style+Transfer%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:33:02,114 [INFO] papermind.api: [a73e83e5] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59960 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:02,210 [INFO] papermind.api: [bbf9efdc] PUT /settings/daily-report-config → 200 (1ms)
-INFO: 127.0.0.1:59960 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:33:02,224 [INFO] papermind.api: [eca0f0c9] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:59960 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:02,341 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7120272730&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:33:02,511 [INFO] papermind.api: [d2512bec] PUT /settings/daily-report-config → 200 (2ms)
-INFO: 127.0.0.1:59960 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:33:02,522 [INFO] papermind.api: [ce2f956d] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59960 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:02,621 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=FaceRefiner%3A+High-Fidelity+Facial+Texture+Refinement+with+Differentiable+Rendering-based+Style+Transfer&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:33:02,621 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:33:02,653 [INFO] papermind.api: [da980e08] PUT /settings/daily-report-config → 200 (2ms)
-INFO: 127.0.0.1:59960 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:33:02,659 [INFO] papermind.api: [b51102f0] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59960 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:02,878 [INFO] papermind.api: [1ebb2342] PUT /settings/daily-report-config → 200 (3ms)
-INFO: 127.0.0.1:59960 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:33:02,888 [INFO] papermind.api: [70ace20a] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59960 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:03,044 [INFO] papermind.api: [c652b209] PUT /settings/daily-report-config → 200 (1ms)
-INFO: 127.0.0.1:59960 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:33:03,057 [INFO] papermind.api: [37b32d4d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59960 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:03,211 [INFO] papermind.api: [655a65b0] PUT /settings/daily-report-config → 200 (1ms)
-INFO: 127.0.0.1:59960 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:33:03,223 [INFO] papermind.api: [ef050666] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59960 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:03,301 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Synthetic-Powered+Multiple+Testing+with+FDR+Control&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:33:03,301 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:33:03,344 [INFO] papermind.api: [ddbb6b8a] PUT /settings/daily-report-config → 200 (1ms)
-INFO: 127.0.0.1:59960 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:33:03,355 [INFO] papermind.api: [f738081a] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59960 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:03,533 [INFO] papermind.api: [b6c64881] PUT /settings/daily-report-config → 200 (1ms)
-INFO: 127.0.0.1:59960 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:33:03,538 [INFO] papermind.api: [f4b99f6f] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59960 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:03,709 [INFO] papermind.api: [76281f09] PUT /settings/daily-report-config → 200 (1ms)
-INFO: 127.0.0.1:59960 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:33:03,722 [INFO] papermind.api: [9ea9c5b5] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59960 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:04,113 [INFO] papermind.api: [01f9980d] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59960 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:05,090 [INFO] papermind.api: [0417416a] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59960 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:05,216 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=FaceRefiner%3A+High-Fidelity+Facial+Texture+Refinement+with+Differentiable+Rendering-based+Style+Transfer&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:33:05,216 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:33:05,723 [INFO] papermind.api: [b7de0c3e] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59960 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:06,024 [INFO] papermind.api: [18ebc7fb] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59960 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:06,115 [INFO] papermind.api: [e64d7665] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59975 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:06,161 [INFO] papermind.api: [6267c331] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59975 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:06,392 [INFO] papermind.api: [fa096e57] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:59975 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:06,559 [INFO] papermind.api: [cb426781] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59975 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:06,723 [INFO] papermind.api: [e21c9552] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59975 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:06,860 [INFO] papermind.api: [fa9d8969] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59975 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:07,039 [INFO] papermind.api: [40cbd1bd] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59975 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:07,211 [INFO] papermind.api: [3be5f744] PUT /settings/daily-report-config → 200 (1ms)
-INFO: 127.0.0.1:59975 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:33:07,223 [INFO] papermind.api: [7c71d55d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59975 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:07,226 [INFO] papermind.api: [8e4bb0e5] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59975 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:07,589 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Synthetic-Powered+Multiple+Testing+with+FDR+Control&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:33:07,589 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:33:07,646 [INFO] papermind.api: [44b8ddae] PUT /settings/daily-report-config → 200 (2ms)
-INFO: 127.0.0.1:59975 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:33:07,656 [INFO] papermind.api: [02caf60e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59975 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:08,114 [INFO] papermind.api: [e5d84a7b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59975 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:09,658 [INFO] papermind.api: [1a9149e5] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59975 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:10,114 [INFO] papermind.api: [e5429254] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59975 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:10,722 [INFO] papermind.api: [a5942ccf] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59975 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:11,155 [INFO] papermind.api: [0948f5b7] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59990 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:11,720 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=FaceRefiner%3A+High-Fidelity+Facial+Texture+Refinement+with+Differentiable+Rendering-based+Style+Transfer&limit=1&fields=title "HTTP/1.1 500 Internal Server Error"
-2026-02-26 13:33:11,721 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 500 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:33:12,084 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=SurfSLAM%3A+Sim-to-Real+Underwater+Stereo+Reconstruction+For+Real-Time+SLAM&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:33:12,084 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 5/5 in 15.0s
-2026-02-26 13:33:12,118 [INFO] papermind.api: [841b0af3] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:59994 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:12,121 [INFO] papermind.api: [b919b211] GET /papers/folder-stats → 200 (7ms)
-INFO: 127.0.0.1:59990 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:33:12,124 [INFO] papermind.api: [c14929e0] GET /papers/folder-stats → 200 (2ms)
-INFO: 127.0.0.1:59994 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:33:13,157 [INFO] papermind.api: [4871b593] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59994 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:14,113 [INFO] papermind.api: [562c7fab] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:59994 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:15,155 [INFO] papermind.api: [cdc06180] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:59994 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:16,114 [INFO] papermind.api: [966e0ad2] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60018 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:16,304 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Synthetic-Powered+Multiple+Testing+with+FDR+Control&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:33:16,304 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:33:16,425 [INFO] papermind.api: [34787d99] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:60024 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:16,427 [INFO] papermind.api: [c488d0d7] GET /papers/folder-stats → 200 (7ms)
-INFO: 127.0.0.1:60018 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:33:16,433 [INFO] papermind.api: [46f30b5f] GET /tasks/active → 200 (4ms)
-INFO: 127.0.0.1:60024 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:16,438 [INFO] papermind.api: [cea5b427] GET /papers/folder-stats → 200 (9ms)
-INFO: 127.0.0.1:60030 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:33:16,439 [INFO] papermind.api: [44818824] GET /pipelines/runs → 200 (5ms)
-INFO: 127.0.0.1:60034 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:33:16,441 [INFO] papermind.api: [eb941974] GET /pipelines/runs → 200 (2ms)
-INFO: 127.0.0.1:60030 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:33:16,443 [INFO] papermind.api: [349b8d8b] GET /metrics/costs → 200 (9ms)
-INFO: 127.0.0.1:60033 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
-2026-02-26 13:33:16,449 [INFO] papermind.api: [b8f8a3c7] GET /metrics/costs → 200 (6ms)
-INFO: 127.0.0.1:60030 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
-2026-02-26 13:33:16,485 [INFO] papermind.api: [2efd83cc] GET /system/status → 200 (53ms)
-INFO: 127.0.0.1:60018 - "GET /system/status HTTP/1.1" 200 OK
-2026-02-26 13:33:16,514 [INFO] papermind.api: [e234edc9] GET /today → 200 (80ms)
-INFO: 127.0.0.1:60036 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:33:16,516 [INFO] papermind.api: [a5b62e23] GET /today → 200 (1ms)
-INFO: 127.0.0.1:60018 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:33:16,538 [INFO] papermind.api: [0d9e914b] GET /system/status → 200 (52ms)
-INFO: 127.0.0.1:60030 - "GET /system/status HTTP/1.1" 200 OK
-2026-02-26 13:33:18,114 [INFO] papermind.api: [c7039ef0] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60030 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:18,399 [INFO] papermind.api: [444cecbd] GET /settings/llm-providers/active → 200 (2ms)
-INFO: 127.0.0.1:60018 - "GET /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:33:18,400 [INFO] papermind.api: [e0f96e72] GET /settings/llm-providers → 200 (4ms)
-INFO: 127.0.0.1:60030 - "GET /settings/llm-providers HTTP/1.1" 200 OK
-2026-02-26 13:33:18,404 [INFO] papermind.api: [8157d35a] GET /settings/llm-providers/active → 200 (3ms)
-INFO: 127.0.0.1:60036 - "GET /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:33:18,404 [INFO] papermind.api: [3b16f8e2] GET /settings/llm-providers → 200 (3ms)
-INFO: 127.0.0.1:60018 - "GET /settings/llm-providers HTTP/1.1" 200 OK
-2026-02-26 13:33:18,421 [INFO] papermind.api: [d95587e1] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60018 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:19,730 [INFO] papermind.api: [0593d14b] GET /settings/email-configs → 200 (2ms)
-INFO: 127.0.0.1:60018 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:33:19,730 [INFO] papermind.api: [30c9bd4a] GET /settings/daily-report-config → 200 (2ms)
-INFO: 127.0.0.1:60036 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:33:19,732 [INFO] papermind.api: [21fb285f] GET /settings/email-configs → 200 (1ms)
-INFO: 127.0.0.1:60030 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:33:19,732 [INFO] papermind.api: [216a7922] GET /settings/daily-report-config → 200 (1ms)
-INFO: 127.0.0.1:60036 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:33:20,113 [INFO] papermind.api: [7b4adbfd] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60036 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:20,295 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=FaceRefiner%3A+High-Fidelity+Facial+Texture+Refinement+with+Differentiable+Rendering-based+Style+Transfer&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:33:20,296 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:33:20,421 [INFO] papermind.api: [2393aa30] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60036 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:21,630 [INFO] papermind.api: [f4d3ad4b] PUT /settings/daily-report-config → 200 (4ms)
-INFO: 127.0.0.1:60053 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:33:21,640 [INFO] papermind.api: [a82ce97d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60053 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:22,115 [INFO] papermind.api: [d1ed4680] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60053 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:23,643 [INFO] papermind.api: [94337a9e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60053 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:24,114 [INFO] papermind.api: [78d888c6] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60053 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:25,174 [INFO] papermind.api: [c03488eb] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:60053 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:26,124 [INFO] papermind.api: [384ec394] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60062 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:27,089 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/search
-2026-02-26 13:33:27,144 [INFO] papermind.api: [d39cea4b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60062 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:28,115 [INFO] papermind.api: [310a2216] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60062 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:28,718 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22GPU+accelerated+surface-based+gaze+mapping+for+XR+experiences%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:33:29,144 [INFO] papermind.api: [4e97beab] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60062 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:29,196 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7123802116&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:33:29,744 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=GPU+accelerated+surface-based+gaze+mapping+for+XR+experiences&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:33:29,745 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:33:30,115 [INFO] papermind.api: [a9416d9f] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60062 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:31,146 [INFO] papermind.api: [dee74c37] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60080 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:32,103 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Synthetic-Powered+Multiple+Testing+with+FDR+Control&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:33:32,103 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 5/5 in 15.0s
-2026-02-26 13:33:32,113 [INFO] papermind.api: [f9ee56a7] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60080 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:33,144 [INFO] papermind.api: [afc94918] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60080 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:33,825 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=GPU+accelerated+surface-based+gaze+mapping+for+XR+experiences&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:33:34,114 [INFO] papermind.api: [734fb5ad] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60080 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:34,236 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22FaceRefiner%3A+High-Fidelity+Facial+Texture+Refinement+with+Differentiable+Rendering-based+Style+Transfer%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:33:34,713 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7120272730&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:33:34,988 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=FaceRefiner%3A+High-Fidelity+Facial+Texture+Refinement+with+Differentiable+Rendering-based+Style+Transfer&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:33:34,988 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:33:35,144 [INFO] papermind.api: [6262e6b5] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60080 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:35,842 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=FaceRefiner%3A+High-Fidelity+Facial+Texture+Refinement+with+Differentiable+Rendering-based+Style+Transfer&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:33:35,842 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 5/5 in 15.0s
-2026-02-26 13:33:36,113 [INFO] papermind.api: [02eef672] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60097 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:37,145 [INFO] papermind.api: [0c6e7558] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60097 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:37,272 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=FaceRefiner%3A+High-Fidelity+Facial+Texture+Refinement+with+Differentiable+Rendering-based+Style+Transfer&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:33:37,272 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:33:38,113 [INFO] papermind.api: [8ca3b5c5] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60097 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:39,163 [INFO] papermind.api: [b6fdc78a] GET /tasks/active → 200 (10ms)
-INFO: 127.0.0.1:60097 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:40,113 [INFO] papermind.api: [7aa254d2] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60097 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:41,145 [INFO] papermind.api: [aad8db2b] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60111 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:41,559 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=FaceRefiner%3A+High-Fidelity+Facial+Texture+Refinement+with+Differentiable+Rendering-based+Style+Transfer&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:33:41,560 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:33:42,119 [INFO] papermind.api: [970faa1c] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:60113 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:42,125 [INFO] papermind.api: [60d6186a] GET /papers/folder-stats → 200 (10ms)
-INFO: 127.0.0.1:60111 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:33:43,144 [INFO] papermind.api: [63b2790b] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60111 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:44,113 [INFO] papermind.api: [ad2a50b7] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60111 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:45,145 [INFO] papermind.api: [23446505] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60111 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:46,115 [INFO] papermind.api: [11ae329e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60126 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:46,421 [INFO] papermind.api: [38d6dc51] GET /papers/folder-stats → 200 (1ms)
-INFO: 127.0.0.1:60126 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:33:47,108 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/search
-2026-02-26 13:33:47,145 [INFO] papermind.api: [a9839ea5] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60126 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:48,114 [INFO] papermind.api: [3fb83c70] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60126 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:48,687 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Parameter-free+representations+outperform+single-cell+foundation+models+on+downstream+benchmarks%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:33:49,150 [INFO] papermind.api: [1dfb70c6] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:60126 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:49,254 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7130599955&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:33:49,766 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Parameter-free+representations+outperform+single-cell+foundation+models+on+downstream+benchmarks&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:33:49,767 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:33:50,113 [INFO] papermind.api: [5af82530] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60126 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:50,133 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=FaceRefiner%3A+High-Fidelity+Facial+Texture+Refinement+with+Differentiable+Rendering-based+Style+Transfer&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:33:50,134 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:33:50,854 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/search
-2026-02-26 13:33:51,145 [INFO] papermind.api: [1ae7a54e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60166 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:52,035 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Parameter-free+representations+outperform+single-cell+foundation+models+on+downstream+benchmarks&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:33:52,035 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:33:52,119 [INFO] papermind.api: [3e5fb2a4] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60166 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:52,414 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Rethinking+the+Spatio-Temporal+Alignment+of+End-to-End+3D+Perception%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:33:53,018 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7117850743&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:33:53,145 [INFO] papermind.api: [da06dcf6] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60166 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:53,574 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Rethinking+the+Spatio-Temporal+Alignment+of+End-to-End+3D+Perception&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:33:53,575 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:33:54,114 [INFO] papermind.api: [5049e0c2] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60166 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:55,147 [INFO] papermind.api: [3858bb0f] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60166 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:55,852 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Rethinking+the+Spatio-Temporal+Alignment+of+End-to-End+3D+Perception&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:33:55,852 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:33:56,113 [INFO] papermind.api: [68e9b084] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60197 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:56,924 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Parameter-free+representations+outperform+single-cell+foundation+models+on+downstream+benchmarks&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:33:57,145 [INFO] papermind.api: [2a87c49d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60197 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:57,304 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/518ba31633357b24a8323a577ff373c6ec77a913?fields=references.title%2Ccitations.title "HTTP/1.1 200 OK"
-2026-02-26 13:33:58,122 [INFO] papermind.api: [ca4baa13] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60197 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:58,881 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Protecting+the+Undeleted+in+Machine+Unlearning%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:33:59,145 [INFO] papermind.api: [10017884] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60197 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:33:59,508 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7130569910&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:34:00,114 [INFO] papermind.api: [873cdf58] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60197 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:00,132 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Rethinking+the+Spatio-Temporal+Alignment+of+End-to-End+3D+Perception&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:34:00,132 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:34:00,250 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Protecting+the+Undeleted+in+Machine+Unlearning&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:34:00,250 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:34:01,145 [INFO] papermind.api: [eed74ccf] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60244 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:02,114 [INFO] papermind.api: [5cc508ae] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60244 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:02,826 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Protecting+the+Undeleted+in+Machine+Unlearning&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:34:02,826 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:34:03,145 [INFO] papermind.api: [7c8c2bac] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60244 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:04,115 [INFO] papermind.api: [f31fd001] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60244 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:05,145 [INFO] papermind.api: [350a509e] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60244 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:06,006 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=FaceRefiner%3A+High-Fidelity+Facial+Texture+Refinement+with+Differentiable+Rendering-based+Style+Transfer&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:34:06,006 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 5/5 in 15.0s
-2026-02-26 13:34:06,114 [INFO] papermind.api: [ee93eb4e] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60263 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:07,145 [INFO] papermind.api: [71b5717e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60263 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:07,410 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Protecting+the+Undeleted+in+Machine+Unlearning&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:34:07,411 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:34:07,663 [INFO] papermind.api: [641d7cb1] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:60311 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:07,669 [INFO] papermind.api: [cfbe06e1] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:60311 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:07,671 [INFO] papermind.api: [1f7d6fc8] GET /papers/folder-stats → 200 (16ms)
-INFO: 127.0.0.1:60263 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:34:07,681 [INFO] papermind.api: [873e5dbe] GET /today → 200 (5ms)
-INFO: 127.0.0.1:60317 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:34:07,685 [INFO] papermind.api: [4862179e] GET /metrics/costs → 200 (13ms)
-INFO: 127.0.0.1:60313 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
-2026-02-26 13:34:07,686 [INFO] papermind.api: [77a8bf26] GET /pipelines/runs → 200 (11ms)
-INFO: 127.0.0.1:60316 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:34:07,687 [INFO] papermind.api: [1876901f] GET /today → 200 (4ms)
-INFO: 127.0.0.1:60263 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:34:07,688 [INFO] papermind.api: [0c3c7bcd] GET /papers/folder-stats → 200 (12ms)
-INFO: 127.0.0.1:60319 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:34:07,690 [INFO] papermind.api: [17901583] GET /pipelines/runs → 200 (3ms)
-INFO: 127.0.0.1:60313 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:34:07,691 [INFO] papermind.api: [2e85bf47] GET /metrics/costs → 200 (4ms)
-INFO: 127.0.0.1:60317 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
-2026-02-26 13:34:07,720 [INFO] papermind.api: [0a515824] GET /system/status → 200 (48ms)
-INFO: 127.0.0.1:60311 - "GET /system/status HTTP/1.1" 200 OK
-2026-02-26 13:34:07,745 [INFO] papermind.api: [b56366fa] GET /system/status → 200 (24ms)
-INFO: 127.0.0.1:60317 - "GET /system/status HTTP/1.1" 200 OK
-2026-02-26 13:34:08,114 [INFO] papermind.api: [de46ac4b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60317 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:08,996 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Rethinking+the+Spatio-Temporal+Alignment+of+End-to-End+3D+Perception&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:34:08,996 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:34:09,068 [INFO] papermind.api: [ee556a12] GET /settings/llm-providers/active → 200 (2ms)
-INFO: 127.0.0.1:60311 - "GET /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:34:09,069 [INFO] papermind.api: [adc1ab59] GET /settings/llm-providers → 200 (3ms)
-INFO: 127.0.0.1:60317 - "GET /settings/llm-providers HTTP/1.1" 200 OK
-2026-02-26 13:34:09,071 [INFO] papermind.api: [b06e145c] GET /settings/llm-providers/active → 200 (1ms)
-INFO: 127.0.0.1:60313 - "GET /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:34:09,072 [INFO] papermind.api: [fb44e9fb] GET /settings/llm-providers → 200 (2ms)
-INFO: 127.0.0.1:60311 - "GET /settings/llm-providers HTTP/1.1" 200 OK
-2026-02-26 13:34:09,654 [INFO] papermind.api: [17edc601] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60311 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:10,113 [INFO] papermind.api: [12aed634] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60311 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:10,180 [INFO] papermind.api: [913b69df] GET /settings/daily-report-config → 200 (1ms)
-INFO: 127.0.0.1:60313 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:34:10,180 [INFO] papermind.api: [ef5e737b] GET /settings/email-configs → 200 (2ms)
-INFO: 127.0.0.1:60311 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:34:10,181 [INFO] papermind.api: [75b885ba] GET /settings/daily-report-config → 200 (1ms)
-INFO: 127.0.0.1:60317 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:34:10,182 [INFO] papermind.api: [d02fc186] GET /settings/email-configs → 200 (1ms)
-INFO: 127.0.0.1:60313 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:34:11,654 [INFO] papermind.api: [e191c140] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60338 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:12,119 [INFO] papermind.api: [35f391f8] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:60340 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:12,120 [INFO] papermind.api: [6ac4345f] GET /papers/folder-stats → 200 (6ms)
-INFO: 127.0.0.1:60338 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:34:12,865 [INFO] papermind.api: [b37d07e3] PUT /settings/daily-report-config → 200 (3ms)
-INFO: 127.0.0.1:60338 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:34:12,877 [INFO] papermind.api: [1309b479] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60338 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:13,896 [INFO] papermind.api: [fb1626f5] PUT /settings/daily-report-config → 200 (2ms)
-INFO: 127.0.0.1:60338 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:34:13,907 [INFO] papermind.api: [20bab0b0] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60338 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:14,114 [INFO] papermind.api: [be20ec7c] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60338 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:15,865 [INFO] papermind.api: [f0cafe3b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60338 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:16,010 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Protecting+the+Undeleted+in+Machine+Unlearning&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:34:16,011 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:34:16,117 [INFO] papermind.api: [50b23802] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:60353 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:16,374 [INFO] papermind.api: [ed82d240] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60353 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:17,408 [INFO] papermind.api: [5909b54c] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60353 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:18,115 [INFO] papermind.api: [e3895d85] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60353 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:19,409 [INFO] papermind.api: [bdc81fee] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60353 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:20,114 [INFO] papermind.api: [fb2ea144] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60353 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:21,010 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/search
-2026-02-26 13:34:21,435 [INFO] papermind.api: [914bb23d] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:60362 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:22,114 [INFO] papermind.api: [2fde01af] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60362 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:22,566 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Rethinking+the+Spatio-Temporal+Alignment+of+End-to-End+3D+Perception%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:34:23,409 [INFO] papermind.api: [e35b700e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60362 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:23,702 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7117850743&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:34:24,114 [INFO] papermind.api: [e93c8263] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60362 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:24,259 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Rethinking+the+Spatio-Temporal+Alignment+of+End-to-End+3D+Perception&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:34:24,259 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:34:25,411 [INFO] papermind.api: [e6e39870] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60362 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:26,114 [INFO] papermind.api: [6d2c006b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60380 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:26,321 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Rethinking+the+Spatio-Temporal+Alignment+of+End-to-End+3D+Perception&limit=1&fields=title "HTTP/1.1 500 Internal Server Error"
-2026-02-26 13:34:26,321 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 500 for /paper/search, retry 5/5 in 15.0s
-2026-02-26 13:34:26,538 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Rethinking+the+Spatio-Temporal+Alignment+of+End-to-End+3D+Perception&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:34:26,538 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:34:27,409 [INFO] papermind.api: [6fdac885] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60380 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:28,114 [INFO] papermind.api: [52686364] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60380 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:29,409 [INFO] papermind.api: [039f4187] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60380 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:30,114 [INFO] papermind.api: [707d05ca] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60380 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:30,826 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Rethinking+the+Spatio-Temporal+Alignment+of+End-to-End+3D+Perception&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:34:30,826 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:34:31,410 [INFO] papermind.api: [5c001a74] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60387 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:31,919 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Protecting+the+Undeleted+in+Machine+Unlearning&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:34:31,919 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 5/5 in 15.0s
-2026-02-26 13:34:32,122 [INFO] papermind.api: [9e0c4879] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60387 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:33,409 [INFO] papermind.api: [e0abffd7] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60387 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:34,114 [INFO] papermind.api: [277a156a] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60387 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:35,411 [INFO] papermind.api: [b92e3073] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60387 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:36,114 [INFO] papermind.api: [8e7dadb2] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60400 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:37,409 [INFO] papermind.api: [0203e730] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60400 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:37,656 [INFO] papermind.api: [085eae47] GET /papers/folder-stats → 200 (3ms)
-INFO: 127.0.0.1:60400 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:34:38,122 [INFO] papermind.api: [2e1d7401] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:60400 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:39,402 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Rethinking+the+Spatio-Temporal+Alignment+of+End-to-End+3D+Perception&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:34:39,402 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:34:39,411 [INFO] papermind.api: [83df9899] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60400 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:40,115 [INFO] papermind.api: [2f695a78] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60400 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:41,326 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/search
-2026-02-26 13:34:41,410 [INFO] papermind.api: [2f80154c] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60429 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:42,121 [INFO] papermind.api: [fbd0778d] GET /tasks/active → 200 (6ms)
-INFO: 127.0.0.1:60433 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:42,122 [INFO] papermind.api: [0e4d4761] GET /papers/folder-stats → 200 (7ms)
-INFO: 127.0.0.1:60429 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:34:42,827 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Morphology-Preserving+Holotomography%3A+Quantitative+Analysis+of+3D+Organoid+Dynamics%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:34:43,409 [INFO] papermind.api: [f619380d] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60429 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:43,877 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7117681381&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:34:44,114 [INFO] papermind.api: [aba5c906] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60429 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:44,495 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Morphology-Preserving+Holotomography%3A+Quantitative+Analysis+of+3D+Organoid+Dynamics&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:34:44,495 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:34:45,409 [INFO] papermind.api: [cc2a28ee] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60429 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:46,115 [INFO] papermind.api: [c8e76ea0] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60458 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:46,788 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Morphology-Preserving+Holotomography%3A+Quantitative+Analysis+of+3D+Organoid+Dynamics&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:34:46,792 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:34:46,923 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/search
-2026-02-26 13:34:47,409 [INFO] papermind.api: [7e7ade49] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60458 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:48,114 [INFO] papermind.api: [49ff4abb] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60458 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:48,376 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Causality+is+Key+for+Interpretability+Claims+to+Generalise%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:34:49,409 [INFO] papermind.api: [d2ab1a36] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60458 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:49,450 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7130538568&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:34:49,950 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Causality+is+Key+for+Interpretability+Claims+to+Generalise&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:34:49,951 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:34:50,115 [INFO] papermind.api: [a7471bc0] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60458 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:51,087 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Morphology-Preserving+Holotomography%3A+Quantitative+Analysis+of+3D+Organoid+Dynamics&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:34:51,087 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:34:51,410 [INFO] papermind.api: [2c57c484] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60505 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:52,114 [INFO] papermind.api: [2d411b40] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60505 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:52,471 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Causality+is+Key+for+Interpretability+Claims+to+Generalise&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:34:53,083 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/3399b11ecf6f9e214ef895c9c03daec93c1a13c5?fields=references.title%2Ccitations.title "HTTP/1.1 200 OK"
-2026-02-26 13:34:53,410 [INFO] papermind.api: [11f84292] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60505 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:54,114 [INFO] papermind.api: [24f6d560] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60505 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:54,336 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Calibrate-Then-Act%3A+Cost-Aware+Exploration+in+LLM+Agents%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:34:54,886 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7130763137&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:34:54,964 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Rethinking+the+Spatio-Temporal+Alignment+of+End-to-End+3D+Perception&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:34:54,967 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 5/5 in 15.0s
-2026-02-26 13:34:55,410 [INFO] papermind.api: [84b2f3cc] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60505 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:55,481 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Calibrate-Then-Act%3A+Cost-Aware+Exploration+in+LLM+Agents&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:34:55,482 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:34:56,115 [INFO] papermind.api: [6dee1d2a] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60522 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:57,409 [INFO] papermind.api: [a3fb1cff] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60522 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:58,115 [INFO] papermind.api: [383571ca] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60522 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:58,448 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Calibrate-Then-Act%3A+Cost-Aware+Exploration+in+LLM+Agents&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:34:58,811 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/091291f8df56dfabb46c24dd610bf51ac1f42e2f?fields=references.title%2Ccitations.title "HTTP/1.1 200 OK"
-2026-02-26 13:34:59,354 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Reinforced+Fast+Weights+with+Next-Sequence+Prediction%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:34:59,411 [INFO] papermind.api: [9688a6a5] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60522 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:34:59,757 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Morphology-Preserving+Holotomography%3A+Quantitative+Analysis+of+3D+Organoid+Dynamics&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:34:59,878 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7130595718&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:35:00,028 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/5aa840417007fdb9d1e31ea283ff11f9c58f4f54?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 429 "
-2026-02-26 13:35:00,028 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/5aa840417007fdb9d1e31ea283ff11f9c58f4f54, retry 1/5 in 2.0s
-2026-02-26 13:35:00,117 [INFO] papermind.api: [04daaf12] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:60522 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:00,463 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Reinforced+Fast+Weights+with+Next-Sequence+Prediction&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:35:00,463 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:35:01,409 [INFO] papermind.api: [b61ccccc] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60543 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:02,114 [INFO] papermind.api: [9de1992c] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60543 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:02,980 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/5aa840417007fdb9d1e31ea283ff11f9c58f4f54?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 200 OK"
-2026-02-26 13:35:03,074 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Reinforced+Fast+Weights+with+Next-Sequence+Prediction&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:35:03,075 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:35:03,411 [INFO] papermind.api: [3f0dce63] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60543 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:04,114 [INFO] papermind.api: [c18b1457] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60543 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:04,781 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Real2Edit2Real%3A+Generating+Robotic+Demonstrations+via+a+3D+Control+Interface%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:35:05,325 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7117125623&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:35:05,412 [INFO] papermind.api: [336bf818] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60543 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:05,611 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Real2Edit2Real%3A+Generating+Robotic+Demonstrations+via+a+3D+Control+Interface&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:35:05,611 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:35:06,116 [INFO] papermind.api: [1ac8392c] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60552 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:07,409 [INFO] papermind.api: [7ef3aa03] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60552 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:07,662 [INFO] papermind.api: [ea74c869] GET /papers/folder-stats → 200 (7ms)
-INFO: 127.0.0.1:60552 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:35:07,665 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Reinforced+Fast+Weights+with+Next-Sequence+Prediction&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:35:07,666 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:35:07,902 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Real2Edit2Real%3A+Generating+Robotic+Demonstrations+via+a+3D+Control+Interface&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:35:07,902 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:35:08,115 [INFO] papermind.api: [5e2e4610] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60552 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:09,412 [INFO] papermind.api: [83ff264b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60552 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:09,976 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/search
-2026-02-26 13:35:10,114 [INFO] papermind.api: [40045ecf] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60552 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:10,739 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Morphology-Preserving+Holotomography%3A+Quantitative+Analysis+of+3D+Organoid+Dynamics%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:35:11,410 [INFO] papermind.api: [45a464b8] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60568 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:11,983 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7117681381&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:35:12,123 [INFO] papermind.api: [692633f2] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:60572 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:12,123 [INFO] papermind.api: [6d4f89c0] GET /papers/folder-stats → 200 (9ms)
-INFO: 127.0.0.1:60568 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:35:12,500 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Real2Edit2Real%3A+Generating+Robotic+Demonstrations+via+a+3D+Control+Interface&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:35:12,501 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:35:13,269 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Morphology-Preserving+Holotomography%3A+Quantitative+Analysis+of+3D+Organoid+Dynamics&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:35:13,411 [INFO] papermind.api: [6cc4ec79] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60568 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:13,814 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/5aa840417007fdb9d1e31ea283ff11f9c58f4f54?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 200 OK"
-2026-02-26 13:35:14,115 [INFO] papermind.api: [7aa76252] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60568 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:14,595 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Real2Edit2Real%3A+Generating+Robotic+Demonstrations+via+a+3D+Control+Interface%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:35:15,412 [INFO] papermind.api: [d433fd3e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60568 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:15,801 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7117125623&per_page=30&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Cauthorships%2Cabstract_inverted_index&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:35:16,079 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Real2Edit2Real%3A+Generating+Robotic+Demonstrations+via+a+3D+Control+Interface&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:35:16,080 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:35:16,117 [INFO] papermind.api: [382e45ab] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60583 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:16,648 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Reinforced+Fast+Weights+with+Next-Sequence+Prediction&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:35:17,326 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/c511f80677e11d64a4b8c261877e4f0bf7b66259?fields=references.title%2Ccitations.title "HTTP/1.1 200 OK"
-2026-02-26 13:35:17,410 [INFO] papermind.api: [b1347f63] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60583 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:18,115 [INFO] papermind.api: [39c0a8fd] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60583 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:18,138 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Knowledge-Embedded+Latent+Projection+for+Robust+Representation+Learning%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:35:18,364 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Real2Edit2Real%3A+Generating+Robotic+Demonstrations+via+a+3D+Control+Interface&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:35:18,364 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:35:18,703 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7130616107&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:35:18,988 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Knowledge-Embedded+Latent+Projection+for+Robust+Representation+Learning&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:35:18,988 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:35:19,411 [INFO] papermind.api: [fc135864] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60583 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:20,115 [INFO] papermind.api: [9d97ce98] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60583 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:21,225 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Real2Edit2Real%3A+Generating+Robotic+Demonstrations+via+a+3D+Control+Interface&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:35:21,412 [INFO] papermind.api: [f99812c1] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60600 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:21,505 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/ad6b50d9440b24a67742137899940cfc81bd6f64?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 429 "
-2026-02-26 13:35:21,505 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/ad6b50d9440b24a67742137899940cfc81bd6f64, retry 1/5 in 2.0s
-2026-02-26 13:35:21,520 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Knowledge-Embedded+Latent+Projection+for+Robust+Representation+Learning&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:35:22,115 [INFO] papermind.api: [e2512942] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60600 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:22,199 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/58be19a0b5c6f367c81579448d84568a5891177e?fields=references.title%2Ccitations.title "HTTP/1.1 200 OK"
-2026-02-26 13:35:22,642 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Real2Edit2Real%3A+Generating+Robotic+Demonstrations+via+a+3D+Control+Interface&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:35:22,642 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:35:22,746 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Nighttime+Autonomous+Driving+Scene+Reconstruction+with+Physically-Based+Gaussian+Splatting%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:35:23,332 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7130236325&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:35:23,410 [INFO] papermind.api: [29bcd966] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60600 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:23,794 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/ad6b50d9440b24a67742137899940cfc81bd6f64?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 429 "
-2026-02-26 13:35:23,795 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/ad6b50d9440b24a67742137899940cfc81bd6f64, retry 2/5 in 4.0s
-2026-02-26 13:35:23,953 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Nighttime+Autonomous+Driving+Scene+Reconstruction+with+Physically-Based+Gaussian+Splatting&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:35:23,954 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:35:24,116 [INFO] papermind.api: [067a7d22] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60600 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:25,410 [INFO] papermind.api: [7a9976a2] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60600 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:26,115 [INFO] papermind.api: [110f2d3f] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60609 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:26,558 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Nighttime+Autonomous+Driving+Scene+Reconstruction+with+Physically-Based+Gaussian+Splatting&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:35:26,558 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:35:27,412 [INFO] papermind.api: [88202b58] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60609 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:28,116 [INFO] papermind.api: [b3313b80] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60609 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:28,230 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/ad6b50d9440b24a67742137899940cfc81bd6f64?fields=references.paperId%2Creferences.title%2Creferences.year%2Creferences.venue%2Creferences.citationCount%2Creferences.externalIds%2Creferences.abstract%2Ccitations.paperId%2Ccitations.title%2Ccitations.year%2Ccitations.venue%2Ccitations.citationCount%2Ccitations.externalIds%2Ccitations.abstract "HTTP/1.1 200 OK"
-2026-02-26 13:35:28,543 [INFO] packages.ai.graph_service: auto_link_citations: 0 edges, 0 errors
-2026-02-26 13:35:28,544 [INFO] packages.ai.pipelines: bg auto_link: {'papers': 20, 'edges_linked': 0, 'errors': 0}
-2026-02-26 13:35:29,410 [INFO] papermind.api: [a992341a] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60609 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:30,115 [INFO] papermind.api: [b4b29c23] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60609 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:31,200 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Nighttime+Autonomous+Driving+Scene+Reconstruction+with+Physically-Based+Gaussian+Splatting&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:35:31,200 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:35:31,301 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Real2Edit2Real%3A+Generating+Robotic+Demonstrations+via+a+3D+Control+Interface&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:35:31,301 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:35:31,412 [INFO] papermind.api: [068a0140] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60620 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:32,115 [INFO] papermind.api: [d00000ff] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60620 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:33,412 [INFO] papermind.api: [b6c216b1] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60620 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:34,117 [INFO] papermind.api: [7557c166] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:60620 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:35,410 [INFO] papermind.api: [6d316c27] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60620 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:36,116 [INFO] papermind.api: [3fd75bf7] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60633 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:37,411 [INFO] papermind.api: [5a0a5e83] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60633 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:37,659 [INFO] papermind.api: [ec34dcb6] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:60633 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:35:38,115 [INFO] papermind.api: [5f375342] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60633 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:39,411 [INFO] papermind.api: [84d6b4da] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60633 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:39,728 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Nighttime+Autonomous+Driving+Scene+Reconstruction+with+Physically-Based+Gaussian+Splatting&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:35:39,729 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:35:40,117 [INFO] papermind.api: [ce04ed03] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:60633 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:41,410 [INFO] papermind.api: [52965d05] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60646 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:42,117 [INFO] papermind.api: [0e1ad000] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:60658 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:42,118 [INFO] papermind.api: [7877ae1c] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:60646 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:35:43,410 [INFO] papermind.api: [de5443bb] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60646 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:44,115 [INFO] papermind.api: [46c7282a] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60646 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:45,410 [INFO] papermind.api: [50221314] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60646 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:46,114 [INFO] papermind.api: [b8a73aea] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60697 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:47,194 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Real2Edit2Real%3A+Generating+Robotic+Demonstrations+via+a+3D+Control+Interface&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:35:47,194 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 5/5 in 15.0s
-2026-02-26 13:35:47,411 [INFO] papermind.api: [0300cf69] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60697 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:48,115 [INFO] papermind.api: [4e9f1467] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60697 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:49,411 [INFO] papermind.api: [59155aa8] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60697 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:50,116 [INFO] papermind.api: [289330c4] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60697 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:51,410 [INFO] papermind.api: [0cf73114] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60724 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:52,114 [INFO] papermind.api: [50563f39] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60724 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:53,411 [INFO] papermind.api: [cbf73b38] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60724 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:54,061 [INFO] papermind.api: [07969072] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:60746 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:54,067 [INFO] papermind.api: [5888e243] GET /papers/folder-stats → 200 (11ms)
-INFO: 127.0.0.1:60724 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:35:54,067 [INFO] papermind.api: [48a9ebb5] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:60748 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:54,080 [INFO] papermind.api: [726681ad] GET /papers/folder-stats → 200 (12ms)
-INFO: 127.0.0.1:60746 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:35:54,082 [INFO] papermind.api: [01d10cbe] GET /today → 200 (6ms)
-INFO: 127.0.0.1:60752 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:35:54,083 [INFO] papermind.api: [f473f9a7] GET /pipelines/runs → 200 (7ms)
-INFO: 127.0.0.1:60751 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:35:54,086 [INFO] papermind.api: [e708cfcd] GET /metrics/costs → 200 (12ms)
-INFO: 127.0.0.1:60724 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
-2026-02-26 13:35:54,087 [INFO] papermind.api: [13663dbc] GET /today → 200 (2ms)
-INFO: 127.0.0.1:60746 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:35:54,088 [INFO] papermind.api: [c01bde65] GET /pipelines/runs → 200 (3ms)
-INFO: 127.0.0.1:60752 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:35:54,092 [INFO] papermind.api: [8cbea295] GET /metrics/costs → 200 (5ms)
-INFO: 127.0.0.1:60751 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
-2026-02-26 13:35:54,124 [INFO] papermind.api: [18581ebe] GET /tasks/active → 200 (4ms)
-INFO: 127.0.0.1:60751 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:54,125 [INFO] papermind.api: [eb71dcc3] GET /system/status → 200 (51ms)
-INFO: 127.0.0.1:60748 - "GET /system/status HTTP/1.1" 200 OK
-2026-02-26 13:35:54,154 [INFO] papermind.api: [2e0e8786] GET /system/status → 200 (28ms)
-INFO: 127.0.0.1:60751 - "GET /system/status HTTP/1.1" 200 OK
-2026-02-26 13:35:54,776 [INFO] papermind.api: [0e8ecbe1] GET /actions → 200 (4ms)
-INFO: 127.0.0.1:60748 - "GET /actions?limit=30 HTTP/1.1" 200 OK
-2026-02-26 13:35:54,779 [INFO] papermind.api: [7a0970f2] GET /papers/latest → 200 (8ms)
-INFO: 127.0.0.1:60752 - "GET /papers/latest?page=1&page_size=20 HTTP/1.1" 200 OK
-2026-02-26 13:35:54,780 [INFO] papermind.api: [03f3867f] GET /papers/folder-stats → 200 (9ms)
-INFO: 127.0.0.1:60751 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:35:54,785 [INFO] papermind.api: [93c9c850] GET /actions → 200 (7ms)
-INFO: 127.0.0.1:60746 - "GET /actions?limit=30 HTTP/1.1" 200 OK
-2026-02-26 13:35:54,788 [INFO] papermind.api: [e711be24] GET /papers/latest → 200 (6ms)
-INFO: 127.0.0.1:60748 - "GET /papers/latest?page=1&page_size=20 HTTP/1.1" 200 OK
-2026-02-26 13:35:54,789 [INFO] papermind.api: [cca06a24] GET /papers/folder-stats → 200 (6ms)
-INFO: 127.0.0.1:60752 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:35:54,791 [INFO] papermind.api: [30b40bcf] GET /papers/folder-stats → 200 (1ms)
-INFO: 127.0.0.1:60748 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:35:55,454 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Nighttime+Autonomous+Driving+Scene+Reconstruction+with+Physically-Based+Gaussian+Splatting&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:35:56,044 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/3811233ed0f2c5658603afe4c2295a598ef296ab?fields=references.title%2Ccitations.title "HTTP/1.1 429 "
-2026-02-26 13:35:56,044 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/3811233ed0f2c5658603afe4c2295a598ef296ab, retry 1/5 in 2.0s
-2026-02-26 13:35:56,056 [INFO] papermind.api: [70d18a47] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60748 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:56,114 [INFO] papermind.api: [7ecb5a02] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60759 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:58,057 [INFO] papermind.api: [573fde6d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60759 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:58,115 [INFO] papermind.api: [df2e8477] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60759 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:35:58,314 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/3811233ed0f2c5658603afe4c2295a598ef296ab?fields=references.title%2Ccitations.title "HTTP/1.1 429 "
-2026-02-26 13:35:58,314 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/3811233ed0f2c5658603afe4c2295a598ef296ab, retry 2/5 in 4.0s
-2026-02-26 13:35:59,241 [INFO] papermind.api: [89bf8da4] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:60759 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:35:59,242 [INFO] papermind.api: [00c83a71] GET /topics → 200 (4ms)
-INFO: 127.0.0.1:60769 - "GET /topics?enabled_only=false HTTP/1.1" 200 OK
-2026-02-26 13:35:59,244 [INFO] papermind.api: [bc973008] GET /topics → 200 (2ms)
-INFO: 127.0.0.1:60759 - "GET /topics?enabled_only=false HTTP/1.1" 200 OK
-2026-02-26 13:36:00,056 [INFO] papermind.api: [6eecb4b7] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60759 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:00,115 [INFO] papermind.api: [486af595] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60759 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:02,057 [INFO] papermind.api: [71fb2b82] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60784 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:02,114 [INFO] papermind.api: [534c9c28] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60784 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:02,199 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/search
-2026-02-26 13:36:02,200 [INFO] packages.ai.graph_service: auto_link_citations: 0 edges, 0 errors
-2026-02-26 13:36:02,200 [INFO] packages.ai.pipelines: bg auto_link: {'papers': 20, 'edges_linked': 0, 'errors': 0}
-2026-02-26 13:36:02,990 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/3811233ed0f2c5658603afe4c2295a598ef296ab?fields=references.title%2Ccitations.title "HTTP/1.1 200 OK"
-2026-02-26 13:36:04,057 [INFO] papermind.api: [260acd77] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60784 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:04,117 [INFO] papermind.api: [5bb15094] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:60784 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:04,630 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Joint+Orientation+and+Weight+Optimization+for+Robust+Watertight+Surface+Reconstruction+via+Dirichlet-Regularized+Winding+Fields%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:36:05,806 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7129737526&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:36:06,056 [INFO] papermind.api: [83192b1a] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60784 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:06,097 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Joint+Orientation+and+Weight+Optimization+for+Robust+Watertight+Surface+Reconstruction+via+Dirichlet-Regularized+Winding+Fields&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:36:06,097 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:36:06,115 [INFO] papermind.api: [e1867f65] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60798 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:08,057 [INFO] papermind.api: [4a23d2f9] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60798 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:08,117 [INFO] papermind.api: [23878390] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:60798 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:08,996 [INFO] papermind.api: [0e6c0056] GET /settings/llm-providers → 200 (2ms)
-INFO: 127.0.0.1:60798 - "GET /settings/llm-providers HTTP/1.1" 200 OK
-2026-02-26 13:36:08,996 [INFO] papermind.api: [a774bfcd] GET /settings/llm-providers/active → 200 (1ms)
-INFO: 127.0.0.1:60811 - "GET /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:36:08,998 [INFO] papermind.api: [a3c41fa1] GET /settings/llm-providers → 200 (1ms)
-INFO: 127.0.0.1:60798 - "GET /settings/llm-providers HTTP/1.1" 200 OK
-2026-02-26 13:36:08,998 [INFO] papermind.api: [8780ce85] GET /settings/llm-providers/active → 200 (1ms)
-INFO: 127.0.0.1:60813 - "GET /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:36:10,057 [INFO] papermind.api: [e513db32] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60813 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:10,114 [INFO] papermind.api: [0f1a5b21] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60813 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:10,211 [INFO] papermind.api: [0dd5d403] GET /settings/daily-report-config → 200 (1ms)
-INFO: 127.0.0.1:60798 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:36:10,212 [INFO] papermind.api: [9e28a2d1] GET /settings/email-configs → 200 (2ms)
-INFO: 127.0.0.1:60813 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:36:10,213 [INFO] papermind.api: [9272ba82] GET /settings/daily-report-config → 200 (1ms)
-INFO: 127.0.0.1:60811 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:36:10,214 [INFO] papermind.api: [d3beceaf] GET /settings/email-configs → 200 (1ms)
-INFO: 127.0.0.1:60813 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:36:10,355 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Joint+Orientation+and+Weight+Optimization+for+Robust+Watertight+Surface+Reconstruction+via+Dirichlet-Regularized+Winding+Fields&limit=1&fields=title "HTTP/1.1 500 Internal Server Error"
-2026-02-26 13:36:10,355 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 500 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:36:12,057 [INFO] papermind.api: [e2f14d35] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60820 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:12,117 [INFO] papermind.api: [0b6edc27] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:60822 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:12,119 [INFO] papermind.api: [48b7d3e7] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:60820 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:36:12,532 [INFO] papermind.api: [1497ce99] PUT /settings/daily-report-config → 200 (4ms)
-INFO: 127.0.0.1:60820 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:36:12,544 [INFO] papermind.api: [9c09c664] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60820 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:13,627 [INFO] papermind.api: [f665ee70] PUT /settings/daily-report-config → 200 (1ms)
-INFO: 127.0.0.1:60820 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:36:13,643 [INFO] papermind.api: [a29ef57c] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60820 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:14,063 [INFO] papermind.api: [144dbc6f] PUT /settings/daily-report-config → 200 (2ms)
-INFO: 127.0.0.1:60820 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:36:14,079 [INFO] papermind.api: [211ffda4] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60820 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:14,115 [INFO] papermind.api: [6fdfae5c] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60820 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:14,210 [INFO] papermind.api: [2b5afab8] PUT /settings/daily-report-config → 200 (1ms)
-INFO: 127.0.0.1:60820 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:36:14,222 [INFO] papermind.api: [28c92213] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60820 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:14,361 [INFO] papermind.api: [09755bdf] PUT /settings/daily-report-config → 200 (2ms)
-INFO: 127.0.0.1:60820 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:36:14,374 [INFO] papermind.api: [c6bd4c96] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60820 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:14,527 [INFO] papermind.api: [1231af8c] PUT /settings/daily-report-config → 200 (1ms)
-INFO: 127.0.0.1:60820 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:36:14,539 [INFO] papermind.api: [b34eec17] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60820 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:14,635 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Joint+Orientation+and+Weight+Optimization+for+Robust+Watertight+Surface+Reconstruction+via+Dirichlet-Regularized+Winding+Fields&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:36:14,635 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:36:14,796 [INFO] papermind.api: [613cd99c] PUT /settings/daily-report-config → 200 (2ms)
-INFO: 127.0.0.1:60820 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:36:14,809 [INFO] papermind.api: [acddc647] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60820 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:14,927 [INFO] papermind.api: [188dc0d4] PUT /settings/daily-report-config → 200 (1ms)
-INFO: 127.0.0.1:60820 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:36:14,938 [INFO] papermind.api: [34313220] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60820 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:15,078 [INFO] papermind.api: [d7a670f8] PUT /settings/daily-report-config → 200 (2ms)
-INFO: 127.0.0.1:60820 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:36:15,092 [INFO] papermind.api: [b07a4cc9] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60820 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:15,210 [INFO] papermind.api: [ba9a6241] PUT /settings/daily-report-config → 200 (1ms)
-INFO: 127.0.0.1:60820 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:36:15,223 [INFO] papermind.api: [4e0f19aa] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60820 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:16,041 [INFO] papermind.api: [375ca3cf] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60820 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:16,115 [INFO] papermind.api: [0dbc046d] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60825 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:17,139 [INFO] papermind.api: [2ce23cde] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60825 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:17,574 [INFO] papermind.api: [1a1dea39] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60825 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:17,724 [INFO] papermind.api: [b805d605] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60825 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:17,730 [INFO] papermind.api: [43c1b9e8] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60825 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:17,873 [INFO] papermind.api: [de44bbda] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60825 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:18,043 [INFO] papermind.api: [7057f343] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60825 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:18,116 [INFO] papermind.api: [46df22e6] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60825 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:18,297 [INFO] papermind.api: [4df3e64c] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60825 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:18,306 [INFO] papermind.api: [5ae49a6a] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60825 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:18,440 [INFO] papermind.api: [5266358f] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60825 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:18,448 [INFO] papermind.api: [ecbcb886] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60825 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:18,588 [INFO] papermind.api: [6f36221f] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60825 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:18,728 [INFO] papermind.api: [76e5736b] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:60825 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:20,115 [INFO] papermind.api: [8683028f] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60825 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:20,726 [INFO] papermind.api: [fb93d8ad] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60825 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:20,913 [INFO] papermind.api: [e16f3fb8] GET /settings/llm-providers → 200 (2ms)
-INFO: 127.0.0.1:60825 - "GET /settings/llm-providers HTTP/1.1" 200 OK
-2026-02-26 13:36:20,913 [INFO] papermind.api: [d6eab92e] GET /settings/llm-providers/active → 200 (1ms)
-INFO: 127.0.0.1:60834 - "GET /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:36:20,914 [INFO] papermind.api: [9dbe988e] GET /settings/llm-providers/active → 200 (1ms)
-INFO: 127.0.0.1:60834 - "GET /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:36:20,915 [INFO] papermind.api: [dad3f789] GET /settings/llm-providers → 200 (1ms)
-INFO: 127.0.0.1:60825 - "GET /settings/llm-providers HTTP/1.1" 200 OK
-2026-02-26 13:36:22,118 [INFO] papermind.api: [45b6623c] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60840 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:22,499 [INFO] papermind.api: [7c55aa17] GET /settings/email-configs → 200 (3ms)
-INFO: 127.0.0.1:60840 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:36:22,500 [INFO] papermind.api: [5bf0090f] GET /settings/daily-report-config → 200 (3ms)
-INFO: 127.0.0.1:60842 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:36:22,505 [INFO] papermind.api: [b87331b9] GET /settings/daily-report-config → 200 (2ms)
-INFO: 127.0.0.1:60842 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:36:22,505 [INFO] papermind.api: [8faf0902] GET /settings/email-configs → 200 (3ms)
-INFO: 127.0.0.1:60840 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:36:22,727 [INFO] papermind.api: [2c6dc539] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60840 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:23,473 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Joint+Orientation+and+Weight+Optimization+for+Robust+Watertight+Surface+Reconstruction+via+Dirichlet-Regularized+Winding+Fields&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:36:23,474 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:36:24,115 [INFO] papermind.api: [5a44854e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60840 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:24,364 [INFO] papermind.api: [35b12262] PUT /settings/daily-report-config → 200 (4ms)
-INFO: 127.0.0.1:60840 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:36:24,374 [INFO] papermind.api: [88d2582a] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60840 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:26,116 [INFO] papermind.api: [6b74007c] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60855 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:26,183 [INFO] papermind.api: [5e8a1b3d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60855 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:27,873 [INFO] papermind.api: [4f3c9cbf] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60855 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:28,117 [INFO] papermind.api: [3052ee2a] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60855 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:29,243 [INFO] papermind.api: [72629f46] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:60855 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:36:29,876 [INFO] papermind.api: [ffecd327] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60855 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:30,154 [INFO] papermind.api: [63e1da0d] GET /tasks/active → 200 (8ms)
-INFO: 127.0.0.1:60855 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:31,875 [INFO] papermind.api: [7f8db412] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60872 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:32,116 [INFO] papermind.api: [49cc03d6] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60872 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:33,875 [INFO] papermind.api: [80183ae0] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60872 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:34,115 [INFO] papermind.api: [c50590db] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60872 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:35,874 [INFO] papermind.api: [be9adad0] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60872 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:36,116 [INFO] papermind.api: [c13bb0a7] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60885 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:37,880 [INFO] papermind.api: [94efe743] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:60885 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:38,117 [INFO] papermind.api: [fb57101e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60885 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:39,481 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Joint+Orientation+and+Weight+Optimization+for+Robust+Watertight+Surface+Reconstruction+via+Dirichlet-Regularized+Winding+Fields&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:36:39,850 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/1c76d40fa6d41c113979a91abd992e5a77584130?fields=references.title%2Ccitations.title "HTTP/1.1 200 OK"
-2026-02-26 13:36:39,875 [INFO] papermind.api: [3c009c75] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60885 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:40,115 [INFO] papermind.api: [2cf7f74e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60885 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:41,351 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Learnable+Multi-level+Discrete+Wavelet+Transforms+for+3D+Gaussian+Splatting+Frequency+Modulation%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:36:41,743 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7130237695&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:36:41,876 [INFO] papermind.api: [b9a2bac6] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60902 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:42,014 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Learnable+Multi-level+Discrete+Wavelet+Transforms+for+3D+Gaussian+Splatting+Frequency+Modulation&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:36:42,014 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:36:42,119 [INFO] papermind.api: [bd0510f3] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:60908 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:42,121 [INFO] papermind.api: [b70be18c] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:60902 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:36:43,875 [INFO] papermind.api: [1fe046f4] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60902 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:44,114 [INFO] papermind.api: [1a2d14be] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60902 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:44,291 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Learnable+Multi-level+Discrete+Wavelet+Transforms+for+3D+Gaussian+Splatting+Frequency+Modulation&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:36:44,291 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:36:45,883 [INFO] papermind.api: [da5f54e1] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:60902 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:46,116 [INFO] papermind.api: [c163664f] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60923 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:47,874 [INFO] papermind.api: [0e49f4e4] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60923 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:48,117 [INFO] papermind.api: [5dc98307] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60923 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:48,881 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Learnable+Multi-level+Discrete+Wavelet+Transforms+for+3D+Gaussian+Splatting+Frequency+Modulation&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:36:48,882 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:36:49,875 [INFO] papermind.api: [2bdbe932] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60923 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:50,115 [INFO] papermind.api: [02b943e0] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60923 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:51,875 [INFO] papermind.api: [e8769123] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60938 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:52,115 [INFO] papermind.api: [c44d3fbe] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60938 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:53,875 [INFO] papermind.api: [e3cbea48] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60938 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:54,115 [INFO] papermind.api: [811bfcac] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60938 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:55,877 [INFO] papermind.api: [ded6a2e6] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60938 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:56,115 [INFO] papermind.api: [7ec2c1e1] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60945 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:57,513 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Learnable+Multi-level+Discrete+Wavelet+Transforms+for+3D+Gaussian+Splatting+Frequency+Modulation&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:36:57,513 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:36:57,875 [INFO] papermind.api: [9f785e1d] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60945 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:58,116 [INFO] papermind.api: [dc6430ff] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60945 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:58,689 [INFO] papermind.api: [d503fb8c] GET /tasks/active → 200 (11ms)
-INFO: 127.0.0.1:60965 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:58,694 [INFO] papermind.api: [305a8019] GET /papers/folder-stats → 200 (18ms)
-INFO: 127.0.0.1:60945 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:36:58,695 [INFO] papermind.api: [ba5fe858] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:60967 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:36:58,698 [INFO] papermind.api: [5ff49e27] GET /papers/folder-stats → 200 (2ms)
-INFO: 127.0.0.1:60965 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:37:00,115 [INFO] papermind.api: [4c368b4e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60965 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:02,117 [INFO] papermind.api: [f4144abf] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60974 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:03,689 [INFO] papermind.api: [37847372] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:60994 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:03,691 [INFO] papermind.api: [4648bd3b] GET /papers/folder-stats → 200 (6ms)
-INFO: 127.0.0.1:60974 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:37:03,693 [INFO] papermind.api: [960f8158] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:60994 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:03,697 [INFO] papermind.api: [d5921b72] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:60996 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:37:04,115 [INFO] papermind.api: [1c5ba4d3] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60996 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:04,330 [INFO] papermind.api: [580b59b4] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:60994 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:04,332 [INFO] papermind.api: [8be24240] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:60996 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:37:04,334 [INFO] papermind.api: [8d21046e] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:60974 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:04,340 [INFO] papermind.api: [31289f73] GET /papers/folder-stats → 200 (7ms)
-INFO: 127.0.0.1:60994 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:37:04,860 [INFO] papermind.api: [bc227105] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:60974 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:04,861 [INFO] papermind.api: [428a5017] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:60994 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:37:04,863 [INFO] papermind.api: [92061118] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:60974 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:04,868 [INFO] papermind.api: [7f7f802a] GET /papers/folder-stats → 200 (6ms)
-INFO: 127.0.0.1:60996 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:37:05,051 [INFO] papermind.api: [bb3dcc14] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:60974 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:05,054 [INFO] papermind.api: [791e7911] GET /papers/folder-stats → 200 (9ms)
-INFO: 127.0.0.1:60996 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:37:05,055 [INFO] papermind.api: [3245fef5] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:60994 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:05,060 [INFO] papermind.api: [02bc4298] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:60974 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:37:05,216 [INFO] papermind.api: [6d93e98f] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:60994 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:05,220 [INFO] papermind.api: [0e4fa349] GET /papers/folder-stats → 200 (6ms)
-INFO: 127.0.0.1:60974 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:37:05,221 [INFO] papermind.api: [5602228f] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:60996 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:05,226 [INFO] papermind.api: [76faa84d] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:60994 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:37:05,377 [INFO] papermind.api: [61ae322b] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:60996 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:05,379 [INFO] papermind.api: [99eea786] GET /papers/folder-stats → 200 (9ms)
-INFO: 127.0.0.1:60994 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:37:05,380 [INFO] papermind.api: [dea28799] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:60974 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:05,386 [INFO] papermind.api: [b997ba6e] GET /papers/folder-stats → 200 (7ms)
-INFO: 127.0.0.1:60996 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:37:05,705 [INFO] papermind.api: [e8220b5a] GET /tasks/active → 200 (7ms)
-INFO: 127.0.0.1:60974 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:05,707 [INFO] papermind.api: [5ecf2fa5] GET /papers/folder-stats → 200 (8ms)
-INFO: 127.0.0.1:60996 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:37:05,710 [INFO] papermind.api: [1cefaee1] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:60994 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:05,712 [INFO] papermind.api: [a6980434] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:60974 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:37:06,085 [INFO] papermind.api: [63adcf5c] GET /tasks/active → 200 (8ms)
-INFO: 127.0.0.1:60994 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:06,086 [INFO] papermind.api: [b78d5f38] GET /papers/folder-stats → 200 (9ms)
-INFO: 127.0.0.1:60974 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:37:06,089 [INFO] papermind.api: [8242d80d] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:60996 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:06,092 [INFO] papermind.api: [c327e268] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:60994 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:37:06,115 [INFO] papermind.api: [8708225b] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:60994 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:06,146 [INFO] papermind.api: [cfe0f4c2] GET /settings/email-configs → 200 (3ms)
-INFO: 127.0.0.1:60974 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:37:06,147 [INFO] papermind.api: [27321e71] GET /settings/llm-providers → 200 (4ms)
-INFO: 127.0.0.1:60994 - "GET /settings/llm-providers HTTP/1.1" 200 OK
-2026-02-26 13:37:06,147 [INFO] papermind.api: [88d3c385] GET /settings/llm-providers/active → 200 (3ms)
-INFO: 127.0.0.1:60996 - "GET /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:37:06,147 [INFO] papermind.api: [cfd3f277] GET /settings/daily-report-config → 200 (2ms)
-INFO: 127.0.0.1:61017 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:37:06,151 [INFO] papermind.api: [8c90cffd] GET /settings/daily-report-config → 200 (2ms)
-INFO: 127.0.0.1:60994 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:37:06,152 [INFO] papermind.api: [8e1f10c1] GET /settings/email-configs → 200 (3ms)
-INFO: 127.0.0.1:60974 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:37:06,153 [INFO] papermind.api: [b27d5433] GET /settings/llm-providers/active → 200 (3ms)
-INFO: 127.0.0.1:61021 - "GET /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:37:06,153 [INFO] papermind.api: [c2417b99] GET /settings/llm-providers → 200 (3ms)
-INFO: 127.0.0.1:61019 - "GET /settings/llm-providers HTTP/1.1" 200 OK
-2026-02-26 13:37:06,254 [INFO] papermind.api: [589fea68] GET /settings/email-configs → 200 (3ms)
-INFO: 127.0.0.1:60974 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:37:06,254 [INFO] papermind.api: [5fcdf735] GET /settings/daily-report-config → 200 (3ms)
-INFO: 127.0.0.1:60994 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:37:06,255 [INFO] papermind.api: [509fbd3e] GET /settings/llm-providers/active → 200 (4ms)
-INFO: 127.0.0.1:61021 - "GET /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:37:06,255 [INFO] papermind.api: [c25d9d35] GET /settings/llm-providers → 200 (4ms)
-INFO: 127.0.0.1:61019 - "GET /settings/llm-providers HTTP/1.1" 200 OK
-2026-02-26 13:37:08,078 [INFO] papermind.api: [5d436776] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61019 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:08,116 [INFO] papermind.api: [72725c74] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61019 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:10,078 [INFO] papermind.api: [1e0a59f6] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61019 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:10,117 [INFO] papermind.api: [12ad598b] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61019 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:11,684 [INFO] papermind.api: [d2e423a4] GET /tasks/active → 200 (10ms)
-INFO: 127.0.0.1:61052 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:11,694 [INFO] papermind.api: [5cd726fe] GET /papers/folder-stats → 200 (20ms)
-2026-02-26 13:37:11,696 [INFO] papermind.api: [3cc625d7] GET /settings/email-configs → 200 (12ms)
-2026-02-26 13:37:11,697 [INFO] papermind.api: [ae31696b] GET /settings/daily-report-config → 200 (12ms)
-2026-02-26 13:37:11,699 [INFO] papermind.api: [20b49096] GET /settings/llm-providers → 200 (15ms)
-2026-02-26 13:37:11,700 [INFO] papermind.api: [c82357e1] GET /settings/llm-providers/active → 200 (16ms)
-2026-02-26 13:37:11,700 [INFO] papermind.api: [3dbdd84c] GET /settings/email-configs → 200 (7ms)
-2026-02-26 13:37:11,702 [INFO] papermind.api: [8530d32c] GET /tasks/active → 200 (8ms)
-2026-02-26 13:37:11,702 [INFO] papermind.api: [fad0b04d] GET /settings/llm-providers → 200 (9ms)
-2026-02-26 13:37:11,876 [INFO] papermind.api: [e61ccf3d] GET /tasks/active → 200 (5ms)
-INFO: 127.0.0.1:61070 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:11,879 [INFO] papermind.api: [9dc49d04] GET /papers/folder-stats → 200 (9ms)
-INFO: 127.0.0.1:61052 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:37:11,881 [INFO] papermind.api: [b9badfdc] GET /settings/daily-report-config → 200 (3ms)
-INFO: 127.0.0.1:61078 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:37:11,882 [INFO] papermind.api: [9fc5ea4f] GET /settings/email-configs → 200 (5ms)
-INFO: 127.0.0.1:61076 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:37:11,883 [INFO] papermind.api: [b0393aad] GET /settings/llm-providers/active → 200 (7ms)
-INFO: 127.0.0.1:61074 - "GET /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:37:11,884 [INFO] papermind.api: [87538b92] GET /tasks/active → 200 (6ms)
-INFO: 127.0.0.1:61070 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:11,885 [INFO] papermind.api: [21ea4ec0] GET /settings/llm-providers → 200 (8ms)
-INFO: 127.0.0.1:61073 - "GET /settings/llm-providers HTTP/1.1" 200 OK
-2026-02-26 13:37:11,892 [INFO] papermind.api: [8b2ca278] GET /settings/daily-report-config → 200 (7ms)
-INFO: 127.0.0.1:61078 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:37:11,892 [INFO] papermind.api: [1eb53c1d] GET /settings/email-configs → 200 (7ms)
-INFO: 127.0.0.1:61076 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:37:11,893 [INFO] papermind.api: [ec5fa372] GET /settings/llm-providers/active → 200 (4ms)
-INFO: 127.0.0.1:61074 - "GET /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:37:11,894 [INFO] papermind.api: [267dc8eb] GET /settings/llm-providers → 200 (4ms)
-INFO: 127.0.0.1:61070 - "GET /settings/llm-providers HTTP/1.1" 200 OK
-2026-02-26 13:37:11,894 [INFO] papermind.api: [e289b50d] GET /papers/folder-stats → 200 (11ms)
-INFO: 127.0.0.1:61052 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:37:12,117 [INFO] papermind.api: [7c9ec4da] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61070 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:12,119 [INFO] papermind.api: [8aa56f6e] GET /papers/folder-stats → 200 (3ms)
-INFO: 127.0.0.1:61052 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:37:12,636 [INFO] papermind.api: [fd01e183] GET /tasks/active → 200 (7ms)
-INFO: 127.0.0.1:61070 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:12,639 [INFO] papermind.api: [dee8e952] GET /papers/folder-stats → 200 (10ms)
-INFO: 127.0.0.1:61052 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:37:12,640 [INFO] papermind.api: [f55e7f8c] GET /settings/daily-report-config → 200 (3ms)
-INFO: 127.0.0.1:61073 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:37:12,641 [INFO] papermind.api: [328803a1] GET /settings/email-configs → 200 (3ms)
-INFO: 127.0.0.1:61078 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:37:12,641 [INFO] papermind.api: [91296562] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:61070 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:12,642 [INFO] papermind.api: [1c2fface] GET /settings/llm-providers → 200 (5ms)
-INFO: 127.0.0.1:61074 - "GET /settings/llm-providers HTTP/1.1" 200 OK
-2026-02-26 13:37:12,642 [INFO] papermind.api: [3b9469e8] GET /settings/llm-providers/active → 200 (5ms)
-INFO: 127.0.0.1:61076 - "GET /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:37:12,644 [INFO] papermind.api: [1e9cd357] GET /settings/daily-report-config → 200 (3ms)
-INFO: 127.0.0.1:61073 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:37:12,645 [INFO] papermind.api: [f82ee94d] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:61052 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:37:12,645 [INFO] papermind.api: [0ae5c4c9] GET /settings/email-configs → 200 (2ms)
-INFO: 127.0.0.1:61078 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:37:12,646 [INFO] papermind.api: [67b1f748] GET /settings/llm-providers/active → 200 (2ms)
-INFO: 127.0.0.1:61074 - "GET /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:37:12,646 [INFO] papermind.api: [d8166bf2] GET /settings/llm-providers → 200 (2ms)
-INFO: 127.0.0.1:61070 - "GET /settings/llm-providers HTTP/1.1" 200 OK
-2026-02-26 13:37:13,049 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Learnable+Multi-level+Discrete+Wavelet+Transforms+for+3D+Gaussian+Splatting+Frequency+Modulation&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:37:13,049 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 5/5 in 15.0s
-2026-02-26 13:37:14,118 [INFO] papermind.api: [fc643084] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61070 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:14,631 [INFO] papermind.api: [7a5b26da] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61070 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:16,119 [INFO] papermind.api: [74c3db46] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61092 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:16,630 [INFO] papermind.api: [efc4a5a9] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61092 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:18,118 [INFO] papermind.api: [94ae3faf] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61092 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:18,631 [INFO] papermind.api: [6e725fd4] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61092 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:20,118 [INFO] papermind.api: [ff18aee9] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61092 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:20,632 [INFO] papermind.api: [25cade26] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61092 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:22,120 [INFO] papermind.api: [1143ea10] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61099 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:22,630 [INFO] papermind.api: [b39d9226] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61099 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:24,118 [INFO] papermind.api: [fcd70ddb] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61099 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:24,632 [INFO] papermind.api: [492c35a4] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61099 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:26,120 [INFO] papermind.api: [0875437c] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61104 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:26,631 [INFO] papermind.api: [9c5c900f] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61104 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:28,052 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/search
-2026-02-26 13:37:28,118 [INFO] papermind.api: [f49cd061] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61104 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:28,632 [INFO] papermind.api: [2d49428e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61104 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:29,649 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Gaussian+Mesh+Renderer+for+Lightweight+Differentiable+Rendering%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:37:30,056 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7130236559&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:37:30,119 [INFO] papermind.api: [49966108] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61104 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:30,580 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Gaussian+Mesh+Renderer+for+Lightweight+Differentiable+Rendering&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:37:30,580 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:37:30,631 [INFO] papermind.api: [26aa6a7a] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61104 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:32,118 [INFO] papermind.api: [1841cff1] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61117 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:32,634 [INFO] papermind.api: [44e0efb1] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61117 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:32,860 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Gaussian+Mesh+Renderer+for+Lightweight+Differentiable+Rendering&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:37:32,860 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:37:34,120 [INFO] papermind.api: [d17facca] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61117 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:34,634 [INFO] papermind.api: [12bd5071] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61117 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:36,123 [INFO] papermind.api: [40f0575c] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61128 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:36,632 [INFO] papermind.api: [9f17bf18] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61128 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:37,450 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Gaussian+Mesh+Renderer+for+Lightweight+Differentiable+Rendering&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:37:37,450 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:37:38,119 [INFO] papermind.api: [fdce1319] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61128 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:38,631 [INFO] papermind.api: [dfaa51a1] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61128 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:40,121 [INFO] papermind.api: [9eca12a8] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61128 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:40,632 [INFO] papermind.api: [b5b6f09d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61128 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:41,954 [INFO] papermind.api: [5cdd7cf5] GET /today → 200 (4ms)
-INFO: 127.0.0.1:61156 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:37:41,956 [INFO] papermind.api: [b82a767e] GET /tasks/active → 200 (6ms)
-INFO: 127.0.0.1:61157 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:41,958 [INFO] papermind.api: [88f89793] GET /papers/folder-stats → 200 (8ms)
-INFO: 127.0.0.1:61155 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:37:41,959 [INFO] papermind.api: [376b7836] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61156 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:41,959 [INFO] papermind.api: [d8ec368b] GET /today → 200 (1ms)
-INFO: 127.0.0.1:61159 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:37:41,962 [INFO] papermind.api: [2603af30] GET /papers/folder-stats → 200 (3ms)
-INFO: 127.0.0.1:61157 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:37:42,121 [INFO] papermind.api: [a0942829] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:61159 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:42,121 [INFO] papermind.api: [48cdf875] GET /papers/folder-stats → 200 (3ms)
-INFO: 127.0.0.1:61157 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:37:43,951 [INFO] papermind.api: [3f0db994] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61157 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:44,119 [INFO] papermind.api: [dfb1c9c5] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61157 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:45,950 [INFO] papermind.api: [3b1727f1] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61157 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:45,990 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Gaussian+Mesh+Renderer+for+Lightweight+Differentiable+Rendering&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:37:45,990 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:37:46,123 [INFO] papermind.api: [3b80652b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61176 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:47,951 [INFO] papermind.api: [6e785a85] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61176 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:48,119 [INFO] papermind.api: [751c8fa4] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61176 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:49,950 [INFO] papermind.api: [842ae7f0] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61176 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:50,120 [INFO] papermind.api: [6895eddb] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61176 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:51,957 [INFO] papermind.api: [d7294b35] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61194 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:52,119 [INFO] papermind.api: [5fbceb2c] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61194 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:53,952 [INFO] papermind.api: [b6170aec] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61194 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:54,120 [INFO] papermind.api: [909dc668] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61194 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:55,953 [INFO] papermind.api: [a15c2637] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61194 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:56,121 [INFO] papermind.api: [2e088b52] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:61207 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:57,956 [INFO] papermind.api: [f2d1ddfd] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61207 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:58,120 [INFO] papermind.api: [b9006db6] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61207 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:37:59,952 [INFO] papermind.api: [7351afca] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61207 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:00,124 [INFO] papermind.api: [79b28053] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61207 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:01,600 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Gaussian+Mesh+Renderer+for+Lightweight+Differentiable+Rendering&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:38:01,601 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 5/5 in 15.0s
-2026-02-26 13:38:01,953 [INFO] papermind.api: [73e43f27] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61222 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:02,119 [INFO] papermind.api: [c07157bd] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61222 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:03,952 [INFO] papermind.api: [17749ebb] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61222 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:04,119 [INFO] papermind.api: [010a83db] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61222 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:05,952 [INFO] papermind.api: [a460f309] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61222 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:06,120 [INFO] papermind.api: [ef29d682] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61229 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:07,953 [INFO] papermind.api: [4292af36] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61229 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:08,119 [INFO] papermind.api: [b94e1613] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61229 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:09,953 [INFO] papermind.api: [045c2acd] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61229 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:10,120 [INFO] papermind.api: [176395ed] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61229 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:11,955 [INFO] papermind.api: [0a292835] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:61257 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:11,958 [INFO] papermind.api: [0f729128] GET /papers/folder-stats → 200 (6ms)
-INFO: 127.0.0.1:61256 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:38:12,122 [INFO] papermind.api: [f7ee6736] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:61257 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:12,125 [INFO] papermind.api: [6a456577] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:61256 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:38:13,953 [INFO] papermind.api: [16cb4601] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61256 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:14,120 [INFO] papermind.api: [0afb7e43] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61256 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:15,952 [INFO] papermind.api: [91b80b17] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61256 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:16,123 [INFO] papermind.api: [e55b030e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61267 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:16,603 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/search
-2026-02-26 13:38:17,491 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Wrivinder%3A+Towards+Spatial+Intelligence+for+Geo-locating+Ground+Images+onto+Satellite+Imagery%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:38:17,871 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7129416186&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:38:17,953 [INFO] papermind.api: [4313b93d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61267 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:18,120 [INFO] papermind.api: [dc58267f] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61267 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:18,801 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Wrivinder%3A+Towards+Spatial+Intelligence+for+Geo-locating+Ground+Images+onto+Satellite+Imagery&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:38:18,801 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:38:19,952 [INFO] papermind.api: [b7f46397] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61267 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:20,121 [INFO] papermind.api: [00bb1995] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61267 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:21,086 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Wrivinder%3A+Towards+Spatial+Intelligence+for+Geo-locating+Ground+Images+onto+Satellite+Imagery&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:38:21,086 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:38:21,952 [INFO] papermind.api: [0516916e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61288 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:22,121 [INFO] papermind.api: [fbf40749] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61288 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:23,954 [INFO] papermind.api: [1259e5c4] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:61288 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:24,120 [INFO] papermind.api: [80e702e1] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61288 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:25,372 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Wrivinder%3A+Towards+Spatial+Intelligence+for+Geo-locating+Ground+Images+onto+Satellite+Imagery&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:38:25,373 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:38:25,952 [INFO] papermind.api: [2df22ebb] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61288 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:26,120 [INFO] papermind.api: [4c7f8daf] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61299 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:27,952 [INFO] papermind.api: [2597dc05] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61299 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:28,119 [INFO] papermind.api: [6db89fe1] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61299 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:29,952 [INFO] papermind.api: [d49ceffb] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61299 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:30,121 [INFO] papermind.api: [8ee81ea0] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61299 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:31,956 [INFO] papermind.api: [a6def4aa] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61306 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:32,119 [INFO] papermind.api: [4c7c3042] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61306 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:33,953 [INFO] papermind.api: [0096c08a] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61306 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:33,956 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Wrivinder%3A+Towards+Spatial+Intelligence+for+Geo-locating+Ground+Images+onto+Satellite+Imagery&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:38:33,956 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:38:34,121 [INFO] papermind.api: [0be09317] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61306 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:35,952 [INFO] papermind.api: [758cf7cc] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61306 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:36,124 [INFO] papermind.api: [f9a008d0] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61321 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:37,956 [INFO] papermind.api: [9326b248] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61321 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:38,119 [INFO] papermind.api: [f3412256] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61321 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:39,952 [INFO] papermind.api: [eab7f294] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61321 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:40,123 [INFO] papermind.api: [4864461e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61321 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:41,955 [INFO] papermind.api: [93092ec8] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:61330 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:41,958 [INFO] papermind.api: [43706748] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:61329 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:38:42,123 [INFO] papermind.api: [5977cdbb] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:61330 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:42,124 [INFO] papermind.api: [508505d8] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:61329 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:38:43,956 [INFO] papermind.api: [b0c94719] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61329 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:44,119 [INFO] papermind.api: [1c6ff9a2] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61329 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:45,951 [INFO] papermind.api: [57a110c3] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61329 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:46,121 [INFO] papermind.api: [f7ec55f0] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61343 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:47,952 [INFO] papermind.api: [59be3696] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61343 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:48,121 [INFO] papermind.api: [fac33bf8] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61343 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:49,844 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Wrivinder%3A+Towards+Spatial+Intelligence+for+Geo-locating+Ground+Images+onto+Satellite+Imagery&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:38:49,844 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 5/5 in 15.0s
-2026-02-26 13:38:49,956 [INFO] papermind.api: [7b410269] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61343 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:50,119 [INFO] papermind.api: [d3cea56b] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61343 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:51,952 [INFO] papermind.api: [77145bc0] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61362 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:52,121 [INFO] papermind.api: [228959fe] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61362 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:53,952 [INFO] papermind.api: [3e992558] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61362 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:54,121 [INFO] papermind.api: [6e607d8a] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61362 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:55,955 [INFO] papermind.api: [cee3191e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61362 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:56,120 [INFO] papermind.api: [e8581fde] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61369 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:57,953 [INFO] papermind.api: [146a4905] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61369 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:58,123 [INFO] papermind.api: [b4e3bbce] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61369 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:38:59,954 [INFO] papermind.api: [bd85a0f1] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61369 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:00,121 [INFO] papermind.api: [a1a5f1bf] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61369 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:01,955 [INFO] papermind.api: [349b612e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61382 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:02,119 [INFO] papermind.api: [0a03753e] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61382 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:03,952 [INFO] papermind.api: [9643853b] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61382 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:04,122 [INFO] papermind.api: [77d2d7ba] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61382 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:04,849 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/search
-2026-02-26 13:39:05,953 [INFO] papermind.api: [f1836d63] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61382 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:06,119 [INFO] papermind.api: [bc57e80a] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61391 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:06,369 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Time-Archival+Camera+Virtualization+for+Sports+and+Visual+Performances%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:39:06,766 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7130482245&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:39:07,620 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Time-Archival+Camera+Virtualization+for+Sports+and+Visual+Performances&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:39:07,621 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:39:07,956 [INFO] papermind.api: [d024feca] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61391 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:08,120 [INFO] papermind.api: [5080961f] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61391 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:09,908 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Time-Archival+Camera+Virtualization+for+Sports+and+Visual+Performances&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:39:09,908 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:39:09,953 [INFO] papermind.api: [ac31a79d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61391 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:10,120 [INFO] papermind.api: [727cd67b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61391 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:11,957 [INFO] papermind.api: [fe3bef96] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:61408 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:11,959 [INFO] papermind.api: [0631668b] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:61407 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:39:12,122 [INFO] papermind.api: [c1892e49] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:61408 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:12,123 [INFO] papermind.api: [dab0e05f] GET /papers/folder-stats → 200 (3ms)
-INFO: 127.0.0.1:61407 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:39:13,956 [INFO] papermind.api: [13b20f41] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61407 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:14,119 [INFO] papermind.api: [511f0d7e] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61407 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:14,187 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Time-Archival+Camera+Virtualization+for+Sports+and+Visual+Performances&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:39:14,187 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:39:15,953 [INFO] papermind.api: [ada585ec] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61407 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:16,124 [INFO] papermind.api: [55b6062b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61415 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:17,953 [INFO] papermind.api: [c4ae436b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61415 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:18,119 [INFO] papermind.api: [3edb6c00] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61415 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:19,952 [INFO] papermind.api: [f1d3a16c] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61415 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:20,120 [INFO] papermind.api: [21ff2f96] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61415 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:21,952 [INFO] papermind.api: [3d21d96a] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61430 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:22,124 [INFO] papermind.api: [d71750e7] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61430 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:23,279 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Time-Archival+Camera+Virtualization+for+Sports+and+Visual+Performances&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:39:23,279 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:39:23,956 [INFO] papermind.api: [ef828aa7] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:61430 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:24,120 [INFO] papermind.api: [46b3f8ee] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61430 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:25,952 [INFO] papermind.api: [6fd16119] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61430 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:26,121 [INFO] papermind.api: [6e5490fb] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61437 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:27,953 [INFO] papermind.api: [b4be6c4a] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61437 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:28,121 [INFO] papermind.api: [2b42f76b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61437 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:29,956 [INFO] papermind.api: [d6086e23] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:61437 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:30,120 [INFO] papermind.api: [eabb0d3b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61437 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:31,807 [INFO] papermind.api: [ba551d4d] GET /settings/llm-providers → 200 (95ms)
-INFO: 127.0.0.1:61457 - "GET /settings/llm-providers HTTP/1.1" 200 OK
-2026-02-26 13:39:31,809 [INFO] papermind.api: [80d2d160] GET /settings/llm-providers/active → 200 (96ms)
-INFO: 127.0.0.1:61458 - "GET /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:39:31,818 [INFO] papermind.api: [261a11de] GET /settings/llm-providers → 200 (4ms)
-INFO: 127.0.0.1:61457 - "GET /settings/llm-providers HTTP/1.1" 200 OK
-2026-02-26 13:39:31,820 [INFO] papermind.api: [e1d2c884] GET /settings/llm-providers/active → 200 (3ms)
-INFO: 127.0.0.1:61462 - "GET /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:39:31,952 [INFO] papermind.api: [5fdd404a] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61462 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:32,123 [INFO] papermind.api: [276fd266] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61462 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:32,999 [INFO] papermind.api: [c24eda9c] GET /settings/daily-report-config → 200 (1ms)
-INFO: 127.0.0.1:61457 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:39:33,000 [INFO] papermind.api: [d5a44c5e] GET /settings/email-configs → 200 (3ms)
-INFO: 127.0.0.1:61462 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:39:33,001 [INFO] papermind.api: [6afddf6c] GET /settings/daily-report-config → 200 (1ms)
-INFO: 127.0.0.1:61458 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:39:33,002 [INFO] papermind.api: [c793340a] GET /settings/email-configs → 200 (1ms)
-INFO: 127.0.0.1:61457 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:39:33,954 [INFO] papermind.api: [dc0ad510] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61457 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:34,121 [INFO] papermind.api: [523b6713] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61457 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:35,952 [INFO] papermind.api: [ee8ac4fd] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61457 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:36,031 [INFO] papermind.api: [1c9ba602] PUT /settings/daily-report-config → 200 (2ms)
-INFO: 127.0.0.1:61457 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:39:36,041 [INFO] papermind.api: [6ad1f8b6] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61457 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:36,121 [INFO] papermind.api: [7b9dcf5a] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61471 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:36,866 [INFO] papermind.api: [0378c54e] PUT /settings/daily-report-config → 200 (2ms)
-INFO: 127.0.0.1:61471 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:39:36,879 [INFO] papermind.api: [41f4a4a1] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61471 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:38,122 [INFO] papermind.api: [bf7911ca] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61471 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:38,878 [INFO] papermind.api: [daa86ed2] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61471 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:39,185 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Time-Archival+Camera+Virtualization+for+Sports+and+Visual+Performances&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:39:39,186 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 5/5 in 15.0s
-2026-02-26 13:39:39,545 [INFO] papermind.api: [d054505a] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61471 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:40,121 [INFO] papermind.api: [88590431] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61471 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:40,215 [INFO] papermind.api: [4c21d06f] PUT /settings/daily-report-config → 200 (2ms)
-INFO: 127.0.0.1:61471 - "PUT /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:39:40,226 [INFO] papermind.api: [33defeab] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61471 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:40,380 [INFO] papermind.api: [1622c514] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61471 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:41,956 [INFO] papermind.api: [ee1e5f98] GET /papers/folder-stats → 200 (3ms)
-INFO: 127.0.0.1:61489 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:39:42,123 [INFO] papermind.api: [ed06ff03] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61491 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:42,124 [INFO] papermind.api: [e746e08f] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:61489 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:39:42,381 [INFO] papermind.api: [9997078c] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61489 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:43,530 [INFO] papermind.api: [66764091] POST /jobs/daily-report/run-once → 200 (0ms)
-INFO: 127.0.0.1:61489 - "POST /jobs/daily-report/run-once HTTP/1.1" 200 OK
-ERROR: Exception in ASGI application
-Traceback (most recent call last):
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/uvicorn/protocols/http/h11_impl.py", line 410, in run_asgi
- result = await app( # type: ignore[func-returns-value]
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- self.scope, self.receive, self.send
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- )
- ^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
- return await self.app(scope, receive, send)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/fastapi/applications.py", line 1160, in __call__
- await super().__call__(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/applications.py", line 107, in __call__
- await self.middleware_stack(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/errors.py", line 186, in __call__
- raise exc
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/errors.py", line 164, in __call__
- await self.app(scope, receive, _send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/cors.py", line 95, in __call__
- await self.simple_response(scope, receive, send, request_headers=headers)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/cors.py", line 153, in simple_response
- await self.app(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/base.py", line 198, in __call__
- raise app_exc
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/base.py", line 144, in coro
- await self.app(scope, receive_or_disconnect, send_no_error)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/exceptions.py", line 63, in __call__
- await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
- raise exc
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
- await app(scope, receive, sender)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
- await self.app(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/routing.py", line 716, in __call__
- await self.middleware_stack(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/routing.py", line 736, in app
- await route.handle(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/routing.py", line 290, in handle
- await self.app(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/fastapi/routing.py", line 119, in app
- await wrap_app_handling_exceptions(app, request)(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
- raise exc
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
- await app(scope, receive, sender)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/fastapi/routing.py", line 106, in app
- await response(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/responses.py", line 167, in __call__
- await self.background()
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/background.py", line 36, in __call__
- await task()
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/background.py", line 23, in __call__
- await run_in_threadpool(self.func, *self.args, **self.kwargs)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/concurrency.py", line 32, in run_in_threadpool
- return await anyio.to_thread.run_sync(func)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/anyio/to_thread.py", line 63, in run_sync
- return await get_async_backend().run_sync_in_worker_thread(
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- func, args, abandon_on_cancel=abandon_on_cancel, limiter=limiter
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- )
- ^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/anyio/_backends/_asyncio.py", line 2502, in run_sync_in_worker_thread
- return await future
- ^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/anyio/_backends/_asyncio.py", line 986, in run
- result = context.run(func, *args)
- File "/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py", line 1936, in _run_daily_workflow_bg
- task_id = f"daily_report_{uuid.uuid4().hex[:8]}"
- ^^^^
-NameError: name 'uuid' is not defined. Did you mean: '_uuid'? Or did you forget to import 'uuid'?
-2026-02-26 13:39:43,542 [INFO] papermind.api: [14e36b5b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61491 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:43,727 [INFO] papermind.api: [d017cdd2] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61491 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:44,121 [INFO] papermind.api: [61a762d2] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61491 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:45,728 [INFO] papermind.api: [9d3f0c9d] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61491 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:46,122 [INFO] papermind.api: [66c0bfc1] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61510 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:46,199 [INFO] papermind.api: [b658bec1] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61510 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:47,043 [INFO] papermind.api: [857bef8a] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61510 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:48,124 [INFO] papermind.api: [0aa6fce3] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61510 - "GET /tasks/active HTTP/1.1" 200 OK
-INFO: 127.0.0.1:61510 - "OPTIONS /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:39:48,379 [INFO] papermind.api: [8a2fcc98] GET /papers/folder-stats → 200 (3ms)
-INFO: 127.0.0.1:61510 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-INFO: 127.0.0.1:61525 - "OPTIONS /actions?limit=30 HTTP/1.1" 200 OK
-INFO: 127.0.0.1:61526 - "OPTIONS /papers/latest?page=1&page_size=20 HTTP/1.1" 200 OK
-INFO: 127.0.0.1:61529 - "OPTIONS /actions?limit=30 HTTP/1.1" 200 OK
-INFO: 127.0.0.1:61530 - "OPTIONS /papers/latest?page=1&page_size=20 HTTP/1.1" 200 OK
-2026-02-26 13:39:48,392 [INFO] papermind.api: [ed88e0f7] GET /papers/folder-stats → 200 (6ms)
-INFO: 127.0.0.1:61510 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:39:48,394 [INFO] papermind.api: [a2d7d2f6] GET /actions → 200 (5ms)
-INFO: 127.0.0.1:61525 - "GET /actions?limit=30 HTTP/1.1" 200 OK
-2026-02-26 13:39:48,396 [INFO] papermind.api: [75e4dc4f] GET /papers/latest → 200 (5ms)
-INFO: 127.0.0.1:61532 - "GET /papers/latest?page=1&page_size=20 HTTP/1.1" 200 OK
-2026-02-26 13:39:48,398 [INFO] papermind.api: [36b64b94] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:61530 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:39:48,399 [INFO] papermind.api: [86ccf00c] GET /actions → 200 (3ms)
-INFO: 127.0.0.1:61510 - "GET /actions?limit=30 HTTP/1.1" 200 OK
-2026-02-26 13:39:48,400 [INFO] papermind.api: [376e45d2] GET /papers/latest → 200 (3ms)
-INFO: 127.0.0.1:61525 - "GET /papers/latest?page=1&page_size=20 HTTP/1.1" 200 OK
-INFO: 127.0.0.1:61510 - "OPTIONS /generated/list?type=daily_brief&limit=50 HTTP/1.1" 200 OK
-INFO: 127.0.0.1:61530 - "OPTIONS /generated/list?type=daily_brief&limit=50 HTTP/1.1" 200 OK
-2026-02-26 13:39:48,984 [INFO] papermind.api: [7c9369b2] GET /papers/folder-stats → 200 (2ms)
-INFO: 127.0.0.1:61525 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:39:48,990 [INFO] papermind.api: [4b983dbc] GET /generated/list → 200 (2ms)
-INFO: 127.0.0.1:61525 - "GET /generated/list?type=daily_brief&limit=50 HTTP/1.1" 200 OK
-2026-02-26 13:39:48,992 [INFO] papermind.api: [1b58a4c5] GET /generated/list → 200 (1ms)
-INFO: 127.0.0.1:61530 - "GET /generated/list?type=daily_brief&limit=50 HTTP/1.1" 200 OK
-INFO: 127.0.0.1:61530 - "OPTIONS /generated/936d8d45-1fce-4c33-aa26-39c997638593 HTTP/1.1" 200 OK
-2026-02-26 13:39:48,994 [INFO] papermind.api: [8e7e2b80] GET /generated/936d8d45-1fce-4c33-aa26-39c997638593 → 200 (1ms)
-INFO: 127.0.0.1:61530 - "GET /generated/936d8d45-1fce-4c33-aa26-39c997638593 HTTP/1.1" 200 OK
-2026-02-26 13:39:48,995 [INFO] papermind.api: [fdc7b2f8] GET /generated/936d8d45-1fce-4c33-aa26-39c997638593 → 200 (1ms)
-INFO: 127.0.0.1:61525 - "GET /generated/936d8d45-1fce-4c33-aa26-39c997638593 HTTP/1.1" 200 OK
-2026-02-26 13:39:49,043 [INFO] papermind.api: [c538d371] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61525 - "GET /tasks/active HTTP/1.1" 200 OK
-INFO: 127.0.0.1:61530 - "OPTIONS /graph/overview HTTP/1.1" 200 OK
-INFO: 127.0.0.1:61510 - "OPTIONS /graph/bridges HTTP/1.1" 200 OK
-INFO: 127.0.0.1:61532 - "OPTIONS /graph/frontier?days=90 HTTP/1.1" 200 OK
-INFO: 127.0.0.1:61529 - "OPTIONS /graph/cocitation-clusters?min_cocite=2 HTTP/1.1" 200 OK
-INFO: 127.0.0.1:61534 - "OPTIONS /graph/similarity-map?topic_id=&limit=200 HTTP/1.1" 200 OK
-2026-02-26 13:39:49,504 [INFO] papermind.api: [2061f672] GET /papers/folder-stats → 200 (7ms)
-INFO: 127.0.0.1:61525 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:39:49,624 [WARNING] packages.ai.graph_service: UMAP failed: No module named 'umap', falling back to PCA
-2026-02-26 13:39:49,628 [INFO] papermind.api: [82bf48ee] GET /graph/frontier → 200 (128ms)
-INFO: 127.0.0.1:61529 - "GET /graph/frontier?days=90 HTTP/1.1" 200 OK
-2026-02-26 13:39:49,631 [INFO] papermind.api: [4d43e9f5] GET /graph/cocitation-clusters → 200 (132ms)
-INFO: 127.0.0.1:61530 - "GET /graph/cocitation-clusters?min_cocite=2 HTTP/1.1" 200 OK
-2026-02-26 13:39:49,634 [INFO] papermind.api: [3ccf2b58] GET /graph/overview → 200 (135ms)
-INFO: 127.0.0.1:61510 - "GET /graph/overview HTTP/1.1" 200 OK
-2026-02-26 13:39:49,635 [INFO] papermind.api: [7d2cbdff] GET /graph/bridges → 200 (135ms)
-INFO: 127.0.0.1:61532 - "GET /graph/bridges HTTP/1.1" 200 OK
-2026-02-26 13:39:49,639 [INFO] papermind.api: [094b0581] GET /graph/similarity-map → 200 (139ms)
-INFO: 127.0.0.1:61534 - "GET /graph/similarity-map?topic_id=&limit=200 HTTP/1.1" 200 OK
-INFO: 127.0.0.1:61532 - "OPTIONS /generated/list?type=topic_wiki&limit=50 HTTP/1.1" 200 OK
-INFO: 127.0.0.1:61510 - "OPTIONS /generated/list?type=topic_wiki&limit=50 HTTP/1.1" 200 OK
-2026-02-26 13:39:50,021 [INFO] papermind.api: [d357d4f6] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:61534 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:39:50,024 [INFO] papermind.api: [110105b7] GET /generated/list → 200 (6ms)
-INFO: 127.0.0.1:61532 - "GET /generated/list?type=topic_wiki&limit=50 HTTP/1.1" 200 OK
-2026-02-26 13:39:50,028 [INFO] papermind.api: [d07f7f5d] GET /generated/list → 200 (4ms)
-INFO: 127.0.0.1:61534 - "GET /generated/list?type=topic_wiki&limit=50 HTTP/1.1" 200 OK
-2026-02-26 13:39:50,121 [INFO] papermind.api: [237d35d9] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61534 - "GET /tasks/active HTTP/1.1" 200 OK
-INFO: 127.0.0.1:61532 - "OPTIONS /writing/templates HTTP/1.1" 200 OK
-INFO: 127.0.0.1:61510 - "OPTIONS /writing/templates HTTP/1.1" 200 OK
-2026-02-26 13:39:50,533 [INFO] papermind.api: [8d2682cb] GET /writing/templates → 200 (1ms)
-INFO: 127.0.0.1:61510 - "GET /writing/templates HTTP/1.1" 200 OK
-2026-02-26 13:39:50,534 [INFO] papermind.api: [88176f4b] GET /papers/folder-stats → 200 (3ms)
-INFO: 127.0.0.1:61534 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:39:50,534 [INFO] papermind.api: [c62e8e03] GET /writing/templates → 200 (1ms)
-INFO: 127.0.0.1:61532 - "GET /writing/templates HTTP/1.1" 200 OK
-INFO: 127.0.0.1:61534 - "OPTIONS /system/status HTTP/1.1" 200 OK
-INFO: 127.0.0.1:61510 - "OPTIONS /metrics/costs?days=7 HTTP/1.1" 200 OK
-INFO: 127.0.0.1:61530 - "OPTIONS /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-INFO: 127.0.0.1:61529 - "OPTIONS /today HTTP/1.1" 200 OK
-INFO: 127.0.0.1:61525 - "OPTIONS /system/status HTTP/1.1" 200 OK
-INFO: 127.0.0.1:61534 - "OPTIONS /metrics/costs?days=7 HTTP/1.1" 200 OK
-INFO: 127.0.0.1:61510 - "OPTIONS /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-INFO: 127.0.0.1:61530 - "OPTIONS /today HTTP/1.1" 200 OK
-2026-02-26 13:39:51,039 [INFO] papermind.api: [ef870eaa] GET /papers/folder-stats → 200 (7ms)
-INFO: 127.0.0.1:61532 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:39:51,040 [INFO] papermind.api: [9903561d] GET /metrics/costs → 200 (5ms)
-INFO: 127.0.0.1:61525 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
-2026-02-26 13:39:51,041 [INFO] papermind.api: [420d1122] GET /pipelines/runs → 200 (4ms)
-INFO: 127.0.0.1:61543 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:39:51,044 [INFO] papermind.api: [cb5ee547] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:61525 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:51,046 [INFO] papermind.api: [5d8dc9d7] GET /pipelines/runs → 200 (3ms)
-INFO: 127.0.0.1:61530 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:39:51,047 [INFO] papermind.api: [f96b93ed] GET /metrics/costs → 200 (5ms)
-INFO: 127.0.0.1:61532 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
-2026-02-26 13:39:51,068 [INFO] papermind.api: [8b7c5991] GET /system/status → 200 (33ms)
-INFO: 127.0.0.1:61529 - "GET /system/status HTTP/1.1" 200 OK
-2026-02-26 13:39:51,094 [INFO] papermind.api: [4fa4ecff] GET /today → 200 (57ms)
-INFO: 127.0.0.1:61545 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:39:51,102 [INFO] papermind.api: [b3e13c62] GET /today → 200 (7ms)
-INFO: 127.0.0.1:61529 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:39:51,112 [INFO] papermind.api: [1ad1eace] GET /system/status → 200 (43ms)
-INFO: 127.0.0.1:61532 - "GET /system/status HTTP/1.1" 200 OK
-2026-02-26 13:39:52,122 [INFO] papermind.api: [c34c0c3c] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61549 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:53,042 [INFO] papermind.api: [ad1e6a86] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61549 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:54,123 [INFO] papermind.api: [4d3171e7] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61549 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:54,190 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/search
-2026-02-26 13:39:55,044 [INFO] papermind.api: [c76184bd] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61549 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:55,695 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22DAV-GSWT%3A+Diffusion-Active-View+Sampling+for+Data-Efficient+Gaussian+Splatting+Wang+Tiles%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:39:56,115 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7130420455&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:39:56,120 [INFO] papermind.api: [3ca7beb8] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61549 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:56,651 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=DAV-GSWT%3A+Diffusion-Active-View+Sampling+for+Data-Efficient+Gaussian+Splatting+Wang+Tiles&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:39:56,652 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:39:57,046 [INFO] papermind.api: [a6903446] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61549 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:58,123 [INFO] papermind.api: [0102d2f4] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61549 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:39:58,932 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=DAV-GSWT%3A+Diffusion-Active-View+Sampling+for+Data-Efficient+Gaussian+Splatting+Wang+Tiles&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:39:58,932 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:39:59,043 [INFO] papermind.api: [72a26d8e] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61549 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:00,121 [INFO] papermind.api: [9ce4f532] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61549 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:01,047 [INFO] papermind.api: [cbfd3568] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61549 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:02,121 [INFO] papermind.api: [8a8d8af4] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61571 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:03,043 [INFO] papermind.api: [632177df] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61571 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:03,226 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=DAV-GSWT%3A+Diffusion-Active-View+Sampling+for+Data-Efficient+Gaussian+Splatting+Wang+Tiles&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:40:03,226 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:40:04,133 [INFO] papermind.api: [39babb79] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61571 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:05,043 [INFO] papermind.api: [3c91a3d2] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61571 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:06,121 [INFO] papermind.api: [30be0c93] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61571 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:07,043 [INFO] papermind.api: [bca38084] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61571 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:08,121 [INFO] papermind.api: [ca2219fa] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61571 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:09,044 [INFO] papermind.api: [f74f56e0] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61571 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:10,124 [INFO] papermind.api: [f8cba9dc] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61571 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:11,043 [INFO] papermind.api: [14ea9964] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61571 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:11,287 [INFO] papermind.api: [1b032dd9] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61589 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:12,116 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=DAV-GSWT%3A+Diffusion-Active-View+Sampling+for+Data-Efficient+Gaussian+Splatting+Wang+Tiles&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:40:12,116 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:40:12,128 [INFO] papermind.api: [30c33321] GET /tasks/active → 200 (6ms)
-INFO: 127.0.0.1:61596 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:12,129 [INFO] papermind.api: [043dba32] GET /papers/folder-stats → 200 (7ms)
-INFO: 127.0.0.1:61595 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:40:13,043 [INFO] papermind.api: [8f04e24a] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61595 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:14,121 [INFO] papermind.api: [e3df2012] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61595 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:15,046 [INFO] papermind.api: [4886afb2] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61595 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:16,124 [INFO] papermind.api: [effb277e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61595 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:17,043 [INFO] papermind.api: [310bed14] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61595 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:18,126 [INFO] papermind.api: [9a6471af] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61595 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:19,044 [INFO] papermind.api: [ce784213] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61595 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:20,121 [INFO] papermind.api: [2ee60150] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61595 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:21,047 [INFO] papermind.api: [b7779ef3] GET /papers/folder-stats → 200 (10ms)
-INFO: 127.0.0.1:61595 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:40:21,048 [INFO] papermind.api: [012c522b] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:61610 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:22,122 [INFO] papermind.api: [50e3dc1e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61616 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:23,043 [INFO] papermind.api: [d1b935f3] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61616 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:23,534 [INFO] papermind.api: [3407d986] GET /settings/llm-providers → 200 (2ms)
-INFO: 127.0.0.1:61616 - "GET /settings/llm-providers HTTP/1.1" 200 OK
-2026-02-26 13:40:23,534 [INFO] papermind.api: [35699f31] GET /settings/llm-providers/active → 200 (2ms)
-INFO: 127.0.0.1:61618 - "GET /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:40:23,537 [INFO] papermind.api: [81366106] GET /settings/llm-providers/active → 200 (1ms)
-INFO: 127.0.0.1:61620 - "GET /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:40:23,537 [INFO] papermind.api: [4edfcd39] GET /settings/llm-providers → 200 (2ms)
-INFO: 127.0.0.1:61616 - "GET /settings/llm-providers HTTP/1.1" 200 OK
-2026-02-26 13:40:24,121 [INFO] papermind.api: [26738d15] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61616 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:25,043 [INFO] papermind.api: [f88a7dc7] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61616 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:25,315 [INFO] papermind.api: [3b8b8b71] GET /settings/daily-report-config → 200 (1ms)
-INFO: 127.0.0.1:61620 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:40:25,315 [INFO] papermind.api: [6d2f0baf] GET /settings/email-configs → 200 (2ms)
-INFO: 127.0.0.1:61616 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:40:25,317 [INFO] papermind.api: [fe1a08c9] GET /settings/daily-report-config → 200 (1ms)
-INFO: 127.0.0.1:61618 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:40:25,317 [INFO] papermind.api: [7d0f35d2] GET /settings/email-configs → 200 (1ms)
-INFO: 127.0.0.1:61620 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:40:26,124 [INFO] papermind.api: [161624ee] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:61620 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:27,045 [INFO] papermind.api: [c5d0a1c2] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61620 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:27,665 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=DAV-GSWT%3A+Diffusion-Active-View+Sampling+for+Data-Efficient+Gaussian+Splatting+Wang+Tiles&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:40:27,666 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 5/5 in 15.0s
-2026-02-26 13:40:28,124 [INFO] papermind.api: [31d8109f] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61620 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:28,657 [INFO] papermind.api: [c1292077] GET /pipelines/runs → 200 (1ms)
-INFO: 127.0.0.1:61640 - "GET /pipelines/runs?limit=5 HTTP/1.1" 200 OK
-2026-02-26 13:40:29,044 [INFO] papermind.api: [8f1ea5db] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61620 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:30,122 [INFO] papermind.api: [f3ed18e5] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61620 - "GET /tasks/active HTTP/1.1" 200 OK
-INFO: 127.0.0.1:61620 - "OPTIONS /settings/email-configs/d14c0d64-ac9c-4e9e-8922-ad71c93a0517 HTTP/1.1" 200 OK
-2026-02-26 13:40:31,005 [INFO] papermind.api: [4fcd748e] DELETE /settings/email-configs/d14c0d64-ac9c-4e9e-8922-ad71c93a0517 → 200 (6ms)
-INFO: 127.0.0.1:61620 - "DELETE /settings/email-configs/d14c0d64-ac9c-4e9e-8922-ad71c93a0517 HTTP/1.1" 200 OK
-2026-02-26 13:40:31,011 [INFO] papermind.api: [e5722bfc] GET /settings/email-configs → 200 (5ms)
-INFO: 127.0.0.1:61620 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:40:31,018 [INFO] papermind.api: [f45d0ec6] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61620 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:32,121 [INFO] papermind.api: [1dc67cdc] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61647 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:33,022 [INFO] papermind.api: [726edb2e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61647 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:33,752 [INFO] papermind.api: [33317c35] POST /settings/email-configs/649bfe10-1030-4ec7-a07c-8f6084c3c7b5/activate → 200 (5ms)
-INFO: 127.0.0.1:61647 - "POST /settings/email-configs/649bfe10-1030-4ec7-a07c-8f6084c3c7b5/activate HTTP/1.1" 200 OK
-2026-02-26 13:40:33,758 [INFO] papermind.api: [e42a4678] GET /settings/email-configs → 200 (2ms)
-INFO: 127.0.0.1:61647 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:40:33,765 [INFO] papermind.api: [a07aece3] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61647 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:34,122 [INFO] papermind.api: [4a7b1970] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61647 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:34,527 [INFO] papermind.api: [39003db5] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61647 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:36,122 [INFO] papermind.api: [49da31f3] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61647 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:36,526 [INFO] papermind.api: [eac570a7] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61652 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:37,265 [INFO] papermind.api: [72ceeeb5] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61652 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:38,123 [INFO] papermind.api: [29a28e71] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61652 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:39,267 [INFO] papermind.api: [e981a287] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61652 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:39,997 [INFO] papermind.api: [bfd89faf] POST /jobs/daily-report/run-once → 200 (1ms)
-INFO: 127.0.0.1:61652 - "POST /jobs/daily-report/run-once HTTP/1.1" 200 OK
-ERROR: Exception in ASGI application
-Traceback (most recent call last):
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/uvicorn/protocols/http/h11_impl.py", line 410, in run_asgi
- result = await app( # type: ignore[func-returns-value]
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- self.scope, self.receive, self.send
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- )
- ^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
- return await self.app(scope, receive, send)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/fastapi/applications.py", line 1160, in __call__
- await super().__call__(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/applications.py", line 107, in __call__
- await self.middleware_stack(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/errors.py", line 186, in __call__
- raise exc
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/errors.py", line 164, in __call__
- await self.app(scope, receive, _send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/cors.py", line 95, in __call__
- await self.simple_response(scope, receive, send, request_headers=headers)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/cors.py", line 153, in simple_response
- await self.app(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/base.py", line 198, in __call__
- raise app_exc
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/base.py", line 144, in coro
- await self.app(scope, receive_or_disconnect, send_no_error)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/exceptions.py", line 63, in __call__
- await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
- raise exc
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
- await app(scope, receive, sender)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
- await self.app(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/routing.py", line 716, in __call__
- await self.middleware_stack(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/routing.py", line 736, in app
- await route.handle(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/routing.py", line 290, in handle
- await self.app(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/fastapi/routing.py", line 119, in app
- await wrap_app_handling_exceptions(app, request)(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
- raise exc
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
- await app(scope, receive, sender)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/fastapi/routing.py", line 106, in app
- await response(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/responses.py", line 167, in __call__
- await self.background()
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/background.py", line 36, in __call__
- await task()
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/background.py", line 23, in __call__
- await run_in_threadpool(self.func, *self.args, **self.kwargs)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/concurrency.py", line 32, in run_in_threadpool
- return await anyio.to_thread.run_sync(func)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/anyio/to_thread.py", line 63, in run_sync
- return await get_async_backend().run_sync_in_worker_thread(
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- func, args, abandon_on_cancel=abandon_on_cancel, limiter=limiter
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- )
- ^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/anyio/_backends/_asyncio.py", line 2502, in run_sync_in_worker_thread
- return await future
- ^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/anyio/_backends/_asyncio.py", line 986, in run
- result = context.run(func, *args)
- File "/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py", line 1936, in _run_daily_workflow_bg
- task_id = f"daily_report_{uuid.uuid4().hex[:8]}"
- ^^^^
-NameError: name 'uuid' is not defined. Did you mean: '_uuid'? Or did you forget to import 'uuid'?
-2026-02-26 13:40:40,014 [INFO] papermind.api: [a7ab242f] GET /tasks/active → 200 (4ms)
-INFO: 127.0.0.1:61670 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:40,121 [INFO] papermind.api: [d2ddfe54] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61670 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:42,012 [INFO] papermind.api: [53b16377] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61672 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:42,123 [INFO] papermind.api: [a2722e25] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61682 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:42,126 [INFO] papermind.api: [11d6c98c] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:61672 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:40:42,669 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/search
-2026-02-26 13:40:43,515 [INFO] papermind.api: [17afad4b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61672 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:44,122 [INFO] papermind.api: [ea09e27e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61672 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:44,228 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Semantic-Guided+3D+Gaussian+Splatting+for+Transient+Object+Removal%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:40:44,622 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7130482231&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:40:45,480 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Semantic-Guided+3D+Gaussian+Splatting+for+Transient+Object+Removal&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:40:45,481 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:40:45,513 [INFO] papermind.api: [dcf37c4b] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61672 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:46,121 [INFO] papermind.api: [c28c6f9b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61672 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:47,514 [INFO] papermind.api: [ad84d2ee] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61721 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:47,767 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Semantic-Guided+3D+Gaussian+Splatting+for+Transient+Object+Removal&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:40:47,767 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:40:48,121 [INFO] papermind.api: [3b8f4f9a] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61721 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:49,513 [INFO] papermind.api: [a6ea32c1] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61721 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:50,123 [INFO] papermind.api: [7fe6eb63] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61721 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:51,040 [INFO] papermind.api: [27af3f0d] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:61721 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:40:51,514 [INFO] papermind.api: [87fd66dc] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61736 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:52,045 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Semantic-Guided+3D+Gaussian+Splatting+for+Transient+Object+Removal&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:40:52,046 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:40:52,120 [INFO] papermind.api: [2b16acf9] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61736 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:53,513 [INFO] papermind.api: [ce7fac52] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61736 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:54,121 [INFO] papermind.api: [642ea4dd] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61736 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:55,512 [INFO] papermind.api: [f377c890] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61736 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:56,121 [INFO] papermind.api: [6461b55d] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61736 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:57,516 [INFO] papermind.api: [21c37cf5] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61757 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:58,121 [INFO] papermind.api: [801a9804] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61757 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:40:59,074 [INFO] papermind.api: [51c3c4be] GET /settings/llm-providers → 200 (4ms)
-INFO: 127.0.0.1:61757 - "GET /settings/llm-providers HTTP/1.1" 200 OK
-2026-02-26 13:40:59,075 [INFO] papermind.api: [9a50a02e] GET /settings/llm-providers/active → 200 (3ms)
-INFO: 127.0.0.1:61765 - "GET /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:40:59,078 [INFO] papermind.api: [023defc6] GET /settings/llm-providers/active → 200 (1ms)
-INFO: 127.0.0.1:61767 - "GET /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:40:59,082 [INFO] papermind.api: [48ec1ee4] GET /settings/llm-providers → 200 (6ms)
-INFO: 127.0.0.1:61757 - "GET /settings/llm-providers HTTP/1.1" 200 OK
-2026-02-26 13:40:59,513 [INFO] papermind.api: [374a3cd5] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61757 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:00,123 [INFO] papermind.api: [9a963f78] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61757 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:00,381 [INFO] papermind.api: [4e905c29] GET /settings/daily-report-config → 200 (1ms)
-INFO: 127.0.0.1:61767 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:41:00,382 [INFO] papermind.api: [5d7a0dab] GET /settings/email-configs → 200 (2ms)
-INFO: 127.0.0.1:61757 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:41:00,383 [INFO] papermind.api: [c23aabc1] GET /settings/daily-report-config → 200 (1ms)
-INFO: 127.0.0.1:61765 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:41:00,383 [INFO] papermind.api: [3ae7ab78] GET /settings/email-configs → 200 (1ms)
-INFO: 127.0.0.1:61767 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:41:00,971 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Semantic-Guided+3D+Gaussian+Splatting+for+Transient+Object+Removal&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:41:00,972 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:41:01,514 [INFO] papermind.api: [b2577cb9] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61777 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:02,121 [INFO] papermind.api: [cd60bbbe] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61777 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:03,515 [INFO] papermind.api: [bdb20291] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61777 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:04,121 [INFO] papermind.api: [5f45878e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61777 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:05,513 [INFO] papermind.api: [9fc8c171] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61777 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:05,579 [INFO] papermind.api: [d44905b0] POST /jobs/daily-report/run-once → 200 (1ms)
-INFO: 127.0.0.1:61777 - "POST /jobs/daily-report/run-once HTTP/1.1" 200 OK
-ERROR: Exception in ASGI application
-Traceback (most recent call last):
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/uvicorn/protocols/http/h11_impl.py", line 410, in run_asgi
- result = await app( # type: ignore[func-returns-value]
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- self.scope, self.receive, self.send
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- )
- ^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
- return await self.app(scope, receive, send)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/fastapi/applications.py", line 1160, in __call__
- await super().__call__(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/applications.py", line 107, in __call__
- await self.middleware_stack(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/errors.py", line 186, in __call__
- raise exc
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/errors.py", line 164, in __call__
- await self.app(scope, receive, _send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/cors.py", line 95, in __call__
- await self.simple_response(scope, receive, send, request_headers=headers)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/cors.py", line 153, in simple_response
- await self.app(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/base.py", line 198, in __call__
- raise app_exc
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/base.py", line 144, in coro
- await self.app(scope, receive_or_disconnect, send_no_error)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/exceptions.py", line 63, in __call__
- await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
- raise exc
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
- await app(scope, receive, sender)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
- await self.app(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/routing.py", line 716, in __call__
- await self.middleware_stack(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/routing.py", line 736, in app
- await route.handle(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/routing.py", line 290, in handle
- await self.app(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/fastapi/routing.py", line 119, in app
- await wrap_app_handling_exceptions(app, request)(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
- raise exc
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
- await app(scope, receive, sender)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/fastapi/routing.py", line 106, in app
- await response(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/responses.py", line 167, in __call__
- await self.background()
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/background.py", line 36, in __call__
- await task()
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/background.py", line 23, in __call__
- await run_in_threadpool(self.func, *self.args, **self.kwargs)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/concurrency.py", line 32, in run_in_threadpool
- return await anyio.to_thread.run_sync(func)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/anyio/to_thread.py", line 63, in run_sync
- return await get_async_backend().run_sync_in_worker_thread(
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- func, args, abandon_on_cancel=abandon_on_cancel, limiter=limiter
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- )
- ^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/anyio/_backends/_asyncio.py", line 2502, in run_sync_in_worker_thread
- return await future
- ^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/anyio/_backends/_asyncio.py", line 986, in run
- result = context.run(func, *args)
- File "/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py", line 1936, in _run_daily_workflow_bg
- task_id = f"daily_report_{uuid.uuid4().hex[:8]}"
- ^^^^
-NameError: name 'uuid' is not defined. Did you mean: '_uuid'? Or did you forget to import 'uuid'?
-2026-02-26 13:41:05,593 [INFO] papermind.api: [f9137eb5] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61784 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:06,128 [INFO] papermind.api: [f2e7621d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61784 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:07,595 [INFO] papermind.api: [0449ea88] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61791 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:08,121 [INFO] papermind.api: [f8e73875] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61791 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:09,096 [INFO] papermind.api: [32dd034f] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61791 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:10,123 [INFO] papermind.api: [61dc81a3] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61791 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:11,097 [INFO] papermind.api: [45ee7afa] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61791 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:12,136 [INFO] papermind.api: [e15bd61e] GET /tasks/active → 200 (8ms)
-INFO: 127.0.0.1:61806 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:12,140 [INFO] papermind.api: [4a16e725] GET /papers/folder-stats → 200 (13ms)
-INFO: 127.0.0.1:61805 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:41:13,097 [INFO] papermind.api: [26ac1327] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61805 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:14,122 [INFO] papermind.api: [030ff92d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61805 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:15,098 [INFO] papermind.api: [b39840a2] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61805 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:16,124 [INFO] papermind.api: [ccb45a7f] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61805 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:16,513 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Semantic-Guided+3D+Gaussian+Splatting+for+Transient+Object+Removal&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:41:16,514 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 5/5 in 15.0s
-2026-02-26 13:41:17,098 [INFO] papermind.api: [d16b9477] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61815 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:18,121 [INFO] papermind.api: [afa86b59] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61815 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:19,098 [INFO] papermind.api: [7d406b92] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61815 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:20,121 [INFO] papermind.api: [8562cb87] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61815 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:21,040 [INFO] papermind.api: [b3526489] GET /papers/folder-stats → 200 (6ms)
-INFO: 127.0.0.1:61815 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:41:21,097 [INFO] papermind.api: [7eb7f030] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61815 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:21,844 [INFO] papermind.api: [53c04062] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61832 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:22,121 [INFO] papermind.api: [4627f3e8] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61834 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:23,097 [INFO] papermind.api: [e5628486] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61834 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:24,123 [INFO] papermind.api: [f84b90cb] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61834 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:25,108 [INFO] papermind.api: [9baa0b00] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:61834 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:26,121 [INFO] papermind.api: [83b6f3d0] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61834 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:27,099 [INFO] papermind.api: [aa811783] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61845 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:28,121 [INFO] papermind.api: [4c35bc74] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61845 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:29,099 [INFO] papermind.api: [f596d140] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61845 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:30,123 [INFO] papermind.api: [c7e0a8a0] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61845 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:30,304 [INFO] papermind.api: [baf4a3c8] POST /jobs/daily-report/run-once → 200 (1ms)
-INFO: 127.0.0.1:61865 - "POST /jobs/daily-report/run-once HTTP/1.1" 200 OK
-ERROR: Exception in ASGI application
-Traceback (most recent call last):
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/uvicorn/protocols/http/h11_impl.py", line 410, in run_asgi
- result = await app( # type: ignore[func-returns-value]
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- self.scope, self.receive, self.send
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- )
- ^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
- return await self.app(scope, receive, send)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/fastapi/applications.py", line 1160, in __call__
- await super().__call__(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/applications.py", line 107, in __call__
- await self.middleware_stack(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/errors.py", line 186, in __call__
- raise exc
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/errors.py", line 164, in __call__
- await self.app(scope, receive, _send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/cors.py", line 87, in __call__
- await self.app(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/base.py", line 198, in __call__
- raise app_exc
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/base.py", line 144, in coro
- await self.app(scope, receive_or_disconnect, send_no_error)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/exceptions.py", line 63, in __call__
- await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
- raise exc
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
- await app(scope, receive, sender)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
- await self.app(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/routing.py", line 716, in __call__
- await self.middleware_stack(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/routing.py", line 736, in app
- await route.handle(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/routing.py", line 290, in handle
- await self.app(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/fastapi/routing.py", line 119, in app
- await wrap_app_handling_exceptions(app, request)(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
- raise exc
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
- await app(scope, receive, sender)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/fastapi/routing.py", line 106, in app
- await response(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/responses.py", line 167, in __call__
- await self.background()
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/background.py", line 36, in __call__
- await task()
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/background.py", line 23, in __call__
- await run_in_threadpool(self.func, *self.args, **self.kwargs)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/concurrency.py", line 32, in run_in_threadpool
- return await anyio.to_thread.run_sync(func)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/anyio/to_thread.py", line 63, in run_sync
- return await get_async_backend().run_sync_in_worker_thread(
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- func, args, abandon_on_cancel=abandon_on_cancel, limiter=limiter
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- )
- ^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/anyio/_backends/_asyncio.py", line 2502, in run_sync_in_worker_thread
- return await future
- ^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/anyio/_backends/_asyncio.py", line 986, in run
- result = context.run(func, *args)
- File "/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py", line 1936, in _run_daily_workflow_bg
- task_id = f"daily_report_{uuid.uuid4().hex[:8]}"
- ^^^^
-NameError: name 'uuid' is not defined. Did you mean: '_uuid'? Or did you forget to import 'uuid'?
-2026-02-26 13:41:31,098 [INFO] papermind.api: [696c3200] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61845 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:31,519 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/search
-2026-02-26 13:41:32,122 [INFO] papermind.api: [9e397067] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61871 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:33,045 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Super4DR%3A+4D+Radar-centric+Self-supervised+Odometry+and+Gaussian-based+Map+Optimization%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:41:33,100 [INFO] papermind.api: [aa1cd7d1] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61871 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:33,450 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW4417291914&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:41:34,012 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Super4DR%3A+4D+Radar-centric+Self-supervised+Odometry+and+Gaussian-based+Map+Optimization&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:41:34,012 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:41:34,123 [INFO] papermind.api: [3d698191] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61871 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:35,097 [INFO] papermind.api: [0365ee4b] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61871 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:36,123 [INFO] papermind.api: [51f8f5bf] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61871 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:36,603 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Super4DR%3A+4D+Radar-centric+Self-supervised+Odometry+and+Gaussian-based+Map+Optimization&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:41:36,603 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:41:37,098 [INFO] papermind.api: [fd2b0a08] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61886 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:38,122 [INFO] papermind.api: [4e8f232a] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61886 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:39,101 [INFO] papermind.api: [1257db3e] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:61886 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:40,121 [INFO] papermind.api: [5180f084] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61886 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:40,881 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Super4DR%3A+4D+Radar-centric+Self-supervised+Odometry+and+Gaussian-based+Map+Optimization&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:41:40,881 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:41:41,098 [INFO] papermind.api: [c823996b] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61886 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:42,124 [INFO] papermind.api: [0fe8ed4f] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:61904 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:42,127 [INFO] papermind.api: [e237edff] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:61903 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:41:43,100 [INFO] papermind.api: [d6b44cb0] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61903 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:43,883 [INFO] papermind.api: [0c6d3a18] GET /settings/daily-report-config → 200 (2ms)
-INFO: 127.0.0.1:61908 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:41:44,121 [INFO] papermind.api: [dd23182a] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61903 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:45,098 [INFO] papermind.api: [489119fb] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61903 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:46,122 [INFO] papermind.api: [3fa2ccdd] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61903 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:47,098 [INFO] papermind.api: [2a20d5b8] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61929 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:48,122 [INFO] papermind.api: [b9480128] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61929 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:49,100 [INFO] papermind.api: [f30216f4] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61929 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:49,743 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Super4DR%3A+4D+Radar-centric+Self-supervised+Odometry+and+Gaussian-based+Map+Optimization&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:41:49,743 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:41:50,123 [INFO] papermind.api: [0b89a9cb] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61929 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:51,039 [INFO] papermind.api: [e87f4483] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:61929 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:41:51,098 [INFO] papermind.api: [8a2d1fea] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61929 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:52,122 [INFO] papermind.api: [3650771c] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61942 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:52,163 [INFO] papermind.api: [eb723450] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61944 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:53,099 [INFO] papermind.api: [f8cad0d2] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61942 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:54,121 [INFO] papermind.api: [ce45ae31] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61942 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:55,098 [INFO] papermind.api: [b6c72334] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61942 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:56,124 [INFO] papermind.api: [02b2b779] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61942 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:57,100 [INFO] papermind.api: [a08171b8] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61953 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:58,122 [INFO] papermind.api: [b6eb2e8a] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61953 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:41:59,099 [INFO] papermind.api: [7b3afb5b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61953 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:42:00,121 [INFO] papermind.api: [558b83c8] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61953 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:42:01,098 [INFO] papermind.api: [eee2da0a] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61953 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:42:02,123 [INFO] papermind.api: [02279f08] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61964 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:42:02,289 [INFO] papermind.api: [9e92c282] POST /jobs/daily-report/run-once → 200 (0ms)
-INFO: 127.0.0.1:61966 - "POST /jobs/daily-report/run-once HTTP/1.1" 200 OK
-ERROR: Exception in ASGI application
-Traceback (most recent call last):
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/uvicorn/protocols/http/h11_impl.py", line 410, in run_asgi
- result = await app( # type: ignore[func-returns-value]
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- self.scope, self.receive, self.send
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- )
- ^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
- return await self.app(scope, receive, send)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/fastapi/applications.py", line 1160, in __call__
- await super().__call__(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/applications.py", line 107, in __call__
- await self.middleware_stack(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/errors.py", line 186, in __call__
- raise exc
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/errors.py", line 164, in __call__
- await self.app(scope, receive, _send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/cors.py", line 87, in __call__
- await self.app(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/base.py", line 198, in __call__
- raise app_exc
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/base.py", line 144, in coro
- await self.app(scope, receive_or_disconnect, send_no_error)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/exceptions.py", line 63, in __call__
- await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
- raise exc
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
- await app(scope, receive, sender)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
- await self.app(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/routing.py", line 716, in __call__
- await self.middleware_stack(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/routing.py", line 736, in app
- await route.handle(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/routing.py", line 290, in handle
- await self.app(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/fastapi/routing.py", line 119, in app
- await wrap_app_handling_exceptions(app, request)(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
- raise exc
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
- await app(scope, receive, sender)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/fastapi/routing.py", line 106, in app
- await response(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/responses.py", line 167, in __call__
- await self.background()
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/background.py", line 36, in __call__
- await task()
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/background.py", line 23, in __call__
- await run_in_threadpool(self.func, *self.args, **self.kwargs)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/concurrency.py", line 32, in run_in_threadpool
- return await anyio.to_thread.run_sync(func)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/anyio/to_thread.py", line 63, in run_sync
- return await get_async_backend().run_sync_in_worker_thread(
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- func, args, abandon_on_cancel=abandon_on_cancel, limiter=limiter
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- )
- ^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/anyio/_backends/_asyncio.py", line 2502, in run_sync_in_worker_thread
- return await future
- ^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/anyio/_backends/_asyncio.py", line 986, in run
- result = context.run(func, *args)
- File "/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py", line 1936, in _run_daily_workflow_bg
- task_id = f"daily_report_{uuid.uuid4().hex[:8]}"
- ^^^^
-NameError: name 'uuid' is not defined. Did you mean: '_uuid'? Or did you forget to import 'uuid'?
-2026-02-26 13:42:03,104 [INFO] papermind.api: [acd3bf01] GET /tasks/active → 200 (5ms)
-INFO: 127.0.0.1:61964 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:42:04,123 [INFO] papermind.api: [ac43cfd2] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61964 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:42:04,307 [INFO] papermind.api: [9c220d17] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61970 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:42:05,098 [INFO] papermind.api: [22077f90] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61964 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:42:05,612 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Super4DR%3A+4D+Radar-centric+Self-supervised+Odometry+and+Gaussian-based+Map+Optimization&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:42:05,612 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 5/5 in 15.0s
-2026-02-26 13:42:06,123 [INFO] papermind.api: [ffb41510] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61964 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:42:07,099 [INFO] papermind.api: [e331f900] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61975 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:42:08,122 [INFO] papermind.api: [3040c74c] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61975 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:42:09,098 [INFO] papermind.api: [85d2400d] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61975 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:42:10,121 [INFO] papermind.api: [3ee32f84] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:61975 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:42:11,098 [INFO] papermind.api: [578888c3] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61975 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:42:12,125 [INFO] papermind.api: [4302e120] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:61996 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:42:12,133 [INFO] papermind.api: [732e2cf5] GET /papers/folder-stats → 200 (11ms)
-INFO: 127.0.0.1:61995 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:42:13,098 [INFO] papermind.api: [8417741e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61995 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:42:14,124 [INFO] papermind.api: [78626096] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61995 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:42:14,329 [INFO] papermind.api: [eca87679] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61998 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:42:15,097 [INFO] papermind.api: [f03c2d41] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61995 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:42:16,122 [INFO] papermind.api: [b4e6020e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:61995 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:42:17,100 [INFO] papermind.api: [5a236e5b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62005 - "GET /tasks/active HTTP/1.1" 200 OK
-WARNING: StatReload detected changes in 'apps/api/main.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for background tasks to complete. (CTRL+C to force quit)
-2026-02-26 13:42:20,615 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/search
-2026-02-26 13:42:22,078 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%223D+Blood+Pulsation+Maps%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:42:22,475 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW4417295996&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:42:23,055 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=3D+Blood+Pulsation+Maps&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:42:23,056 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:42:25,334 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=3D+Blood+Pulsation+Maps&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:42:25,335 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:42:29,611 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=3D+Blood+Pulsation+Maps&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:42:29,612 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:42:40,228 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=3D+Blood+Pulsation+Maps&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:42:40,591 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/f1ab7574ad67029db5bae6e1f345d37cb5628fb6?fields=references.title%2Ccitations.title "HTTP/1.1 200 OK"
-2026-02-26 13:42:41,321 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22An+evaluation+of+SVBRDF+Prediction+from+Generative+Image+Models+for+Appearance+Modeling+of+3D+Scenes%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:42:41,760 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW4416575499&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:42:42,041 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=An+evaluation+of+SVBRDF+Prediction+from+Generative+Image+Models+for+Appearance+Modeling+of+3D+Scenes&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:42:42,041 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:42:44,325 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=An+evaluation+of+SVBRDF+Prediction+from+Generative+Image+Models+for+Appearance+Modeling+of+3D+Scenes&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:42:44,326 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:42:48,612 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=An+evaluation+of+SVBRDF+Prediction+from+Generative+Image+Models+for+Appearance+Modeling+of+3D+Scenes&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:42:48,612 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:42:57,153 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=An+evaluation+of+SVBRDF+Prediction+from+Generative+Image+Models+for+Appearance+Modeling+of+3D+Scenes&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:42:57,155 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:43:12,723 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=An+evaluation+of+SVBRDF+Prediction+from+Generative+Image+Models+for+Appearance+Modeling+of+3D+Scenes&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:43:12,724 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 5/5 in 15.0s
-2026-02-26 13:43:27,727 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/search
-2026-02-26 13:43:29,201 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22ART%3A+Articulated+Reconstruction+Transformer%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:43:29,617 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW4417474425&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:43:33,556 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=ART%3A+Articulated+Reconstruction+Transformer&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:43:34,026 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/636d5139519f97fec5e0cb2c786447abaee7f571?fields=references.title%2Ccitations.title "HTTP/1.1 200 OK"
-2026-02-26 13:43:34,445 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22TexSpot%3A+3D+Texture+Enhancement+with+Spatially-uniform+Point+Latent+Representation%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:43:34,863 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7128840807&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:43:35,141 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=TexSpot%3A+3D+Texture+Enhancement+with+Spatially-uniform+Point+Latent+Representation&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:43:35,141 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:43:37,804 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=TexSpot%3A+3D+Texture+Enhancement+with+Spatially-uniform+Point+Latent+Representation&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:43:37,805 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:43:42,512 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=TexSpot%3A+3D+Texture+Enhancement+with+Spatially-uniform+Point+Latent+Representation&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:43:42,513 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:43:51,392 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=TexSpot%3A+3D+Texture+Enhancement+with+Spatially-uniform+Point+Latent+Representation&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:43:51,392 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:44:06,977 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=TexSpot%3A+3D+Texture+Enhancement+with+Spatially-uniform+Point+Latent+Representation&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:44:06,978 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 5/5 in 15.0s
-2026-02-26 13:44:21,982 [ERROR] packages.integrations.semantic_scholar_client: Scholar API exhausted retries for /paper/search
-2026-02-26 13:44:22,772 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22High-fidelity+3D+reconstruction+for+planetary+exploration%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:44:23,164 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7129673408&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:44:24,089 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=High-fidelity+3D+reconstruction+for+planetary+exploration&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:44:24,090 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:44:26,375 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=High-fidelity+3D+reconstruction+for+planetary+exploration&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:44:26,375 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:44:30,671 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=High-fidelity+3D+reconstruction+for+planetary+exploration&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:44:30,672 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:44:39,582 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=High-fidelity+3D+reconstruction+for+planetary+exploration&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:44:39,583 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 4/5 in 15.0s
-2026-02-26 13:44:57,973 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=High-fidelity+3D+reconstruction+for+planetary+exploration&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:44:58,306 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/09448b3f69e121d8b4824eaa69c077d5cc086074?fields=references.title%2Ccitations.title "HTTP/1.1 200 OK"
-2026-02-26 13:44:59,776 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22GatedFWA%3A+Linear+Flash+Windowed+Attention+with+Gated+Associative+Memory%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:45:00,155 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7113916381&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:45:00,442 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=GatedFWA%3A+Linear+Flash+Windowed+Attention+with+Gated+Associative+Memory&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:45:00,442 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:45:03,055 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=GatedFWA%3A+Linear+Flash+Windowed+Attention+with+Gated+Associative+Memory&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:45:03,063 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:45:07,667 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=GatedFWA%3A+Linear+Flash+Windowed+Attention+with+Gated+Associative+Memory&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:45:07,669 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:45:16,945 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=GatedFWA%3A+Linear+Flash+Windowed+Attention+with+Gated+Associative+Memory&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:45:17,296 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/86ffde4dfb4be5e75c1a3eb7c91d3cdc7f40c54a?fields=references.title%2Ccitations.title "HTTP/1.1 200 OK"
-2026-02-26 13:45:18,078 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22AdaSplash%3A+Adaptive+Sparse+Flash+Attention%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:45:18,666 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW4407759138&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:45:19,126 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=AdaSplash%3A+Adaptive+Sparse+Flash+Attention&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:45:19,799 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/a6f877368b262eeac407c0f1171063285c2c46b6?fields=references.title%2Ccitations.title "HTTP/1.1 200 OK"
-2026-02-26 13:45:21,063 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Nemotron-Flash%3A+Towards+Latency-Optimal+Hybrid+Small+Language+Models%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:45:21,623 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7106705480&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:45:24,057 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Nemotron-Flash%3A+Towards+Latency-Optimal+Hybrid+Small+Language+Models&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:45:24,772 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/ea14b98deadfe9aa0039f3221c293412d7bb9645?fields=references.title%2Ccitations.title "HTTP/1.1 200 OK"
-2026-02-26 13:45:25,304 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Flash+Multi-Head+Feed-Forward+Network%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:45:25,787 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7113915021&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:45:26,060 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Flash+Multi-Head+Feed-Forward+Network&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:45:26,060 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:45:31,657 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Flash+Multi-Head+Feed-Forward+Network&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:45:32,297 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/884d95c7ec6e81039279d56841dbcebe6f6a6c7f?fields=references.title%2Ccitations.title "HTTP/1.1 200 OK"
-2026-02-26 13:45:33,088 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22MiMo-V2-Flash+Technical+Report%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:45:33,618 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7118867773&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:45:34,207 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=MiMo-V2-Flash+Technical+Report&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:45:34,208 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:45:38,144 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=MiMo-V2-Flash+Technical+Report&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:45:39,035 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/38bfb955426702f1bfc9888e52c9cd48b2f8757b?fields=references.title%2Ccitations.title "HTTP/1.1 200 OK"
-2026-02-26 13:45:40,512 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=title.search%3A%22Sawtooth+Wavefront+Reordering%3A+Enhanced+CuTile+FlashAttention+on+NVIDIA+GB10%22&per_page=1&select=id%2Ctitle%2Cpublication_year%2Ccited_by_count%2Cprimary_location%2Creferenced_works%2Crelated_works&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:45:40,959 [INFO] httpx: HTTP Request: GET https://api.openalex.org/works?filter=cites%3Ahttps%3A%2F%2Fopenalex.org%2FW7125511497&per_page=6&select=id%2Ctitle&mailto=papermind%40example.com "HTTP/1.1 200 OK"
-2026-02-26 13:45:41,606 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Sawtooth+Wavefront+Reordering%3A+Enhanced+CuTile+FlashAttention+on+NVIDIA+GB10&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:45:41,607 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 1/5 in 2.0s
-2026-02-26 13:45:44,195 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Sawtooth+Wavefront+Reordering%3A+Enhanced+CuTile+FlashAttention+on+NVIDIA+GB10&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:45:44,196 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 2/5 in 4.0s
-2026-02-26 13:45:48,805 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Sawtooth+Wavefront+Reordering%3A+Enhanced+CuTile+FlashAttention+on+NVIDIA+GB10&limit=1&fields=title "HTTP/1.1 429 "
-2026-02-26 13:45:48,806 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/search, retry 3/5 in 8.0s
-2026-02-26 13:45:58,755 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/search?query=Sawtooth+Wavefront+Reordering%3A+Enhanced+CuTile+FlashAttention+on+NVIDIA+GB10&limit=1&fields=title "HTTP/1.1 200 OK"
-2026-02-26 13:45:59,030 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/ce6699f744e3d03eb7d7f169aae99389bcb1c5c5?fields=references.title%2Ccitations.title "HTTP/1.1 429 "
-2026-02-26 13:45:59,030 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/ce6699f744e3d03eb7d7f169aae99389bcb1c5c5, retry 1/5 in 2.0s
-2026-02-26 13:46:01,309 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/ce6699f744e3d03eb7d7f169aae99389bcb1c5c5?fields=references.title%2Ccitations.title "HTTP/1.1 429 "
-2026-02-26 13:46:01,310 [WARNING] packages.integrations.semantic_scholar_client: Scholar API 429 for /paper/ce6699f744e3d03eb7d7f169aae99389bcb1c5c5, retry 2/5 in 4.0s
-2026-02-26 13:46:05,980 [INFO] httpx: HTTP Request: GET https://api.semanticscholar.org/graph/v1/paper/ce6699f744e3d03eb7d7f169aae99389bcb1c5c5?fields=references.title%2Ccitations.title "HTTP/1.1 200 OK"
-2026-02-26 13:46:05,997 [INFO] apps.api.main: 增量同步完成: {'processed_papers': 38, 'edges_inserted': 127, 'strategy': 'papers_without_existing_citation_edges'}
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [83789]
-2026-02-26 13:46:06,700 [INFO] packages.storage.db: Initialized 135 orphan papers into initial_import action 165c0537889d44df821caf20bf44b4e4
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:190: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [99594]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-INFO: 127.0.0.1:62120 - "OPTIONS /settings/llm-providers HTTP/1.1" 200 OK
-INFO: 127.0.0.1:62121 - "OPTIONS /settings/llm-providers/active HTTP/1.1" 200 OK
-INFO: 127.0.0.1:62123 - "OPTIONS /settings/llm-providers HTTP/1.1" 200 OK
-INFO: 127.0.0.1:62124 - "OPTIONS /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:46:06,742 [INFO] papermind.api: [931d2b00] POST /jobs/daily-report/run-once → 200 (1ms)
-INFO: 127.0.0.1:62031 - "POST /jobs/daily-report/run-once HTTP/1.1" 200 OK
-2026-02-26 13:46:06,749 [INFO] papermind.api: [a016eb2d] GET /tasks/active → 200 (9ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-ERROR: Exception in ASGI application
-Traceback (most recent call last):
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/uvicorn/protocols/http/h11_impl.py", line 410, in run_asgi
- result = await app( # type: ignore[func-returns-value]
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- self.scope, self.receive, self.send
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- )
- ^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
- return await self.app(scope, receive, send)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/fastapi/applications.py", line 1160, in __call__
- await super().__call__(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/applications.py", line 107, in __call__
- await self.middleware_stack(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/errors.py", line 186, in __call__
- raise exc
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/errors.py", line 164, in __call__
- await self.app(scope, receive, _send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/cors.py", line 87, in __call__
- await self.app(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/base.py", line 198, in __call__
- raise app_exc
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/base.py", line 144, in coro
- await self.app(scope, receive_or_disconnect, send_no_error)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/middleware/exceptions.py", line 63, in __call__
- await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
- raise exc
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
- await app(scope, receive, sender)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
- await self.app(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/routing.py", line 716, in __call__
- await self.middleware_stack(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/routing.py", line 736, in app
- await route.handle(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/routing.py", line 290, in handle
- await self.app(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/fastapi/routing.py", line 119, in app
- await wrap_app_handling_exceptions(app, request)(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
- raise exc
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
- await app(scope, receive, sender)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/fastapi/routing.py", line 106, in app
- await response(scope, receive, send)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/responses.py", line 167, in __call__
- await self.background()
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/background.py", line 36, in __call__
- await task()
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/background.py", line 23, in __call__
- await run_in_threadpool(self.func, *self.args, **self.kwargs)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/starlette/concurrency.py", line 32, in run_in_threadpool
- return await anyio.to_thread.run_sync(func)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/anyio/to_thread.py", line 63, in run_sync
- return await get_async_backend().run_sync_in_worker_thread(
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- func, args, abandon_on_cancel=abandon_on_cancel, limiter=limiter
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- )
- ^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/anyio/_backends/_asyncio.py", line 2502, in run_sync_in_worker_thread
- return await future
- ^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/anyio/_backends/_asyncio.py", line 986, in run
- result = context.run(func, *args)
- File "/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py", line 1938, in _run_daily_workflow_bg
- task_id = f"daily_report_{uuid.uuid4().hex[:8]}"
- ^^^^
-NameError: name 'uuid' is not defined. Did you mean: '_uuid'? Or did you forget to import 'uuid'?
-2026-02-26 13:46:06,761 [INFO] papermind.api: [ac7135e0] GET /tasks/active → 200 (16ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:06,762 [INFO] papermind.api: [97b2f485] GET /tasks/active → 200 (16ms)
-INFO: 127.0.0.1:62124 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:06,762 [INFO] papermind.api: [1bbb72a5] GET /settings/email-configs → 200 (17ms)
-INFO: 127.0.0.1:62120 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:46:06,763 [INFO] papermind.api: [c24c0af1] GET /settings/daily-report-config → 200 (18ms)
-INFO: 127.0.0.1:62121 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:46:06,764 [INFO] papermind.api: [c18d0c79] GET /papers/folder-stats → 200 (23ms)
-INFO: 127.0.0.1:62020 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:06,764 [INFO] papermind.api: [d09fc1fa] GET /tasks/active → 200 (12ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:06,765 [INFO] papermind.api: [20e189ee] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:06,765 [INFO] papermind.api: [a5ba2b40] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62124 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:06,766 [INFO] papermind.api: [043c536e] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:06,766 [INFO] papermind.api: [b60f4a3d] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:06,768 [INFO] papermind.api: [8e94854d] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62020 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:06,769 [INFO] papermind.api: [d9262afa] GET /tasks/active → 200 (4ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:06,776 [INFO] papermind.api: [682d4026] GET /tasks/active → 200 (9ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:06,778 [INFO] papermind.api: [bd6cbe92] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:06,781 [INFO] papermind.api: [bd7c4ba0] GET /pipelines/runs → 200 (13ms)
-INFO: 127.0.0.1:62121 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:46:06,782 [INFO] papermind.api: [e71a2e4d] GET /metrics/costs → 200 (15ms)
-INFO: 127.0.0.1:62120 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
-2026-02-26 13:46:06,784 [INFO] papermind.api: [a65ac94d] GET /actions → 200 (7ms)
-INFO: 127.0.0.1:62123 - "GET /actions?limit=30 HTTP/1.1" 200 OK
-2026-02-26 13:46:06,788 [INFO] papermind.api: [1f7f8174] GET /tasks/active → 200 (5ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:06,789 [INFO] papermind.api: [c260dba9] GET /papers/latest → 200 (9ms)
-INFO: 127.0.0.1:62009 - "GET /papers/latest?page=1&page_size=20 HTTP/1.1" 200 OK
-2026-02-26 13:46:06,791 [INFO] papermind.api: [d36e6a91] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:06,792 [INFO] papermind.api: [32be16ac] GET /generated/list → 200 (9ms)
-INFO: 127.0.0.1:62120 - "GET /generated/list?type=topic_wiki&limit=50 HTTP/1.1" 200 OK
-2026-02-26 13:46:06,794 [INFO] papermind.api: [b72d26f9] GET /generated/list → 200 (3ms)
-INFO: 127.0.0.1:62121 - "GET /generated/list?type=daily_brief&limit=50 HTTP/1.1" 200 OK
-2026-02-26 13:46:06,839 [INFO] papermind.api: [492b0f54] GET /system/status → 200 (72ms)
-INFO: 127.0.0.1:62124 - "GET /system/status HTTP/1.1" 200 OK
-2026-02-26 13:46:06,892 [INFO] papermind.api: [42742214] GET /today → 200 (117ms)
-INFO: 127.0.0.1:62020 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:46:06,954 [INFO] papermind.api: [10f621f9] GET /tasks/active → 200 (38ms)
-INFO: 127.0.0.1:62020 - "GET /tasks/active HTTP/1.1" 200 OK
-INFO: 127.0.0.1:62020 - "OPTIONS /topics?enabled_only=false HTTP/1.1" 200 OK
-INFO: 127.0.0.1:62863 - "OPTIONS /topics?enabled_only=false HTTP/1.1" 200 OK
-2026-02-26 13:46:06,961 [INFO] papermind.api: [f6a83dec] GET /graph/cocitation-clusters → 200 (167ms)
-INFO: 127.0.0.1:62121 - "GET /graph/cocitation-clusters?min_cocite=2 HTTP/1.1" 200 OK
-2026-02-26 13:46:06,964 [INFO] papermind.api: [e2e676ee] GET /writing/templates → 200 (7ms)
-INFO: 127.0.0.1:62863 - "GET /writing/templates HTTP/1.1" 200 OK
-2026-02-26 13:46:06,969 [INFO] papermind.api: [249881cc] GET /tasks/active → 200 (7ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:06,970 [INFO] papermind.api: [0df23cff] GET /graph/frontier → 200 (177ms)
-INFO: 127.0.0.1:62120 - "GET /graph/frontier?days=90 HTTP/1.1" 200 OK
-2026-02-26 13:46:06,976 [INFO] papermind.api: [07d41208] GET /tasks/active → 200 (9ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:06,978 [INFO] papermind.api: [65ffddc1] GET /tasks/active → 200 (5ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:06,979 [INFO] papermind.api: [a6efe35f] GET /graph/overview → 200 (188ms)
-INFO: 127.0.0.1:62009 - "GET /graph/overview HTTP/1.1" 200 OK
-2026-02-26 13:46:06,979 [INFO] papermind.api: [42ea92cd] GET /tasks/active → 200 (5ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:06,980 [INFO] papermind.api: [4b6b8e4b] GET /graph/bridges → 200 (188ms)
-INFO: 127.0.0.1:62123 - "GET /graph/bridges HTTP/1.1" 200 OK
-2026-02-26 13:46:06,982 [INFO] papermind.api: [48e7731f] GET /tasks/active → 200 (4ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:06,982 [INFO] papermind.api: [8f7efc52] GET /settings/email-configs → 200 (2ms)
-INFO: 127.0.0.1:62120 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:46:06,985 [INFO] papermind.api: [97f66087] GET /settings/daily-report-config → 200 (4ms)
-INFO: 127.0.0.1:62009 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:46:06,985 [INFO] papermind.api: [36871f30] GET /tasks/active → 200 (6ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:06,987 [INFO] papermind.api: [2c9a5a20] GET /tasks/active → 200 (5ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:06,987 [INFO] papermind.api: [00352168] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:06,988 [INFO] papermind.api: [6f8d9664] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:06,989 [INFO] papermind.api: [8dceee8f] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:06,993 [INFO] papermind.api: [8ea4f7fd] GET /tasks/active → 200 (5ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:06,994 [INFO] papermind.api: [0869e31e] GET /tasks/active → 200 (5ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:06,995 [INFO] papermind.api: [f97302dd] GET /tasks/active → 200 (5ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:06,995 [INFO] papermind.api: [04708772] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:06,995 [INFO] papermind.api: [07107e38] GET /papers/folder-stats → 200 (9ms)
-INFO: 127.0.0.1:62009 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:06,997 [INFO] papermind.api: [eebc6417] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:06,998 [INFO] papermind.api: [8aa82951] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:06,999 [INFO] papermind.api: [79d1511e] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,002 [INFO] papermind.api: [456de479] GET /papers/folder-stats → 200 (6ms)
-INFO: 127.0.0.1:62121 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:07,004 [INFO] papermind.api: [86deb522] GET /actions → 200 (5ms)
-INFO: 127.0.0.1:62863 - "GET /actions?limit=30 HTTP/1.1" 200 OK
-2026-02-26 13:46:07,005 [INFO] papermind.api: [c71eeb06] GET /papers/folder-stats → 200 (8ms)
-INFO: 127.0.0.1:62009 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:07,005 [INFO] papermind.api: [bbf49238] GET /papers/latest → 200 (4ms)
-INFO: 127.0.0.1:62120 - "GET /papers/latest?page=1&page_size=20 HTTP/1.1" 200 OK
-2026-02-26 13:46:07,006 [INFO] papermind.api: [519f7ebe] GET /papers/folder-stats → 200 (7ms)
-INFO: 127.0.0.1:62123 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:07,006 [INFO] papermind.api: [ea15f902] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,009 [INFO] papermind.api: [cf9fb557] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,009 [INFO] papermind.api: [046b6636] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:62863 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:07,012 [INFO] papermind.api: [062325cd] GET /generated/list → 200 (6ms)
-INFO: 127.0.0.1:62009 - "GET /generated/list?type=topic_wiki&limit=50 HTTP/1.1" 200 OK
-2026-02-26 13:46:07,013 [INFO] papermind.api: [325090cc] GET /generated/list → 200 (5ms)
-INFO: 127.0.0.1:62121 - "GET /generated/list?type=daily_brief&limit=50 HTTP/1.1" 200 OK
-2026-02-26 13:46:07,014 [INFO] papermind.api: [048a4c2a] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,016 [INFO] papermind.api: [4409e2aa] GET /papers/folder-stats → 200 (8ms)
-INFO: 127.0.0.1:62123 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:07,017 [INFO] papermind.api: [f6def33e] GET /papers/folder-stats → 200 (7ms)
-INFO: 127.0.0.1:62120 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:07,020 [INFO] papermind.api: [7f56c261] GET /writing/templates → 200 (4ms)
-INFO: 127.0.0.1:62863 - "GET /writing/templates HTTP/1.1" 200 OK
-2026-02-26 13:46:07,020 [INFO] papermind.api: [56093698] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,021 [INFO] papermind.api: [cbf8a95b] GET /papers/folder-stats → 200 (7ms)
-INFO: 127.0.0.1:62009 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:07,023 [INFO] papermind.api: [f000d8a7] GET /papers/folder-stats → 200 (8ms)
-INFO: 127.0.0.1:62121 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:07,024 [INFO] papermind.api: [0d50518b] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:62120 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:07,025 [INFO] papermind.api: [3788af08] GET /today → 200 (1ms)
-INFO: 127.0.0.1:62121 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:46:07,029 [INFO] papermind.api: [f8bdb783] GET /metrics/costs → 200 (7ms)
-INFO: 127.0.0.1:62123 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
-2026-02-26 13:46:07,030 [INFO] papermind.api: [80be0ee3] GET /pipelines/runs → 200 (8ms)
-INFO: 127.0.0.1:62009 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:46:07,033 [INFO] papermind.api: [6bf25636] GET /today → 200 (1ms)
-INFO: 127.0.0.1:62009 - "GET /today HTTP/1.1" 200 OK
-2026-02-26 13:46:07,034 [INFO] papermind.api: [088dae8c] GET /metrics/costs → 200 (8ms)
-INFO: 127.0.0.1:62121 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
-2026-02-26 13:46:07,034 [INFO] papermind.api: [ab30ba37] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,036 [INFO] papermind.api: [7f63eb03] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,036 [INFO] papermind.api: [932f7cd6] GET /pipelines/runs → 200 (6ms)
-INFO: 127.0.0.1:62123 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
-2026-02-26 13:46:07,037 [INFO] papermind.api: [56b1cebe] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,038 [INFO] papermind.api: [939f786f] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,039 [INFO] papermind.api: [c0aafda0] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,040 [INFO] papermind.api: [ecf8fae0] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,041 [INFO] papermind.api: [1370cc4c] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,041 [INFO] papermind.api: [55aee2bd] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,043 [INFO] papermind.api: [d1939edc] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,044 [INFO] papermind.api: [bef3f953] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,044 [INFO] papermind.api: [c919ae8a] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,045 [INFO] papermind.api: [b2b34331] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,052 [INFO] papermind.api: [a3f3049a] GET /tasks/active → 200 (7ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,053 [INFO] papermind.api: [11121fba] GET /tasks/active → 200 (8ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,061 [INFO] papermind.api: [2f9ab9ee] GET /tasks/active → 200 (10ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,062 [INFO] papermind.api: [65e6cc32] GET /system/status → 200 (42ms)
-INFO: 127.0.0.1:62863 - "GET /system/status HTTP/1.1" 200 OK
-2026-02-26 13:46:07,064 [INFO] papermind.api: [f671b2f7] GET /tasks/active → 200 (9ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,065 [INFO] papermind.api: [2f5fb66e] GET /tasks/active → 200 (9ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,066 [INFO] papermind.api: [bcb1fd13] GET /system/status → 200 (41ms)
-INFO: 127.0.0.1:62120 - "GET /system/status HTTP/1.1" 200 OK
-2026-02-26 13:46:07,075 [INFO] papermind.api: [aa0dc9fc] GET /tasks/active → 200 (13ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,084 [INFO] papermind.api: [b040bd8b] GET /tasks/active → 200 (18ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,084 [INFO] papermind.api: [d7345f87] GET /tasks/active → 200 (19ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,084 [INFO] papermind.api: [157fc1ae] GET /papers/folder-stats → 200 (20ms)
-INFO: 127.0.0.1:62863 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:07,085 [INFO] papermind.api: [22988166] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,085 [INFO] papermind.api: [9f5ab1f0] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,089 [INFO] papermind.api: [834263bf] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,089 [INFO] papermind.api: [a55c2cc6] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,089 [INFO] papermind.api: [1f59e2d7] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,090 [INFO] papermind.api: [0e76a1ef] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,090 [INFO] papermind.api: [8a5d87b7] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,092 [INFO] papermind.api: [bd216475] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,093 [INFO] papermind.api: [300223de] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,093 [INFO] papermind.api: [ea74054a] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,094 [INFO] papermind.api: [8220b2d6] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,095 [INFO] papermind.api: [a5ced654] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:62120 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:07,095 [INFO] papermind.api: [5007f046] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,096 [INFO] papermind.api: [c1c3a58f] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,096 [INFO] papermind.api: [87d8ee72] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,097 [INFO] papermind.api: [0921f7eb] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,099 [INFO] papermind.api: [8c6fb900] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,099 [INFO] papermind.api: [4ddf6dba] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,112 [INFO] papermind.api: [b9dc1718] GET /tasks/active → 200 (16ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,116 [INFO] papermind.api: [23f7155e] GET /tasks/active → 200 (18ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,119 [INFO] papermind.api: [1107bc6d] GET /tasks/active → 200 (21ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,119 [WARNING] packages.ai.graph_service: UMAP failed: No module named 'umap', falling back to PCA
-2026-02-26 13:46:07,121 [INFO] papermind.api: [0011f504] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,122 [INFO] papermind.api: [2090aba6] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,122 [INFO] papermind.api: [f55bb50d] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,122 [INFO] papermind.api: [9d5eca73] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,123 [INFO] papermind.api: [23c13782] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,125 [INFO] papermind.api: [2f0298bd] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,127 [INFO] papermind.api: [83df0d3c] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,128 [INFO] papermind.api: [210811d0] GET /tasks/active → 200 (4ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,129 [INFO] papermind.api: [ef509845] GET /tasks/active → 200 (5ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,130 [INFO] papermind.api: [fdff4679] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,130 [INFO] papermind.api: [cbcec9b5] GET /papers/folder-stats → 200 (6ms)
-INFO: 127.0.0.1:62863 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:07,131 [INFO] papermind.api: [2296b652] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,131 [INFO] papermind.api: [04651a3a] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,132 [INFO] papermind.api: [e51acaa6] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,133 [INFO] papermind.api: [45c7abda] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,134 [INFO] papermind.api: [9fc51f46] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,134 [INFO] papermind.api: [f5465c19] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,135 [INFO] papermind.api: [cf981c21] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,135 [INFO] papermind.api: [9784f0e8] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,138 [INFO] papermind.api: [456e824f] GET /tasks/active → 200 (4ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,139 [INFO] papermind.api: [727c02bf] GET /tasks/active → 200 (4ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,139 [INFO] papermind.api: [f5753797] GET /tasks/active → 200 (4ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,140 [INFO] papermind.api: [4c82e62a] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,141 [INFO] papermind.api: [11eca46c] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:62123 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:07,142 [INFO] papermind.api: [ea75badc] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,142 [INFO] papermind.api: [46ee3d76] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,143 [INFO] papermind.api: [3ba0ad68] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,144 [INFO] papermind.api: [ac462d00] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,144 [INFO] papermind.api: [ba913b4f] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,146 [INFO] papermind.api: [7c5fef36] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,146 [INFO] papermind.api: [d0a539f7] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,147 [INFO] papermind.api: [367f510f] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,148 [INFO] papermind.api: [c7a4f843] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,148 [INFO] papermind.api: [06566d59] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,150 [INFO] papermind.api: [b4d5b300] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,151 [INFO] papermind.api: [afeeacce] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,153 [INFO] papermind.api: [cc18c791] GET /tasks/active → 200 (5ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,153 [INFO] papermind.api: [9035d8a2] GET /tasks/active → 200 (4ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,155 [INFO] papermind.api: [9ce774e7] GET /tasks/active → 200 (5ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,156 [INFO] papermind.api: [1f328a3e] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,158 [INFO] papermind.api: [d9a46cd8] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,158 [INFO] papermind.api: [8a3bf6e5] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,158 [INFO] papermind.api: [d8f1b730] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,160 [INFO] papermind.api: [9f88cd97] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,160 [INFO] papermind.api: [f10ab358] GET /papers/folder-stats → 200 (6ms)
-INFO: 127.0.0.1:62121 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:07,161 [INFO] papermind.api: [aa960b2f] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,161 [INFO] papermind.api: [6cc56afa] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,162 [INFO] papermind.api: [a61491f5] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,163 [INFO] papermind.api: [8340929d] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,164 [INFO] papermind.api: [4b1afacd] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,164 [INFO] papermind.api: [8cce69c9] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,165 [INFO] papermind.api: [813a6fff] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,166 [INFO] papermind.api: [f487467d] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,167 [INFO] papermind.api: [ceefa9d0] GET /papers/folder-stats → 200 (3ms)
-INFO: 127.0.0.1:62863 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:07,167 [INFO] papermind.api: [2f314638] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,167 [INFO] papermind.api: [9985aeb3] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,167 [INFO] papermind.api: [30d17353] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,169 [INFO] papermind.api: [d0211cbf] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,171 [INFO] papermind.api: [5589f551] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,175 [INFO] papermind.api: [46c7ccdc] GET /tasks/active → 200 (5ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,177 [INFO] papermind.api: [9ff7b1fb] GET /tasks/active → 200 (8ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,178 [INFO] papermind.api: [a5504831] GET /tasks/active → 200 (9ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,180 [INFO] papermind.api: [21095549] GET /tasks/active → 200 (10ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,190 [INFO] papermind.api: [ca2b14e3] GET /tasks/active → 200 (12ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,192 [INFO] papermind.api: [00f71b2f] GET /tasks/active → 200 (11ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,193 [INFO] papermind.api: [a0059481] GET /tasks/active → 200 (12ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,194 [INFO] papermind.api: [67fcc1bb] GET /tasks/active → 200 (12ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,194 [INFO] papermind.api: [ad53f7c9] GET /tasks/active → 200 (13ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,196 [INFO] papermind.api: [15ddddee] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,197 [INFO] papermind.api: [48ee9e65] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,198 [INFO] papermind.api: [b357f2f9] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,198 [INFO] papermind.api: [5277d985] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,199 [INFO] papermind.api: [eb85f117] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:62121 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:07,200 [INFO] papermind.api: [02088c8c] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,202 [INFO] papermind.api: [d3b5f09c] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,202 [INFO] papermind.api: [992bd636] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,202 [INFO] papermind.api: [1bd5f9a2] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,204 [INFO] papermind.api: [f74be303] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,204 [INFO] papermind.api: [03039403] GET /tasks/active → 200 (4ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,206 [INFO] papermind.api: [14049f22] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,206 [INFO] papermind.api: [f302881d] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,207 [INFO] papermind.api: [74fb96fe] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,208 [INFO] papermind.api: [ce078e55] GET /tasks/active → 200 (4ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,209 [INFO] papermind.api: [a9b8a1ff] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,211 [INFO] papermind.api: [975a66c3] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,212 [INFO] papermind.api: [7e4be889] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,213 [INFO] papermind.api: [8bcbb022] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,214 [INFO] papermind.api: [c4f9eb0c] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:62120 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:07,214 [INFO] papermind.api: [847da3a4] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,215 [INFO] papermind.api: [caa40f23] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,215 [INFO] papermind.api: [789d37b1] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,216 [INFO] papermind.api: [1d32bd35] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,217 [INFO] papermind.api: [8045d66c] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,217 [INFO] papermind.api: [0c62bacb] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,218 [INFO] papermind.api: [2d34ae2e] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,218 [INFO] papermind.api: [11670cfc] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,219 [INFO] papermind.api: [64fa22ec] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,220 [INFO] papermind.api: [d475fa48] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,222 [INFO] papermind.api: [bba3c7c8] GET /tasks/active → 200 (4ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,222 [INFO] papermind.api: [50e60f09] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,223 [INFO] papermind.api: [5e17ac93] GET /tasks/active → 200 (4ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,225 [INFO] papermind.api: [a5696c39] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,225 [INFO] papermind.api: [03f2bfb2] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,227 [INFO] papermind.api: [f4411761] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,227 [INFO] papermind.api: [50a27668] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,228 [INFO] papermind.api: [4237cc64] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:62123 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:07,228 [INFO] papermind.api: [eedc184e] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,229 [INFO] papermind.api: [cb5e6b98] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,230 [INFO] papermind.api: [33e592f6] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,230 [INFO] papermind.api: [a62ae5e8] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,232 [INFO] papermind.api: [83f60311] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,232 [INFO] papermind.api: [1187298d] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,233 [INFO] papermind.api: [04a7bcca] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,234 [INFO] papermind.api: [444a3dc1] GET /tasks/active → 200 (4ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,235 [INFO] papermind.api: [a25e94d5] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,236 [INFO] papermind.api: [3b3e1d1f] GET /tasks/active → 200 (4ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,239 [INFO] papermind.api: [b1910021] GET /tasks/active → 200 (5ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,240 [INFO] papermind.api: [19d9ceb2] GET /tasks/active → 200 (4ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,240 [INFO] papermind.api: [c8e4c2ea] GET /tasks/active → 200 (5ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,241 [INFO] papermind.api: [64945a2e] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,242 [INFO] papermind.api: [d33c53a4] GET /papers/folder-stats → 200 (7ms)
-INFO: 127.0.0.1:62121 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:07,243 [INFO] papermind.api: [bfc88aab] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,244 [INFO] papermind.api: [3c056e88] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,244 [INFO] papermind.api: [65fe25ee] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,247 [INFO] papermind.api: [e158d841] GET /tasks/active → 200 (5ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,248 [INFO] papermind.api: [e264fa98] GET /tasks/active → 200 (5ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,249 [INFO] papermind.api: [cf8790cd] GET /tasks/active → 200 (5ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,249 [INFO] papermind.api: [169432bf] GET /tasks/active → 200 (4ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,253 [INFO] papermind.api: [ea31f8ea] GET /tasks/active → 200 (5ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,255 [INFO] papermind.api: [9b2638a5] GET /tasks/active → 200 (6ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,255 [INFO] papermind.api: [edd3e0c2] GET /tasks/active → 200 (6ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,258 [INFO] papermind.api: [e733207f] GET /tasks/active → 200 (9ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,260 [INFO] papermind.api: [1ca99e8a] GET /tasks/active → 200 (6ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,260 [INFO] papermind.api: [cf06fd99] GET /tasks/active → 200 (6ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,262 [INFO] papermind.api: [1ce939dc] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,263 [INFO] papermind.api: [78954b92] GET /tasks/active → 200 (4ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,264 [INFO] papermind.api: [e4cac989] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,265 [INFO] papermind.api: [fe5d192f] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62009 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,266 [INFO] papermind.api: [f4a0ca93] GET /papers/folder-stats → 200 (7ms)
-INFO: 127.0.0.1:62863 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:07,267 [INFO] papermind.api: [433d60f0] GET /tasks/active → 200 (4ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,268 [INFO] papermind.api: [351b676f] GET /tasks/active → 200 (4ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,269 [INFO] papermind.api: [363d3eef] GET /tasks/active → 200 (4ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,270 [INFO] papermind.api: [6148327b] GET /settings/llm-providers → 200 (5ms)
-INFO: 127.0.0.1:62009 - "GET /settings/llm-providers HTTP/1.1" 200 OK
-2026-02-26 13:46:07,273 [INFO] papermind.api: [faf56c52] GET /tasks/active → 200 (5ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,275 [INFO] papermind.api: [3c203702] GET /settings/llm-providers/active → 200 (7ms)
-INFO: 127.0.0.1:62863 - "GET /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,278 [INFO] papermind.api: [d71027e8] GET /settings/llm-providers → 200 (6ms)
-INFO: 127.0.0.1:62009 - "GET /settings/llm-providers HTTP/1.1" 200 OK
-2026-02-26 13:46:07,279 [INFO] papermind.api: [a562c694] GET /papers/folder-stats → 200 (9ms)
-INFO: 127.0.0.1:62123 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:07,279 [INFO] papermind.api: [1cb93d4a] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62121 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,280 [INFO] papermind.api: [60f8a219] GET /settings/llm-providers/active → 200 (3ms)
-INFO: 127.0.0.1:62863 - "GET /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,280 [INFO] papermind.api: [8a73474c] GET /topics → 200 (9ms)
-INFO: 127.0.0.1:62120 - "GET /topics?enabled_only=false HTTP/1.1" 200 OK
-2026-02-26 13:46:07,281 [INFO] papermind.api: [2ab08d9e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,283 [INFO] papermind.api: [b5ee2bc0] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62120 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,285 [INFO] papermind.api: [9a3acf84] GET /topics → 200 (4ms)
-INFO: 127.0.0.1:62863 - "GET /topics?enabled_only=false HTTP/1.1" 200 OK
-2026-02-26 13:46:07,285 [INFO] papermind.api: [3af025aa] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,286 [INFO] papermind.api: [4e5ef2c6] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,289 [INFO] papermind.api: [2ca058ab] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,290 [INFO] papermind.api: [68216d62] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,291 [INFO] papermind.api: [e021f1b1] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,297 [INFO] papermind.api: [45c59a8a] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,298 [INFO] papermind.api: [916586b9] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,301 [INFO] papermind.api: [2d43c496] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,301 [INFO] papermind.api: [17e25e12] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,303 [INFO] papermind.api: [0cca8943] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,307 [INFO] papermind.api: [9911906e] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,308 [INFO] papermind.api: [dc2c9d21] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,310 [INFO] papermind.api: [e2917316] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,311 [INFO] papermind.api: [08331bca] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,312 [INFO] papermind.api: [c61fcd87] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,343 [INFO] papermind.api: [32460f34] GET /tasks/active → 200 (30ms)
-INFO: 127.0.0.1:62123 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:07,346 [INFO] papermind.api: [bdcf9999] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:08,144 [INFO] papermind.api: [4e3aa238] GET /tasks/active → 200 (16ms)
-INFO: 127.0.0.1:62863 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:08,221 [INFO] papermind.api: [b659f285] GET /graph/similarity-map → 200 (1379ms)
-INFO: 127.0.0.1:62124 - "GET /graph/similarity-map?topic_id=&limit=200 HTTP/1.1" 200 OK
-2026-02-26 13:46:09,101 [INFO] papermind.api: [a09aa8d1] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62124 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:10,126 [INFO] papermind.api: [15c7ddeb] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62124 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:11,100 [INFO] papermind.api: [e5a5c4be] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:62124 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:11,763 [INFO] papermind.api: [97bba97b] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:62913 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:12,127 [INFO] papermind.api: [37968a75] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:62919 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:12,128 [INFO] papermind.api: [6e97f18d] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:62918 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:13,101 [INFO] papermind.api: [f929c6e9] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62918 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:14,123 [INFO] papermind.api: [798af527] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:62918 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:15,102 [INFO] papermind.api: [58f229a9] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62918 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:16,126 [INFO] papermind.api: [39b61cbb] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62918 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:17,100 [INFO] papermind.api: [a3384828] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:62938 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:18,124 [INFO] papermind.api: [6bcacbb4] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62938 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:19,102 [INFO] papermind.api: [9839b79e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62938 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:20,123 [INFO] papermind.api: [beefe917] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62938 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:21,099 [INFO] papermind.api: [15fa5936] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:62938 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:22,124 [INFO] papermind.api: [3f70990a] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62947 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:22,997 [INFO] papermind.api: [0b38d277] GET /papers/folder-stats → 200 (1ms)
-INFO: 127.0.0.1:62947 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:23,100 [INFO] papermind.api: [17bcfacf] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:62947 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:24,124 [INFO] papermind.api: [c95b1d63] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:62947 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:24,277 [INFO] papermind.api: [2bbab8c8] GET /papers/folder-stats → 200 (44ms)
-INFO: 127.0.0.1:62947 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:24,279 [INFO] papermind.api: [059114a2] GET /actions → 200 (11ms)
-INFO: 127.0.0.1:62957 - "GET /actions?limit=30 HTTP/1.1" 200 OK
-2026-02-26 13:46:24,280 [INFO] papermind.api: [4bf5fc3e] GET /papers/latest → 200 (11ms)
-INFO: 127.0.0.1:62959 - "GET /papers/latest?page=1&page_size=20 HTTP/1.1" 200 OK
-2026-02-26 13:46:24,285 [INFO] papermind.api: [2981f4b0] GET /papers/folder-stats → 200 (6ms)
-INFO: 127.0.0.1:62947 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:24,305 [INFO] papermind.api: [28bd495b] GET /papers/latest → 200 (23ms)
-INFO: 127.0.0.1:62957 - "GET /papers/latest?page=1&page_size=20 HTTP/1.1" 200 OK
-2026-02-26 13:46:24,332 [INFO] papermind.api: [3529cff7] GET /actions → 200 (51ms)
-INFO: 127.0.0.1:62961 - "GET /actions?limit=30 HTTP/1.1" 200 OK
-2026-02-26 13:46:24,349 [INFO] papermind.api: [b654dd4b] GET /papers/folder-stats → 200 (25ms)
-INFO: 127.0.0.1:62959 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:25,101 [INFO] papermind.api: [586cf1e0] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62959 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:26,125 [INFO] papermind.api: [2ae78dee] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62959 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:27,100 [INFO] papermind.api: [7f9e0ba6] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:62966 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:28,123 [INFO] papermind.api: [e6c136e0] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:62966 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:29,100 [INFO] papermind.api: [9e05f55a] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62966 - "GET /tasks/active HTTP/1.1" 200 OK
-INFO: 127.0.0.1:62966 - "OPTIONS /papers/latest?page=2&page_size=20 HTTP/1.1" 200 OK
-2026-02-26 13:46:30,120 [INFO] papermind.api: [1ff0b638] GET /papers/latest → 200 (2ms)
-INFO: 127.0.0.1:62966 - "GET /papers/latest?page=2&page_size=20 HTTP/1.1" 200 OK
-2026-02-26 13:46:30,124 [INFO] papermind.api: [d4e94572] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62966 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:31,100 [INFO] papermind.api: [04676fbe] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:62966 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:32,125 [INFO] papermind.api: [0604a4a5] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62977 - "GET /tasks/active HTTP/1.1" 200 OK
-INFO: 127.0.0.1:62986 - "OPTIONS /papers/c39f2d66-e452-49a1-9280-f866ef967d73 HTTP/1.1" 200 OK
-INFO: 127.0.0.1:62988 - "OPTIONS /papers/c39f2d66-e452-49a1-9280-f866ef967d73/figures HTTP/1.1" 200 OK
-INFO: 127.0.0.1:62990 - "OPTIONS /papers/c39f2d66-e452-49a1-9280-f866ef967d73 HTTP/1.1" 200 OK
-INFO: 127.0.0.1:62991 - "OPTIONS /papers/c39f2d66-e452-49a1-9280-f866ef967d73/figures HTTP/1.1" 200 OK
-2026-02-26 13:46:32,975 [INFO] papermind.api: [ee018d1c] GET /papers/folder-stats → 200 (6ms)
-INFO: 127.0.0.1:62977 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:32,980 [INFO] papermind.api: [d684188b] GET /papers/c39f2d66-e452-49a1-9280-f866ef967d73 → 200 (6ms)
-INFO: 127.0.0.1:62993 - "GET /papers/c39f2d66-e452-49a1-9280-f866ef967d73 HTTP/1.1" 200 OK
-2026-02-26 13:46:32,981 [INFO] papermind.api: [fd7e93eb] GET /papers/c39f2d66-e452-49a1-9280-f866ef967d73/figures → 200 (8ms)
-INFO: 127.0.0.1:62988 - "GET /papers/c39f2d66-e452-49a1-9280-f866ef967d73/figures HTTP/1.1" 200 OK
-2026-02-26 13:46:32,983 [INFO] papermind.api: [f4a3dde6] GET /papers/c39f2d66-e452-49a1-9280-f866ef967d73 → 200 (2ms)
-INFO: 127.0.0.1:62977 - "GET /papers/c39f2d66-e452-49a1-9280-f866ef967d73 HTTP/1.1" 200 OK
-2026-02-26 13:46:32,984 [INFO] papermind.api: [21731d9b] GET /papers/c39f2d66-e452-49a1-9280-f866ef967d73/figures → 200 (1ms)
-INFO: 127.0.0.1:62993 - "GET /papers/c39f2d66-e452-49a1-9280-f866ef967d73/figures HTTP/1.1" 200 OK
-2026-02-26 13:46:33,101 [INFO] papermind.api: [54b8ce85] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62993 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:34,124 [INFO] papermind.api: [0827e8ff] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:62993 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:35,100 [INFO] papermind.api: [cc202bb7] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:62993 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:36,124 [INFO] papermind.api: [169e4c9c] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:62993 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:37,790 [INFO] papermind.api: [4c7056cc] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63012 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:38,124 [INFO] papermind.api: [cd6d2161] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63012 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:39,791 [INFO] papermind.api: [dc99c714] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63012 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:40,124 [INFO] papermind.api: [58a8fb37] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63012 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:41,099 [INFO] papermind.api: [34bd3639] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63012 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:42,128 [INFO] papermind.api: [30247d7a] GET /tasks/active → 200 (4ms)
-INFO: 127.0.0.1:63025 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:42,129 [INFO] papermind.api: [c433f736] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:63024 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:42,311 [INFO] papermind.api: [bcf14e03] GET /actions → 200 (7ms)
-INFO: 127.0.0.1:63025 - "GET /actions?limit=30 HTTP/1.1" 200 OK
-2026-02-26 13:46:42,314 [INFO] papermind.api: [f9714745] GET /papers/latest → 200 (8ms)
-INFO: 127.0.0.1:63027 - "GET /papers/latest?page=1&page_size=20 HTTP/1.1" 200 OK
-2026-02-26 13:46:42,314 [INFO] papermind.api: [01867067] GET /papers/folder-stats → 200 (11ms)
-INFO: 127.0.0.1:63024 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:42,318 [INFO] papermind.api: [2be5967e] GET /actions → 200 (4ms)
-INFO: 127.0.0.1:63025 - "GET /actions?limit=30 HTTP/1.1" 200 OK
-2026-02-26 13:46:42,320 [INFO] papermind.api: [2300f744] GET /papers/latest → 200 (4ms)
-INFO: 127.0.0.1:63029 - "GET /papers/latest?page=1&page_size=20 HTTP/1.1" 200 OK
-2026-02-26 13:46:42,320 [INFO] papermind.api: [f210001f] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:63027 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:42,323 [INFO] papermind.api: [75d7a669] GET /papers/folder-stats → 200 (2ms)
-INFO: 127.0.0.1:63029 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:43,100 [INFO] papermind.api: [e3e0b3bc] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63029 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:44,124 [INFO] papermind.api: [c4942bd6] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63029 - "GET /tasks/active HTTP/1.1" 200 OK
-INFO: 127.0.0.1:63027 - "OPTIONS /papers/e2f20031-ead3-4367-ae55-458c81c793a1 HTTP/1.1" 200 OK
-INFO: 127.0.0.1:63025 - "OPTIONS /papers/e2f20031-ead3-4367-ae55-458c81c793a1/figures HTTP/1.1" 200 OK
-INFO: 127.0.0.1:63024 - "OPTIONS /papers/e2f20031-ead3-4367-ae55-458c81c793a1 HTTP/1.1" 200 OK
-INFO: 127.0.0.1:63037 - "OPTIONS /papers/e2f20031-ead3-4367-ae55-458c81c793a1/figures HTTP/1.1" 200 OK
-2026-02-26 13:46:44,862 [INFO] papermind.api: [fb847c1f] GET /papers/e2f20031-ead3-4367-ae55-458c81c793a1/figures → 200 (4ms)
-INFO: 127.0.0.1:63024 - "GET /papers/e2f20031-ead3-4367-ae55-458c81c793a1/figures HTTP/1.1" 200 OK
-2026-02-26 13:46:44,863 [INFO] papermind.api: [d2faa5e6] GET /papers/folder-stats → 200 (9ms)
-INFO: 127.0.0.1:63029 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:46:44,863 [INFO] papermind.api: [86787b7b] GET /papers/e2f20031-ead3-4367-ae55-458c81c793a1 → 200 (6ms)
-INFO: 127.0.0.1:63027 - "GET /papers/e2f20031-ead3-4367-ae55-458c81c793a1 HTTP/1.1" 200 OK
-2026-02-26 13:46:44,866 [INFO] papermind.api: [b1629efa] GET /papers/e2f20031-ead3-4367-ae55-458c81c793a1/figures → 200 (3ms)
-INFO: 127.0.0.1:63025 - "GET /papers/e2f20031-ead3-4367-ae55-458c81c793a1/figures HTTP/1.1" 200 OK
-2026-02-26 13:46:44,866 [INFO] papermind.api: [ea344acf] GET /papers/e2f20031-ead3-4367-ae55-458c81c793a1 → 200 (2ms)
-INFO: 127.0.0.1:63024 - "GET /papers/e2f20031-ead3-4367-ae55-458c81c793a1 HTTP/1.1" 200 OK
-2026-02-26 13:46:45,100 [INFO] papermind.api: [e5e9021f] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63024 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:46,124 [INFO] papermind.api: [4840de1a] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63024 - "GET /tasks/active HTTP/1.1" 200 OK
-INFO: 127.0.0.1:63052 - "OPTIONS /pipelines/skim/e2f20031-ead3-4367-ae55-458c81c793a1 HTTP/1.1" 200 OK
-2026-02-26 13:46:47,101 [INFO] papermind.api: [635d0c0d] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63054 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:48,126 [INFO] papermind.api: [ec05fe80] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63054 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:49,100 [INFO] papermind.api: [af12a62a] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63054 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:50,124 [INFO] papermind.api: [6edbff05] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63054 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:51,102 [INFO] papermind.api: [f2be065a] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63054 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:52,125 [INFO] papermind.api: [29733014] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63069 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:53,100 [INFO] papermind.api: [611a6cad] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63069 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:54,125 [INFO] papermind.api: [ffa5acd6] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63069 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:55,790 [INFO] papermind.api: [92921470] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63069 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:56,125 [INFO] papermind.api: [3335a109] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63069 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:57,102 [INFO] papermind.api: [76d89795] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63078 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:58,123 [INFO] papermind.api: [9b8c5234] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63078 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:46:59,101 [INFO] papermind.api: [c7edef8b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63078 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:00,124 [INFO] papermind.api: [1bec72af] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63078 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:01,101 [INFO] papermind.api: [e470d7b3] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63078 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:02,126 [INFO] papermind.api: [87193ec8] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63096 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:03,101 [INFO] papermind.api: [1f7c0d41] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63096 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:04,124 [INFO] papermind.api: [6aaf4449] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63096 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:05,103 [INFO] papermind.api: [84396f69] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63096 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:06,124 [INFO] papermind.api: [16e69e18] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63096 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:07,794 [INFO] papermind.api: [3858ea1f] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63103 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:08,124 [INFO] papermind.api: [58575612] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63103 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:09,100 [INFO] papermind.api: [281cf7ef] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63103 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:10,123 [INFO] papermind.api: [d6996647] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63103 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:11,101 [INFO] papermind.api: [1e7d1d26] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63103 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:12,793 [INFO] papermind.api: [ce003b89] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:63116 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:12,794 [INFO] papermind.api: [5213292c] GET /papers/folder-stats → 200 (4ms)
-INFO: 127.0.0.1:63115 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:47:13,100 [INFO] papermind.api: [dcfa52a9] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63115 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:14,435 [INFO] papermind.api: [3d33b8d6] GET /settings/llm-providers → 200 (2ms)
-INFO: 127.0.0.1:63115 - "GET /settings/llm-providers HTTP/1.1" 200 OK
-2026-02-26 13:47:14,436 [INFO] papermind.api: [dd28476d] GET /settings/llm-providers/active → 200 (3ms)
-INFO: 127.0.0.1:63116 - "GET /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:47:14,439 [INFO] papermind.api: [63e29fdc] GET /settings/llm-providers/active → 200 (1ms)
-INFO: 127.0.0.1:63115 - "GET /settings/llm-providers/active HTTP/1.1" 200 OK
-2026-02-26 13:47:14,439 [INFO] papermind.api: [b4c93896] GET /settings/llm-providers → 200 (2ms)
-INFO: 127.0.0.1:63118 - "GET /settings/llm-providers HTTP/1.1" 200 OK
-2026-02-26 13:47:14,793 [INFO] papermind.api: [c557f86c] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:63118 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:14,856 [INFO] papermind.api: [63e87314] GET /papers/folder-stats → 200 (3ms)
-INFO: 127.0.0.1:63118 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:47:15,103 [INFO] papermind.api: [7da7c28e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63118 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:16,168 [INFO] papermind.api: [cd0edcc1] GET /settings/daily-report-config → 200 (3ms)
-INFO: 127.0.0.1:63115 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:47:16,170 [INFO] papermind.api: [946529af] GET /settings/email-configs → 200 (4ms)
-INFO: 127.0.0.1:63118 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:47:16,173 [INFO] papermind.api: [d08c2b45] GET /settings/daily-report-config → 200 (3ms)
-INFO: 127.0.0.1:63116 - "GET /settings/daily-report-config HTTP/1.1" 200 OK
-2026-02-26 13:47:16,174 [INFO] papermind.api: [8f65e793] GET /settings/email-configs → 200 (2ms)
-INFO: 127.0.0.1:63115 - "GET /settings/email-configs HTTP/1.1" 200 OK
-2026-02-26 13:47:16,791 [INFO] papermind.api: [45ddb396] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63127 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:17,101 [INFO] papermind.api: [215f8a9c] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63127 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:18,792 [INFO] papermind.api: [7c86629f] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63127 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:19,101 [INFO] papermind.api: [71f409e0] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63127 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:20,790 [INFO] papermind.api: [9d7d9f0b] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63127 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:21,100 [INFO] papermind.api: [bb8ea1cf] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63127 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:22,791 [INFO] papermind.api: [50747f1c] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63140 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:23,100 [INFO] papermind.api: [3627da62] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63140 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:24,790 [INFO] papermind.api: [da805309] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63140 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:25,102 [INFO] papermind.api: [b83c26a4] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63140 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:26,791 [INFO] papermind.api: [bc6ec820] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63151 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:27,101 [INFO] papermind.api: [6624d08a] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63151 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:28,492 [INFO] httpx: HTTP Request: POST https://open.bigmodel.cn/api/paas/v4/chat/completions "HTTP/1.1 200 OK"
-2026-02-26 13:47:28,508 [INFO] papermind.api: [5d771cdc] POST /pipelines/skim/e2f20031-ead3-4367-ae55-458c81c793a1 → 200 (41645ms)
-INFO: 127.0.0.1:63052 - "POST /pipelines/skim/e2f20031-ead3-4367-ae55-458c81c793a1 HTTP/1.1" 200 OK
-2026-02-26 13:47:28,512 [INFO] papermind.api: [d3189fcd] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63052 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:28,791 [INFO] papermind.api: [99a02b1f] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63052 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:30,518 [INFO] papermind.api: [0951b1ef] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63052 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:30,806 [INFO] papermind.api: [9822a999] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63052 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:32,016 [INFO] papermind.api: [6cb71928] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63158 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:32,791 [INFO] papermind.api: [0d4c887e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63158 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:34,016 [INFO] papermind.api: [05d5ad01] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63158 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:34,805 [INFO] papermind.api: [868a2b37] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63158 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:36,016 [INFO] papermind.api: [eabf1bbc] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63158 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:36,791 [INFO] papermind.api: [52b36828] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63169 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:38,023 [INFO] papermind.api: [d06cc0a3] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63169 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:38,790 [INFO] papermind.api: [509a20f4] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63169 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:40,015 [INFO] papermind.api: [db3b5bd7] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63169 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:40,790 [INFO] papermind.api: [4b15e5d4] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63169 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:42,018 [INFO] papermind.api: [e859e310] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63178 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:42,793 [INFO] papermind.api: [4fbe4839] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63180 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:42,797 [INFO] papermind.api: [6447cb7a] GET /papers/folder-stats → 200 (6ms)
-INFO: 127.0.0.1:63178 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:47:44,016 [INFO] papermind.api: [f421ab8a] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63178 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:44,790 [INFO] papermind.api: [c33b79bc] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63178 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:44,855 [INFO] papermind.api: [d590b33e] GET /papers/folder-stats → 200 (2ms)
-INFO: 127.0.0.1:63178 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:47:46,016 [INFO] papermind.api: [388ac550] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63178 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:46,791 [INFO] papermind.api: [88e52db8] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63195 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:48,020 [INFO] papermind.api: [1a9c5ca0] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:63195 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:48,790 [INFO] papermind.api: [ea6bbc06] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63195 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:50,016 [INFO] papermind.api: [b48f76c2] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63195 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:50,790 [INFO] papermind.api: [da106d60] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63195 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:52,017 [INFO] papermind.api: [0d7604b4] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63204 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:52,791 [INFO] papermind.api: [7b54e0c3] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63204 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:54,016 [INFO] papermind.api: [13d6f370] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63204 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:54,791 [INFO] papermind.api: [0a4682aa] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63204 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:56,017 [INFO] papermind.api: [e5097569] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63204 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:56,791 [INFO] papermind.api: [0cac8134] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63213 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:58,016 [INFO] papermind.api: [fd6365de] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63213 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:47:58,791 [INFO] papermind.api: [ebd637b5] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63213 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:00,017 [INFO] papermind.api: [6d1ca581] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63213 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:00,790 [INFO] papermind.api: [0f243f1a] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63213 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:02,019 [INFO] papermind.api: [284c0469] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63224 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:02,791 [INFO] papermind.api: [a7811eaf] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63224 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:04,016 [INFO] papermind.api: [f392a979] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63224 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:04,790 [INFO] papermind.api: [8923650c] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63224 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:06,017 [INFO] papermind.api: [4849575d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63224 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:06,791 [INFO] papermind.api: [dc5add78] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63236 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:08,016 [INFO] papermind.api: [9408327a] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63236 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:08,790 [INFO] papermind.api: [a36e28ee] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63236 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:10,016 [INFO] papermind.api: [d8a9f1d7] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63236 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:10,790 [INFO] papermind.api: [9a9686c7] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63236 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:12,016 [INFO] papermind.api: [2f49a430] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63245 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:14,016 [INFO] papermind.api: [09879fbd] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63245 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:14,861 [INFO] papermind.api: [4b2a2355] GET /papers/folder-stats → 200 (8ms)
-INFO: 127.0.0.1:63245 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:48:16,020 [INFO] papermind.api: [976e471e] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:63245 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:18,016 [INFO] papermind.api: [37400a23] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63252 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:20,016 [INFO] papermind.api: [9fe9cf9f] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63252 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:22,018 [INFO] papermind.api: [8a1da363] GET /tasks/active → 200 (1ms)
+INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
+INFO: Started reloader process [59587] using StatReload
+INFO: Started server process [59602]
+INFO: Waiting for application startup.
+INFO: Application startup complete.
+INFO: 127.0.0.1:63243 - "OPTIONS /auth/status HTTP/1.1" 200 OK
+INFO: 127.0.0.1:63244 - "OPTIONS /auth/status HTTP/1.1" 200 OK
+2026-03-17 15:01:44 [INFO] papermind.api (main.py:39): [614c0331] GET /auth/status → 200 (5ms)
+INFO: 127.0.0.1:63244 - "GET /auth/status HTTP/1.1" 200 OK
+2026-03-17 15:01:44 [INFO] papermind.api (main.py:39): [d07b1978] GET /auth/status → 200 (0ms)
+INFO: 127.0.0.1:63243 - "GET /auth/status HTTP/1.1" 200 OK
+INFO: 127.0.0.1:63243 - "OPTIONS /papers/folder-stats HTTP/1.1" 200 OK
+INFO: 127.0.0.1:63244 - "OPTIONS /today HTTP/1.1" 200 OK
+INFO: 127.0.0.1:63256 - "OPTIONS /tasks/active HTTP/1.1" 200 OK
+INFO: 127.0.0.1:63258 - "OPTIONS /papers/folder-stats HTTP/1.1" 200 OK
+INFO: 127.0.0.1:63259 - "OPTIONS /today HTTP/1.1" 200 OK
+INFO: 127.0.0.1:63260 - "OPTIONS /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:01:44 [INFO] papermind.api (main.py:39): [6f943e9c] GET /tasks/active → 200 (14ms)
+INFO: 127.0.0.1:63260 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:01:44 [INFO] papermind.api (main.py:39): [3357875e] GET /tasks/active → 200 (11ms)
INFO: 127.0.0.1:63259 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:24,016 [INFO] papermind.api: [05ba5376] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63259 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:26,019 [INFO] papermind.api: [818f264c] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63259 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:28,016 [INFO] papermind.api: [387563eb] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63276 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:30,017 [INFO] papermind.api: [5f1d6daa] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63276 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:32,016 [INFO] papermind.api: [60e0aa39] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63283 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:34,016 [INFO] papermind.api: [44492470] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63283 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:36,018 [INFO] papermind.api: [70d1816d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63283 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:38,016 [INFO] papermind.api: [0e4cf541] GET /tasks/active → 200 (0ms)
+2026-03-17 15:01:44 [INFO] papermind.api (main.py:39): [e28f16ff] GET /papers/folder-stats → 200 (62ms)
+INFO: 127.0.0.1:63244 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+2026-03-17 15:01:44 [INFO] papermind.api (main.py:39): [ffa70a30] GET /papers/folder-stats → 200 (1ms)
+INFO: 127.0.0.1:63259 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+2026-03-17 15:01:44 [INFO] papermind.api (main.py:39): [f5a13d24] GET /today → 200 (132ms)
+INFO: 127.0.0.1:63243 - "GET /today HTTP/1.1" 200 OK
+2026-03-17 15:01:44 [INFO] papermind.api (main.py:39): [b9dddafb] GET /today → 200 (0ms)
+INFO: 127.0.0.1:63259 - "GET /today HTTP/1.1" 200 OK
+INFO: 127.0.0.1:63259 - "OPTIONS /agent/chat HTTP/1.1" 200 OK
+2026-03-17 15:01:49 [INFO] papermind.api (main.py:39): [fe6e7a79] POST /agent/chat → 200 (6ms)
+2026-03-17 15:01:54 [INFO] papermind.api (main.py:39): [ce16aad3] GET /tasks/active → 200 (1ms)
INFO: 127.0.0.1:63296 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:40,019 [INFO] papermind.api: [3205f80c] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:63296 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:42,021 [INFO] papermind.api: [da388e4e] GET /tasks/active → 200 (3ms)
-INFO: 127.0.0.1:63315 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:44,016 [INFO] papermind.api: [c96c8ade] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63315 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:44,875 [INFO] papermind.api: [429f513c] GET /papers/folder-stats → 200 (21ms)
-INFO: 127.0.0.1:63315 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:48:46,016 [INFO] papermind.api: [3a0d7b84] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63315 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:48,018 [INFO] papermind.api: [74a260ee] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63414 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:50,016 [INFO] papermind.api: [41020966] GET /tasks/active → 200 (0ms)
+2026-03-17 15:02:04 [INFO] papermind.api (main.py:39): [ed007611] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:63346 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:02:14 [INFO] papermind.api (main.py:39): [9221a7b8] GET /tasks/active → 200 (0ms)
+INFO: 127.0.0.1:63350 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:02:24 [INFO] papermind.api (main.py:39): [8b26b671] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:63372 - "GET /tasks/active HTTP/1.1" 200 OK
+INFO: 127.0.0.1:63259 - "POST /agent/chat HTTP/1.1" 200 OK
+INFO: 127.0.0.1:63395 - "OPTIONS /actions?limit=30 HTTP/1.1" 200 OK
+INFO: 127.0.0.1:63396 - "OPTIONS /papers/latest?page=1&page_size=20&sort_by=created_at&sort_order=desc HTTP/1.1" 200 OK
+INFO: 127.0.0.1:63399 - "OPTIONS /actions?limit=30 HTTP/1.1" 200 OK
+INFO: 127.0.0.1:63400 - "OPTIONS /papers/latest?page=1&page_size=20&sort_by=created_at&sort_order=desc HTTP/1.1" 200 OK
+2026-03-17 15:02:30 [INFO] papermind.api (main.py:39): [b894bb8d] GET /papers/folder-stats → 200 (24ms)
+2026-03-17 15:02:30 [INFO] papermind.api (main.py:39): [359f145d] GET /actions → 200 (19ms)
+INFO: 127.0.0.1:63393 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+INFO: 127.0.0.1:63400 - "GET /actions?limit=30 HTTP/1.1" 200 OK
+2026-03-17 15:02:30 [INFO] papermind.api (main.py:39): [63a4d17e] GET /papers/latest → 200 (36ms)
+2026-03-17 15:02:30 [INFO] papermind.api (main.py:39): [c70bf5aa] GET /papers/folder-stats → 200 (5ms)
+INFO: 127.0.0.1:63396 - "GET /papers/latest?page=1&page_size=20&sort_by=created_at&sort_order=desc HTTP/1.1" 200 OK
+2026-03-17 15:02:30 [INFO] papermind.api (main.py:39): [3fa2ab6f] GET /actions → 200 (6ms)
+INFO: 127.0.0.1:63399 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+INFO: 127.0.0.1:63393 - "GET /actions?limit=30 HTTP/1.1" 200 OK
+2026-03-17 15:02:30 [INFO] papermind.api (main.py:39): [a4e722fa] GET /papers/latest → 200 (12ms)
+INFO: 127.0.0.1:63400 - "GET /papers/latest?page=1&page_size=20&sort_by=created_at&sort_order=desc HTTP/1.1" 200 OK
+2026-03-17 15:02:34 [INFO] papermind.api (main.py:39): [54731dd5] GET /tasks/active → 200 (0ms)
+INFO: 127.0.0.1:63400 - "GET /tasks/active HTTP/1.1" 200 OK
+INFO: 127.0.0.1:63400 - "OPTIONS /system/status HTTP/1.1" 200 OK
+INFO: 127.0.0.1:63400 - "OPTIONS /metrics/costs?days=7 HTTP/1.1" 200 OK
+INFO: 127.0.0.1:63408 - "OPTIONS /metrics/costs?days=7 HTTP/1.1" 200 OK
+INFO: 127.0.0.1:63410 - "OPTIONS /pipelines/runs?limit=10 HTTP/1.1" 200 OK
+INFO: 127.0.0.1:63412 - "OPTIONS /system/status HTTP/1.1" 200 OK
+INFO: 127.0.0.1:63400 - "OPTIONS /pipelines/runs?limit=10 HTTP/1.1" 200 OK
+2026-03-17 15:02:37 [INFO] papermind.api (main.py:39): [dd7f8cd3] GET /today → 200 (12ms)
+INFO: 127.0.0.1:63411 - "GET /today HTTP/1.1" 200 OK
+2026-03-17 15:02:37 [INFO] papermind.api (main.py:39): [e3a34f61] GET /metrics/costs → 200 (16ms)
+2026-03-17 15:02:37 [INFO] papermind.api (main.py:39): [17c0d254] GET /pipelines/runs → 200 (15ms)
+INFO: 127.0.0.1:63410 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
+INFO: 127.0.0.1:63412 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
+2026-03-17 15:02:37 [INFO] papermind.api (main.py:39): [f20cc439] GET /today → 200 (1ms)
+INFO: 127.0.0.1:63400 - "GET /today HTTP/1.1" 200 OK
+2026-03-17 15:02:37 [INFO] papermind.api (main.py:39): [a4a46507] GET /metrics/costs → 200 (3ms)
+2026-03-17 15:02:37 [INFO] papermind.api (main.py:39): [a6d00778] GET /pipelines/runs → 200 (3ms)
+INFO: 127.0.0.1:63411 - "GET /metrics/costs?days=7 HTTP/1.1" 200 OK
+INFO: 127.0.0.1:63410 - "GET /pipelines/runs?limit=10 HTTP/1.1" 200 OK
+2026-03-17 15:02:37 [INFO] papermind.api (main.py:39): [7ee407f3] GET /system/status → 200 (30ms)
+INFO: 127.0.0.1:63408 - "GET /system/status HTTP/1.1" 200 OK
+2026-03-17 15:02:37 [INFO] papermind.api (main.py:39): [70605a9e] GET /system/status → 200 (14ms)
+INFO: 127.0.0.1:63410 - "GET /system/status HTTP/1.1" 200 OK
+2026-03-17 15:02:44 [INFO] papermind.api (main.py:39): [7b1569e2] GET /papers/folder-stats → 200 (1ms)
+INFO: 127.0.0.1:63259 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+2026-03-17 15:02:44 [INFO] papermind.api (main.py:39): [7493da11] GET /tasks/active → 200 (1ms)
INFO: 127.0.0.1:63414 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:50,815 [INFO] papermind.api: [d9e45c0b] GET /tasks/active → 200 (6ms)
-INFO: 127.0.0.1:63460 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:50,817 [INFO] papermind.api: [a5676ba8] GET /papers/folder-stats → 200 (9ms)
-INFO: 127.0.0.1:63414 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:48:52,017 [INFO] papermind.api: [0335262c] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63513 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:54,017 [INFO] papermind.api: [6f90d1a6] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63513 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:56,016 [INFO] papermind.api: [1aed4bed] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63513 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:48:58,017 [INFO] papermind.api: [5ca71949] GET /tasks/active → 200 (1ms)
+2026-03-17 15:02:54 [INFO] papermind.api (main.py:39): [7735e363] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:63442 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:02:59 [INFO] papermind.api (main.py:39): [9efe85ec] GET /papers/folder-stats → 200 (3ms)
+INFO: 127.0.0.1:63442 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+2026-03-17 15:02:59 [INFO] papermind.api (main.py:39): [e5f730e4] GET /papers/folder-stats → 200 (3ms)
+INFO: 127.0.0.1:63482 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+2026-03-17 15:02:59 [INFO] papermind.api (main.py:39): [555385aa] GET /actions → 200 (8ms)
+2026-03-17 15:02:59 [INFO] papermind.api (main.py:39): [ba5a94aa] GET /papers/latest → 200 (8ms)
+INFO: 127.0.0.1:63479 - "GET /actions?limit=30 HTTP/1.1" 200 OK
+INFO: 127.0.0.1:63480 - "GET /papers/latest?page=1&page_size=20&sort_by=created_at&sort_order=desc HTTP/1.1" 200 OK
+2026-03-17 15:02:59 [INFO] papermind.api (main.py:39): [8e5eb62c] GET /actions → 200 (2ms)
+INFO: 127.0.0.1:63482 - "GET /actions?limit=30 HTTP/1.1" 200 OK
+2026-03-17 15:02:59 [INFO] papermind.api (main.py:39): [7fe8ef4a] GET /papers/latest → 200 (5ms)
+INFO: 127.0.0.1:63442 - "GET /papers/latest?page=1&page_size=20&sort_by=created_at&sort_order=desc HTTP/1.1" 200 OK
+INFO: 127.0.0.1:63442 - "OPTIONS /topics?enabled_only=false HTTP/1.1" 200 OK
+INFO: 127.0.0.1:63482 - "OPTIONS /topics?enabled_only=false HTTP/1.1" 200 OK
+2026-03-17 15:03:01 [INFO] papermind.api (main.py:39): [d53cd92d] GET /topics → 200 (4ms)
+INFO: 127.0.0.1:63442 - "GET /topics?enabled_only=false HTTP/1.1" 200 OK
+2026-03-17 15:03:01 [INFO] papermind.api (main.py:39): [281ecd9e] GET /topics → 200 (2ms)
+INFO: 127.0.0.1:63482 - "GET /topics?enabled_only=false HTTP/1.1" 200 OK
+2026-03-17 15:03:02 [INFO] papermind.api (main.py:39): [d4944a66] GET /today → 200 (1ms)
+INFO: 127.0.0.1:63482 - "GET /today HTTP/1.1" 200 OK
+2026-03-17 15:03:02 [INFO] papermind.api (main.py:39): [62912ab4] GET /today → 200 (1ms)
+INFO: 127.0.0.1:63442 - "GET /today HTTP/1.1" 200 OK
+2026-03-17 15:03:04 [INFO] papermind.api (main.py:39): [ca9eb14a] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:63442 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:03:09 [INFO] papermind.api (main.py:39): [ff6e7bd0] POST /agent/chat → 200 (8ms)
+2026-03-17 15:03:14 [INFO] papermind.api (main.py:39): [686408aa] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:63498 - "GET /tasks/active HTTP/1.1" 200 OK
+INFO: 127.0.0.1:63488 - "POST /agent/chat HTTP/1.1" 200 OK
+2026-03-17 15:03:24 [INFO] papermind.api (main.py:39): [2e2a630c] GET /tasks/active → 200 (0ms)
+INFO: 127.0.0.1:63528 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:03:34 [INFO] papermind.api (main.py:39): [1d81e02b] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:63542 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:03:44 [INFO] papermind.api (main.py:39): [1463b0a1] GET /tasks/active → 200 (8ms)
+INFO: 127.0.0.1:63572 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:03:44 [INFO] papermind.api (main.py:39): [754df979] GET /papers/folder-stats → 200 (12ms)
+INFO: 127.0.0.1:63571 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+2026-03-17 15:03:54 [INFO] papermind.api (main.py:39): [992e8985] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:63595 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:04:04 [INFO] papermind.api (main.py:39): [7fbe9144] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:63625 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:04:14 [INFO] papermind.api (main.py:39): [88f58b1d] GET /tasks/active → 200 (1ms)
INFO: 127.0.0.1:63636 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:49:00,017 [INFO] papermind.api: [11350c8f] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63636 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:49:02,028 [INFO] papermind.api: [1eecc71a] GET /tasks/active → 200 (4ms)
-INFO: 127.0.0.1:63671 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:49:04,017 [INFO] papermind.api: [3f6141f9] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63671 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:49:06,021 [INFO] papermind.api: [75c3f84a] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:63671 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:49:08,017 [INFO] papermind.api: [f0c58645] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63709 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:49:10,017 [INFO] papermind.api: [be7bebd9] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63709 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:49:12,020 [INFO] papermind.api: [015950f5] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63739 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:49:14,017 [INFO] papermind.api: [d90666b5] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63739 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:49:14,859 [INFO] papermind.api: [305d2eeb] GET /papers/folder-stats → 200 (5ms)
-INFO: 127.0.0.1:63739 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:49:16,017 [INFO] papermind.api: [288d2912] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63739 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:49:18,018 [INFO] papermind.api: [90285a50] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63761 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:49:20,016 [INFO] papermind.api: [3b5dabbc] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63761 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:49:22,017 [INFO] papermind.api: [d9dc8675] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63772 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:49:24,016 [INFO] papermind.api: [d9d8e1cd] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63772 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:49:26,017 [INFO] papermind.api: [8069201e] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63772 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:49:28,016 [INFO] papermind.api: [f3928245] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63793 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:49:30,018 [INFO] papermind.api: [ef80c9e6] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63793 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:49:32,018 [INFO] papermind.api: [b1efd366] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63826 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:49:34,016 [INFO] papermind.api: [adc56506] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63826 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:49:36,018 [INFO] papermind.api: [73019433] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63876 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:49:38,016 [INFO] papermind.api: [4b49d21a] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63876 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:49:40,018 [INFO] papermind.api: [1aa5c889] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63876 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:49:42,019 [INFO] papermind.api: [5191a826] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63918 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:49:44,017 [INFO] papermind.api: [52b517f8] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63918 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:49:44,864 [INFO] papermind.api: [c59e0edd] GET /papers/folder-stats → 200 (8ms)
-INFO: 127.0.0.1:63918 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:49:46,027 [INFO] papermind.api: [aa0aab77] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63950 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:49:48,017 [INFO] papermind.api: [869b4e63] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63950 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:49:50,018 [INFO] papermind.api: [60af9c48] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63950 - "GET /tasks/active HTTP/1.1" 200 OK
-INFO: 127.0.0.1:63969 - "OPTIONS /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:49:50,820 [INFO] papermind.api: [dc4e505f] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:63968 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:49:50,828 [INFO] papermind.api: [c26d6b00] GET /papers/folder-stats → 200 (8ms)
-INFO: 127.0.0.1:63969 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:49:52,018 [INFO] papermind.api: [7947ca38] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63969 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:49:54,016 [INFO] papermind.api: [422ab324] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63969 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:49:56,022 [INFO] papermind.api: [0545935e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63988 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:49:58,018 [INFO] papermind.api: [c06b955c] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:63988 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:50:00,016 [INFO] papermind.api: [d5118cb0] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:63988 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:50:02,018 [INFO] papermind.api: [8fa3956b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:64028 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:50:04,021 [INFO] papermind.api: [c588d582] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:64028 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:50:06,018 [INFO] papermind.api: [2cbf6714] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:64051 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:50:08,018 [INFO] papermind.api: [59bbcd3d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:64051 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:50:10,022 [INFO] papermind.api: [bbf92d6b] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:64051 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:50:12,018 [INFO] papermind.api: [b1c0d848] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:64083 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:50:14,017 [INFO] papermind.api: [2a56a7c8] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:64083 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:50:14,868 [INFO] papermind.api: [be8b9683] GET /papers/folder-stats → 200 (13ms)
-INFO: 127.0.0.1:64083 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:50:16,019 [INFO] papermind.api: [d63796eb] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:64101 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:50:18,020 [INFO] papermind.api: [3c608cf2] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:64101 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:50:20,017 [INFO] papermind.api: [ac140b7e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:64101 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:50:22,020 [INFO] papermind.api: [67950471] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:64127 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:50:24,016 [INFO] papermind.api: [c96a2eb8] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:64127 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:50:26,069 [INFO] papermind.api: [2a1be3d7] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:64139 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:50:28,020 [INFO] papermind.api: [64932b61] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:64139 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:50:30,017 [INFO] papermind.api: [7aee8ef8] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:64139 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:50:32,017 [INFO] papermind.api: [cccb6da5] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:64163 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:50:34,019 [INFO] papermind.api: [71a014c9] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:64163 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:50:36,017 [INFO] papermind.api: [3409f721] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:64171 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:50:38,018 [INFO] papermind.api: [7d7c228e] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:64171 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:50:40,018 [INFO] papermind.api: [2412e9c8] GET /tasks/active → 200 (2ms)
-INFO: 127.0.0.1:64171 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:50:42,018 [INFO] papermind.api: [2aeda581] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:64199 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:50:44,018 [INFO] papermind.api: [53ccc03d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:64199 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:50:44,864 [INFO] papermind.api: [060bb2c6] GET /papers/folder-stats → 200 (8ms)
-INFO: 127.0.0.1:64199 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:50:46,023 [INFO] papermind.api: [7e08548d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:64239 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:50:48,017 [INFO] papermind.api: [437ca375] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:64239 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:50:50,017 [INFO] papermind.api: [dda5cdcb] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:64239 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:50:50,856 [INFO] papermind.api: [d2ab5983] GET /tasks/active → 200 (7ms)
-INFO: 127.0.0.1:64275 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:50:50,858 [INFO] papermind.api: [8f51d848] GET /papers/folder-stats → 200 (9ms)
-INFO: 127.0.0.1:64276 - "GET /papers/folder-stats HTTP/1.1" 200 OK
-2026-02-26 13:50:52,793 [INFO] papermind.api: [a5575486] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:64276 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:50:54,792 [INFO] papermind.api: [f3859277] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:64276 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:50:56,792 [INFO] papermind.api: [a7535528] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:64290 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:50:58,792 [INFO] papermind.api: [69f6a44d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:64290 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:51:00,792 [INFO] papermind.api: [bdba1d61] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:64305 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:51:02,852 [INFO] papermind.api: [6fe4ac57] GET /tasks/active → 200 (11ms)
-INFO: 127.0.0.1:64305 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:51:04,795 [INFO] papermind.api: [fd3e157b] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:64305 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:51:06,793 [INFO] papermind.api: [02c64259] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:64337 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:51:08,872 [INFO] papermind.api: [50515430] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:64337 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:51:10,793 [INFO] papermind.api: [d911a77d] GET /tasks/active → 200 (1ms)
-INFO: 127.0.0.1:64374 - "GET /tasks/active HTTP/1.1" 200 OK
-2026-02-26 13:51:12,802 [INFO] papermind.api: [2867ee63] GET /tasks/active → 200 (0ms)
-INFO: 127.0.0.1:64374 - "GET /tasks/active HTTP/1.1" 200 OK
-WARNING: StatReload detected changes in 'apps/api/main.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [99594]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:190: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [3307]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'apps/api/main.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [3307]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:191: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [14668]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'apps/api/main.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [14668]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:201: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [14754]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'packages/domain/task_tracker.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [14754]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:201: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [15381]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'apps/api/main.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [15381]
-Process SpawnProcess-7:
+2026-03-17 15:04:24 [INFO] papermind.api (main.py:39): [a272ed57] GET /tasks/active → 200 (3ms)
+INFO: 127.0.0.1:63699 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:04:34 [INFO] papermind.api (main.py:39): [9ffb5c06] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:63733 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:04:44 [INFO] papermind.api (main.py:39): [a1d246f6] GET /tasks/active → 200 (5ms)
+INFO: 127.0.0.1:63753 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:04:44 [INFO] papermind.api (main.py:39): [8f6bdb56] GET /papers/folder-stats → 200 (7ms)
+INFO: 127.0.0.1:63752 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+2026-03-17 15:04:54 [INFO] papermind.api (main.py:39): [2a5a7d73] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:63773 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:05:04 [INFO] papermind.api (main.py:39): [7c75a7c5] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:63813 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:05:14 [INFO] papermind.api (main.py:39): [78772bdc] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:63819 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:05:24 [INFO] papermind.api (main.py:39): [4d65cb04] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:63852 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:05:34 [INFO] papermind.api (main.py:39): [dd78d8cd] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:63870 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:05:44 [INFO] papermind.api (main.py:39): [fa6eb1f6] GET /tasks/active → 200 (5ms)
+INFO: 127.0.0.1:63892 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:05:44 [INFO] papermind.api (main.py:39): [42ed2680] GET /papers/folder-stats → 200 (7ms)
+INFO: 127.0.0.1:63891 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+2026-03-17 15:05:54 [INFO] papermind.api (main.py:39): [9a11d12a] GET /tasks/active → 200 (0ms)
+INFO: 127.0.0.1:63926 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:06:04 [INFO] papermind.api (main.py:39): [609604f4] GET /tasks/active → 200 (2ms)
+INFO: 127.0.0.1:63994 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:06:14 [INFO] papermind.api (main.py:39): [fe21fb85] GET /tasks/active → 200 (0ms)
+INFO: 127.0.0.1:63998 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:06:24 [INFO] papermind.api (main.py:39): [66d8241a] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:64017 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:06:34 [INFO] papermind.api (main.py:39): [24196fd6] GET /tasks/active → 200 (0ms)
+INFO: 127.0.0.1:64030 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:06:44 [INFO] papermind.api (main.py:39): [5da00846] GET /tasks/active → 200 (4ms)
+INFO: 127.0.0.1:64040 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:06:44 [INFO] papermind.api (main.py:39): [91bea72b] GET /papers/folder-stats → 200 (5ms)
+INFO: 127.0.0.1:64039 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+2026-03-17 15:06:54 [INFO] papermind.api (main.py:39): [b79c2aae] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:64066 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:07:01 [INFO] papermind.api (main.py:39): [b361008c] POST /agent/chat → 200 (5ms)
+2026-03-17 15:07:04 [INFO] papermind.api (main.py:39): [52257350] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:64110 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:07:14 [INFO] papermind.api (main.py:39): [8fcda6bc] GET /tasks/active → 200 (2ms)
+INFO: 127.0.0.1:64167 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:07:24 [INFO] papermind.api (main.py:39): [1c5bf4e7] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:64225 - "GET /tasks/active HTTP/1.1" 200 OK
+INFO: 127.0.0.1:64098 - "POST /agent/chat HTTP/1.1" 200 OK
+2026-03-17 15:07:34 [INFO] papermind.api (main.py:39): [5cc3f447] GET /tasks/active → 200 (0ms)
+INFO: 127.0.0.1:64237 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:07:44 [INFO] papermind.api (main.py:39): [770849b7] GET /tasks/active → 200 (6ms)
+INFO: 127.0.0.1:64248 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:07:44 [INFO] papermind.api (main.py:39): [76037e4a] GET /papers/folder-stats → 200 (10ms)
+INFO: 127.0.0.1:64247 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+2026-03-17 15:07:54 [INFO] papermind.api (main.py:39): [d4e89102] GET /tasks/active → 200 (0ms)
+INFO: 127.0.0.1:64264 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:08:04 [INFO] papermind.api (main.py:39): [5a45aaa5] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:64295 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:08:14 [INFO] papermind.api (main.py:39): [7de0fb4e] GET /tasks/active → 200 (2ms)
+INFO: 127.0.0.1:64304 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:08:24 [INFO] papermind.api (main.py:39): [a936cc74] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:64336 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:08:34 [INFO] papermind.api (main.py:39): [5fe77369] GET /tasks/active → 200 (0ms)
+INFO: 127.0.0.1:64342 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:08:44 [INFO] papermind.api (main.py:39): [26d16728] GET /tasks/active → 200 (4ms)
+INFO: 127.0.0.1:64356 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:08:44 [INFO] papermind.api (main.py:39): [ff5644a9] GET /papers/folder-stats → 200 (6ms)
+INFO: 127.0.0.1:64355 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+2026-03-17 15:08:54 [INFO] papermind.api (main.py:39): [53a2aa4b] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:64372 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:09:04 [INFO] papermind.api (main.py:39): [a199c915] GET /tasks/active → 200 (0ms)
+INFO: 127.0.0.1:64415 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:09:14 [INFO] papermind.api (main.py:39): [f91451bd] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:64423 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:09:24 [INFO] papermind.api (main.py:39): [e7238aca] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:64447 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:09:35 [INFO] papermind.api (main.py:39): [68792489] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:64489 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:09:44 [INFO] papermind.api (main.py:39): [410a8f88] GET /tasks/active → 200 (16ms)
+INFO: 127.0.0.1:64516 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:09:44 [INFO] papermind.api (main.py:39): [d596e1fb] GET /papers/folder-stats → 200 (20ms)
+INFO: 127.0.0.1:64515 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+2026-03-17 15:09:55 [INFO] papermind.api (main.py:39): [01d8ef1e] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:64536 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:10:05 [INFO] papermind.api (main.py:39): [80b8e4e9] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:64600 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:10:15 [INFO] papermind.api (main.py:39): [b58cc12c] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:64604 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:10:25 [INFO] papermind.api (main.py:39): [51963050] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:64623 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:10:35 [INFO] papermind.api (main.py:39): [225f6fbf] GET /tasks/active → 200 (0ms)
+INFO: 127.0.0.1:64641 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:10:45 [INFO] papermind.api (main.py:39): [f4ff7299] GET /tasks/active → 200 (4ms)
+INFO: 127.0.0.1:64650 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:10:45 [INFO] papermind.api (main.py:39): [748978d9] GET /papers/folder-stats → 200 (5ms)
+INFO: 127.0.0.1:64648 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+2026-03-17 15:10:54 [INFO] papermind.api (main.py:39): [5139f074] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:64673 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:11:04 [INFO] papermind.api (main.py:39): [85c9ce44] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:64741 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:11:14 [INFO] papermind.api (main.py:39): [4e8d5811] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:64744 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:11:24 [INFO] papermind.api (main.py:39): [f576b86d] GET /tasks/active → 200 (0ms)
+INFO: 127.0.0.1:64771 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:11:34 [INFO] papermind.api (main.py:39): [772447c7] GET /tasks/active → 200 (12ms)
+INFO: 127.0.0.1:64790 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:11:44 [INFO] papermind.api (main.py:39): [9d879977] GET /tasks/active → 200 (3ms)
+INFO: 127.0.0.1:64800 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:11:44 [INFO] papermind.api (main.py:39): [c825662f] GET /papers/folder-stats → 200 (5ms)
+INFO: 127.0.0.1:64799 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+INFO: 127.0.0.1:64824 - "OPTIONS /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:11:54 [INFO] papermind.api (main.py:39): [3a69bc48] GET /tasks/active → 200 (5ms)
+INFO: 127.0.0.1:64824 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:12:04 [INFO] papermind.api (main.py:39): [825d9212] GET /tasks/active → 200 (3ms)
+INFO: 127.0.0.1:64877 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:12:14 [INFO] papermind.api (main.py:39): [fd4f8a31] GET /tasks/active → 200 (0ms)
+INFO: 127.0.0.1:64886 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:12:24 [INFO] papermind.api (main.py:39): [41d12af3] GET /tasks/active → 200 (3ms)
+INFO: 127.0.0.1:64972 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:12:34 [INFO] papermind.api (main.py:39): [617dfb65] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:65031 - "GET /tasks/active HTTP/1.1" 200 OK
+INFO: 127.0.0.1:65048 - "OPTIONS /papers/folder-stats HTTP/1.1" 200 OK
+2026-03-17 15:12:44 [INFO] papermind.api (main.py:39): [d912bc40] GET /tasks/active → 200 (5ms)
+INFO: 127.0.0.1:65049 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:12:44 [INFO] papermind.api (main.py:39): [b0641c89] GET /papers/folder-stats → 200 (6ms)
+INFO: 127.0.0.1:65048 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+2026-03-17 15:12:54 [INFO] papermind.api (main.py:39): [365b94da] GET /tasks/active → 200 (5ms)
+INFO: 127.0.0.1:65072 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:13:04 [INFO] papermind.api (main.py:39): [05fd4b31] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:65118 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:13:14 [INFO] papermind.api (main.py:39): [d5bd10f6] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:65127 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:13:24 [INFO] papermind.api (main.py:39): [1ae3191d] GET /tasks/active → 200 (0ms)
+INFO: 127.0.0.1:64098 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:13:34 [INFO] papermind.api (main.py:39): [c23034d0] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:65187 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:13:44 [INFO] papermind.api (main.py:39): [3c722a5c] GET /tasks/active → 200 (4ms)
+INFO: 127.0.0.1:65200 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:13:44 [INFO] papermind.api (main.py:39): [8f96c770] GET /papers/folder-stats → 200 (6ms)
+INFO: 127.0.0.1:65199 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+2026-03-17 15:13:54 [INFO] papermind.api (main.py:39): [f8d5e412] GET /tasks/active → 200 (2ms)
+INFO: 127.0.0.1:65291 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:14:04 [INFO] papermind.api (main.py:39): [8290908a] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:65325 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:14:14 [INFO] papermind.api (main.py:39): [89181e3f] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:65336 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:14:24 [INFO] papermind.api (main.py:39): [1f98b395] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:65360 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:14:34 [INFO] papermind.api (main.py:39): [71f98c2a] GET /tasks/active → 200 (0ms)
+INFO: 127.0.0.1:65375 - "GET /tasks/active HTTP/1.1" 200 OK
+WARNING: StatReload detected changes in 'packages/ai/brief_service.py'. Reloading...
+INFO: Shutting down
+INFO: Waiting for application shutdown.
+INFO: Application shutdown complete.
+INFO: Finished server process [59602]
+Process SpawnProcess-2:
Traceback (most recent call last):
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/multiprocessing/process.py", line 313, in _bootstrap
+ File "/opt/homebrew/Cellar/python@3.11/3.11.14_1/Frameworks/Python.framework/Versions/3.11/lib/python3.11/multiprocessing/process.py", line 314, in _bootstrap
self.run()
- ~~~~~~~~^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/multiprocessing/process.py", line 108, in run
+ File "/opt/homebrew/Cellar/python@3.11/3.11.14_1/Frameworks/Python.framework/Versions/3.11/lib/python3.11/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
- ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/uvicorn/_subprocess.py", line 80, in subprocess_started
+ File "/Users/haojiang/Documents/2026/PaperMind/.venv/lib/python3.11/site-packages/uvicorn/_subprocess.py", line 80, in subprocess_started
target(sockets=sockets)
- ~~~~~~^^^^^^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/uvicorn/server.py", line 75, in run
+ File "/Users/haojiang/Documents/2026/PaperMind/.venv/lib/python3.11/site-packages/uvicorn/server.py", line 75, in run
return asyncio_run(self.serve(sockets=sockets), loop_factory=self.config.get_loop_factory())
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/asyncio/runners.py", line 195, in run
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/Users/haojiang/Documents/2026/PaperMind/.venv/lib/python3.11/site-packages/uvicorn/_compat.py", line 30, in asyncio_run
return runner.run(main)
- ~~~~~~~~~~^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/asyncio/runners.py", line 118, in run
+ ^^^^^^^^^^^^^^^^
+ File "/opt/homebrew/Cellar/python@3.11/3.11.14_1/Frameworks/Python.framework/Versions/3.11/lib/python3.11/asyncio/runners.py", line 118, in run
return self._loop.run_until_complete(task)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/asyncio/base_events.py", line 725, in run_until_complete
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/opt/homebrew/Cellar/python@3.11/3.11.14_1/Frameworks/Python.framework/Versions/3.11/lib/python3.11/asyncio/base_events.py", line 654, in run_until_complete
return future.result()
- ~~~~~~~~~~~~~^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/uvicorn/server.py", line 79, in serve
+ ^^^^^^^^^^^^^^^
+ File "/Users/haojiang/Documents/2026/PaperMind/.venv/lib/python3.11/site-packages/uvicorn/server.py", line 79, in serve
await self._serve(sockets)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/uvicorn/server.py", line 86, in _serve
+ File "/Users/haojiang/Documents/2026/PaperMind/.venv/lib/python3.11/site-packages/uvicorn/server.py", line 86, in _serve
config.load()
- ~~~~~~~~~~~^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/uvicorn/config.py", line 441, in load
+ File "/Users/haojiang/Documents/2026/PaperMind/.venv/lib/python3.11/site-packages/uvicorn/config.py", line 441, in load
self.loaded_app = import_from_string(self.app)
- ~~~~~~~~~~~~~~~~~~^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/uvicorn/importer.py", line 19, in import_from_string
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/Users/haojiang/Documents/2026/PaperMind/.venv/lib/python3.11/site-packages/uvicorn/importer.py", line 19, in import_from_string
module = importlib.import_module(module_str)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/importlib/__init__.py", line 88, in import_module
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/opt/homebrew/Cellar/python@3.11/3.11.14_1/Frameworks/Python.framework/Versions/3.11/lib/python3.11/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
- ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "", line 1387, in _gcd_import
- File "", line 1360, in _find_and_load
- File "", line 1331, in _find_and_load_unlocked
- File "", line 935, in _load_unlocked
- File "", line 1023, in exec_module
- File "", line 488, in _call_with_frames_removed
- File "/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py", line 142, in
- task_manager = TaskManager()
- ^^^^^^^^^^^
-NameError: name 'TaskManager' is not defined
-WARNING: StatReload detected changes in 'apps/api/main.py'. Reloading...
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:200: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [15586]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'apps/api/main.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [15586]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:200: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [15669]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'apps/api/main.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [15669]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:200: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [15764]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'apps/api/main.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [15764]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:200: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [15861]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'apps/api/main.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [15861]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:200: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [15971]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'packages/ai/agent_tools.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [15971]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:200: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [16144]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'packages/ai/agent_tools.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [16144]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:200: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [16223]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'packages/ai/auto_read_service.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [16223]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:200: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [16906]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'apps/api/main.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [16906]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:200: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [17153]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'apps/api/main.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [17153]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:200: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [17505]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'apps/api/main.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [17505]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:200: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [17594]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'apps/api/main.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [17594]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:200: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [18013]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'apps/api/main.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [18013]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:200: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [18270]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'apps/api/main.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [18270]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:200: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [18378]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'apps/worker/main.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [18378]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:200: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [68962]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'apps/worker/main.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [68962]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:200: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [69036]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'apps/worker/main.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [69036]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:200: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [69104]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'packages/config.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [69104]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:200: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [69170]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'apps/worker/main.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [69170]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:200: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [69232]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'apps/worker/main.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [69232]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:200: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [69284]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'packages/ai/auto_read_service.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [69284]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:200: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [69450]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'apps/worker/main.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [69450]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:200: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [69979]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'apps/api/main.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [69979]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:199: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [70193]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'scripts/batch_process_unread.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [70193]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:199: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [88522]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'packages/ai/daily_runner.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [88522]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:199: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [91872]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'packages/ai/daily_runner.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [91872]
-Process SpawnProcess-33:
-Traceback (most recent call last):
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/multiprocessing/process.py", line 313, in _bootstrap
- self.run()
- ~~~~~~~~^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/multiprocessing/process.py", line 108, in run
- self._target(*self._args, **self._kwargs)
- ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/uvicorn/_subprocess.py", line 80, in subprocess_started
- target(sockets=sockets)
- ~~~~~~^^^^^^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/uvicorn/server.py", line 75, in run
- return asyncio_run(self.serve(sockets=sockets), loop_factory=self.config.get_loop_factory())
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/asyncio/runners.py", line 195, in run
- return runner.run(main)
- ~~~~~~~~~~^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/asyncio/runners.py", line 118, in run
- return self._loop.run_until_complete(task)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/asyncio/base_events.py", line 725, in run_until_complete
- return future.result()
- ~~~~~~~~~~~~~^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/uvicorn/server.py", line 79, in serve
- await self._serve(sockets)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/uvicorn/server.py", line 86, in _serve
- config.load()
- ~~~~~~~~~~~^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/uvicorn/config.py", line 441, in load
- self.loaded_app = import_from_string(self.app)
- ~~~~~~~~~~~~~~~~~~^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/uvicorn/importer.py", line 19, in import_from_string
- module = importlib.import_module(module_str)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/importlib/__init__.py", line 88, in import_module
- return _bootstrap._gcd_import(name[level:], package, level)
- ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "", line 1387, in _gcd_import
- File "", line 1360, in _find_and_load
- File "", line 1331, in _find_and_load_unlocked
- File "", line 935, in _load_unlocked
- File "", line 1023, in exec_module
- File "", line 488, in _call_with_frames_removed
- File "/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py", line 29, in
- from packages.ai.daily_runner import (
- ...<3 lines>...
- )
- File "/Users/haojiang/Documents/2026/PaperMind/packages/ai/daily_runner.py", line 260
- repo = PaperRepository(session)
-IndentationError: unexpected indent
-WARNING: StatReload detected changes in 'packages/ai/daily_runner.py'. Reloading...
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:199: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [92468]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'apps/worker/main.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [92468]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:199: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [93222]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'apps/worker/main.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [93222]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:199: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [93614]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'apps/worker/main.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [93614]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:199: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [94291]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'packages/config.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [94291]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:199: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [2098]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'apps/worker/main.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [2098]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:199: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [11195]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'apps/worker/main.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [11195]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:199: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [11508]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'packages/ai/idle_processor.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [11508]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:199: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [11719]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'scripts/local_bootstrap.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [11719]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:199: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [38749]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'scripts/local_bootstrap.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [38749]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:199: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [41285]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'scripts/local_bootstrap.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [41285]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:199: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [41576]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'scripts/local_bootstrap.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [41576]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:199: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [46554]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'packages/config.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [46554]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:199: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(default="submittedDate", regex="^(submittedDate|relevance|lastUpdatedDate)$"),
-INFO: Started server process [46846]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'apps/api/main.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [46846]
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:209: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(
-INFO: Started server process [50380]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
-WARNING: StatReload detected changes in 'packages/storage/db.py'. Reloading...
-INFO: Shutting down
-INFO: Waiting for application shutdown.
-INFO: Application shutdown complete.
-INFO: Finished server process [50380]
-Process SpawnProcess-48:
-Traceback (most recent call last):
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/multiprocessing/process.py", line 313, in _bootstrap
- self.run()
- ~~~~~~~~^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/multiprocessing/process.py", line 108, in run
- self._target(*self._args, **self._kwargs)
- ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/uvicorn/_subprocess.py", line 80, in subprocess_started
- target(sockets=sockets)
- ~~~~~~^^^^^^^^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/uvicorn/server.py", line 75, in run
- return asyncio_run(self.serve(sockets=sockets), loop_factory=self.config.get_loop_factory())
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/asyncio/runners.py", line 195, in run
- return runner.run(main)
- ~~~~~~~~~~^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/asyncio/runners.py", line 118, in run
- return self._loop.run_until_complete(task)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/asyncio/base_events.py", line 725, in run_until_complete
- return future.result()
- ~~~~~~~~~~~~~^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/uvicorn/server.py", line 79, in serve
- await self._serve(sockets)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/uvicorn/server.py", line 86, in _serve
- config.load()
- ~~~~~~~~~~~^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/uvicorn/config.py", line 441, in load
- self.loaded_app = import_from_string(self.app)
- ~~~~~~~~~~~~~~~~~~^^^^^^^^^^
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/site-packages/uvicorn/importer.py", line 19, in import_from_string
- module = importlib.import_module(module_str)
- File "/opt/homebrew/Caskroom/miniconda/base/lib/python3.13/importlib/__init__.py", line 88, in import_module
- return _bootstrap._gcd_import(name[level:], package, level)
- ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "", line 1387, in _gcd_import
- File "", line 1360, in _find_and_load
- File "", line 1331, in _find_and_load_unlocked
- File "", line 935, in _load_unlocked
- File "", line 1023, in exec_module
- File "", line 488, in _call_with_frames_removed
- File "/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py", line 28, in
- from packages.ai.agent_service import (
- ...<3 lines>...
- )
- File "/Users/haojiang/Documents/2026/PaperMind/packages/ai/agent_service.py", line 14, in
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "", line 1204, in _gcd_import
+ File "", line 1176, in _find_and_load
+ File "", line 1147, in _find_and_load_unlocked
+ File "", line 690, in _load_unlocked
+ File "", line 940, in exec_module
+ File "", line 241, in _call_with_frames_removed
+ File "/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py", line 149, in
+ from apps.api.routers import ( # noqa: E402
+ File "/Users/haojiang/Documents/2026/PaperMind/apps/api/routers/agent.py", line 8, in
+ from packages.ai.agent_service import confirm_action, reject_action, stream_chat
+ File "/Users/haojiang/Documents/2026/PaperMind/packages/ai/agent_service.py", line 17, in
from packages.ai.agent_tools import (
- ...<5 lines>...
- )
File "/Users/haojiang/Documents/2026/PaperMind/packages/ai/agent_tools.py", line 12, in
from packages.ai.brief_service import DailyBriefService
- File "/Users/haojiang/Documents/2026/PaperMind/packages/ai/brief_service.py", line 15, in
- from packages.storage.db import session_scope
- File "/Users/haojiang/Documents/2026/PaperMind/packages/storage/db.py", line 36, in
- poolclass=StaticPool if _is_sqlite else None,
- ^^^^^^^^^^
-NameError: name 'StaticPool' is not defined
-WARNING: StatReload detected changes in 'packages/storage/db.py'. Reloading...
-/Users/haojiang/Documents/2026/PaperMind/apps/api/main.py:209: FastAPIDeprecationWarning: `regex` has been deprecated, please use `pattern` instead
- sort_by: str = Query(
-INFO: Started server process [74992]
-INFO: Waiting for application startup.
-INFO: Application startup complete.
+ File "/Users/haojiang/Documents/2026/PaperMind/packages/ai/brief_service.py", line 343
+ 🔬 精读精选
+IndentationError: unexpected indent
+WARNING: StatReload detected changes in 'packages/ai/brief_service.py'. Reloading...
+INFO: Started server process [64221]
+INFO: Waiting for application startup.
+INFO: Application startup complete.
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [1df845c0] GET /tasks/active → 200 (4ms)
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [38a6bc7a] GET /tasks/active → 200 (4ms)
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [9ecce401] GET /tasks/active → 200 (4ms)
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [fd506e8b] GET /tasks/active → 200 (4ms)
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [2f6d7a1d] GET /tasks/active → 200 (4ms)
+INFO: 127.0.0.1:65395 - "GET /tasks/active HTTP/1.1" 200 OK
+INFO: 127.0.0.1:65495 - "GET /tasks/active HTTP/1.1" 200 OK
+INFO: 127.0.0.1:65527 - "GET /tasks/active HTTP/1.1" 200 OK
+INFO: 127.0.0.1:49173 - "GET /tasks/active HTTP/1.1" 200 OK
+INFO: 127.0.0.1:49187 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [b471d432] GET /papers/folder-stats → 200 (13ms)
+INFO: 127.0.0.1:65394 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [8f699384] GET /tasks/active → 200 (4ms)
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [5d115aef] GET /papers/folder-stats → 200 (4ms)
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [ac695ef4] GET /tasks/active → 200 (2ms)
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [833029ca] GET /tasks/active → 200 (5ms)
+INFO: 127.0.0.1:50181 - "GET /tasks/active HTTP/1.1" 200 OK
+INFO: 127.0.0.1:50184 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+INFO: 127.0.0.1:50185 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [5cf9be72] GET /tasks/active → 200 (7ms)
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [442efa1f] GET /tasks/active → 200 (8ms)
+INFO: 127.0.0.1:50187 - "GET /tasks/active HTTP/1.1" 200 OK
+INFO: 127.0.0.1:50190 - "GET /tasks/active HTTP/1.1" 200 OK
+INFO: 127.0.0.1:50192 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [ad4ee0f2] GET /tasks/active → 200 (4ms)
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [372ec3fe] GET /tasks/active → 200 (6ms)
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [f55a961a] GET /papers/folder-stats → 200 (4ms)
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [61daf19c] GET /tasks/active → 200 (4ms)
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [ea0b1ae6] GET /tasks/active → 200 (2ms)
+INFO: 127.0.0.1:50184 - "GET /tasks/active HTTP/1.1" 200 OK
+INFO: 127.0.0.1:50181 - "GET /tasks/active HTTP/1.1" 200 OK
+INFO: 127.0.0.1:50185 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+INFO: 127.0.0.1:50187 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [95420a58] GET /tasks/active → 200 (4ms)
+INFO: 127.0.0.1:50190 - "GET /tasks/active HTTP/1.1" 200 OK
+INFO: 127.0.0.1:50192 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [7f931e0c] GET /tasks/active → 200 (4ms)
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [e08362f4] GET /tasks/active → 200 (4ms)
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [7430211c] GET /papers/folder-stats → 200 (4ms)
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [1b4a7c29] GET /tasks/active → 200 (4ms)
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [f39fa6a1] GET /tasks/active → 200 (2ms)
+INFO: 127.0.0.1:50181 - "GET /tasks/active HTTP/1.1" 200 OK
+INFO: 127.0.0.1:50184 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [97abe26a] GET /tasks/active → 200 (3ms)
+INFO: 127.0.0.1:50187 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+INFO: 127.0.0.1:50185 - "GET /tasks/active HTTP/1.1" 200 OK
+INFO: 127.0.0.1:50190 - "GET /tasks/active HTTP/1.1" 200 OK
+INFO: 127.0.0.1:50192 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [a19bfcd2] GET /tasks/active → 200 (3ms)
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [d0d76f36] GET /tasks/active → 200 (2ms)
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [ec3e161f] GET /tasks/active → 200 (3ms)
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [6bba401c] GET /papers/folder-stats → 200 (1ms)
+INFO: 127.0.0.1:50184 - "GET /tasks/active HTTP/1.1" 200 OK
+INFO: 127.0.0.1:50187 - "GET /tasks/active HTTP/1.1" 200 OK
+INFO: 127.0.0.1:50181 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [653645b2] GET /tasks/active → 200 (2ms)
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [5339b9dc] GET /tasks/active → 200 (3ms)
+INFO: 127.0.0.1:50190 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+INFO: 127.0.0.1:50192 - "GET /tasks/active HTTP/1.1" 200 OK
+INFO: 127.0.0.1:50185 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [190ee619] GET /tasks/active → 200 (4ms)
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [2dd727eb] GET /tasks/active → 200 (3ms)
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [8edcd3e0] GET /tasks/active → 200 (2ms)
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [ab462894] GET /tasks/active → 200 (3ms)
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [669db263] GET /tasks/active → 200 (2ms)
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [91f2ffc9] GET /tasks/active → 200 (2ms)
+INFO: 127.0.0.1:50184 - "GET /tasks/active HTTP/1.1" 200 OK
+INFO: 127.0.0.1:50181 - "GET /tasks/active HTTP/1.1" 200 OK
+INFO: 127.0.0.1:50190 - "GET /tasks/active HTTP/1.1" 200 OK
+INFO: 127.0.0.1:50187 - "GET /tasks/active HTTP/1.1" 200 OK
+INFO: 127.0.0.1:50185 - "GET /tasks/active HTTP/1.1" 200 OK
+INFO: 127.0.0.1:50192 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [69973c58] GET /papers/folder-stats → 200 (1ms)
+2026-03-17 15:19:59 [INFO] papermind.api (main.py:39): [ec6a2f62] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:50184 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+INFO: 127.0.0.1:50187 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:20:04 [INFO] papermind.api (main.py:39): [f3d4d691] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:50249 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:20:14 [INFO] papermind.api (main.py:39): [17b7d2e7] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:50305 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:20:24 [INFO] papermind.api (main.py:39): [b8a52d6a] GET /tasks/active → 200 (2ms)
+INFO: 127.0.0.1:50331 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:20:34 [INFO] papermind.api (main.py:39): [1f237941] GET /tasks/active → 200 (0ms)
+INFO: 127.0.0.1:50351 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:20:44 [INFO] papermind.api (main.py:39): [5189487d] GET /tasks/active → 200 (5ms)
+INFO: 127.0.0.1:50377 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:20:44 [INFO] papermind.api (main.py:39): [d6caba79] GET /papers/folder-stats → 200 (6ms)
+INFO: 127.0.0.1:50376 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+2026-03-17 15:20:54 [INFO] papermind.api (main.py:39): [6346c1f2] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:50407 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:21:04 [INFO] papermind.api (main.py:39): [d2bfbd50] GET /tasks/active → 200 (9ms)
+INFO: 127.0.0.1:50468 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:21:14 [INFO] papermind.api (main.py:39): [438f88b8] GET /tasks/active → 200 (0ms)
+INFO: 127.0.0.1:50474 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:21:24 [INFO] papermind.api (main.py:39): [976e106f] GET /tasks/active → 200 (3ms)
+INFO: 127.0.0.1:50503 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:21:34 [INFO] papermind.api (main.py:39): [c910eb7b] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:50560 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:21:44 [INFO] papermind.api (main.py:39): [2e446bed] GET /tasks/active → 200 (3ms)
+INFO: 127.0.0.1:50576 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:21:44 [INFO] papermind.api (main.py:39): [96112cf3] GET /papers/folder-stats → 200 (5ms)
+INFO: 127.0.0.1:50575 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+2026-03-17 15:21:54 [INFO] papermind.api (main.py:39): [de4d0711] GET /tasks/active → 200 (0ms)
+INFO: 127.0.0.1:50594 - "GET /tasks/active HTTP/1.1" 200 OK
+INFO: 127.0.0.1:50666 - "OPTIONS /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:22:05 [INFO] papermind.api (main.py:39): [de7f8765] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:50666 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:22:14 [INFO] papermind.api (main.py:39): [6cc15912] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:50672 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:22:24 [INFO] papermind.api (main.py:39): [4a764411] GET /tasks/active → 200 (0ms)
+INFO: 127.0.0.1:50695 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:22:34 [INFO] papermind.api (main.py:39): [1726c46f] GET /tasks/active → 200 (0ms)
+INFO: 127.0.0.1:50754 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:22:44 [INFO] papermind.api (main.py:39): [a48e60ee] GET /tasks/active → 200 (12ms)
+INFO: 127.0.0.1:50762 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:22:44 [INFO] papermind.api (main.py:39): [68875359] GET /papers/folder-stats → 200 (15ms)
+INFO: 127.0.0.1:50761 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+2026-03-17 15:22:54 [INFO] papermind.api (main.py:39): [2e0d7d6d] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:50783 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:23:04 [INFO] papermind.api (main.py:39): [6d500afb] GET /tasks/active → 200 (0ms)
+INFO: 127.0.0.1:50815 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:23:14 [INFO] papermind.api (main.py:39): [13c3abc6] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:50836 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:23:24 [INFO] papermind.api (main.py:39): [5801da51] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:50861 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:23:34 [INFO] papermind.api (main.py:39): [568903ba] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:50875 - "GET /tasks/active HTTP/1.1" 200 OK
+INFO: 127.0.0.1:50884 - "OPTIONS /papers/folder-stats HTTP/1.1" 200 OK
+2026-03-17 15:23:44 [INFO] papermind.api (main.py:39): [442265c1] GET /tasks/active → 200 (3ms)
+INFO: 127.0.0.1:50885 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:23:44 [INFO] papermind.api (main.py:39): [b775e993] GET /papers/folder-stats → 200 (7ms)
+INFO: 127.0.0.1:50884 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+2026-03-17 15:23:54 [INFO] papermind.api (main.py:39): [55919f61] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:50904 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:24:04 [INFO] papermind.api (main.py:39): [761702d3] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:50935 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:24:14 [INFO] papermind.api (main.py:39): [293cb816] GET /tasks/active → 200 (2ms)
+INFO: 127.0.0.1:50945 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:24:25 [INFO] papermind.api (main.py:39): [39f69167] GET /tasks/active → 200 (2ms)
+INFO: 127.0.0.1:51001 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:24:35 [INFO] papermind.api (main.py:39): [6c7e7430] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:51024 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:24:45 [INFO] papermind.api (main.py:39): [211399a6] GET /tasks/active → 200 (4ms)
+INFO: 127.0.0.1:51030 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:24:45 [INFO] papermind.api (main.py:39): [3479d50b] GET /papers/folder-stats → 200 (5ms)
+INFO: 127.0.0.1:51029 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+2026-03-17 15:24:55 [INFO] papermind.api (main.py:39): [80eb549d] GET /tasks/active → 200 (0ms)
+INFO: 127.0.0.1:51050 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:25:05 [INFO] papermind.api (main.py:39): [74eaf557] GET /tasks/active → 200 (1ms)
+INFO: 127.0.0.1:51120 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:25:55 [INFO] papermind.api (main.py:39): [a946b5e3] GET /tasks/active → 200 (12ms)
+INFO: 127.0.0.1:51181 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:25:55 [INFO] papermind.api (main.py:39): [e1c3c558] GET /papers/folder-stats → 200 (16ms)
+INFO: 127.0.0.1:51182 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+2026-03-17 15:26:55 [INFO] papermind.api (main.py:39): [e17943ec] GET /tasks/active → 200 (7ms)
+INFO: 127.0.0.1:51336 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:26:55 [INFO] papermind.api (main.py:39): [86a69049] GET /papers/folder-stats → 200 (10ms)
+INFO: 127.0.0.1:51338 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+2026-03-17 15:27:55 [INFO] papermind.api (main.py:39): [200cde17] GET /tasks/active → 200 (8ms)
+INFO: 127.0.0.1:51474 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:27:55 [INFO] papermind.api (main.py:39): [8ea475f9] GET /papers/folder-stats → 200 (10ms)
+INFO: 127.0.0.1:51476 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+2026-03-17 15:28:55 [INFO] papermind.api (main.py:39): [f2ba2258] GET /tasks/active → 200 (29ms)
+INFO: 127.0.0.1:51571 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:28:55 [INFO] papermind.api (main.py:39): [36eb34ce] GET /papers/folder-stats → 200 (34ms)
+INFO: 127.0.0.1:51572 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+2026-03-17 15:29:55 [INFO] papermind.api (main.py:39): [94f579a5] GET /tasks/active → 200 (14ms)
+INFO: 127.0.0.1:51739 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:29:55 [INFO] papermind.api (main.py:39): [fde96fe0] GET /papers/folder-stats → 200 (16ms)
+INFO: 127.0.0.1:51740 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+2026-03-17 15:30:55 [INFO] papermind.api (main.py:39): [4f79d1de] GET /tasks/active → 200 (7ms)
+INFO: 127.0.0.1:51845 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:30:55 [INFO] papermind.api (main.py:39): [53d40f7d] GET /papers/folder-stats → 200 (9ms)
+INFO: 127.0.0.1:51847 - "GET /papers/folder-stats HTTP/1.1" 200 OK
+2026-03-17 15:31:55 [INFO] papermind.api (main.py:39): [8a721f03] GET /tasks/active → 200 (6ms)
+INFO: 127.0.0.1:51998 - "GET /tasks/active HTTP/1.1" 200 OK
+2026-03-17 15:31:55 [INFO] papermind.api (main.py:39): [f0271235] GET /papers/folder-stats → 200 (8ms)
+INFO: 127.0.0.1:51999 - "GET /papers/folder-stats HTTP/1.1" 200 OK
diff --git a/packages/ai/auto_read_service.py b/packages/ai/auto_read_service.py
index 9c28f24..ab52980 100644
--- a/packages/ai/auto_read_service.py
+++ b/packages/ai/auto_read_service.py
@@ -7,6 +7,7 @@
- build_html() 结果缓存(同一天内不重复计算)
- 新增 send_only() 方法,跳过精读直接发送
"""
+
from __future__ import annotations
import logging
@@ -64,15 +65,18 @@ class AutoReadService(ServiceBase):
def get_config(self) -> dict:
"""获取每日报告配置"""
- with self.get_session() as session:
+ with session_scope() as session:
config = DailyReportConfigRepository(session).get_config()
return {
"enabled": config.enabled,
"auto_deep_read": config.auto_deep_read,
"deep_read_limit": config.deep_read_limit,
"send_email_report": config.send_email_report,
- "recipient_emails": config.recipient_emails.split(",") if config.recipient_emails else [],
- "report_time_utc": config.report_time_utc,
+ "recipient_emails": config.recipient_emails.split(",")
+ if config.recipient_emails
+ else [],
+ "cron_expression": config.cron_expression, # 新增:返回 cron 表达式
+ "report_time_utc": config.report_time_utc, # 保留:向后兼容
"include_paper_details": config.include_paper_details,
"include_graph_insights": config.include_graph_insights,
}
@@ -86,8 +90,11 @@ def update_config(self, **kwargs) -> dict:
"auto_deep_read": config.auto_deep_read,
"deep_read_limit": config.deep_read_limit,
"send_email_report": config.send_email_report,
- "recipient_emails": config.recipient_emails.split(",") if config.recipient_emails else [],
- "report_time_utc": config.report_time_utc,
+ "recipient_emails": config.recipient_emails.split(",")
+ if config.recipient_emails
+ else [],
+ "cron_expression": config.cron_expression, # 新增:返回 cron 表达式
+ "report_time_utc": config.report_time_utc, # 保留:向后兼容
"include_paper_details": config.include_paper_details,
"include_graph_insights": config.include_graph_insights,
}
@@ -116,6 +123,7 @@ def step_deep_read(
try:
from packages.ai.recommendation_service import RecommendationService
+
recommendations = RecommendationService().recommend(top_k=deep_read_limit)
except Exception as e:
logger.error(f"推荐系统失败: {e}")
@@ -129,16 +137,19 @@ def step_deep_read(
for rec in recommendations:
paper = paper_repo.get_by_id(rec["id"])
if paper and paper.read_status.value != "deep_read":
- papers_to_read.append({
- "id": paper.id,
- "title": paper.title,
- "similarity": rec.get("similarity", 0),
- })
+ papers_to_read.append(
+ {
+ "id": paper.id,
+ "title": paper.title,
+ "similarity": rec.get("similarity", 0),
+ }
+ )
result["recommended_count"] = len(papers_to_read)
# 执行精读
if papers_to_read:
from packages.ai.pipelines import PaperPipelines
+
pipelines = PaperPipelines()
for i, p in enumerate(papers_to_read, 1):
try:
@@ -176,6 +187,7 @@ def step_generate_html(
progress_callback("正在生成每日简报...", 60, 100)
from packages.ai.brief_service import DailyBriefService
+
html = DailyBriefService().build_html()
_set_cached_html(html)
return html
@@ -216,6 +228,7 @@ def step_send_email(
progress_callback("正在发送邮件报告...", 90, 100)
from packages.integrations.email_service import EmailService
+
email_service = EmailService(email_config)
report_date = datetime.now().strftime("%Y-%m-%d")
diff --git a/packages/ai/brief_service.py b/packages/ai/brief_service.py
index 31aa889..032141a 100644
--- a/packages/ai/brief_service.py
+++ b/packages/ai/brief_service.py
@@ -499,6 +499,17 @@ def publish(self, recipient: str | None = None) -> dict:
ts = datetime.now(UTC).strftime("%Y%m%d_%H%M%S")
filename = f"daily_brief_{ts}.html"
saved = self.notifier.save_brief_html(filename, html)
+
+ # 如果没有指定收件人,从数据库读取配置
+ if not recipient:
+ from packages.storage.db import session_scope
+ from packages.storage.repositories import DailyReportConfigRepository
+
+ with session_scope() as session:
+ config = DailyReportConfigRepository(session).get_config()
+ if config.send_email_report and config.recipient_emails:
+ recipient = config.recipient_emails.split(",")[0] # 取第一个收件人
+
sent = False
if recipient:
sent = self.notifier.send_email_html(recipient, "PaperMind Daily Brief", html)
diff --git a/packages/ai/daily_runner.py b/packages/ai/daily_runner.py
index 6633f36..0a7a6cc 100644
--- a/packages/ai/daily_runner.py
+++ b/packages/ai/daily_runner.py
@@ -318,8 +318,21 @@ def run_daily_ingest() -> dict:
def run_daily_brief() -> dict:
- settings = get_settings()
- return DailyBriefService().publish(recipient=settings.notify_default_to)
+ """生成每日简报,从数据库读取收件人配置"""
+ # 从数据库读取收件人
+ from packages.storage.db import session_scope
+ from packages.storage.repositories import DailyReportConfigRepository
+
+ recipient = None
+ try:
+ with session_scope() as session:
+ config = DailyReportConfigRepository(session).get_config()
+ if config.send_email_report and config.recipient_emails:
+ recipient = config.recipient_emails.split(",")[0]
+ except Exception as e:
+ logger.warning(f"读取收件人配置失败:{e}")
+
+ return DailyBriefService().publish(recipient=recipient)
def run_weekly_graph_maintenance() -> dict:
diff --git a/packages/storage/models.py b/packages/storage/models.py
index 1eff248..0e3f5b2 100644
--- a/packages/storage/models.py
+++ b/packages/storage/models.py
@@ -197,8 +197,12 @@ class TopicSubscription(Base):
retry_limit: Mapped[int] = mapped_column(nullable=False, default=2)
schedule_frequency: Mapped[str] = mapped_column(String(32), nullable=False, default="daily")
schedule_time_utc: Mapped[int] = mapped_column(nullable=False, default=21)
- enable_date_filter: Mapped[bool] = mapped_column(nullable=False, default=False) # 是否启用日期过滤
- date_filter_days: Mapped[int] = mapped_column(nullable=False, default=7) # 日期范围(最近 N 天)
+ enable_date_filter: Mapped[bool] = mapped_column(
+ nullable=False, default=False
+ ) # 是否启用日期过滤
+ date_filter_days: Mapped[int] = mapped_column(
+ nullable=False, default=7
+ ) # 日期范围(最近 N 天)
created_at: Mapped[datetime] = mapped_column(DateTime, default=_utcnow, nullable=False)
updated_at: Mapped[datetime] = mapped_column(
DateTime, default=_utcnow, onupdate=_utcnow, nullable=False
@@ -423,8 +427,14 @@ class DailyReportConfig(Base):
recipient_emails: Mapped[str] = mapped_column(
String(2048), nullable=False, default="", doc="收件人邮箱列表,逗号分隔"
)
+ cron_expression: Mapped[str] = mapped_column(
+ String(64), nullable=False, default="0 4 * * *", doc="定时任务 cron 表达式(UTC 时间)"
+ )
report_time_utc: Mapped[int] = mapped_column(
- Integer, nullable=False, default=21, doc="发送报告的时间(UTC,0-23)"
+ Integer,
+ nullable=False,
+ default=21,
+ doc="发送报告的时间(UTC,0-23)- 已废弃,使用 cron_expression",
)
include_paper_details: Mapped[bool] = mapped_column(
Boolean, nullable=False, default=True, doc="报告中是否包含论文详情"
diff --git a/scripts/copy_env_from_deploy.sh b/scripts/copy_env_from_deploy.sh
new file mode 100755
index 0000000..b1340c5
--- /dev/null
+++ b/scripts/copy_env_from_deploy.sh
@@ -0,0 +1,88 @@
+#!/bin/bash
+# PaperMind - 从 deploy 目录复制 .env 到根目录
+# @author Color2333
+#
+# 用途:将部署环境的配置文件复制到项目根目录,供本地开发或 Docker 使用
+#
+# 使用方法:
+# ./scripts/copy_env_from_deploy.sh
+
+set -e
+
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
+DEPLOY_DIR="$PROJECT_ROOT/deploy"
+
+echo "========================================"
+echo "PaperMind - 复制 deploy/.env 到根目录"
+echo "========================================"
+echo
+
+# Step 1: 检查 deploy/.env 是否存在
+echo "📋 检查配置文件..."
+if [ ! -f "$DEPLOY_DIR/.env" ]; then
+ echo "❌ 错误:$DEPLOY_DIR/.env 不存在"
+ echo
+ echo "可能的原因:"
+ echo " 1. deploy 目录尚未创建"
+ echo " 2. 配置文件在其他位置"
+ echo
+ echo "解决方案:"
+ echo " - 如果 .env 在其他位置,请手动复制到 deploy/ 目录"
+ echo " - 或者直接修改项目根目录的 .env 文件"
+ echo
+ exit 1
+fi
+
+# Step 2: 检查根目录是否已有 .env
+if [ -f "$PROJECT_ROOT/.env" ]; then
+ echo "⚠️ 根目录已存在 .env 文件"
+ echo
+ read -p "是否覆盖?[y/N] " -n 1 -r
+ echo
+ if [[ ! $REPLY =~ ^[Yy]$ ]]; then
+ echo "已取消操作"
+ exit 0
+ fi
+ # 备份旧配置
+ echo "📦 备份旧配置到 .env.backup..."
+ cp "$PROJECT_ROOT/.env" "$PROJECT_ROOT/.env.backup"
+ echo "✅ 备份完成"
+ echo
+fi
+
+# Step 3: 复制配置文件
+echo "📋 复制 $DEPLOY_DIR/.env → $PROJECT_ROOT/.env..."
+cp "$DEPLOY_DIR/.env" "$PROJECT_ROOT/.env"
+echo "✅ 复制完成"
+echo
+
+# Step 4: 验证配置
+echo "🔍 验证配置文件..."
+if grep -q "ZHIPU_API_KEY=" "$PROJECT_ROOT/.env"; then
+ api_key=$(grep "ZHIPU_API_KEY=" "$PROJECT_ROOT/.env" | cut -d'=' -f2)
+ if [ -n "$api_key" ]; then
+ echo "✅ ZHIPU_API_KEY 已配置"
+ else
+ echo "⚠️ ZHIPU_API_KEY 为空,请编辑 .env 填写"
+ fi
+else
+ echo "⚠️ 未找到 ZHIPU_API_KEY 配置项"
+fi
+echo
+
+# Step 5: 提示
+echo "========================================"
+echo "✅ 完成!"
+echo "========================================"
+echo
+echo "下一步:"
+echo " 1. 检查 .env 配置是否正确"
+echo " 2. 启动服务:"
+echo " - 本地开发:source .venv/bin/activate && uvicorn apps.api.main:app --reload"
+echo " - Docker 部署:docker compose up -d"
+echo
+echo "💡 提示:"
+echo " - 本地开发:DATABASE_URL 使用 sqlite:///./data/papermind.db"
+echo " - Docker 部署:DATABASE_URL 使用 sqlite:////app/data/papermind.db"
+echo
From 97c46d62844e04a56703951cc8dd34074db0ab29 Mon Sep 17 00:00:00 2001
From: Color2333 <1552429809@qq.com>
Date: Thu, 19 Mar 2026 14:33:17 +0800
Subject: [PATCH 03/17] feat(statistics): add topic statistics page with
distribution analysis
- Add topic_stats() and paper_distribution_stats() methods
- Add /topics/stats and /topics/distribution API endpoints
- Create Statistics page with year and source distribution
- Add Statistics route and sidebar entry
- Add roadmap.md for feature planning
---
apps/api/routers/topics.py | 31 +++
frontend/src/App.tsx | 2 +
frontend/src/components/Sidebar.tsx | 2 +
frontend/src/pages/Statistics.tsx | 291 ++++++++++++++++++++++++++++
frontend/src/services/api.ts | 5 +
frontend/src/types/index.ts | 27 +++
packages/storage/repositories.py | 125 +++++++++++-
roadmap.md | 53 +++++
8 files changed, 528 insertions(+), 8 deletions(-)
create mode 100644 frontend/src/pages/Statistics.tsx
create mode 100644 roadmap.md
diff --git a/apps/api/routers/topics.py b/apps/api/routers/topics.py
index 383fd87..b1a2ab9 100644
--- a/apps/api/routers/topics.py
+++ b/apps/api/routers/topics.py
@@ -237,3 +237,34 @@ def ingest_references_status(task_id: str) -> dict:
if not task:
raise HTTPException(404, "Task not found")
return task
+
+
+# ---------- 统计 ----------
+
+
+@router.get("/topics/stats")
+def topic_stats() -> dict:
+ """主题维度统计(30s 缓存)"""
+ from apps.api.deps import cache
+
+ cached = cache.get("topic_stats")
+ if cached is not None:
+ return cached
+ with session_scope() as session:
+ result = PaperRepository(session).topic_stats()
+ cache.set("topic_stats", result, ttl=30)
+ return result
+
+
+@router.get("/topics/distribution")
+def paper_distribution() -> dict:
+ """论文分布统计:年份分布 + 来源分布(30s 缓存)"""
+ from apps.api.deps import cache
+
+ cached = cache.get("paper_distribution")
+ if cached is not None:
+ return cached
+ with session_scope() as session:
+ result = PaperRepository(session).paper_distribution_stats()
+ cache.set("paper_distribution", result, ttl=30)
+ return result
diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx
index 3f74040..d9bc2dd 100644
--- a/frontend/src/App.tsx
+++ b/frontend/src/App.tsx
@@ -25,6 +25,7 @@ const Pipelines = lazy(() => import("@/pages/Pipelines"));
const Operations = lazy(() => import("@/pages/Operations"));
const EmailSettings = lazy(() => import("@/pages/EmailSettings"));
const Writing = lazy(() => import("@/pages/Writing"));
+const Statistics = lazy(() => import("@/pages/Statistics"));
import LoginPage from "@/pages/Login";
import { isAuthenticated as checkAuth, clearAuth } from "@/services/api";
@@ -110,6 +111,7 @@ export default function App() {
}>} />
}>} />
}>} />
+ }>} />
{/* 常见拼写重定向 */}
} />
diff --git a/frontend/src/components/Sidebar.tsx b/frontend/src/components/Sidebar.tsx
index 58d0563..289d333 100644
--- a/frontend/src/components/Sidebar.tsx
+++ b/frontend/src/components/Sidebar.tsx
@@ -28,6 +28,7 @@ import {
Search,
Menu,
X,
+ BarChart3,
PenTool,
Loader2,
LogOut,
@@ -43,6 +44,7 @@ const TOOLS = [
{ to: "/wiki", icon: BookOpen, label: "Wiki", accent: false },
{ to: "/brief", icon: Newspaper, label: "研究简报", accent: false },
{ to: "/dashboard", icon: LayoutDashboard, label: "看板", accent: false },
+ { to: "/statistics", icon: BarChart3, label: "主题统计", accent: false },
];
function useDarkMode() {
diff --git a/frontend/src/pages/Statistics.tsx b/frontend/src/pages/Statistics.tsx
new file mode 100644
index 0000000..604ef61
--- /dev/null
+++ b/frontend/src/pages/Statistics.tsx
@@ -0,0 +1,291 @@
+/**
+ * Statistics - 主题统计分析
+ * @author Color2333
+ */
+import { useEffect, useState } from "react";
+import { topicApi } from "@/services/api";
+import type { TopicStats, TopicStatsResponse, PaperDistributionResponse } from "@/types";
+import {
+ BarChart3,
+ BookOpen,
+ Quote,
+ TrendingUp,
+ Loader2,
+ RefreshCw,
+ Calendar,
+ Globe,
+} from "lucide-react";
+
+const SOURCE_COLORS: Record = {
+ arxiv: "bg-red-500",
+ "semantic_scholar": "bg-blue-500",
+ reference_import: "bg-green-500",
+ unknown: "bg-gray-500",
+};
+
+function TopicCard({ stat }: { stat: TopicStats }) {
+ const total = stat.status_dist.unread + stat.status_dist.skimmed + stat.status_dist.deep_read;
+ const readRate = total > 0 ? ((stat.status_dist.skimmed + stat.status_dist.deep_read) / total * 100).toFixed(0) : 0;
+
+ return (
+
+
+
{stat.topic_name}
+ {stat.paper_count} 篇
+
+
+
+
+
+ 论文
+ {stat.paper_count}
+
+
+
+ 引用
+ {stat.total_citations.toLocaleString()}
+
+
+
+ 活跃度
+ {stat.recent_30d}
+
+
+
+ 阅读率
+ {readRate}%
+
+
+
+
+
+ 阅读进度
+ {readRate}%
+
+
+ {total > 0 && (
+ <>
+
+
+
+ >
+ )}
+
+
+ 精读 {stat.status_dist.deep_read}
+ 粗读 {stat.status_dist.skimmed}
+ 未读 {stat.status_dist.unread}
+
+
+
+ );
+}
+
+function CitationBar({ stat, max }: { stat: TopicStats; max: number }) {
+ return (
+
+
{stat.topic_name}
+
+
{stat.total_citations.toLocaleString()}
+
+ );
+}
+
+function YearDistribution({ data }: { data: PaperDistributionResponse }) {
+ const years = data.by_year.filter(y => y.year !== "未知").sort((a, b) => b.year.localeCompare(a.year));
+ const maxCount = Math.max(...years.map(y => y.count), 1);
+ const total = years.reduce((sum, y) => sum + y.count, 0);
+
+ return (
+
+
+
+
论文年份分布
+ {total} 篇有年份
+
+ {years.length === 0 ? (
+
暂无年份数据
+ ) : (
+
+ {years.slice(0, 10).map((y) => (
+
+
{y.year}
+
+
{y.count}
+
+ ))}
+
+ )}
+
+ );
+}
+
+function SourceDistribution({ data }: { data: PaperDistributionResponse }) {
+ const sources = data.by_source;
+ const total = sources.reduce((sum, s) => sum + s.count, 0);
+
+ return (
+
+
+
+
论文来源分布
+ {total} 篇
+
+ {sources.length === 0 ? (
+
暂无来源数据
+ ) : (
+
+ {sources.map((s) => (
+
+
+
{s.source}
+
{s.count}
+
+ {total > 0 ? ((s.count / total) * 100).toFixed(0) : 0}%
+
+
+ ))}
+
+ )}
+
+ );
+}
+
+export default function Statistics() {
+ const [topicData, setTopicData] = useState(null);
+ const [distData, setDistData] = useState(null);
+ const [loading, setLoading] = useState(true);
+ const [error, setError] = useState(null);
+
+ async function loadData() {
+ setLoading(true);
+ setError(null);
+ try {
+ const [t, d] = await Promise.all([
+ topicApi.stats(),
+ topicApi.distribution(),
+ ]);
+ setTopicData(t);
+ setDistData(d);
+ } catch (err) {
+ setError(err instanceof Error ? err.message : "加载失败");
+ } finally {
+ setLoading(false);
+ }
+ }
+
+ useEffect(() => {
+ loadData();
+ }, []); // eslint-disable-line react-hooks/exhaustive-deps
+
+ if (loading) {
+ return (
+
+
+
+ );
+ }
+
+ if (error) {
+ return (
+
+ );
+ }
+
+ const topics = topicData?.topics ?? [];
+ const totalPapers = topics.reduce((sum, t) => sum + t.paper_count, 0);
+ const totalCitations = topics.reduce((sum, t) => sum + t.total_citations, 0);
+ const totalRecent = topics.reduce((sum, t) => sum + t.recent_30d, 0);
+ const maxCitations = Math.max(...topics.map(t => t.total_citations), 1);
+
+ return (
+
+
+
主题统计
+
+
+
+
+
+
+
{totalCitations.toLocaleString()}
+
总引用数
+
+
+
{totalRecent}
+
30天活跃
+
+
+
+ {distData && (
+
+
+
+
+ )}
+
+ {topics.length > 0 && (
+
+
主题对比
+
+ {topics.map((stat) => (
+
+ ))}
+
+
+ )}
+
+
+
主题详情
+ {topics.length === 0 ? (
+
暂无主题数据
+ ) : (
+
+ {topics.map((stat) => (
+
+ ))}
+
+ )}
+
+
+ );
+}
diff --git a/frontend/src/services/api.ts b/frontend/src/services/api.ts
index 7ea345e..6e0e3e8 100644
--- a/frontend/src/services/api.ts
+++ b/frontend/src/services/api.ts
@@ -38,6 +38,9 @@ import type {
CocitationResponse,
TodaySummary,
FolderStats,
+ TopicStats,
+ TopicStatsResponse,
+ PaperDistributionResponse,
PaperListResponse,
FigureAnalysisItem,
ReferenceImportEntry,
@@ -169,6 +172,8 @@ export const topicApi = {
get(`/topics/${id}/fetch-status`),
suggestKeywords: (description: string) =>
post<{ suggestions: KeywordSuggestion[] }>("/topics/suggest-keywords", { description }),
+ stats: () => get("/topics/stats"),
+ distribution: () => get("/topics/distribution"),
};
/* ========== 论文 ========== */
diff --git a/frontend/src/types/index.ts b/frontend/src/types/index.ts
index 27d1b98..e57dd17 100644
--- a/frontend/src/types/index.ts
+++ b/frontend/src/types/index.ts
@@ -70,6 +70,33 @@ export interface KeywordSuggestion {
reason: string;
}
+export interface TopicStats {
+ topic_id: string;
+ topic_name: string;
+ paper_count: number;
+ total_citations: number;
+ recent_30d: number;
+ status_dist: {
+ unread: number;
+ skimmed: number;
+ deep_read: number;
+ };
+}
+
+export interface TopicStatsResponse {
+ topics: TopicStats[];
+}
+
+export interface PaperDistributionStats {
+ by_year: { year: string; count: number }[];
+ by_source: { source: string; raw_source: string; count: number }[];
+}
+
+export interface PaperDistributionResponse {
+ by_year: { year: string; count: number }[];
+ by_source: { source: string; raw_source: string; count: number }[];
+}
+
/* ========== 抓取任务 ========== */
export interface TopicFetchResult {
topic_id: string;
diff --git a/packages/storage/repositories.py b/packages/storage/repositories.py
index f03ca9f..e5ad59a 100644
--- a/packages/storage/repositories.py
+++ b/packages/storage/repositories.py
@@ -8,7 +8,7 @@
from datetime import UTC, date, datetime, timedelta
from uuid import UUID
-from sqlalchemy import Select, delete, func, select
+from sqlalchemy import Integer, Select, delete, func, select
from sqlalchemy.orm import Session
from packages.domain.enums import ActionType, PipelineStatus, ReadStatus
@@ -229,11 +229,7 @@ def folder_stats(self) -> dict:
# "最近 7 天" 用用户时区的今天 0 点往前推 7 天
user_today_utc = user_today_start_utc()
week_start_utc = user_today_utc - timedelta(days=7)
- recent_q = (
- select(func.count())
- .select_from(Paper)
- .where(Paper.created_at >= week_start_utc)
- )
+ recent_q = select(func.count()).select_from(Paper).where(Paper.created_at >= week_start_utc)
recent_7d = self.session.execute(recent_q).scalar() or 0
# 有主题的论文 ID 集合
@@ -285,6 +281,121 @@ def folder_stats(self) -> dict:
"by_date": by_date,
}
+ def topic_stats(self) -> dict:
+ """
+ 返回主题维度统计:
+ - 每个主题的论文数、总引用数、活跃度(近30天新增)
+ - 每个主题的阅读状态分布
+ """
+ from packages.timezone import user_today_start_utc
+
+ user_today_utc = user_today_start_utc()
+ since_30d = user_today_utc - timedelta(days=30)
+
+ # 按主题聚合统计
+ topic_stats_q = (
+ select(
+ TopicSubscription.id,
+ TopicSubscription.name,
+ func.count(PaperTopic.paper_id).label("paper_count"),
+ )
+ .join(PaperTopic, TopicSubscription.id == PaperTopic.topic_id, isouter=True)
+ .group_by(TopicSubscription.id, TopicSubscription.name)
+ )
+ topic_rows = self.session.execute(topic_stats_q).all()
+
+ result = []
+ for row in topic_rows:
+ topic_id = row.id
+ topic_name = row.name
+ paper_count = row.paper_count or 0
+
+ # 该主题下所有论文的总引用数
+ citation_q = (
+ select(
+ func.coalesce(
+ func.sum(Paper.metadata_json["citation_count"].astext.cast(Integer)), 0
+ )
+ )
+ .join(PaperTopic, Paper.id == PaperTopic.paper_id)
+ .where(PaperTopic.topic_id == topic_id)
+ )
+ total_citations = self.session.execute(citation_q).scalar() or 0
+
+ # 近30天该主题的新增论文数(活跃度)
+ recent_q = (
+ select(func.count())
+ .select_from(Paper)
+ .join(PaperTopic, Paper.id == PaperTopic.paper_id)
+ .where(PaperTopic.topic_id == topic_id)
+ .where(Paper.created_at >= since_30d)
+ )
+ recent_30d = self.session.execute(recent_q).scalar() or 0
+
+ # 该主题下论文的阅读状态分布
+ status_q = (
+ select(Paper.read_status, func.count())
+ .join(PaperTopic, Paper.id == PaperTopic.paper_id)
+ .where(PaperTopic.topic_id == topic_id)
+ .group_by(Paper.read_status)
+ )
+ status_rows = self.session.execute(status_q).all()
+ status_dist = {r[0].value: r[1] for r in status_rows}
+
+ result.append(
+ {
+ "topic_id": topic_id,
+ "topic_name": topic_name,
+ "paper_count": paper_count,
+ "total_citations": total_citations,
+ "recent_30d": recent_30d,
+ "status_dist": {
+ "unread": status_dist.get("unread", 0),
+ "skimmed": status_dist.get("skimmed", 0),
+ "deep_read": status_dist.get("deep_read", 0),
+ },
+ }
+ )
+
+ # 按论文数降序排列
+ result.sort(key=lambda x: x["paper_count"], reverse=True)
+ return {"topics": result}
+
+ def paper_distribution_stats(self) -> dict:
+ """论文分布统计:按发表年份分布 + 按来源分布"""
+ by_year_q = (
+ select(
+ func.coalesce(func.strftime("%Y", Paper.publication_date), "未知").label("year"),
+ func.count().label("count"),
+ )
+ .group_by(func.strftime("%Y", Paper.publication_date))
+ .order_by(func.strftime("%Y", Paper.publication_date).desc())
+ )
+ year_rows = self.session.execute(by_year_q).all()
+ by_year = [{"year": r[0], "count": r[1]} for r in year_rows]
+
+ by_source_q = (
+ select(
+ func.coalesce(Paper.metadata_json["source"].astext, "unknown").label("source"),
+ func.count().label("count"),
+ )
+ .group_by(Paper.metadata_json["source"].astext)
+ .order_by(func.count().desc())
+ )
+ source_rows = self.session.execute(by_source_q).all()
+ source_label: dict[str, str] = {
+ "arxiv": "arXiv",
+ "semantic_scholar": "Semantic Scholar",
+ "reference_import": "参考文献导入",
+ "unknown": "未知来源",
+ }
+ by_source = [
+ {"source": source_label.get(r[0], r[0]), "raw_source": r[0], "count": r[1]}
+ for r in source_rows
+ ]
+
+ return {"by_year": by_year, "by_source": by_source}
+
def list_paginated(
self,
page: int = 1,
@@ -785,7 +896,6 @@ def upsert_topic(
schedule_time_utc: int = 21,
enable_date_filter: bool = False,
date_filter_days: int = 7,
-
) -> TopicSubscription:
found = self.get_by_name(name)
if found:
@@ -1346,5 +1456,4 @@ def cleanup_expired(self, ttl_seconds: int = 1800) -> int:
self.session.flush()
return result.rowcount
-
return config
diff --git a/roadmap.md b/roadmap.md
new file mode 100644
index 0000000..9d2206f
--- /dev/null
+++ b/roadmap.md
@@ -0,0 +1,53 @@
+# PaperMind Roadmap
+
+> 记录功能想法和实践方式
+
+---
+
+## 新想法
+
+### 📊 统计分析功能 (2026-03-19)
+
+**需求**:对论文库数据进行统计分析可视化
+
+**分析维度**:
+- [x] 主题维度统计(论文数、引用数、活跃度)
+- [x] 发表年份分布 ✅
+- [x] 来源分布 ✅
+- [ ] 阅读状态分布
+
+**实现方案**:
+1. 后端新增主题统计 API 接口
+2. 前端新建 Statistics 独立页面
+3. 实现主题维度统计图表组件
+4. 侧边栏添加统计入口
+
+**Todo**:
+- [x] apps/api: 新增主题统计 API 接口
+- [x] frontend: 新建 Statistics 页面
+- [x] frontend: 实现主题维度统计图表组件
+- [x] frontend: 侧边栏添加统计入口
+
+**实现细节**:
+- `packages/storage/repositories.py`: 添加 `topic_stats()` + `paper_distribution_stats()` 方法
+- `apps/api/routers/topics.py`: 添加 `GET /topics/stats` + `GET /topics/distribution` API
+- `frontend/src/pages/Statistics.tsx`: 主题统计 + 年份分布 + 来源分布
+- `frontend/src/components/Sidebar.tsx`: 添加"主题统计"入口
+- `frontend/src/services/api.ts`: 添加 `topicApi.stats()` + `topicApi.distribution()`
+- `frontend/src/types/index.ts`: 添加 `TopicStats` + `PaperDistributionResponse` 类型
+
+---
+
+## 待讨论
+
+### 可选功能方向
+
+| 功能 | 描述 | 优先级 |
+|------|------|--------|
+| 时间维度统计 | 按年份/月份统计论文数量和引用量 | 中 |
+| 阅读状态分布 | 统计已读/未读/收藏比例 | 低 |
+| 导出功能 | 支持导出统计报告为 CSV/PDF | 低 |
+
+---
+
+*最后更新: 2026-03-19*
From 9db0e34b56e6586501ee25064014477c3b964b09 Mon Sep 17 00:00:00 2001
From: Color2333 <1552429809@qq.com>
Date: Thu, 19 Mar 2026 14:40:43 +0800
Subject: [PATCH 04/17] feat(statistics): extend distribution stats with
monthly trend, venue, action source
- Add monthly paper intake trend (12 months)
- Add venue/conference distribution (Top 15)
- Add action source stats (manual/subscription/agent/reference)
- Add read status overview (unread/skimmed/deep_read)
- Update PaperDistributionResponse type and API
---
frontend/src/pages/Statistics.tsx | 170 ++++++++++++++++++++++++++++--
frontend/src/types/index.ts | 4 +
packages/storage/repositories.py | 87 ++++++++++++++-
roadmap.md | 5 +-
4 files changed, 256 insertions(+), 10 deletions(-)
diff --git a/frontend/src/pages/Statistics.tsx b/frontend/src/pages/Statistics.tsx
index 604ef61..346c6b1 100644
--- a/frontend/src/pages/Statistics.tsx
+++ b/frontend/src/pages/Statistics.tsx
@@ -14,13 +14,27 @@ import {
RefreshCw,
Calendar,
Globe,
+ TrendingDown,
+ Activity,
+ Layers,
} from "lucide-react";
+const STATUS_COLORS: Record = {
+ "unread": "bg-muted-foreground/30",
+ "skimmed": "bg-yellow-500",
+ "deep_read": "bg-primary",
+};
+
const SOURCE_COLORS: Record = {
arxiv: "bg-red-500",
"semantic_scholar": "bg-blue-500",
reference_import: "bg-green-500",
unknown: "bg-gray-500",
+ "initial_import": "bg-purple-500",
+ "manual_collect": "bg-orange-500",
+ "auto_collect": "bg-cyan-500",
+ "agent_collect": "bg-pink-500",
+ "subscription_ingest": "bg-indigo-500",
};
function TopicCard({ stat }: { stat: TopicStats }) {
@@ -108,20 +122,19 @@ function CitationBar({ stat, max }: { stat: TopicStats; max: number }) {
function YearDistribution({ data }: { data: PaperDistributionResponse }) {
const years = data.by_year.filter(y => y.year !== "未知").sort((a, b) => b.year.localeCompare(a.year));
const maxCount = Math.max(...years.map(y => y.count), 1);
- const total = years.reduce((sum, y) => sum + y.count, 0);
return (
论文年份分布
- {total} 篇有年份
+ {years.reduce((s, y) => s + y.count, 0)} 篇
{years.length === 0 ? (
暂无年份数据
) : (
- {years.slice(0, 10).map((y) => (
+ {years.slice(0, 8).map((y) => (
{y.year}
@@ -147,7 +160,7 @@ function SourceDistribution({ data }: { data: PaperDistributionResponse }) {
-
论文来源分布
+ 论文来源
{total} 篇
{sources.length === 0 ? (
@@ -170,6 +183,139 @@ function SourceDistribution({ data }: { data: PaperDistributionResponse }) {
);
}
+function MonthlyTrend({ data }: { data: PaperDistributionResponse }) {
+ const months = data.by_month;
+ const maxCount = Math.max(...months.map(m => m.count), 1);
+
+ return (
+
+
+ {months.length === 0 ? (
+
暂无数据
+ ) : (
+
+ {months.map((m) => (
+
+ ))}
+
+ )}
+
+ );
+}
+
+function VenueDistribution({ data }: { data: PaperDistributionResponse }) {
+ const venues = data.by_venue;
+ const maxCount = Math.max(...venues.map(v => v.count), 1);
+
+ return (
+
+
+
+
顶会/期刊分布
+ Top 15
+
+ {venues.length === 0 ? (
+
暂无数据
+ ) : (
+
+ {venues.map((v) => (
+
+
{v.venue}
+
+
{v.count}
+
+ ))}
+
+ )}
+
+ );
+}
+
+function ActionSourceStats({ data }: { data: PaperDistributionResponse }) {
+ const actions = data.by_action_source;
+ const total = actions.reduce((sum, a) => sum + a.count, 0);
+
+ return (
+
+
+
+
入库来源统计
+ {total} 篇
+
+ {actions.length === 0 ? (
+
暂无数据
+ ) : (
+
+ {actions.map((a) => (
+
+
+
{a.source}
+
{a.count}
+
+ {total > 0 ? ((a.count / total) * 100).toFixed(0) : 0}%
+
+
+ ))}
+
+ )}
+
+ );
+}
+
+function ReadStatusOverview({ data }: { data: PaperDistributionResponse }) {
+ const statuses = data.by_status;
+ const total = statuses.reduce((sum, s) => sum + s.count, 0);
+
+ return (
+
+
+
+
阅读状态概览
+ {total} 篇
+
+ {statuses.length === 0 ? (
+
暂无数据
+ ) : (
+ <>
+
+ {statuses.map((s) => (
+
0 ? (s.count / total) * 100 : 0}%` }}
+ />
+ ))}
+
+
+ {statuses.map((s) => (
+
+
+
{s.status}
+
{s.count}
+
+ ))}
+
+ >
+ )}
+
+ );
+}
+
export default function Statistics() {
const [topicData, setTopicData] = useState
(null);
const [distData, setDistData] = useState(null);
@@ -257,10 +403,18 @@ export default function Statistics() {
{distData && (
-
-
-
-
+ <>
+
+
+
+
+
+
+
+ >
)}
{topics.length > 0 && (
diff --git a/frontend/src/types/index.ts b/frontend/src/types/index.ts
index e57dd17..eedbdcc 100644
--- a/frontend/src/types/index.ts
+++ b/frontend/src/types/index.ts
@@ -95,6 +95,10 @@ export interface PaperDistributionStats {
export interface PaperDistributionResponse {
by_year: { year: string; count: number }[];
by_source: { source: string; raw_source: string; count: number }[];
+ by_status: { status: string; raw_status: string; count: number }[];
+ by_month: { month: string; count: number }[];
+ by_venue: { venue: string; count: number }[];
+ by_action_source: { source: string; raw_source: string; count: number }[];
}
/* ========== 抓取任务 ========== */
diff --git a/packages/storage/repositories.py b/packages/storage/repositories.py
index e5ad59a..399e45f 100644
--- a/packages/storage/repositories.py
+++ b/packages/storage/repositories.py
@@ -363,6 +363,8 @@ def topic_stats(self) -> dict:
def paper_distribution_stats(self) -> dict:
"""论文分布统计:按发表年份分布 + 按来源分布"""
+ from packages.timezone import user_today_start_utc
+
by_year_q = (
select(
func.coalesce(func.strftime("%Y", Paper.publication_date), "未知").label("year"),
@@ -394,7 +396,90 @@ def paper_distribution_stats(self) -> dict:
for r in source_rows
]
- return {"by_year": by_year, "by_source": by_source}
+ by_status_q = select(Paper.read_status, func.count()).group_by(Paper.read_status)
+ status_rows = self.session.execute(by_status_q).all()
+ status_label: dict[str, str] = {
+ "unread": "未读",
+ "skimmed": "已粗读",
+ "deep_read": "已精读",
+ }
+ by_status = [
+ {
+ "status": status_label.get(r[0].value, r[0].value),
+ "raw_status": r[0].value,
+ "count": r[1],
+ }
+ for r in status_rows
+ ]
+
+ user_today_utc = user_today_start_utc()
+ by_month_rows: list[dict] = []
+ for i in range(11, -1, -1):
+ month_start = user_today_utc - timedelta(days=30 * i)
+ month_label = month_start.strftime("%Y-%m")
+ month_start_day = month_start.replace(day=1)
+ if month_start.month == 12:
+ month_end = month_start.replace(year=month_start.year + 1, month=1, day=1)
+ else:
+ month_end = month_start.replace(month=month_start.month + 1, day=1)
+ count_q = (
+ select(func.count())
+ .select_from(Paper)
+ .where(
+ Paper.created_at >= month_start_day,
+ Paper.created_at < month_end,
+ )
+ )
+ count = self.session.execute(count_q).scalar() or 0
+ by_month_rows.append({"month": month_label, "count": count})
+
+ by_venue_q = (
+ select(
+ func.coalesce(Paper.metadata_json["venue"].astext, "未知").label("venue"),
+ func.count().label("count"),
+ )
+ .where(Paper.metadata_json["venue"].astext != None)
+ .group_by(Paper.metadata_json["venue"].astext)
+ .order_by(func.count().desc())
+ .limit(15)
+ )
+ venue_rows = self.session.execute(by_venue_q).all()
+ by_venue = [{"venue": r[0], "count": r[1]} for r in venue_rows if r[0]]
+
+ action_source_q = (
+ select(
+ CollectionAction.action_type,
+ func.sum(CollectionAction.paper_count).label("total"),
+ )
+ .group_by(CollectionAction.action_type)
+ .order_by(func.sum(CollectionAction.paper_count).desc())
+ )
+ action_rows = self.session.execute(action_source_q).all()
+ action_label: dict[str, str] = {
+ "initial_import": "初始导入",
+ "manual_collect": "手动收集",
+ "auto_collect": "自动收集",
+ "agent_collect": "Agent收集",
+ "subscription_ingest": "订阅抓取",
+ "reference_import": "参考文献",
+ }
+ by_action_source = [
+ {
+ "source": action_label.get(r[0].value, r[0].value),
+ "raw_source": r[0].value,
+ "count": r[1] or 0,
+ }
+ for r in action_rows
+ ]
+
+ return {
+ "by_year": by_year,
+ "by_source": by_source,
+ "by_status": by_status,
+ "by_month": by_month_rows,
+ "by_venue": by_venue,
+ "by_action_source": by_action_source,
+ }
def list_paginated(
self,
diff --git a/roadmap.md b/roadmap.md
index 9d2206f..1630aa7 100644
--- a/roadmap.md
+++ b/roadmap.md
@@ -14,7 +14,10 @@
- [x] 主题维度统计(论文数、引用数、活跃度)
- [x] 发表年份分布 ✅
- [x] 来源分布 ✅
-- [ ] 阅读状态分布
+- [x] 阅读状态概览 ✅
+- [x] 月度入库趋势 ✅
+- [x] 顶会/期刊分布 ✅
+- [x] 入库来源统计 ✅
**实现方案**:
1. 后端新增主题统计 API 接口
From 601f913df7078f79c76edace85dfea067173da45 Mon Sep 17 00:00:00 2001
From: Color2333 <1552429809@qq.com>
Date: Thu, 19 Mar 2026 14:44:15 +0800
Subject: [PATCH 05/17] fix(statistics): use json_extract instead of astext for
JSON fields
SQLAlchemy 2.0 compatibility fix for metadata_json field access
---
packages/storage/repositories.py | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/packages/storage/repositories.py b/packages/storage/repositories.py
index 399e45f..a73e5d0 100644
--- a/packages/storage/repositories.py
+++ b/packages/storage/repositories.py
@@ -378,10 +378,12 @@ def paper_distribution_stats(self) -> dict:
by_source_q = (
select(
- func.coalesce(Paper.metadata_json["source"].astext, "unknown").label("source"),
+ func.coalesce(func.json_extract(Paper.metadata_json, "$.source"), "unknown").label(
+ "source"
+ ),
func.count().label("count"),
)
- .group_by(Paper.metadata_json["source"].astext)
+ .group_by(func.json_extract(Paper.metadata_json, "$.source"))
.order_by(func.count().desc())
)
source_rows = self.session.execute(by_source_q).all()
@@ -435,11 +437,13 @@ def paper_distribution_stats(self) -> dict:
by_venue_q = (
select(
- func.coalesce(Paper.metadata_json["venue"].astext, "未知").label("venue"),
+ func.coalesce(func.json_extract(Paper.metadata_json, "$.venue"), "未知").label(
+ "venue"
+ ),
func.count().label("count"),
)
- .where(Paper.metadata_json["venue"].astext != None)
- .group_by(Paper.metadata_json["venue"].astext)
+ .where(func.json_extract(Paper.metadata_json, "$.venue") != None)
+ .group_by(func.json_extract(Paper.metadata_json, "$.venue"))
.order_by(func.count().desc())
.limit(15)
)
From 299f7812484fd2f7f1abe707beead783e770da9e Mon Sep 17 00:00:00 2001
From: Color2333 <1552429809@qq.com>
Date: Thu, 19 Mar 2026 15:08:42 +0800
Subject: [PATCH 06/17] fix(statistics): use json_extract for citation_count
and polish UI style
- Fix SQLAlchemy 2.0 compatibility for citation_count in topic_stats
- Redesign UI to match Dashboard style with Hero section and StatCard
- Add grid layouts and proper spacing
- Improve color gradients and hover effects
---
frontend/src/pages/Statistics.tsx | 196 ++++++++++++++++++------------
packages/storage/repositories.py | 7 +-
2 files changed, 125 insertions(+), 78 deletions(-)
diff --git a/frontend/src/pages/Statistics.tsx b/frontend/src/pages/Statistics.tsx
index 346c6b1..62782e3 100644
--- a/frontend/src/pages/Statistics.tsx
+++ b/frontend/src/pages/Statistics.tsx
@@ -37,24 +37,47 @@ const SOURCE_COLORS: Record
= {
"subscription_ingest": "bg-indigo-500",
};
+function StatCard({
+ icon, label, value, sub, color,
+}: {
+ icon: React.ReactNode;
+ label: string;
+ value: string | number;
+ sub?: string;
+ color: "primary" | "info" | "warning" | "success";
+}) {
+ const iconColors = {
+ primary: "text-primary",
+ info: "text-info",
+ warning: "text-warning",
+ success: "text-success",
+ };
+
+ return (
+
+
+
{value}
+
{label}
+ {sub &&
{sub}
}
+
+ );
+}
+
function TopicCard({ stat }: { stat: TopicStats }) {
const total = stat.status_dist.unread + stat.status_dist.skimmed + stat.status_dist.deep_read;
const readRate = total > 0 ? ((stat.status_dist.skimmed + stat.status_dist.deep_read) / total * 100).toFixed(0) : 0;
return (
-
+
-
{stat.topic_name}
- {stat.paper_count} 篇
+ {stat.topic_name}
+ {stat.paper_count} 篇
-
- 论文
- {stat.paper_count}
-
-
引用
{stat.total_citations.toLocaleString()}
@@ -64,17 +87,11 @@ function TopicCard({ stat }: { stat: TopicStats }) {
活跃度
{stat.recent_30d}
-
-
- 阅读率
- {readRate}%
-
- 阅读进度
- {readRate}%
+ 阅读率 {readRate}%
{total > 0 && (
@@ -106,15 +123,15 @@ function TopicCard({ stat }: { stat: TopicStats }) {
function CitationBar({ stat, max }: { stat: TopicStats; max: number }) {
return (
-
-
{stat.topic_name}
-
+
+
{stat.topic_name}
+
-
{stat.total_citations.toLocaleString()}
+
{stat.total_citations.toLocaleString()}
);
}
@@ -124,7 +141,7 @@ function YearDistribution({ data }: { data: PaperDistributionResponse }) {
const maxCount = Math.max(...years.map(y => y.count), 1);
return (
-
+
论文年份分布
@@ -133,17 +150,17 @@ function YearDistribution({ data }: { data: PaperDistributionResponse }) {
{years.length === 0 ? (
暂无年份数据
) : (
-
+
{years.slice(0, 8).map((y) => (
-
{y.year}
+
{y.year}
-
{y.count}
+
{y.count}
))}
@@ -157,7 +174,7 @@ function SourceDistribution({ data }: { data: PaperDistributionResponse }) {
const total = sources.reduce((sum, s) => sum + s.count, 0);
return (
-
+
论文来源
@@ -169,10 +186,10 @@ function SourceDistribution({ data }: { data: PaperDistributionResponse }) {
{sources.map((s) => (
-
-
{s.source}
-
{s.count}
-
+
+ {s.source}
+ {s.count}
+
{total > 0 ? ((s.count / total) * 100).toFixed(0) : 0}%
@@ -188,7 +205,7 @@ function MonthlyTrend({ data }: { data: PaperDistributionResponse }) {
const maxCount = Math.max(...months.map(m => m.count), 1);
return (
-
+
月度入库趋势
@@ -197,12 +214,12 @@ function MonthlyTrend({ data }: { data: PaperDistributionResponse }) {
{months.length === 0 ? (
暂无数据
) : (
-
+
{months.map((m) => (
-
+
@@ -218,26 +235,26 @@ function VenueDistribution({ data }: { data: PaperDistributionResponse }) {
const maxCount = Math.max(...venues.map(v => v.count), 1);
return (
-
+
顶会/期刊分布
- Top 15
+ Top 10
{venues.length === 0 ? (
暂无数据
) : (
-
- {venues.map((v) => (
+
+ {venues.slice(0, 10).map((v) => (
-
{v.venue}
-
+
{v.venue}
+
-
{v.count}
+
{v.count}
))}
@@ -251,7 +268,7 @@ function ActionSourceStats({ data }: { data: PaperDistributionResponse }) {
const total = actions.reduce((sum, a) => sum + a.count, 0);
return (
-
+
入库来源统计
@@ -263,10 +280,10 @@ function ActionSourceStats({ data }: { data: PaperDistributionResponse }) {
{actions.map((a) => (
-
-
{a.source}
-
{a.count}
-
+
+ {a.source}
+ {a.count}
+
{total > 0 ? ((a.count / total) * 100).toFixed(0) : 0}%
@@ -282,7 +299,7 @@ function ReadStatusOverview({ data }: { data: PaperDistributionResponse }) {
const total = statuses.reduce((sum, s) => sum + s.count, 0);
return (
-
+
阅读状态概览
@@ -292,7 +309,7 @@ function ReadStatusOverview({ data }: { data: PaperDistributionResponse }) {
暂无数据
) : (
<>
-
+
{statuses.map((s) => (
{statuses.map((s) => (
-
+
{s.status}
{s.count}
@@ -341,7 +358,7 @@ export default function Statistics() {
useEffect(() => {
loadData();
- }, []); // eslint-disable-line react-hooks/exhaustive-deps
+ }, []);
if (loading) {
return (
@@ -374,42 +391,67 @@ export default function Statistics() {
const maxCitations = Math.max(...topics.map(t => t.total_citations), 1);
return (
-
-
-
主题统计
-
+
+
-
-
-
-
{totalCitations.toLocaleString()}
-
总引用数
-
-
-
{totalRecent}
-
30天活跃
-
+
+ }
+ label="论文总数"
+ value={totalPapers}
+ sub={`${topics.length} 个主题`}
+ color="primary"
+ />
+ }
+ label="总引用数"
+ value={totalCitations.toLocaleString()}
+ color="info"
+ />
+ }
+ label="30天活跃"
+ value={totalRecent}
+ sub="新增论文"
+ color="success"
+ />
+ }
+ label="阅读率"
+ value={totalPapers > 0 ? Math.round(((topics.reduce((sum, t) => sum + t.status_dist.skimmed + t.status_dist.deep_read, 0)) / totalPapers) * 100) : 0}
+ sub="已读论文"
+ color="warning"
+ />
{distData && (
<>
-
+
-
+
@@ -419,8 +461,8 @@ export default function Statistics() {
{topics.length > 0 && (
-
主题对比
-
+
主题对比
+
{topics.map((stat) => (
))}
@@ -429,7 +471,7 @@ export default function Statistics() {
)}
-
主题详情
+
主题详情
{topics.length === 0 ? (
暂无主题数据
) : (
diff --git a/packages/storage/repositories.py b/packages/storage/repositories.py
index a73e5d0..7ab023f 100644
--- a/packages/storage/repositories.py
+++ b/packages/storage/repositories.py
@@ -314,7 +314,12 @@ def topic_stats(self) -> dict:
citation_q = (
select(
func.coalesce(
- func.sum(Paper.metadata_json["citation_count"].astext.cast(Integer)), 0
+ func.sum(
+ func.cast(
+ func.json_extract(Paper.metadata_json, "$.citation_count"), Integer
+ )
+ ),
+ 0,
)
)
.join(PaperTopic, Paper.id == PaperTopic.paper_id)
From afc02ffdf862b31ce43dff000801d9e9eae80016 Mon Sep 17 00:00:00 2001
From: Color2333 <1552429809@qq.com>
Date: Thu, 19 Mar 2026 15:16:43 +0800
Subject: [PATCH 07/17] =?UTF-8?q?feat:=20=E7=BE=8E=E5=8C=96=E7=BB=9F?=
=?UTF-8?q?=E8=AE=A1=E9=A1=B5=E9=9D=A2=E5=9B=BE=E8=A1=A8=E6=A0=B7=E5=BC=8F?=
=?UTF-8?q?=20-=20=E6=B8=90=E5=8F=98=E8=89=B2/=E9=98=B4=E5=BD=B1/=E5=9C=86?=
=?UTF-8?q?=E8=A7=92=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
frontend/src/pages/Statistics.tsx | 250 +++++++++++++++++-------------
1 file changed, 145 insertions(+), 105 deletions(-)
diff --git a/frontend/src/pages/Statistics.tsx b/frontend/src/pages/Statistics.tsx
index 62782e3..abb2061 100644
--- a/frontend/src/pages/Statistics.tsx
+++ b/frontend/src/pages/Statistics.tsx
@@ -20,7 +20,7 @@ import {
} from "lucide-react";
const STATUS_COLORS: Record
= {
- "unread": "bg-muted-foreground/30",
+ "unread": "bg-slate-400",
"skimmed": "bg-yellow-500",
"deep_read": "bg-primary",
};
@@ -37,6 +37,14 @@ const SOURCE_COLORS: Record = {
"subscription_ingest": "bg-indigo-500",
};
+const GRADIENT_COLORS = [
+ "from-indigo-500 to-purple-500",
+ "from-emerald-500 to-teal-500",
+ "from-orange-500 to-amber-500",
+ "from-pink-500 to-rose-500",
+ "from-cyan-500 to-blue-500",
+];
+
function StatCard({
icon, label, value, sub, color,
}: {
@@ -70,34 +78,43 @@ function TopicCard({ stat }: { stat: TopicStats }) {
const readRate = total > 0 ? ((stat.status_dist.skimmed + stat.status_dist.deep_read) / total * 100).toFixed(0) : 0;
return (
-
+
-
{stat.topic_name}
- {stat.paper_count} 篇
+ {stat.topic_name}
+ {stat.paper_count} 篇
-
-
-
-
引用
-
{stat.total_citations.toLocaleString()}
+
+
+
+
+
+
+
{stat.total_citations.toLocaleString()}
+
总引用
+
-
-
-
活跃度
-
{stat.recent_30d}
+
+
+
+
+
+
{stat.recent_30d}
+
30天活跃
+
-
-
-
阅读率 {readRate}%
+
+
+ 阅读进度
+ {readRate}%
-
+
-
-
精读 {stat.status_dist.deep_read}
-
粗读 {stat.status_dist.skimmed}
-
未读 {stat.status_dist.unread}
+
+ 精读 {stat.status_dist.deep_read}
+ 粗读 {stat.status_dist.skimmed}
+ 未读 {stat.status_dist.unread}
);
}
-function CitationBar({ stat, max }: { stat: TopicStats; max: number }) {
+function CitationBar({ stat, max, index }: { stat: TopicStats; max: number; index: number }) {
+ const gradient = GRADIENT_COLORS[index % GRADIENT_COLORS.length];
return (
-
-
{stat.topic_name}
-
+
+
{stat.topic_name}
+
-
{stat.total_citations.toLocaleString()}
+
{stat.total_citations.toLocaleString()}
);
}
@@ -141,26 +159,28 @@ function YearDistribution({ data }: { data: PaperDistributionResponse }) {
const maxCount = Math.max(...years.map(y => y.count), 1);
return (
-
+
-
-
论文年份分布
+
+ 论文年份分布
{years.reduce((s, y) => s + y.count, 0)} 篇
{years.length === 0 ? (
-
暂无年份数据
+
暂无年份数据
) : (
-
- {years.slice(0, 8).map((y) => (
+
+ {years.slice(0, 6).map((y, i) => (
@@ -174,26 +194,32 @@ function SourceDistribution({ data }: { data: PaperDistributionResponse }) {
const total = sources.reduce((sum, s) => sum + s.count, 0);
return (
-
+
-
-
论文来源
+
+ 论文来源
{total} 篇
{sources.length === 0 ? (
-
暂无来源数据
+
暂无来源数据
) : (
-
- {sources.map((s) => (
-
-
-
{s.source}
-
{s.count}
-
- {total > 0 ? ((s.count / total) * 100).toFixed(0) : 0}%
-
-
- ))}
+
+ {sources.map((s) => {
+ const pct = total > 0 ? ((s.count / total) * 100).toFixed(0) : 0;
+ return (
+
+
+
{s.source}
+
+
{pct}%
+
+ );
+ })}
)}
@@ -205,23 +231,23 @@ function MonthlyTrend({ data }: { data: PaperDistributionResponse }) {
const maxCount = Math.max(...months.map(m => m.count), 1);
return (
-
+
-
-
月度入库趋势
+
+
月度入库趋势
近12个月
{months.length === 0 ? (
-
暂无数据
+
暂无数据
) : (
-
- {months.map((m) => (
-
+
+ {months.map((m, i) => (
+
-
{m.month.slice(5)}
+
{m.month.slice(5)}
))}
@@ -235,26 +261,29 @@ function VenueDistribution({ data }: { data: PaperDistributionResponse }) {
const maxCount = Math.max(...venues.map(v => v.count), 1);
return (
-
+
-
-
顶会/期刊分布
- Top 10
+
+ 顶会/期刊分布
+ Top 5
{venues.length === 0 ? (
-
暂无数据
+
暂无数据
) : (
-
- {venues.slice(0, 10).map((v) => (
+
+ {venues.slice(0, 5).map((v, i) => (
-
{v.venue}
-
+
+ {i + 1}
+
+
{v.venue}
+
-
{v.count}
+
{v.count}
))}
@@ -268,26 +297,32 @@ function ActionSourceStats({ data }: { data: PaperDistributionResponse }) {
const total = actions.reduce((sum, a) => sum + a.count, 0);
return (
-
+
-
-
入库来源统计
+
+ 入库来源统计
{total} 篇
{actions.length === 0 ? (
-
暂无数据
+
暂无数据
) : (
-
- {actions.map((a) => (
-
-
-
{a.source}
-
{a.count}
-
- {total > 0 ? ((a.count / total) * 100).toFixed(0) : 0}%
-
-
- ))}
+
+ {actions.map((a) => {
+ const pct = total > 0 ? ((a.count / total) * 100).toFixed(0) : 0;
+ return (
+
+
+
{a.source}
+
+
{pct}%
+
+ );
+ })}
)}
@@ -299,17 +334,17 @@ function ReadStatusOverview({ data }: { data: PaperDistributionResponse }) {
const total = statuses.reduce((sum, s) => sum + s.count, 0);
return (
-
+
-
-
阅读状态概览
+
+ 阅读状态概览
{total} 篇
{statuses.length === 0 ? (
-
暂无数据
+
暂无数据
) : (
<>
-
+
{statuses.map((s) => (
))}
-
+
{statuses.map((s) => (
-
-
-
{s.status}
-
{s.count}
+
+
+
{s.count}
+
+ {total > 0 ? ((s.count / total) * 100).toFixed(0) : 0}%
+
))}
@@ -461,17 +501,17 @@ export default function Statistics() {
{topics.length > 0 && (
-
主题对比
-
- {topics.map((stat) => (
-
+
主题对比
+
+ {topics.map((stat, i) => (
+
))}
)}
-
主题详情
+
主题详情
{topics.length === 0 ? (
暂无主题数据
) : (
From 7e0a7d847eb1cee84018ff8224474724acf90fa6 Mon Sep 17 00:00:00 2001
From: Color2333 <1552429809@qq.com>
Date: Thu, 19 Mar 2026 15:19:55 +0800
Subject: [PATCH 08/17] =?UTF-8?q?fix:=20MonthlyTrend=20=E4=BD=BF=E7=94=A8?=
=?UTF-8?q?=20absolute=20=E5=B8=83=E5=B1=80=E4=BF=AE=E5=A4=8D=E6=9F=B1?=
=?UTF-8?q?=E7=8A=B6=E5=9B=BE=E7=A9=BA=E7=99=BD=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
frontend/src/pages/Statistics.tsx | 36 ++++++++++++++++++++++---------
1 file changed, 26 insertions(+), 10 deletions(-)
diff --git a/frontend/src/pages/Statistics.tsx b/frontend/src/pages/Statistics.tsx
index abb2061..ac37ac8 100644
--- a/frontend/src/pages/Statistics.tsx
+++ b/frontend/src/pages/Statistics.tsx
@@ -240,16 +240,32 @@ function MonthlyTrend({ data }: { data: PaperDistributionResponse }) {
{months.length === 0 ? (
暂无数据
) : (
-
- {months.map((m, i) => (
-
- ))}
+
+
+ {months.map((m, i) => {
+ const heightPct = Math.max((m.count / maxCount) * 100, 4);
+ return (
+
+ );
+ })}
+
+
+ {months.map((m) => (
+
+
+ {m.month.slice(5)}
+
+
+ ))}
+
)}
From bad16eb723f03bd2a35914f29d596b71efdc364d Mon Sep 17 00:00:00 2001
From: Color2333 <1552429809@qq.com>
Date: Thu, 19 Mar 2026 15:30:59 +0800
Subject: [PATCH 09/17] docs: add CS category feed design doc
---
.../2026-03-19-cs-category-feed-design.md | 254 ++++++++++++++++++
1 file changed, 254 insertions(+)
create mode 100644 docs/plans/2026-03-19-cs-category-feed-design.md
diff --git a/docs/plans/2026-03-19-cs-category-feed-design.md b/docs/plans/2026-03-19-cs-category-feed-design.md
new file mode 100644
index 0000000..6543af9
--- /dev/null
+++ b/docs/plans/2026-03-19-cs-category-feed-design.md
@@ -0,0 +1,254 @@
+# CS 分类订阅功能设计
+
+## 概述
+
+新增独立的 CS 分类订阅系统,用户可直接订阅 arXiv CS 下的细分领域(如 cs.CV、cs.LG),系统定时抓取最新论文入库。与现有的关键词主题订阅完全独立,UI 整合在 Topics 页面内通过 Tab 切换。
+
+---
+
+## 数据模型
+
+### CSCategory(arXiv 分类缓存)
+
+```python
+class CSCategory(Base):
+ code: str # "cs.CV"
+ name: str # "Computer Vision and Pattern Recognition"
+ description: str # "Covers image processing, computer vision, pattern recognition etc."
+ cached_at: datetime # 缓存时间,30 天后失效需刷新
+```
+
+来源:启动时从 arXiv API `https://arxiv.org/api/categories` 动态拉取,存入 DB,30 天更新一次。
+
+### CSFeedSubscription(用户订阅记录)
+
+```python
+class CSFeedSubscription(Base):
+ id: UUID
+ category_code: str # "cs.CV"
+ user_id: str | None # 预留,多用户时区分;当前单用户可写死
+ daily_limit: int # 每日配额(篇数)
+ enabled: bool # 是否启用
+ status: str # "active" | "cool_down" | "paused"
+ cool_down_until: datetime # 熔断冷却截止时间
+ last_run_at: datetime | None
+ last_run_count: int # 上次入库数量
+ created_at: datetime
+```
+
+与 `TopicSubscription` 完全独立,不共用表。
+
+---
+
+## 调度服务
+
+### CSFeedOrchestrator
+
+协调所有分类订阅的定时抓取,复用现有 Worker 的 APScheduler 调度框架。
+
+#### 调度策略
+
+- 触发频率:每小时整点执行一次(与主题订阅调度共用 Worker)
+- 全局请求控制:每分钟最多 20 个 arXiv API 请求(token bucket 模式)
+- 请求间隔:每个分类请求之间至少间隔 3 秒
+- 每日配额:用户设的 daily_limit 精确控制,精确到每个分类的每日已入库计数
+
+#### 处理流程
+
+```
+每小时触发 CSFeedOrchestrator.run()
+ ↓
+1. 加载所有 enabled=True 的 CSFeedSubscription
+ ↓
+2. 遍历每个订阅(按 category_code 字母序):
+ ┌─────────────────────────────────────────┐
+ │ 检查 status == "cool_down" │
+ │ → 当前时间 < cool_down_until → 跳过 │
+ ├─────────────────────────────────────────┤
+ │ 计算今日已入库数量 │
+ │ → 今日已入库 >= daily_limit → 跳过 │
+ ├─────────────────────────────────────────┤
+ │ 检查全局 token bucket │
+ │ → 桶已满 → 等到下一分钟或下一小时 │
+ ├─────────────────────────────────────────┤
+ │ 调用 ArxivClient.fetch_latest( │
+ │ query=f"cat:{category_code}", │
+ │ max_results=剩余配额, │
+ │ days_back=7 │
+ │ ) │
+ ├─────────────────────────────────────────┤
+ │ 成功 → upsert → 记录 CollectionAction │
+ │ 触发 429 → status="cool_down", │
+ │ cool_down_until=now+30min │
+ │ 其他错误 → 记录日志,跳过该分类 │
+ └─────────────────────────────────────────┘
+ ↓
+3. 全部处理完 → 记录本次执行摘要日志
+```
+
+#### 熔断机制
+
+- 触发条件:arXiv 返回 429 Too Many Requests
+- 冷却时间:30 分钟(cool_down_until = now + 30min)
+- 恢复条件:冷却时间结束后自动恢复为 "active"
+
+---
+
+## API 设计
+
+### GET /cs-categories
+
+返回 arXiv CS 全部分类列表(供 UI 勾选用)。
+
+```
+Response:
+{
+ "categories": [
+ {
+ "code": "cs.CV",
+ "name": "Computer Vision and Pattern Recognition",
+ "description": "Covers image processing, computer vision, pattern recognition..."
+ },
+ ...
+ ],
+ "updated_at": "2026-03-19T10:00:00Z"
+}
+```
+
+### GET /cs-feeds
+
+返回当前用户的分类订阅列表。
+
+```
+Response:
+{
+ "feeds": [
+ {
+ "id": "uuid",
+ "category_code": "cs.CV",
+ "category_name": "Computer Vision and Pattern Recognition",
+ "daily_limit": 30,
+ "enabled": true,
+ "status": "active",
+ "last_run_at": "2026-03-19T08:00:00Z",
+ "last_run_count": 25
+ }
+ ]
+}
+```
+
+### POST /cs-feeds
+
+批量订阅分类。
+
+```
+Body:
+{
+ "category_codes": ["cs.CV", "cs.LG"],
+ "daily_limit": 50,
+ "enabled": true
+}
+
+Response:
+{
+ "created": 2,
+ "feeds": [...]
+}
+```
+
+### DELETE /cs-feeds/{id}
+
+取消订阅。
+
+### POST /cs-feeds/{id}/trigger
+
+手动触发一次抓取(立即执行,跳过定时)。
+
+---
+
+## 前端 UI
+
+### 页面结构
+
+在 `/topics` 页面内新增 Tab:
+
+```
+[主题订阅] [分类订阅]
+```
+
+### 分类订阅 Tab 布局
+
+```
+┌─────────────────────────────────────────────────────────┐
+│ arXiv CS 分类订阅 │
+│ ───────────────────────────────────────────────────── │
+│ 全局每日配额:[ 50 ] 篇 │
+│ │
+│ ┌─────────────────┐ ┌──────────────────────────────┐ │
+│ │ 分类列表(左侧) │ │ 已订阅列表(右侧) │ │
+│ │ │ │ │ │
+│ │ 🔍 搜索分类 │ │ cs.CV 30篇/天 [x] │ │
+│ │ │ │ cs.LG 50篇/天 [x] │ │
+│ │ ☑ cs.CV (CV) │ │ cs.CL 20篇/天 [x] │ │
+│ │ ☑ cs.LG (LG) │ │ │ │
+│ │ ☐ cs.CL (CL) │ │ 状态: 运行中 / 3个分类 │ │
+│ │ ☐ cs.AI (AI) │ │ │ │
+│ │ ☐ cs.RO (RO) │ │ [保存配置] │ │
+│ │ ... │ │ │ │
+│ └─────────────────┘ └──────────────────────────────┘ │
+└─────────────────────────────────────────────────────────┘
+```
+
+- 左侧:可搜索的分类列表,带复选框
+- 右侧:已勾选的分类 + 各自配额(可编辑)+ 删除按钮
+- 底部:保存配置按钮
+
+### 分类来源
+
+调用 `GET /cs-categories` 获取分类列表,缓存 30 天。
+
+---
+
+## 文件变更
+
+### 后端新增
+
+| 文件 | 说明 |
+|------|------|
+| `packages/storage/models.py` | 新增 `CSCategory`、`CSFeedSubscription` 模型 |
+| `packages/storage/repositories.py` | 新增 `CSFeedRepository` |
+| `packages/integrations/arxiv_client.py` | 新增 `fetch_categories()` 方法 |
+| `packages/ai/cs_feed_orchestrator.py` | 新增 `CSFeedOrchestrator` 调度服务 |
+| `apps/api/routers/cs_feeds.py` | 新增分类订阅 REST API |
+| `apps/worker/main.py` | 注册 `CSFeedOrchestrator` 调度任务 |
+
+### 后端修改
+
+| 文件 | 说明 |
+|------|------|
+| `apps/api/main.py` | 注册 `cs_feeds` router |
+| `packages/storage/repositories.py` | `BaseQuery` 可复用 |
+
+### 前端新增
+
+| 文件 | 说明 |
+|------|------|
+| `frontend/src/pages/CSFeeds.tsx` | 分类订阅 Tab 页面 |
+| `frontend/src/services/api.ts` | 新增 `csFeedApi` |
+
+### 前端修改
+
+| 文件 | 说明 |
+|------|------|
+| `frontend/src/pages/Topics.tsx` | 新增 Tab 切换 + `
` 组件 |
+| `frontend/src/components/Sidebar.tsx` | 如需要可添加分类订阅入口 |
+
+---
+
+## 实现顺序
+
+1. **后端基础** — 数据模型 + 分类获取 + Repository
+2. **后端 API** — REST 接口
+3. **调度服务** — Orchestrator(含限流 + 熔断)
+4. **前端 UI** — Tab + 分类列表 + 订阅管理
+5. **集成测试** — 手动触发 + 观察限流行为
From 7cc22a5905a26986e634d2d9a11faa4962e8a2ca Mon Sep 17 00:00:00 2001
From: Color2333 <1552429809@qq.com>
Date: Thu, 19 Mar 2026 15:33:13 +0800
Subject: [PATCH 10/17] docs: add CS category feed implementation plan
---
...6-03-19-cs-category-feed-implementation.md | 719 ++++++++++++++++++
1 file changed, 719 insertions(+)
create mode 100644 docs/plans/2026-03-19-cs-category-feed-implementation.md
diff --git a/docs/plans/2026-03-19-cs-category-feed-implementation.md b/docs/plans/2026-03-19-cs-category-feed-implementation.md
new file mode 100644
index 0000000..3715915
--- /dev/null
+++ b/docs/plans/2026-03-19-cs-category-feed-implementation.md
@@ -0,0 +1,719 @@
+# CS 分类订阅功能实施计划
+
+> **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.
+
+**Goal:** 新增独立的 arXiv CS 分类订阅系统,用户可订阅分类并控制每日配额,系统自动调度抓取
+
+**Architecture:** 新增 `CSCategory` + `CSFeedSubscription` 数据模型,独立于 TopicSubscription;新增 `CSFeedOrchestrator` 调度服务管理限流和熔断;REST API 挂载在 `/cs-categories` 和 `/cs-feeds`;前端在 Topics 页面内新增 Tab
+
+**Tech Stack:** FastAPI + SQLite + APScheduler + React
+
+---
+
+## Phase 1: 数据模型
+
+### Task 1: 新增 CSCategory 和 CSFeedSubscription 模型
+
+**Files:**
+- Modify: `packages/storage/models.py`
+- Reference: `packages/storage/models.py:189-209` (TopicSubscription 作为参考)
+
+**Step 1: 添加 CSCategory 模型**
+
+在 `models.py` 末尾添加:
+
+```python
+class CSCategory(Base):
+ __tablename__ = "cs_categories"
+
+ code: str = Field(primary_key) # "cs.CV"
+ name: str = Field(nullable=False)
+ description: str = Field(default="")
+ cached_at: datetime = Field(default_factory=datetime.utcnow)
+
+
+class CSFeedSubscription(Base):
+ __tablename__ = "cs_feed_subscriptions"
+
+ id: UUID = Field(default_factory=uuid4, primary_key=True)
+ category_code: str = Field(nullable=False)
+ daily_limit: int = Field(default=30)
+ enabled: bool = Field(default=True)
+ status: str = Field(default="active") # active | cool_down | paused
+ cool_down_until: datetime | None = Field(default=None)
+ last_run_at: datetime | None = Field(default=None)
+ last_run_count: int = Field(default=0)
+ created_at: datetime = Field(default_factory=datetime.utcnow)
+```
+
+**Step 2: 验证模型可导入**
+
+Run: `cd /Users/haojiang/Documents/2026/PaperMind && python -c "from packages.storage.models import CSCategory, CSFeedSubscription; print('OK')"`
+
+---
+
+### Task 2: 新增 CSFeedRepository
+
+**Files:**
+- Modify: `packages/storage/repositories.py`
+- Reference: `packages/storage/repositories.py:964-1062` (TopicRepository 作为参考)
+
+**Step 1: 在 repositories.py 添加 CSFeedRepository**
+
+在文件末尾添加:
+
+```python
+class CSFeedRepository:
+ def __init__(self, session: Session):
+ self.session = session
+
+ def get_categories(self) -> list[CSCategory]:
+ return list(self.session.execute(select(CSCategory)).scalars())
+
+ def upsert_category(self, code: str, name: str, description: str = "") -> CSCategory:
+ existing = self.session.execute(select(CSCategory).where(CSCategory.code == code)).scalar_one_or_none()
+ if existing:
+ existing.name = name
+ existing.description = description
+ existing.cached_at = datetime.utcnow()
+ return existing
+ cat = CSCategory(code=code, name=name, description=description)
+ self.session.add(cat)
+ self.session.commit()
+ return cat
+
+ def get_subscriptions(self) -> list[CSFeedSubscription]:
+ return list(self.session.execute(select(CSFeedSubscription)).scalars())
+
+ def get_subscription(self, category_code: str) -> CSFeedSubscription | None:
+ return self.session.execute(
+ select(CSFeedSubscription).where(CSFeedSubscription.category_code == category_code)
+ ).scalar_one_or_none()
+
+ def upsert_subscription(self, category_code: str, daily_limit: int, enabled: bool = True) -> CSFeedSubscription:
+ existing = self.get_subscription(category_code)
+ if existing:
+ existing.daily_limit = daily_limit
+ existing.enabled = enabled
+ self.session.commit()
+ return existing
+ sub = CSFeedSubscription(category_code=category_code, daily_limit=daily_limit, enabled=enabled)
+ self.session.add(sub)
+ self.session.commit()
+ return sub
+
+ def delete_subscription(self, category_code: str) -> bool:
+ sub = self.get_subscription(category_code)
+ if sub:
+ self.session.delete(sub)
+ self.session.commit()
+ return True
+ return False
+
+ def update_run_status(self, category_code: str, count: int):
+ sub = self.get_subscription(category_code)
+ if sub:
+ sub.last_run_at = datetime.utcnow()
+ sub.last_run_count = count
+ sub.status = "active"
+ self.session.commit()
+
+ def set_cool_down(self, category_code: str, until: datetime):
+ sub = self.get_subscription(category_code)
+ if sub:
+ sub.status = "cool_down"
+ sub.cool_down_until = until
+ self.session.commit()
+
+ def get_active_subscriptions(self) -> list[CSFeedSubscription]:
+ return list(self.session.execute(
+ select(CSFeedSubscription).where(CSFeedSubscription.enabled == True)
+ ).scalars())
+```
+
+**Step 2: 验证 repository 可导入**
+
+Run: `cd /Users/haojiang/Documents/2026/PaperMind && python -c "from packages.storage.repositories import CSFeedRepository; print('OK')"`
+
+---
+
+## Phase 2: arXiv 分类获取
+
+### Task 3: arxiv_client 新增 fetch_categories
+
+**Files:**
+- Modify: `packages/integrations/arxiv_client.py`
+- Reference: `packages/integrations/arxiv_client.py:58-117` (fetch_latest 作为参考)
+
+**Step 1: 添加 fetch_categories 方法**
+
+在 `ArxivClient` 类中添加:
+
+```python
+def fetch_categories(self) -> list[dict]:
+ """从 arXiv API 获取 CS 分类列表"""
+ url = "https://arxiv.org/api/categories"
+ acquire_api("arxiv", timeout=30)
+ response = self.client.get(url, timeout=30)
+ response.raise_for_status()
+ root = ElementTree.fromstring(response.text)
+ categories = []
+ for cat in root.findall("category"):
+ code = cat.find("code").text or ""
+ if code.startswith("cs."):
+ categories.append({
+ "code": code,
+ "name": cat.find("name").text or "",
+ "description": cat.find("description").text or "",
+ })
+ return categories
+```
+
+**Step 2: 验证方法可调用**
+
+Run: `cd /Users/haojiang/Documents/2026/PaperMind && python -c "from packages.integrations.arxiv_client import ArxivClient; print(ArxivClient().fetch_categories()[:3])"`
+
+---
+
+## Phase 3: REST API
+
+### Task 4: 新增 cs_feeds router
+
+**Files:**
+- Create: `apps/api/routers/cs_feeds.py`
+- Reference: `apps/api/routers/topics.py` (作为 API 风格参考)
+
+**Step 1: 编写 API 路由**
+
+```python
+from fastapi import APIRouter, Depends
+from pydantic import BaseModel
+from packages.storage.repositories import CSFeedRepository
+from packages.integrations.arxiv_client import ArxivClient
+
+router = APIRouter(prefix="/cs", tags=["cs-feeds"])
+
+
+class CategoryInfo(BaseModel):
+ code: str
+ name: str
+ description: str
+
+
+class CSFeedItem(BaseModel):
+ category_code: str
+ category_name: str
+ daily_limit: int
+ enabled: bool
+ status: str
+ last_run_at: str | None
+ last_run_count: int
+
+
+class SubscribeRequest(BaseModel):
+ category_codes: list[str]
+ daily_limit: int = 30
+ enabled: bool = True
+
+
+def get_repo():
+ from packages.storage.database import SessionLocal
+ session = SessionLocal()
+ try:
+ yield CSFeedRepository(session)
+ finally:
+ session.close()
+
+
+@router.get("/categories")
+def list_categories(repo: CSFeedRepository = Depends(get_repo)):
+ categories = repo.get_categories()
+ return {"categories": [CategoryInfo.model_validate(c).__dict__ for c in categories]}
+
+
+@router.get("/feeds")
+def list_feeds(repo: CSFeedRepository = Depends(get_repo)):
+ feeds = repo.get_subscriptions()
+ categories = {c.code: c.name for c in repo.get_categories()}
+ return {
+ "feeds": [
+ {
+ "category_code": f.category_code,
+ "category_name": categories.get(f.category_code, f.category_code),
+ "daily_limit": f.daily_limit,
+ "enabled": f.enabled,
+ "status": f.status,
+ "last_run_at": f.last_run_at.isoformat() if f.last_run_at else None,
+ "last_run_count": f.last_run_count,
+ }
+ for f in feeds
+ ]
+ }
+
+
+@router.post("/feeds")
+def subscribe(req: SubscribeRequest, repo: CSFeedRepository = Depends(get_repo)):
+ created = []
+ for code in req.category_codes:
+ sub = repo.upsert_subscription(code, req.daily_limit, req.enabled)
+ created.append({
+ "category_code": sub.category_code,
+ "daily_limit": sub.daily_limit,
+ "enabled": sub.enabled,
+ })
+ return {"created": len(created), "feeds": created}
+
+
+@router.delete("/feeds/{category_code}")
+def unsubscribe(category_code: str, repo: CSFeedRepository = Depends(get_repo)):
+ deleted = repo.delete_subscription(category_code)
+ return {"deleted": deleted}
+```
+
+**Step 2: 注册 router**
+
+Modify `apps/api/main.py`,在 `app.include_router(topics.router)` 后添加:
+
+```python
+from apps.api.routers import cs_feeds
+app.include_router(cs_feeds.router)
+```
+
+---
+
+## Phase 4: 调度服务
+
+### Task 5: 新增 CSFeedOrchestrator
+
+**Files:**
+- Create: `packages/ai/cs_feed_orchestrator.py`
+- Reference: `packages/ai/daily_runner.py:119-287` (run_topic_ingest 作为参考)
+
+**Step 1: 编写 Orchestrator**
+
+```python
+from datetime import datetime, timedelta
+import threading
+import time
+import logging
+
+from packages.integrations.arxiv_client import ArxivClient
+from packages.storage.database import SessionLocal
+from packages.storage.repositories import CSFeedRepository
+
+logger = logging.getLogger(__name__)
+
+TOKEN_BUCKET_SIZE = 20 # 每分钟最多 20 请求
+TOKEN_FILL_RATE = 20 # 每分钟补充 20 个 token
+REQUEST_INTERVAL = 3 # 每请求间隔 3 秒
+COOL_DOWN_MINUTES = 30 # 熔断冷却时间
+
+
+class TokenBucket:
+ def __init__(self, size: int, fill_rate: int):
+ self.size = size
+ self.tokens = size
+ self.fill_rate = fill_rate
+ self.last_refill = time.time()
+ self.lock = threading.Lock()
+
+ def acquire(self, timeout: float = 60) -> bool:
+ while True:
+ with self.lock:
+ self._refill()
+ if self.tokens >= 1:
+ self.tokens -= 1
+ return True
+ if time.time() - self.last_refill > timeout:
+ return False
+ time.sleep(1)
+
+ def _refill(self):
+ now = time.time()
+ elapsed = now - self.last_refill
+ new_tokens = elapsed * (self.fill_rate / 60)
+ self.tokens = min(self.size, self.tokens + new_tokens)
+ self.last_refill = now
+
+
+class CSFeedOrchestrator:
+ def __init__(self):
+ self.bucket = TokenBucket(TOKEN_BUCKET_SIZE, TOKEN_FILL_RATE)
+
+ def sync_categories(self):
+ """从 arXiv 拉取分类并写入 DB"""
+ client = ArxivClient()
+ cats = client.fetch_categories()
+ repo = CSFeedRepository(SessionLocal())
+ for c in cats:
+ repo.upsert_category(c["code"], c["name"], c.get("description", ""))
+ logger.info("[CSFeed] Synced %d categories", len(cats))
+
+ def run(self):
+ """每小时执行一次"""
+ repo = CSFeedRepository(SessionLocal())
+ subs = repo.get_active_subscriptions()
+
+ for sub in subs:
+ now = datetime.utcnow()
+
+ # 冷却中检查
+ if sub.status == "cool_down" and sub.cool_down_until:
+ if now < sub.cool_down_until:
+ logger.info("[CSFeed] Skipping %s (cool down until %s)", sub.category_code, sub.cool_down_until)
+ continue
+
+ # 每日配额检查
+ today_start = now.replace(hour=0, minute=0, second=0, microsecond=0)
+ if sub.last_run_at and sub.last_run_at >= today_start:
+ remaining = sub.daily_limit - sub.last_run_count
+ else:
+ remaining = sub.daily_limit
+
+ if remaining <= 0:
+ logger.info("[CSFeed] Skipping %s (daily limit reached)", sub.category_code)
+ continue
+
+ # 请求间隔
+ if not self.bucket.acquire(timeout=30):
+ logger.warning("[CSFeed] Token bucket timeout, skipping %s", sub.category_code)
+ continue
+ time.sleep(REQUEST_INTERVAL)
+
+ # 抓取
+ try:
+ client = ArxivClient()
+ papers = client.fetch_latest(
+ query=f"cat:{sub.category_code}",
+ max_results=remaining,
+ days_back=7,
+ )
+ # upsert papers (复用现有逻辑)
+ from packages.storage.repositories import PaperRepository
+ paper_repo = PaperRepository(SessionLocal())
+ count = 0
+ for p in papers:
+ paper_repo.upsert_paper(p)
+ count += 1
+
+ repo.update_run_status(sub.category_code, count)
+ logger.info("[CSFeed] %s: ingested %d papers", sub.category_code, count)
+
+ except Exception as e:
+ err_str = str(e)
+ if "429" in err_str or "Too Many Requests" in err_str:
+ repo.set_cool_down(sub.category_code, now + timedelta(minutes=COOL_DOWN_MINUTES))
+ logger.warning("[CSFeed] Rate limited %s, cool down 30min", sub.category_code)
+ else:
+ logger.error("[CSFeed] Error fetching %s: %s", sub.category_code, e)
+```
+
+**Step 2: 注册定时任务**
+
+Modify `apps/worker/main.py`,在 `topic_dispatch_job` 旁边添加:
+
+```python
+from packages.ai.cs_feed_orchestrator import CSFeedOrchestrator
+
+cs_orchestrator = CSFeedOrchestrator()
+
+def cs_feed_dispatch_job():
+ """每小时同步分类 + 执行订阅抓取"""
+ cs_orchestrator.sync_categories()
+ cs_orchestrator.run()
+```
+
+并在 APScheduler 注册:
+
+```python
+scheduler.add_job(cs_feed_dispatch_job, "cron", minute=0, id="cs_feed_dispatch")
+```
+
+---
+
+## Phase 5: 前端 UI
+
+### Task 6: 新增 CSFeeds 前端页面
+
+**Files:**
+- Create: `frontend/src/pages/CSFeeds.tsx`
+- Reference: `frontend/src/pages/Topics.tsx` (作为 UI 风格参考)
+
+**Step 1: 编写 CSFeeds 页面组件**
+
+```tsx
+import { useEffect, useState } from "react";
+import { Loader2, RefreshCw, CheckCircle2, XCircle, Search } from "lucide-react";
+import { topicApi } from "@/services/api";
+
+interface CSCategory {
+ code: string;
+ name: string;
+ description: string;
+}
+
+interface CSFeed {
+ category_code: string;
+ category_name: string;
+ daily_limit: number;
+ enabled: boolean;
+ status: string;
+ last_run_at: string | null;
+ last_run_count: number;
+}
+
+const ARXIV_CS_PREFIXES = [
+ "cs.CV", "cs.LG", "cs.CL", "cs.AI", "cs.NE", "cs.CR", "cs.DB",
+ "cs.DC", "cs.DL", "cs.DM", "cs.DS", "cs.ET", "cs.FL", "cs.GL",
+ "cs.GR", "cs.GT", "cs.HC", "cs.IR", "cs.IT", "cs.LO", "cs.MA",
+ "cs.MM", "cs.MS", "cs.NA", "cs.NI", "cs.OH", "cs.OS", "cs.PL",
+ "cs.RO", "cs.SC", "cs.SD", "cs.SE", "cs.SI", "cs.SY",
+];
+
+export default function CSFeeds() {
+ const [categories, setCategories] = useState
([]);
+ const [feeds, setFeeds] = useState([]);
+ const [loading, setLoading] = useState(true);
+ const [search, setSearch] = useState("");
+ const [globalLimit, setGlobalLimit] = useState(30);
+ const [saving, setSaving] = useState(false);
+
+ async function loadData() {
+ setLoading(true);
+ try {
+ const [catRes, feedRes] = await Promise.all([
+ topicApi.csCategories(),
+ topicApi.csFeeds(),
+ ]);
+ setCategories(catRes.categories || []);
+ setFeeds(feedRes.feeds || []);
+ } finally {
+ setLoading(false);
+ }
+ }
+
+ useEffect(() => { loadData(); }, []);
+
+ const subscribedCodes = new Set(feeds.map(f => f.category_code));
+ const filtered = categories.filter(c =>
+ c.code.toLowerCase().includes(search.toLowerCase()) ||
+ c.name.toLowerCase().includes(search.toLowerCase())
+ );
+
+ async function toggleCategory(code: string) {
+ if (subscribedCodes.has(code)) {
+ await topicApi.csFeedDelete(code);
+ } else {
+ await topicApi.csFeedCreate({ category_codes: [code], daily_limit: globalLimit });
+ }
+ await loadData();
+ }
+
+ if (loading) {
+ return (
+
+
+
+ );
+ }
+
+ return (
+
+
+
arXiv CS 分类订阅
+
订阅 CS 细分领域,自动抓取最新论文
+
+
+
+
+ setGlobalLimit(Number(e.target.value))}
+ className="w-20 rounded-lg border bg-background px-3 py-1.5 text-sm"
+ min={1}
+ max={200}
+ />
+ 篇/分类/天
+
+
+
+
+
+
+
+
已订阅 ({feeds.length} 个分类)
+ {feeds.length === 0 ? (
+
左侧勾选要订阅的分类
+ ) : (
+
+ {feeds.map(f => (
+
+
+
+ {f.category_code}
+
+ {f.status === "active" ? "运行中" : f.status === "cool_down" ? "冷却中" : "已暂停"}
+
+
+
+ 配额 {f.daily_limit}/天 · 上次入库 {f.last_run_count} 篇
+ {f.last_run_at && ` · ${new Date(f.last_run_at).toLocaleDateString()}`}
+
+
+
+
+ ))}
+
+ )}
+
+
+
+ );
+}
+```
+
+**Step 2: 添加 API 方法**
+
+Modify `frontend/src/services/api.ts`,添加:
+
+```ts
+csCategories(): Promise<{ categories: CSCategory[] }>
+csFeeds(): Promise<{ feeds: CSFeed[] }>
+csFeedCreate(req: { category_codes: string[]; daily_limit: number }): Promise
+csFeedDelete(categoryCode: string): Promise
+```
+
+---
+
+### Task 7: Topics 页面添加 Tab 切换
+
+**Files:**
+- Modify: `frontend/src/pages/Topics.tsx`
+
+**Step 1: 在 Topics.tsx 顶部添加 Tab 状态**
+
+```tsx
+const [activeTab, setActiveTab] = useState<"topics" | "cs-feeds">("topics");
+```
+
+**Step 2: 在 Topics 组件 return 的顶部添加 Tab 栏**
+
+在 `` 之前添加:
+
+```tsx
+
+
+
+
+```
+
+**Step 3: 根据 Tab 条件渲染**
+
+把 `return` 的主体用条件包裹:
+
+```tsx
+if (activeTab === "cs-feeds") {
+ return
;
+}
+
+return (
+
+ {/* 原有的 Topics 页面内容 */}
+
+);
+```
+
+**Step 4: 导入 CSFeeds**
+
+在文件顶部添加:
+
+```tsx
+import CSFeeds from "./CSFeeds";
+```
+
+---
+
+## Phase 6: 数据库迁移
+
+### Task 8: 生成并执行数据库迁移
+
+**Step 1: 生成迁移**
+
+Run: `cd /Users/haojiang/Documents/2026/PaperMind/infra && alembic revision --autogenerate -m "add cs_categories and cs_feed_subscriptions"`
+
+**Step 2: 执行迁移**
+
+Run: `cd /Users/haojiang/Documents/2026/PaperMind/infra && alembic upgrade head`
+
+---
+
+## 验证清单
+
+- [ ] `GET /cs/categories` 返回 CS 分类列表
+- [ ] `POST /cs/feeds` 可订阅分类
+- [ ] `GET /cs/feeds` 可查看已订阅列表
+- [ ] `DELETE /cs/feeds/{code}` 可取消订阅
+- [ ] Topics 页面 Tab 切换正常
+- [ ] 分类订阅 Tab 显示分类列表和已订阅状态
+- [ ] 勾选分类后 `topics.csFeedCreate` API 被调用
+- [ ] Worker 每小时整点触发 `cs_feed_dispatch_job`
+- [ ] 触发 429 后分类进入 30 分钟冷却
+- [ ] 每日配额控制生效
From 66c08e68a9830da9d9a5d8492d7d248090d0a6ea Mon Sep 17 00:00:00 2001
From: Color2333 <1552429809@qq.com>
Date: Thu, 19 Mar 2026 16:10:43 +0800
Subject: [PATCH 11/17] feat: add GitHub agent workflow for AI review
---
.github/workflows/opencode.yml | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
create mode 100644 .github/workflows/opencode.yml
diff --git a/.github/workflows/opencode.yml b/.github/workflows/opencode.yml
new file mode 100644
index 0000000..b767381
--- /dev/null
+++ b/.github/workflows/opencode.yml
@@ -0,0 +1,33 @@
+name: opencode
+
+on:
+ issue_comment:
+ types: [created]
+ pull_request_review_comment:
+ types: [created]
+
+jobs:
+ opencode:
+ if: |
+ contains(github.event.comment.body, ' /oc') ||
+ startsWith(github.event.comment.body, '/oc') ||
+ contains(github.event.comment.body, ' /opencode') ||
+ startsWith(github.event.comment.body, '/opencode')
+ runs-on: ubuntu-latest
+ permissions:
+ id-token: write
+ contents: read
+ pull-requests: read
+ issues: read
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v6
+ with:
+ persist-credentials: false
+
+ - name: Run opencode
+ uses: anomalyco/opencode/github@latest
+ env:
+ ALIBABA_CODING_PLAN_API_KEY: ${{ secrets.ALIBABA_CODING_PLAN_API_KEY }}
+ with:
+ model: alibaba-coding-plan-cn/qwen3.5-plus
\ No newline at end of file
From dce5d735510f89cbbb438ef1191ed66ec404962e Mon Sep 17 00:00:00 2001
From: Color2333 <1552429809@qq.com>
Date: Thu, 19 Mar 2026 17:18:46 +0800
Subject: [PATCH 12/17] =?UTF-8?q?feat(cs-feeds):=20=E5=AE=9E=E7=8E=B0=20ar?=
=?UTF-8?q?Xiv=20CS=20=E5=88=86=E7=B1=BB=E8=AE=A2=E9=98=85=E5=8A=9F?=
=?UTF-8?q?=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 后端: CSCategory/CSFeedSubscription 模型, CSFeedRepository, cs_feeds API
- 前端: CSFeeds 页面, Collect 页面 Tab 集成, Papers 分类筛选
- 统计页: SectionCard 风格重构, 月度趋势优化
- 任务管理: GlobalTaskBar 进度展示
- 删除孤立 Topics.tsx 文件
---
apps/api/main.py | 8 +-
apps/api/routers/cs_feeds.py | 178 +++++++
apps/api/routers/papers.py | 13 +-
apps/api/routers/system.py | 2 +-
apps/worker/main.py | 22 +-
frontend/src/pages/CSFeeds.tsx | 238 ++++++++++
frontend/src/pages/Collect.tsx | 68 ++-
frontend/src/pages/Dashboard.tsx | 38 +-
frontend/src/pages/Papers.tsx | 20 +-
frontend/src/pages/Statistics.tsx | 447 +++++++++---------
frontend/src/pages/Topics.tsx | 349 --------------
frontend/src/services/api.ts | 15 +
...2ad8a6ed_add_cs_categories_and_cs_feed_.py | 190 ++++++++
packages/ai/cs_feed_orchestrator.py | 133 ++++++
packages/integrations/arxiv_client.py | 54 ++-
packages/storage/models.py | 29 +-
packages/storage/repositories.py | 137 ++++--
17 files changed, 1319 insertions(+), 622 deletions(-)
create mode 100644 apps/api/routers/cs_feeds.py
create mode 100644 frontend/src/pages/CSFeeds.tsx
delete mode 100644 frontend/src/pages/Topics.tsx
create mode 100644 infra/migrations/versions/b1d72ad8a6ed_add_cs_categories_and_cs_feed_.py
create mode 100644 packages/ai/cs_feed_orchestrator.py
diff --git a/apps/api/main.py b/apps/api/main.py
index f6ee0a8..ea8abc5 100644
--- a/apps/api/main.py
+++ b/apps/api/main.py
@@ -101,6 +101,7 @@ async def dispatch(self, request: Request, call_next):
request.state.user = payload
return await call_next(request)
+
# ---------- 启动时检查认证配置 ----------
settings = get_settings()
@@ -119,6 +120,7 @@ async def dispatch(self, request: Request, call_next):
app.add_middleware(AuthMiddleware)
app.add_middleware(GZipMiddleware, minimum_size=1000) # Starlette 内置跳过 text/event-stream
+
@app.exception_handler(AppError)
async def app_error_handler(_request: Request, exc: AppError):
"""统一处理所有业务异常"""
@@ -150,19 +152,23 @@ async def app_error_handler(_request: Request, exc: AppError):
agent,
auth,
content,
+ cs_feeds,
graph,
jobs,
papers,
pipelines,
- settings as settings_router,
system,
topics,
writing,
)
+from apps.api.routers import (
+ settings as settings_router,
+)
app.include_router(system.router)
app.include_router(papers.router)
app.include_router(topics.router)
+app.include_router(cs_feeds.router)
app.include_router(graph.router)
app.include_router(agent.router)
app.include_router(content.router)
diff --git a/apps/api/routers/cs_feeds.py b/apps/api/routers/cs_feeds.py
new file mode 100644
index 0000000..7fe94bd
--- /dev/null
+++ b/apps/api/routers/cs_feeds.py
@@ -0,0 +1,178 @@
+"""CS 分类订阅 API
+@author Color2333
+"""
+
+import logging
+
+from fastapi import APIRouter, Depends, Query, Request
+
+from packages.domain.task_tracker import global_tracker
+from packages.storage.db import SessionLocal
+from packages.storage.repositories import CSFeedRepository
+
+logger = logging.getLogger(__name__)
+
+router = APIRouter(prefix="/cs", tags=["cs-feeds"])
+
+
+def get_repo():
+ session = SessionLocal()
+ try:
+ yield CSFeedRepository(session)
+ finally:
+ session.close()
+
+
+class CategoryInfo:
+ def __init__(self, code: str, name: str, description: str = ""):
+ self.code = code
+ self.name = name
+ self.description = description
+
+
+class FeedInfo:
+ def __init__(
+ self,
+ category_code: str,
+ category_name: str,
+ daily_limit: int,
+ enabled: bool,
+ status: str,
+ last_run_at: str | None,
+ last_run_count: int,
+ ):
+ self.category_code = category_code
+ self.category_name = category_name
+ self.daily_limit = daily_limit
+ self.enabled = enabled
+ self.status = status
+ self.last_run_at = last_run_at
+ self.last_run_count = last_run_count
+
+
+@router.get("/categories")
+def list_categories(repo: CSFeedRepository = Depends(get_repo)):
+ categories = repo.get_categories()
+ return {
+ "categories": [
+ {"code": c.code, "name": c.name, "description": c.description} for c in categories
+ ]
+ }
+
+
+@router.get("/feeds")
+def list_feeds(repo: CSFeedRepository = Depends(get_repo)):
+ feeds = repo.get_subscriptions()
+ categories = {c.code: c.name for c in repo.get_categories()}
+ return {
+ "feeds": [
+ {
+ "category_code": f.category_code,
+ "category_name": categories.get(f.category_code, f.category_code),
+ "daily_limit": f.daily_limit,
+ "enabled": f.enabled,
+ "status": f.status,
+ "last_run_at": f.last_run_at.isoformat() if f.last_run_at else None,
+ "last_run_count": f.last_run_count,
+ }
+ for f in feeds
+ ]
+ }
+
+
+@router.post("/feeds")
+async def subscribe(
+ repo: CSFeedRepository = Depends(get_repo),
+ category_codes: list[str] | None = Query(default=None, alias="category_codes"),
+ daily_limit: int = Query(default=30, alias="daily_limit"),
+ enabled: bool = Query(default=True, alias="enabled"),
+ request: Request = None,
+):
+ if category_codes is None and request is not None:
+ body = await request.json()
+ category_codes = body.get("category_codes", [])
+ daily_limit = body.get("daily_limit", 30)
+ enabled = body.get("enabled", True)
+ if not category_codes:
+ category_codes = []
+ created = []
+ for code in category_codes:
+ sub = repo.upsert_subscription(code, daily_limit, enabled)
+ created.append(
+ {
+ "category_code": sub.category_code,
+ "daily_limit": sub.daily_limit,
+ "enabled": sub.enabled,
+ }
+ )
+ return {"created": len(created), "feeds": created}
+
+
+@router.delete("/feeds/{category_code}")
+def unsubscribe(category_code: str, repo: CSFeedRepository = Depends(get_repo)):
+ deleted = repo.delete_subscription(category_code)
+ return {"deleted": deleted}
+
+
+@router.patch("/feeds/{category_code}")
+def update_feed(
+ category_code: str,
+ daily_limit: int | None = Query(default=None, alias="daily_limit"),
+ enabled: bool | None = Query(default=None, alias="enabled"),
+ repo: CSFeedRepository = Depends(get_repo),
+):
+ sub = repo.get_subscription(category_code)
+ if not sub:
+ return {"error": "订阅不存在"}
+ if daily_limit is not None:
+ sub.daily_limit = daily_limit
+ if enabled is not None:
+ sub.enabled = enabled
+ repo.session.commit()
+ return {
+ "category_code": sub.category_code,
+ "daily_limit": sub.daily_limit,
+ "enabled": sub.enabled,
+ }
+
+
+@router.post("/feeds/{category_code}/fetch")
+def fetch_category(
+ category_code: str,
+ repo: CSFeedRepository = Depends(get_repo),
+):
+ """手动触发单个分类的论文抓取(后台任务)"""
+ sub = repo.get_subscription(category_code)
+ if not sub:
+ return {"error": "订阅不存在"}
+
+ def _fetch_fn(progress_callback=None):
+ from packages.integrations.arxiv_client import ArxivClient
+ from packages.storage.db import session_scope
+ from packages.storage.repositories import PaperRepository
+
+ client = ArxivClient()
+ papers = client.fetch_latest(
+ query=f"cat:{category_code}",
+ max_results=sub.daily_limit,
+ days_back=7,
+ )
+ count = 0
+ with session_scope() as session:
+ paper_repo = PaperRepository(session)
+ for p in papers:
+ paper_repo.upsert_paper(p)
+ count += 1
+ repo.update_run_status(category_code, count)
+ return {"fetched": count}
+
+ task_id = global_tracker.submit(
+ task_type="cs_feed_fetch",
+ title=f"📥 抓取分类: {category_code}",
+ fn=_fetch_fn,
+ )
+ return {
+ "status": "started",
+ "task_id": task_id,
+ "message": f"「{category_code}」抓取已在后台启动",
+ }
diff --git a/apps/api/routers/papers.py b/apps/api/routers/papers.py
index 47e0285..0dfddb8 100644
--- a/apps/api/routers/papers.py
+++ b/apps/api/routers/papers.py
@@ -42,6 +42,7 @@ def latest(
search: str | None = Query(default=None),
sort_by: str = Query(default="created_at"),
sort_order: str = Query(default="desc"),
+ category: str | None = Query(default=None),
) -> dict:
with session_scope() as session:
repo = PaperRepository(session)
@@ -53,8 +54,11 @@ def latest(
status=status,
date_str=date,
search=search.strip() if search else None,
- sort_by=sort_by if sort_by in ("created_at", "publication_date", "title") else "created_at",
+ sort_by=sort_by
+ if sort_by in ("created_at", "publication_date", "title")
+ else "created_at",
sort_order=sort_order if sort_order in ("asc", "desc") else "desc",
+ category=category,
)
resp = paper_list_response(papers, repo)
resp["total"] = total
@@ -121,9 +125,10 @@ def paper_detail(paper_id: UUID) -> dict:
raise HTTPException(status_code=404, detail=str(exc)) from exc
topic_map = repo.get_topic_names_for_papers([str(p.id)])
# 查询已有分析报告
- from packages.storage.models import AnalysisReport as AR
from sqlalchemy import select as _sel
+ from packages.storage.models import AnalysisReport as AR
+
ar = session.execute(_sel(AR).where(AR.paper_id == str(p.id))).scalar_one_or_none()
skim_data = None
deep_data = None
@@ -277,9 +282,10 @@ def get_paper_figures(paper_id: UUID) -> dict:
@router.get("/papers/{paper_id}/figures/{figure_id}/image")
def get_figure_image(paper_id: UUID, figure_id: str):
"""返回图表原始图片文件"""
+ from sqlalchemy import select
+
from packages.storage.db import session_scope
from packages.storage.models import ImageAnalysis
- from sqlalchemy import select
with session_scope() as session:
row = session.execute(
@@ -305,7 +311,6 @@ def analyze_paper_figures(
max_figures: int = Query(default=10, ge=1, le=30),
) -> dict:
"""提取并解读论文中的图表(异步任务)"""
- from packages.domain.task_tracker import global_tracker
# 先验证论文和 PDF
with session_scope() as session:
diff --git a/apps/api/routers/system.py b/apps/api/routers/system.py
index 5ae520a..4f0da62 100644
--- a/apps/api/routers/system.py
+++ b/apps/api/routers/system.py
@@ -58,6 +58,6 @@ def system_status() -> dict:
@router.get("/metrics/costs")
-def cost_metrics(days: int = Query(default=7, ge=1, le=90)) -> dict:
+def cost_metrics(days: int = Query(default=7, ge=0, le=3650)) -> dict:
with session_scope() as session:
return PromptTraceRepository(session).summarize_costs(days=days)
diff --git a/apps/worker/main.py b/apps/worker/main.py
index 6b8ee25..3f55023 100644
--- a/apps/worker/main.py
+++ b/apps/worker/main.py
@@ -9,13 +9,14 @@
import logging
import signal
import time
-from datetime import datetime, timezone
+from datetime import UTC, datetime
from pathlib import Path
from threading import Event
from apscheduler.schedulers.blocking import BlockingScheduler
from apscheduler.triggers.cron import CronTrigger
+from packages.ai.cs_feed_orchestrator import CSFeedOrchestrator
from packages.ai.daily_runner import (
run_daily_brief,
run_topic_ingest,
@@ -65,6 +66,8 @@ def _retry_with_backoff(fn, *args, max_retries: int = 3, base_delay: float = 5.0
_RETRY_MAX = settings.worker_retry_max
_RETRY_DELAY = settings.worker_retry_base_delay
+cs_orchestrator = CSFeedOrchestrator()
+
def _should_run(freq: str, time_utc: int, hour: int, weekday: int) -> bool:
"""判断当前 UTC 小时是否匹配主题的调度规则"""
@@ -81,7 +84,7 @@ def _should_run(freq: str, time_utc: int, hour: int, weekday: int) -> bool:
def topic_dispatch_job() -> None:
"""每小时执行:检查哪些主题需要在当前小时触发"""
- now = datetime.now(timezone.utc)
+ now = datetime.now(UTC)
hour = now.hour
weekday = now.weekday() # 0=Monday
@@ -159,6 +162,12 @@ def weekly_graph_job() -> None:
_write_heartbeat()
+def cs_feed_dispatch_job():
+ """每小时同步分类 + 执行订阅抓取"""
+ cs_orchestrator.sync_categories()
+ cs_orchestrator.run()
+
+
def run_worker() -> None:
"""
Worker 主函数 - UTC 时间智能调度
@@ -188,6 +197,15 @@ def run_worker() -> None:
)
logger.info("✅ 已添加:主题分发任务(每小时整点,UTC)")
+ # CS 分类订阅调度(每小时整点)
+ scheduler.add_job(
+ cs_feed_dispatch_job,
+ trigger=CronTrigger(minute=0),
+ id="cs_feed_dispatch",
+ replace_existing=True,
+ )
+ logger.info("✅ 已添加:CS分类订阅调度任务(每小时整点,UTC)")
+
# 每日简报(从数据库读取 cron 表达式)
from packages.storage.db import session_scope
from packages.storage.repositories import DailyReportConfigRepository
diff --git a/frontend/src/pages/CSFeeds.tsx b/frontend/src/pages/CSFeeds.tsx
new file mode 100644
index 0000000..11abb28
--- /dev/null
+++ b/frontend/src/pages/CSFeeds.tsx
@@ -0,0 +1,238 @@
+import { useEffect, useState, useCallback } from "react";
+import { Loader2, RefreshCw, Layers, Pencil, Check, X, Play } from "lucide-react";
+import { topicApi } from "@/services/api";
+import { Button } from "@/components/ui";
+
+interface CSCategory {
+ code: string;
+ name: string;
+ description: string;
+}
+
+interface CSFeed {
+ category_code: string;
+ category_name: string;
+ daily_limit: number;
+ enabled: boolean;
+ status: string;
+ last_run_at: string | null;
+ last_run_count: number;
+}
+
+export default function CSFeeds() {
+ const [categories, setCategories] = useState
([]);
+ const [feeds, setFeeds] = useState([]);
+ const [loading, setLoading] = useState(true);
+ const [globalLimit, setGlobalLimit] = useState(30);
+ const [editingCode, setEditingCode] = useState(null);
+ const [editLimit, setEditLimit] = useState(30);
+ const [fetchingCode, setFetchingCode] = useState(null);
+
+ const loadData = useCallback(async () => {
+ setLoading(true);
+ try {
+ const [catRes, feedRes] = await Promise.all([
+ topicApi.csCategories(),
+ topicApi.csFeeds(),
+ ]);
+ setCategories(catRes.categories || []);
+ setFeeds(feedRes.feeds || []);
+ } finally {
+ setLoading(false);
+ }
+ }, []);
+
+ useEffect(() => { loadData(); }, [loadData]);
+
+ const subscribedCodes = new Set(feeds.map(f => f.category_code));
+
+ async function toggleCategory(code: string) {
+ if (subscribedCodes.has(code)) {
+ await topicApi.csFeedDelete(code);
+ } else {
+ await topicApi.csFeedCreate({ category_codes: [code], daily_limit: globalLimit });
+ }
+ await loadData();
+ }
+
+ async function handleFetch(code: string) {
+ setFetchingCode(code);
+ try {
+ await topicApi.csFeedFetch(code);
+ } finally {
+ setFetchingCode(null);
+ }
+ }
+
+ async function updateLimit(code: string, newLimit: number) {
+ await topicApi.csFeedUpdate(code, { daily_limit: newLimit });
+ setEditingCode(null);
+ await loadData();
+ }
+
+ function startEdit(feed: CSFeed) {
+ setEditingCode(feed.category_code);
+ setEditLimit(feed.daily_limit);
+ }
+
+ if (loading) {
+ return (
+
+
+
+ );
+ }
+
+ return (
+
+
+
+
+
arXiv CS 分类订阅
+
订阅感兴趣的 CS 细分领域,自动抓取最新论文
+
+
+ 新增默认配额
+ setGlobalLimit(Number(e.target.value))}
+ className="w-16 h-8 rounded-lg border border-border bg-page px-2 text-sm text-center"
+ min={1}
+ max={200}
+ />
+ 篇/天
+
+
+
+
+
+ 共 {categories.length} 个分类 · 已订阅 {feeds.length} 个
+ } onClick={loadData}>刷新
+
+
+ {categories.map(c => {
+ const subscribed = subscribedCodes.has(c.code);
+ const feed = feeds.find(f => f.category_code === c.code);
+ return (
+
+ );
+ })}
+
+
+
+ {feeds.length > 0 && (
+
+
已订阅分类
+
+ {feeds.map(f => (
+
+
+
+
+
+ {f.category_code}
+
+ {f.status === "active" ? "运行中" : f.status === "cool_down" ? "冷却中" : "已暂停"}
+
+
+
+ {f.last_run_at && `上次 ${new Date(f.last_run_at).toLocaleDateString()} · `}
+ 已入库 {f.last_run_count} 篇
+
+
+
+
+ {editingCode === f.category_code ? (
+ <>
+
setEditLimit(Number(e.target.value))}
+ className="w-16 h-7 rounded-lg border border-border bg-page px-2 text-xs text-center"
+ min={1}
+ max={200}
+ />
+
篇/天
+
+
+ >
+ ) : (
+ <>
+
+
{f.daily_limit} 篇/天
+
+
+ >
+ )}
+
+
+ ))}
+
+
+ )}
+
+ );
+}
diff --git a/frontend/src/pages/Collect.tsx b/frontend/src/pages/Collect.tsx
index a551c8e..8395194 100644
--- a/frontend/src/pages/Collect.tsx
+++ b/frontend/src/pages/Collect.tsx
@@ -31,13 +31,16 @@ import {
Hash,
Zap,
Play,
+ Layers,
} from "lucide-react";
import { ingestApi, topicApi } from "@/services/api";
import { useToast } from "@/contexts/ToastContext";
import ConfirmDialog from "@/components/ConfirmDialog";
import type { Topic, TopicCreate, TopicUpdate, ScheduleFrequency, KeywordSuggestion, IngestPaper, TopicFetchResult } from "@/types";
+import CSFeeds from "./CSFeeds";
type SortBy = "submittedDate" | "relevance" | "lastUpdatedDate";
+type ActiveTab = "search" | "subscriptions" | "csfeeds";
interface SearchResult {
ingested: number;
@@ -79,6 +82,9 @@ export default function Collect() {
const { toast } = useToast();
const navigate = useNavigate();
+ // ========== Tab 切换 ==========
+ const [activeTab, setActiveTab] = useState("search");
+
// ========== 即时搜索 ==========
const [query, setQuery] = useState("");
const [maxResults, setMaxResults] = useState(20);
@@ -255,15 +261,54 @@ export default function Collect() {
{/* 页面头 */}
-
-
-
-
论文收集
-
搜索下载论文 · 创建订阅自动收集 · 随时手动触发抓取
+
+
+
+
+
论文收集
+
搜索下载论文 · 创建订阅自动收集
+
+ {/* Tab 切换 */}
+
+
+
+
+
+
{/* 错误 */}
{error && (
@@ -276,6 +321,7 @@ export default function Collect() {
{/* ================================================================
* 即时搜索区
* ================================================================ */}
+ {activeTab === "search" && (
@@ -320,10 +366,10 @@ export default function Collect() {
{query.trim() && (
)}
@@ -337,10 +383,12 @@ export default function Collect() {
)}
+ )}
{/* ================================================================
* 自动订阅管理
* ================================================================ */}
+ {activeTab === "subscriptions" && (
@@ -467,6 +515,12 @@ export default function Collect() {
)}
+ )}
+
+ {/* ================================================================
+ * 分类订阅
+ * ================================================================ */}
+ {activeTab === "csfeeds" &&
}
(null);
const [loading, setLoading] = useState(true);
const [error, setError] = useState(null);
+ const [costDays, setCostDays] = useState(7);
async function loadData() {
setLoading(true);
@@ -87,7 +88,7 @@ export default function Dashboard() {
try {
const [s, c, r, t] = await Promise.all([
systemApi.status(),
- metricsApi.costs(7),
+ metricsApi.costs(costDays),
pipelineApi.runs(10),
todayApi.summary().catch(() => null),
]);
@@ -102,7 +103,7 @@ export default function Dashboard() {
}
}
- useEffect(() => { loadData(); }, []);
+ useEffect(() => { loadData(); }, [costDays]);
if (loading) return ;
if (error) {
@@ -187,7 +188,7 @@ export default function Dashboard() {
/>
}
- label="7日 Token"
+ label={costDays > 0 ? `${costDays}日 Token` : "历史 Token"}
value={fmtTokens((costs?.input_tokens ?? 0) + (costs?.output_tokens ?? 0))}
sub={`${costs?.calls ?? 0} 次调用`}
color="success"
@@ -199,7 +200,25 @@ export default function Dashboard() {
{/* 左侧:成本分析 + 活动记录 */}
{/* Token 用量分析 */}
-
}>
+
}
+ action={
+
+ {[{ label: "1d", days: 1 }, { label: "7d", days: 7 }, { label: "30d", days: 30 }, { label: "历史", days: 0 }].map(opt => (
+
+ ))}
+
+ }
+ >
{costs && costs.by_stage.length > 0 ? (
{/* 总量概览 */}
@@ -376,12 +395,15 @@ export default function Dashboard() {
/* ========== 子组件 ========== */
-function SectionCard({ title, icon, children }: { title: string; icon: React.ReactNode; children: React.ReactNode }) {
+function SectionCard({ title, icon, action, children }: { title: string; icon: React.ReactNode; action?: React.ReactNode; children: React.ReactNode }) {
return (
-
- {icon}
-
{title}
+
+
+ {icon}
+
{title}
+
+ {action}
{children}
diff --git a/frontend/src/pages/Papers.tsx b/frontend/src/pages/Papers.tsx
index 83bfb79..4e4ba42 100644
--- a/frontend/src/pages/Papers.tsx
+++ b/frontend/src/pages/Papers.tsx
@@ -115,6 +115,8 @@ export default function Papers() {
const [sortBy, setSortBy] = useState("created_at");
const [sortOrder, setSortOrder] = useState<"asc" | "desc">("desc");
const [statusFilter, setStatusFilter] = useState("");
+ const [activeCategory, setActiveCategory] = useState
();
+ const [csFeeds, setCsFeeds] = useState<{ category_code: string; category_name: string }[]>([]);
useEffect(() => {
clearTimeout(searchTimerRef.current);
@@ -174,16 +176,18 @@ export default function Papers() {
status: statusFilter || undefined,
sortBy,
sortOrder,
+ category: activeCategory || undefined,
});
setPapers(res.items);
setTotal(res.total);
setTotalPages(res.total_pages);
setSelected(new Set());
} catch { toast("error", "加载论文列表失败"); } finally { setLoading(false); }
- }, [activeFolder, activeDate, activeActionId, page, pageSize, debouncedSearch, statusFilter, sortBy, sortOrder, toast]);
+ }, [activeFolder, activeDate, activeActionId, page, pageSize, debouncedSearch, statusFilter, sortBy, sortOrder, activeCategory, toast]);
useEffect(() => { loadFolderStats(); }, [loadFolderStats]);
useEffect(() => { loadPapers(); }, [loadPapers]);
+ useEffect(() => { topicApi.csFeeds().then(r => setCsFeeds(r.feeds || [])).catch(() => {}); }, []);
/* 构建文件夹列表 */
const folders = useMemo((): FolderItem[] => {
@@ -555,6 +559,20 @@ export default function Papers() {
{/* 分隔线 */}
+ {/* CS 分类筛选 */}
+ {csFeeds.length > 0 && (
+
+ )}
+
{/* 排序字段 */}