@vite-plugin-opencode-assistant/opencode 1.0.51 → 1.0.52
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/es/index.d.ts +1 -1
- package/es/index.mjs +1 -0
- package/es/plugins/page-context.mjs +145 -0
- package/es/plugins/vite-logs.mjs +123 -0
- package/lib/{index.js → index.cjs} +2 -2
- package/lib/index.d.ts +1 -1
- package/package.json +6 -6
- package/es/index.js +0 -1
- /package/es/{web.js → web.mjs} +0 -0
- /package/lib/plugins/{page-context.js → page-context.cjs} +0 -0
- /package/lib/plugins/{vite-logs.js → vite-logs.cjs} +0 -0
- /package/lib/{web.js → web.cjs} +0 -0
package/es/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from "./web
|
|
1
|
+
export * from "./web";
|
package/es/index.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./web.mjs";
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
var __async = (__this, __arguments, generator) => {
|
|
2
|
+
return new Promise((resolve, reject) => {
|
|
3
|
+
var fulfilled = (value) => {
|
|
4
|
+
try {
|
|
5
|
+
step(generator.next(value));
|
|
6
|
+
} catch (e) {
|
|
7
|
+
reject(e);
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
var rejected = (value) => {
|
|
11
|
+
try {
|
|
12
|
+
step(generator.throw(value));
|
|
13
|
+
} catch (e) {
|
|
14
|
+
reject(e);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
18
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
import { createLogger } from "@vite-plugin-opencode-assistant/shared";
|
|
22
|
+
const log = createLogger("OpenCodePluginPageContext");
|
|
23
|
+
function fetchPageContext(contextApiUrl) {
|
|
24
|
+
return __async(this, null, function* () {
|
|
25
|
+
try {
|
|
26
|
+
const response = yield fetch(contextApiUrl, {
|
|
27
|
+
method: "GET",
|
|
28
|
+
headers: { "Content-Type": "application/json" }
|
|
29
|
+
});
|
|
30
|
+
if (!response.ok) {
|
|
31
|
+
log.debug("Failed to fetch page context", { status: response.status });
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
return yield response.json();
|
|
35
|
+
} catch (error) {
|
|
36
|
+
log.debug("Error fetching page context", { error });
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
const PageContextPlugin = () => __async(null, null, function* () {
|
|
42
|
+
log.info("PageContextPlugin loading...");
|
|
43
|
+
const contextApiUrl = process.env.OPENCODE_CONTEXT_API_URL;
|
|
44
|
+
log.debug("Context API URL:", { contextApiUrl });
|
|
45
|
+
if (!contextApiUrl) {
|
|
46
|
+
log.warn("OPENCODE_CONTEXT_API_URL is not set, page context plugin will not work");
|
|
47
|
+
return {};
|
|
48
|
+
}
|
|
49
|
+
log.info("Plugin initialized successfully");
|
|
50
|
+
return {
|
|
51
|
+
"experimental.chat.system.transform": (_input, output) => __async(null, null, function* () {
|
|
52
|
+
log.debug("System transform hook called");
|
|
53
|
+
const pageContext = yield fetchPageContext(contextApiUrl);
|
|
54
|
+
log.debug("Page context fetched", { pageContext });
|
|
55
|
+
const systemPrompt = `
|
|
56
|
+
\u4F60\u662F\u4E00\u4E2A\u4E13\u4E1A\u7684\u524D\u7AEF\u5F00\u53D1\u52A9\u624B\uFF0C\u8FD0\u884C\u5728 **OpenCode** \u5E73\u53F0\u4E2D\uFF0C\u5E76\u901A\u8FC7 **vite-plugin-opencode-assistant** \u63D2\u4EF6\u96C6\u6210\u5230\u7528\u6237\u7684 Vite \u5F00\u53D1\u73AF\u5883\u3002
|
|
57
|
+
|
|
58
|
+
## \u26A0\uFE0F \u91CD\u8981\uFF1A\u9875\u9762\u4E0A\u4E0B\u6587\u4F18\u5148\u7EA7\u89C4\u5219
|
|
59
|
+
|
|
60
|
+
**\u5F53\u7528\u6237\u5728\u4E0D\u540C\u9875\u9762\u63D0\u95EE\u65F6\uFF0C\u4F60\u5FC5\u987B\u4F18\u5148\u6839\u636E\u7528\u6237\u5F53\u524D\u6D4F\u89C8\u9875\u9762\u7684\u4E0A\u4E0B\u6587\u6765\u7406\u89E3\u95EE\u9898\uFF0C\u800C\u4E0D\u662F\u4F9D\u8D56\u4F1A\u8BDD\u5386\u53F2\u8BB0\u5F55\u3002**
|
|
61
|
+
|
|
62
|
+
\u7528\u6237\u53EF\u80FD\u5728\u4E0D\u540C\u9875\u9762\u4E4B\u95F4\u5207\u6362\uFF0C\u6BCF\u6B21\u63D0\u95EE\u90FD\u5E94\u8BE5\u57FA\u4E8E\u5F53\u524D\u9875\u9762\u4E0A\u4E0B\u6587\uFF1A
|
|
63
|
+
- **\u9875\u9762 URL**: ${(pageContext == null ? void 0 : pageContext.url) || "\u672A\u77E5"}
|
|
64
|
+
- **\u9875\u9762\u6807\u9898**: ${(pageContext == null ? void 0 : pageContext.title) || "\u672A\u77E5"}
|
|
65
|
+
|
|
66
|
+
**\u7406\u89E3\u95EE\u9898\u7684\u4F18\u5148\u7EA7\u987A\u5E8F\uFF1A**
|
|
67
|
+
1. **\u5F53\u524D\u9875\u9762\u4E0A\u4E0B\u6587**\uFF08\u6700\u9AD8\u4F18\u5148\u7EA7\uFF09 - \u6839\u636E\u7528\u6237\u5F53\u524D\u6240\u5728\u9875\u9762\u7684 URL \u548C\u6807\u9898\u7406\u89E3\u95EE\u9898\u80CC\u666F
|
|
68
|
+
2. **\u7528\u6237\u9009\u4E2D\u7684\u5143\u7D20** - \u5982\u679C\u7528\u6237\u9009\u4E2D\u4E86\u9875\u9762\u5143\u7D20\uFF0C\u8FD9\u4E9B\u5143\u7D20\u4FE1\u606F\u662F\u7406\u89E3\u95EE\u9898\u7684\u5173\u952E
|
|
69
|
+
3. **\u7528\u6237\u5F53\u524D\u8F93\u5165** - \u7528\u6237\u672C\u6B21\u53D1\u9001\u7684\u5177\u4F53\u95EE\u9898\u5185\u5BB9
|
|
70
|
+
4. **\u4F1A\u8BDD\u5386\u53F2**\uFF08\u6700\u4F4E\u4F18\u5148\u7EA7\uFF09 - \u4EC5\u4F5C\u4E3A\u8F85\u52A9\u53C2\u8003\uFF0C\u4E0D\u5E94\u4F18\u5148\u4E8E\u5F53\u524D\u9875\u9762\u4E0A\u4E0B\u6587
|
|
71
|
+
|
|
72
|
+
## \u4F60\u7684\u5DE5\u4F5C\u73AF\u5883
|
|
73
|
+
|
|
74
|
+
### \u67B6\u6784\u8BF4\u660E
|
|
75
|
+
|
|
76
|
+
\u4F60\u8FD0\u884C\u5728 OpenCode \u670D\u52A1\u7AEF\uFF0C\u4F46\u901A\u8FC7 **iframe \u5D4C\u5165**\u7684\u65B9\u5F0F\u51FA\u73B0\u5728\u7528\u6237\u6B63\u5728\u5F00\u53D1\u7684\u7F51\u9875\u4E0A\uFF1A
|
|
77
|
+
|
|
78
|
+
\`\`\`
|
|
79
|
+
\u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510
|
|
80
|
+
\u2502 \u7528\u6237\u6B63\u5728\u5F00\u53D1\u7684\u7F51\u9875 (\u8FD0\u884C\u5728 Vite Dev Server) \u2502
|
|
81
|
+
\u2502 \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502
|
|
82
|
+
\u2502 \u2502 \u9875\u9762\u5185\u5BB9 \u2502 \u2502
|
|
83
|
+
\u2502 \u2502 \u2502 \u2502
|
|
84
|
+
\u2502 \u2502 \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502 \u2502
|
|
85
|
+
\u2502 \u2502 \u2502 OpenCode iframe (\u4F60\u7684\u754C\u9762) \u2502 \u2190 \u6D6E\u52A8\u804A\u5929\u7A97\u53E3 \u2502 \u2502
|
|
86
|
+
\u2502 \u2502 \u2502 \u7528\u6237\u5728\u8FD9\u91CC\u4E0E\u4F60\u5BF9\u8BDD \u2502 \u2502 \u2502
|
|
87
|
+
\u2502 \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502 \u2502
|
|
88
|
+
\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502
|
|
89
|
+
\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518
|
|
90
|
+
\`\`\`
|
|
91
|
+
|
|
92
|
+
## \u5DE5\u4F5C\u6D41\u7A0B
|
|
93
|
+
|
|
94
|
+
\u8BF7\u4E25\u683C\u6309\u4EE5\u4E0B\u987A\u5E8F\u5904\u7406\u7528\u6237\u8BF7\u6C42\uFF1A
|
|
95
|
+
|
|
96
|
+
### 1. \u5B9A\u4F4D\u8282\u70B9\u4F4D\u7F6E\uFF08\u5F3A\u5236\uFF09
|
|
97
|
+
|
|
98
|
+
\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
|
|
99
|
+
|
|
100
|
+
- \`filePath\`: \u8282\u70B9\u5BF9\u5E94\u7684\u6E90\u6587\u4EF6\u8DEF\u5F84\uFF08\u53EF\u80FD\u4E3A\u7A7A\uFF09
|
|
101
|
+
- \`line\` / \`column\`: \u8282\u70B9\u5728\u6E90\u6587\u4EF6\u4E2D\u7684\u4F4D\u7F6E\uFF08\u53EF\u80FD\u4E3A\u7A7A\uFF09
|
|
102
|
+
- \`innerText\`: \u8282\u70B9\u7684\u6587\u672C\u5185\u5BB9
|
|
103
|
+
- \`description\`: \u8282\u70B9\u63CF\u8FF0\uFF08\u6807\u7B7E\u540D+\u9009\u62E9\u5668\uFF09
|
|
104
|
+
|
|
105
|
+
**\u5B9A\u4F4D\u6B65\u9AA4\uFF08\u6309\u4F18\u5148\u7EA7\uFF09\uFF1A**
|
|
106
|
+
|
|
107
|
+
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
|
|
108
|
+
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
|
|
109
|
+
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
|
|
110
|
+
|
|
111
|
+
\u5728\u660E\u786E\u77E5\u9053\u8282\u70B9\u4F4D\u7F6E\u540E\uFF0C\u518D\u5904\u7406\u7528\u6237\u8BF7\u6C42\u3002
|
|
112
|
+
|
|
113
|
+
### 2. \u7406\u89E3\u4E0A\u4E0B\u6587
|
|
114
|
+
|
|
115
|
+
\u5C06\u9875\u9762 URL\u3001\u6807\u9898\u548C\u9009\u4E2D\u8282\u70B9\u4FE1\u606F\u4F5C\u4E3A\u7528\u6237\u8BF7\u6C42\u7684\u80CC\u666F\uFF0C\u5E2E\u52A9\u7406\u89E3\u7528\u6237\u7684\u771F\u5B9E\u610F\u56FE\u3002
|
|
116
|
+
|
|
117
|
+
### 3. \u76F4\u63A5\u884C\u52A8
|
|
118
|
+
|
|
119
|
+
\u5728\u660E\u786E\u8282\u70B9\u4F4D\u7F6E\u540E\uFF0C\u9488\u5BF9\u7528\u6237\u7684\u5B9E\u9645\u8BF7\u6C42\u7ED9\u51FA\u6E05\u6670\u3001\u53EF\u6267\u884C\u7684\u65B9\u6848\u3002
|
|
120
|
+
|
|
121
|
+
## \u5DE5\u5177\u4F7F\u7528\u6307\u5357
|
|
122
|
+
|
|
123
|
+
### Chrome DevTools Mcp
|
|
124
|
+
|
|
125
|
+
1. **\u786E\u4FDD\u64CD\u4F5C\u6B63\u786E\u9875\u9762\uFF08\u5F3A\u5236\uFF09**
|
|
126
|
+
\u5728\u4F7F\u7528 Chrome DevTools Mcp \u6267\u884C\u4EFB\u4F55\u4E0E\u7528\u6237\u6B63\u5728\u6D4F\u89C8\u7684\u9875\u9762\u76F8\u5173\u7684\u4EFB\u52A1\u4E4B\u524D\uFF0C\u5FC5\u987B\u5148\u786E\u8BA4\u5F53\u524D\u64CD\u4F5C\u7684\u9875\u9762\u5C31\u662F\u7528\u6237\u6B63\u5728\u6D4F\u89C8\u7684\u9875\u9762\u3002\u5982\u679C\u4E0D\u786E\u5B9A\uFF0C\u5E94\u5148\u83B7\u53D6\u5F53\u524D\u9875\u9762 URL \u5E76\u4E0E\u4E0A\u4E0B\u6587\u4E2D\u7684\u9875\u9762 URL \u8FDB\u884C\u6BD4\u5BF9\u3002
|
|
127
|
+
|
|
128
|
+
2. **\u5FEB\u7167\u83B7\u53D6**
|
|
129
|
+
\u5728\u6CA1\u6709\u83B7\u53D6\u5230\u9700\u8981\u7684\u8282\u70B9\u4FE1\u606F\u65F6\uFF0C\u4F7F\u7528 verbose \u53C2\u6570\u6765\u83B7\u53D6\u66F4\u8BE6\u7EC6\u7684\u8282\u70B9\u4FE1\u606F\u3002\u5982\u679C\u8BBE\u7F6E\u4E86 verbose \u53C2\u6570\u8FD8\u662F\u6CA1\u6709\u83B7\u53D6\u5230\u8282\u70B9\u4FE1\u606F\uFF0C\u518D\u5C1D\u8BD5\u8003\u8651\u5176\u4ED6\u65B9\u6848\u3002
|
|
130
|
+
|
|
131
|
+
3. **\u5355\u9875\u5E94\u7528\uFF08SPA\uFF09\u7279\u6027**
|
|
132
|
+
\u5982\u679C\u7528\u6237\u5F00\u53D1\u7684\u662F\u5355\u9875\u5E94\u7528\uFF08SPA\uFF09\uFF0C\u6267\u884C\u4EFB\u52A1\u5927\u90E8\u5206\u60C5\u51B5\u4E0B\u4E0D\u9700\u8981\u5237\u65B0\u9875\u9762\u3002
|
|
133
|
+
|
|
134
|
+
4. **HTTP \u8BF7\u6C42\u6210\u529F\u5224\u65AD\uFF08\u5F3A\u5236\uFF09**
|
|
135
|
+
\u5224\u65AD\u8BF7\u6C42\u6210\u529F\u65F6\uFF0C\u4E0D\u8981\u53EA\u770B HTTP \u72B6\u6001\u7801\uFF01HTTP \u72B6\u6001\u7801 200 \u5E76\u4E0D\u4EE3\u8868\u4E1A\u52A1\u903B\u8F91\u6210\u529F\u3002\u5FC5\u987B\u83B7\u53D6\u63A5\u53E3\u7684\u8BE6\u7EC6\u54CD\u5E94\u5185\u5BB9\uFF0C\u68C0\u67E5\u54CD\u5E94\u4F53\u4E2D\u7684\u4E1A\u52A1\u72B6\u6001\u7801\u6216\u9519\u8BEF\u4FE1\u606F\u3002\u5728\u786E\u8BA4\u8BF7\u6C42\u6210\u529F\u4E4B\u524D\uFF0C\u59CB\u7EC8\u89E3\u6790\u5E76\u68C0\u67E5\u54CD\u5E94\u4F53\u7684\u5B8C\u6574\u5185\u5BB9
|
|
136
|
+
`.trim();
|
|
137
|
+
output.system.push(systemPrompt);
|
|
138
|
+
})
|
|
139
|
+
};
|
|
140
|
+
});
|
|
141
|
+
var page_context_default = PageContextPlugin;
|
|
142
|
+
export {
|
|
143
|
+
PageContextPlugin,
|
|
144
|
+
page_context_default as default
|
|
145
|
+
};
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
var __async = (__this, __arguments, generator) => {
|
|
2
|
+
return new Promise((resolve, reject) => {
|
|
3
|
+
var fulfilled = (value) => {
|
|
4
|
+
try {
|
|
5
|
+
step(generator.next(value));
|
|
6
|
+
} catch (e) {
|
|
7
|
+
reject(e);
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
var rejected = (value) => {
|
|
11
|
+
try {
|
|
12
|
+
step(generator.throw(value));
|
|
13
|
+
} catch (e) {
|
|
14
|
+
reject(e);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
18
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
import { tool } from "@opencode-ai/plugin";
|
|
22
|
+
import { createLogger } from "@vite-plugin-opencode-assistant/shared";
|
|
23
|
+
const log = createLogger("OpenCodePluginViteLogs");
|
|
24
|
+
const ViteLogsPlugin = () => __async(null, null, function* () {
|
|
25
|
+
log.info("ViteLogsPlugin loading...");
|
|
26
|
+
const logsApiUrl = process.env.OPENCODE_VITE_LOGS_API_URL;
|
|
27
|
+
log.debug("Vite Logs API URL:", { logsApiUrl });
|
|
28
|
+
if (!logsApiUrl) {
|
|
29
|
+
log.warn("OPENCODE_VITE_LOGS_API_URL is not set, vite logs plugin will not work");
|
|
30
|
+
return {};
|
|
31
|
+
}
|
|
32
|
+
log.info("Plugin initialized successfully");
|
|
33
|
+
const getViteDevLogsTool = tool({
|
|
34
|
+
description: `\u83B7\u53D6 Vite \u5F00\u53D1\u670D\u52A1\u5668\u7684\u8FD0\u884C\u65E5\u5FD7\u3002
|
|
35
|
+
|
|
36
|
+
**\u4F55\u65F6\u4F7F\u7528\u6B64\u5DE5\u5177**\uFF1A
|
|
37
|
+
- \u7528\u6237\u62A5\u544A"\u9875\u9762\u6CA1\u66F4\u65B0"\u3001"\u70ED\u66F4\u65B0\u4E0D\u5DE5\u4F5C"\u3001"HMR \u5931\u6548"\u65F6
|
|
38
|
+
- \u6784\u5EFA\u62A5\u9519\u6216\u7F16\u8BD1\u5931\u8D25\uFF0C\u9700\u8981\u67E5\u770B\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F
|
|
39
|
+
- \u9875\u9762\u767D\u5C4F\u3001\u6837\u5F0F\u4E22\u5931\u3001\u6A21\u5757\u52A0\u8F7D\u5931\u8D25\u7B49\u5F00\u53D1\u95EE\u9898
|
|
40
|
+
- \u7528\u6237\u63D0\u5230"\u5F00\u53D1\u670D\u52A1\u5668\u6709\u95EE\u9898"\u3001"vite \u62A5\u9519"
|
|
41
|
+
- \u9700\u8981\u786E\u8BA4\u6700\u8FD1\u7684\u6587\u4EF6\u53D8\u66F4\u662F\u5426\u88AB Vite \u6B63\u786E\u5904\u7406
|
|
42
|
+
|
|
43
|
+
**\u65E5\u5FD7\u5185\u5BB9**\uFF1A
|
|
44
|
+
- Vite HMR \u70ED\u66F4\u65B0\u65E5\u5FD7\uFF08\u54EA\u4E9B\u6587\u4EF6\u88AB\u66F4\u65B0\u3001\u66F4\u65B0\u72B6\u6001\uFF09
|
|
45
|
+
- \u6784\u5EFA\u7F16\u8BD1\u65E5\u5FD7\uFF08\u9519\u8BEF\u3001\u8B66\u544A\u3001\u6210\u529F\u4FE1\u606F\uFF09
|
|
46
|
+
- OpenCode Web \u8FDB\u7A0B\u8F93\u51FA
|
|
47
|
+
- \u63D2\u4EF6\u8FD0\u884C\u65E5\u5FD7
|
|
48
|
+
|
|
49
|
+
\u65E5\u5FD7\u4FDD\u5B58\u5728\u5185\u5B58\u7F13\u51B2\u533A\uFF08\u6700\u8FD1 500 \u6761\uFF09\u3002`,
|
|
50
|
+
args: {
|
|
51
|
+
level: tool.schema.string().optional().describe(
|
|
52
|
+
"\u65E5\u5FD7\u7EA7\u522B\u8FC7\u6EE4\uFF1Aerror(\u9519\u8BEF)\u3001warn(\u8B66\u544A)\u3001info(\u4FE1\u606F)\u3001debug(\u8C03\u8BD5)\u3001log(\u666E\u901A)\u3002\u591A\u4E2A\u7528\u9017\u53F7\u5206\u9694\uFF0C\u5982 'error,warn'"
|
|
53
|
+
),
|
|
54
|
+
limit: tool.schema.number().int().min(1).max(200).optional().default(50).describe("\u8FD4\u56DE\u6761\u6570\uFF0C\u9ED8\u8BA4 50\uFF0C\u6700\u5927 200"),
|
|
55
|
+
source: tool.schema.string().optional().describe("\u6765\u6E90\u8FC7\u6EE4\uFF1Aconsole(\u63A7\u5236\u53F0)\u3001opencode-stdout(\u670D\u52A1\u8F93\u51FA)\u3001opencode-stderr(\u670D\u52A1\u9519\u8BEF)")
|
|
56
|
+
},
|
|
57
|
+
execute(args, context) {
|
|
58
|
+
return __async(this, null, function* () {
|
|
59
|
+
const { level, limit, source } = args;
|
|
60
|
+
log.debug("get_vite_dev_logs called", {
|
|
61
|
+
args,
|
|
62
|
+
sessionID: context.sessionID,
|
|
63
|
+
directory: context.directory
|
|
64
|
+
});
|
|
65
|
+
try {
|
|
66
|
+
const url = new URL(logsApiUrl);
|
|
67
|
+
if (level) url.searchParams.set("level", level);
|
|
68
|
+
if (limit) url.searchParams.set("limit", String(limit));
|
|
69
|
+
if (source) url.searchParams.set("source", source);
|
|
70
|
+
log.debug("Fetching logs from", { url: url.toString() });
|
|
71
|
+
const response = yield fetch(url.toString(), {
|
|
72
|
+
method: "GET",
|
|
73
|
+
headers: { Accept: "application/json" },
|
|
74
|
+
signal: context.abort
|
|
75
|
+
});
|
|
76
|
+
if (!response.ok) {
|
|
77
|
+
const errorText = yield response.text();
|
|
78
|
+
log.error("Failed to fetch logs", { status: response.status, error: errorText });
|
|
79
|
+
return `\u83B7\u53D6\u65E5\u5FD7\u5931\u8D25: HTTP ${response.status} - ${errorText}`;
|
|
80
|
+
}
|
|
81
|
+
const data = yield response.json();
|
|
82
|
+
log.debug("Logs fetched successfully", {
|
|
83
|
+
count: data.logs.length,
|
|
84
|
+
total: data.meta.total
|
|
85
|
+
});
|
|
86
|
+
if (data.logs.length === 0) {
|
|
87
|
+
return `\u5F53\u524D\u6CA1\u6709\u7B26\u5408\u6761\u4EF6\u7684\u65E5\u5FD7\uFF08\u7F13\u51B2\u533A\u5171 ${data.meta.total} \u6761\uFF09\u3002
|
|
88
|
+
|
|
89
|
+
\u5EFA\u8BAE\uFF1A
|
|
90
|
+
- \u4E0D\u6307\u5B9A\u53C2\u6570\u83B7\u53D6\u6240\u6709\u65E5\u5FD7
|
|
91
|
+
- \u4F7F\u7528 level=error,warn \u83B7\u53D6\u9519\u8BEF\u548C\u8B66\u544A`;
|
|
92
|
+
}
|
|
93
|
+
const formattedLogs = data.logs.map((entry) => {
|
|
94
|
+
const time = new Date(entry.timestamp).toLocaleTimeString();
|
|
95
|
+
const levelIcon = entry.level === "error" ? "\u274C" : entry.level === "warn" ? "\u26A0\uFE0F" : entry.level === "info" ? "\u2139\uFE0F" : "";
|
|
96
|
+
return `${time} ${levelIcon} ${entry.message}`;
|
|
97
|
+
}).join("\n");
|
|
98
|
+
return `Vite \u5F00\u53D1\u670D\u52A1\u5668\u65E5\u5FD7\uFF08${data.meta.returned}/${data.meta.total} \u6761\uFF09\uFF1A
|
|
99
|
+
|
|
100
|
+
${formattedLogs}`;
|
|
101
|
+
} catch (error) {
|
|
102
|
+
const err = error;
|
|
103
|
+
if (context.abort.aborted) {
|
|
104
|
+
log.debug("Request aborted");
|
|
105
|
+
return "\u8BF7\u6C42\u5DF2\u53D6\u6D88";
|
|
106
|
+
}
|
|
107
|
+
log.error("Error fetching vite logs", { error: err });
|
|
108
|
+
return `\u83B7\u53D6\u65E5\u5FD7\u65F6\u53D1\u751F\u9519\u8BEF: ${err.message}`;
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
return {
|
|
114
|
+
tool: {
|
|
115
|
+
get_vite_dev_logs: getViteDevLogsTool
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
});
|
|
119
|
+
var vite_logs_default = ViteLogsPlugin;
|
|
120
|
+
export {
|
|
121
|
+
ViteLogsPlugin,
|
|
122
|
+
vite_logs_default as default
|
|
123
|
+
};
|
|
@@ -14,8 +14,8 @@ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "defau
|
|
|
14
14
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
15
|
var lib_exports = {};
|
|
16
16
|
module.exports = __toCommonJS(lib_exports);
|
|
17
|
-
__reExport(lib_exports, require("./web.
|
|
17
|
+
__reExport(lib_exports, require("./web.cjs"), module.exports);
|
|
18
18
|
// Annotate the CommonJS export names for ESM import in node:
|
|
19
19
|
0 && (module.exports = {
|
|
20
|
-
...require("./web.
|
|
20
|
+
...require("./web.cjs")
|
|
21
21
|
});
|
package/lib/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from "./web
|
|
1
|
+
export * from "./web";
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vite-plugin-opencode-assistant/opencode",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.52",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"main": "lib/index.
|
|
6
|
-
"module": "es/index.
|
|
5
|
+
"main": "lib/index.cjs",
|
|
6
|
+
"module": "es/index.mjs",
|
|
7
7
|
"types": "es/index.d.ts",
|
|
8
8
|
"files": [
|
|
9
9
|
"es",
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
"exports": {
|
|
13
13
|
".": {
|
|
14
14
|
"types": "./es/index.d.ts",
|
|
15
|
-
"import": "./es/index.
|
|
16
|
-
"require": "./lib/index.
|
|
15
|
+
"import": "./es/index.mjs",
|
|
16
|
+
"require": "./lib/index.cjs"
|
|
17
17
|
}
|
|
18
18
|
},
|
|
19
19
|
"publishConfig": {
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"execa": "^9.6.1",
|
|
25
|
-
"@vite-plugin-opencode-assistant/shared": "1.0.
|
|
25
|
+
"@vite-plugin-opencode-assistant/shared": "1.0.52"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@opencode-ai/plugin": "^1.3.15",
|
package/es/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./web.js";
|
/package/es/{web.js → web.mjs}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/lib/{web.js → web.cjs}
RENAMED
|
File without changes
|