@yeaft/webchat-agent 1.0.340 → 1.0.341

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yeaft/webchat-agent",
3
- "version": "1.0.340",
3
+ "version": "1.0.341",
4
4
  "description": "Remote worker agent for Yeaft Web Code Agent — connects the native Yeaft engine, CLI providers, and workbench tools",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -135,6 +135,21 @@ export function deleteProject(yeaftDir, projectId) {
135
135
  return { projectId };
136
136
  }
137
137
 
138
+ export function reorderProjects(yeaftDir, projectIds) {
139
+ const projects = loadProjects(yeaftDir);
140
+ const ids = Array.isArray(projectIds)
141
+ ? projectIds.map(value => typeof value === 'string' ? value.trim() : '')
142
+ : [];
143
+ const currentIds = new Set(projects.map(project => project.id));
144
+ if (ids.length !== projects.length
145
+ || ids.some(id => !id || !currentIds.has(id))
146
+ || new Set(ids).size !== ids.length) {
147
+ throw new ProjectStoreError('invalid_project_order', 'Complete Project order is required');
148
+ }
149
+ const projectsById = new Map(projects.map(project => [project.id, project]));
150
+ return saveProjects(yeaftDir, ids.map(id => projectsById.get(id)));
151
+ }
152
+
138
153
  export function moveSessionToProject(yeaftDir, sessionId, projectId = null) {
139
154
  const id = typeof sessionId === 'string' ? sessionId.trim() : '';
140
155
  if (!id) throw new ProjectStoreError('invalid_session_id', 'Session id is required');
@@ -77,6 +77,7 @@ import {
77
77
  moveSessionToProject,
78
78
  removeSessionFromProjects,
79
79
  renameProject,
80
+ reorderProjects,
80
81
  updateProjectInstruction,
81
82
  } from './projects/store.js';
82
83
  import { readSummary as readScopeSummary } from './memory/store.js';
@@ -3239,6 +3240,7 @@ export function handleYeaftProjectMutation(msg) {
3239
3240
  else if (op === 'update_instruction') {
3240
3241
  result = updateProjectInstruction(yeaftDir, msg.projectId, msg.instruction);
3241
3242
  } else if (op === 'delete') result = deleteProject(yeaftDir, msg.projectId);
3243
+ else if (op === 'reorder') result = reorderProjects(yeaftDir, msg.projectIds);
3242
3244
  else if (op === 'move_session') {
3243
3245
  if (!snapshotSessions(yeaftDir).some(row => row.id === msg.sessionId)) {
3244
3246
  throw new ProjectStoreError('session_not_found', 'Session not found');