Commit Graph
100 Commits
Author SHA1 Message Date
gongzhiyong 2574dd2bbf fix: 旧线程历史加载降级 + 停止状态超时恢复 + 裸来源标注清理
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 15s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 48s
2026-04-15 03:21:38 +08:00
gongzhiyongandClaude Opus 4.6 99b3cda23c fix(P0): 恢复 handleNewThread 立即创建线程,移除 ensureThread 懒创建
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 19s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 49s
根因:ensureThread 异步 setCurrentThreadId 后 React 状态未同步刷新,
useStream 仍绑定 undefined threadId,thread.submit() 提交到错误线程。

修复:
- handleNewThread 恢复为 await client.threads.create()(立即创建)
- doSubmit 直接使用 currentThreadId(已同步可用)
- 移除 ensureThread、skipNextSwitchRef 等懒创建相关逻辑
- 空线程问题后续通过侧边栏过滤解决

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 03:08:25 +08:00
gongzhiyongandClaude Opus 4.6 fd84f07f1d fix(P0): 移除错误的 thread.switchThread 调用,恢复 fixer2 的修复
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 26s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 39s
36e7197 误加回了 thread.switchThread(activeThreadId),覆盖了 96aafce 的正确修复。
switchThread 会清空 thread.messages 导致发消息后跳欢迎屏。
只保留 skipNextSwitchRef 阻止 useEffect 重复触发即可。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 02:56:37 +08:00
gongzhiyongandClaude Opus 4.6 36e7197994 fix(P0): 修复新线程发消息后跳回欢迎屏
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 20s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 38s
根因:ensureThread() 通过 setCurrentThreadId 设置新线程ID,但 React 状态
未同步刷新,useStream 仍绑定 threadId=undefined,导致 submit() 提交到
错误的线程。

修复:在 submit 前手动调 thread.switchThread(activeThreadId),确保
useStream 立即指向新创建的线程。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 02:51:45 +08:00
gongzhiyong 1c82092735 fix(P2): chip hover对比度 + 统一复制按钮 + 统一时间戳
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 22s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 49s
2026-04-15 02:49:54 +08:00
gongzhiyong 96aafcebac fix(P0): 修复发送消息后主区域跳回欢迎屏
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Has been cancelled
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Has been cancelled
2026-04-15 02:49:41 +08:00
gongzhiyongandClaude Opus 4.6 b548ed4f19 fix(P0): prevent thread.switchThread from clearing messages mid-stream
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 30s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 38s
When ensureThread() creates a new thread and calls setCurrentThreadId,
the useEffect fires thread.switchThread() again after doSubmit already
called it — wiping thread.messages mid-stream and showing the welcome
screen instead of AI replies.

Fix: add skipNextSwitchRef. When doSubmit creates a new thread and
manually calls thread.switchThread(), it sets the flag so the
subsequent useEffect is a no-op. Only needed for new threads (when
currentThreadId was null); existing-thread submits don't change
currentThreadId so the useEffect never fires.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 02:48:15 +08:00
gongzhiyongandClaude Opus 4.6 902c8331be fix: lazy thread creation — only create thread on first message send
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 20s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 39s
Previously handleNewThread called client.threads.create() immediately,
leaving empty "新对话" threads in the sidebar when users clicked new
thread but never sent a message (ChatGPT-style behavior).

Now handleNewThread just resets UI state (setCurrentThreadId(null)).
A new ensureThread() helper in useConversation lazily creates the
backend thread only when the user actually submits a message.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 02:46:52 +08:00
gongzhiyongandClaude Opus 4.6 361b576c6c fix: show 历史记录不可用 for cross-session threads that fail to load
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 31s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 39s
Wire threadLoadFailed from useConversation through ChatMessages props.
When a selected thread has no loadable history (expired checkpoint or
cross-deployment), show a contextual unavailable state instead of the
welcome screen so users understand the conversation exists but history
is inaccessible.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 02:41:06 +08:00
gongzhiyongandClaude Sonnet 4.6 7d179f9629 fix(ux): P1 COT leak + P2 scroll/stopped/bare-source fixes
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 27s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 36s
P1: Remove pre-tool content bubble above ToolCallStatus — COT thinking
text was rendering as a standalone white bubble duplicating the
collapsible thinking block inside ToolCallStatus (commit b27424e
regression).

P2-2: Auto-scroll now triggers on both thread.messages and thread.values
so streaming tokens keep the viewport following output.

P2-1: Show "回复已停止" italic hint when last AI message has no content
and is not loading — gives clear feedback after user stops generation.

P2-3: Strip bare source words (工单/知识库/网络/推断) at sentence end
in renderWithSourceBadges to remove trailing unbracketed source labels.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 02:25:02 +08:00
gongzhiyongandClaude Sonnet 4.6 820a40982e fix(P1): load thread state before switching threadId to prevent welcome flash
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 16s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 44s
Previously: setHistoricalMessages([]) + setCurrentThreadId() fired together,
causing a render where both thread.messages (cleared by switchThread) and
historicalMessages were empty → welcome screen shown.

Fix: await loadThreadState() first, then set historicalMessages/ui and
currentThreadId atomically. historicalMessages is populated before the
first render after the switch, so the welcome screen never flashes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 02:01:20 +08:00
gongzhiyongandClaude Sonnet 4.6 23527b3bdc fix(P1): restore historical thread message loading after thread switch
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 20s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 47s
The threadJustSwitched suppression was too aggressive — it cleared
lastMessagesRef on every thread switch, then relied on historicalMessages
which loads async and may still be empty. Historical thread messages
would never appear.

Simplified fix: thread.switchThread() already clears thread.messages
when switching, so thread.messages is always safe to trust directly.
Use thread.messages when non-empty, else fall back to historicalMessages.
Removes threadJustSwitched / lastMessagesRef / lastThreadIdRef entirely.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 01:52:45 +08:00
gongzhiyongandClaude Sonnet 4.6 b27424e3a0 fix(ux): improve interaction feedback and fix pre-tool text rendering
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 17s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 44s
- Show pre-tool plainTextContent above ToolCallStatus (was silently
  dropped when hasThinking=false but plainText exists with tool_calls)
- Pre-tool thinking bubble gets proper bg-muted bubble styling and
  isStreaming=false (thinking is complete once tool calls start)
- handleRegenerate now sets concurrentStatus="generating" for
  consistent status bar feedback on regenerate
- Remove dead setConcurrentStatus prop from ChatInput interface/usage

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 01:51:28 +08:00
gongzhiyongandClaude Opus 4.6 60d131c5d0 fix: 更正 CloudCost API 默认地址为后端 Container App
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 15s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 51s
前端 Static Web App 地址无 API,改为正确的后端地址。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 01:42:40 +08:00
gongzhiyong 36f85eb224 Revert "feat(ui): remove tool selection chips from below input area"
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 15s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 39s
This reverts commit 059ec40845.
2026-04-15 01:33:18 +08:00
gongzhiyongandClaude Sonnet 4.6 059ec40845 feat(ui): remove tool selection chips from below input area
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 20s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 45s
ConfigPanel (model mode + tool group chips) is no longer rendered in
the chat layout. Tool selection was surfaced below the input after the
previous refactor but users found it visually noisy. activeTools still
drives tool filtering on submit; UI selection can be re-exposed later
via a dedicated settings entry point.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 01:31:47 +08:00
gongzhiyongandClaude Opus 4.6 53f6b99467 fix(ui): 删除默认页输入框下方的快捷按钮
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 14s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 49s
用户反馈输入框下方的工具快捷按钮(搜索知识库/查看最新工单等)很丑,直接移除。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 01:30:35 +08:00
gongzhiyongandClaude Sonnet 4.6 b59f672033 feat(ui): replace collapsible config summary bar with always-visible tool chips
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 14s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 46s
Remove the "Auto · 云费用 1" summary toggle button that occupied a
dedicated line below the textarea. Model mode and tool group chips are
now displayed inline and always visible, eliminating the redundant
status row while keeping all selection controls accessible.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 01:29:31 +08:00
gongzhiyongandClaude Sonnet 4.6 3d723e5705 feat(ui): remove redundant tool status hint line below input
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 19s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 39s
The "可分析工单、查知识库" / "已启用 X 个工具" hint paragraph
below the textarea was redundant — ConfigPanel already shows the
active tool count in its summary button. Removed the <p> block and
the now-unused activeTools destructuring in ChatInput.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 01:25:03 +08:00
gongzhiyongandClaude Sonnet 4.6 0908e983fb fix(ui): P0 线程切换时调用 switchThread 彻底清除 error 状态
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 38s
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 45s
useStream 的 error 跨线程持久化,切换 threadId 时不自动重置。
useEffect 监听 currentThreadId 变化,调用 thread.switchThread()
清除 error、messages 等所有旧状态,从根本上解决切换线程后
红色错误横幅残留问题。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 01:18:16 +08:00
gongzhiyongandClaude Sonnet 4.6 dc7d443b19 fix(ui): ConfigPanel 展开时隐藏快捷按钮,消除视觉重复
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 20s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 43s
工具面板(ConfigPanel)和快捷按钮(QUICK_PROMPTS)功能高度重叠,
同时展示造成"重复"感。ConfigPanel 展开时将 showQuickPrompts 设为 false,
收起时恢复显示,两套入口不再同时出现。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 01:08:53 +08:00
gongzhiyongandClaude Sonnet 4.6 671e708bb5 fix(ui): P0 切换空线程不显示错误横幅
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 35s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 37s
thread.error 在 useStream 切换 threadId 时不会自动清除,
导致切换到空新对话时残留旧线程的 error 触发红色错误横幅。
修复:activeMessages.length === 0 时抑制错误横幅,
空线程不可能有工具执行异常,无需展示该提示。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 01:05:14 +08:00
gongzhiyongandClaude Sonnet 4.6 ac1eaf63c3 fix(ui): P1-1 彻底修复线程切换竞态 — 抑制 useStream 旧数据
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 17s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 57s
useStream 在 threadId 变更后仍有一个渲染周期保留旧线程的 messages。
新增 threadJustSwitched 标记,切换时忽略 thread.messages,强制走
historicalMessages(新线程为空),保证欢迎页必然显示。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 00:59:38 +08:00
gongzhiyongandClaude Sonnet 4.6 c610e23931 fix(ui): P1-1 线程切换残留内容 + P2-5 列表项来源标注渲染
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 15s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 46s
- main.tsx: 切换 threadId 时清空 lastMessagesRef,避免空对话显示上一条对话内容
- MessageBubble.tsx: li 元素增加 renderWithSourceBadges,[工单][知识库] 等标注在列表项中也渲染为彩色 badge

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 00:55:02 +08:00
gongzhiyongandClaude Sonnet 4.6 31bddf4fcd fix(ui): 优化首屏欢迎区域和快捷按钮布局
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 24s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 50s
- ChatMessages: 空状态增加品牌图标+大标题,视觉层次更清晰
- ChatInput: 快捷按钮去除 max-w-sm 限制,改为全宽 2列布局,圆角统一为 rounded-xl

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 00:49:10 +08:00
gongzhiyongandClaude Sonnet 4.6 c4323cad1c feat: 前端添加 CloudCost 工具选择和工具状态映射
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 28s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 39s
- TOOL_GROUPS 添加云费用工具组(DollarSign 图标)
- TOOL_TO_UI 添加 cloudcost_* → cost-result 映射
- QUICK_PROMPTS 添加查询云费用快捷入口
- ToolCallStatus UI_NAME_MAP 添加 cloudcost 工具映射

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-14 03:39:24 +08:00
gongzhiyongandClaude Sonnet 4.6 a6ae0ef5eb feat: 集成 CloudCost 云管系统作为运营大脑数据源
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 26s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 42s
- 新增 cloudcost-client.ts:5 个 API 函数(dashboard/metering/detail/alerts/accounts)
- config.ts 添加 cloudcost.apiBase(默认 orange-wave-09002e800.7.azurestaticapps.net)
- toolConfig.ts 添加 cloudcost_* 超时/重试配置
- CLAUDE.md 更新架构图和 env var 文档

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-14 03:35:25 +08:00
gongzhiyongandClaude Sonnet 4.6 d93bb5966c feat(enterprise): add CloudCost cloud cost management tools (5 tools)
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 17s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 43s
Add cloudcost_dashboard, cloudcost_metering, cloudcost_detail, cloudcost_alerts,
and cloudcost_accounts tools to the enterprise agent with full Gen-UI card support.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-14 03:29:47 +08:00
gongzhiyongandClaude Sonnet 4.6 5c3e6f18e2 feat: add CostResult Gen-UI card component with 5 display modes
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 13s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 47s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-14 03:19:30 +08:00
gongzhiyong ad4f832524 chore: add .omc to .gitignore and update deploy command in CLAUDE.md
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 12s
2026-04-14 02:47:07 +08:00
gongzhiyong 29e77c2b6a fix: resolve TypeScript errors in main.tsx and MessageBubble
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 21s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 40s
2026-04-14 02:43:55 +08:00
gongzhiyongandClaude Haiku 4.5 aec776e60c refactor: extract utility modules from main.tsx
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 22s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 11m20s
- Split 1504-line monolithic main.tsx into 5 utility modules:
  - src/utils/tool-maps.ts (TOOL_GROUPS, TOOL_TO_UI, MODEL_OPTIONS, QUICK_PROMPTS)
  - src/utils/input-handling.ts (keyboard shortcuts, textarea, event listeners)
  - src/utils/thread-management.ts (deduplication, thread helpers)
  - src/utils/message-rendering.ts (tool call extraction, UI matching)
  - src/utils/api-client.ts (LangGraph API client operations)
- Add missing deps: unist-util-visit, hast
- Update agent model configs (opus for backend, haiku for tester)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-04-14 02:18:28 +08:00
gongzhiyongandClaude Opus 4.6 179aab55f0 fix: show full AI reply by default instead of collapsed summary
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 18s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 47s
- Change summaryExpanded default from false to true
- Long replies (>800 chars) now display full text immediately
- Users can still collapse with "收起" button if needed

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 01:31:02 +08:00
gongzhiyongandClaude Opus 4.6 eb200cbdfd fix: feedback buttons always visible, thread title update for untitled threads
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 30s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 34s
- Remove opacity-0 group-hover from ThumbsUp/ThumbsDown buttons — always visible
- Fix thread title: update title whenever currentTitle is empty, not just first message

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 01:29:27 +08:00
gongzhiyongandClaude Opus 4.6 d53655c180 fix: card occlusion by input bar, thread title update for existing threads
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 17s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 43s
- Add h-32 spacer before bottomRef to prevent last card from being hidden behind input bar
- Fix thread title not updating: check existing title instead of only first message

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 01:11:47 +08:00
gongzhiyongandClaude Opus 4.6 182f6e358c feat: interaction upgrades — feedback buttons, export, shortcuts, input unlock
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 34s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 36s
- Add ThumbsUp/ThumbsDown feedback buttons on AI messages (hover reveal)
- Add ExportButton to export conversation as Markdown file
- Add global keyboard shortcuts: Ctrl+Shift+O (new thread), Ctrl+Shift+S (sidebar), / (focus input), Esc (stop)
- Unlock textarea during AI generation (remove disabled={thread.isLoading})
- Smart title truncation at word/punctuation boundary (30 chars)
- Show tool inputSummary in ToolCallStatus execution log

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 01:07:43 +08:00
gongzhiyongandClaude Opus 4.6 244a6d4a1f feat: next-gen COT system — streaming reasoning, structured thinking, timeline UI
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 20s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 39s
- Expand COT prompts from 30-char to 80-200 char structured reasoning (all 4 agents)
- Add source/meta fields to thinking blocks (inject-thinking.ts)
- Add invokeWithReasoningStream() for Pro mode streaming reasoning (create-llm.ts)
- Add writer agent injectThinking + stripThinkingBlocks support
- Frontend: Brain pulse animation, real-time timer, tool summary on collapse
- Frontend: Markdown rendering for reasoning source, plain text for prompt source
- Frontend: Timeline layout with connector dots for multi-tool calls (ToolCallStatus)
- Fix main.tsx isStreaming passthrough for thinking messages

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 00:20:20 +08:00
gongzhiyongandClaude Opus 4.6 ffdb88677b fix: prevent checkpoint pollution + add reset thread button
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 28s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 36s
- Add checkpoint guard in all 4 tool-executors ensuring every
  tool_call_id gets a ToolMessage response
- Add cleanPollutedToolCalls utility to heal corrupted message history
- Add error banner with "重置此对话" button in frontend

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 01:16:11 +08:00
gongzhiyongandClaude Opus 4.6 bd7f227b11 fix: add Jina X-Timeout header + ensure webRead always throws Error instances
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 28s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 36s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 00:49:58 +08:00
gongzhiyongandClaude Sonnet 4.6 51bf279ac6 fix: sequential tool calls + standalone search-result cards
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 23s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 40s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 00:34:49 +08:00
gongzhiyongandClaude Sonnet 4.6 5f9d05135d fix(searcher): remove card_id from search-result ui.push props
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 28s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 38s
SearchResultProps does not declare a card_id field, so passing it caused
TS2769 type errors. search-result cards do not need loading→done dedup
(each google_search/web_search_deep call produces a complete result in one
push), so the card_id and associated local variables are unnecessary.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 00:28:04 +08:00
gongzhiyongandClaude Sonnet 4.6 2830024cb9 fix: add card_id to google_search and web_search_deep ui.push for precise matching
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 20s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 40s
Each search result card now carries a unique card_id containing the tool call id
(e.g. google-search-<tc.id>), enabling the ToolCallStatus exact-match logic to
correctly bind cards to their originating tool call without index-based offset errors.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 00:26:49 +08:00
gongzhiyongandClaude Sonnet 4.6 869d3d54f9 fix(searcher): disable parallel tool calls and remove stale card_id from search-result props
- Add parallel_tool_calls: false to searcher agentNode bindTools call so the
  LLM is forced to execute search tools one at a time (google_search first,
  then web_read in a separate turn); prompt-level "strict禁止" alone cannot
  override model-side parallel tool calling behaviour
- Remove card_id field from google_search and web_search_deep ui.push props;
  SearchResultProps does not declare card_id so the field caused TS2769
  overload errors; these cards do not need deduplication (each search is a
  distinct query), while the card_id variables were introduced by a previous
  commit and are now unused
- Clean up unused googleCardId and deepCardId local variables

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 00:26:24 +08:00
gongzhiyongandClaude Sonnet 4.6 87d1a5f937 fix: resolve web-read-progress skeleton screen and search-result card disappearing
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 28s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 38s
- Add web_read -> web-read-progress mapping to standaloneUiItems filter in main.tsx
  so web-read-progress cards are no longer mistakenly treated as standalone
- Add web-read-progress to CARD_TYPE_PRIORITY (550) to ensure stable sort order
  and prevent search-result cards (500) from being reordered relative to web-read cards
- Add unique card_id (containing tc.id) to google_search and web_search_deep ui.push
  calls so each search result card can be precisely identified
- Improve uiItem matching in ToolCallStatus to first try exact match via card_id
  containing tc.id, falling back to index-based matching only when necessary;
  this prevents index offset bugs when multiple same-type tools run concurrently

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 00:24:50 +08:00
gongzhiyongandClaude Opus 4.6 9cf6293198 fix: use Promise.allSettled to prevent missing ToolMessage responses
Trigger auto deployment for soc-langgraph / build-and-deploy (push) Failing after 39s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 47s
When LLM sends multiple parallel tool_calls but one throws unexpectedly,
Promise.all loses all results causing 400 error from OpenAI.
Promise.allSettled ensures every tool_call_id gets a response.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 00:20:57 +08:00
gongzhiyongandClaude Opus 4.6 e3147231a6 chore: remove manual deploy workflow, use Azure native CD
Azure Container App auto-deploy workflow replaces our manual
deploy-langgraph.yml. CD is now managed via Azure Portal.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 00:00:14 +08:00
gongzhiyongandClaude Opus 4.6 ac16f38821 docs: update all agent md files with latest architecture
- Container App URLs (not Web App)
- ACR in AuthData resource group
- 5 sub-agents (enterprise/searcher/coder/writer/generalInput)
- New components (web-read-progress, force-summary)
- Logs unified to AuthData/LoGSOC + SOC

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 23:49:16 +08:00
gongzhiyongandClaude Opus 4.6 257a4412aa fix: increase web_read timeout from 8s to 30s with retry
Deploy LangGraph Server to Azure Container App / build-and-deploy (push) Failing after 27s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 42s
8s timeout caused Jina Reader failures on slower sites like news.cn.
Increased to 30s with 2 retries and 1s backoff.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 23:38:36 +08:00
gongzhiyongandClaude Opus 4.6 2b614ddef2 fix(ci): ACR resource group is AuthData not Operation
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 23:36:20 +08:00
gongzhiyongandClaude Opus 4.6 d8b989f681 fix: add ErrorBoundary around Gen-UI cards to prevent black screen
Deploy LangGraph Server to Azure Container App / build-and-deploy (push) Failing after 14s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 52s
Wraps all LoadExternalComponent usages with CardErrorBoundary so
card rendering errors show an inline error message instead of
crashing the entire app.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 23:34:08 +08:00
gongzhiyongandClaude Opus 4.6 4267d0a62a feat(ui): default expand tool call results and execution log
Deploy LangGraph Server to Azure Container App / build-and-deploy (push) Failing after 22s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 51s
Tool call status cards and execution log panel now expand by default
so users can see CoT process and results without clicking.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 23:29:08 +08:00
gongzhiyongandClaude Sonnet 4.6 3ef9624385 chore: migrate backend from Azure Web App to Container App
Deploy LangGraph Server to Azure Container App / build-and-deploy (push) Failing after 27s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 37s
- Replace soc-langgraph Web App with Azure Container App (soc-cae environment)
- New URL: soc-langgraph.victorioussand-69befc84.southeastasia.azurecontainerapps.io
- Update deploy-langgraph.yml: Web App restart -> az containerapp update --image
- Update deploy-langgraph-ui.yml: VITE_LANGGRAPH_URL to Container App URL
- Container App: min 1 replica, max 3, CPU 1.0, Memory 2Gi, port 8080
- Update CLAUDE.md architecture and deployment docs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-12 22:58:44 +08:00
gongzhiyongandClaude Opus 4.6 48c9e0c854 fix: revert to langgraphjs dev mode to restore Azure service
server.ts production mode crashes on startup (exit code 1).
Revert to langgraphjs dev until startServer() compatibility is resolved.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 22:51:02 +08:00
gongzhiyongandClaude Sonnet 4.6 0dd9216720 fix: add @langchain/langgraph-api as direct dependency for production mode
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 27s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 40s
server.ts uses createRequire to resolve @langchain/langgraph-api at startup.
With pnpm, indirect dependencies are not hoisted to node_modules/@langchain/,
causing "Cannot find module" error and container exit code 1 on Azure.

Adding it as an explicit dependency ensures pnpm creates the direct symlink.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-12 22:41:58 +08:00
gongzhiyongandClaude Opus 4.6 0d97298b6a feat: web-read-progress Gen-UI card + production mode + security fixes
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 13s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 51s
- Add web-read-progress Gen-UI card for real-time web reading feedback
- Searcher tool-executor pushes loading→complete cards during web_read
- ToolCallStatus supports expanding during loading state
- Switch from langgraphjs dev to production mode (server.ts)
- Add Hono middleware to strip sensitive request headers
- Bundle splitting via Vite manualChunks (1.85MB → 8 chunks)
- SPA fallback via staticwebapp.config.json
- Agent model configs updated (sonnet 1M → standard sonnet)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 22:18:05 +08:00
gongzhiyongandClaude Sonnet 4.6 5503a7ca9d fix: add web_search_deep to UI_NAME_MAP in ToolCallStatus and main.tsx
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 17s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 42s
Previously web_search_deep tool calls were missing from the UI_NAME_MAP,
causing their search-result cards to render as standalone cards instead of
being embedded within the ToolCallStatus component row.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-12 21:54:15 +08:00
gongzhiyongandClaude Sonnet 4.6 bb1885eca1 fix(searcher): prevent silent termination when MAX_ITERATIONS reached
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 13s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 51s
When tool rounds hit MAX_ITERATIONS, the router was jumping directly to
END without giving the LLM a chance to produce a final text reply.
Added a `force-summary` node that invokes the LLM without tools,
ensuring a coherent Chinese summary is always generated after all
search results are collected.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-12 21:42:59 +08:00
gongzhiyongandClaude Sonnet 4.6 60735de884 fix(security): strip Azure HTTP headers from thread config to prevent IP leak
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 16s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 43s
The LangGraph API server injects all x-* request headers into
thread.config.configurable, which gets persisted and exposed via
POST /threads/search. This leaked Azure-injected headers (x-forwarded-for,
x-client-ip, x-arr-ssl, etc.) to any user.

Adds a Hono middleware (http.app) that strips sensitive infrastructure
headers at the HTTP layer before they reach the LangGraph API routes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-12 20:48:06 +08:00
gongzhiyongandClaude Sonnet 4.6 569e157f25 fix: SPA 404 fallback + JS bundle code splitting + pre-existing build errors
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 29s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 39s
- Add public/staticwebapp.config.json with navigationFallback for Azure SWA SPA routing
- Add manualChunks in vite.config.ts to split vendor deps (react/langgraph-sdk/assistant-ui/radix/markdown/charts/router)
- Add property-information resolve alias to fix refractor→hastscript@6 CJS/ESM conflict (pre-existing build failure)
- Exclude agent/ from tsconfig.app.json to fix hono missing type error (agent is backend-only, frontend CI uses pnpm vite build directly)

Build output chunks:
  vendor-react: 12.30 kB (gzip: 4.35 kB)
  vendor-langgraph: 32.85 kB (gzip: 9.29 kB)
  vendor-markdown: 316.65 kB (gzip: 94.19 kB)
  vendor-charts: 428.01 kB (gzip: 113.50 kB)
  vendor-assistant-ui: 740.11 kB (gzip: 260.11 kB)
  index: 379.74 kB (gzip: 110.17 kB)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-12 20:45:54 +08:00
gongzhiyong 00f5dc3438 fix: flash via lastMessagesRef, web_read timeout 8s, searcher no parallel google+web_read
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 16s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 45s
2026-04-12 17:29:16 +08:00
gongzhiyong 6f036abdaa feat: CoT output — agents output thinking sentence before tool calls
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 30s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 39s
2026-04-12 17:21:02 +08:00
gongzhiyong 782ef8ab95 style: redesign Stop button — border style, Loader2 spinner during stopping
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 36s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 41s
2026-04-12 17:06:37 +08:00
gongzhiyong 004f26eb94 fix: Stop button uses cancelling poll flow, shows status text during stop
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 35s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 41s
2026-04-12 16:45:36 +08:00
gongzhiyong 1034d4bbc8 fix: remove hardcoded secrets, centralize storage config, move dev deps to devDependencies 2026-04-12 16:16:11 +08:00
gongzhiyong fb23b64df2 feat: Redis tool cache, Service Bus alerts, doc-creator agent for edit/translate 2026-04-12 16:15:45 +08:00
gongzhiyong 33cd268003 fix: jina partial_success, bash base64, ticket parallel search, ExecutionLogPanel toolCallId, sanitizeTitle regex
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 27s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 38s
2026-04-12 16:06:21 +08:00
gongzhiyongandClaude Sonnet 4.6 73a7175051 feat: cancelling status, ThreadSidebar lastActive time, MessageBubble smart summary
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 23s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 53s
- 点5: cancelling 独立状态 UI,用轮询替换 300ms setTimeout,StreamStatusBar 加橙色视觉
- 点6: ThreadSidebar formatTime 支持毫秒时间戳,时间展示改用 lastActive
- 点7: MessageBubble 智能摘要(关键词优先/标题次优/跳开场白),折叠阈值提升至25行/800字,展开后可收起

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 15:44:58 +08:00
gongzhiyongandClaude Sonnet 4.6 1be8b2602d refactor: preValidateToolCall rules array, extract getLastHumanContent helper
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 17s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 42s
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 15:43:04 +08:00
gongzhiyongandClaude Sonnet 4.6 e4ba9f78b1 feat: add toolCallId to ExecutionLogEntry for precise frontend matching
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 21s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 39s
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 15:28:29 +08:00
gongzhiyongandClaude Sonnet 4.6 107069ea06 feat: execution_log full fields in ToolCallStatus, index matching, ExecutionLogPanel overview badges
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 15:28:27 +08:00
gongzhiyongandClaude Sonnet 4.6 4895ff5465 feat: message queue upgrade, full payload snapshot, StreamStatusBar queue count, config badge
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Has been cancelled
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Has been cancelled
- Replace single pendingSubmitRef with pendingQueueRef array supporting multiple queued messages
- Add SubmitPayload interface to snapshot text/file/tools/modelMode at submission time
- Rewrite handleSubmit/doSubmit to use payload snapshots instead of closures over mutable state
- Rewrite handleConcurrentQueue with polling loop that drains the queue sequentially
- Rewrite handleConcurrentInterrupt and handleConcurrentCancel for queue awareness
- StreamStatusBar queued state now shows count (N 条消息已排队) and inline cancel button
- Add key={concurrentStatus} to StreamStatusBar div for fade-in animation on status change
- Config panel summary button shows numeric badge instead of dot when tools are active

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 15:28:16 +08:00
gongzhiyong 964e0dd305 fix: load historical messages when switching threads via client.threads.getState
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 29s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 47s
2026-04-12 15:14:29 +08:00
gongzhiyongandClaude Sonnet 4.6 0d36c0fc0d feat: execution log panel, stream status bar, config polish, card sorting, error recovery CTA
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 22s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 41s
- Point 5: dual-layer card sort (type priority + sort_key)
- Point 3: config summary text, active button style, Escape key, open animation
- Point 2: ConcurrentStatus state machine with StreamStatusBar
- Point 1: ExecutionLogPanel component replaces text-based execution summary
- Point 4: error-result gets fallback tool suggestions and direct-answer CTA

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 15:10:17 +08:00
gongzhiyongandClaude Sonnet 4.6 531197fd68 feat: add originalQuery to error-result props, semantic sort_key weights for card ordering
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 14s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 46s
- All error-result ui.push() calls now include originalQuery derived from the failed tool's input args
- Added CARD_SORT_WEIGHT constant mapping card names to semantic sort priorities (error=100, chart=200, knowledge=300, ticket=400, search=500, code=600, doc=700, actions=900)
- All sort_key values now computed as CARD_SORT_WEIGHT * 1_000_000 + timestamp for stable ordering

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 15:09:13 +08:00
gongzhiyong 66eaf7680d fix: sanitize thread titles — reject UUID/hash/empty values, fallback to 新对话
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 37s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 47s
2026-04-12 15:01:29 +08:00
gongzhiyong b93f08f206 feat: soc-client timeout via toolConfig, 24 unit tests, fix abort early-check and placeholder regex
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 24s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 39s
2026-04-12 14:57:06 +08:00
gongzhiyongandClaude Opus 4.6 38395226e5 feat: fix filterTools modelMode, tool call limit, temperature default, preValidate routing rules
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 15s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 47s
- filterTools now actually filters by modelMode (flash excludes search tools)
- Hard limit of 3 tool calls per turn in preValidateToolCall
- Temperature default changed from 0.5 to 0.2 to match MODEL_PRESETS.auto
- ticket_list blocked when message contains specific ticket ID (TK-xxxx)
- google_search/web_search_deep blocked for internal knowledge queries

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 14:49:35 +08:00
gongzhiyong 23e228b0f9 docs: fix CLAUDE.md — Supervisor uses AzureOpenAI not Gemini 2026-04-12 14:48:26 +08:00
gongzhiyongandClaude Sonnet 4.6 7167109414 feat: collapse model/tool config into expandable summary bar
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 17s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 43s
Replace flat tool toggles + model selector bar with a default-collapsed
summary chip (e.g. "Auto · 已开启 3 个工具 ▾") that expands upward into
a compact panel. Panel auto-closes on outside mousedown click. Options
changes keep the panel open.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 14:40:18 +08:00
gongzhiyongandClaude Sonnet 4.6 d86da0e48b feat: abort/cancel support in tool-executor and retry
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 20s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 38s
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 14:33:47 +08:00
gongzhiyongandClaude Sonnet 4.6 f375220eb6 feat: concurrent input dialog, unlock textarea during loading, fix TS errors
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 12s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 45s
- Add showConcurrentDialog modal when submitting while AI is loading
- Offer interrupt (stop + submit) or queue (poll until done) options
- Remove disabled={thread.isLoading} from textarea and FileUploadButton
- Fix TS2352: cast BaseMessage to unknown first before Record
- Fix TS6133: rename unused toolName param to _toolName
- Fix TS2769: chart_type typed as union literal, not string
- Fix TS2322: separate cmdMap lookup from const declaration in soc-client

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 14:31:29 +08:00
gongzhiyongandClaude Sonnet 4.6 e8a29e1f89 feat: toolConfig.ts, expanded preValidate rules, envelope unification, fallbackFrom, temperature pass-through
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 24s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 39s
- New src/agent/utils/toolConfig.ts: centralized per-tool timeout/retry config
- preValidateToolCall: kb_search min query length + duplicate guard, ticket_list page range, ticket_detail placeholder ID detection
- ExecutionLogEntry: added fallbackFrom and retryCount fields
- retry.ts: added onAttempt callback for retry counting
- tool-executor.ts: all 7 tool content returns unified to {ok, tool, summary, resultCount, data, error, fallback} envelope
- supervisor/types.ts: temperature slider config field
- enterprise/agent.ts: temperature pass-through to createLlm()

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 14:16:19 +08:00
gongzhiyongandClaude Sonnet 4.6 fc56503e22 feat: ToolCallStatus partial_success/fallback_success visual states
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 17s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 41s
- Add CornerDownRight, AlertCircle icons for fallback/partial states
- New isPartial/isFallback props on ToolCallRow with hint banners
- Read execution_log from thread.values in main.tsx, pass to ToolCallStatus
- Match by tc.name === entry.tool to determine partial/fallback per row

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 14:13:14 +08:00
gongzhiyongandClaude Sonnet 4.6 2f201bf1f0 feat: expand preValidateToolCall rules, add traceId+batch summary, extend log protocol to all agents
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 23s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 37s
- Add validation for web_search/google_search (query length), sandbox_run/code_execute (empty code + dangerous commands), doc_create/report_generate/reply_draft (title/topic required)
- Add traceId field to ExecutionLogEntry, generate per-request traceId in enterprise tool-executor with batch summary log
- Add structured console.log tool_exec events to searcher, coder, writer tool-executors (no state changes)

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 13:55:19 +08:00
gongzhiyongandClaude Sonnet 4.6 b22d13415a fix: make GOOGLE_API_KEY and DATABASE_URL optional in dev environment
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 12s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 43s
GOOGLE_API_KEY is not used at startup (no code calls config.google.apiKey).
DATABASE_URL is only needed for production checkpointer. Both are now
warned-but-not-fatal in dev (NODE_ENV != production) to allow local
development without these credentials.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 13:06:13 +08:00
gongzhiyongandClaude Sonnet 4.6 9c96913b4d feat: enterprise product sprint — log protocol, tool rules, UX polish
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 13s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 49s
Backend:
- config.ts: unified startup env validation (throw on missing critical vars)
- tool-executor: structured logToolCall() JSON, ToolStatus enum (success/partial_success/fallback_success/error), preValidateToolCall() hardcoded guards for ticket_detail/chart_generate, durationMs/inputSummary/resultCount on all execution log entries
- agent.ts: tool selection decision tree, chart-as-default-path prompt rules, source labels [知识库][工单][网络][推断]
- tool-defs.ts: applicable/not-applicable guidance on all 4 tools
- soc-client.ts: sandbox hardening (10k char limit, 15s timeout, output truncation, error classification), config.* accessors
- router.ts: preCheckRoute() rules — TK-xxx/工单/知识库 → enterprise direct; greetings → generalInput
- supervisor/types.ts: removed dead config fields (model/temperature/maxTokens/systemPrompt)
- Remove chat-agent (legacy entry point)

Frontend:
- MessageBubble: source badge rendering [知识库][工单][网络][推断], CitationChip [1][2] → clickable chips
- ThreadSidebar: auto-title from first message, collapsible search, long title truncation
- ToolCallStatus: tool-specific loading labels, collapse-all toggle for multi-tool
- main.tsx: conclusion-first layout (AI text above artifacts), draft persistence, IME fix, auto chip, multi-tool AnalysisBlock container, sort_key ordering, retry via soc:retry-tool
- chart-result: empty guard, chart/table toggle, multi-chart format support
- ticket-summary/knowledge-result: work-card quick actions (prefill with context)
- ActionBar: structured payload {text, taskType, sourceCardId}, source label UI
- index.css: card-enter slide animation, dot-bounce loading

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 13:01:02 +08:00
gongzhiyongandClaude Sonnet 4.6 183794dc42 fix: sandbox friendly error card + ticket_list empty guard + search auto-supplement
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 34s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 38s
- coder/tool-executor: push sandbox-result card with friendly message on
  failure instead of raw error, guide user to local execution or retry
- enterprise/tool-executor: skip ticket-summary card when ticket_list
  returns empty, only return hint in tool message to avoid blank UI
- searcher/tool-executor: auto-supplement web_search_deep with
  google_search when results < 3, matching existing google_search behavior
- ticket_detail UUID: already correctly uses find() match (no change needed)

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 22:35:52 +08:00
gongzhiyongandClaude Sonnet 4.6 19cb2e42bc fix(ui): fix ToolCallStatus duplicate label + add fade-in to standalone cards
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 15s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 44s
- Fix ToolCallStatus label duplication: label span was shown twice when
  failed/done; consolidate into a single span with correct copy
- Add animate-in fade-in duration-300 wrapper to standalone Gen-UI cards
  and streaming orphan cards in main.tsx (already present in ToolCallStatus
  expanded view)

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 22:34:59 +08:00
gongzhiyongandClaude Sonnet 4.6 3b1ce32bc4 feat(R3): deduplicate UI cards by card_id (loading → complete merge)
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 27s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 46s
Cards with the same card_id in props are deduplicated to show only the
last (complete) version, replacing any earlier loading skeleton cards.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 22:33:45 +08:00
gongzhiyongandClaude Sonnet 4.6 c4c5c9916e feat(R3): chart-result + reply-draft + next-actions + citations
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Has been cancelled
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Has been cancelled
- enterprise tool-executor: push chart-result card after ticket_list with
  status/priority distribution pie+bar charts
- enterprise tool-executor: push next-actions card after successful tool
  executions with contextual suggested actions
- enterprise tool-executor: add citations array to kb_search results
- searcher tool-executor: add citations array to google_search and
  web_search_deep results
- writer tool-defs: add replyDraftSchema and reply_draft tool definition
- writer tool-executor: add reply_draft case with LLM-generated drafts
  in customer/internal modes, push reply-draft Gen-UI card

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 22:33:35 +08:00
gongzhiyongandClaude Sonnet 4.6 e408ca9977 feat(R3): reply-draft + next-actions cards + citations in knowledge/search results
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 15s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 46s
- Add reply-draft card (customer/internal mode, inline edit, copy)
- Add next-actions card (suggested action buttons with soc:prefill-input dispatch)
- Register reply-draft and next-actions in agent-uis ComponentMap
- Add citations[] prop to knowledge-result and search-result cards

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 22:32:25 +08:00
gongzhiyongandClaude Sonnet 4.6 f3cf9d027f feat(R3): reply-draft/next-actions/chart prompt quality
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 23s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 44s
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 22:31:13 +08:00
gongzhiyongandClaude Sonnet 4.6 397c2c1124 feat: Gen-UI卡片error态 + ToolCallStatus失败状态 + 骨架屏loading
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 16s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 40s
- 4个Gen-UI卡片增加errorMessage prop,错误时显示红色提示块,空结果时边框变红
- ToolCallStatus新增failedToolIds prop,失败时显示XCircle红色图标+失败文案
- main.tsx从tool messages status===error派生failedToolIds并传入ToolCallStatus
- ToolCallRow展开无uiItem时显示animate-pulse骨架屏占位
- LoadExternalComponent外包animate-in fade-in过渡动画

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 21:59:12 +08:00
gongzhiyongandClaude Sonnet 4.6 2430fd2174 fix(P1): ticket UUID mapping + sandbox/ticket/search fallback improvements
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 21s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 42s
- Fix ticket_detail UUID resolution: use find() to match ticketNumber instead of tickets[0]
- Add sandbox fallback hint in coder tool-executor catch block
- Add ticket_list empty result friendly hint with suggestions
- Add google_search auto-supplement with Jina when results < 3
- Enhance enterprise tool-executor general catch with fallback_hint

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 21:57:56 +08:00
gongzhiyongandClaude Sonnet 4.6 979e900a17 feat(prompt): 4个Agent system prompt追加工具失败处理规范
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Has been cancelled
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Has been cancelled
在 enterprise/coder/searcher/writer 的 agent.ts 中,
为 SYSTEM_PROMPT 追加"工具失败处理规范"段落,
指导 LLM 在工具调用失败时给出中文友好提示和替代建议,
不暴露技术报错细节。

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 21:57:42 +08:00
gongzhiyongandClaude Sonnet 4.6 4ad169e891 fix(P0): Daytona sandbox use process/execute endpoint + add sourceType to writer doc_edit/translate
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 16s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 51s
- Fix Daytona code execution endpoint from process/code-run (404) to process/execute
- Fix request body format to {command} with language-aware shell wrapping
- Add missing sourceType/confidence props to writer doc_edit and doc_translate ui.push

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 20:01:33 +08:00
gongzhiyongandClaude Sonnet 4.6 0e92444112 feat: prompt optimization — intent routing, source annotation, enterprise output template
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 13s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Has been cancelled
- supervisor router: intent-based routing (no longer keyword-dependent)
- enterprise/searcher/writer/coder agents: source annotation [内部知识][工单数据][网络搜索][模型推断]
- enterprise agent: enterprise output template (结论→依据→建议→下一步)
- enterprise agent: cross-source synthesis prompt for multi-tool results
- writer agent: proactive enterprise closure actions (report generation hints)

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 20:00:21 +08:00
gongzhiyongandClaude Sonnet 4.6 8c5890d66a feat: Task#2 ActionBar+SourceBadge+状态语言统一+长消息分层
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 19s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 43s
- 新增 ActionBar 组件:快速操作按钮,通过 soc:prefill-input 事件填充输入框
- 新增 SourceBadge 组件:数据来源标注(内部知识库/工单系统/外部搜索/代码执行)
- 4个 Gen-UI 卡片集成 ActionBar 和 SourceBadge
- main.tsx 添加 soc:prefill-input 事件监听
- ToolCallStatus 状态文案统一为中文(正在xxx.../已完成·xxx)
- MessageBubble 长消息(>800字)显示摘要+展开全文按钮

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 19:59:24 +08:00
gongzhiyongandClaude Sonnet 4.6 e16b4ce92e fix: P0/P1/P2 + sourceType/confidence + kb fallback + report_generate
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Has been cancelled
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Has been cancelled
- Daytona: fix /workspace→/sandbox + toolbox proxy exec endpoint
- KB Agent: timeout 15s→45s, exponential retry (3x, 1s/2s/4s)
- ticket_detail: auto-resolve TK-xxxx ticketNumber to UUID
- retry.ts: add exponential backoff support
- All ui.push(): add sourceType + confidence fields
- kb_search: fallback to google_search on failure with error card
- writer: add report_generate tool with structured Markdown template

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 19:59:13 +08:00
gongzhiyongandClaude Opus 4.6 b8fcc50d73 feat: optimize prompts — intent-based routing, source annotation, enterprise output format
Deploy LangGraph Server to Azure Web App / build-and-deploy (push) Failing after 27s
Deploy LangGraph UI to Azure Static Web Apps / build-and-deploy (push) Failing after 44s
- Supervisor router: rewrite to intent-based routing instead of tool-name matching
- Enterprise agent: add structured source annotation ([内部知识]/[工单数据]/[网络搜索]/[模型推断])
- Enterprise agent: add enterprise-style output format (结论/依据/建议) for responses >200 chars
- Enterprise agent: add multi-source synthesis guidelines for cross-tool analysis
- Writer agent: add enterprise document closure prompts (auto-suggest reports after queries)
- Supervisor index: update ALL_TOOL_DESCRIPTIONS to match intent-based approach

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 19:57:55 +08:00