Commit graph

36 commits

Author SHA1 Message Date
CREDO23
40300d300a refactor(chat): add streaming/flows/shared/premium_quota.py
Centralizes the premium-credits lifecycle for chat turns:

* needs_premium_quota: gate check (premium user + non-fallback config).
* PremiumReservation: dataclass capturing reservation state + token totals.
* reserve_premium / finalize_premium / release_premium: idempotent
  reservation, commit, and rollback used by the orchestrators.

Add-only; legacy stream_new_chat.py keeps its inline quota handling
until cutover.
2026-05-25 21:49:14 +02:00
CREDO23
e9a98ecafb refactor(chat): add streaming/flows/shared/ base helpers
Six small, single-purpose modules shared by the upcoming new_chat and
resume_chat orchestrators:

* llm_bundle: dispatches negative config_id to the YAML loader and
  non-negative config_id to the DB loader, returning (llm, AgentConfig).
* pre_stream_setup: builds the connector service, resolves the
  Firecrawl API key, and returns the chat checkpointer.
* first_frames: iter_initial_frames + iter_final_frames emit the canonical
  message-start / step-start / idle / finish / done SSE envelope.
* finalize_emit: iter_token_usage_frame emits the per-turn usage frame
  from a TokenAccumulator summary.
* finally_cleanup: close_session_and_clear_ai_responding and run_gc_pass
  centralize the finally-block bookkeeping.
* span: open_chat_request_span / set_agent_mode / close_chat_request_span /
  record_outcome_attrs wrap the OpenTelemetry chat_request span.

Add-only; these are not yet wired into stream_new_chat.py.
2026-05-25 21:49:09 +02:00
CREDO23
26c569467d refactor(chat): add streaming/agent/event_loop.stream_agent_events
Extracts the inner agent-streaming driver previously inlined as
_stream_agent_events in stream_new_chat.py.

stream_agent_events drives graph_stream.event_stream.stream_output and,
after the agent finishes, performs the post-stream safety-net work:

* commit any pending content the agent never explicitly finished
* evaluate file-operation contract outcomes and emit the appropriate
  contract verdict for desktop_local_folder turns

This unit is what flows/shared/stream_loop.py wraps in the rate-limit
recovery while-loop. Add-only; no existing wiring uses it yet.
2026-05-25 21:48:26 +02:00
CREDO23
94bc827252 refactor(chat): add streaming/agent/ package with build_main_agent_for_thread
Extracts the agent-construction wrapper that the chat streamers call to
materialize the LangGraph agent for a given thread. Centralizes how we
pass the agent factory plus checkpointer, runtime context, and the
in-memory content builder.

Add-only; pre-existing inline equivalent in stream_new_chat.py stays
until cutover.
2026-05-25 21:48:20 +02:00
CREDO23
88a58f6aff refactor(chat): add streaming/contract/ for file-write contract enforcement
Extracts the desktop_local_folder file-operation contract helpers:

* contract_enforcement_active: gates the contract on filesystem mode.
* evaluate_file_contract_outcome: scores tool outputs as success/no-op.
* log_file_contract: structured logging of contract verdicts.

This is the unit responsible for catching agents that claim to have
written/edited a file without actually invoking the filesystem tool.

Add-only; stream_new_chat.py keeps its inline duplicates until cutover.
2026-05-25 21:48:14 +02:00
CREDO23
c13beae1ce refactor(chat): add streaming/context/ for mentioned-docs and deep-agents todos
Extracts two pure context helpers used during input-state assembly:

* mentioned_docs.format_mentioned_surfsense_docs_as_context: renders the
  user's @-mentioned SurfSense docs into the LLM context block.
* deepagents_todos.extract_todos_from_deepagents: pulls the in-progress
  todo list from a deep-agents state snapshot for the title generator.

Add-only; existing call sites in stream_new_chat.py remain untouched
until cutover.
2026-05-25 21:48:08 +02:00
CREDO23
4910263c93 refactor(chat): add streaming/shared/ package for StreamResult and utils
Foundation layer for the parallel refactor of stream_new_chat.py.
Extracts the StreamResult dataclass (tracks per-turn streaming state)
and a small set of shared utilities (resume_step_prefix, safe_float).

Add-only; no existing code imports from this package yet. Existing
stream_new_chat.py keeps its inline equivalents until cutover.
2026-05-25 21:48:04 +02:00
Anish Sarkar
132e7b3c44 refactor: remove memory extraction functions and related components from the new chat agent 2026-05-20 14:03:28 +05:30
CREDO23
c06dd6e8ba chat/stream_new_chat: emit one SSE frame per pending interrupt 2026-05-13 20:59:48 +02:00
DESKTOP-RTLN3BA\$punk
c8374e6c5b feat: improved document, folder mentions rendering
Some checks are pending
Build and Push Docker Images / tag_release (push) Waiting to run
Build and Push Docker Images / build (./surfsense_backend, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-24.04-arm, linux/arm64, arm64) (push) Blocked by required conditions
Build and Push Docker Images / build (./surfsense_backend, ./surfsense_backend/Dockerfile, backend, surfsense-backend, ubuntu-latest, linux/amd64, amd64) (push) Blocked by required conditions
Build and Push Docker Images / build (./surfsense_web, ./surfsense_web/Dockerfile, web, surfsense-web, ubuntu-24.04-arm, linux/arm64, arm64) (push) Blocked by required conditions
Build and Push Docker Images / build (./surfsense_web, ./surfsense_web/Dockerfile, web, surfsense-web, ubuntu-latest, linux/amd64, amd64) (push) Blocked by required conditions
Build and Push Docker Images / create_manifest (backend, surfsense-backend) (push) Blocked by required conditions
Build and Push Docker Images / create_manifest (web, surfsense-web) (push) Blocked by required conditions
2026-05-09 22:15:51 -07:00
CREDO23
1761b60c16 Carry thinkingStepId on tool output and extend builder and parity tests. 2026-05-08 23:17:12 +02:00
CREDO23
32092c0b65 Pass thinkingStepId through tool-input start and available metadata. 2026-05-08 23:17:05 +02:00
CREDO23
d136fcd054 Add tool_activity_metadata to merge spanId and thinkingStepId for tools. 2026-05-08 23:16:44 +02:00
CREDO23
f1d80ffe5d Forward span metadata from report_progress thinking updates. 2026-05-08 22:47:50 +02:00
CREDO23
1dcb08e925 Attach active span metadata to thinking-step SSE and completion. 2026-05-08 22:47:46 +02:00
CREDO23
3ed09bdd90 Clear spans after task completion and pass span id on tool output. 2026-05-08 22:47:38 +02:00
CREDO23
2c1b219c6c Open task spans at tool start and tag unmatched tool-input SSE. 2026-05-08 22:47:32 +02:00
CREDO23
695f9ded2c Mint pending span id when the task tool registers from chunks. 2026-05-08 22:47:08 +02:00
CREDO23
f944cdacb7 Add helpers to open and close task delegation span ids. 2026-05-08 22:47:03 +02:00
CREDO23
f0f87107f2 Track active task span id on the agent event relay state. 2026-05-08 22:46:58 +02:00
CREDO23
78f4747382 refactor(chat): stream agent events via stream_output and remove parity v2 flag 2026-05-07 19:40:10 +02:00
CREDO23
7e07092f67 refactor(chat): drop alternate streaming entry path; use graph_stream 2026-05-07 19:25:20 +02:00
CREDO23
52895e37e9 build streaming contexts for chat resume and regenerate paths 2026-05-07 17:57:27 +02:00
CREDO23
a04b2e88bd wire orchestrator streaming context path and align event relay outputs 2026-05-07 17:06:17 +02:00
CREDO23
0f40279d95 Expand orchestration gate coverage to resume and regenerate flows. 2026-05-07 16:18:29 +02:00
CREDO23
52593d88db Reorganize streaming orchestration modules into relay and orchestration folders. 2026-05-07 16:00:15 +02:00
CREDO23
f8754a9dab Rename streaming runtime modules for clearer SRP boundaries. 2026-05-07 15:41:33 +02:00
CREDO23
4e664652a8 Add streaming runtime helpers with behavior-focused unit tests. 2026-05-07 15:13:22 +02:00
CREDO23
c0706364d1 Add a route-level kill switch for streaming orchestrator cutover. 2026-05-07 14:44:36 +02:00
CREDO23
ec26ca69a6 Add chat EventRelay and orchestrator stubs for future cutover. 2026-05-06 20:08:48 +02:00
CREDO23
c8fb4aa5e5 Add deliverables and web tool streaming handlers for chat runs. 2026-05-06 20:08:48 +02:00
CREDO23
a322eedaa1 Add filesystem tool streaming handlers for chat runs. 2026-05-06 20:08:48 +02:00
CREDO23
1392abf5b1 Add chat tool streaming registry with shared, default, and connector tools. 2026-05-06 20:08:48 +02:00
CREDO23
ee16e1d5f9 Add LangGraph handlers for chat model, chain, tool, and custom events. 2026-05-06 20:08:48 +02:00
CREDO23
7581a7c9c3 Add chat streaming relay state and thinking-step SSE helpers. 2026-05-06 20:08:48 +02:00
CREDO23
c25b78c304 Add chat streaming error classification, helpers, and StreamResult. 2026-05-06 20:08:48 +02:00