@core-pilot/sdk 0.0.0-beta.1 → 0.0.0-beta.3
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 +183 -3
- package/dist/index.css +1 -1
- package/dist/index.js +368 -255
- package/dist/index.umd.cjs +1 -1
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -1,5 +1,185 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @core-pilot/sdk
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
`@core-pilot/sdk` 是一个轻量级、框架无关的 JavaScript SDK,旨在帮助开发者快速将 AI 智能助手(Agent)能力集成到现有的 Web 应用中。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
它提供了开箱即用的 UI 组件、标准化的通信协议抽象(Provider)、以及完善的事件交互机制(HITL),支持与后端 AI 引擎(如 CoreAgent、Dify 等)进行无缝对接。
|
|
6
|
+
|
|
7
|
+
## 核心功能
|
|
8
|
+
|
|
9
|
+
- **⚡️ 快速集成**:通过简单的配置即可挂载完整的 AI 对话界面。
|
|
10
|
+
- **🔌 多协议支持**:内置 CoreAgent 协议支持,架构设计支持扩展 Dify 等其他 Provider。
|
|
11
|
+
- **🔄 事件驱动**:提供 `subscribeEvent` 和 `triggerEvent` 接口,实现宿主应用与 Agent 之间的双向通信(Code Bridge)。
|
|
12
|
+
- **🔐 鉴权管理**:支持 Client/Server 模式的 Token 管理。
|
|
13
|
+
- **🎨 样式隔离**:自带样式(需引入 CSS),支持自定义挂载点。
|
|
14
|
+
|
|
15
|
+
## 安装
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# npm
|
|
19
|
+
npm install @core-pilot/sdk
|
|
20
|
+
|
|
21
|
+
# pnpm
|
|
22
|
+
pnpm add @core-pilot/sdk
|
|
23
|
+
|
|
24
|
+
# yarn
|
|
25
|
+
yarn add @core-pilot/sdk
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## 快速开始
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
import { createCorePilot } from '@core-pilot/sdk';
|
|
32
|
+
import '@core-pilot/sdk/dist/index.css'; // 引入样式
|
|
33
|
+
|
|
34
|
+
// 1. 初始化 SDK 实例
|
|
35
|
+
const pilot = createCorePilot({
|
|
36
|
+
// 基础配置
|
|
37
|
+
appId: 'your-app-id',
|
|
38
|
+
baseUrl: 'https://your-agent-api.com',
|
|
39
|
+
provider: 'coreagent', // 目前支持 'coreagent' | 'dify'
|
|
40
|
+
|
|
41
|
+
// 鉴权配置
|
|
42
|
+
auth: {
|
|
43
|
+
mode: 'client', // 'client' | 'server'
|
|
44
|
+
token: 'your-api-secret-key',
|
|
45
|
+
},
|
|
46
|
+
|
|
47
|
+
// 挂载配置
|
|
48
|
+
mount: {
|
|
49
|
+
selector: '#agent-container', // 宿主应用中的 DOM 节点 ID
|
|
50
|
+
},
|
|
51
|
+
|
|
52
|
+
// 调试模式
|
|
53
|
+
debug: true,
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
// 2. 挂载 UI
|
|
57
|
+
pilot.mount();
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## 功能指南 (按能力)
|
|
61
|
+
|
|
62
|
+
### 1. 基础挂载与生命周期管理
|
|
63
|
+
|
|
64
|
+
SDK 提供了完整的生命周期管理方法,允许你在单页应用 (SPA) 中灵活控制 Agent 的显示与销毁。
|
|
65
|
+
|
|
66
|
+
```typescript
|
|
67
|
+
// 挂载 UI 到指定节点
|
|
68
|
+
pilot.mount();
|
|
69
|
+
|
|
70
|
+
// 卸载 UI (清除 DOM 内容,但保留实例配置)
|
|
71
|
+
pilot.unmount();
|
|
72
|
+
|
|
73
|
+
// 重新加载 (可传入新配置,常用于切换租户或更新 Token)
|
|
74
|
+
pilot.reload({
|
|
75
|
+
auth: {
|
|
76
|
+
mode: 'client',
|
|
77
|
+
token: 'new-token'
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
// 彻底销毁实例 (清除日志、订阅等)
|
|
82
|
+
pilot.destroy();
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### 2. 双向通信 (Code Bridge / HITL)
|
|
86
|
+
|
|
87
|
+
这是 SDK 的核心能力之一。通过事件机制,Agent 可以控制宿主应用(例如:Agent 请求打开某个文件),宿主应用也可以向 Agent 发送隐式指令。
|
|
88
|
+
|
|
89
|
+
#### 监听 Agent 事件 (Agent -> App)
|
|
90
|
+
|
|
91
|
+
当 Agent 需要执行本地操作(如打开 IDE 文件、跳转页面)时,会下发自定义事件。
|
|
92
|
+
|
|
93
|
+
> 另外的,针对action的类型,这里做如下的规范约定:
|
|
94
|
+
>所有的操作action分为以下三种情况,及其对应的命名定义
|
|
95
|
+
> 1. 通过sdk 与后端进行交互部分:**core_业务场景**
|
|
96
|
+
> 2. 当前卡片组件纯前端交互(上一步,下一步):**inner_业务场景**
|
|
97
|
+
> 3. 透传到sdk外部,供用户调用事件:**cust_业务场景**
|
|
98
|
+
|
|
99
|
+
```typescript
|
|
100
|
+
// 订阅事件
|
|
101
|
+
pilot.subscribeEvent((event) => {
|
|
102
|
+
console.log('收到 Agent 事件:', event);
|
|
103
|
+
|
|
104
|
+
// 示例:处理打开文件请求
|
|
105
|
+
if (event.type === 'open_file') {
|
|
106
|
+
const { filePath, line } = event.payload;
|
|
107
|
+
myEditor.open(filePath, line);
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
#### 触发 Agent 行为 (App -> Agent)
|
|
113
|
+
|
|
114
|
+
宿主应用可以主动触发 Agent 的某些行为,或者获取 Agent 的内部数据。目前支持的事件类型如下:
|
|
115
|
+
|
|
116
|
+
| 事件类型 | 说明 |
|
|
117
|
+
|------|------|
|
|
118
|
+
| get_suggestion_questions | 获取推荐问题 |
|
|
119
|
+
| get_conversation_list | 获取会话列表 |
|
|
120
|
+
| get_message_history | 获取消息历史 |
|
|
121
|
+
| submit_core_action | 提交核心业务场景 |
|
|
122
|
+
| new_message | 打开新对话触发,用于重置消息历史 |
|
|
123
|
+
| submit_message | 提交通过对话框输入的消息 |
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
```typescript
|
|
127
|
+
// 触发 SDK 内部行为
|
|
128
|
+
pilot.triggerEvent({
|
|
129
|
+
action: 'get_suggestion_questions', // 示例:获取推荐问题
|
|
130
|
+
payload: {
|
|
131
|
+
// ... 具体的请求参数
|
|
132
|
+
}
|
|
133
|
+
}).then(res => {
|
|
134
|
+
console.log('Result:', res);
|
|
135
|
+
});
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### 3. 鉴权配置 (Authentication)
|
|
139
|
+
|
|
140
|
+
支持两种模式:
|
|
141
|
+
|
|
142
|
+
- **Client Mode**: 直接在前端传入 API Key(仅用于开发或内网环境)。
|
|
143
|
+
- **Server Mode**: 通过后端代理转发,前端不暴露 Key(推荐生产环境)。
|
|
144
|
+
|
|
145
|
+
```typescript
|
|
146
|
+
// Client Mode
|
|
147
|
+
const pilot = createCorePilot({
|
|
148
|
+
// ...
|
|
149
|
+
auth: {
|
|
150
|
+
mode: 'client',
|
|
151
|
+
token: 'sk-xxxxxxxx',
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
// Server Mode (通常配合自定义的 AuthManager 或 Proxy Url)
|
|
156
|
+
// 目前 SDK 内部会根据 mode 处理请求头的组装
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### 4. 调试与日志
|
|
160
|
+
|
|
161
|
+
开启 `debug` 模式后,SDK 会在控制台输出详细的运行日志,方便排查连接、鉴权和事件流问题。
|
|
162
|
+
|
|
163
|
+
```typescript
|
|
164
|
+
const pilot = createCorePilot({
|
|
165
|
+
// ...
|
|
166
|
+
debug: true, // 开启调试日志
|
|
167
|
+
eventTracker: {
|
|
168
|
+
url: 'https://monitor.example.com/log', // 可选:上报日志到服务器
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
## API 参考
|
|
174
|
+
|
|
175
|
+
### `CorePilotOptions`
|
|
176
|
+
|
|
177
|
+
| 属性 | 类型 | 必填 | 说明 |
|
|
178
|
+
|------|------|------|------|
|
|
179
|
+
| `appId` | string | 是 | Agent 应用 ID |
|
|
180
|
+
| `baseUrl` | string | 否 | API 服务基础地址 |
|
|
181
|
+
| `provider` | `'coreagent' \| 'dify'` | 是 | 协议提供商 |
|
|
182
|
+
| `auth` | `AuthOptions` | 是 | 鉴权配置 `{ mode, token }` |
|
|
183
|
+
| `mount` | `MountOptions` | 是 | 挂载配置 `{ selector, container? }` |
|
|
184
|
+
| `debug` | boolean | 否 | 是否开启调试模式 |
|
|
185
|
+
| `hitl` | boolean | 否 | 是否启用 Human-in-the-Loop 功能 |
|