FN-047: preserve project-scoped Chat context
Keep task Chat bound to the selected project even when its engine is unavailable. - Resolve request-scoped TaskStore and ChatStore pairs without falling back to the default project. - Apply the project-safe resolution to task planner and room chat routes. - Add regression coverage and document the selected-project context guarantee. Files changed: .../fn-047-task-chat-context-project-scope.md | 7 ++ docs/dashboard-guide.md | 2 +- .../dashboard/src/__tests__/chat-manager.test.ts | 49 +++++++----- .../src/__tests__/chat-project-services.test.ts | 18 +++++ .../src/__tests__/routes-chat-cancellation.test.ts | 2 +- packages/dashboard/src/chat-project-services.ts | 20 ++++- .../src/routes/register-chat-room-routes.ts | 7 ++ .../dashboard/src/routes/register-chat-routes.ts | 86 +++++++++++++--------- 8 files changed, 135 insertions(+), 56 deletions(-) Fusion-Task-Id: FN-047 Fusion-Task-Lineage: 008eefad-e495-40ba-9243-d46ec913c9db Co-authored-by: Fusion <noreply@runfusion.ai>
This commit is contained in:
@@ -248,7 +248,7 @@ On mobile viewports, the Right Dock never renders. The compact Header actions an
|
||||
|
||||
## Task-detail Chat
|
||||
|
||||
Task-detail **Chat** uses the project’s configured Direct Chat default model and thinking level rather than the task’s planning model. It remains task-aware: the server builds the task definition, dependencies, activity, metrics, steering, and refinement context, and the existing `task-planner:<taskId>` session keeps one transcript per task. The composer exposes the same model and thinking controls as Direct Chat; model choices remain model-targeted and do not replace the synthetic task-scoped permission contract. Changing the project default does not hide history, and the next explicit send applies the current target to the existing idle session. There is no separate planner-model lane for this conversation.
|
||||
Task-detail **Chat** uses the project’s configured Direct Chat default model and thinking level rather than the task’s planning model. It remains task-aware: the server builds the task definition, dependencies, activity, metrics, steering, and refinement context, and the existing `task-planner:<taskId>` session keeps one transcript per task. Task context always comes from the selected project’s authoritative store, including while that project’s engine has not started or is unavailable; another project’s task with the same ID cannot supply its context. The composer exposes the same model and thinking controls as Direct Chat; model choices remain model-targeted and do not replace the synthetic task-scoped permission contract. Changing the project default does not hide history, and the next explicit send applies the current target to the existing idle session. There is no separate planner-model lane for this conversation.
|
||||
|
||||
## Chat message editing and rewind
|
||||
|
||||
|
||||
Reference in New Issue
Block a user