@vite-plugin-opencode-assistant/opencode 1.0.31 → 1.0.33

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.
@@ -1,5 +1,5 @@
1
- import { c as i } from "./logger.js";
2
- const e = i("OpenCodePluginPageContext");
1
+ import { c as a } from "./logger.js";
2
+ const e = a("OpenCodePluginPageContext");
3
3
  async function c(n) {
4
4
  try {
5
5
  const t = await fetch(n, {
@@ -15,7 +15,7 @@ const u = async () => {
15
15
  e.info("PageContextPlugin loading...");
16
16
  const n = process.env.OPENCODE_CONTEXT_API_URL;
17
17
  return e.debug("Context API URL:", { contextApiUrl: n }), n ? (e.info("Plugin initialized successfully"), {
18
- "experimental.chat.system.transform": async (t, s) => {
18
+ "experimental.chat.system.transform": async (t, i) => {
19
19
  e.debug("System transform hook called");
20
20
  const o = await c(n);
21
21
  e.debug("Page context fetched", { pageContext: o });
@@ -28,7 +28,7 @@ const u = async () => {
28
28
  - **页面 URL**: ${o.url || "未知"}
29
29
  - **页面标题**: ${o.title || "未知"}
30
30
  `);
31
- const a = `
31
+ const s = `
32
32
  你是一个专业的前端开发助手,运行在 **OpenCode** 平台中,并通过 **vite-plugin-opencode-assistant** 插件集成到用户的 Vite 开发环境。
33
33
  ${r}
34
34
  ## 你的工作环境
@@ -57,11 +57,20 @@ ${r}
57
57
 
58
58
  ### 1. 定位节点位置(强制)
59
59
 
60
- 当用户选中了页面节点时,**在处理用户请求之前**,你必须先找到这些节点在当前项目上下文中的位置:
60
+ 当用户选中了页面节点时,**在处理用户请求之前**,你必须先确认这些节点在项目中的位置。选中的节点信息包含以下字段:
61
61
 
62
- - 利用提供的文件路径、CSS 选择器、元素文本等信息
63
- - 通过文件搜索、DOM 分析等方式定位到具体代码位置
64
- - 明确知道节点在哪里被定义/使用后,再处理用户请求
62
+ - \`filePath\`: 节点对应的源文件路径(可能为空)
63
+ - \`line\` / \`column\`: 节点在源文件中的位置(可能为空)
64
+ - \`innerText\`: 节点的文本内容
65
+ - \`description\`: 节点描述(标签名+选择器)
66
+
67
+ **定位步骤(按优先级):**
68
+
69
+ 1. **检查已有文件路径**:如果 \`filePath\` 存在,优先使用该路径直接定位文件
70
+ 2. **使用 Chrome DevTools MCP**:如果 \`filePath\` 为空或需要更多信息,通过浏览器快照获取节点的 DOM 结构、样式、事件绑定等详细信息
71
+ 3. **文件搜索辅助**:根据 \`innerText\` 或 \`description\` 在项目中搜索匹配的组件/元素
72
+
73
+ 在明确知道节点位置后,再处理用户请求。
65
74
 
66
75
  ### 2. 理解上下文
67
76
 
@@ -87,7 +96,7 @@ ${r}
87
96
  4. **HTTP 请求成功判断(强制)**
88
97
  判断请求成功时,不要只看 HTTP 状态码!HTTP 状态码 200 并不代表业务逻辑成功。必须获取接口的详细响应内容,检查响应体中的业务状态码或错误信息。在确认请求成功之前,始终解析并检查响应体的完整内容
89
98
  `.trim();
90
- s.system.push(a);
99
+ i.system.push(s);
91
100
  }
92
101
  }) : (e.warn("OPENCODE_CONTEXT_API_URL is not set, page context plugin will not work"), {});
93
102
  };
@@ -115,11 +115,20 @@ ${currentPageSection}
115
115
 
116
116
  ### 1. \u5B9A\u4F4D\u8282\u70B9\u4F4D\u7F6E\uFF08\u5F3A\u5236\uFF09
117
117
 
118
- \u5F53\u7528\u6237\u9009\u4E2D\u4E86\u9875\u9762\u8282\u70B9\u65F6\uFF0C**\u5728\u5904\u7406\u7528\u6237\u8BF7\u6C42\u4E4B\u524D**\uFF0C\u4F60\u5FC5\u987B\u5148\u627E\u5230\u8FD9\u4E9B\u8282\u70B9\u5728\u5F53\u524D\u9879\u76EE\u4E0A\u4E0B\u6587\u4E2D\u7684\u4F4D\u7F6E\uFF1A
118
+ \u5F53\u7528\u6237\u9009\u4E2D\u4E86\u9875\u9762\u8282\u70B9\u65F6\uFF0C**\u5728\u5904\u7406\u7528\u6237\u8BF7\u6C42\u4E4B\u524D**\uFF0C\u4F60\u5FC5\u987B\u5148\u786E\u8BA4\u8FD9\u4E9B\u8282\u70B9\u5728\u9879\u76EE\u4E2D\u7684\u4F4D\u7F6E\u3002\u9009\u4E2D\u7684\u8282\u70B9\u4FE1\u606F\u5305\u542B\u4EE5\u4E0B\u5B57\u6BB5\uFF1A
119
119
 
120
- - \u5229\u7528\u63D0\u4F9B\u7684\u6587\u4EF6\u8DEF\u5F84\u3001CSS \u9009\u62E9\u5668\u3001\u5143\u7D20\u6587\u672C\u7B49\u4FE1\u606F
121
- - \u901A\u8FC7\u6587\u4EF6\u641C\u7D22\u3001DOM \u5206\u6790\u7B49\u65B9\u5F0F\u5B9A\u4F4D\u5230\u5177\u4F53\u4EE3\u7801\u4F4D\u7F6E
122
- - \u660E\u786E\u77E5\u9053\u8282\u70B9\u5728\u54EA\u91CC\u88AB\u5B9A\u4E49/\u4F7F\u7528\u540E\uFF0C\u518D\u5904\u7406\u7528\u6237\u8BF7\u6C42
120
+ - \`filePath\`: \u8282\u70B9\u5BF9\u5E94\u7684\u6E90\u6587\u4EF6\u8DEF\u5F84\uFF08\u53EF\u80FD\u4E3A\u7A7A\uFF09
121
+ - \`line\` / \`column\`: \u8282\u70B9\u5728\u6E90\u6587\u4EF6\u4E2D\u7684\u4F4D\u7F6E\uFF08\u53EF\u80FD\u4E3A\u7A7A\uFF09
122
+ - \`innerText\`: \u8282\u70B9\u7684\u6587\u672C\u5185\u5BB9
123
+ - \`description\`: \u8282\u70B9\u63CF\u8FF0\uFF08\u6807\u7B7E\u540D+\u9009\u62E9\u5668\uFF09
124
+
125
+ **\u5B9A\u4F4D\u6B65\u9AA4\uFF08\u6309\u4F18\u5148\u7EA7\uFF09\uFF1A**
126
+
127
+ 1. **\u68C0\u67E5\u5DF2\u6709\u6587\u4EF6\u8DEF\u5F84**\uFF1A\u5982\u679C \`filePath\` \u5B58\u5728\uFF0C\u4F18\u5148\u4F7F\u7528\u8BE5\u8DEF\u5F84\u76F4\u63A5\u5B9A\u4F4D\u6587\u4EF6
128
+ 2. **\u4F7F\u7528 Chrome DevTools MCP**\uFF1A\u5982\u679C \`filePath\` \u4E3A\u7A7A\u6216\u9700\u8981\u66F4\u591A\u4FE1\u606F\uFF0C\u901A\u8FC7\u6D4F\u89C8\u5668\u5FEB\u7167\u83B7\u53D6\u8282\u70B9\u7684 DOM \u7ED3\u6784\u3001\u6837\u5F0F\u3001\u4E8B\u4EF6\u7ED1\u5B9A\u7B49\u8BE6\u7EC6\u4FE1\u606F
129
+ 3. **\u6587\u4EF6\u641C\u7D22\u8F85\u52A9**\uFF1A\u6839\u636E \`innerText\` \u6216 \`description\` \u5728\u9879\u76EE\u4E2D\u641C\u7D22\u5339\u914D\u7684\u7EC4\u4EF6/\u5143\u7D20
130
+
131
+ \u5728\u660E\u786E\u77E5\u9053\u8282\u70B9\u4F4D\u7F6E\u540E\uFF0C\u518D\u5904\u7406\u7528\u6237\u8BF7\u6C42\u3002
123
132
 
124
133
  ### 2. \u7406\u89E3\u4E0A\u4E0B\u6587
125
134
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vite-plugin-opencode-assistant/opencode",
3
- "version": "1.0.31",
3
+ "version": "1.0.33",
4
4
  "type": "module",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -22,7 +22,7 @@
22
22
  },
23
23
  "dependencies": {
24
24
  "execa": "^9.6.1",
25
- "@vite-plugin-opencode-assistant/shared": "1.0.31"
25
+ "@vite-plugin-opencode-assistant/shared": "1.0.33"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@opencode-ai/plugin": "^1.3.15",