skyloom 1.13.5 → 1.13.7
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/.github/workflows/ci.yml +36 -36
- package/README.md +220 -159
- package/config/providers.yaml +39 -39
- package/config/skills/api_integrator/SKILL.md +15 -15
- package/config/skills/arch_designer/SKILL.md +13 -13
- package/config/skills/ci_cd_manager/SKILL.md +14 -14
- package/config/skills/code_analysis/SKILL.md +13 -13
- package/config/skills/code_generator/SKILL.md +12 -12
- package/config/skills/code_reviewer/SKILL.md +13 -13
- package/config/skills/content_writer/SKILL.md +14 -14
- package/config/skills/data_transformer/SKILL.md +15 -15
- package/config/skills/document_analysis/SKILL.md +13 -13
- package/config/skills/emotional_companion/SKILL.md +15 -15
- package/config/skills/performance_checker/SKILL.md +14 -14
- package/config/skills/security_auditor/SKILL.md +14 -14
- package/config/skills/self_evolve/SKILL.md +13 -13
- package/config/skills/sys_operator/SKILL.md +15 -15
- package/config/skills/task_planner/SKILL.md +14 -14
- package/config/skills/web_research/SKILL.md +14 -14
- package/config/skills/workflow_designer/SKILL.md +13 -13
- package/dist/agents/dew.js +52 -52
- package/dist/agents/fair.js +84 -84
- package/dist/agents/fog.js +30 -30
- package/dist/agents/frost.js +32 -32
- package/dist/agents/rain.js +32 -32
- package/dist/agents/snow.js +68 -68
- package/dist/cli/commands_md.d.ts +41 -0
- package/dist/cli/commands_md.d.ts.map +1 -0
- package/dist/cli/commands_md.js +140 -0
- package/dist/cli/commands_md.js.map +1 -0
- package/dist/cli/input_macros.d.ts +28 -0
- package/dist/cli/input_macros.d.ts.map +1 -0
- package/dist/cli/input_macros.js +120 -0
- package/dist/cli/input_macros.js.map +1 -0
- package/dist/cli/loom.d.ts +220 -0
- package/dist/cli/loom.d.ts.map +1 -0
- package/dist/cli/loom.js +1094 -0
- package/dist/cli/loom.js.map +1 -0
- package/dist/cli/loom_chat.d.ts +20 -0
- package/dist/cli/loom_chat.d.ts.map +1 -0
- package/dist/cli/loom_chat.js +685 -0
- package/dist/cli/loom_chat.js.map +1 -0
- package/dist/cli/main.js +310 -14
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/tui.d.ts.map +1 -1
- package/dist/cli/tui.js +7 -1
- package/dist/cli/tui.js.map +1 -1
- package/dist/core/agent/guard.d.ts +45 -0
- package/dist/core/agent/guard.d.ts.map +1 -0
- package/dist/core/agent/guard.js +113 -0
- package/dist/core/agent/guard.js.map +1 -0
- package/dist/core/agent.d.ts +17 -0
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +182 -93
- package/dist/core/agent.js.map +1 -1
- package/dist/core/factory.d.ts.map +1 -1
- package/dist/core/factory.js +34 -2
- package/dist/core/factory.js.map +1 -1
- package/dist/core/file_checkpoint.d.ts +57 -0
- package/dist/core/file_checkpoint.d.ts.map +1 -0
- package/dist/core/file_checkpoint.js +162 -0
- package/dist/core/file_checkpoint.js.map +1 -0
- package/dist/core/hooks.d.ts +43 -0
- package/dist/core/hooks.d.ts.map +1 -0
- package/dist/core/hooks.js +110 -0
- package/dist/core/hooks.js.map +1 -0
- package/dist/core/llm.d.ts.map +1 -1
- package/dist/core/llm.js +15 -9
- package/dist/core/llm.js.map +1 -1
- package/dist/core/longdoc.js +5 -5
- package/dist/core/mcp.d.ts +16 -0
- package/dist/core/mcp.d.ts.map +1 -1
- package/dist/core/mcp.js +55 -0
- package/dist/core/mcp.js.map +1 -1
- package/dist/core/model_config.d.ts +40 -0
- package/dist/core/model_config.d.ts.map +1 -0
- package/dist/core/model_config.js +191 -0
- package/dist/core/model_config.js.map +1 -0
- package/dist/core/skill.d.ts +7 -0
- package/dist/core/skill.d.ts.map +1 -1
- package/dist/core/skill.js +47 -0
- package/dist/core/skill.js.map +1 -1
- package/dist/core/skymd.d.ts +39 -0
- package/dist/core/skymd.d.ts.map +1 -0
- package/dist/core/skymd.js +177 -0
- package/dist/core/skymd.js.map +1 -0
- package/dist/core/tool.d.ts +12 -0
- package/dist/core/tool.d.ts.map +1 -1
- package/dist/core/tool.js +30 -0
- package/dist/core/tool.js.map +1 -1
- package/dist/core/verify.d.ts +27 -0
- package/dist/core/verify.d.ts.map +1 -0
- package/dist/core/verify.js +62 -0
- package/dist/core/verify.js.map +1 -0
- package/dist/skills/loader.d.ts +22 -2
- package/dist/skills/loader.d.ts.map +1 -1
- package/dist/skills/loader.js +45 -15
- package/dist/skills/loader.js.map +1 -1
- package/dist/tools/builtin.d.ts.map +1 -1
- package/dist/tools/builtin.js +13 -3
- package/dist/tools/builtin.js.map +1 -1
- package/dist/tools/model_tool.d.ts +11 -0
- package/dist/tools/model_tool.d.ts.map +1 -0
- package/dist/tools/model_tool.js +71 -0
- package/dist/tools/model_tool.js.map +1 -0
- package/dist/tools/todo.d.ts +30 -0
- package/dist/tools/todo.d.ts.map +1 -0
- package/dist/tools/todo.js +78 -0
- package/dist/tools/todo.js.map +1 -0
- package/docs/AESTHETIC_DESIGN.md +152 -144
- package/docs/OPTIMIZATION_PLAN.md +178 -178
- package/package.json +1 -1
- package/scripts/install.js +48 -48
- package/scripts/link.js +10 -10
- package/setup.bat +79 -79
- package/skill-test-ty2fOA/test.md +10 -10
- package/src/agents/dew.ts +70 -70
- package/src/agents/fair.ts +102 -102
- package/src/agents/fog.ts +48 -48
- package/src/agents/frost.ts +50 -50
- package/src/agents/rain.ts +50 -50
- package/src/agents/snow.ts +239 -239
- package/src/cli/commands_md.ts +112 -0
- package/src/cli/input_macros.ts +83 -0
- package/src/cli/loom.ts +982 -0
- package/src/cli/loom_chat.ts +598 -0
- package/src/cli/main.ts +255 -9
- package/src/cli/mode.ts +58 -58
- package/src/cli/tui.ts +228 -222
- package/src/core/agent/guard.ts +134 -0
- package/src/core/agent/task.ts +100 -100
- package/src/core/agent.ts +177 -95
- package/src/core/arbitrate.ts +162 -162
- package/src/core/catalog.ts +178 -178
- package/src/core/checkpoint.ts +94 -94
- package/src/core/estimate.ts +104 -104
- package/src/core/evolve.ts +191 -191
- package/src/core/factory.ts +31 -2
- package/src/core/file_checkpoint.ts +136 -0
- package/src/core/filter.ts +103 -103
- package/src/core/graph.ts +156 -156
- package/src/core/hooks.ts +126 -0
- package/src/core/icons.ts +53 -53
- package/src/core/index.ts +37 -37
- package/src/core/learn.ts +146 -146
- package/src/core/llm.ts +15 -9
- package/src/core/longdoc.ts +155 -155
- package/src/core/mcp.ts +48 -0
- package/src/core/mcp_server.ts +176 -176
- package/src/core/model_config.ts +157 -0
- package/src/core/profile.ts +255 -255
- package/src/core/router.ts +124 -124
- package/src/core/sandbox.ts +142 -142
- package/src/core/security.ts +243 -243
- package/src/core/skill.ts +42 -0
- package/src/core/skymd.ts +143 -0
- package/src/core/theme.ts +65 -65
- package/src/core/tool.ts +30 -0
- package/src/core/tool_router.ts +193 -193
- package/src/core/vector.ts +152 -152
- package/src/core/verify.ts +71 -0
- package/src/core/workspace.ts +150 -150
- package/src/plugins/loader.ts +66 -66
- package/src/skills/loader.ts +45 -16
- package/src/sql.js.d.ts +29 -29
- package/src/tools/builtin.ts +13 -3
- package/src/tools/computer.ts +269 -269
- package/src/tools/delegate.ts +49 -49
- package/src/tools/model_tool.ts +74 -0
- package/src/tools/todo.ts +76 -0
- package/src/web/tts.ts +93 -93
- package/tests/agent.test.ts +159 -159
- package/tests/agent_helpers.test.ts +48 -48
- package/tests/bus.test.ts +121 -121
- package/tests/catalog.test.ts +86 -86
- package/tests/checkpoint_commands.test.ts +124 -0
- package/tests/claude_compat.test.ts +110 -0
- package/tests/config.test.ts +41 -41
- package/tests/guard.test.ts +75 -0
- package/tests/icons.test.ts +45 -45
- package/tests/loom.test.ts +248 -0
- package/tests/memory.test.ts +170 -170
- package/tests/model_config.test.ts +109 -0
- package/tests/router.test.ts +86 -86
- package/tests/schemas.test.ts +51 -51
- package/tests/semantic.test.ts +83 -83
- package/tests/setup.ts +10 -10
- package/tests/skill.test.ts +172 -172
- package/tests/skymd.test.ts +146 -0
- package/tests/task.test.ts +60 -60
- package/tests/todo_toolstats.test.ts +94 -0
- package/tests/tool.test.ts +108 -108
- package/tests/tool_router.test.ts +71 -71
- package/tests/tui.test.ts +67 -67
- package/vitest.config.ts +17 -17
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loom_chat.js","sourceRoot":"","sources":["../../src/cli/loom_chat.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/main.js
CHANGED
|
@@ -50,6 +50,7 @@ const catalog_1 = require("../core/catalog");
|
|
|
50
50
|
const theme_1 = require("../core/theme");
|
|
51
51
|
const mode_1 = require("./mode");
|
|
52
52
|
const tui_1 = require("./tui");
|
|
53
|
+
const loom_chat_1 = require("./loom_chat");
|
|
53
54
|
const MODE = new mode_1.ModeController();
|
|
54
55
|
const VERSION = (() => { try {
|
|
55
56
|
return require("../../package.json").version;
|
|
@@ -104,7 +105,9 @@ function showPopup(cmds, selIdx) {
|
|
|
104
105
|
const program = new commander_1.Command()
|
|
105
106
|
.name("sky").description("天空织机 Skyloom").version(VERSION);
|
|
106
107
|
program.command("chat").argument("[agent]", "agent name", "fog")
|
|
107
|
-
.option("-m,--model <m>", "model")
|
|
108
|
+
.option("-m,--model <m>", "model")
|
|
109
|
+
.option("--classic", "linear scrolling UI instead of the full-screen loom")
|
|
110
|
+
.action(async (a, o) => { await chat(a, o.model, o.classic); });
|
|
108
111
|
program.command("task").argument("[goal]", "task goal")
|
|
109
112
|
.action(async (g) => { if (g)
|
|
110
113
|
await runTask(g); });
|
|
@@ -257,6 +260,16 @@ async function streamResponse(agent, input) {
|
|
|
257
260
|
break;
|
|
258
261
|
case "tool_done":
|
|
259
262
|
out.write(" " + (ev.success ? chalk_1.default.hex("#3a7a6e")("✓") : chalk_1.default.hex("#b3342d")("✗")) + " " + chalk_1.default.dim(String(ev.tool_name)) + "\n");
|
|
263
|
+
if (ev.tool_name === "todo_write" && ev.success) {
|
|
264
|
+
try {
|
|
265
|
+
const items = agent.memory.getWorking("todos") || [];
|
|
266
|
+
if (items.length) {
|
|
267
|
+
const { renderTodoList } = require("../tools/todo");
|
|
268
|
+
out.write(chalk_1.default.dim(" ☰ " + renderTodoList(items).split("\n").join("\n ")) + "\n");
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
catch { /* best-effort */ }
|
|
272
|
+
}
|
|
260
273
|
mode = "none";
|
|
261
274
|
break;
|
|
262
275
|
case "truncated":
|
|
@@ -393,7 +406,7 @@ async function setupWizard() {
|
|
|
393
406
|
process.stdout.write(chalk_1.default.green(`\n ✓ ${prov.name} · ${model} · 就绪!\n\n`));
|
|
394
407
|
return { provider: prov.id, key: key.trim(), model };
|
|
395
408
|
}
|
|
396
|
-
async function chat(agentName, modelOverride) {
|
|
409
|
+
async function chat(agentName, modelOverride, classic) {
|
|
397
410
|
const haveKey = checkApiKeys();
|
|
398
411
|
if (!haveKey) {
|
|
399
412
|
process.stdout.write("\n" + chalk_1.default.cyan(" ✦ 天空织机 Skyloom ✦\n"));
|
|
@@ -440,13 +453,23 @@ async function chat(agentName, modelOverride) {
|
|
|
440
453
|
});
|
|
441
454
|
}
|
|
442
455
|
catch { /* security module optional */ }
|
|
456
|
+
// ── 立轴 (full-screen loom) is the default on a real terminal;
|
|
457
|
+
// --classic / SKYLOOM_CLASSIC=1 / pipes fall back to the linear UI. ──
|
|
458
|
+
const wantLoom = !classic &&
|
|
459
|
+
!process.env.SKYLOOM_CLASSIC &&
|
|
460
|
+
!!process.stdout.isTTY && !!process.stdin.isTTY &&
|
|
461
|
+
(process.stdout.rows || 24) >= 14 && (process.stdout.columns || 80) >= 60;
|
|
462
|
+
if (wantLoom) {
|
|
463
|
+
await (0, loom_chat_1.loomChat)(ctx, agent, { version: VERSION, setupWizard, saveApiKey });
|
|
464
|
+
return; // loomChat exits the process itself
|
|
465
|
+
}
|
|
443
466
|
// eslint-disable-next-line prefer-const
|
|
444
467
|
let currentAgent = agent; // mutable for agent switching
|
|
445
468
|
let lastSessions = []; // index→session map for /resume <n>
|
|
446
469
|
welcome(agent);
|
|
447
470
|
process.stdout.write(chalk_1.default.dim(" · 输入 / 看命令(Tab 补全)· ↑↓ 翻历史 · Ctrl-C 退出\n\n"));
|
|
448
471
|
while (true) {
|
|
449
|
-
|
|
472
|
+
let inp = await (0, tui_1.readLine)(currentAgent.name);
|
|
450
473
|
if (!inp)
|
|
451
474
|
continue;
|
|
452
475
|
// Bare "/" → show the inline command palette
|
|
@@ -588,6 +611,65 @@ async function chat(agentName, modelOverride) {
|
|
|
588
611
|
process.stdout.write("\n");
|
|
589
612
|
continue;
|
|
590
613
|
}
|
|
614
|
+
if (cmdL === "/plan" || cmdL === "/auto" || cmdL === "/default") {
|
|
615
|
+
MODE.set(cmdL === "/plan" ? mode_1.InteractiveMode.PLAN : cmdL === "/auto" ? mode_1.InteractiveMode.AUTO : mode_1.InteractiveMode.DEFAULT);
|
|
616
|
+
currentAgent.planMode = MODE.current === mode_1.InteractiveMode.PLAN;
|
|
617
|
+
process.stdout.write(chalk_1.default.dim(` 模式 → ${MODE.current} · ${MODE.describe()}\n`));
|
|
618
|
+
continue;
|
|
619
|
+
}
|
|
620
|
+
if (cmdL === "/context") {
|
|
621
|
+
try {
|
|
622
|
+
const d = currentAgent.contextDetail();
|
|
623
|
+
process.stdout.write(chalk_1.default.bold(`\n 上下文 ${d.estimatedTokens}/${d.maxTokens} tokens (${d.pct}%)`) + chalk_1.default.dim(` · ${d.model}\n`));
|
|
624
|
+
process.stdout.write(chalk_1.default.dim(` 系统提示 ≈${d.systemPromptTokens} tk · 工具 ${d.toolCount} 个\n`));
|
|
625
|
+
for (const [role, v] of Object.entries(d.byRole)) {
|
|
626
|
+
process.stdout.write(chalk_1.default.dim(` ${role.padEnd(9)} ${String(v.tokens).padStart(6)} tk · ${v.count} 条\n`));
|
|
627
|
+
}
|
|
628
|
+
process.stdout.write("\n");
|
|
629
|
+
}
|
|
630
|
+
catch (e) {
|
|
631
|
+
process.stdout.write(chalk_1.default.dim(` 无法获取: ${e?.message || e}\n`));
|
|
632
|
+
}
|
|
633
|
+
continue;
|
|
634
|
+
}
|
|
635
|
+
if (cmdL === "/tools") {
|
|
636
|
+
const stats = currentAgent.toolRegistry?.getStats?.() || [];
|
|
637
|
+
if (!stats.length) {
|
|
638
|
+
process.stdout.write(chalk_1.default.dim(" 本会话当前灵还没有工具调用\n"));
|
|
639
|
+
continue;
|
|
640
|
+
}
|
|
641
|
+
process.stdout.write(chalk_1.default.bold(`\n 工具调用 · ${currentAgent.name}\n`));
|
|
642
|
+
for (const s of stats.slice(0, 12)) {
|
|
643
|
+
const extra = `${s.failures ? ` ✗${s.failures}` : ""}${s.cacheHits ? ` ⊙${s.cacheHits}` : ""}${s.breaker !== "closed" ? ` [熔断:${s.breaker}]` : ""}`;
|
|
644
|
+
process.stdout.write(chalk_1.default.dim(` ${s.name.padEnd(16)} ${s.calls} 次 · ${s.avgMs}ms${extra}\n`));
|
|
645
|
+
}
|
|
646
|
+
process.stdout.write("\n");
|
|
647
|
+
continue;
|
|
648
|
+
}
|
|
649
|
+
if (cmdL === "/verify") {
|
|
650
|
+
const { resolveVerifyConfig, runVerify } = require("../core/verify");
|
|
651
|
+
const vc = resolveVerifyConfig(ctx.config);
|
|
652
|
+
if (!vc.commands.length) {
|
|
653
|
+
process.stdout.write(chalk_1.default.dim(" 未配置验证命令 — config.yaml verify.commands 或 SKY.md ## Verify\n"));
|
|
654
|
+
continue;
|
|
655
|
+
}
|
|
656
|
+
process.stdout.write(chalk_1.default.dim(` ⚙ verify · ${vc.commands.length} 条命令\n`));
|
|
657
|
+
const vr = runVerify(vc);
|
|
658
|
+
process.stdout.write(" " + vr.report.split("\n").slice(0, 30).join("\n ") + "\n");
|
|
659
|
+
continue;
|
|
660
|
+
}
|
|
661
|
+
if (cmdL === "/init") {
|
|
662
|
+
const { INIT_PROMPT } = require("../core/skymd");
|
|
663
|
+
process.stdout.write(chalk_1.default.dim(" 开始扫描项目,生成 SKY.md …\n"));
|
|
664
|
+
try {
|
|
665
|
+
await streamResponse(currentAgent, INIT_PROMPT);
|
|
666
|
+
currentAgent.reloadProjectMemory();
|
|
667
|
+
}
|
|
668
|
+
catch (e) {
|
|
669
|
+
process.stdout.write(chalk_1.default.red(" ✗ " + (e.message || e) + "\n"));
|
|
670
|
+
}
|
|
671
|
+
continue;
|
|
672
|
+
}
|
|
591
673
|
if (cmdL.startsWith("/task ")) {
|
|
592
674
|
const g = inp.slice(6);
|
|
593
675
|
process.stdout.write(chalk_1.default.cyan("\n ✦ " + g + "\n\n"));
|
|
@@ -600,14 +682,117 @@ async function chat(agentName, modelOverride) {
|
|
|
600
682
|
process.stdout.write(chalk_1.default.green(` ${r.provider} · ${r.model} — Ready!\n`));
|
|
601
683
|
continue;
|
|
602
684
|
}
|
|
603
|
-
if (cmdL.startsWith("/model")) {
|
|
604
|
-
|
|
685
|
+
if (cmdL === "/model" || cmdL.startsWith("/model ")) {
|
|
686
|
+
const { setAgentModel, setUnifiedModel, clearAgentModel, setAgentApiKey, describeAgentLLM } = require("../core/model_config");
|
|
687
|
+
const cfg = ctx.config;
|
|
688
|
+
const parts = inp.split(/\s+/).slice(1);
|
|
689
|
+
if (parts.length === 0) {
|
|
690
|
+
const d = describeAgentLLM(cfg, currentAgent.name);
|
|
691
|
+
process.stdout.write(chalk_1.default.bold(`\n ${currentAgent.name} · ${d.model}`) + chalk_1.default.dim(` (${d.source === "agent" ? "独立配置" : "统一配置"} · ${d.provider || "?"} · key:${d.keySource})\n`));
|
|
692
|
+
process.stdout.write(chalk_1.default.dim(` 统一默认: ${cfg.default_model || cfg.llm?.default_model || "gpt-4o"}\n`));
|
|
693
|
+
process.stdout.write(chalk_1.default.dim(" /model <id> 单独换 · /model unified <id> 改默认 · /model reset 回统一 · /model key <key>\n\n"));
|
|
694
|
+
continue;
|
|
695
|
+
}
|
|
696
|
+
if (parts[0] === "reset") {
|
|
697
|
+
clearAgentModel(cfg, currentAgent.name);
|
|
698
|
+
process.stdout.write(chalk_1.default.green(` ✓ ${currentAgent.name} 已回到统一配置\n`));
|
|
699
|
+
continue;
|
|
700
|
+
}
|
|
701
|
+
if (parts[0] === "unified" || parts[0] === "default") {
|
|
702
|
+
if (!parts[1]) {
|
|
703
|
+
process.stdout.write(chalk_1.default.dim(" 用法: /model unified <模型id>\n"));
|
|
704
|
+
continue;
|
|
705
|
+
}
|
|
706
|
+
const r = setUnifiedModel(cfg, parts[1]);
|
|
707
|
+
process.stdout.write(r.ok ? chalk_1.default.green(` ✓ 统一默认 → ${parts[1]}\n`) : chalk_1.default.dim(` '${parts[1]}' 不在目录中${r.suggestions.length ? " · 可选: " + r.suggestions.join(", ") : ""}\n`));
|
|
708
|
+
continue;
|
|
709
|
+
}
|
|
710
|
+
if (parts[0] === "key") {
|
|
711
|
+
if (!parts[1]) {
|
|
712
|
+
process.stdout.write(chalk_1.default.dim(" 用法: /model key <api-key>\n"));
|
|
713
|
+
continue;
|
|
714
|
+
}
|
|
715
|
+
setAgentApiKey(cfg, currentAgent.name, parts[1]);
|
|
716
|
+
process.stdout.write(chalk_1.default.green(` ✓ ${currentAgent.name} 的独立 API key 已保存\n`));
|
|
717
|
+
continue;
|
|
718
|
+
}
|
|
719
|
+
const r = setAgentModel(cfg, currentAgent.name, parts[0]);
|
|
720
|
+
process.stdout.write(r.ok ? chalk_1.default.green(` ✓ ${currentAgent.name} → ${parts[0]}`) + chalk_1.default.dim(" · 下一条消息生效\n") : chalk_1.default.dim(` '${parts[0]}' 不在目录中${r.suggestions.length ? " · 可选: " + r.suggestions.join(", ") : ""}\n`));
|
|
721
|
+
continue;
|
|
722
|
+
}
|
|
723
|
+
if (cmdL === "/rewind" || cmdL.startsWith("/rewind ")) {
|
|
724
|
+
const { getFileCheckpoints } = require("../core/file_checkpoint");
|
|
725
|
+
const cp = getFileCheckpoints();
|
|
726
|
+
const arg = inp.slice(7).trim();
|
|
727
|
+
const r = cp.rewind(/^\d+$/.test(arg) ? parseInt(arg, 10) : 1);
|
|
728
|
+
if (r.turns === 0) {
|
|
729
|
+
const turns = cp.list();
|
|
730
|
+
if (!turns.length) {
|
|
731
|
+
process.stdout.write(chalk_1.default.dim(" 没有可回退的文件改动\n"));
|
|
732
|
+
continue;
|
|
733
|
+
}
|
|
734
|
+
process.stdout.write(chalk_1.default.bold(` 检查点 · ${turns.length} 轮可回退\n`));
|
|
735
|
+
for (const t of turns.slice(0, 8))
|
|
736
|
+
process.stdout.write(chalk_1.default.dim(` ${t.label} · ${t.files.length} 个文件\n`));
|
|
737
|
+
continue;
|
|
738
|
+
}
|
|
739
|
+
process.stdout.write(chalk_1.default.green(` ↺ 已回退 ${r.turns} 轮`) + chalk_1.default.dim(` · 恢复 ${r.restored.length} 个文件${r.deleted.length ? ` · 删除 ${r.deleted.length} 个新建文件` : ""}\n`));
|
|
740
|
+
for (const f of [...r.restored, ...r.deleted].slice(0, 10))
|
|
741
|
+
process.stdout.write(chalk_1.default.dim(` ${f}\n`));
|
|
605
742
|
continue;
|
|
606
743
|
}
|
|
744
|
+
if (inp.startsWith("/")) {
|
|
745
|
+
// 自定义斜杠命令(.sky/commands/ + ~/.skyloom/commands/)
|
|
746
|
+
const { loadCustomCommands, resolveCustomCommand } = require("./commands_md");
|
|
747
|
+
const hit = resolveCustomCommand(inp, loadCustomCommands());
|
|
748
|
+
if (hit) {
|
|
749
|
+
const target = hit.command.agent ? ctx.agentMap.get(hit.command.agent) : undefined;
|
|
750
|
+
if (target) {
|
|
751
|
+
await target.init();
|
|
752
|
+
currentAgent = target;
|
|
753
|
+
}
|
|
754
|
+
process.stdout.write(chalk_1.default.dim(` ⌘ /${hit.command.name}${hit.command.agent ? ` → ${hit.command.agent}` : ""}\n`));
|
|
755
|
+
try {
|
|
756
|
+
await streamResponse(currentAgent, hit.prompt);
|
|
757
|
+
}
|
|
758
|
+
catch (e) {
|
|
759
|
+
process.stdout.write(chalk_1.default.red(" ✗ " + (e.message || e) + "\n"));
|
|
760
|
+
}
|
|
761
|
+
continue;
|
|
762
|
+
}
|
|
763
|
+
}
|
|
607
764
|
if (inp.startsWith("/")) {
|
|
608
765
|
process.stdout.write("\n" + chalk_1.default.dim(` 未知命令 ${inp.split(" ")[0]}\n`) + (0, tui_1.renderPalette)(cmdL.split(" ")[0]) + "\n");
|
|
609
766
|
continue;
|
|
610
767
|
}
|
|
768
|
+
// ── input macros: # quick memory · ! shell · @file attach ──
|
|
769
|
+
{
|
|
770
|
+
const macros = require("./input_macros");
|
|
771
|
+
if (macros.isHashMemory(inp)) {
|
|
772
|
+
try {
|
|
773
|
+
const { appendQuickMemory } = require("../core/skymd");
|
|
774
|
+
const file = appendQuickMemory(macros.hashNote(inp));
|
|
775
|
+
currentAgent.reloadProjectMemory();
|
|
776
|
+
process.stdout.write(chalk_1.default.green(" ✦ 已记入 ") + chalk_1.default.dim(file + "\n"));
|
|
777
|
+
}
|
|
778
|
+
catch (e) {
|
|
779
|
+
process.stdout.write(chalk_1.default.dim(` 记忆写入失败: ${e?.message || e}\n`));
|
|
780
|
+
}
|
|
781
|
+
continue;
|
|
782
|
+
}
|
|
783
|
+
if (macros.isBangCommand(inp)) {
|
|
784
|
+
const cmd = macros.bangCommand(inp);
|
|
785
|
+
process.stdout.write(chalk_1.default.dim(` $ ${cmd}\n`));
|
|
786
|
+
const r = macros.runBang(cmd);
|
|
787
|
+
process.stdout.write(" " + r.output.split("\n").slice(0, 40).join("\n ") + "\n");
|
|
788
|
+
currentAgent.memory.addMessage("system", `[用户执行 shell] $ ${cmd}\n${r.output.slice(0, 4000)}`);
|
|
789
|
+
continue;
|
|
790
|
+
}
|
|
791
|
+
const expanded = macros.expandFileRefs(inp);
|
|
792
|
+
if (expanded.attached.length)
|
|
793
|
+
process.stdout.write(chalk_1.default.dim(` 已附加 ${expanded.attached.map((f) => "@" + f).join(" ")}\n`));
|
|
794
|
+
inp = expanded.text;
|
|
795
|
+
}
|
|
611
796
|
// ── Chat (real streaming) ──
|
|
612
797
|
try {
|
|
613
798
|
await streamResponse(currentAgent, inp);
|
|
@@ -621,6 +806,95 @@ async function chat(agentName, modelOverride) {
|
|
|
621
806
|
await ctx.closeAll();
|
|
622
807
|
process.exit(0);
|
|
623
808
|
}
|
|
809
|
+
/* ═══════════════════════════════════════
|
|
810
|
+
Headless mode — sky -p "..." (pipes, CI, external orchestrators)
|
|
811
|
+
═══════════════════════════════════════ */
|
|
812
|
+
async function readStdin() {
|
|
813
|
+
if (process.stdin.isTTY)
|
|
814
|
+
return "";
|
|
815
|
+
let data = "";
|
|
816
|
+
for await (const chunk of process.stdin)
|
|
817
|
+
data += chunk;
|
|
818
|
+
return data.trim();
|
|
819
|
+
}
|
|
820
|
+
async function runHeadless(prompt, opts) {
|
|
821
|
+
// Fresh session: a one-shot invocation must not inherit (or pollute) the
|
|
822
|
+
// interactive resume chain.
|
|
823
|
+
process.env.WA_NO_RESUME = "1";
|
|
824
|
+
const t0 = Date.now();
|
|
825
|
+
const ctx = (0, factory_1.createSystemContext)();
|
|
826
|
+
const agentName = opts.agent || "fog";
|
|
827
|
+
const agent = ctx.agentMap.get(agentName);
|
|
828
|
+
if (!agent) {
|
|
829
|
+
process.stderr.write(`Unknown agent: ${agentName}\n`);
|
|
830
|
+
process.exit(1);
|
|
831
|
+
}
|
|
832
|
+
await agent.init();
|
|
833
|
+
// No human to approve: dangerous tools are denied unless explicitly allowed.
|
|
834
|
+
try {
|
|
835
|
+
const { getSecurity } = require("../core/security");
|
|
836
|
+
getSecurity().setApprovalCallback(async () => process.env.SKYLOOM_ALLOW_DANGEROUS === "1");
|
|
837
|
+
}
|
|
838
|
+
catch { /* optional */ }
|
|
839
|
+
const emit = (obj) => process.stdout.write(JSON.stringify(obj) + "\n");
|
|
840
|
+
let content = "";
|
|
841
|
+
let ok = true;
|
|
842
|
+
try {
|
|
843
|
+
for await (const ev of agent.chatStream(prompt)) {
|
|
844
|
+
if (opts.streamJson) {
|
|
845
|
+
emit(ev);
|
|
846
|
+
if (ev.type === "content")
|
|
847
|
+
content += ev.text;
|
|
848
|
+
continue;
|
|
849
|
+
}
|
|
850
|
+
switch (ev.type) {
|
|
851
|
+
case "content":
|
|
852
|
+
content += ev.text;
|
|
853
|
+
if (!opts.json)
|
|
854
|
+
process.stdout.write(String(ev.text));
|
|
855
|
+
break;
|
|
856
|
+
case "tool_status":
|
|
857
|
+
if (!opts.json)
|
|
858
|
+
process.stderr.write(`[tool] ${ev.tool_name} ${ev.label || ""}\n`);
|
|
859
|
+
break;
|
|
860
|
+
case "truncated":
|
|
861
|
+
ok = false;
|
|
862
|
+
process.stderr.write(`[truncated] ${ev.reason}\n`);
|
|
863
|
+
break;
|
|
864
|
+
}
|
|
865
|
+
}
|
|
866
|
+
}
|
|
867
|
+
catch (e) {
|
|
868
|
+
ok = false;
|
|
869
|
+
process.stderr.write(`Error: ${e?.message || e}\n`);
|
|
870
|
+
}
|
|
871
|
+
if (opts.json || opts.streamJson) {
|
|
872
|
+
emit({
|
|
873
|
+
type: "result",
|
|
874
|
+
success: ok,
|
|
875
|
+
agent: agentName,
|
|
876
|
+
model: (() => { try {
|
|
877
|
+
return agent.contextUsage().model;
|
|
878
|
+
}
|
|
879
|
+
catch {
|
|
880
|
+
return undefined;
|
|
881
|
+
} })(),
|
|
882
|
+
content,
|
|
883
|
+
cost_usd: (() => { try {
|
|
884
|
+
return ctx.llm.getTotalCost();
|
|
885
|
+
}
|
|
886
|
+
catch {
|
|
887
|
+
return 0;
|
|
888
|
+
} })(),
|
|
889
|
+
duration_ms: Date.now() - t0,
|
|
890
|
+
});
|
|
891
|
+
}
|
|
892
|
+
else if (content && !content.endsWith("\n")) {
|
|
893
|
+
process.stdout.write("\n");
|
|
894
|
+
}
|
|
895
|
+
await ctx.closeAll();
|
|
896
|
+
process.exit(ok ? 0 : 1);
|
|
897
|
+
}
|
|
624
898
|
/* ═══════════════════════════════════════
|
|
625
899
|
Task
|
|
626
900
|
═══════════════════════════════════════ */
|
|
@@ -638,20 +912,42 @@ async function runTask(goal) {
|
|
|
638
912
|
═══════════════════════════════════════ */
|
|
639
913
|
async function main() {
|
|
640
914
|
const args = process.argv.slice(2);
|
|
641
|
-
|
|
642
|
-
|
|
915
|
+
const classic = args.includes("--classic");
|
|
916
|
+
// ── headless: sky -p "prompt" [--agent fog] [--json | --stream-json] ──
|
|
917
|
+
const pIdx = args.findIndex((a) => a === "-p" || a === "--print");
|
|
918
|
+
if (pIdx >= 0) {
|
|
919
|
+
const flags = new Set(args);
|
|
920
|
+
const agentIdx = args.findIndex((a) => a === "--agent");
|
|
921
|
+
const agentName = agentIdx >= 0 ? args[agentIdx + 1] : undefined;
|
|
922
|
+
const inline = args[pIdx + 1] && !args[pIdx + 1].startsWith("-") ? args[pIdx + 1] : "";
|
|
923
|
+
const piped = await readStdin();
|
|
924
|
+
const prompt = [inline, piped].filter(Boolean).join("\n\n");
|
|
925
|
+
if (!prompt) {
|
|
926
|
+
process.stderr.write('Usage: sky -p "prompt" [--agent fog] [--json|--stream-json]\n');
|
|
927
|
+
process.exit(1);
|
|
928
|
+
}
|
|
929
|
+
await runHeadless(prompt, {
|
|
930
|
+
agent: agentName,
|
|
931
|
+
json: flags.has("--json"),
|
|
932
|
+
streamJson: flags.has("--stream-json"),
|
|
933
|
+
});
|
|
934
|
+
return;
|
|
935
|
+
}
|
|
936
|
+
const rest = args.filter((a) => a !== "--classic");
|
|
937
|
+
if (rest.length === 0) {
|
|
938
|
+
await chat("fog", undefined, classic);
|
|
643
939
|
return;
|
|
644
940
|
}
|
|
645
|
-
if (AGENT_NAMES.includes(
|
|
941
|
+
if (AGENT_NAMES.includes(rest[0])) {
|
|
646
942
|
let m;
|
|
647
|
-
for (let i = 1; i <
|
|
648
|
-
if ((
|
|
649
|
-
m =
|
|
650
|
-
await chat(
|
|
943
|
+
for (let i = 1; i < rest.length; i++)
|
|
944
|
+
if ((rest[i] === "-m" || rest[i] === "--model") && i + 1 < rest.length)
|
|
945
|
+
m = rest[++i];
|
|
946
|
+
await chat(rest[0], m, classic);
|
|
651
947
|
return;
|
|
652
948
|
}
|
|
653
|
-
if (!["chat", "task", "web", "config", "init", "version", "mcp", "help"].includes(
|
|
654
|
-
await chat("fog");
|
|
949
|
+
if (!["chat", "task", "web", "config", "init", "version", "mcp", "help"].includes(rest[0]) && !rest[0].startsWith("-")) {
|
|
950
|
+
await chat("fog", undefined, classic);
|
|
655
951
|
return;
|
|
656
952
|
}
|
|
657
953
|
program.parse(process.argv);
|