feat: 全新智能体功能

- 基于先进智能体框架,增加智能体编排功能
- 增加智能体聊天,并对接持久化
This commit is contained in:
2026-05-25 11:42:48 +08:00
parent 6c3d98eaac
commit 72df00f25b
168 changed files with 22045 additions and 400 deletions

View File

@@ -1,6 +1,7 @@
import type { useSvelteFlow } from '@xyflow/svelte';
import { componentName } from './consts';
import type { TinyflowData, TinyflowOptions, TinyflowTheme } from './types';
import type {useSvelteFlow} from '@xyflow/svelte';
import {componentName} from './consts';
import {store} from './store/stores.svelte';
import type {TinyflowData, TinyflowOptions, TinyflowTheme} from './types';
type FlowInstance = ReturnType<typeof useSvelteFlow>;
@@ -93,6 +94,37 @@ export class Tinyflow {
return flow.toObject();
}
updateData(data: TinyflowData, options?: { preserveViewport?: boolean }) {
const flow = this._getFlowInstance();
if (!flow) {
return false;
}
const currentViewport = flow.getViewport();
const currentNodes = flow.getNodes();
const currentNodePositions = new Map(
currentNodes.map((node) => [node.id, node.position]),
);
const nextNodes =
options?.preserveViewport === true
? (data.nodes || currentNodes).map((node) => {
const currentPosition = currentNodePositions.get(node.id);
return currentPosition
? { ...node, position: { ...currentPosition } }
: node;
})
: data.nodes || currentNodes;
store.setNodes(nextNodes);
store.setEdges(data.edges || flow.getEdges());
if (data.viewport && options?.preserveViewport !== true) {
flow.setViewport(data.viewport, { duration: 0 });
} else {
flow.setViewport(currentViewport, { duration: 0 });
}
return true;
}
async focusNode(
nodeId: string,
options?: { duration?: number; zoom?: number },