agent-client-sdk 0.1.0

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/README.md ADDED
@@ -0,0 +1,199 @@
1
+ # Agent Client SDK
2
+
3
+ 智能页面控制 Agent 的前端 SDK,提供与 Agent Server 的 WebSocket 通信能力,实现"所说即所得"的页面控制体验。
4
+
5
+ ## 安装
6
+
7
+ ```bash
8
+ npm install agent-client-sdk
9
+ ```
10
+
11
+ ## 快速开始
12
+
13
+ ### 1. 初始化 SDK
14
+
15
+ ```typescript
16
+ import { initAgent } from 'agent-client-sdk';
17
+
18
+ initAgent({
19
+ serverUrl: 'ws://localhost:8987/ws/agent',
20
+ routes: [
21
+ { path: '/dashboard', name: '仪表盘', description: '系统数据总览' },
22
+ { path: '/users', name: '用户管理', description: '管理用户账号' },
23
+ ],
24
+ });
25
+ ```
26
+
27
+ ### 2. 在组件中注册能力
28
+
29
+ ```vue
30
+ <script setup lang="ts">
31
+ import { useAgentForm, useAgentButton } from 'agent-client-sdk';
32
+
33
+ // 注册表单能力
34
+ useAgentForm(
35
+ 'user-form', // 组件ID
36
+ '用户信息表单', // 组件名称
37
+ '用于编辑用户基本信息', // 描述
38
+ ['name', 'email', 'phone'], // 字段列表
39
+ '#user-form' // CSS选择器
40
+ );
41
+
42
+ // 注册按钮能力
43
+ useAgentButton(
44
+ 'submit-btn',
45
+ '提交按钮',
46
+ '提交表单数据'
47
+ );
48
+ </script>
49
+ ```
50
+
51
+ ## API 参考
52
+
53
+ ### 核心函数
54
+
55
+ #### `initAgent(config: AgentConfig)`
56
+
57
+ 初始化 Agent SDK。
58
+
59
+ **参数:**
60
+
61
+ | 属性 | 类型 | 必填 | 说明 |
62
+ |------|------|------|------|
63
+ | `serverUrl` | `string` | 是 | WebSocket 服务端地址 |
64
+ | `routes` | `RouteInfo[]` | 否 | 应用路由表 |
65
+ | `debug` | `boolean` | 否 | 是否开启调试日志 |
66
+
67
+ #### `useAgentForm(id, name, description, fields, selector)`
68
+
69
+ 注册表单组件能力,让 Agent 能够操作该表单。
70
+
71
+ #### `useAgentButton(id, name, description)`
72
+
73
+ 注册按钮组件能力,让 Agent 能够触发点击。
74
+
75
+ #### `useAgentInput(id, name, description, selector)`
76
+
77
+ 注册输入框组件能力。
78
+
79
+ #### `useAgentSelect(id, name, description, options, selector)`
80
+
81
+ 注册下拉选择框组件能力。
82
+
83
+ ### 类型定义
84
+
85
+ ```typescript
86
+ interface AgentConfig {
87
+ serverUrl: string;
88
+ routes?: RouteInfo[];
89
+ debug?: boolean;
90
+ }
91
+
92
+ interface RouteInfo {
93
+ path: string;
94
+ name: string;
95
+ description?: string;
96
+ }
97
+ ```
98
+
99
+ ## 完整示例
100
+
101
+ ```vue
102
+ <template>
103
+ <div class="user-management">
104
+ <h1>用户管理</h1>
105
+
106
+ <form id="user-form" @submit.prevent="handleSubmit">
107
+ <div class="form-group">
108
+ <label>用户名</label>
109
+ <input v-model="form.username" id="username" />
110
+ </div>
111
+
112
+ <div class="form-group">
113
+ <label>邮箱</label>
114
+ <input v-model="form.email" id="email" type="email" />
115
+ </div>
116
+
117
+ <div class="form-group">
118
+ <label>角色</label>
119
+ <select v-model="form.role" id="role">
120
+ <option value="admin">管理员</option>
121
+ <option value="user">普通用户</option>
122
+ </select>
123
+ </div>
124
+
125
+ <button id="submit-btn" type="submit">保存</button>
126
+ </form>
127
+ </div>
128
+ </template>
129
+
130
+ <script setup lang="ts">
131
+ import { reactive } from 'vue';
132
+ import {
133
+ initAgent,
134
+ useAgentForm,
135
+ useAgentButton,
136
+ useAgentSelect,
137
+ } from 'agent-client-sdk';
138
+
139
+ // 初始化 Agent
140
+ initAgent({
141
+ serverUrl: 'ws://localhost:8987/ws/agent',
142
+ routes: [
143
+ { path: '/users', name: '用户管理', description: '管理系统用户' },
144
+ { path: '/settings', name: '系统设置', description: '配置系统参数' },
145
+ ],
146
+ debug: true,
147
+ });
148
+
149
+ // 注册组件能力
150
+ useAgentForm(
151
+ 'user-form',
152
+ '用户表单',
153
+ '用于创建或编辑用户信息',
154
+ ['username', 'email', 'role'],
155
+ '#user-form'
156
+ );
157
+
158
+ useAgentSelect(
159
+ 'role-select',
160
+ '角色选择',
161
+ '选择用户角色',
162
+ [
163
+ { value: 'admin', label: '管理员' },
164
+ { value: 'user', label: '普通用户' },
165
+ ],
166
+ '#role'
167
+ );
168
+
169
+ useAgentButton('submit-btn', '保存按钮', '提交表单保存用户数据');
170
+
171
+ // 表单数据
172
+ const form = reactive({
173
+ username: '',
174
+ email: '',
175
+ role: 'user',
176
+ });
177
+
178
+ const handleSubmit = () => {
179
+ console.log('提交表单:', form);
180
+ // 发送请求...
181
+ };
182
+ </script>
183
+ </template>
184
+ ```
185
+
186
+ ## 调试
187
+
188
+ 开启调试模式查看详细日志:
189
+
190
+ ```typescript
191
+ initAgent({
192
+ serverUrl: 'ws://localhost:8987/ws/agent',
193
+ debug: true, // 开启调试
194
+ });
195
+ ```
196
+
197
+ ## License
198
+
199
+ MIT
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Agent全局状态管理组合式函数
3
+ *
4
+ * 提供响应式的连接状态、聊天记录等全局状态
5
+ */
6
+ import { type Ref, type DeepReadonly } from 'vue';
7
+ import { AgentClient } from '../core/AgentClient';
8
+ import { AgentClientConfig, ConnectionStatus, ChatMessage } from '../core/types';
9
+ export interface UseAgentReturn {
10
+ /** 连接状态 */
11
+ status: DeepReadonly<Ref<ConnectionStatus>>;
12
+ /** 是否已连接 */
13
+ isConnected: DeepReadonly<Ref<boolean>>;
14
+ /** 聊天记录 */
15
+ messages: DeepReadonly<Ref<ChatMessage[]>>;
16
+ /** 发送消息 */
17
+ sendMessage: (text: string) => void;
18
+ /** 清空聊天记录 */
19
+ clearMessages: () => void;
20
+ /** 连接 */
21
+ connect: () => void;
22
+ /** 断开连接 */
23
+ disconnect: () => void;
24
+ }
25
+ /**
26
+ * 使用Agent全局状态
27
+ *
28
+ * @param config - 可选的配置,仅在首次调用时生效
29
+ * @returns Agent状态和操作方法
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * // 在main.ts中初始化
34
+ * const { connect } = useAgent({
35
+ * serverUrl: 'ws://localhost:8987/ws/agent',
36
+ * routes: [...]
37
+ * });
38
+ * connect();
39
+ *
40
+ * // 在组件中使用
41
+ * const { status, messages, sendMessage } = useAgent();
42
+ * ```
43
+ */
44
+ export declare function useAgent(config?: AgentClientConfig): UseAgentReturn;
45
+ /**
46
+ * 初始化AgentClient
47
+ *
48
+ * 应在应用入口(如main.ts)中调用一次
49
+ *
50
+ * @param config - SDK配置
51
+ * @returns AgentClient实例
52
+ *
53
+ * @example
54
+ * ```ts
55
+ * // main.ts
56
+ * import { createApp } from 'vue';
57
+ * import { initAgent } from 'agent-client-sdk';
58
+ * import App from './App.vue';
59
+ * import router from './router';
60
+ *
61
+ * const app = createApp(App);
62
+ * app.use(router);
63
+ *
64
+ * // 初始化Agent
65
+ * initAgent({
66
+ * serverUrl: 'ws://localhost:8987/ws/agent',
67
+ * routes: router.getRoutes().map(r => ({
68
+ * path: r.path,
69
+ * name: String(r.name || r.path),
70
+ * title: r.meta?.title || String(r.name || r.path)
71
+ * })),
72
+ * debug: true
73
+ * });
74
+ *
75
+ * app.mount('#app');
76
+ * ```
77
+ */
78
+ export declare function initAgent(config: AgentClientConfig): AgentClient;
79
+ //# sourceMappingURL=useAgent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAgent.d.ts","sourceRoot":"","sources":["../../src/composables/useAgent.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAwC,KAAK,GAAG,EAAE,KAAK,YAAY,EAAE,MAAM,KAAK,CAAC;AACxF,OAAO,EACL,WAAW,EAGZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EAEZ,MAAM,eAAe,CAAC;AAOvB,MAAM,WAAW,cAAc;IAC7B,WAAW;IACX,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC5C,YAAY;IACZ,WAAW,EAAE,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACxC,WAAW;IACX,QAAQ,EAAE,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC3C,WAAW;IACX,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,aAAa;IACb,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,SAAS;IACT,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW;IACX,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,QAAQ,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,cAAc,CA6DnE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW,CAsBhE"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * 组件能力注册组合式函数
3
+ *
4
+ * 在Vue组件中注册页面能力,供Agent调用
5
+ */
6
+ import { PageCapability, RouteInfo } from '../core/types';
7
+ export interface UseAgentActionOptions {
8
+ /** 是否在挂载时自动注册 */
9
+ autoRegister?: boolean;
10
+ /** 是否在卸载时自动注销 */
11
+ autoUnregister?: boolean;
12
+ /** 当前路由信息 */
13
+ route?: RouteInfo;
14
+ }
15
+ /**
16
+ * 注册组件能力给Agent
17
+ *
18
+ * 在组件挂载时自动注册能力,卸载时自动注销
19
+ *
20
+ * @param capabilities - 页面能力列表
21
+ * @param options - 配置选项
22
+ *
23
+ * @example
24
+ * ```vue
25
+ * <script setup>
26
+ * import { useAgentAction } from 'agent-client-sdk';
27
+ *
28
+ * // 注册表单能力
29
+ * useAgentAction([
30
+ * {
31
+ * id: 'profile-form',
32
+ * type: 'form',
33
+ * name: '个人资料表单',
34
+ * description: '用于编辑用户个人资料信息',
35
+ * selector: '#profile-form',
36
+ * actions: ['fill', 'submit'],
37
+ * metadata: {
38
+ * fields: ['name', 'email', 'phone']
39
+ * }
40
+ * }
41
+ * ]);
42
+ * </script>
43
+ *
44
+ * <template>
45
+ * <form id="profile-form">
46
+ * <input name="name" />
47
+ * <input name="email" />
48
+ * <button type="submit">保存</button>
49
+ * </form>
50
+ * </template>
51
+ * ```
52
+ */
53
+ export declare function useAgentAction(capabilities: PageCapability[], options?: UseAgentActionOptions): {
54
+ /** 手动注册能力 */
55
+ register: () => void;
56
+ /** 手动注销能力 */
57
+ unregister: () => void;
58
+ /** 更新能力 */
59
+ update: (newCapabilities: PageCapability[]) => void;
60
+ };
61
+ /**
62
+ * 注册按钮能力
63
+ *
64
+ * 便捷方法,用于快速注册按钮点击能力
65
+ *
66
+ * @param id - 按钮ID
67
+ * @param name - 按钮名称
68
+ * @param description - 按钮描述
69
+ * @param selector - CSS选择器(可选,默认使用ID)
70
+ *
71
+ * @example
72
+ * ```vue
73
+ * <script setup>
74
+ * import { useAgentButton } from 'agent-client-sdk';
75
+ *
76
+ * useAgentButton('save-btn', '保存按钮', '点击保存表单数据');
77
+ * </script>
78
+ *
79
+ * <template>
80
+ * <button id="save-btn">保存</button>
81
+ * </template>
82
+ * ```
83
+ */
84
+ export declare function useAgentButton(id: string, name: string, description: string, selector?: string): void;
85
+ /**
86
+ * 注册表单能力
87
+ *
88
+ * 便捷方法,用于快速注册表单填充能力
89
+ *
90
+ * @param id - 表单ID
91
+ * @param name - 表单名称
92
+ * @param description - 表单描述
93
+ * @param fields - 表单字段列表
94
+ * @param selector - CSS选择器(可选,默认使用ID)
95
+ * @param options - 额外选项
96
+ *
97
+ * @example
98
+ * ```vue
99
+ * <script setup>
100
+ * import { useAgentForm } from 'agent-client-sdk';
101
+ *
102
+ * useAgentForm(
103
+ * 'profile-form',
104
+ * '个人资料表单',
105
+ * '编辑用户个人资料',
106
+ * ['name', 'email', 'phone'],
107
+ * '#profile-form',
108
+ * { canSubmit: true }
109
+ * );
110
+ * </script>
111
+ * ```
112
+ */
113
+ export declare function useAgentForm(id: string, name: string, description: string, fields: string[], selector?: string, options?: {
114
+ canSubmit?: boolean;
115
+ }): void;
116
+ /**
117
+ * 注册输入框能力
118
+ *
119
+ * 便捷方法,用于快速注册输入框设置值能力
120
+ *
121
+ * @param id - 输入框ID
122
+ * @param name - 输入框名称
123
+ * @param description - 输入框描述
124
+ * @param selector - CSS选择器(可选,默认使用ID)
125
+ *
126
+ * @example
127
+ * ```vue
128
+ * <script setup>
129
+ * import { useAgentInput } from 'agent-client-sdk';
130
+ *
131
+ * useAgentInput('username', '用户名', '输入用户名');
132
+ * </script>
133
+ *
134
+ * <template>
135
+ * <input id="username" name="username" />
136
+ * </template>
137
+ * ```
138
+ */
139
+ export declare function useAgentInput(id: string, name: string, description: string, selector?: string): void;
140
+ //# sourceMappingURL=useAgentAction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAgentAction.d.ts","sourceRoot":"","sources":["../../src/composables/useAgentAction.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1D,MAAM,WAAW,qBAAqB;IACpC,iBAAiB;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,iBAAiB;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa;IACb,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,cAAc,CAC5B,YAAY,EAAE,cAAc,EAAE,EAC9B,OAAO,GAAE,qBAA0B,GAClC;IACD,aAAa;IACb,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,aAAa;IACb,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW;IACX,MAAM,EAAE,CAAC,eAAe,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;CACrD,CAgFA;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,GAChB,IAAI,CAWN;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,YAAY,CAC1B,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EAAE,EAChB,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,GACpC,IAAI,CAiBN;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,aAAa,CAC3B,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,GAChB,IAAI,CAWN"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Agent客户端核心类
3
+ *
4
+ * 管理WebSocket连接、消息收发、命令执行
5
+ */
6
+ import { AgentClientConfig, ConnectionStatus, WebSocketMessage, RouteInfo, PageCapability, ChatMessage, CommandHandler } from './types';
7
+ export declare class AgentClient {
8
+ private ws;
9
+ private config;
10
+ private status;
11
+ private reconnectAttempts;
12
+ private reconnectTimer;
13
+ private heartbeatTimer;
14
+ private sessionId;
15
+ private messageListeners;
16
+ private statusListeners;
17
+ private commandHandlers;
18
+ private chatMessages;
19
+ private messageListenersChat;
20
+ private pendingCommands;
21
+ private messageQueue;
22
+ private static readonly DEFAULT_CONFIG;
23
+ constructor(config: AgentClientConfig);
24
+ /**
25
+ * 生成会话ID
26
+ */
27
+ private generateSessionId;
28
+ /**
29
+ * 日志输出
30
+ */
31
+ private log;
32
+ /**
33
+ * 注册默认命令处理器
34
+ */
35
+ private registerDefaultCommandHandlers;
36
+ /**
37
+ * 连接到WebSocket服务器
38
+ */
39
+ connect(): void;
40
+ /**
41
+ * 断开连接
42
+ */
43
+ disconnect(): void;
44
+ /**
45
+ * 尝试重连
46
+ */
47
+ private attemptReconnect;
48
+ /**
49
+ * 清除重连定时器
50
+ */
51
+ private clearReconnectTimer;
52
+ /**
53
+ * 启动心跳
54
+ */
55
+ private startHeartbeat;
56
+ /**
57
+ * 停止心跳
58
+ */
59
+ private stopHeartbeat;
60
+ /**
61
+ * 发送握手消息
62
+ */
63
+ private sendHandshake;
64
+ /**
65
+ * 发送消息
66
+ */
67
+ sendMessage(message: WebSocketMessage): boolean;
68
+ /**
69
+ * 处理接收到的消息
70
+ */
71
+ private handleMessage;
72
+ /**
73
+ * 处理Agent消息
74
+ */
75
+ private handleAgentMessage;
76
+ /**
77
+ * 处理Agent控制指令
78
+ */
79
+ private handleAgentCommand;
80
+ /**
81
+ * 发送用户输入
82
+ */
83
+ sendInput(text: string, context?: Record<string, any>): void;
84
+ /**
85
+ * 更新页面能力
86
+ */
87
+ updateCapabilities(action: 'mount' | 'unmount' | 'update' | 'route_change', currentRoute?: RouteInfo, capabilities?: PageCapability[]): void;
88
+ /**
89
+ * 设置连接状态
90
+ */
91
+ private setStatus;
92
+ /**
93
+ * 获取当前连接状态
94
+ */
95
+ getStatus(): ConnectionStatus;
96
+ /**
97
+ * 获取会话ID
98
+ */
99
+ getSessionId(): string;
100
+ /**
101
+ * 获取聊天记录
102
+ */
103
+ getChatMessages(): ChatMessage[];
104
+ /**
105
+ * 清空聊天记录
106
+ */
107
+ clearChatMessages(): void;
108
+ /**
109
+ * 注册消息监听器
110
+ */
111
+ onMessage(listener: (message: WebSocketMessage) => void): () => void;
112
+ /**
113
+ * 注册状态监听器
114
+ */
115
+ onStatusChange(listener: (status: ConnectionStatus) => void): () => void;
116
+ /**
117
+ * 注册聊天消息监听器
118
+ */
119
+ onChatMessages(listener: (messages: ChatMessage[]) => void): () => void;
120
+ /**
121
+ * 通知聊天监听器
122
+ */
123
+ private notifyChatListeners;
124
+ /**
125
+ * 注册自定义命令处理器
126
+ */
127
+ registerCommandHandler(action: string, handler: CommandHandler): void;
128
+ /**
129
+ * 注销命令处理器
130
+ */
131
+ unregisterCommandHandler(action: string): void;
132
+ }
133
+ /**
134
+ * 获取全局AgentClient实例
135
+ */
136
+ export declare function getGlobalClient(): AgentClient | null;
137
+ /**
138
+ * 设置全局AgentClient实例
139
+ */
140
+ export declare function setGlobalClient(client: AgentClient): void;
141
+ //# sourceMappingURL=AgentClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentClient.d.ts","sourceRoot":"","sources":["../../src/core/AgentClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * 类型定义
3
+ */
4
+ /** 路由信息 */
5
+ export interface RouteInfo {
6
+ path: string;
7
+ name: string;
8
+ title: string;
9
+ meta?: Record<string, any>;
10
+ }
11
+ /** 页面能力 */
12
+ export interface PageCapability {
13
+ id: string;
14
+ type: 'form' | 'button' | 'input' | 'table' | 'select' | 'other';
15
+ name: string;
16
+ description: string;
17
+ selector: string;
18
+ actions: string[];
19
+ metadata?: Record<string, any>;
20
+ }
21
+ /** 消息类型 */
22
+ export declare enum MessageType {
23
+ CLIENT_HANDSHAKE = "CLIENT_HANDSHAKE",
24
+ CLIENT_UPDATE = "CLIENT_UPDATE",
25
+ CLIENT_INPUT = "CLIENT_INPUT",
26
+ CLIENT_RESULT = "CLIENT_RESULT",
27
+ CLIENT_HEARTBEAT = "CLIENT_HEARTBEAT",
28
+ AGENT_MESSAGE = "AGENT_MESSAGE",
29
+ AGENT_COMMAND = "AGENT_COMMAND",
30
+ SERVER_ACK = "SERVER_ACK",
31
+ SERVER_ERROR = "SERVER_ERROR",
32
+ SERVER_HEARTBEAT = "SERVER_HEARTBEAT"
33
+ }
34
+ /** WebSocket消息 */
35
+ export interface WebSocketMessage {
36
+ type: MessageType;
37
+ sessionId: string;
38
+ timestamp: string;
39
+ payload?: any;
40
+ }
41
+ /** Agent控制指令 */
42
+ export interface AgentCommand {
43
+ commandId: string;
44
+ action: 'navigate' | 'fillForm' | 'click' | 'setValue' | 'scroll';
45
+ target: string;
46
+ params?: Record<string, any>;
47
+ description: string;
48
+ }
49
+ /** Agent消息 */
50
+ export interface AgentMessage {
51
+ text: string;
52
+ type: 'text' | 'markdown' | 'html';
53
+ suggestions?: string[];
54
+ }
55
+ /** SDK配置 */
56
+ export interface AgentClientConfig {
57
+ /** WebSocket服务器地址 */
58
+ serverUrl: string;
59
+ /** 应用路由列表 */
60
+ routes: RouteInfo[];
61
+ /** 自动重连间隔(毫秒) */
62
+ reconnectInterval?: number;
63
+ /** 最大重连次数 */
64
+ maxReconnectAttempts?: number;
65
+ /** 心跳间隔(毫秒) */
66
+ heartbeatInterval?: number;
67
+ /** 调试模式 */
68
+ debug?: boolean;
69
+ /** 会话ID(可选,不提供则自动生成) */
70
+ sessionId?: string;
71
+ }
72
+ /** 聊天消息 */
73
+ export interface ChatMessage {
74
+ id: string;
75
+ role: 'user' | 'agent';
76
+ content: string;
77
+ timestamp: number;
78
+ type?: 'text' | 'command';
79
+ command?: AgentCommand;
80
+ }
81
+ /** 连接状态 */
82
+ export declare enum ConnectionStatus {
83
+ DISCONNECTED = "disconnected",
84
+ CONNECTING = "connecting",
85
+ CONNECTED = "connected",
86
+ RECONNECTING = "reconnecting",
87
+ ERROR = "error"
88
+ }
89
+ /** 命令执行结果 */
90
+ export interface CommandResult {
91
+ success: boolean;
92
+ result?: any;
93
+ error?: string;
94
+ }
95
+ /** 命令处理器 */
96
+ export type CommandHandler = (command: AgentCommand) => Promise<CommandResult> | CommandResult;
97
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Agent Client SDK
3
+ *
4
+ * 智能页面控制Agent前端SDK
5
+ * 提供WebSocket连接管理、页面能力注册、命令执行等功能
6
+ */
7
+ export { AgentClient, getGlobalClient, setGlobalClient } from './core/AgentClient';
8
+ export { useAgent, initAgent, type UseAgentReturn } from './composables/useAgent';
9
+ export { useAgentAction, useAgentButton, useAgentForm, useAgentInput, type UseAgentActionOptions, } from './composables/useAgentAction';
10
+ export { MessageType, ConnectionStatus, type RouteInfo, type PageCapability, type WebSocketMessage, type AgentCommand, type AgentMessage, type AgentClientConfig, type ChatMessage, type CommandResult, type CommandHandler, } from './core/types';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGnF,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EACL,cAAc,EACd,cAAc,EACd,YAAY,EACZ,aAAa,EACb,KAAK,qBAAqB,GAC3B,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAEL,WAAW,EACX,gBAAgB,EAGhB,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,cAAc,GACpB,MAAM,cAAc,CAAC"}