vite-plugin-opencode-assistant 1.0.2 → 1.0.4
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 +189 -184
- package/dist/constants.d.ts +4 -6
- package/dist/constants.js +21 -23
- package/dist/constants.js.map +1 -0
- package/dist/logger.d.ts +64 -0
- package/dist/logger.js +311 -0
- package/dist/logger.js.map +1 -0
- package/dist/{plugins → opencode/plugins}/page-context.d.ts +0 -13
- package/dist/opencode/plugins/page-context.js +372 -0
- package/dist/opencode/plugins/page-context.js.map +1 -0
- package/dist/opencode/web.d.ts +3 -0
- package/dist/opencode/web.js +81 -0
- package/dist/opencode/web.js.map +1 -0
- package/dist/types.d.ts +4 -8
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -0
- package/dist/vite/client.js +2468 -0
- package/dist/vite/client.js.map +1 -0
- package/dist/vite/index.d.ts +3 -0
- package/dist/vite/index.js +697 -0
- package/dist/vite/index.js.map +1 -0
- package/dist/vite/injector.d.ts +2 -0
- package/dist/vite/injector.js +6 -0
- package/dist/vite/injector.js.map +1 -0
- package/dist/vite/utils.d.ts +5 -0
- package/dist/vite/utils.js +206 -0
- package/dist/vite/utils.js.map +1 -0
- package/package.json +17 -6
- package/dist/client.js +0 -1549
- package/dist/index.d.ts +0 -23
- package/dist/index.js +0 -451
- package/dist/injector.d.ts +0 -20
- package/dist/injector.js +0 -24
- package/dist/plugins/page-context.js +0 -121
- package/dist/utils.d.ts +0 -42
- package/dist/utils.js +0 -156
- package/dist/web.d.ts +0 -18
- package/dist/web.js +0 -95
- /package/dist/{client.d.ts → vite/client.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -1,282 +1,287 @@
|
|
|
1
|
-
# vite-plugin-opencode
|
|
1
|
+
# vite-plugin-opencode-assistant
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
一个面向 Vite 开发环境的插件:在页面内注入 OpenCode 对话挂件,自动启动 OpenCode Web,并把当前页面 URL、标题以及选中的页面节点同步给 AI,便于一边聊天一边改代码、立即通过 HMR 看到结果。
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## 它能做什么
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
7
|
+
- 在 `vite serve` 时自动注入一个悬浮 AI 按钮和对话面板
|
|
8
|
+
- 自动启动本地 OpenCode Web 服务,并为当前项目复用或创建会话
|
|
9
|
+
- 把当前页面 URL、标题同步到 OpenCode 会话上下文
|
|
10
|
+
- 支持把页面上选中的节点信息同步给 AI,帮助它直接定位组件文件与行号
|
|
11
|
+
- 内置会话列表,可在挂件中切换、新建、删除当前项目的 OpenCode 会话
|
|
12
|
+
- 支持快捷键、主题、初始展开状态、悬浮位置等配置
|
|
13
|
+
- 支持启动后预热 Chrome DevTools MCP,减少首次使用浏览器工具时的等待
|
|
13
14
|
|
|
14
|
-
##
|
|
15
|
+
## 工作方式
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
npm install -D vite-plugin-opencode
|
|
18
|
-
```
|
|
17
|
+
启动 Vite 开发服务器后,插件会做这几件事:
|
|
19
18
|
|
|
20
|
-
|
|
19
|
+
1. 在 HTML 中注入浏览器端挂件脚本
|
|
20
|
+
2. 检查本机是否已安装 `opencode`
|
|
21
|
+
3. 启动 OpenCode Web 服务,默认使用 `127.0.0.1:4097`
|
|
22
|
+
4. 在当前项目目录下查找已有会话;如果没有,则创建新会话
|
|
23
|
+
5. 把页面上下文通过本地接口同步给 OpenCode
|
|
24
|
+
6. 页面代码被 OpenCode 修改后,由 Vite HMR 立即刷新效果
|
|
21
25
|
|
|
22
|
-
|
|
26
|
+
当前实现只在开发模式生效:
|
|
23
27
|
|
|
24
|
-
|
|
28
|
+
- 仅在 `vite serve` 时启用
|
|
29
|
+
- `build` 阶段不会注入挂件
|
|
30
|
+
- `enabled` 默认值是 `false`,需要显式开启
|
|
31
|
+
|
|
32
|
+
## 安装
|
|
25
33
|
|
|
26
|
-
**Using Homebrew (macOS):**
|
|
27
34
|
```bash
|
|
28
|
-
|
|
35
|
+
npm install -D vite-plugin-opencode-assistant
|
|
29
36
|
```
|
|
30
37
|
|
|
31
|
-
|
|
38
|
+
## 前置条件
|
|
39
|
+
|
|
40
|
+
本插件依赖本机已安装 [OpenCode](https://opencode.ai) CLI。
|
|
41
|
+
|
|
42
|
+
推荐安装方式:
|
|
43
|
+
|
|
32
44
|
```bash
|
|
33
|
-
curl -fsSL https://
|
|
45
|
+
curl -fsSL https://opencode.ai/install | bash
|
|
34
46
|
```
|
|
35
47
|
|
|
36
|
-
|
|
48
|
+
也可以使用包管理器:
|
|
49
|
+
|
|
37
50
|
```bash
|
|
38
|
-
|
|
51
|
+
npm i -g opencode-ai@latest
|
|
52
|
+
brew install anomalyco/tap/opencode
|
|
39
53
|
```
|
|
40
54
|
|
|
41
|
-
|
|
55
|
+
如果你保留默认的 `warmupChromeMcp: true`,首次启动时还会通过 `npx` 拉起 `chrome-devtools-mcp` 来预热浏览器工具链。
|
|
42
56
|
|
|
43
|
-
|
|
57
|
+
## 快速开始
|
|
44
58
|
|
|
45
|
-
|
|
59
|
+
由于当前实现默认 `enabled: false`,最小可用配置如下:
|
|
46
60
|
|
|
47
|
-
```
|
|
48
|
-
import { defineConfig } from
|
|
49
|
-
import
|
|
61
|
+
```ts
|
|
62
|
+
import { defineConfig } from "vite";
|
|
63
|
+
import opencodeAssistant from "vite-plugin-opencode-assistant";
|
|
50
64
|
|
|
51
65
|
export default defineConfig({
|
|
52
66
|
plugins: [
|
|
53
|
-
|
|
67
|
+
opencodeAssistant({
|
|
68
|
+
enabled: true,
|
|
69
|
+
}),
|
|
54
70
|
],
|
|
55
|
-
})
|
|
71
|
+
});
|
|
56
72
|
```
|
|
57
73
|
|
|
58
|
-
|
|
74
|
+
启动开发服务器:
|
|
59
75
|
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
|
|
76
|
+
```bash
|
|
77
|
+
npm run dev
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
启动后页面右下角会出现悬浮按钮,点击即可打开 OpenCode 面板。
|
|
81
|
+
|
|
82
|
+
## 推荐配置示例
|
|
83
|
+
|
|
84
|
+
```ts
|
|
85
|
+
import { defineConfig } from "vite";
|
|
86
|
+
import vue from "@vitejs/plugin-vue";
|
|
87
|
+
import opencodeAssistant from "vite-plugin-opencode-assistant";
|
|
63
88
|
|
|
64
89
|
export default defineConfig({
|
|
65
90
|
plugins: [
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
91
|
+
vue(),
|
|
92
|
+
opencodeAssistant({
|
|
93
|
+
enabled: true,
|
|
94
|
+
webPort: 4097,
|
|
95
|
+
hostname: "127.0.0.1",
|
|
96
|
+
position: "bottom-right",
|
|
97
|
+
theme: "auto",
|
|
72
98
|
open: false,
|
|
73
99
|
autoReload: true,
|
|
100
|
+
verbose: false,
|
|
101
|
+
hotkey: "ctrl+k",
|
|
102
|
+
warmupChromeMcp: true,
|
|
74
103
|
}),
|
|
75
104
|
],
|
|
76
|
-
})
|
|
105
|
+
});
|
|
77
106
|
```
|
|
78
107
|
|
|
79
|
-
|
|
108
|
+
## 配置项
|
|
80
109
|
|
|
81
|
-
```
|
|
82
|
-
|
|
110
|
+
```ts
|
|
111
|
+
interface OpenCodeOptions {
|
|
112
|
+
enabled?: boolean;
|
|
113
|
+
webPort?: number;
|
|
114
|
+
hostname?: string;
|
|
115
|
+
position?: "bottom-right" | "bottom-left" | "top-right" | "top-left";
|
|
116
|
+
theme?: "light" | "dark" | "auto";
|
|
117
|
+
open?: boolean;
|
|
118
|
+
autoReload?: boolean;
|
|
119
|
+
verbose?: boolean;
|
|
120
|
+
hotkey?: string;
|
|
121
|
+
warmupChromeMcp?: boolean;
|
|
122
|
+
}
|
|
83
123
|
```
|
|
84
124
|
|
|
85
|
-
|
|
125
|
+
配置说明:
|
|
86
126
|
|
|
87
|
-
|
|
127
|
+
| 配置项 | 默认值 | 说明 |
|
|
128
|
+
| ----------------- | ---------------- | ------------------------------------------------------------------- |
|
|
129
|
+
| `enabled` | `false` | 是否启用插件。当前版本必须手动设为 `true` 才会生效 |
|
|
130
|
+
| `webPort` | `4097` | OpenCode Web 端口。如果端口被占用,会从当前端口开始向后寻找可用端口 |
|
|
131
|
+
| `hostname` | `127.0.0.1` | OpenCode Web 绑定地址 |
|
|
132
|
+
| `position` | `"bottom-right"` | 悬浮挂件位置 |
|
|
133
|
+
| `theme` | `"auto"` | 挂件主题,`auto` 会跟随系统明暗色 |
|
|
134
|
+
| `open` | `false` | 页面初始化后是否自动展开挂件 |
|
|
135
|
+
| `autoReload` | `true` | 控制挂件侧的自动重载提示行为 |
|
|
136
|
+
| `verbose` | `false` | 是否输出更详细的插件日志 |
|
|
137
|
+
| `hotkey` | `"ctrl+k"` | 切换挂件的快捷键,macOS 下同样支持 `cmd+k` |
|
|
138
|
+
| `warmupChromeMcp` | `true` | 启动后是否预热 Chrome DevTools MCP |
|
|
88
139
|
|
|
89
|
-
|
|
90
|
-
┌─────────────────────────────────────────────────┐
|
|
91
|
-
│ Vite Dev Server (5173) │
|
|
92
|
-
│ │
|
|
93
|
-
│ ┌───────────────────────────────────────────┐ │
|
|
94
|
-
│ │ Your App (with HMR) │ │
|
|
95
|
-
│ │ - Embedded OpenCode Widget │ │
|
|
96
|
-
│ └───────────────────────────────────────────┘ │
|
|
97
|
-
│ │
|
|
98
|
-
│ ┌───────────────────────────────────────────┐ │
|
|
99
|
-
│ │ vite-plugin-opencode │ │
|
|
100
|
-
│ │ - OpenCode Server (4096) │ │
|
|
101
|
-
│ │ - OpenCode Web (4097) │ │
|
|
102
|
-
│ └───────────────────────────────────────────┘ │
|
|
103
|
-
└─────────────────────────────────────────────────┘
|
|
104
|
-
```
|
|
140
|
+
## 使用说明
|
|
105
141
|
|
|
106
|
-
###
|
|
142
|
+
### 1. 打开对话挂件
|
|
107
143
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
3. **OpenCode Server** reads and modifies the file
|
|
111
|
-
4. **Vite HMR** detects file change and hot-reloads the page
|
|
112
|
-
5. **User** sees the change instantly!
|
|
144
|
+
- 点击页面右下角悬浮按钮
|
|
145
|
+
- 或使用默认快捷键 `Ctrl/Cmd + K`
|
|
113
146
|
|
|
114
|
-
|
|
147
|
+
### 2. 切换会话
|
|
115
148
|
|
|
116
|
-
|
|
117
|
-
interface OpenCodeOptions {
|
|
118
|
-
// Enable/disable the plugin (default: true)
|
|
119
|
-
enabled?: boolean
|
|
120
|
-
|
|
121
|
-
// OpenCode Server port (default: 4096)
|
|
122
|
-
serverPort?: number
|
|
123
|
-
|
|
124
|
-
// OpenCode Web UI port (default: 4097)
|
|
125
|
-
webPort?: number
|
|
126
|
-
|
|
127
|
-
// Hostname (default: 'localhost')
|
|
128
|
-
hostname?: string
|
|
129
|
-
|
|
130
|
-
// Widget position (default: 'bottom-right')
|
|
131
|
-
position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'
|
|
132
|
-
|
|
133
|
-
// Theme (default: 'auto')
|
|
134
|
-
theme?: 'light' | 'dark' | 'auto'
|
|
135
|
-
|
|
136
|
-
// Auto-open chat window (default: false)
|
|
137
|
-
open?: boolean
|
|
138
|
-
|
|
139
|
-
// Enable auto-reload notifications (default: true)
|
|
140
|
-
autoReload?: boolean
|
|
141
|
-
}
|
|
142
|
-
```
|
|
149
|
+
挂件左侧带有当前项目的会话列表,支持:
|
|
143
150
|
|
|
144
|
-
|
|
151
|
+
- 查看当前项目下已有会话
|
|
152
|
+
- 新建会话
|
|
153
|
+
- 切换会话
|
|
154
|
+
- 删除会话
|
|
145
155
|
|
|
146
|
-
###
|
|
156
|
+
### 3. 同步页面上下文
|
|
147
157
|
|
|
148
|
-
|
|
149
|
-
// vite.config.ts
|
|
150
|
-
import { defineConfig } from 'vite'
|
|
151
|
-
import react from '@vitejs/plugin-react'
|
|
152
|
-
import opencode from 'vite-plugin-opencode'
|
|
158
|
+
挂件会自动同步以下信息:
|
|
153
159
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
opencode(),
|
|
158
|
-
],
|
|
159
|
-
})
|
|
160
|
-
```
|
|
160
|
+
- 当前页面 URL
|
|
161
|
+
- 当前页面标题
|
|
162
|
+
- 当前选中的页面节点
|
|
161
163
|
|
|
162
|
-
|
|
164
|
+
它会监听:
|
|
163
165
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
166
|
+
- `history.pushState`
|
|
167
|
+
- `history.replaceState`
|
|
168
|
+
- `popstate`
|
|
169
|
+
- `hashchange`
|
|
170
|
+
- `document.title` 变化
|
|
169
171
|
|
|
170
|
-
|
|
171
|
-
plugins: [
|
|
172
|
-
vue(),
|
|
173
|
-
opencode(),
|
|
174
|
-
],
|
|
175
|
-
})
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
## Use Cases
|
|
172
|
+
这意味着在 SPA 场景下切页后,上下文也会自动更新。
|
|
179
173
|
|
|
180
|
-
###
|
|
181
|
-
```
|
|
182
|
-
User: "Change the button color to red"
|
|
183
|
-
AI: Modifies App.css
|
|
184
|
-
Result: Button turns red instantly
|
|
185
|
-
```
|
|
174
|
+
### 4. 选择页面节点
|
|
186
175
|
|
|
187
|
-
|
|
188
|
-
```
|
|
189
|
-
User: "Add a login form"
|
|
190
|
-
AI: Creates LoginForm.jsx
|
|
191
|
-
Result: Login form appears on page
|
|
192
|
-
```
|
|
176
|
+
当前实现支持把页面节点作为上下文传给 AI,节点信息包括:
|
|
193
177
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
Result: Counter works correctly
|
|
199
|
-
```
|
|
178
|
+
- 源文件路径
|
|
179
|
+
- 行号和列号
|
|
180
|
+
- 节点文本
|
|
181
|
+
- 节点描述
|
|
200
182
|
|
|
201
|
-
|
|
183
|
+
默认通过 `Ctrl/Cmd + P` 进入选择模式。
|
|
202
184
|
|
|
203
|
-
|
|
185
|
+
需要注意:
|
|
204
186
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
187
|
+
- 这项能力依赖页面中可用的 Vue Inspector 钩子
|
|
188
|
+
- 如果页面中没有可用的 Inspector,挂件会提示“Vue Inspector 未加载,无法使用元素选择功能”
|
|
189
|
+
- 选中的节点会暂存在 `sessionStorage` 中
|
|
208
190
|
|
|
209
|
-
|
|
210
|
-
window.OpenCodeWidget.close()
|
|
191
|
+
## 浏览器端全局 API
|
|
211
192
|
|
|
212
|
-
|
|
213
|
-
window.OpenCodeWidget.toggle()
|
|
193
|
+
挂件会暴露一个全局对象:
|
|
214
194
|
|
|
215
|
-
|
|
216
|
-
window.OpenCodeWidget.
|
|
195
|
+
```js
|
|
196
|
+
window.OpenCodeWidget.open();
|
|
197
|
+
window.OpenCodeWidget.close();
|
|
198
|
+
window.OpenCodeWidget.toggle();
|
|
199
|
+
window.OpenCodeWidget.showNotification("Code updated!");
|
|
200
|
+
window.OpenCodeWidget.updateContext();
|
|
217
201
|
```
|
|
218
202
|
|
|
219
|
-
|
|
203
|
+
适用场景:
|
|
220
204
|
|
|
221
|
-
-
|
|
205
|
+
- 从你自己的调试面板中主动打开挂件
|
|
206
|
+
- 在页面状态发生重要变化后手动触发一次上下文同步
|
|
207
|
+
- 在自定义流程中复用现有的通知能力
|
|
222
208
|
|
|
223
|
-
##
|
|
209
|
+
## 本地接口
|
|
210
|
+
|
|
211
|
+
插件会在 Vite 开发服务器上挂出几个内部接口,供挂件与 OpenCode 协作使用:
|
|
212
|
+
|
|
213
|
+
| 路径 | 说明 |
|
|
214
|
+
| ------------------------- | ------------------------------------------ |
|
|
215
|
+
| `/__opencode_widget__.js` | 浏览器端挂件脚本 |
|
|
216
|
+
| `/__opencode_start__` | 返回当前服务启动状态与会话地址 |
|
|
217
|
+
| `/__opencode_context__` | 读写页面上下文、清空已选节点 |
|
|
218
|
+
| `/__opencode_sessions__` | 查询、创建、删除 OpenCode 会话 |
|
|
219
|
+
| `/__opencode_events__` | SSE 事件流,用于同步会话就绪和节点清空事件 |
|
|
220
|
+
|
|
221
|
+
这些接口是插件内部实现细节,通常不需要业务代码直接调用。
|
|
222
|
+
|
|
223
|
+
## 常见问题
|
|
224
224
|
|
|
225
225
|
### OpenCode not installed
|
|
226
226
|
|
|
227
|
-
|
|
227
|
+
如果控制台提示未安装 OpenCode,先确认命令行里可以正常执行:
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
opencode --version
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
若无法执行,请先完成 OpenCode CLI 安装。
|
|
228
234
|
|
|
229
|
-
###
|
|
235
|
+
### 端口冲突
|
|
230
236
|
|
|
231
|
-
|
|
237
|
+
当前实现只开放了 `webPort` 配置项,没有单独暴露 server 端口配置。
|
|
232
238
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
239
|
+
如果默认端口被占用,可以改成:
|
|
240
|
+
|
|
241
|
+
```ts
|
|
242
|
+
opencodeAssistant({
|
|
243
|
+
enabled: true,
|
|
236
244
|
webPort: 5001,
|
|
237
|
-
})
|
|
245
|
+
});
|
|
238
246
|
```
|
|
239
247
|
|
|
240
|
-
|
|
248
|
+
如果你不改配置,插件也会从 `webPort` 开始继续向后寻找可用端口。
|
|
241
249
|
|
|
242
|
-
|
|
250
|
+
### 页面里没有节点选择能力
|
|
243
251
|
|
|
244
|
-
|
|
252
|
+
这通常意味着当前页面里没有可用的 Vue Inspector 钩子。挂件仍然可以正常聊天和同步 URL/标题,只是无法通过页面点选节点来辅助定位代码。
|
|
245
253
|
|
|
246
|
-
###
|
|
254
|
+
### 构建产物里为什么没有挂件
|
|
247
255
|
|
|
248
|
-
|
|
249
|
-
npm run build
|
|
250
|
-
```
|
|
256
|
+
这是当前实现的预期行为。插件只在开发服务器模式下工作,不会影响生产构建结果。
|
|
251
257
|
|
|
252
|
-
|
|
258
|
+
## 示例项目
|
|
253
259
|
|
|
254
|
-
|
|
255
|
-
npm test
|
|
256
|
-
```
|
|
260
|
+
仓库自带了一个 `example` 工作区用于本地联调。
|
|
257
261
|
|
|
258
|
-
|
|
262
|
+
由于示例直接引用 `../dist/vite/index`,请先在仓库根目录构建插件:
|
|
259
263
|
|
|
260
264
|
```bash
|
|
265
|
+
npm install
|
|
266
|
+
npm run build
|
|
261
267
|
cd example
|
|
262
268
|
npm install
|
|
263
269
|
npm run dev
|
|
264
270
|
```
|
|
265
271
|
|
|
266
|
-
##
|
|
272
|
+
## 开发
|
|
267
273
|
|
|
268
|
-
|
|
274
|
+
```bash
|
|
275
|
+
npm run build
|
|
276
|
+
npm test
|
|
277
|
+
```
|
|
269
278
|
|
|
270
279
|
## License
|
|
271
280
|
|
|
272
281
|
MIT
|
|
273
282
|
|
|
274
|
-
##
|
|
283
|
+
## 相关链接
|
|
275
284
|
|
|
276
|
-
- [OpenCode
|
|
285
|
+
- [OpenCode](https://opencode.ai)
|
|
277
286
|
- [OpenCode GitHub](https://github.com/opencode-ai/opencode)
|
|
278
287
|
- [Vite Plugin API](https://vite.dev/guide/api-plugin.html)
|
|
279
|
-
|
|
280
|
-
## Acknowledgments
|
|
281
|
-
|
|
282
|
-
This plugin is built on top of [OpenCode](https://opencode.ai), an open-source AI coding assistant.
|
package/dist/constants.d.ts
CHANGED
|
@@ -7,18 +7,14 @@ export declare const DEFAULT_HOSTNAME = "127.0.0.1";
|
|
|
7
7
|
/** 默认 Web 服务端口 */
|
|
8
8
|
export declare const DEFAULT_WEB_PORT = 4097;
|
|
9
9
|
/** 服务器启动超时时间(毫秒) */
|
|
10
|
-
export declare const SERVER_START_TIMEOUT =
|
|
10
|
+
export declare const SERVER_START_TIMEOUT = 300000;
|
|
11
11
|
/** 服务器检查间隔(毫秒) */
|
|
12
12
|
export declare const SERVER_CHECK_INTERVAL = 100;
|
|
13
|
-
/** 健康检查超时时间(毫秒) */
|
|
14
|
-
export declare const HEALTH_CHECK_TIMEOUT = 1000;
|
|
15
13
|
/** ==================== 重试相关 ==================== */
|
|
16
14
|
/** 默认重试次数 */
|
|
17
15
|
export declare const DEFAULT_RETRIES = 5;
|
|
18
16
|
/** 重试延迟(毫秒) */
|
|
19
17
|
export declare const RETRY_DELAY = 500;
|
|
20
|
-
/** 进程终止等待时间(毫秒) */
|
|
21
|
-
export declare const PROCESS_KILL_DELAY = 500;
|
|
22
18
|
/** ==================== 端口查找 ==================== */
|
|
23
19
|
/** 最大端口尝试次数 */
|
|
24
20
|
export declare const MAX_PORT_TRIES = 10;
|
|
@@ -40,6 +36,8 @@ export declare const CONTEXT_API_PATH = "/__opencode_context__";
|
|
|
40
36
|
export declare const START_API_PATH = "/__opencode_start__";
|
|
41
37
|
/** 会话列表 API 路径 */
|
|
42
38
|
export declare const SESSIONS_API_PATH = "/__opencode_sessions__";
|
|
39
|
+
/** SSE 事件流路径 */
|
|
40
|
+
export declare const SSE_EVENTS_PATH = "/__opencode_events__";
|
|
43
41
|
/** 上下文更新间隔(毫秒) */
|
|
44
42
|
export declare const CONTEXT_UPDATE_INTERVAL = 500;
|
|
45
43
|
/** 服务器同步间隔(毫秒) */
|
|
@@ -71,6 +69,6 @@ export declare const DEFAULT_CONFIG: {
|
|
|
71
69
|
open: boolean;
|
|
72
70
|
autoReload: boolean;
|
|
73
71
|
verbose: boolean;
|
|
74
|
-
lazy: boolean;
|
|
75
72
|
hotkey: string;
|
|
73
|
+
warmupChromeMcp: boolean;
|
|
76
74
|
};
|
package/dist/constants.js
CHANGED
|
@@ -3,43 +3,41 @@
|
|
|
3
3
|
*/
|
|
4
4
|
/** ==================== 网络相关 ==================== */
|
|
5
5
|
/** 默认主机名 */
|
|
6
|
-
export const DEFAULT_HOSTNAME =
|
|
6
|
+
export const DEFAULT_HOSTNAME = "127.0.0.1";
|
|
7
7
|
/** 默认 Web 服务端口 */
|
|
8
8
|
export const DEFAULT_WEB_PORT = 4097;
|
|
9
9
|
/** 服务器启动超时时间(毫秒) */
|
|
10
|
-
export const SERVER_START_TIMEOUT =
|
|
10
|
+
export const SERVER_START_TIMEOUT = 300000;
|
|
11
11
|
/** 服务器检查间隔(毫秒) */
|
|
12
12
|
export const SERVER_CHECK_INTERVAL = 100;
|
|
13
|
-
/** 健康检查超时时间(毫秒) */
|
|
14
|
-
export const HEALTH_CHECK_TIMEOUT = 1000;
|
|
15
13
|
/** ==================== 重试相关 ==================== */
|
|
16
14
|
/** 默认重试次数 */
|
|
17
15
|
export const DEFAULT_RETRIES = 5;
|
|
18
16
|
/** 重试延迟(毫秒) */
|
|
19
17
|
export const RETRY_DELAY = 500;
|
|
20
|
-
/** 进程终止等待时间(毫秒) */
|
|
21
|
-
export const PROCESS_KILL_DELAY = 500;
|
|
22
18
|
/** ==================== 端口查找 ==================== */
|
|
23
19
|
/** 最大端口尝试次数 */
|
|
24
20
|
export const MAX_PORT_TRIES = 10;
|
|
25
21
|
/** ==================== 日志相关 ==================== */
|
|
26
22
|
/** 插件日志前缀 */
|
|
27
|
-
export const LOG_PREFIX =
|
|
23
|
+
export const LOG_PREFIX = "[vite-plugin-opencode]";
|
|
28
24
|
/** OpenCode Web 日志前缀 */
|
|
29
|
-
export const WEB_LOG_PREFIX =
|
|
25
|
+
export const WEB_LOG_PREFIX = "[OpenCode Web]";
|
|
30
26
|
/** OpenCode Web 错误日志前缀 */
|
|
31
|
-
export const WEB_ERROR_PREFIX =
|
|
27
|
+
export const WEB_ERROR_PREFIX = "[OpenCode Web Error]";
|
|
32
28
|
/** ==================== 挂件相关 ==================== */
|
|
33
29
|
/** 挂件脚本路径 */
|
|
34
|
-
export const WIDGET_SCRIPT_PATH =
|
|
30
|
+
export const WIDGET_SCRIPT_PATH = "/__opencode_widget__.js";
|
|
35
31
|
/** 配置数据属性名 */
|
|
36
|
-
export const CONFIG_DATA_ATTR =
|
|
32
|
+
export const CONFIG_DATA_ATTR = "data-opencode-config";
|
|
37
33
|
/** 上下文 API 路径 */
|
|
38
|
-
export const CONTEXT_API_PATH =
|
|
34
|
+
export const CONTEXT_API_PATH = "/__opencode_context__";
|
|
39
35
|
/** 启动 API 路径 */
|
|
40
|
-
export const START_API_PATH =
|
|
36
|
+
export const START_API_PATH = "/__opencode_start__";
|
|
41
37
|
/** 会话列表 API 路径 */
|
|
42
|
-
export const SESSIONS_API_PATH =
|
|
38
|
+
export const SESSIONS_API_PATH = "/__opencode_sessions__";
|
|
39
|
+
/** SSE 事件流路径 */
|
|
40
|
+
export const SSE_EVENTS_PATH = "/__opencode_events__";
|
|
43
41
|
/** 上下文更新间隔(毫秒) */
|
|
44
42
|
export const CONTEXT_UPDATE_INTERVAL = 500;
|
|
45
43
|
/** 服务器同步间隔(毫秒) */
|
|
@@ -52,26 +50,26 @@ export const AUTO_OPEN_DELAY = 1000;
|
|
|
52
50
|
export const NOTIFICATION_DURATION = 3000;
|
|
53
51
|
/** ==================== 存储相关 ==================== */
|
|
54
52
|
/** 初始化标记 */
|
|
55
|
-
export const INIT_MARKER =
|
|
53
|
+
export const INIT_MARKER = "__OPENCODE_INITIALIZED__";
|
|
56
54
|
/** 选中元素存储键 */
|
|
57
|
-
export const SELECTED_ELEMENTS_KEY =
|
|
55
|
+
export const SELECTED_ELEMENTS_KEY = "__opencode_selected_elements__";
|
|
58
56
|
/** ==================== 文本处理 ==================== */
|
|
59
57
|
/** 元素文本最大显示长度 */
|
|
60
58
|
export const MAX_TEXT_LENGTH = 100;
|
|
61
59
|
/** 元素上下文标记 */
|
|
62
|
-
export const CONTEXT_MARKER =
|
|
60
|
+
export const CONTEXT_MARKER = "[元素上下文]";
|
|
63
61
|
/** ==================== 默认配置 ==================== */
|
|
64
62
|
/** 默认插件配置 */
|
|
65
63
|
export const DEFAULT_CONFIG = {
|
|
66
|
-
enabled:
|
|
64
|
+
enabled: false,
|
|
67
65
|
webPort: DEFAULT_WEB_PORT,
|
|
68
66
|
hostname: DEFAULT_HOSTNAME,
|
|
69
|
-
position:
|
|
70
|
-
theme:
|
|
67
|
+
position: "bottom-right",
|
|
68
|
+
theme: "auto",
|
|
71
69
|
open: false,
|
|
72
70
|
autoReload: true,
|
|
73
71
|
verbose: false,
|
|
74
|
-
|
|
75
|
-
|
|
72
|
+
hotkey: "ctrl+k",
|
|
73
|
+
warmupChromeMcp: true,
|
|
76
74
|
};
|
|
77
|
-
//# sourceMappingURL=
|
|
75
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qDAAqD;AAErD,YAAY;AACZ,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAE5C,kBAAkB;AAClB,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAErC,oBAAoB;AACpB,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAE3C,kBAAkB;AAClB,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAEzC,qDAAqD;AAErD,aAAa;AACb,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AAEjC,eAAe;AACf,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAC;AAE/B,qDAAqD;AAErD,eAAe;AACf,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC,qDAAqD;AAErD,aAAa;AACb,MAAM,CAAC,MAAM,UAAU,GAAG,wBAAwB,CAAC;AAEnD,wBAAwB;AACxB,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAE/C,0BAA0B;AAC1B,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AAEvD,qDAAqD;AAErD,aAAa;AACb,MAAM,CAAC,MAAM,kBAAkB,GAAG,yBAAyB,CAAC;AAE5D,cAAc;AACd,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AAEvD,iBAAiB;AACjB,MAAM,CAAC,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;AAExD,gBAAgB;AAChB,MAAM,CAAC,MAAM,cAAc,GAAG,qBAAqB,CAAC;AAEpD,kBAAkB;AAClB,MAAM,CAAC,MAAM,iBAAiB,GAAG,wBAAwB,CAAC;AAE1D,gBAAgB;AAChB,MAAM,CAAC,MAAM,eAAe,GAAG,sBAAsB,CAAC;AAEtD,kBAAkB;AAClB,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAE3C,kBAAkB;AAClB,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAEzC,6BAA6B;AAC7B,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAE5C,iBAAiB;AACjB,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AAEpC,iBAAiB;AACjB,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAE1C,qDAAqD;AAErD,YAAY;AACZ,MAAM,CAAC,MAAM,WAAW,GAAG,0BAA0B,CAAC;AAEtD,cAAc;AACd,MAAM,CAAC,MAAM,qBAAqB,GAAG,gCAAgC,CAAC;AAEtE,qDAAqD;AAErD,iBAAiB;AACjB,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC;AAEnC,cAAc;AACd,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC;AAExC,qDAAqD;AAErD,aAAa;AACb,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,gBAAgB;IACzB,QAAQ,EAAE,gBAAgB;IAC1B,QAAQ,EAAE,cAAuB;IACjC,KAAK,EAAE,MAAe;IACtB,IAAI,EAAE,KAAK;IACX,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,QAAQ;IAChB,eAAe,EAAE,IAAI;CACtB,CAAC","sourcesContent":["/**\n * @fileoverview OpenCode 插件常量定义\n */\n\n/** ==================== 网络相关 ==================== */\n\n/** 默认主机名 */\nexport const DEFAULT_HOSTNAME = \"127.0.0.1\";\n\n/** 默认 Web 服务端口 */\nexport const DEFAULT_WEB_PORT = 4097;\n\n/** 服务器启动超时时间(毫秒) */\nexport const SERVER_START_TIMEOUT = 300000;\n\n/** 服务器检查间隔(毫秒) */\nexport const SERVER_CHECK_INTERVAL = 100;\n\n/** ==================== 重试相关 ==================== */\n\n/** 默认重试次数 */\nexport const DEFAULT_RETRIES = 5;\n\n/** 重试延迟(毫秒) */\nexport const RETRY_DELAY = 500;\n\n/** ==================== 端口查找 ==================== */\n\n/** 最大端口尝试次数 */\nexport const MAX_PORT_TRIES = 10;\n\n/** ==================== 日志相关 ==================== */\n\n/** 插件日志前缀 */\nexport const LOG_PREFIX = \"[vite-plugin-opencode]\";\n\n/** OpenCode Web 日志前缀 */\nexport const WEB_LOG_PREFIX = \"[OpenCode Web]\";\n\n/** OpenCode Web 错误日志前缀 */\nexport const WEB_ERROR_PREFIX = \"[OpenCode Web Error]\";\n\n/** ==================== 挂件相关 ==================== */\n\n/** 挂件脚本路径 */\nexport const WIDGET_SCRIPT_PATH = \"/__opencode_widget__.js\";\n\n/** 配置数据属性名 */\nexport const CONFIG_DATA_ATTR = \"data-opencode-config\";\n\n/** 上下文 API 路径 */\nexport const CONTEXT_API_PATH = \"/__opencode_context__\";\n\n/** 启动 API 路径 */\nexport const START_API_PATH = \"/__opencode_start__\";\n\n/** 会话列表 API 路径 */\nexport const SESSIONS_API_PATH = \"/__opencode_sessions__\";\n\n/** SSE 事件流路径 */\nexport const SSE_EVENTS_PATH = \"/__opencode_events__\";\n\n/** 上下文更新间隔(毫秒) */\nexport const CONTEXT_UPDATE_INTERVAL = 500;\n\n/** 服务器同步间隔(毫秒) */\nexport const SERVER_SYNC_INTERVAL = 2000;\n\n/** Vue Inspector 检查间隔(毫秒) */\nexport const INSPECTOR_CHECK_INTERVAL = 500;\n\n/** 自动打开延迟(毫秒) */\nexport const AUTO_OPEN_DELAY = 1000;\n\n/** 通知显示时间(毫秒) */\nexport const NOTIFICATION_DURATION = 3000;\n\n/** ==================== 存储相关 ==================== */\n\n/** 初始化标记 */\nexport const INIT_MARKER = \"__OPENCODE_INITIALIZED__\";\n\n/** 选中元素存储键 */\nexport const SELECTED_ELEMENTS_KEY = \"__opencode_selected_elements__\";\n\n/** ==================== 文本处理 ==================== */\n\n/** 元素文本最大显示长度 */\nexport const MAX_TEXT_LENGTH = 100;\n\n/** 元素上下文标记 */\nexport const CONTEXT_MARKER = \"[元素上下文]\";\n\n/** ==================== 默认配置 ==================== */\n\n/** 默认插件配置 */\nexport const DEFAULT_CONFIG = {\n enabled: false,\n webPort: DEFAULT_WEB_PORT,\n hostname: DEFAULT_HOSTNAME,\n position: \"bottom-right\" as const,\n theme: \"auto\" as const,\n open: false,\n autoReload: true,\n verbose: false,\n hotkey: \"ctrl+k\",\n warmupChromeMcp: true,\n};\n"]}
|