From 33643a58b436a3ce3caa79eef9d29fc0e6a1ee6d Mon Sep 17 00:00:00 2001 From: Brian Love Date: Wed, 20 May 2026 09:21:03 -0700 Subject: [PATCH 1/2] debug(langgraph): add console.debug to LangGraphThreadsAdapter.refresh() PR #488 already replaced the silent catch with console.error; that half of the original debug PR is done. This adds the complementary console.debug calls on invoke + resolve so prod inspection can distinguish "never called" from "called but resolved empty" from "called and threw." Targets the demo.threadplane.ai cold-load bug where the sidenav stays empty with no visible signal. After this lands, redeploy + reload the demo + check the console: presence/absence of '[...] invoked' tells us whether the effect even fires. Tighten the log volume if it becomes noisy. Co-Authored-By: Claude Opus 4.7 (1M context) --- libs/langgraph/src/lib/threads/threads-adapter.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/libs/langgraph/src/lib/threads/threads-adapter.ts b/libs/langgraph/src/lib/threads/threads-adapter.ts index d96a95f2..6771c91c 100644 --- a/libs/langgraph/src/lib/threads/threads-adapter.ts +++ b/libs/langgraph/src/lib/threads/threads-adapter.ts @@ -78,10 +78,19 @@ export class LangGraphThreadsAdapter { /** Fetch the latest thread list from the server. Failures are * logged via `console.error` (not swallowed silently — silent - * catches have masked prod issues in the past). */ + * catches have masked prod issues in the past). + * + * Invocation and resolution are logged at `console.debug` so prod + * inspection can distinguish "never called" from "called but + * resolved empty" from "called and threw." This was prompted by a + * demo.threadplane.ai cold-load bug where the sidenav stayed empty + * with no visible signal. Tighten the log volume if it becomes + * noisy. */ async refresh(): Promise { + console.debug('[LangGraphThreadsAdapter.refresh] invoked'); try { const list = await this.client.threads.search({ limit: 50 }); + console.debug('[LangGraphThreadsAdapter.refresh] resolved', list.length); const mapped = list.map((t) => this.toThread(t)); this._threads.set( mapped From 848e568758412a431ee21723954a35bd8d3de603 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 20 May 2026 16:25:06 +0000 Subject: [PATCH 2/2] chore(docs): regenerate api docs --- apps/website/content/docs/agent/api/api-docs.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/website/content/docs/agent/api/api-docs.json b/apps/website/content/docs/agent/api/api-docs.json index 39d960c6..61d9f616 100644 --- a/apps/website/content/docs/agent/api/api-docs.json +++ b/apps/website/content/docs/agent/api/api-docs.json @@ -331,7 +331,7 @@ { "name": "refresh", "signature": "refresh()", - "description": "Fetch the latest thread list from the server. Failures are\n logged via `console.error` (not swallowed silently — silent\n catches have masked prod issues in the past).", + "description": "Fetch the latest thread list from the server. Failures are\n logged via `console.error` (not swallowed silently — silent\n catches have masked prod issues in the past).\n\n Invocation and resolution are logged at `console.debug` so prod\n inspection can distinguish \"never called\" from \"called but\n resolved empty\" from \"called and threw.\" This was prompted by a\n demo.threadplane.ai cold-load bug where the sidenav stayed empty\n with no visible signal. Tighten the log volume if it becomes\n noisy.", "params": [] }, {