V3.8#31
Merged
Merged
Conversation
…elivery The IM agent orchestrator persists replies to the local IM store and broadcasts over /ws/im. In the Server Edition the gateway hub — not the container IM — is the user-facing source of truth, so agent replies must travel back to the gateway after the kernel runs the agent. Add an OPTIONAL AgentReplySink service the orchestrator notifies after each agent turn. It's read via Effect.serviceOption, so its absence changes neither the orchestrator's requirements nor standalone behavior. The Server Edition provides ServerAgentReplySinkLive, which POSTs the outcome to GATEWAY_CALLBACK_URL/im/agent-reply with X-Internal-Token; when the callback URL is unset it degrades to a no-op. Correlation uses the kernel-native (groupID, messageID) pair the gateway recorded at delivery time, so no server ids leak into the kernel. Tests: new im-agent-reply-sink.test.ts (success + failure notify); existing im-orchestrator.test.ts stays green (sink absent path unchanged). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Live streaming (方案3): stream the IM agent's reasoning, tool calls, and drafted
text to the chat UI in real time so users watch the agent think instead of a spinner.
- agent-progress-stream.ts: withAgentProgress() folds PartUpdated/PartDelta events
into a per-partID accumulator and flushes REPLACE snapshots every 400ms
- websocket.ts: agent_progress ServerEvent (uppercase messageID/agentID/parts),
the single schema-backed part shape
- agent-reply-sink.ts: optional progress() sink + AgentProgressUpdate; re-exports
AgentProgressPart from ./websocket so WS event and sink payload can't drift
- agent-orchestrator.ts: builds onProgress = broadcast agent_progress locally
(reaches the app) + mirror to replySink.progress (hub, best-effort)
- agent-reply-sink-server.ts: POSTs progress batches to the gateway callback
- SolidJS: agentProgress signal + expandable AgentReasoningCard on the trigger row
Server-configured imModel: ServerCapabilities.imModel ("providerID/modelID") +
parseModelRef(); delivered via DEEPAGENT_SERVER_CAPABILITIES, never hardcoded.
Fix: headless containers return 404 instead of proxying the public app upstream
(which 500s offline) when the embedded UI is disabled.
Tests: parseModelRef + progress-wiring specs.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Restructure both READMEs need-first: "What You Can Do" maps each user-facing capability (indefinite conversations, fork+memory inheritance, Intelligence prompt mode, deep multi-agent work, IM group chat) to the control-plane primitive that serves it (four-graph unification, 140+ domain packs, tiered knowledge invocation, evidence-gated self-learning). Drop the Project Status / version-milestone sections for good; keep header, tagline, and asset paths byte-identical to the prior version. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…orchestration Land the V3.8 body across core, deepagent-code, app, and SDK: - Continuously maintained context: curator-rebuilt working set, session ledger, project bridge, append-only conversation log with query_log, map-reduce ingest, and CJK/code-aware token metering (packages/core/ src/deepagent/context/*, packages/deepagent-code/src/session/*). - Four-graph unification: code_symbol indexing + unified-context-graph cross-type neighbor traversal replacing independent knowledge queries. - Multi-agent orchestration: researcher/reviewer subagents, adversarial review contracts, and a hard fan-out/concurrency cap. - Fork lineage UX: metadata.forkedFrom chain (depth cap 3), full-width "derived from" transcript divider, folder-style session-tree nesting. - Subagent visibility: side-panel list, sidebar running-count badge, header pulse dot, inline transcript cards. - Scenario mode rename wish -> intelligence across UI/wire/persist with backward-compat normalization; i18n parity across all locales. - IM: real ServerAgentExecutor stack, live agent-progress streaming, server-configured imModel, typed message metadata. - SDK v2 client compat layer surviving regen (eventsUrl, flat file/lock). Typecheck: 23/23 packages green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Issue for this PR
Closes #
Type of change
What does this PR do?
Please provide a description of the issue, the changes you made to fix it, and why they work. It is expected that you understand why your changes work and if you do not understand why at least say as much so a maintainer knows how much to value the PR.
If you paste a large clearly AI generated description here your PR may be IGNORED or CLOSED!
How did you verify your code works?
Screenshots / recordings
If this is a UI change, please include a screenshot or recording.
Checklist
If you do not follow this template your PR will be automatically rejected.