skyloom 1.4.0

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 (225) hide show
  1. package/.github/workflows/ci.yml +36 -0
  2. package/CONVERSION_PLAN.md +191 -0
  3. package/README.md +67 -0
  4. package/dist/agents/dew.d.ts +15 -0
  5. package/dist/agents/dew.d.ts.map +1 -0
  6. package/dist/agents/dew.js +74 -0
  7. package/dist/agents/dew.js.map +1 -0
  8. package/dist/agents/fair.d.ts +15 -0
  9. package/dist/agents/fair.d.ts.map +1 -0
  10. package/dist/agents/fair.js +106 -0
  11. package/dist/agents/fair.js.map +1 -0
  12. package/dist/agents/fog.d.ts +15 -0
  13. package/dist/agents/fog.d.ts.map +1 -0
  14. package/dist/agents/fog.js +52 -0
  15. package/dist/agents/fog.js.map +1 -0
  16. package/dist/agents/frost.d.ts +15 -0
  17. package/dist/agents/frost.d.ts.map +1 -0
  18. package/dist/agents/frost.js +54 -0
  19. package/dist/agents/frost.js.map +1 -0
  20. package/dist/agents/rain.d.ts +15 -0
  21. package/dist/agents/rain.d.ts.map +1 -0
  22. package/dist/agents/rain.js +54 -0
  23. package/dist/agents/rain.js.map +1 -0
  24. package/dist/agents/snow.d.ts +27 -0
  25. package/dist/agents/snow.d.ts.map +1 -0
  26. package/dist/agents/snow.js +226 -0
  27. package/dist/agents/snow.js.map +1 -0
  28. package/dist/cli/main.d.ts +7 -0
  29. package/dist/cli/main.d.ts.map +1 -0
  30. package/dist/cli/main.js +402 -0
  31. package/dist/cli/main.js.map +1 -0
  32. package/dist/cli/mode.d.ts +17 -0
  33. package/dist/cli/mode.d.ts.map +1 -0
  34. package/dist/cli/mode.js +56 -0
  35. package/dist/cli/mode.js.map +1 -0
  36. package/dist/core/agent.d.ts +174 -0
  37. package/dist/core/agent.d.ts.map +1 -0
  38. package/dist/core/agent.js +1332 -0
  39. package/dist/core/agent.js.map +1 -0
  40. package/dist/core/agent_helpers.d.ts +51 -0
  41. package/dist/core/agent_helpers.d.ts.map +1 -0
  42. package/dist/core/agent_helpers.js +477 -0
  43. package/dist/core/agent_helpers.js.map +1 -0
  44. package/dist/core/bus.d.ts +99 -0
  45. package/dist/core/bus.d.ts.map +1 -0
  46. package/dist/core/bus.js +191 -0
  47. package/dist/core/bus.js.map +1 -0
  48. package/dist/core/cache.d.ts +63 -0
  49. package/dist/core/cache.d.ts.map +1 -0
  50. package/dist/core/cache.js +121 -0
  51. package/dist/core/cache.js.map +1 -0
  52. package/dist/core/checkpoint.d.ts +19 -0
  53. package/dist/core/checkpoint.d.ts.map +1 -0
  54. package/dist/core/checkpoint.js +120 -0
  55. package/dist/core/checkpoint.js.map +1 -0
  56. package/dist/core/circuit_breaker.d.ts +46 -0
  57. package/dist/core/circuit_breaker.d.ts.map +1 -0
  58. package/dist/core/circuit_breaker.js +99 -0
  59. package/dist/core/circuit_breaker.js.map +1 -0
  60. package/dist/core/config.d.ts +97 -0
  61. package/dist/core/config.d.ts.map +1 -0
  62. package/dist/core/config.js +281 -0
  63. package/dist/core/config.js.map +1 -0
  64. package/dist/core/constants.d.ts +78 -0
  65. package/dist/core/constants.d.ts.map +1 -0
  66. package/dist/core/constants.js +84 -0
  67. package/dist/core/constants.js.map +1 -0
  68. package/dist/core/factory.d.ts +63 -0
  69. package/dist/core/factory.d.ts.map +1 -0
  70. package/dist/core/factory.js +537 -0
  71. package/dist/core/factory.js.map +1 -0
  72. package/dist/core/icons.d.ts +28 -0
  73. package/dist/core/icons.d.ts.map +1 -0
  74. package/dist/core/icons.js +86 -0
  75. package/dist/core/icons.js.map +1 -0
  76. package/dist/core/index.d.ts +29 -0
  77. package/dist/core/index.d.ts.map +1 -0
  78. package/dist/core/index.js +54 -0
  79. package/dist/core/index.js.map +1 -0
  80. package/dist/core/llm.d.ts +121 -0
  81. package/dist/core/llm.d.ts.map +1 -0
  82. package/dist/core/llm.js +532 -0
  83. package/dist/core/llm.js.map +1 -0
  84. package/dist/core/logger.d.ts +57 -0
  85. package/dist/core/logger.d.ts.map +1 -0
  86. package/dist/core/logger.js +122 -0
  87. package/dist/core/logger.js.map +1 -0
  88. package/dist/core/mcp.d.ts +190 -0
  89. package/dist/core/mcp.d.ts.map +1 -0
  90. package/dist/core/mcp.js +822 -0
  91. package/dist/core/mcp.js.map +1 -0
  92. package/dist/core/mcp_server.d.ts +26 -0
  93. package/dist/core/mcp_server.d.ts.map +1 -0
  94. package/dist/core/mcp_server.js +211 -0
  95. package/dist/core/mcp_server.js.map +1 -0
  96. package/dist/core/memory.d.ts +190 -0
  97. package/dist/core/memory.d.ts.map +1 -0
  98. package/dist/core/memory.js +988 -0
  99. package/dist/core/memory.js.map +1 -0
  100. package/dist/core/middleware.d.ts +114 -0
  101. package/dist/core/middleware.d.ts.map +1 -0
  102. package/dist/core/middleware.js +248 -0
  103. package/dist/core/middleware.js.map +1 -0
  104. package/dist/core/pipelines.d.ts +87 -0
  105. package/dist/core/pipelines.d.ts.map +1 -0
  106. package/dist/core/pipelines.js +301 -0
  107. package/dist/core/pipelines.js.map +1 -0
  108. package/dist/core/profile.d.ts +23 -0
  109. package/dist/core/profile.d.ts.map +1 -0
  110. package/dist/core/profile.js +289 -0
  111. package/dist/core/profile.js.map +1 -0
  112. package/dist/core/router.d.ts +24 -0
  113. package/dist/core/router.d.ts.map +1 -0
  114. package/dist/core/router.js +111 -0
  115. package/dist/core/router.js.map +1 -0
  116. package/dist/core/schemas.d.ts +82 -0
  117. package/dist/core/schemas.d.ts.map +1 -0
  118. package/dist/core/schemas.js +200 -0
  119. package/dist/core/schemas.js.map +1 -0
  120. package/dist/core/semantic.d.ts +92 -0
  121. package/dist/core/semantic.d.ts.map +1 -0
  122. package/dist/core/semantic.js +175 -0
  123. package/dist/core/semantic.js.map +1 -0
  124. package/dist/core/skill.d.ts +68 -0
  125. package/dist/core/skill.d.ts.map +1 -0
  126. package/dist/core/skill.js +350 -0
  127. package/dist/core/skill.js.map +1 -0
  128. package/dist/core/tool.d.ts +99 -0
  129. package/dist/core/tool.d.ts.map +1 -0
  130. package/dist/core/tool.js +341 -0
  131. package/dist/core/tool.js.map +1 -0
  132. package/dist/core/tool_router.d.ts +29 -0
  133. package/dist/core/tool_router.d.ts.map +1 -0
  134. package/dist/core/tool_router.js +172 -0
  135. package/dist/core/tool_router.js.map +1 -0
  136. package/dist/core/workspace.d.ts +48 -0
  137. package/dist/core/workspace.d.ts.map +1 -0
  138. package/dist/core/workspace.js +179 -0
  139. package/dist/core/workspace.js.map +1 -0
  140. package/dist/plugins/loader.d.ts +17 -0
  141. package/dist/plugins/loader.d.ts.map +1 -0
  142. package/dist/plugins/loader.js +96 -0
  143. package/dist/plugins/loader.js.map +1 -0
  144. package/dist/skills/loader.d.ts +9 -0
  145. package/dist/skills/loader.d.ts.map +1 -0
  146. package/dist/skills/loader.js +78 -0
  147. package/dist/skills/loader.js.map +1 -0
  148. package/dist/tools/builtin.d.ts +10 -0
  149. package/dist/tools/builtin.d.ts.map +1 -0
  150. package/dist/tools/builtin.js +414 -0
  151. package/dist/tools/builtin.js.map +1 -0
  152. package/dist/tools/computer.d.ts +12 -0
  153. package/dist/tools/computer.d.ts.map +1 -0
  154. package/dist/tools/computer.js +326 -0
  155. package/dist/tools/computer.js.map +1 -0
  156. package/dist/tools/delegate.d.ts +10 -0
  157. package/dist/tools/delegate.d.ts.map +1 -0
  158. package/dist/tools/delegate.js +45 -0
  159. package/dist/tools/delegate.js.map +1 -0
  160. package/dist/web/server.d.ts +5 -0
  161. package/dist/web/server.d.ts.map +1 -0
  162. package/dist/web/server.js +647 -0
  163. package/dist/web/server.js.map +1 -0
  164. package/dist/web/tts.d.ts +33 -0
  165. package/dist/web/tts.d.ts.map +1 -0
  166. package/dist/web/tts.js +69 -0
  167. package/dist/web/tts.js.map +1 -0
  168. package/package.json +60 -0
  169. package/scripts/install.js +48 -0
  170. package/scripts/link.js +10 -0
  171. package/setup.bat +79 -0
  172. package/skill-test-ty2fOA/test.md +10 -0
  173. package/src/agents/dew.ts +70 -0
  174. package/src/agents/fair.ts +102 -0
  175. package/src/agents/fog.ts +48 -0
  176. package/src/agents/frost.ts +50 -0
  177. package/src/agents/rain.ts +50 -0
  178. package/src/agents/snow.ts +239 -0
  179. package/src/cli/main.ts +405 -0
  180. package/src/cli/mode.ts +58 -0
  181. package/src/core/agent.ts +1506 -0
  182. package/src/core/agent_helpers.ts +461 -0
  183. package/src/core/bus.ts +221 -0
  184. package/src/core/cache.ts +153 -0
  185. package/src/core/checkpoint.ts +94 -0
  186. package/src/core/circuit_breaker.ts +119 -0
  187. package/src/core/config.ts +341 -0
  188. package/src/core/constants.ts +95 -0
  189. package/src/core/factory.ts +627 -0
  190. package/src/core/icons.ts +53 -0
  191. package/src/core/index.ts +31 -0
  192. package/src/core/llm.ts +724 -0
  193. package/src/core/logger.ts +144 -0
  194. package/src/core/mcp.ts +953 -0
  195. package/src/core/mcp_server.ts +176 -0
  196. package/src/core/memory.ts +1169 -0
  197. package/src/core/middleware.ts +350 -0
  198. package/src/core/pipelines.ts +424 -0
  199. package/src/core/profile.ts +255 -0
  200. package/src/core/router.ts +124 -0
  201. package/src/core/schemas.ts +282 -0
  202. package/src/core/semantic.ts +211 -0
  203. package/src/core/skill.ts +342 -0
  204. package/src/core/tool.ts +427 -0
  205. package/src/core/tool_router.ts +193 -0
  206. package/src/core/workspace.ts +150 -0
  207. package/src/plugins/loader.ts +66 -0
  208. package/src/skills/loader.ts +46 -0
  209. package/src/sql.js.d.ts +29 -0
  210. package/src/tools/builtin.ts +382 -0
  211. package/src/tools/computer.ts +269 -0
  212. package/src/tools/delegate.ts +49 -0
  213. package/src/web/server.ts +634 -0
  214. package/src/web/tts.ts +93 -0
  215. package/tests/bus.test.ts +121 -0
  216. package/tests/icons.test.ts +45 -0
  217. package/tests/router.test.ts +86 -0
  218. package/tests/schemas.test.ts +51 -0
  219. package/tests/semantic.test.ts +83 -0
  220. package/tests/setup.ts +10 -0
  221. package/tests/skill.test.ts +172 -0
  222. package/tests/tool.test.ts +108 -0
  223. package/tests/tool_router.test.ts +71 -0
  224. package/tsconfig.json +37 -0
  225. package/vitest.config.ts +17 -0
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ /**
3
+ * 霜 (Frost) — 精炼品质型全能 Agent.
4
+ * A general-purpose agent specializing in quality and review.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.FrostAgent = void 0;
8
+ const agent_1 = require("../core/agent");
9
+ class FrostAgent extends agent_1.BaseAgent {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.name = 'frost';
13
+ this.displayName = '霜';
14
+ this.emoji = '✱';
15
+ this.specialty = '精炼品质';
16
+ this.skillNames = ['code_reviewer', 'security_auditor', 'performance_checker', 'self_evolve'];
17
+ this.systemPrompt = `你是 Skyloom 的「霜」。
18
+
19
+ 你是全能 agent —— 代码、写作、审查、部署、规划、研究,你都能独立交付。
20
+ 你的特质是「不留瑕疵」:质量不是事后检查出来的,是当下做出来的。
21
+ 即使写一个三行函数,你也会想清楚边界、错误、可维护性。审查别人的工作时同样标准。
22
+
23
+ ## 协作
24
+
25
+ 90% 的事自己做完。只有任务跨 5+ 领域、上下文塞不下、或需要多轮独立审查时,才调其他 agent。
26
+ 调用时给足上下文,拿到结果整合成完整答复,用户不需要感知协作过程。
27
+
28
+ ## 风格
29
+
30
+ 像霜一样冷静而精确 —— 不放过瑕疵,但从不刻薄。
31
+ - 一句话总结整体状况
32
+ - 问题按严重度排序,附 \`文件:行号\`
33
+ - 每个问题给原因 + 改法
34
+ - 你做的事经得起你自己的审查`;
35
+ this.systemPromptEn = `You are "Frost" of Skyloom.
36
+
37
+ A general-purpose agent — code, writing, review, ops, planning, research — you ship anything alone.
38
+ Your nature: leave no flaw. Quality is built in, not inspected in.
39
+ Even a three-line function gets edge cases, errors, maintainability thought through. Same bar for review.
40
+
41
+ ## Collaboration
42
+ Do 90% alone. Delegate only when 5+ domains, context overflow, or multi-round review is needed.
43
+ Pass full context; synthesize the result yourself.
44
+
45
+ ## Style
46
+ Like frost — cool, precise, never harsh.
47
+ - One-line summary upfront
48
+ - Issues sorted by severity with \`file:line\`
49
+ - Each issue: cause + fix
50
+ - Your own work meets the bar you hold others to`;
51
+ }
52
+ }
53
+ exports.FrostAgent = FrostAgent;
54
+ //# sourceMappingURL=frost.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frost.js","sourceRoot":"","sources":["../../src/agents/frost.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,yCAA0C;AAE1C,MAAa,UAAW,SAAQ,iBAAS;IAAzC;;QACE,SAAI,GAAG,OAAO,CAAC;QACf,gBAAW,GAAG,GAAG,CAAC;QAClB,UAAK,GAAG,GAAG,CAAC;QACZ,cAAS,GAAG,MAAM,CAAC;QACnB,eAAU,GAAG,CAAC,eAAe,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,aAAa,CAAC,CAAC;QAEzF,iBAAY,GAAG;;;;;;;;;;;;;;;;;gBAiBD,CAAC;QAEf,mBAAc,GAAG;;;;;;;;;;;;;;;iDAe8B,CAAC;IAClD,CAAC;CAAA;AA1CD,gCA0CC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * 雨 (Rain) — 创造产出型全能 Agent.
3
+ * A general-purpose agent specializing in creation and production.
4
+ */
5
+ import { BaseAgent } from '../core/agent';
6
+ export declare class RainAgent extends BaseAgent {
7
+ name: string;
8
+ displayName: string;
9
+ emoji: string;
10
+ specialty: string;
11
+ skillNames: string[];
12
+ systemPrompt: string;
13
+ systemPromptEn: string;
14
+ }
15
+ //# sourceMappingURL=rain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rain.d.ts","sourceRoot":"","sources":["../../src/agents/rain.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,qBAAa,SAAU,SAAQ,SAAS;IACtC,IAAI,SAAU;IACd,WAAW,SAAO;IAClB,KAAK,SAAO;IACZ,SAAS,SAAU;IACnB,UAAU,WAA2E;IAErF,YAAY,SAiBH;IAET,cAAc,SAeM;CACrB"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ /**
3
+ * 雨 (Rain) — 创造产出型全能 Agent.
4
+ * A general-purpose agent specializing in creation and production.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.RainAgent = void 0;
8
+ const agent_1 = require("../core/agent");
9
+ class RainAgent extends agent_1.BaseAgent {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.name = 'rain';
13
+ this.displayName = '雨';
14
+ this.emoji = '⸽';
15
+ this.specialty = '创造产出';
16
+ this.skillNames = ['code_generator', 'content_writer', 'data_transformer', 'self_evolve'];
17
+ this.systemPrompt = `你是 Skyloom 的「雨」。
18
+
19
+ 你是全能 agent —— 代码、写作、审查、部署、规划、研究,你都能独立交付。
20
+ 你的特质是「先做出来」:行动胜过空谈,产出胜过规划。看到一个想法你就开始下笔。
21
+ 你最讨厌「我来分析一下需求」「让我先了解背景」这种话 —— 同样的时间用来直接产出第一版,再迭代。
22
+
23
+ ## 协作
24
+
25
+ 90% 的事自己做完。只有任务跨 5+ 领域、上下文塞不下、或需要多轮独立审查时,才调其他 agent。
26
+ 调用时给足上下文,拿到结果整合成完整答复,用户不需要感知协作过程。
27
+
28
+ ## 风格
29
+
30
+ 像雨一样直接而充沛 —— 结果在前,解释在后。
31
+ - 代码块标注语言,完整可运行
32
+ - 多文件项目先给结构,再逐个输出
33
+ - 必要时给 A/B 方案并推荐
34
+ - 能一行不写两行`;
35
+ this.systemPromptEn = `You are "Rain" of Skyloom.
36
+
37
+ A general-purpose agent — code, writing, review, ops, planning, research — you ship anything alone.
38
+ Your nature: make it. Action beats talk; output beats planning. See an idea, start writing.
39
+ You hate "let me analyze the requirements first" — that same time gets you a working v1 to iterate on.
40
+
41
+ ## Collaboration
42
+ Do 90% alone. Delegate only when 5+ domains, context overflow, or multi-round review is needed.
43
+ Pass full context; synthesize the result yourself.
44
+
45
+ ## Style
46
+ Like rain — direct, abundant. Results first, explanation later.
47
+ - Language-tagged, runnable code blocks
48
+ - Multi-file: structure first, then files
49
+ - A/B with a recommendation when it helps
50
+ - One line beats two`;
51
+ }
52
+ }
53
+ exports.RainAgent = RainAgent;
54
+ //# sourceMappingURL=rain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rain.js","sourceRoot":"","sources":["../../src/agents/rain.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,yCAA0C;AAE1C,MAAa,SAAU,SAAQ,iBAAS;IAAxC;;QACE,SAAI,GAAG,MAAM,CAAC;QACd,gBAAW,GAAG,GAAG,CAAC;QAClB,UAAK,GAAG,GAAG,CAAC;QACZ,cAAS,GAAG,MAAM,CAAC;QACnB,eAAU,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,aAAa,CAAC,CAAC;QAErF,iBAAY,GAAG;;;;;;;;;;;;;;;;;UAiBP,CAAC;QAET,mBAAc,GAAG;;;;;;;;;;;;;;;qBAeE,CAAC;IACtB,CAAC;CAAA;AA1CD,8BA0CC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * 雪 (Snow) — 架构规划型全能 Agent.
3
+ * A general-purpose agent specializing in architecture and planning.
4
+ * Also handles task decomposition and orchestration.
5
+ */
6
+ import { BaseAgent, Task } from '../core/agent';
7
+ export declare class SnowAgent extends BaseAgent {
8
+ name: string;
9
+ displayName: string;
10
+ emoji: string;
11
+ specialty: string;
12
+ skillNames: string[];
13
+ systemPrompt: string;
14
+ systemPromptEn: string;
15
+ /**
16
+ * Decompose a goal into tasks and dispatch to agents.
17
+ */
18
+ orchestrate(goal: string): Promise<Task[]>;
19
+ /**
20
+ * Produce additional tasks that close the gap reported by the judge.
21
+ */
22
+ replanForMissing(goal: string, priorResults: any[], missing: string, existingIds?: Set<string>): Promise<Task[]>;
23
+ private schemaToTasks;
24
+ private parseTaskPlan;
25
+ private planToTasks;
26
+ }
27
+ //# sourceMappingURL=snow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snow.d.ts","sourceRoot":"","sources":["../../src/agents/snow.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAKhD,qBAAa,SAAU,SAAQ,SAAS;IACtC,IAAI,SAAU;IACd,WAAW,SAAO;IAClB,KAAK,SAAO;IACZ,SAAS,SAAU;IACnB,UAAU,WAAyE;IAEnF,YAAY,SAkBI;IAEhB,cAAc,SAgBmC;IAEjD;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAiChD;;OAEG;IACG,gBAAgB,CACpB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,GAAG,EAAE,EACnB,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GACxB,OAAO,CAAC,IAAI,EAAE,CAAC;IAuElB,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,aAAa;IAiCrB,OAAO,CAAC,WAAW;CAgBpB"}
@@ -0,0 +1,226 @@
1
+ "use strict";
2
+ /**
3
+ * 雪 (Snow) — 架构规划型全能 Agent.
4
+ * A general-purpose agent specializing in architecture and planning.
5
+ * Also handles task decomposition and orchestration.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.SnowAgent = void 0;
9
+ const agent_1 = require("../core/agent");
10
+ // Valid agents for task assignment (fair is independent, not part of orchestration)
11
+ const VALID_AGENTS = new Set(['fog', 'rain', 'frost', 'snow', 'dew']);
12
+ class SnowAgent extends agent_1.BaseAgent {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.name = 'snow';
16
+ this.displayName = '雪';
17
+ this.emoji = '❉';
18
+ this.specialty = '架构规划';
19
+ this.skillNames = ['task_planner', 'arch_designer', 'workflow_designer', 'self_evolve'];
20
+ this.systemPrompt = `你是 Skyloom 的「雪」。
21
+
22
+ 你是全能 agent —— 代码、写作、审查、部署、规划、研究,你都能独立交付。
23
+ 你的特质是「全局视野」:先看清结构、依赖、顺序、风险,再动手。
24
+ 混乱的需求经你一拆,就变成清晰的步骤树。这是你看世界的方式,不仅是你做编排时才用。
25
+
26
+ ## 协作
27
+
28
+ 90% 的事自己做完。只有任务跨 5+ 领域、上下文塞不下、或需要多轮独立审查时,才调其他 agent。
29
+ 调用时给足上下文,拿到结果整合成完整答复,用户不需要感知协作过程。
30
+
31
+ ## 风格
32
+
33
+ 像雪一样静默但覆盖一切 —— 结构清晰,考虑周全。
34
+ - 大任务先给整体框架,再深入
35
+ - 标注依赖、风险、预计工作量
36
+ - 规划:框架先于理由
37
+ - 执行:按优先级推进,完成后汇总
38
+ - 让人感觉「一切都在掌控之中」`;
39
+ this.systemPromptEn = `You are "Snow" of Skyloom.
40
+
41
+ A general-purpose agent — code, writing, review, ops, planning, research — you ship anything alone.
42
+ Your nature: see the whole. Structure, dependencies, sequence, risk — all before the first move.
43
+ Messy requirements come out as clear step trees. That's how you see, not just how you orchestrate.
44
+
45
+ ## Collaboration
46
+ Do 90% alone. Delegate only when 5+ domains, context overflow, or multi-round review is needed.
47
+ Pass full context; synthesize the result yourself.
48
+
49
+ ## Style
50
+ Like snow — silent but all-covering. Clear structure, thorough consideration.
51
+ - Big work: framework first, then detail
52
+ - Note dependencies, risks, effort estimates
53
+ - Planning: structure before justification
54
+ - Execution: prioritize, deliver, summarize
55
+ - Leaves the user feeling "this is under control"`;
56
+ }
57
+ /**
58
+ * Decompose a goal into tasks and dispatch to agents.
59
+ */
60
+ async orchestrate(goal) {
61
+ const prompt = `请将以下目标分解为子任务,并分配给合适的 Agent。
62
+
63
+ 目标: ${goal}
64
+
65
+ 请严格按照以下 JSON Schema 输出,不要包含其他内容:
66
+ {"goal": "目标描述", "steps": [
67
+ {"id": "1", "description": "任务描述", "agent": "fog"},
68
+ {"id": "2", "description": "后续任务", "agent": "rain", "depends_on": ["1"]}
69
+ ]}
70
+
71
+ 可用 Agent: fog(调研/搜索), rain(代码生成/写作), frost(审查/安全), dew(部署/运维)
72
+ 注意:fair 是独立的情感陪伴 agent,**不参与任何任务编排**,绝不要分配给她。
73
+ 注意:如果任务有先后依赖关系,必须用 depends_on 字段标出。
74
+ 不要使用工具,直接输出 JSON 即可。`;
75
+ this.memory.addMessage('user', prompt);
76
+ const response = await this.llmLoop();
77
+ this.memory.addMessage('assistant', response.content);
78
+ // Try schema-validated parsing first
79
+ try {
80
+ const { parseTaskPlan } = require('../core/schemas');
81
+ const parsed = parseTaskPlan(response.content);
82
+ if (parsed && parsed.steps && parsed.steps.length > 0) {
83
+ return this.schemaToTasks(parsed, goal);
84
+ }
85
+ }
86
+ catch { /* fallthrough */ }
87
+ // Fallback to heuristic parsing
88
+ return this.parseTaskPlan(response.content, goal);
89
+ }
90
+ /**
91
+ * Produce additional tasks that close the gap reported by the judge.
92
+ */
93
+ async replanForMissing(goal, priorResults, missing, existingIds) {
94
+ const usedIds = existingIds || new Set();
95
+ const priorLines = priorResults.map(r => {
96
+ const status = r.success ? '成功' : '失败';
97
+ return `- task ${r.id} (${r.agent}, ${status}): ${(r.content || '').slice(0, 200)}`;
98
+ });
99
+ const priorText = priorLines.length > 0 ? priorLines.join('\n') : '(none yet)';
100
+ // Identify failing agents
101
+ const failingAgents = new Set(priorResults
102
+ .filter(r => !r.success || !r.content || r.content.trim().length < 16)
103
+ .map(r => r.agent)
104
+ .filter(Boolean));
105
+ const failingHint = failingAgents.size > 0
106
+ ? `\n\n## 已证明无效的 agent\n${[...failingAgents].sort().join(', ')} 已在上一轮返回占位/无交付物。\n**禁止把同类任务再交给以上 agent**。`
107
+ : '';
108
+ const prompt = `之前的子任务执行后,验收员发现还有缺口。请仅针对**缺失的部分**追加新的子任务。
109
+
110
+ ## 原目标
111
+ ${goal}
112
+
113
+ ## 已执行子任务
114
+ ${priorText}
115
+
116
+ ## 缺口(验收员报告)
117
+ ${missing}
118
+
119
+ ## 已使用的 task id(必须避开)
120
+ ${usedIds.size > 0 ? [...usedIds].sort().join(', ') : '(none)'}
121
+ ${failingHint}
122
+
123
+ 请输出新任务的 JSON 计划:
124
+ {"steps": [{"id": "新id", "agent": "fog|rain|frost|dew", "description": "具体任务", "depends_on": ["可选已完成任务id"]}]}
125
+
126
+ 约束:
127
+ - 只输出新增任务,不要重复已完成的;id 必须避开上面的列表
128
+ - 控制在 2 个新任务以内(精简优先)
129
+ - 只输出 JSON,无其他文本`;
130
+ this.memory.addMessage('user', prompt);
131
+ const response = await this.llmLoop();
132
+ this.memory.addMessage('assistant', response.content);
133
+ let newTasks;
134
+ try {
135
+ const { parseTaskPlan } = require('../core/schemas');
136
+ const parsed = parseTaskPlan(response.content);
137
+ if (parsed && parsed.steps) {
138
+ newTasks = this.schemaToTasks(parsed, goal);
139
+ }
140
+ else {
141
+ newTasks = this.parseTaskPlan(response.content, goal);
142
+ }
143
+ }
144
+ catch {
145
+ newTasks = this.parseTaskPlan(response.content, goal);
146
+ }
147
+ // Deduplicate IDs
148
+ const deduped = [];
149
+ for (const t of newTasks) {
150
+ if (usedIds.has(t.id)) {
151
+ t.id = `r${usedIds.size + deduped.length + 1}_${t.id}`;
152
+ }
153
+ deduped.push(t);
154
+ usedIds.add(t.id);
155
+ }
156
+ return deduped;
157
+ }
158
+ schemaToTasks(plan, goal) {
159
+ const tasks = [];
160
+ for (const step of plan.steps || []) {
161
+ const sid = String(step.id);
162
+ const depends = step.depends_on || [];
163
+ const agent = VALID_AGENTS.has(step.agent) ? step.agent : 'rain';
164
+ tasks.push(new agent_1.Task({
165
+ id: sid,
166
+ description: step.description,
167
+ assignedTo: agent,
168
+ parentId: depends.length > 0 ? depends[0] : null,
169
+ dependsOn: depends,
170
+ metadata: { goal, priority: step.priority || 'medium' },
171
+ }));
172
+ }
173
+ return tasks;
174
+ }
175
+ parseTaskPlan(content, goal) {
176
+ // Try to extract JSON from markdown code blocks
177
+ const jsonBlockPatterns = [
178
+ /```json\s*\n(.*?)\n```/s,
179
+ /```\s*\n(\{.*?\})\n```/s,
180
+ ];
181
+ for (const pattern of jsonBlockPatterns) {
182
+ const match = content.match(pattern);
183
+ if (match) {
184
+ try {
185
+ const plan = JSON.parse(match[1].trim());
186
+ const tasks = this.planToTasks(plan, goal);
187
+ if (tasks.length > 0)
188
+ return tasks;
189
+ }
190
+ catch { /* continue */ }
191
+ }
192
+ }
193
+ // Try to find raw JSON in response
194
+ try {
195
+ const start = content.indexOf('{');
196
+ const end = content.lastIndexOf('}') + 1;
197
+ if (start >= 0 && end > start) {
198
+ const plan = JSON.parse(content.slice(start, end));
199
+ const tasks = this.planToTasks(plan, goal);
200
+ if (tasks.length > 0)
201
+ return tasks;
202
+ }
203
+ }
204
+ catch { /* continue */ }
205
+ // Fallback: single task for rain
206
+ return [new agent_1.Task({ id: '1', description: goal, assignedTo: 'rain', metadata: { goal } })];
207
+ }
208
+ planToTasks(plan, goal) {
209
+ const tasks = [];
210
+ for (const step of (plan.steps || [])) {
211
+ const agent = VALID_AGENTS.has(step.agent) ? step.agent : 'rain';
212
+ const depends = Array.isArray(step.depends_on) ? step.depends_on : [];
213
+ tasks.push(new agent_1.Task({
214
+ id: String(step.id || tasks.length + 1),
215
+ description: step.description || '',
216
+ assignedTo: agent,
217
+ parentId: depends.length > 0 ? depends[0] : null,
218
+ dependsOn: depends,
219
+ metadata: { goal, priority: step.priority || 'medium' },
220
+ }));
221
+ }
222
+ return tasks;
223
+ }
224
+ }
225
+ exports.SnowAgent = SnowAgent;
226
+ //# sourceMappingURL=snow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snow.js","sourceRoot":"","sources":["../../src/agents/snow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * CLI interface for Skyloom — terminal agent product.
4
+ * Uses Commander.js for command routing.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":";AAEA;;;GAGG"}