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 @@
1
+ {"version":3,"file":"agent_helpers.js","sourceRoot":"","sources":["../../src/core/agent_helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Async event-driven message bus for inter-agent communication.
3
+ */
4
+ import { EventEmitter } from 'events';
5
+ /**
6
+ * Event types for the message bus.
7
+ */
8
+ export declare enum EventType {
9
+ TASK_ASSIGNED = "task_assigned",
10
+ TASK_COMPLETED = "task_completed",
11
+ TASK_FEEDBACK = "task_feedback",
12
+ AGENT_REQUEST = "agent_request",
13
+ AGENT_RESPONSE = "agent_response",
14
+ SYSTEM_EVENT = "system_event",
15
+ STATE_CHANGE = "state_change",// agent state changes
16
+ LLM_CALL = "llm_call",// LLM request made
17
+ TOOL_CALL = "tool_call"
18
+ }
19
+ /**
20
+ * Event object for message bus.
21
+ */
22
+ export declare class Event {
23
+ type: EventType;
24
+ source: string;
25
+ target: string | null;
26
+ data: Record<string, any>;
27
+ timestamp: Date;
28
+ constructor(type: EventType, source: string, target?: string | null, data?: Record<string, any>);
29
+ /**
30
+ * Convert event to JSON-serializable format.
31
+ */
32
+ toJSON(): Record<string, any>;
33
+ }
34
+ /**
35
+ * Handler function for events.
36
+ */
37
+ export type Handler = (event: Event) => Promise<void>;
38
+ /**
39
+ * Pub/sub message bus for agent communication.
40
+ */
41
+ export declare class MessageBus {
42
+ private subscribers;
43
+ private stateListeners;
44
+ private history;
45
+ private maxHistory;
46
+ /**
47
+ * Subscribe an agent to events.
48
+ */
49
+ subscribe(agentName: string, handler: Handler): void;
50
+ /**
51
+ * Unsubscribe an agent.
52
+ */
53
+ unsubscribe(agentName: string): void;
54
+ /**
55
+ * Register a global handler for state change events.
56
+ */
57
+ onStateChange(handler: Handler): void;
58
+ /**
59
+ * Remove a state change listener.
60
+ */
61
+ removeStateListener(handler: Handler): void;
62
+ /**
63
+ * Trim history to max size.
64
+ */
65
+ private trimHistory;
66
+ /**
67
+ * Record event without routing (for state changes / local observation).
68
+ */
69
+ addEvent(event: Event): void;
70
+ /**
71
+ * Notify state change listeners.
72
+ */
73
+ notifyStateChange(event: Event): Promise<void>;
74
+ /**
75
+ * Publish an event to subscribers.
76
+ */
77
+ publish(event: Event): Promise<void>;
78
+ /**
79
+ * Get event history.
80
+ */
81
+ getHistory(agentName?: string | null, eventType?: EventType | null, limit?: number): Event[];
82
+ /**
83
+ * Clear all history.
84
+ */
85
+ clearHistory(): void;
86
+ /**
87
+ * Get event count.
88
+ */
89
+ getEventCount(): number;
90
+ /**
91
+ * Get active subscriber count.
92
+ */
93
+ getSubscriberCount(): number;
94
+ }
95
+ /**
96
+ * Global event emitter (optional, for direct event emission).
97
+ */
98
+ export declare const eventEmitter: EventEmitter<[never]>;
99
+ //# sourceMappingURL=bus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bus.d.ts","sourceRoot":"","sources":["../../src/core/bus.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC;;GAEG;AACH,oBAAY,SAAS;IACnB,aAAa,kBAAkB;IAC/B,cAAc,mBAAmB;IACjC,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,cAAc,mBAAmB;IACjC,YAAY,iBAAiB;IAC7B,YAAY,iBAAiB,CAAE,sBAAsB;IACrD,QAAQ,aAAa,CAAE,mBAAmB;IAC1C,SAAS,cAAc;CACxB;AAED;;GAEG;AACH,qBAAa,KAAK;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,SAAS,EAAE,IAAI,CAAC;gBAGd,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,EACtB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAS5B;;OAEG;IACH,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAS9B;AAED;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEtD;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,WAAW,CAAqC;IACxD,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,UAAU,CAAgB;IAElC;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAOpD;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIpC;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIrC;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAO3C;;OAEG;IACH,OAAO,CAAC,WAAW;IAMnB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAK5B;;OAEG;IACG,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAcpD;;OAEG;IACG,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IA+B1C;;OAEG;IACH,UAAU,CACR,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EACzB,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,EAC5B,KAAK,GAAE,MAAW,GACjB,KAAK,EAAE;IAcV;;OAEG;IACH,YAAY,IAAI,IAAI;IAIpB;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,kBAAkB,IAAI,MAAM;CAG7B;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,uBAAqB,CAAC"}
@@ -0,0 +1,191 @@
1
+ "use strict";
2
+ /**
3
+ * Async event-driven message bus for inter-agent communication.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.eventEmitter = exports.MessageBus = exports.Event = exports.EventType = void 0;
7
+ const events_1 = require("events");
8
+ /**
9
+ * Event types for the message bus.
10
+ */
11
+ var EventType;
12
+ (function (EventType) {
13
+ EventType["TASK_ASSIGNED"] = "task_assigned";
14
+ EventType["TASK_COMPLETED"] = "task_completed";
15
+ EventType["TASK_FEEDBACK"] = "task_feedback";
16
+ EventType["AGENT_REQUEST"] = "agent_request";
17
+ EventType["AGENT_RESPONSE"] = "agent_response";
18
+ EventType["SYSTEM_EVENT"] = "system_event";
19
+ EventType["STATE_CHANGE"] = "state_change";
20
+ EventType["LLM_CALL"] = "llm_call";
21
+ EventType["TOOL_CALL"] = "tool_call";
22
+ })(EventType || (exports.EventType = EventType = {}));
23
+ /**
24
+ * Event object for message bus.
25
+ */
26
+ class Event {
27
+ constructor(type, source, target, data) {
28
+ this.type = type;
29
+ this.source = source;
30
+ this.target = target || null;
31
+ this.data = data || {};
32
+ this.timestamp = new Date();
33
+ }
34
+ /**
35
+ * Convert event to JSON-serializable format.
36
+ */
37
+ toJSON() {
38
+ return {
39
+ type: this.type,
40
+ source: this.source,
41
+ target: this.target,
42
+ data: this.data,
43
+ timestamp: this.timestamp.toISOString(),
44
+ };
45
+ }
46
+ }
47
+ exports.Event = Event;
48
+ /**
49
+ * Pub/sub message bus for agent communication.
50
+ */
51
+ class MessageBus {
52
+ constructor() {
53
+ this.subscribers = new Map();
54
+ this.stateListeners = [];
55
+ this.history = [];
56
+ this.maxHistory = 2000;
57
+ }
58
+ /**
59
+ * Subscribe an agent to events.
60
+ */
61
+ subscribe(agentName, handler) {
62
+ if (!this.subscribers.has(agentName)) {
63
+ this.subscribers.set(agentName, []);
64
+ }
65
+ this.subscribers.get(agentName).push(handler);
66
+ }
67
+ /**
68
+ * Unsubscribe an agent.
69
+ */
70
+ unsubscribe(agentName) {
71
+ this.subscribers.delete(agentName);
72
+ }
73
+ /**
74
+ * Register a global handler for state change events.
75
+ */
76
+ onStateChange(handler) {
77
+ this.stateListeners.push(handler);
78
+ }
79
+ /**
80
+ * Remove a state change listener.
81
+ */
82
+ removeStateListener(handler) {
83
+ const idx = this.stateListeners.indexOf(handler);
84
+ if (idx >= 0) {
85
+ this.stateListeners.splice(idx, 1);
86
+ }
87
+ }
88
+ /**
89
+ * Trim history to max size.
90
+ */
91
+ trimHistory() {
92
+ if (this.history.length > this.maxHistory) {
93
+ this.history = this.history.slice(this.history.length - this.maxHistory);
94
+ }
95
+ }
96
+ /**
97
+ * Record event without routing (for state changes / local observation).
98
+ */
99
+ addEvent(event) {
100
+ this.history.push(event);
101
+ this.trimHistory();
102
+ }
103
+ /**
104
+ * Notify state change listeners.
105
+ */
106
+ async notifyStateChange(event) {
107
+ if (event.type !== EventType.STATE_CHANGE) {
108
+ return;
109
+ }
110
+ for (const handler of this.stateListeners) {
111
+ try {
112
+ await handler(event);
113
+ }
114
+ catch (err) {
115
+ console.error('state_change handler failed:', err);
116
+ }
117
+ }
118
+ }
119
+ /**
120
+ * Publish an event to subscribers.
121
+ */
122
+ async publish(event) {
123
+ this.history.push(event);
124
+ this.trimHistory();
125
+ if (event.target) {
126
+ // Direct message
127
+ const handlers = this.subscribers.get(event.target) || [];
128
+ for (const handler of handlers) {
129
+ try {
130
+ await handler(event);
131
+ }
132
+ catch (err) {
133
+ console.error(`bus handler failed for target=${event.target}:`, err);
134
+ }
135
+ }
136
+ }
137
+ else {
138
+ // Broadcast to all except source
139
+ for (const [name, handlers] of this.subscribers.entries()) {
140
+ if (name === event.source) {
141
+ continue;
142
+ }
143
+ for (const handler of handlers) {
144
+ try {
145
+ await handler(event);
146
+ }
147
+ catch (err) {
148
+ console.error(`bus handler failed for subscriber=${name}:`, err);
149
+ }
150
+ }
151
+ }
152
+ }
153
+ }
154
+ /**
155
+ * Get event history.
156
+ */
157
+ getHistory(agentName, eventType, limit = 50) {
158
+ let events = this.history;
159
+ if (agentName) {
160
+ events = events.filter(e => e.source === agentName || e.target === agentName);
161
+ }
162
+ if (eventType) {
163
+ events = events.filter(e => e.type === eventType);
164
+ }
165
+ return events.slice(Math.max(0, events.length - limit));
166
+ }
167
+ /**
168
+ * Clear all history.
169
+ */
170
+ clearHistory() {
171
+ this.history = [];
172
+ }
173
+ /**
174
+ * Get event count.
175
+ */
176
+ getEventCount() {
177
+ return this.history.length;
178
+ }
179
+ /**
180
+ * Get active subscriber count.
181
+ */
182
+ getSubscriberCount() {
183
+ return this.subscribers.size;
184
+ }
185
+ }
186
+ exports.MessageBus = MessageBus;
187
+ /**
188
+ * Global event emitter (optional, for direct event emission).
189
+ */
190
+ exports.eventEmitter = new events_1.EventEmitter();
191
+ //# sourceMappingURL=bus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bus.js","sourceRoot":"","sources":["../../src/core/bus.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Lightweight LRU cache for LLM responses.
3
+ *
4
+ * Deduplicates identical requests within a configurable time window.
5
+ * Keyed by (model, messages_json) hash.
6
+ */
7
+ /**
8
+ * LRU cache for LLM completions with TTL expiration.
9
+ */
10
+ export declare class LLMCache {
11
+ private maxSize;
12
+ private ttlSeconds;
13
+ private cache;
14
+ constructor(maxSize?: number, ttlSeconds?: number);
15
+ /**
16
+ * Generate a cache key from model, messages, and parameters.
17
+ *
18
+ * Uses SHA256 hash for deterministic, compact keys. Parameters are sorted
19
+ * to ensure consistent keys regardless of key order.
20
+ */
21
+ private makeKey;
22
+ /**
23
+ * JSON replacer for consistent serialization.
24
+ */
25
+ private jsonReplacer;
26
+ /**
27
+ * Get a cached response if it exists and hasn't expired.
28
+ *
29
+ * @param model - LLM model name
30
+ * @param messages - Conversation messages
31
+ * @param params - Optional parameters
32
+ * @returns Cached response or null if miss/expired
33
+ */
34
+ get(model: string, messages: Record<string, any>[], params?: Record<string, any>): string | null;
35
+ /**
36
+ * Cache a response.
37
+ *
38
+ * Refuses to cache empty or very short content to avoid bloat.
39
+ * Also performs LRU eviction if cache exceeds max_size.
40
+ *
41
+ * @param model - LLM model name
42
+ * @param messages - Conversation messages
43
+ * @param response - LLM response to cache
44
+ * @param params - Optional parameters
45
+ */
46
+ set(model: string, messages: Record<string, any>[], response: string, params?: Record<string, any>): void;
47
+ /**
48
+ * Clear all cache entries.
49
+ */
50
+ clear(): void;
51
+ /**
52
+ * Get current cache size.
53
+ */
54
+ get size(): number;
55
+ /**
56
+ * Get cache hit rate statistics.
57
+ */
58
+ getStats(): {
59
+ size: number;
60
+ maxSize: number;
61
+ };
62
+ }
63
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/core/cache.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH;;GAEG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,KAAK,CAAsC;gBAEvC,OAAO,GAAE,MAAY,EAAE,UAAU,GAAE,MAAW;IAK1D;;;;;OAKG;IACH,OAAO,CAAC,OAAO;IASf;;OAEG;IACH,OAAO,CAAC,YAAY;IAOpB;;;;;;;OAOG;IACH,GAAG,CACD,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAC/B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC3B,MAAM,GAAG,IAAI;IAwBhB;;;;;;;;;;OAUG;IACH,GAAG,CACD,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAC/B,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC3B,IAAI;IAsBP;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,QAAQ,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;CAM9C"}
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ /**
3
+ * Lightweight LRU cache for LLM responses.
4
+ *
5
+ * Deduplicates identical requests within a configurable time window.
6
+ * Keyed by (model, messages_json) hash.
7
+ */
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.LLMCache = void 0;
13
+ const crypto_1 = __importDefault(require("crypto"));
14
+ /**
15
+ * LRU cache for LLM completions with TTL expiration.
16
+ */
17
+ class LLMCache {
18
+ constructor(maxSize = 128, ttlSeconds = 60) {
19
+ this.cache = new Map();
20
+ this.maxSize = maxSize;
21
+ this.ttlSeconds = ttlSeconds;
22
+ }
23
+ /**
24
+ * Generate a cache key from model, messages, and parameters.
25
+ *
26
+ * Uses SHA256 hash for deterministic, compact keys. Parameters are sorted
27
+ * to ensure consistent keys regardless of key order.
28
+ */
29
+ makeKey(model, messages, params) {
30
+ const raw = JSON.stringify([model, messages, params || {}], this.jsonReplacer);
31
+ return crypto_1.default.createHash('sha256').update(raw).digest('hex').slice(0, 32);
32
+ }
33
+ /**
34
+ * JSON replacer for consistent serialization.
35
+ */
36
+ jsonReplacer(_key, value) {
37
+ if (typeof value === 'function') {
38
+ return undefined;
39
+ }
40
+ return value;
41
+ }
42
+ /**
43
+ * Get a cached response if it exists and hasn't expired.
44
+ *
45
+ * @param model - LLM model name
46
+ * @param messages - Conversation messages
47
+ * @param params - Optional parameters
48
+ * @returns Cached response or null if miss/expired
49
+ */
50
+ get(model, messages, params) {
51
+ const key = this.makeKey(model, messages, params);
52
+ const entry = this.cache.get(key);
53
+ if (!entry) {
54
+ return null;
55
+ }
56
+ // Check if expired
57
+ const now = Date.now();
58
+ const ageSeconds = (now - entry.timestamp) / 1000;
59
+ if (ageSeconds >= this.ttlSeconds) {
60
+ this.cache.delete(key);
61
+ return null;
62
+ }
63
+ // Move to end (LRU)
64
+ this.cache.delete(key);
65
+ this.cache.set(key, entry);
66
+ return entry.response;
67
+ }
68
+ /**
69
+ * Cache a response.
70
+ *
71
+ * Refuses to cache empty or very short content to avoid bloat.
72
+ * Also performs LRU eviction if cache exceeds max_size.
73
+ *
74
+ * @param model - LLM model name
75
+ * @param messages - Conversation messages
76
+ * @param response - LLM response to cache
77
+ * @param params - Optional parameters
78
+ */
79
+ set(model, messages, response, params) {
80
+ // Don't cache empty or very short responses
81
+ if (!response || response.length < 10) {
82
+ return;
83
+ }
84
+ const key = this.makeKey(model, messages, params);
85
+ const entry = {
86
+ timestamp: Date.now(),
87
+ response,
88
+ };
89
+ this.cache.delete(key);
90
+ this.cache.set(key, entry);
91
+ // Evict oldest entries if over capacity
92
+ while (this.cache.size > this.maxSize) {
93
+ const firstKey = this.cache.keys().next().value;
94
+ if (firstKey !== undefined)
95
+ this.cache.delete(firstKey);
96
+ }
97
+ }
98
+ /**
99
+ * Clear all cache entries.
100
+ */
101
+ clear() {
102
+ this.cache.clear();
103
+ }
104
+ /**
105
+ * Get current cache size.
106
+ */
107
+ get size() {
108
+ return this.cache.size;
109
+ }
110
+ /**
111
+ * Get cache hit rate statistics.
112
+ */
113
+ getStats() {
114
+ return {
115
+ size: this.cache.size,
116
+ maxSize: this.maxSize,
117
+ };
118
+ }
119
+ }
120
+ exports.LLMCache = LLMCache;
121
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/core/cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Orchestration checkpoint — save/restore task state.
3
+ *
4
+ * Writes ~/.skyloom/task_checkpoint.json so a long-running orchestration
5
+ * interrupted by Ctrl-C can be resumed.
6
+ */
7
+ /**
8
+ * Save current orchestration state so it can be resumed later.
9
+ */
10
+ export declare function save(goal: string, tasks: any[], results: any[], completedIds?: Set<string>): void;
11
+ /**
12
+ * Return the last saved checkpoint dict, or null if none / unreadable.
13
+ */
14
+ export declare function load(): Record<string, any> | null;
15
+ /**
16
+ * Delete the checkpoint file.
17
+ */
18
+ export declare function clear(): void;
19
+ //# sourceMappingURL=checkpoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../src/core/checkpoint.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH;;GAEG;AACH,wBAAgB,IAAI,CAClB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,GAAG,EAAE,EACZ,OAAO,EAAE,GAAG,EAAE,EACd,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GACzB,IAAI,CAkBN;AAED;;GAEG;AACH,wBAAgB,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAWjD;AAED;;GAEG;AACH,wBAAgB,KAAK,IAAI,IAAI,CAS5B"}
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ /**
3
+ * Orchestration checkpoint — save/restore task state.
4
+ *
5
+ * Writes ~/.skyloom/task_checkpoint.json so a long-running orchestration
6
+ * interrupted by Ctrl-C can be resumed.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.save = save;
43
+ exports.load = load;
44
+ exports.clear = clear;
45
+ const fs = __importStar(require("fs"));
46
+ const path = __importStar(require("path"));
47
+ const config_1 = require("./config");
48
+ function checkpointPath() {
49
+ return path.join(config_1.USER_CONFIG_DIR, 'task_checkpoint.json');
50
+ }
51
+ /**
52
+ * Save current orchestration state so it can be resumed later.
53
+ */
54
+ function save(goal, tasks, results, completedIds) {
55
+ const cids = completedIds || new Set(results.map((r) => r.id));
56
+ const payload = {
57
+ goal,
58
+ tasks: tasks.map(serializeTask),
59
+ results: results.map(serializeResult),
60
+ completed_ids: Array.from(cids).sort(),
61
+ };
62
+ const p = checkpointPath();
63
+ const dir = path.dirname(p);
64
+ if (!fs.existsSync(dir)) {
65
+ fs.mkdirSync(dir, { recursive: true });
66
+ }
67
+ const tmp = p + '.tmp';
68
+ fs.writeFileSync(tmp, JSON.stringify(payload, null, 2), 'utf-8');
69
+ fs.renameSync(tmp, p);
70
+ }
71
+ /**
72
+ * Return the last saved checkpoint dict, or null if none / unreadable.
73
+ */
74
+ function load() {
75
+ const p = checkpointPath();
76
+ if (!fs.existsSync(p)) {
77
+ return null;
78
+ }
79
+ try {
80
+ const data = JSON.parse(fs.readFileSync(p, 'utf-8'));
81
+ return typeof data === 'object' && data !== null ? data : null;
82
+ }
83
+ catch {
84
+ return null;
85
+ }
86
+ }
87
+ /**
88
+ * Delete the checkpoint file.
89
+ */
90
+ function clear() {
91
+ try {
92
+ const p = checkpointPath();
93
+ if (fs.existsSync(p)) {
94
+ fs.unlinkSync(p);
95
+ }
96
+ }
97
+ catch {
98
+ // Ignore cleanup errors
99
+ }
100
+ }
101
+ // ── Serialization helpers ──
102
+ function serializeTask(t) {
103
+ return {
104
+ id: t.id,
105
+ description: t.description,
106
+ assigned_to: t.assignedTo ?? t.assigned_to,
107
+ all_deps: t.allDeps ?? t.all_deps ?? [],
108
+ status: t.status?.value ?? t.status ?? 'unknown',
109
+ };
110
+ }
111
+ function serializeResult(r) {
112
+ return {
113
+ id: r.id,
114
+ agent: r.agent,
115
+ description: r.description,
116
+ success: r.success,
117
+ content: r.content,
118
+ };
119
+ }
120
+ //# sourceMappingURL=checkpoint.js.map