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