vite-plugin-opencode-assistant 1.0.73 → 1.0.75
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/core/injector.mjs +6 -2
- package/es/core/proxy-server.mjs +19 -13
- package/es/endpoints/index.d.ts +1 -1
- package/es/endpoints/index.mjs +3 -2
- package/es/endpoints/logs.d.ts +0 -2
- package/es/endpoints/logs.mjs +4 -4
- package/es/endpoints/start.d.ts +2 -1
- package/es/endpoints/start.mjs +6 -2
- package/es/endpoints/types.d.ts +2 -0
- package/es/endpoints/warmup.mjs +2 -2
- package/es/endpoints/widget.mjs +1 -2
- package/es/env.d.ts +1 -0
- package/es/index.mjs +7 -1
- package/lib/client.js +3473 -3274
- package/lib/core/injector.cjs +1 -1
- package/lib/core/proxy-server.cjs +16 -12
- package/lib/endpoints/index.cjs +3 -2
- package/lib/endpoints/index.d.ts +1 -1
- package/lib/endpoints/logs.cjs +2 -5
- package/lib/endpoints/logs.d.ts +0 -2
- package/lib/endpoints/start.cjs +6 -2
- package/lib/endpoints/start.d.ts +2 -1
- package/lib/endpoints/types.d.ts +2 -0
- package/lib/endpoints/warmup.cjs +1 -1
- package/lib/endpoints/widget.cjs +2 -3
- package/lib/env.d.ts +1 -0
- package/lib/index.cjs +7 -1
- package/lib/style.css +1 -1
- package/package.json +8 -4
- package/es/client/App.vue.d.ts +0 -6
- package/es/client/App.vue.mjs +0 -394
- package/es/client/components/ChromeWarmupError-sfc.css +0 -1
- package/es/client/components/ChromeWarmupError.vue.d.ts +0 -19
- package/es/client/components/ChromeWarmupError.vue.mjs +0 -337
- package/es/client/components/LoadingContent.vue.d.ts +0 -5
- package/es/client/components/LoadingContent.vue.mjs +0 -39
- package/es/client/composables/index.d.ts +0 -10
- package/es/client/composables/index.mjs +0 -22
- package/es/client/composables/useContext.d.ts +0 -8
- package/es/client/composables/useContext.mjs +0 -63
- package/es/client/composables/useHotkey.d.ts +0 -12
- package/es/client/composables/useHotkey.mjs +0 -41
- package/es/client/composables/useOpencodeSSE.d.ts +0 -64
- package/es/client/composables/useOpencodeSSE.mjs +0 -29
- package/es/client/composables/useOpencodeSessionSSE.d.ts +0 -66
- package/es/client/composables/useOpencodeSessionSSE.mjs +0 -168
- package/es/client/composables/useSSE.d.ts +0 -87
- package/es/client/composables/useSSE.mjs +0 -118
- package/es/client/composables/useSelectedElements.d.ts +0 -19
- package/es/client/composables/useSelectedElements.mjs +0 -43
- package/es/client/composables/useServerSSE.d.ts +0 -53
- package/es/client/composables/useServerSSE.mjs +0 -36
- package/es/client/composables/useServiceStatus.d.ts +0 -11
- package/es/client/composables/useServiceStatus.mjs +0 -47
- package/es/client/composables/useSessions.d.ts +0 -45
- package/es/client/composables/useSessions.mjs +0 -147
- package/es/client/composables/useTheme.d.ts +0 -12
- package/es/client/composables/useTheme.mjs +0 -42
- package/es/client/index.d.ts +0 -1
- package/es/client/index.mjs +0 -32
- package/es/client/styles.css +0 -1
- package/lib/client/App.vue.cjs +0 -421
- package/lib/client/App.vue.d.ts +0 -6
- package/lib/client/components/ChromeWarmupError-sfc.css +0 -1
- package/lib/client/components/ChromeWarmupError.vue.cjs +0 -356
- package/lib/client/components/ChromeWarmupError.vue.d.ts +0 -19
- package/lib/client/components/LoadingContent.vue.cjs +0 -58
- package/lib/client/components/LoadingContent.vue.d.ts +0 -5
- package/lib/client/composables/index.cjs +0 -54
- package/lib/client/composables/index.d.ts +0 -10
- package/lib/client/composables/useContext.cjs +0 -86
- package/lib/client/composables/useContext.d.ts +0 -8
- package/lib/client/composables/useHotkey.cjs +0 -66
- package/lib/client/composables/useHotkey.d.ts +0 -12
- package/lib/client/composables/useOpencodeSSE.cjs +0 -52
- package/lib/client/composables/useOpencodeSSE.d.ts +0 -64
- package/lib/client/composables/useOpencodeSessionSSE.cjs +0 -187
- package/lib/client/composables/useOpencodeSessionSSE.d.ts +0 -66
- package/lib/client/composables/useSSE.cjs +0 -141
- package/lib/client/composables/useSSE.d.ts +0 -87
- package/lib/client/composables/useSelectedElements.cjs +0 -66
- package/lib/client/composables/useSelectedElements.d.ts +0 -19
- package/lib/client/composables/useServerSSE.cjs +0 -59
- package/lib/client/composables/useServerSSE.d.ts +0 -53
- package/lib/client/composables/useServiceStatus.cjs +0 -70
- package/lib/client/composables/useServiceStatus.d.ts +0 -11
- package/lib/client/composables/useSessions.cjs +0 -168
- package/lib/client/composables/useSessions.d.ts +0 -45
- package/lib/client/composables/useTheme.cjs +0 -65
- package/lib/client/composables/useTheme.d.ts +0 -12
- package/lib/client/index.cjs +0 -54
- package/lib/client/index.d.ts +0 -1
- package/lib/client/styles.css +0 -1
package/es/client/App.vue.mjs
DELETED
|
@@ -1,394 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __defProps = Object.defineProperties;
|
|
3
|
-
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
-
var __spreadValues = (a, b) => {
|
|
9
|
-
for (var prop in b || (b = {}))
|
|
10
|
-
if (__hasOwnProp.call(b, prop))
|
|
11
|
-
__defNormalProp(a, prop, b[prop]);
|
|
12
|
-
if (__getOwnPropSymbols)
|
|
13
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
-
if (__propIsEnum.call(b, prop))
|
|
15
|
-
__defNormalProp(a, prop, b[prop]);
|
|
16
|
-
}
|
|
17
|
-
return a;
|
|
18
|
-
};
|
|
19
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
-
var __async = (__this, __arguments, generator) => {
|
|
21
|
-
return new Promise((resolve, reject) => {
|
|
22
|
-
var fulfilled = (value) => {
|
|
23
|
-
try {
|
|
24
|
-
step(generator.next(value));
|
|
25
|
-
} catch (e) {
|
|
26
|
-
reject(e);
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
var rejected = (value) => {
|
|
30
|
-
try {
|
|
31
|
-
step(generator.throw(value));
|
|
32
|
-
} catch (e) {
|
|
33
|
-
reject(e);
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
37
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
38
|
-
});
|
|
39
|
-
};
|
|
40
|
-
import { defineComponent as _defineComponent } from "vue";
|
|
41
|
-
import { ref, computed, onMounted, watch } from "vue";
|
|
42
|
-
import { OpenCodeWidget } from "@vite-plugin-opencode-assistant/components";
|
|
43
|
-
import { useHotkey } from "./composables/useHotkey.mjs";
|
|
44
|
-
import { useServerSSE } from "./composables/useServerSSE.mjs";
|
|
45
|
-
import { useOpencodeSessionSSE } from "./composables/useOpencodeSessionSSE.mjs";
|
|
46
|
-
import { useSessions } from "./composables/useSessions.mjs";
|
|
47
|
-
import { useTheme } from "./composables/useTheme.mjs";
|
|
48
|
-
import { useSelectedElements } from "./composables/useSelectedElements.mjs";
|
|
49
|
-
import { useServiceStatus } from "./composables/useServiceStatus.mjs";
|
|
50
|
-
import { useContext } from "./composables/useContext.mjs";
|
|
51
|
-
import LoadingContent from "./components/LoadingContent.vue.mjs";
|
|
52
|
-
import ChromeWarmupError from "./components/ChromeWarmupError.vue.mjs";
|
|
53
|
-
const __vue_sfc__ = /* @__PURE__ */ _defineComponent({
|
|
54
|
-
__name: "App",
|
|
55
|
-
props: {
|
|
56
|
-
config: { type: Object, required: true }
|
|
57
|
-
},
|
|
58
|
-
setup(__props, { expose: __expose }) {
|
|
59
|
-
var _a;
|
|
60
|
-
__expose();
|
|
61
|
-
const props = __props;
|
|
62
|
-
const open = ref(false);
|
|
63
|
-
const selectMode = ref(false);
|
|
64
|
-
const sessionListCollapsed = ref(true);
|
|
65
|
-
const loading = ref(false);
|
|
66
|
-
const widgetRef = ref(null);
|
|
67
|
-
const retryingWarmup = ref(false);
|
|
68
|
-
const availableModels = ref([]);
|
|
69
|
-
const {
|
|
70
|
-
theme: initialTheme = "auto",
|
|
71
|
-
open: autoOpen = false,
|
|
72
|
-
hotkey = "ctrl+k",
|
|
73
|
-
proxyPort = 4098,
|
|
74
|
-
proxyHost = "localhost",
|
|
75
|
-
displayMode = "bubble",
|
|
76
|
-
splitMode
|
|
77
|
-
} = props.config;
|
|
78
|
-
const widgetTheme = initialTheme;
|
|
79
|
-
const splitPanelWidth = ref((_a = splitMode == null ? void 0 : splitMode.width) != null ? _a : 500);
|
|
80
|
-
const proxyBaseUrl = computed(() => {
|
|
81
|
-
return `http://${proxyHost}:${proxyPort}`;
|
|
82
|
-
});
|
|
83
|
-
const showNotification = (msg, options) => {
|
|
84
|
-
var _a2, _b;
|
|
85
|
-
(_b = (_a2 = widgetRef.value) == null ? void 0 : _a2.showNotification) == null ? void 0 : _b.call(_a2, msg, options);
|
|
86
|
-
};
|
|
87
|
-
const {
|
|
88
|
-
serviceStatus,
|
|
89
|
-
chromeMcpFailed,
|
|
90
|
-
chromeMcpErrorType,
|
|
91
|
-
chromeMcpErrorMessage,
|
|
92
|
-
loadingText,
|
|
93
|
-
updateStatusFromTask,
|
|
94
|
-
setStarting
|
|
95
|
-
} = useServiceStatus();
|
|
96
|
-
const { selectedElements, removeElement, clearElements } = useSelectedElements();
|
|
97
|
-
const { theme, sendThemeToIframe } = useTheme(widgetTheme, widgetRef);
|
|
98
|
-
const {
|
|
99
|
-
sessions,
|
|
100
|
-
loadingSessionList,
|
|
101
|
-
currentSessionId,
|
|
102
|
-
iframeSrc,
|
|
103
|
-
iframeLoading,
|
|
104
|
-
loadSessions,
|
|
105
|
-
createSession,
|
|
106
|
-
deleteSession,
|
|
107
|
-
selectSession,
|
|
108
|
-
updateSessionInfo
|
|
109
|
-
} = useSessions({ showNotification });
|
|
110
|
-
const { updateContext } = useContext(serviceStatus, selectedElements);
|
|
111
|
-
const serverSSE = useServerSSE({
|
|
112
|
-
onStatusSync: (data) => {
|
|
113
|
-
if (data.isStarted !== void 0 && data.isStarted && serviceStatus.value === "idle") {
|
|
114
|
-
setStarting();
|
|
115
|
-
}
|
|
116
|
-
if (data.task) {
|
|
117
|
-
updateStatusFromTask(data.task, data.errorType, data.errorMessage);
|
|
118
|
-
}
|
|
119
|
-
},
|
|
120
|
-
onTaskUpdate: (data) => {
|
|
121
|
-
updateStatusFromTask(data.task, data.errorType, data.errorMessage);
|
|
122
|
-
},
|
|
123
|
-
onClearElements: () => clearElements(),
|
|
124
|
-
onConnected: () => updateContext(true)
|
|
125
|
-
});
|
|
126
|
-
const opencodeSSE = useOpencodeSessionSSE({
|
|
127
|
-
proxyBaseUrl: proxyBaseUrl.value,
|
|
128
|
-
currentSessionId,
|
|
129
|
-
onConnected: () => {
|
|
130
|
-
console.log("[OpenCode] Session SSE connected");
|
|
131
|
-
},
|
|
132
|
-
onSessionUpdate: (session) => {
|
|
133
|
-
updateSessionInfo(session);
|
|
134
|
-
}
|
|
135
|
-
});
|
|
136
|
-
const thinking = opencodeSSE.hasAnyThinking;
|
|
137
|
-
const sessionStates = opencodeSSE.sessionStates;
|
|
138
|
-
const showSessionListSkeleton = computed(() => serviceStatus.value === "starting");
|
|
139
|
-
const computedLoading = computed(() => {
|
|
140
|
-
return serviceStatus.value === "starting" || iframeLoading.value;
|
|
141
|
-
});
|
|
142
|
-
const displayLoadingText = computed(() => {
|
|
143
|
-
if (serviceStatus.value === "starting") {
|
|
144
|
-
return loadingText.value;
|
|
145
|
-
}
|
|
146
|
-
return "\u52A0\u8F7D\u4F1A\u8BDD...";
|
|
147
|
-
});
|
|
148
|
-
const retryWarmup = (selectedModel) => __async(null, null, function* () {
|
|
149
|
-
retryingWarmup.value = true;
|
|
150
|
-
try {
|
|
151
|
-
const res = yield fetch("/__opencode_warmup__", {
|
|
152
|
-
method: "POST",
|
|
153
|
-
headers: { "Content-Type": "application/json" },
|
|
154
|
-
body: selectedModel ? JSON.stringify(selectedModel) : ""
|
|
155
|
-
});
|
|
156
|
-
const data = yield res.json();
|
|
157
|
-
if (data.success) {
|
|
158
|
-
chromeMcpFailed.value = false;
|
|
159
|
-
chromeMcpErrorType.value = void 0;
|
|
160
|
-
chromeMcpErrorMessage.value = void 0;
|
|
161
|
-
serviceStatus.value = "ready";
|
|
162
|
-
showNotification("Chrome DevTools MCP \u8FDE\u63A5\u6210\u529F");
|
|
163
|
-
} else {
|
|
164
|
-
chromeMcpErrorType.value = data.errorType;
|
|
165
|
-
chromeMcpErrorMessage.value = data.error;
|
|
166
|
-
if (data.errorType === "AI_TIMEOUT") {
|
|
167
|
-
showNotification("AI \u54CD\u5E94\u8D85\u65F6\uFF0C\u8BF7\u68C0\u67E5 OpenCode AI \u6A21\u578B\u914D\u7F6E");
|
|
168
|
-
} else if (data.errorType === "AI_RESPONSE_ERROR") {
|
|
169
|
-
showNotification("AI \u54CD\u5E94\u9519\u8BEF\uFF0C\u8BF7\u68C0\u67E5 OpenCode AI \u6A21\u578B\u914D\u7F6E");
|
|
170
|
-
} else if (data.errorType === "CHROME_NOT_CONNECTED") {
|
|
171
|
-
showNotification("Chrome \u8FDC\u7A0B\u8C03\u8BD5\u672A\u5F00\u542F\uFF0C\u8BF7\u6309\u7167\u63D0\u793A\u64CD\u4F5C");
|
|
172
|
-
} else {
|
|
173
|
-
showNotification(data.error || "\u91CD\u8BD5\u5931\u8D25\uFF0C\u8BF7\u786E\u8BA4 Chrome \u8FDC\u7A0B\u8C03\u8BD5\u5DF2\u5F00\u542F");
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
} catch (e) {
|
|
177
|
-
console.error("[OpenCode] Retry warmup failed:", e);
|
|
178
|
-
showNotification("\u91CD\u8BD5\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5");
|
|
179
|
-
} finally {
|
|
180
|
-
retryingWarmup.value = false;
|
|
181
|
-
}
|
|
182
|
-
});
|
|
183
|
-
const fetchAvailableModels = () => __async(null, null, function* () {
|
|
184
|
-
try {
|
|
185
|
-
const res = yield fetch("/__opencode_warmup__", { method: "GET" });
|
|
186
|
-
const data = yield res.json();
|
|
187
|
-
if (data.success && data.models) {
|
|
188
|
-
availableModels.value = data.models;
|
|
189
|
-
}
|
|
190
|
-
} catch (e) {
|
|
191
|
-
console.error("[OpenCode] Failed to fetch available models:", e);
|
|
192
|
-
availableModels.value = [];
|
|
193
|
-
}
|
|
194
|
-
});
|
|
195
|
-
const ensureServicesStarted = () => __async(null, null, function* () {
|
|
196
|
-
if (serviceStatus.value !== "idle") return true;
|
|
197
|
-
try {
|
|
198
|
-
const res = yield fetch("/__opencode_start__");
|
|
199
|
-
const data = yield res.json();
|
|
200
|
-
if (data.success) {
|
|
201
|
-
setStarting();
|
|
202
|
-
serverSSE.connect();
|
|
203
|
-
return true;
|
|
204
|
-
}
|
|
205
|
-
} catch (e) {
|
|
206
|
-
}
|
|
207
|
-
return false;
|
|
208
|
-
});
|
|
209
|
-
useHotkey(hotkey, (e) => {
|
|
210
|
-
e.preventDefault();
|
|
211
|
-
handleToggle(!open.value);
|
|
212
|
-
});
|
|
213
|
-
const toggleSelectMode = () => {
|
|
214
|
-
const win = window;
|
|
215
|
-
if (win.__VUE_INSPECTOR__) {
|
|
216
|
-
handleSelectModeChange(!selectMode.value);
|
|
217
|
-
} else {
|
|
218
|
-
showNotification("Vue Inspector \u672A\u52A0\u8F7D\uFF0C\u65E0\u6CD5\u4F7F\u7528\u5143\u7D20\u9009\u62E9\u529F\u80FD");
|
|
219
|
-
}
|
|
220
|
-
};
|
|
221
|
-
useHotkey("ctrl+p", (e) => {
|
|
222
|
-
e.preventDefault();
|
|
223
|
-
toggleSelectMode();
|
|
224
|
-
});
|
|
225
|
-
watch(serviceStatus, (status, oldStatus) => {
|
|
226
|
-
if (status !== "idle" && oldStatus === "idle") {
|
|
227
|
-
serverSSE.connect();
|
|
228
|
-
opencodeSSE.connect();
|
|
229
|
-
}
|
|
230
|
-
if (status === "ready" && oldStatus !== "ready") {
|
|
231
|
-
loadSessions();
|
|
232
|
-
}
|
|
233
|
-
});
|
|
234
|
-
watch(chromeMcpFailed, (failed) => {
|
|
235
|
-
if (failed) {
|
|
236
|
-
fetchAvailableModels();
|
|
237
|
-
}
|
|
238
|
-
});
|
|
239
|
-
onMounted(() => {
|
|
240
|
-
if (serviceStatus.value === "ready") {
|
|
241
|
-
loadSessions();
|
|
242
|
-
serverSSE.connect();
|
|
243
|
-
opencodeSSE.connect();
|
|
244
|
-
updateContext(true);
|
|
245
|
-
}
|
|
246
|
-
if (autoOpen && serviceStatus.value === "ready") {
|
|
247
|
-
setTimeout(() => {
|
|
248
|
-
open.value = true;
|
|
249
|
-
}, 1e3);
|
|
250
|
-
}
|
|
251
|
-
const handleIframeMessage = (event) => {
|
|
252
|
-
var _a2, _b;
|
|
253
|
-
if (((_a2 = event.data) == null ? void 0 : _a2.type) === "OPENCODE_READY") {
|
|
254
|
-
sendThemeToIframe();
|
|
255
|
-
}
|
|
256
|
-
if (((_b = event.data) == null ? void 0 : _b.type) === "OPENCODE_KEYDOWN") {
|
|
257
|
-
if (event.data.key === "Escape" && selectMode.value) {
|
|
258
|
-
handleSelectModeChange(false);
|
|
259
|
-
}
|
|
260
|
-
if (event.data.ctrlKey && event.data.key.toLowerCase() === "p") {
|
|
261
|
-
toggleSelectMode();
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
};
|
|
265
|
-
window.addEventListener("message", handleIframeMessage);
|
|
266
|
-
});
|
|
267
|
-
const handleToggle = (val) => __async(null, null, function* () {
|
|
268
|
-
if (serviceStatus.value === "idle" && val) {
|
|
269
|
-
loading.value = true;
|
|
270
|
-
const started = yield ensureServicesStarted();
|
|
271
|
-
loading.value = false;
|
|
272
|
-
if (!started) {
|
|
273
|
-
showNotification("\u670D\u52A1\u542F\u52A8\u5931\u8D25");
|
|
274
|
-
return;
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
open.value = val;
|
|
278
|
-
if (val) updateContext();
|
|
279
|
-
if (val) {
|
|
280
|
-
iframeLoading.value = false;
|
|
281
|
-
}
|
|
282
|
-
});
|
|
283
|
-
const handleSelectNode = (element) => {
|
|
284
|
-
var _a2;
|
|
285
|
-
const elementWithContext = __spreadProps(__spreadValues({}, element), {
|
|
286
|
-
previewPageUrl: window.location.href,
|
|
287
|
-
previewPageTitle: document.title
|
|
288
|
-
});
|
|
289
|
-
(_a2 = widgetRef.value) == null ? void 0 : _a2.sendMessageToIframe("OPENCODE_INSERT_FILE_PART", {
|
|
290
|
-
element: elementWithContext
|
|
291
|
-
});
|
|
292
|
-
showNotification(`\u8282\u70B9\u5DF2\u6DFB\u52A0\u5230\u5BF9\u8BDD\u6846`, { mode: "page" });
|
|
293
|
-
};
|
|
294
|
-
const handleClearSelected = () => {
|
|
295
|
-
clearElements();
|
|
296
|
-
updateContext(true);
|
|
297
|
-
showNotification("\u5DF2\u6E05\u9664\u6240\u6709\u9009\u4E2D\u5143\u7D20");
|
|
298
|
-
};
|
|
299
|
-
const handleSelectModeChange = (val) => {
|
|
300
|
-
var _a2, _b;
|
|
301
|
-
selectMode.value = val;
|
|
302
|
-
(_a2 = widgetRef.value) == null ? void 0 : _a2.sendMessageToIframe("OPENCODE_SELECT_MODE_CHANGE", {
|
|
303
|
-
selectMode: val
|
|
304
|
-
});
|
|
305
|
-
const isSplit = (_b = widgetRef.value) == null ? void 0 : _b.isSplitMode;
|
|
306
|
-
if (val && !isSplit && open.value) {
|
|
307
|
-
open.value = false;
|
|
308
|
-
}
|
|
309
|
-
if (!val && !open.value) {
|
|
310
|
-
open.value = true;
|
|
311
|
-
}
|
|
312
|
-
};
|
|
313
|
-
const handleSessionListCollapsedChange = (val) => {
|
|
314
|
-
sessionListCollapsed.value = val;
|
|
315
|
-
};
|
|
316
|
-
const handleThemeChange = (val) => {
|
|
317
|
-
theme.value = val;
|
|
318
|
-
};
|
|
319
|
-
const handleSplitPanelWidthChange = (val) => {
|
|
320
|
-
splitPanelWidth.value = val;
|
|
321
|
-
};
|
|
322
|
-
const handleRemoveSelectedNode = ({ index }) => {
|
|
323
|
-
removeElement(index);
|
|
324
|
-
updateContext(true);
|
|
325
|
-
};
|
|
326
|
-
const handleFrameLoaded = () => {
|
|
327
|
-
iframeLoading.value = false;
|
|
328
|
-
};
|
|
329
|
-
const __returned__ = { props, open, selectMode, sessionListCollapsed, loading, widgetRef, retryingWarmup, availableModels, initialTheme, autoOpen, hotkey, proxyPort, proxyHost, displayMode, splitMode, widgetTheme, splitPanelWidth, proxyBaseUrl, showNotification, serviceStatus, chromeMcpFailed, chromeMcpErrorType, chromeMcpErrorMessage, loadingText, updateStatusFromTask, setStarting, selectedElements, removeElement, clearElements, theme, sendThemeToIframe, sessions, loadingSessionList, currentSessionId, iframeSrc, iframeLoading, loadSessions, createSession, deleteSession, selectSession, updateSessionInfo, updateContext, serverSSE, opencodeSSE, thinking, sessionStates, showSessionListSkeleton, computedLoading, displayLoadingText, retryWarmup, fetchAvailableModels, ensureServicesStarted, toggleSelectMode, handleToggle, handleSelectNode, handleClearSelected, handleSelectModeChange, handleSessionListCollapsedChange, handleThemeChange, handleSplitPanelWidthChange, handleRemoveSelectedNode, handleFrameLoaded, get OpenCodeWidget() {
|
|
330
|
-
return OpenCodeWidget;
|
|
331
|
-
}, LoadingContent, ChromeWarmupError };
|
|
332
|
-
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
333
|
-
return __returned__;
|
|
334
|
-
}
|
|
335
|
-
});
|
|
336
|
-
import { createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx } from "vue";
|
|
337
|
-
function __vue_render__(_ctx, _cache, $props, $setup, $data, $options) {
|
|
338
|
-
return _openBlock(), _createBlock($setup["OpenCodeWidget"], {
|
|
339
|
-
ref: "widgetRef",
|
|
340
|
-
theme: $setup.theme,
|
|
341
|
-
open: $setup.open,
|
|
342
|
-
"select-mode": $setup.selectMode,
|
|
343
|
-
"session-list-collapsed": $setup.sessionListCollapsed,
|
|
344
|
-
"frame-loading": $setup.computedLoading,
|
|
345
|
-
"loading-session-list": $setup.loadingSessionList,
|
|
346
|
-
"show-session-list-skeleton": $setup.showSessionListSkeleton,
|
|
347
|
-
"show-error": $setup.chromeMcpFailed,
|
|
348
|
-
"iframe-src": $setup.iframeSrc,
|
|
349
|
-
"current-session-id": $setup.currentSessionId,
|
|
350
|
-
sessions: $setup.sessions,
|
|
351
|
-
"session-states": $setup.sessionStates,
|
|
352
|
-
"session-key": "id",
|
|
353
|
-
"hotkey-label": $setup.hotkey,
|
|
354
|
-
thinking: $setup.thinking,
|
|
355
|
-
"display-mode": $setup.displayMode,
|
|
356
|
-
"split-mode": $setup.splitMode,
|
|
357
|
-
"split-panel-width": $setup.splitPanelWidth,
|
|
358
|
-
"onUpdate:open": $setup.handleToggle,
|
|
359
|
-
"onUpdate:selectMode": $setup.handleSelectModeChange,
|
|
360
|
-
"onUpdate:sessionListCollapsed": $setup.handleSessionListCollapsedChange,
|
|
361
|
-
"onUpdate:theme": $setup.handleThemeChange,
|
|
362
|
-
"onUpdate:splitPanelWidth": $setup.handleSplitPanelWidthChange,
|
|
363
|
-
onToggleTheme: $setup.handleThemeChange,
|
|
364
|
-
onCreateSession: $setup.createSession,
|
|
365
|
-
onDeleteSession: $setup.deleteSession,
|
|
366
|
-
onSelectSession: $setup.selectSession,
|
|
367
|
-
onClickSelectedNode: $setup.handleSelectNode,
|
|
368
|
-
onClearSelectedNodes: $setup.handleClearSelected,
|
|
369
|
-
onRemoveSelectedNode: $setup.handleRemoveSelectedNode,
|
|
370
|
-
onEmptyAction: $setup.createSession,
|
|
371
|
-
onFrameLoaded: $setup.handleFrameLoaded
|
|
372
|
-
}, {
|
|
373
|
-
loading: _withCtx(() => [
|
|
374
|
-
_createVNode($setup["LoadingContent"], { "loading-text": $setup.displayLoadingText }, null, 8, ["loading-text"])
|
|
375
|
-
]),
|
|
376
|
-
error: _withCtx(() => [
|
|
377
|
-
$setup.chromeMcpFailed ? (_openBlock(), _createBlock($setup["ChromeWarmupError"], {
|
|
378
|
-
key: 0,
|
|
379
|
-
retrying: $setup.retryingWarmup,
|
|
380
|
-
"error-type": $setup.chromeMcpErrorType,
|
|
381
|
-
"error-message": $setup.chromeMcpErrorMessage,
|
|
382
|
-
models: $setup.availableModels,
|
|
383
|
-
onRetry: $setup.retryWarmup
|
|
384
|
-
}, null, 8, ["retrying", "error-type", "error-message", "models"])) : _createCommentVNode("v-if", true)
|
|
385
|
-
]),
|
|
386
|
-
_: 1
|
|
387
|
-
/* STABLE */
|
|
388
|
-
}, 8, ["theme", "open", "select-mode", "session-list-collapsed", "frame-loading", "loading-session-list", "show-session-list-skeleton", "show-error", "iframe-src", "current-session-id", "sessions", "session-states", "hotkey-label", "thinking", "display-mode", "split-mode", "split-panel-width", "onCreateSession", "onDeleteSession", "onSelectSession", "onEmptyAction"]);
|
|
389
|
-
}
|
|
390
|
-
__vue_sfc__.render = __vue_render__;
|
|
391
|
-
var App_vue_default = __vue_sfc__;
|
|
392
|
-
export {
|
|
393
|
-
App_vue_default as default
|
|
394
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.opencode-chrome-warmup-error-details[data-v-06c8b833]{margin-top:8px;padding:12px;background:var(--oc-bg-tertiary);border-radius:6px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:12px;color:var(--oc-text-secondary);max-height:120px;overflow-y:auto;word-break:break-word}.opencode-model-selector[data-v-06c8b833]{display:flex;flex-direction:column;gap:12px;max-width:400px}.select-wrapper[data-v-06c8b833]{position:relative;width:100%}.native-select[data-v-06c8b833]{width:100%;padding:10px 36px 10px 12px;border-radius:8px;border:1px solid var(--oc-border-primary);background:var(--oc-bg-primary);color:var(--oc-text-primary);font-size:14px;cursor:pointer;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;transition:border-color .15s ease,background-color .15s ease,box-shadow .15s ease}.native-select[data-v-06c8b833]:hover:not(:disabled){border-color:var(--oc-border-hover);background:var(--oc-bg-secondary)}.native-select[data-v-06c8b833]:focus{border-color:var(--oc-primary);box-shadow:0 0 0 2px rgba(var(--oc-primary-rgb, 59, 130, 246),.2)}.native-select[data-v-06c8b833]:disabled{opacity:.6;cursor:not-allowed}.native-select option[data-v-06c8b833]{background:var(--oc-bg-primary);color:var(--oc-text-primary);padding:8px}.native-select optgroup[data-v-06c8b833]{color:var(--oc-text-secondary);font-weight:600;font-size:12px}.select-arrow[data-v-06c8b833]{position:absolute;right:12px;top:50%;transform:translateY(-50%);pointer-events:none;color:var(--oc-text-secondary);display:flex;align-items:center}.native-select:disabled+.select-arrow[data-v-06c8b833]{opacity:.6}.retry-btn[data-v-06c8b833]{width:100%;padding:10px 20px;border-radius:8px;border:none;background:var(--oc-primary);color:#fff;font-size:14px;cursor:pointer;transition:background-color .15s ease}.retry-btn[data-v-06c8b833]:hover:not(:disabled){background:var(--oc-primary-hover)}.retry-btn[data-v-06c8b833]:disabled{opacity:.6;cursor:not-allowed}.opencode-chrome-warmup-failed-actions[data-v-06c8b833]{margin-top:16px;display:flex;justify-content:center}.opencode-chrome-warmup-failed-btn[data-v-06c8b833]{padding:10px 20px;border-radius:8px;border:none;font-size:14px;cursor:pointer;transition:background-color .15s ease}.opencode-chrome-warmup-failed-btn.primary[data-v-06c8b833]{background:var(--oc-primary);color:#fff}.opencode-chrome-warmup-failed-btn.primary[data-v-06c8b833]:hover:not(:disabled){background:var(--oc-primary-hover)}.opencode-chrome-warmup-failed-btn[data-v-06c8b833]:disabled{opacity:.6;cursor:not-allowed}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { type ModelInfo } from "@vite-plugin-opencode-assistant/shared";
|
|
2
|
-
type __VLS_Props = {
|
|
3
|
-
retrying: boolean;
|
|
4
|
-
errorType?: string;
|
|
5
|
-
errorMessage?: string;
|
|
6
|
-
models?: ModelInfo[];
|
|
7
|
-
};
|
|
8
|
-
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
9
|
-
retry: (selectedModel?: {
|
|
10
|
-
providerID: string;
|
|
11
|
-
modelID: string;
|
|
12
|
-
} | undefined) => any;
|
|
13
|
-
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
14
|
-
onRetry?: ((selectedModel?: {
|
|
15
|
-
providerID: string;
|
|
16
|
-
modelID: string;
|
|
17
|
-
} | undefined) => any) | undefined;
|
|
18
|
-
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
19
|
-
export default _default;
|