@xcanwin/manyoyo 7.0.26 → 7.1.2

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,394 +0,0 @@
1
- <!doctype html>
2
- <html lang="zh-CN">
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta
6
- name="viewport"
7
- content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover"
8
- />
9
- <title>MANYOYO Web</title>
10
- <link rel="stylesheet" href="/app/frontend/app.css" />
11
- <link rel="stylesheet" href="/app/frontend/markdown.css" />
12
- <link rel="stylesheet" href="/app/vendor/xterm.css" />
13
- </head>
14
- <body>
15
- <div class="app">
16
- <aside class="sidebar">
17
- <div class="sidebar-top">
18
- <div class="brand-wrap">
19
- <div class="brand">MANYOYO Web</div>
20
- </div>
21
- <button
22
- type="button"
23
- id="mobileSidebarClose"
24
- class="secondary mobile-sidebar-close"
25
- aria-label="关闭会话列表"
26
- >关闭</button>
27
- </div>
28
- <div class="sidebar-create">
29
- <button type="button" id="openCreateBtn">新建容器</button>
30
- </div>
31
- <div class="session-head">
32
- <span>工作台</span>
33
- <span id="sessionCount">0 个</span>
34
- </div>
35
- <nav class="crumb-bar" id="sessionBreadcrumb" aria-label="导航路径"></nav>
36
- <input
37
- type="text"
38
- id="containerSearchInput"
39
- class="container-search-input"
40
- placeholder="按工作目录 / 容器名搜索"
41
- spellcheck="false"
42
- />
43
- <div id="sessionList" aria-label="容器与 AGENT 列表"></div>
44
- <div class="sidebar-bottom">
45
- <button type="button" id="openConfigBtn" class="secondary">系统设置</button>
46
- </div>
47
- </aside>
48
- <main class="main">
49
- <header class="header">
50
- <div class="header-main">
51
- <div class="workbench-tabs" id="workbenchTabs" aria-label="工作台视图">
52
- <button
53
- type="button"
54
- id="mobileSessionToggle"
55
- class="secondary mobile-session-toggle"
56
- aria-expanded="false"
57
- aria-controls="sessionList"
58
- >会话</button>
59
- <div class="workspace-switcher">
60
- <button
61
- type="button"
62
- id="workspaceSwitcherToggle"
63
- class="secondary workspace-switcher-btn"
64
- aria-haspopup="true"
65
- aria-expanded="false"
66
- aria-controls="workspaceSwitcherPanel"
67
- aria-label="切换视图:活动、终端、文件、详情、配置、检查"
68
- ><svg viewBox="0 0 16 16" aria-hidden="true" focusable="false"><circle cx="3" cy="8" r="1.4"></circle><circle cx="8" cy="8" r="1.4"></circle><circle cx="13" cy="8" r="1.4"></circle></svg></button>
69
- <div class="workspace-switcher-panel" id="workspaceSwitcherPanel" hidden>
70
- <button type="button" id="viewActivityBtn" class="secondary is-active">活动</button>
71
- <button type="button" id="viewTerminalBtn" class="secondary">终端</button>
72
- <button type="button" id="viewFilesBtn" class="secondary">文件</button>
73
- <button type="button" id="viewDetailBtn" class="secondary">详情</button>
74
- <button type="button" id="viewConfigBtn" class="secondary">配置</button>
75
- <button type="button" id="viewCheckBtn" class="secondary">检查</button>
76
- </div>
77
- </div>
78
- </div>
79
- </div>
80
- </header>
81
- <section class="workspace-shell">
82
- <div class="workspace-main">
83
- <section id="messages" class="workspace-pane"></section>
84
- <section id="terminalPanel" class="workspace-pane" hidden>
85
- <div id="terminalKeybar" class="term-keybar" aria-label="终端快捷键">
86
- <button type="button" class="term-key-btn" data-key="esc">esc</button>
87
- <button type="button" class="term-key-btn" data-key="tab">tab</button>
88
- <button type="button" class="term-key-btn term-ctrl-btn" data-key="ctrl">ctrl</button>
89
- <button type="button" class="term-key-btn term-alt-btn" data-key="alt">alt</button>&nbsp;&nbsp;
90
- <button type="button" class="term-key-btn" data-key="left">&nbsp;◀&nbsp;</button>
91
- <button type="button" class="term-key-btn" data-key="up">&nbsp;▲&nbsp;</button>
92
- <button type="button" class="term-key-btn" data-key="down">&nbsp;▼&nbsp;</button>
93
- <button type="button" class="term-key-btn" data-key="right">&nbsp;▶&nbsp;</button>
94
- </div>
95
- <div id="terminalScreen" aria-label="终端输出区域"></div>
96
- </section>
97
- <section id="filesPanel" class="workspace-pane files-pane" hidden></section>
98
- <section id="detailPanel" class="workspace-pane inspector-pane" hidden>
99
- <div id="detailSummary" class="inspector-stack"></div>
100
- </section>
101
- <section id="configPanel" class="workspace-pane inspector-pane" hidden>
102
- <div id="configSummary" class="inspector-stack"></div>
103
- </section>
104
- <section id="checkPanel" class="workspace-pane inspector-pane" hidden>
105
- <div id="checkSummary" class="inspector-stack"></div>
106
- </section>
107
- <form class="composer" id="composer">
108
- <div class="composer-inner">
109
- <textarea id="commandInput" placeholder="输入容器命令,例如: ls -la"></textarea>
110
- <div class="composer-actions">
111
- <div class="composer-options">
112
- <button
113
- type="button"
114
- id="composerOptionsToggle"
115
- class="secondary"
116
- aria-haspopup="true"
117
- aria-expanded="false"
118
- aria-controls="composerOptionsPanel"
119
- >选项</button>
120
- <div class="composer-options-panel" id="composerOptionsPanel" hidden>
121
- <button type="button" id="activityAgentBtn" class="secondary is-active">Agent对话</button>
122
- <button type="button" id="activityCommandBtn" class="secondary">系统命令</button>
123
- <button type="button" id="agentTemplateBtn" class="secondary">CLI · —</button>
124
- <button type="button" id="activityModelChip" class="secondary">模型 · —</button>
125
- </div>
126
- </div>
127
- <button type="submit" id="sendBtn">发送</button>
128
- </div>
129
- </div>
130
- </form>
131
- </div>
132
- </section>
133
- </main>
134
- <div id="sidebarBackdrop" class="sidebar-backdrop" hidden></div>
135
-
136
- <div id="configModal" class="modal-backdrop" hidden>
137
- <section class="modal" role="dialog" aria-modal="true" aria-labelledby="configModalTitle">
138
- <header class="modal-header">
139
- <h2 id="configModalTitle">查看配置摘要 (~/.manyoyo/manyoyo.json)</h2>
140
- <button type="button" id="configCancelBtn" class="secondary">关闭</button>
141
- </header>
142
- <div class="modal-body">
143
- <div id="configPath" class="modal-tip"></div>
144
- <div id="configEditor" class="config-editor"></div>
145
- <div id="configStatus" class="modal-success" hidden></div>
146
- <div id="configError" class="modal-error" hidden></div>
147
- </div>
148
- <footer class="modal-footer">
149
- <button type="button" id="configReloadBtn" class="secondary">重新加载</button>
150
- <button type="button" id="configSaveBtn">保存</button>
151
- </footer>
152
- </section>
153
- </div>
154
-
155
- <div id="createModal" class="modal-backdrop" hidden>
156
- <section class="modal" role="dialog" aria-modal="true" aria-labelledby="createModalTitle">
157
- <header class="modal-header">
158
- <h2 id="createModalTitle">新建容器会话</h2>
159
- <button type="button" id="createCancelBtn" class="secondary">关闭</button>
160
- </header>
161
- <form id="createSessionForm" class="modal-body">
162
- <div class="form-grid">
163
- <label>run
164
- <select id="createRun">
165
- <option value="">(不使用 run)</option>
166
- </select>
167
- </label>
168
- <label>hostPath
169
- <div class="field-inline">
170
- <input id="createHostPath" placeholder="/abs/path/project" />
171
- <button type="button" id="pickHostPathBtn" class="secondary field-picker-btn">选择</button>
172
- </div>
173
- </label>
174
- <label>containerName<input id="createContainerName" placeholder="my-dev 或 my-{now}" /></label>
175
- <label>containerPath<input id="createContainerPath" placeholder="/workspace" /></label>
176
- <label>imageName<input id="createImageName" placeholder="localhost/xcanwin/manyoyo" /></label>
177
- <label>imageVersion<input id="createImageVersion" placeholder="1.7.4-common" /></label>
178
- <label>containerMode
179
- <select id="createContainerMode">
180
- <option value="">(跟随默认)</option>
181
- <option value="common">common</option>
182
- <option value="dind">dind</option>
183
- <option value="sock">sock</option>
184
- </select>
185
- </label>
186
- <label>shellPrefix<input id="createShellPrefix" placeholder="例如 IS_SANDBOX=1" /></label>
187
- <label>shell<input id="createShell" placeholder="例如 claude / codex" /></label>
188
- <label>shellSuffix<input id="createShellSuffix" placeholder="例如 --dangerously-skip-permissions" /></label>
189
- <label>CLI
190
- <select id="createYolo">
191
- <option value="">(不使用)</option>
192
- <option value="claude">claude</option>
193
- <option value="codex">codex</option>
194
- <option value="gemini">gemini</option>
195
- <option value="opencode">opencode</option>
196
- </select>
197
- </label>
198
- <label>agentPromptCommand<input id="createAgentPromptCommand" placeholder="例如 codex exec --plain-text {prompt}" /></label>
199
- </div>
200
- <label class="text-block">env (KEY=VALUE,每行一项)
201
- <textarea id="createEnv" placeholder="KEY=value"></textarea>
202
- </label>
203
- <label class="text-block">envFile (绝对路径,每行一项)
204
- <textarea id="createEnvFile" placeholder="/abs/path/.env"></textarea>
205
- </label>
206
- <label class="text-block">volumes (每行一项)
207
- <textarea id="createVolumes" placeholder="/host/path:/container/path"></textarea>
208
- </label>
209
- <div id="createError" class="modal-error" hidden></div>
210
- <footer class="modal-footer">
211
- <button type="button" id="createResetBtn" class="secondary">重置默认</button>
212
- <button type="submit" id="createSubmitBtn">创建并进入</button>
213
- </footer>
214
- </form>
215
- </section>
216
- </div>
217
-
218
- <div id="removeConfirmModal" class="modal-backdrop" hidden>
219
- <section class="modal modal-sm" role="dialog" aria-modal="true" aria-labelledby="removeConfirmTitle">
220
- <header class="modal-header">
221
- <h2 id="removeConfirmTitle">确认删除</h2>
222
- <button type="button" id="removeConfirmCancelBtn" class="secondary">关闭</button>
223
- </header>
224
- <div class="modal-body">
225
- <p id="removeConfirmMessage" class="modal-message"></p>
226
- </div>
227
- <footer class="modal-footer">
228
- <button type="button" id="removeConfirmKeepHistoryBtn" class="secondary">否,保留历史</button>
229
- <button type="button" id="removeConfirmWithHistoryBtn" class="danger">是,连同历史一起删除</button>
230
- </footer>
231
- </section>
232
- </div>
233
-
234
- <div id="genericDialogModal" class="modal-backdrop" hidden>
235
- <section class="modal modal-sm" role="dialog" aria-modal="true" aria-labelledby="genericDialogTitle">
236
- <header class="modal-header">
237
- <h2 id="genericDialogTitle"></h2>
238
- <button type="button" id="genericDialogCloseBtn" class="secondary">关闭</button>
239
- </header>
240
- <div class="modal-body">
241
- <p id="genericDialogMessage" class="modal-message"></p>
242
- <input type="text" id="genericDialogInput" class="modal-dialog-input" hidden />
243
- </div>
244
- <footer class="modal-footer">
245
- <button type="button" id="genericDialogCancelBtn" class="secondary" hidden>取消</button>
246
- <button type="button" id="genericDialogConfirmBtn">确定</button>
247
- </footer>
248
- </section>
249
- </div>
250
-
251
- <div id="directoryPickerModal" class="modal-backdrop" hidden>
252
- <section class="modal dir-picker-modal" role="dialog" aria-modal="true" aria-labelledby="directoryPickerTitle">
253
- <header class="modal-header">
254
- <h2 id="directoryPickerTitle">选择目录</h2>
255
- <button type="button" id="directoryPickerCancelBtn" class="secondary">关闭</button>
256
- </header>
257
- <div class="modal-body">
258
- <div id="directoryPickerTip" class="modal-tip"></div>
259
- <div class="files-toolbar dir-picker-toolbar">
260
- <div class="files-toolbar-path-group">
261
- <input type="text" id="directoryPickerPathInput" class="files-toolbar-path-input" value="/" spellcheck="false" />
262
- <button type="button" id="directoryPickerVisitBtn" class="secondary">访问</button>
263
- </div>
264
- <div class="files-toolbar-meta dir-picker-toolbar-meta">
265
- <div id="directoryPickerStatus" class="files-toolbar-status">未加载</div>
266
- <button type="button" id="directoryPickerMkdirBtn" class="secondary">新建目录</button>
267
- <button type="button" id="directoryPickerSelectBtn">使用当前目录</button>
268
- </div>
269
- </div>
270
- <div id="directoryPickerError" class="modal-error" hidden></div>
271
- <div id="directoryPickerList" class="dir-picker-list files-list"></div>
272
- </div>
273
- </section>
274
- </div>
275
-
276
- <div id="agentTemplateModal" class="modal-backdrop" hidden>
277
- <section class="modal agent-template-modal" role="dialog" aria-modal="true" aria-labelledby="agentTemplateTitle">
278
- <header class="modal-header">
279
- <h2 id="agentTemplateTitle">设置 CLI / Agent 模板</h2>
280
- <button type="button" id="agentTemplateCancelBtn" class="secondary">关闭</button>
281
- </header>
282
- <div class="modal-body">
283
- <div id="agentTemplatePrimary" class="agent-template-primary">
284
- <label class="text-block">CLI
285
- <select id="containerCliSelect">
286
- <option value="custom">自定义</option>
287
- <option value="claude">claude</option>
288
- <option value="codex">codex</option>
289
- <option value="gemini">gemini</option>
290
- <option value="opencode">opencode</option>
291
- </select>
292
- </label>
293
- <label class="text-block">高级编辑 agentPromptCommand
294
- <textarea id="containerAgentPromptEditor" placeholder="例如 codex exec --skip-git-repo-check {prompt}"></textarea>
295
- </label>
296
- </div>
297
- <div id="agentTemplateOverrideGroup">
298
- <section class="agent-template-section">
299
- <div class="agent-template-section-title">当前 AGENT 覆盖</div>
300
- <label class="text-block">CLI
301
- <select id="agentCliSelect">
302
- <option value="">继承容器默认</option>
303
- <option value="custom">自定义</option>
304
- <option value="claude">claude</option>
305
- <option value="codex">codex</option>
306
- <option value="gemini">gemini</option>
307
- <option value="opencode">opencode</option>
308
- </select>
309
- </label>
310
- <label class="text-block">高级编辑 agentPromptCommand
311
- <textarea id="agentPromptOverrideEditor" placeholder="留空则继承容器默认模板"></textarea>
312
- </label>
313
- </section>
314
- </div>
315
- <div id="agentTemplateError" class="modal-error" hidden></div>
316
- </div>
317
- <footer class="modal-footer">
318
- <button type="button" id="agentTemplateResetBtn" class="secondary">恢复当前值</button>
319
- <button type="button" id="agentTemplateSaveBtn">保存</button>
320
- </footer>
321
- </section>
322
- </div>
323
-
324
- <div id="modelModal" class="modal-backdrop" hidden>
325
- <section class="modal" role="dialog" aria-modal="true" aria-labelledby="modelModalTitle">
326
- <header class="modal-header">
327
- <h2 id="modelModalTitle">选择模型</h2>
328
- <button type="button" id="modelModalCancelBtn" class="secondary">关闭</button>
329
- </header>
330
- <div class="modal-body">
331
- <div id="modelModalLoading" class="modal-tip" hidden>正在获取模型列表…</div>
332
- <label class="text-block">模型
333
- <select id="modelSelect">
334
- <option value="">跟随默认(不传 --model)</option>
335
- <option value="__custom__">自定义…</option>
336
- </select>
337
- </label>
338
- <label class="text-block" id="modelCustomGroup" hidden>自定义模型名称
339
- <input type="text" id="modelCustomInput" placeholder="例如 gemini-2.5-pro">
340
- </label>
341
- <div id="modelModalError" class="modal-error" hidden></div>
342
- </div>
343
- <footer class="modal-footer">
344
- <button type="button" id="modelModalSaveBtn">保存</button>
345
- </footer>
346
- </section>
347
- </div>
348
-
349
- <div id="externalLinkModal" class="modal-backdrop" hidden>
350
- <section class="modal" role="dialog" aria-modal="true" aria-labelledby="externalLinkTitle">
351
- <header class="modal-header">
352
- <h2 id="externalLinkTitle">打开外部链接</h2>
353
- <button type="button" id="externalLinkCancelBtn" class="secondary">取消</button>
354
- </header>
355
- <div class="modal-body">
356
- <div class="modal-tip">即将新标签页打开外部页面。请确认完整链接可信后再继续。</div>
357
- <div id="externalLinkUrl" class="link-confirm-url"></div>
358
- </div>
359
- <footer class="modal-footer">
360
- <button type="button" id="externalLinkOpenBtn">确认并新标签打开</button>
361
- </footer>
362
- </section>
363
- </div>
364
-
365
- <div id="cloneNameModal" class="modal-backdrop" hidden>
366
- <section class="modal" role="dialog" aria-modal="true" aria-labelledby="cloneNameTitle">
367
- <header class="modal-header">
368
- <h2 id="cloneNameTitle">创建相同配置容器</h2>
369
- <button type="button" id="cloneNameCancelBtn" class="secondary">关闭</button>
370
- </header>
371
- <div class="modal-body">
372
- <div id="cloneNameTip" class="modal-tip"></div>
373
- <label class="text-block">新容器名称
374
- <input type="text" id="cloneNameInput" spellcheck="false" />
375
- </label>
376
- <div id="cloneNameError" class="modal-error" hidden></div>
377
- </div>
378
- <footer class="modal-footer">
379
- <button type="button" id="cloneNameConfirmBtn">确认</button>
380
- </footer>
381
- </section>
382
- </div>
383
- </div>
384
-
385
- <script src="/app/vendor/xterm.js"></script>
386
- <script src="/app/vendor/xterm-addon-fit.js"></script>
387
- <script src="/app/vendor/marked.min.js"></script>
388
- <script src="/app/frontend/markdown-renderer.js"></script>
389
- <script src="/app/frontend/chat-behavior.js"></script>
390
- <script src="/app/frontend/codemirror.bundle.js"></script>
391
- <script src="/app/frontend/file-browser.js"></script>
392
- <script src="/app/frontend/app.js"></script>
393
- </body>
394
- </html>