mocode-ai 1.7.2 → 1.7.5
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/README.md +3 -3
- package/README.zh-CN.md +3 -3
- package/dist/config/index.js +1 -1
- package/dist/config/profiles.js +2 -2
- package/dist/flows/cli.js +168 -0
- package/dist/flows/flow.js +483 -0
- package/dist/flows/runner.js +259 -0
- package/dist/flows/trace.js +242 -0
- package/dist/i18n/index.js +28 -0
- package/dist/index.js +7 -0
- package/dist/llm/index.js +1 -1
- package/dist/permissions/computer-review.js +40 -0
- package/dist/permissions/flow-review.js +41 -0
- package/dist/permissions/index.js +47 -28
- package/dist/repl/commands/flow.js +210 -0
- package/dist/repl/commands/registry.js +2 -0
- package/dist/repl/commands/tool-group.js +9 -1
- package/dist/repl/commands.js +10 -0
- package/dist/repl/running-input.js +75 -14
- package/dist/repl/runtime.js +4 -1
- package/dist/runtime/input-injector.js +39 -26
- package/dist/runtime/shutdown.js +3 -1
- package/dist/runtime/uia-selector.js +324 -0
- package/dist/runtime/uia-service.js +510 -0
- package/dist/runtime/wait-until.js +199 -0
- package/dist/runtime/window-list.js +164 -0
- package/dist/session/compact.js +1 -1
- package/dist/session/gui-actions.js +47 -0
- package/dist/tools/builtins/computer.js +647 -10
- package/dist/tools/builtins/index.js +4 -0
- package/dist/tools/builtins/read-file.js +54 -3
- package/dist/tools/builtins/run-flow.js +123 -0
- package/dist/tools/constants.js +8 -2
- package/dist/tools/router.js +1 -1
- package/dist/tools/validation.js +57 -0
- package/dist/ui/composer.js +6 -2
- package/dist/ui/layout-internal/content-write.js +74 -6
- package/dist/ui/layout-internal/core.js +32 -8
- package/dist/ui/layout-internal/screen.js +4 -0
- package/dist/ui/layout-internal/scroll.js +5 -3
- package/dist/ui/layout-internal/state.js +6 -0
- package/dist/ui/layout-internal/statusbar.js +16 -1
- package/dist/ui/render.js +19 -11
- package/docs/usage.md +344 -344
- package/package.json +92 -92
package/dist/ui/render.js
CHANGED
|
@@ -326,12 +326,17 @@ export function wrapByDisplayWidth(text, width) {
|
|
|
326
326
|
return out;
|
|
327
327
|
}
|
|
328
328
|
const MARGIN = ' '; // 盒外左缩进
|
|
329
|
-
// ── MoCode 块字符 logo(
|
|
330
|
-
const LOGO_W = 35; // logo 区显示宽度
|
|
329
|
+
// ── MoCode 块字符 logo(6 行,neofetch 风)──
|
|
330
|
+
const LOGO_W = 35; // logo 区显示宽度(字母 30 + 5 格留白)
|
|
331
331
|
const LOGO_GAP = 0; // logo 与信息区之间的间隔
|
|
332
|
-
//
|
|
332
|
+
// 块字符画:M / o / C / o / d / e,块字符上半/下半合并两个 ASCII 行(后 4 行);
|
|
333
|
+
// 第一个 o(第 6-9 列)头上坐着早期版本(6be25e8)的作者小人,眼睛 ◑(右半实心)朝右看。
|
|
334
|
+
// 屁股 ╰ 落在 o 顶边上半块 █▀▀█(贴格子顶,无半格空隙);腿 ──── 往右伸,脚 OO 在第 11-14 列。
|
|
335
|
+
// 腿与 d 的升部 ▄(第 24 列)同一行
|
|
333
336
|
const LOGO_LINES = [
|
|
334
|
-
'
|
|
337
|
+
' [◕ᴗ◕]',
|
|
338
|
+
' ●| |●',
|
|
339
|
+
' OO ▄ ',
|
|
335
340
|
'█▀█▀█ █▀▀█ ▄▄▄▄ ▄▄▄▄ ▄▄▄█ ▄▄▄▄',
|
|
336
341
|
'█ █ █ █ █ █ ▀ █ █ █ █ █▄▄█',
|
|
337
342
|
'▀ ▀ ▀ ▀▀▀▀ █▄▄█ █▄▄█ █▄▄█ █▄▄▄',
|
|
@@ -353,17 +358,20 @@ function memoryValue(on) {
|
|
|
353
358
|
return on ? `${ui.accent}${memoryLabel(on)}${ui.reset}` : `${ui.dim}${memoryLabel(on)}${ui.reset}`;
|
|
354
359
|
}
|
|
355
360
|
/** 横幅纯文本(带 ANSI 颜色,不写出)——供 TUI 经 contentWrite 写入内容区以跟踪续写位。
|
|
356
|
-
* 布局:大字 logo(
|
|
361
|
+
* 布局:大字 logo(6 行:小人 2 行 + 脚/升部 1 行 + 字母 3 行)左对齐,
|
|
362
|
+
* 标题/信息并排放在后 4 行右侧(neofetch 风),小人头/身两行右侧留空。 */
|
|
357
363
|
export function bannerString(info) {
|
|
358
364
|
const title = `${ui.bold}${ui.accent}● MoCode${ui.reset} ${ui.dim}v${VERSION}${ui.reset}`;
|
|
359
365
|
const labels = [t('banner.model'), t('banner.directory'), t('banner.memory')];
|
|
360
366
|
// 标签列按当前语言最长文本动态定宽,并至少留两个空格;中文保持原 6 列,英文扩至 11 列。
|
|
361
367
|
const labelWidth = Math.max(...labels.map(displayWidth)) + 2;
|
|
362
368
|
const rows = [
|
|
363
|
-
logoLine(0)
|
|
364
|
-
logoLine(1)
|
|
365
|
-
logoLine(2) +
|
|
366
|
-
logoLine(3) + labelContent(labels[
|
|
369
|
+
logoLine(0),
|
|
370
|
+
logoLine(1),
|
|
371
|
+
logoLine(2) + title,
|
|
372
|
+
logoLine(3) + labelContent(labels[0], info.model, labelWidth),
|
|
373
|
+
logoLine(4) + labelContent(labels[1], truncateDisplay(info.cwd, 48), labelWidth),
|
|
374
|
+
logoLine(5) + labelContent(labels[2], memoryValue(info.memoryEnabled), labelWidth),
|
|
367
375
|
];
|
|
368
376
|
return rows.map((r) => MARGIN + r).join('\n') + '\n\n';
|
|
369
377
|
}
|
|
@@ -383,8 +391,8 @@ export function printBanner(info) {
|
|
|
383
391
|
*/
|
|
384
392
|
export function bannerLines(info) {
|
|
385
393
|
const raw = bannerString(info);
|
|
386
|
-
// bannerString 形如 "行1\n
|
|
387
|
-
//
|
|
394
|
+
// bannerString 形如 "行1\n…\n行6\n\n",末尾 \n 后切出一个尾空串
|
|
395
|
+
// 行集合 = 6 行 logo+info + 1 空行分隔;filter(Boolean?) 不可 — 空行也要算
|
|
388
396
|
// 仅过滤最后那个 \n 切出的尾空
|
|
389
397
|
const split = raw.split('\n');
|
|
390
398
|
const lines = split.length > 0 && split[split.length - 1] === '' ? split.slice(0, -1) : split;
|