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.
Files changed (195) hide show
  1. package/.github/workflows/ci.yml +36 -36
  2. package/README.md +220 -159
  3. package/config/providers.yaml +39 -39
  4. package/config/skills/api_integrator/SKILL.md +15 -15
  5. package/config/skills/arch_designer/SKILL.md +13 -13
  6. package/config/skills/ci_cd_manager/SKILL.md +14 -14
  7. package/config/skills/code_analysis/SKILL.md +13 -13
  8. package/config/skills/code_generator/SKILL.md +12 -12
  9. package/config/skills/code_reviewer/SKILL.md +13 -13
  10. package/config/skills/content_writer/SKILL.md +14 -14
  11. package/config/skills/data_transformer/SKILL.md +15 -15
  12. package/config/skills/document_analysis/SKILL.md +13 -13
  13. package/config/skills/emotional_companion/SKILL.md +15 -15
  14. package/config/skills/performance_checker/SKILL.md +14 -14
  15. package/config/skills/security_auditor/SKILL.md +14 -14
  16. package/config/skills/self_evolve/SKILL.md +13 -13
  17. package/config/skills/sys_operator/SKILL.md +15 -15
  18. package/config/skills/task_planner/SKILL.md +14 -14
  19. package/config/skills/web_research/SKILL.md +14 -14
  20. package/config/skills/workflow_designer/SKILL.md +13 -13
  21. package/dist/agents/dew.js +52 -52
  22. package/dist/agents/fair.js +84 -84
  23. package/dist/agents/fog.js +30 -30
  24. package/dist/agents/frost.js +32 -32
  25. package/dist/agents/rain.js +32 -32
  26. package/dist/agents/snow.js +68 -68
  27. package/dist/cli/commands_md.d.ts +41 -0
  28. package/dist/cli/commands_md.d.ts.map +1 -0
  29. package/dist/cli/commands_md.js +140 -0
  30. package/dist/cli/commands_md.js.map +1 -0
  31. package/dist/cli/input_macros.d.ts +28 -0
  32. package/dist/cli/input_macros.d.ts.map +1 -0
  33. package/dist/cli/input_macros.js +120 -0
  34. package/dist/cli/input_macros.js.map +1 -0
  35. package/dist/cli/loom.d.ts +220 -0
  36. package/dist/cli/loom.d.ts.map +1 -0
  37. package/dist/cli/loom.js +1094 -0
  38. package/dist/cli/loom.js.map +1 -0
  39. package/dist/cli/loom_chat.d.ts +20 -0
  40. package/dist/cli/loom_chat.d.ts.map +1 -0
  41. package/dist/cli/loom_chat.js +685 -0
  42. package/dist/cli/loom_chat.js.map +1 -0
  43. package/dist/cli/main.js +310 -14
  44. package/dist/cli/main.js.map +1 -1
  45. package/dist/cli/tui.d.ts.map +1 -1
  46. package/dist/cli/tui.js +7 -1
  47. package/dist/cli/tui.js.map +1 -1
  48. package/dist/core/agent/guard.d.ts +45 -0
  49. package/dist/core/agent/guard.d.ts.map +1 -0
  50. package/dist/core/agent/guard.js +113 -0
  51. package/dist/core/agent/guard.js.map +1 -0
  52. package/dist/core/agent.d.ts +17 -0
  53. package/dist/core/agent.d.ts.map +1 -1
  54. package/dist/core/agent.js +182 -93
  55. package/dist/core/agent.js.map +1 -1
  56. package/dist/core/factory.d.ts.map +1 -1
  57. package/dist/core/factory.js +34 -2
  58. package/dist/core/factory.js.map +1 -1
  59. package/dist/core/file_checkpoint.d.ts +57 -0
  60. package/dist/core/file_checkpoint.d.ts.map +1 -0
  61. package/dist/core/file_checkpoint.js +162 -0
  62. package/dist/core/file_checkpoint.js.map +1 -0
  63. package/dist/core/hooks.d.ts +43 -0
  64. package/dist/core/hooks.d.ts.map +1 -0
  65. package/dist/core/hooks.js +110 -0
  66. package/dist/core/hooks.js.map +1 -0
  67. package/dist/core/llm.d.ts.map +1 -1
  68. package/dist/core/llm.js +15 -9
  69. package/dist/core/llm.js.map +1 -1
  70. package/dist/core/longdoc.js +5 -5
  71. package/dist/core/mcp.d.ts +16 -0
  72. package/dist/core/mcp.d.ts.map +1 -1
  73. package/dist/core/mcp.js +55 -0
  74. package/dist/core/mcp.js.map +1 -1
  75. package/dist/core/model_config.d.ts +40 -0
  76. package/dist/core/model_config.d.ts.map +1 -0
  77. package/dist/core/model_config.js +191 -0
  78. package/dist/core/model_config.js.map +1 -0
  79. package/dist/core/skill.d.ts +7 -0
  80. package/dist/core/skill.d.ts.map +1 -1
  81. package/dist/core/skill.js +47 -0
  82. package/dist/core/skill.js.map +1 -1
  83. package/dist/core/skymd.d.ts +39 -0
  84. package/dist/core/skymd.d.ts.map +1 -0
  85. package/dist/core/skymd.js +177 -0
  86. package/dist/core/skymd.js.map +1 -0
  87. package/dist/core/tool.d.ts +12 -0
  88. package/dist/core/tool.d.ts.map +1 -1
  89. package/dist/core/tool.js +30 -0
  90. package/dist/core/tool.js.map +1 -1
  91. package/dist/core/verify.d.ts +27 -0
  92. package/dist/core/verify.d.ts.map +1 -0
  93. package/dist/core/verify.js +62 -0
  94. package/dist/core/verify.js.map +1 -0
  95. package/dist/skills/loader.d.ts +22 -2
  96. package/dist/skills/loader.d.ts.map +1 -1
  97. package/dist/skills/loader.js +45 -15
  98. package/dist/skills/loader.js.map +1 -1
  99. package/dist/tools/builtin.d.ts.map +1 -1
  100. package/dist/tools/builtin.js +13 -3
  101. package/dist/tools/builtin.js.map +1 -1
  102. package/dist/tools/model_tool.d.ts +11 -0
  103. package/dist/tools/model_tool.d.ts.map +1 -0
  104. package/dist/tools/model_tool.js +71 -0
  105. package/dist/tools/model_tool.js.map +1 -0
  106. package/dist/tools/todo.d.ts +30 -0
  107. package/dist/tools/todo.d.ts.map +1 -0
  108. package/dist/tools/todo.js +78 -0
  109. package/dist/tools/todo.js.map +1 -0
  110. package/docs/AESTHETIC_DESIGN.md +152 -144
  111. package/docs/OPTIMIZATION_PLAN.md +178 -178
  112. package/package.json +1 -1
  113. package/scripts/install.js +48 -48
  114. package/scripts/link.js +10 -10
  115. package/setup.bat +79 -79
  116. package/skill-test-ty2fOA/test.md +10 -10
  117. package/src/agents/dew.ts +70 -70
  118. package/src/agents/fair.ts +102 -102
  119. package/src/agents/fog.ts +48 -48
  120. package/src/agents/frost.ts +50 -50
  121. package/src/agents/rain.ts +50 -50
  122. package/src/agents/snow.ts +239 -239
  123. package/src/cli/commands_md.ts +112 -0
  124. package/src/cli/input_macros.ts +83 -0
  125. package/src/cli/loom.ts +982 -0
  126. package/src/cli/loom_chat.ts +598 -0
  127. package/src/cli/main.ts +255 -9
  128. package/src/cli/mode.ts +58 -58
  129. package/src/cli/tui.ts +228 -222
  130. package/src/core/agent/guard.ts +134 -0
  131. package/src/core/agent/task.ts +100 -100
  132. package/src/core/agent.ts +177 -95
  133. package/src/core/arbitrate.ts +162 -162
  134. package/src/core/catalog.ts +178 -178
  135. package/src/core/checkpoint.ts +94 -94
  136. package/src/core/estimate.ts +104 -104
  137. package/src/core/evolve.ts +191 -191
  138. package/src/core/factory.ts +31 -2
  139. package/src/core/file_checkpoint.ts +136 -0
  140. package/src/core/filter.ts +103 -103
  141. package/src/core/graph.ts +156 -156
  142. package/src/core/hooks.ts +126 -0
  143. package/src/core/icons.ts +53 -53
  144. package/src/core/index.ts +37 -37
  145. package/src/core/learn.ts +146 -146
  146. package/src/core/llm.ts +15 -9
  147. package/src/core/longdoc.ts +155 -155
  148. package/src/core/mcp.ts +48 -0
  149. package/src/core/mcp_server.ts +176 -176
  150. package/src/core/model_config.ts +157 -0
  151. package/src/core/profile.ts +255 -255
  152. package/src/core/router.ts +124 -124
  153. package/src/core/sandbox.ts +142 -142
  154. package/src/core/security.ts +243 -243
  155. package/src/core/skill.ts +42 -0
  156. package/src/core/skymd.ts +143 -0
  157. package/src/core/theme.ts +65 -65
  158. package/src/core/tool.ts +30 -0
  159. package/src/core/tool_router.ts +193 -193
  160. package/src/core/vector.ts +152 -152
  161. package/src/core/verify.ts +71 -0
  162. package/src/core/workspace.ts +150 -150
  163. package/src/plugins/loader.ts +66 -66
  164. package/src/skills/loader.ts +45 -16
  165. package/src/sql.js.d.ts +29 -29
  166. package/src/tools/builtin.ts +13 -3
  167. package/src/tools/computer.ts +269 -269
  168. package/src/tools/delegate.ts +49 -49
  169. package/src/tools/model_tool.ts +74 -0
  170. package/src/tools/todo.ts +76 -0
  171. package/src/web/tts.ts +93 -93
  172. package/tests/agent.test.ts +159 -159
  173. package/tests/agent_helpers.test.ts +48 -48
  174. package/tests/bus.test.ts +121 -121
  175. package/tests/catalog.test.ts +86 -86
  176. package/tests/checkpoint_commands.test.ts +124 -0
  177. package/tests/claude_compat.test.ts +110 -0
  178. package/tests/config.test.ts +41 -41
  179. package/tests/guard.test.ts +75 -0
  180. package/tests/icons.test.ts +45 -45
  181. package/tests/loom.test.ts +248 -0
  182. package/tests/memory.test.ts +170 -170
  183. package/tests/model_config.test.ts +109 -0
  184. package/tests/router.test.ts +86 -86
  185. package/tests/schemas.test.ts +51 -51
  186. package/tests/semantic.test.ts +83 -83
  187. package/tests/setup.ts +10 -10
  188. package/tests/skill.test.ts +172 -172
  189. package/tests/skymd.test.ts +146 -0
  190. package/tests/task.test.ts +60 -60
  191. package/tests/todo_toolstats.test.ts +94 -0
  192. package/tests/tool.test.ts +108 -108
  193. package/tests/tool_router.test.ts +71 -71
  194. package/tests/tui.test.ts +67 -67
  195. 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").action(async (a, o) => { await chat(a, o.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
- const inp = await (0, tui_1.readLine)(currentAgent.name);
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
- process.stdout.write(chalk_1.default.dim(" Run /setup to reconfigure models\n"));
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
- if (args.length === 0) {
642
- await chat("fog");
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(args[0])) {
941
+ if (AGENT_NAMES.includes(rest[0])) {
646
942
  let m;
647
- for (let i = 1; i < args.length; i++)
648
- if ((args[i] === "-m" || args[i] === "--model") && i + 1 < args.length)
649
- m = args[++i];
650
- await chat(args[0], m);
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(args[0]) && !args[0].startsWith("-")) {
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);