6.1 KiB
6.1 KiB
langgraph-js-starter
0.1.7 — 2026-04-21
Fixed
- Hardened
emit_unknown_tools_noticeandintercept_frontend_toolsagainst OpenAI tool_call invariant violations and prior-stash clobbering. useCopilotActiondeps onsetThemeColorandgetWeather.next lintremoval in Next 16 — replaced with direct ESLint invocation.route.tsLANGSMITH warn now gates on NODE_ENV like DEPLOYMENT_URL.route.tslog prefixes distinguish runtime-construction from dispatch failures.parseInterruptPayloadsingle-return-value, caller-owned log.
Changed
- LICENSE copyright attribution:
2025-2026 CopilotKit(was: individual). - README: fixed broken
pnpm --filterexample in troubleshooting; replaced inlineecho > .envwithcp .env.example .env+ edit; corrected project-structure diagram comment to referencepnpm-workspace.yaml. apps/web/tsconfig.json: dropped dead.next/dev/types/**include.apps/web/.env.example: clarified that LANGSMITH_* vars forward to the agent.- Root
.gitignore: ignoredist/. turbo.json: addstarttask.apps/web/project.json:cache: falseonbuildtarget for Nx parity with package.json.apps/agent/tsconfig.json: setnoEmit: trueso directtscinvocation matches script-driven builds.
0.1.6 — 2026-04-21
Changed
- Added
turbo.jsonat the starter root soturbo run dev/build/lintworks when the starter is extracted standalone (root scripts delegate to turbo; missing config previously broke extraction). - Added
pnpm-workspace.yamlso pnpm v9+ reliably linksworkspace:*deps on standalone extraction; theworkspacesarray in the rootpackage.jsonis not honored by pnpm on its own. - Bumped the agent
tsconfig.jsontargetfromes2016toES2022(with explicitlib: ["ES2022"], no DOM) to match the declared Node 20+ runtime baseline. - Added
buildandlintscripts toapps/agent/package.json(tsc -p tsconfig.json --noEmit— identical to whatproject.jsondeclares) soturbo run build/lintand nx targets agree. - Filled in the empty agent
descriptionandauthorfields. - Added
LANGSMITH_TRACING=true(commented) toapps/web/.env.exampleto match the agent's.env.example. - Added
"baseUrl": "."toapps/web/tsconfig.jsonso the@/*path alias resolves reliably across IDEs and tooling. - Removed Python-specific entries (
venv/,__pycache__/,*.pyc) fromapps/agent/.gitignore— leftovers from a forked Python LangGraph starter; this is a TypeScript project. - Added a copyright year to
LICENSE(MIT convention requires one).
Versioning
- Root,
apps/agent, andapps/weball bumped from0.1.5to0.1.6in lockstep per the starter's shared-version convention.
0.1.5 — 2026-04-17
Renamed
- Renamed directory from
interrupts-langraphtointerrupts-langgraph(spelling fix). The rename itself is code-neutral; hardening described below.
Changed
- Tightened types in the agent graph (no
as any, structural message narrowing) and added an explicitbindToolscapability guard. shouldContinuenow evaluates ALL tool calls on an AIMessage and routes totool_nodewhenever ANY call targets a registered backend tool. Previously a mixed batch (frontend action + backend tool) could silently drop the backend call. Each unknown tool-call name emits its ownconsole.warn; routing then keeps the batch ontool_nodewhen any known backend tool is present (ToolNode will emit an error ToolMessage for unknown tool names; the graph then loops back tochat_nodewith that error in context) and falls through toENDotherwise.- Validated the interrupt payload on the web side via
parseInterruptPayload; malformed payloads now render a cancellation fallback instead of crashing the renderer. Arrays are explicitly rejected (previously passed thetypeof === "object"check and were coerced to theRecordlookup path). - Validated the resumed interrupt value on the agent side via a zod
schema (
ApprovalResumeSchema); an out-of-band Client resuming with the wrong shape now fails loudly at the tool boundary instead of silently branching to "cancelled". deleteProverbon the web side now uses a functionalsetStateupdater so concurrent state writes don't race.- React key for the proverb list is
${index}-${proverb}(index + content composite). Chosen because plainproverbcollides on duplicates and plainindexdestabilizes rows during agent-driven inserts. Migrating the underlying state to{id, text}objects is the proper long-term fix and is deferred. - Removed the unused
starterAgentalias; extracted the model name to aMODELconstant for single-point swaps. - Wrapped
handleRequestwith a structured error response in the web runtime route (apps/web/src/app/api/copilotkit/route.ts), so unhandled exceptions surface as a structured 500 JSON response rather than the raw Next.js error page. - Corrected port references in the README (8125 everywhere).
- Replaced the placeholder Next metadata with a real title/description.
Dependencies
@types/node^20 → ^22.19.11typescript^5 → ^5.9.3zod^3.24.4 → ^3.25.76- Agent
@langchain/langgraph→1.1.5(previously pinned via a rootoverridesentry at1.0.2; the override has been removed and the version is now declared directly onapps/agent/package.json). - Agent
@langchain/core→^1.1.26. - Dropped the dead
@langchain/coreoverride from the starter root; it had no effect inside the monorepo pnpm workspace and would cap the agent's^1.1.26requirement if the starter were extracted. - Removed root
overridesentry for@langchain/langgraph(was1.0.2); the agent owns its own version now.
Versioning
- Sub-app versions synced to the root:
apps/agent0.0.1→0.1.5andapps/web0.1.0→0.1.5. Convention: sub-app versions track the root starter version so changelog entries andpackage.jsonreads stay consistent across the workspace.
0.1.1 – 0.1.4
Internal only (dependency sync / tooling bumps).