agent-world 0.11.1 → 0.12.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 (267) hide show
  1. package/README.md +17 -7
  2. package/dist/cli/commands.d.ts +109 -0
  3. package/dist/cli/commands.js +2024 -0
  4. package/dist/cli/display.d.ts +124 -0
  5. package/dist/cli/display.js +381 -0
  6. package/dist/cli/hitl.d.ts +33 -0
  7. package/dist/cli/hitl.js +81 -0
  8. package/dist/cli/index.d.ts +2 -0
  9. package/dist/cli/stream.d.ts +41 -0
  10. package/dist/cli/stream.js +222 -0
  11. package/dist/core/activity-tracker.d.ts +16 -0
  12. package/dist/core/activity-tracker.d.ts.map +1 -0
  13. package/dist/core/activity-tracker.js +91 -0
  14. package/dist/core/activity-tracker.js.map +1 -0
  15. package/dist/core/ai-commands.d.ts +16 -0
  16. package/dist/core/ai-commands.d.ts.map +1 -0
  17. package/dist/core/ai-commands.js +24 -0
  18. package/dist/core/ai-commands.js.map +1 -0
  19. package/dist/core/ai-sdk-patch.d.ts +24 -0
  20. package/dist/core/ai-sdk-patch.d.ts.map +1 -0
  21. package/dist/core/ai-sdk-patch.js +169 -0
  22. package/dist/core/ai-sdk-patch.js.map +1 -0
  23. package/dist/core/anthropic-direct.d.ts +52 -0
  24. package/dist/core/anthropic-direct.d.ts.map +1 -0
  25. package/dist/core/anthropic-direct.js +301 -0
  26. package/dist/core/anthropic-direct.js.map +1 -0
  27. package/dist/core/approval-cache.d.ts +104 -0
  28. package/dist/core/approval-cache.d.ts.map +1 -0
  29. package/dist/core/approval-cache.js +150 -0
  30. package/dist/core/approval-cache.js.map +1 -0
  31. package/dist/core/chat-constants.d.ts +20 -0
  32. package/dist/core/chat-constants.d.ts.map +1 -0
  33. package/dist/core/chat-constants.js +22 -0
  34. package/dist/core/chat-constants.js.map +1 -0
  35. package/dist/core/create-agent-tool.d.ts +66 -0
  36. package/dist/core/create-agent-tool.d.ts.map +1 -0
  37. package/dist/core/create-agent-tool.js +212 -0
  38. package/dist/core/create-agent-tool.js.map +1 -0
  39. package/dist/core/events/approval-checker.d.ts +61 -0
  40. package/dist/core/events/approval-checker.d.ts.map +1 -0
  41. package/dist/core/events/approval-checker.js +226 -0
  42. package/dist/core/events/approval-checker.js.map +1 -0
  43. package/dist/core/events/index.d.ts +25 -0
  44. package/dist/core/events/index.d.ts.map +1 -0
  45. package/dist/core/events/index.js +30 -0
  46. package/dist/core/events/index.js.map +1 -0
  47. package/dist/core/events/memory-manager.d.ts +73 -0
  48. package/dist/core/events/memory-manager.d.ts.map +1 -0
  49. package/dist/core/events/memory-manager.js +1218 -0
  50. package/dist/core/events/memory-manager.js.map +1 -0
  51. package/dist/core/events/mention-logic.d.ts +39 -0
  52. package/dist/core/events/mention-logic.d.ts.map +1 -0
  53. package/dist/core/events/mention-logic.js +163 -0
  54. package/dist/core/events/mention-logic.js.map +1 -0
  55. package/dist/core/events/orchestrator.d.ts +69 -0
  56. package/dist/core/events/orchestrator.d.ts.map +1 -0
  57. package/dist/core/events/orchestrator.js +883 -0
  58. package/dist/core/events/orchestrator.js.map +1 -0
  59. package/dist/core/events/persistence.d.ts +41 -0
  60. package/dist/core/events/persistence.d.ts.map +1 -0
  61. package/dist/core/events/persistence.js +296 -0
  62. package/dist/core/events/persistence.js.map +1 -0
  63. package/dist/core/events/publishers.d.ts +81 -0
  64. package/dist/core/events/publishers.d.ts.map +1 -0
  65. package/dist/core/events/publishers.js +272 -0
  66. package/dist/core/events/publishers.js.map +1 -0
  67. package/dist/core/events/subscribers.d.ts +45 -0
  68. package/dist/core/events/subscribers.d.ts.map +1 -0
  69. package/dist/core/events/subscribers.js +288 -0
  70. package/dist/core/events/subscribers.js.map +1 -0
  71. package/dist/core/events/tool-bridge-logging.d.ts +28 -0
  72. package/dist/core/events/tool-bridge-logging.d.ts.map +1 -0
  73. package/dist/core/events/tool-bridge-logging.js +94 -0
  74. package/dist/core/events/tool-bridge-logging.js.map +1 -0
  75. package/dist/core/events-metadata.d.ts +72 -0
  76. package/dist/core/events-metadata.d.ts.map +1 -0
  77. package/dist/core/events-metadata.js +167 -0
  78. package/dist/core/events-metadata.js.map +1 -0
  79. package/dist/core/events.d.ts +186 -0
  80. package/dist/core/events.d.ts.map +1 -0
  81. package/dist/core/events.js +1248 -0
  82. package/dist/core/events.js.map +1 -0
  83. package/dist/core/export.d.ts +106 -0
  84. package/dist/core/export.d.ts.map +1 -0
  85. package/dist/core/export.js +705 -0
  86. package/dist/core/export.js.map +1 -0
  87. package/dist/core/file-tools.d.ts +114 -0
  88. package/dist/core/file-tools.d.ts.map +1 -0
  89. package/dist/core/file-tools.js +370 -0
  90. package/dist/core/file-tools.js.map +1 -0
  91. package/dist/core/google-direct.d.ts +58 -0
  92. package/dist/core/google-direct.d.ts.map +1 -0
  93. package/dist/core/google-direct.js +298 -0
  94. package/dist/core/google-direct.js.map +1 -0
  95. package/dist/core/hitl.d.ts +54 -0
  96. package/dist/core/hitl.d.ts.map +1 -0
  97. package/dist/core/hitl.js +153 -0
  98. package/dist/core/hitl.js.map +1 -0
  99. package/dist/core/index.d.ts +59 -0
  100. package/dist/core/index.d.ts.map +1 -0
  101. package/dist/core/index.js +70 -0
  102. package/dist/core/index.js.map +1 -0
  103. package/dist/core/llm-config.d.ts +128 -0
  104. package/dist/core/llm-config.d.ts.map +1 -0
  105. package/dist/core/llm-config.js +164 -0
  106. package/dist/core/llm-config.js.map +1 -0
  107. package/dist/core/llm-manager.d.ts +163 -0
  108. package/dist/core/llm-manager.d.ts.map +1 -0
  109. package/dist/core/llm-manager.js +669 -0
  110. package/dist/core/llm-manager.js.map +1 -0
  111. package/dist/core/load-skill-tool.d.ts +55 -0
  112. package/dist/core/load-skill-tool.d.ts.map +1 -0
  113. package/dist/core/load-skill-tool.js +468 -0
  114. package/dist/core/load-skill-tool.js.map +1 -0
  115. package/dist/core/logger.d.ts +88 -0
  116. package/dist/core/logger.d.ts.map +1 -0
  117. package/dist/core/logger.js +358 -0
  118. package/dist/core/logger.js.map +1 -0
  119. package/dist/core/managers.d.ts +131 -0
  120. package/dist/core/managers.d.ts.map +1 -0
  121. package/dist/core/managers.js +1223 -0
  122. package/dist/core/managers.js.map +1 -0
  123. package/dist/core/mcp-server-registry.d.ts +304 -0
  124. package/dist/core/mcp-server-registry.d.ts.map +1 -0
  125. package/dist/core/mcp-server-registry.js +1769 -0
  126. package/dist/core/mcp-server-registry.js.map +1 -0
  127. package/dist/core/mcp-tools.d.ts +56 -0
  128. package/dist/core/mcp-tools.d.ts.map +1 -0
  129. package/dist/core/mcp-tools.js +186 -0
  130. package/dist/core/mcp-tools.js.map +1 -0
  131. package/dist/core/message-prep.d.ts +81 -0
  132. package/dist/core/message-prep.d.ts.map +1 -0
  133. package/dist/core/message-prep.js +223 -0
  134. package/dist/core/message-prep.js.map +1 -0
  135. package/dist/core/message-processing-control.d.ts +54 -0
  136. package/dist/core/message-processing-control.d.ts.map +1 -0
  137. package/dist/core/message-processing-control.js +139 -0
  138. package/dist/core/message-processing-control.js.map +1 -0
  139. package/dist/core/openai-direct.d.ts +80 -0
  140. package/dist/core/openai-direct.d.ts.map +1 -0
  141. package/dist/core/openai-direct.js +374 -0
  142. package/dist/core/openai-direct.js.map +1 -0
  143. package/dist/core/shell-cmd-tool.d.ts +235 -0
  144. package/dist/core/shell-cmd-tool.d.ts.map +1 -0
  145. package/dist/core/shell-cmd-tool.js +1157 -0
  146. package/dist/core/shell-cmd-tool.js.map +1 -0
  147. package/dist/core/shell-process-registry.d.ts +88 -0
  148. package/dist/core/shell-process-registry.d.ts.map +1 -0
  149. package/dist/core/shell-process-registry.js +309 -0
  150. package/dist/core/shell-process-registry.js.map +1 -0
  151. package/dist/core/skill-registry.d.ts +75 -0
  152. package/dist/core/skill-registry.d.ts.map +1 -0
  153. package/dist/core/skill-registry.js +369 -0
  154. package/dist/core/skill-registry.js.map +1 -0
  155. package/dist/core/skill-script-runner.d.ts +89 -0
  156. package/dist/core/skill-script-runner.d.ts.map +1 -0
  157. package/dist/core/skill-script-runner.js +274 -0
  158. package/dist/core/skill-script-runner.js.map +1 -0
  159. package/dist/core/skill-selector.d.ts +65 -0
  160. package/dist/core/skill-selector.d.ts.map +1 -0
  161. package/dist/core/skill-selector.js +190 -0
  162. package/dist/core/skill-selector.js.map +1 -0
  163. package/dist/core/skill-settings.d.ts +20 -0
  164. package/dist/core/skill-settings.d.ts.map +1 -0
  165. package/dist/core/skill-settings.js +40 -0
  166. package/dist/core/skill-settings.js.map +1 -0
  167. package/dist/core/storage/agent-storage.d.ts +134 -0
  168. package/dist/core/storage/agent-storage.d.ts.map +1 -0
  169. package/dist/core/storage/agent-storage.js +498 -0
  170. package/dist/core/storage/agent-storage.js.map +1 -0
  171. package/dist/core/storage/eventStorage/fileEventStorage.d.ts +100 -0
  172. package/dist/core/storage/eventStorage/fileEventStorage.d.ts.map +1 -0
  173. package/dist/core/storage/eventStorage/fileEventStorage.js +494 -0
  174. package/dist/core/storage/eventStorage/fileEventStorage.js.map +1 -0
  175. package/dist/core/storage/eventStorage/index.d.ts +31 -0
  176. package/dist/core/storage/eventStorage/index.d.ts.map +1 -0
  177. package/dist/core/storage/eventStorage/index.js +31 -0
  178. package/dist/core/storage/eventStorage/index.js.map +1 -0
  179. package/dist/core/storage/eventStorage/memoryEventStorage.d.ts +87 -0
  180. package/dist/core/storage/eventStorage/memoryEventStorage.d.ts.map +1 -0
  181. package/dist/core/storage/eventStorage/memoryEventStorage.js +244 -0
  182. package/dist/core/storage/eventStorage/memoryEventStorage.js.map +1 -0
  183. package/dist/core/storage/eventStorage/sqliteEventStorage.d.ts +45 -0
  184. package/dist/core/storage/eventStorage/sqliteEventStorage.d.ts.map +1 -0
  185. package/dist/core/storage/eventStorage/sqliteEventStorage.js +301 -0
  186. package/dist/core/storage/eventStorage/sqliteEventStorage.js.map +1 -0
  187. package/dist/core/storage/eventStorage/types.d.ts +142 -0
  188. package/dist/core/storage/eventStorage/types.d.ts.map +1 -0
  189. package/dist/core/storage/eventStorage/types.js +43 -0
  190. package/dist/core/storage/eventStorage/types.js.map +1 -0
  191. package/dist/core/storage/eventStorage/validation.d.ts +30 -0
  192. package/dist/core/storage/eventStorage/validation.d.ts.map +1 -0
  193. package/dist/core/storage/eventStorage/validation.js +68 -0
  194. package/dist/core/storage/eventStorage/validation.js.map +1 -0
  195. package/dist/core/storage/legacy-migrations.d.ts +45 -0
  196. package/dist/core/storage/legacy-migrations.d.ts.map +1 -0
  197. package/dist/core/storage/legacy-migrations.js +295 -0
  198. package/dist/core/storage/legacy-migrations.js.map +1 -0
  199. package/dist/core/storage/memory-storage.d.ts +105 -0
  200. package/dist/core/storage/memory-storage.d.ts.map +1 -0
  201. package/dist/core/storage/memory-storage.js +415 -0
  202. package/dist/core/storage/memory-storage.js.map +1 -0
  203. package/dist/core/storage/migration-runner.d.ts +96 -0
  204. package/dist/core/storage/migration-runner.d.ts.map +1 -0
  205. package/dist/core/storage/migration-runner.js +306 -0
  206. package/dist/core/storage/migration-runner.js.map +1 -0
  207. package/dist/core/storage/queue-storage.d.ts +147 -0
  208. package/dist/core/storage/queue-storage.d.ts.map +1 -0
  209. package/dist/core/storage/queue-storage.js +290 -0
  210. package/dist/core/storage/queue-storage.js.map +1 -0
  211. package/dist/core/storage/skill-storage.d.ts +136 -0
  212. package/dist/core/storage/skill-storage.d.ts.map +1 -0
  213. package/dist/core/storage/skill-storage.js +474 -0
  214. package/dist/core/storage/skill-storage.js.map +1 -0
  215. package/dist/core/storage/sqlite-schema.d.ts +95 -0
  216. package/dist/core/storage/sqlite-schema.d.ts.map +1 -0
  217. package/dist/core/storage/sqlite-schema.js +156 -0
  218. package/dist/core/storage/sqlite-schema.js.map +1 -0
  219. package/dist/core/storage/sqlite-storage.d.ts +146 -0
  220. package/dist/core/storage/sqlite-storage.d.ts.map +1 -0
  221. package/dist/core/storage/sqlite-storage.js +709 -0
  222. package/dist/core/storage/sqlite-storage.js.map +1 -0
  223. package/dist/core/storage/storage-factory.d.ts +61 -0
  224. package/dist/core/storage/storage-factory.d.ts.map +1 -0
  225. package/dist/core/storage/storage-factory.js +794 -0
  226. package/dist/core/storage/storage-factory.js.map +1 -0
  227. package/dist/core/storage/validation.d.ts +36 -0
  228. package/dist/core/storage/validation.d.ts.map +1 -0
  229. package/dist/core/storage/validation.js +79 -0
  230. package/dist/core/storage/validation.js.map +1 -0
  231. package/dist/core/storage/world-storage.d.ts +114 -0
  232. package/dist/core/storage/world-storage.d.ts.map +1 -0
  233. package/dist/core/storage/world-storage.js +378 -0
  234. package/dist/core/storage/world-storage.js.map +1 -0
  235. package/dist/core/subscription.d.ts +43 -0
  236. package/dist/core/subscription.d.ts.map +1 -0
  237. package/dist/core/subscription.js +227 -0
  238. package/dist/core/subscription.js.map +1 -0
  239. package/dist/core/tool-utils.d.ts +80 -0
  240. package/dist/core/tool-utils.d.ts.map +1 -0
  241. package/dist/core/tool-utils.js +273 -0
  242. package/dist/core/tool-utils.js.map +1 -0
  243. package/dist/core/types.d.ts +595 -0
  244. package/dist/core/types.d.ts.map +1 -0
  245. package/dist/core/types.js +158 -0
  246. package/dist/core/types.js.map +1 -0
  247. package/dist/core/utils.d.ts +138 -0
  248. package/dist/core/utils.d.ts.map +1 -0
  249. package/dist/core/utils.js +478 -0
  250. package/dist/core/utils.js.map +1 -0
  251. package/dist/core/world-class.d.ts +43 -0
  252. package/dist/core/world-class.d.ts.map +1 -0
  253. package/dist/core/world-class.js +90 -0
  254. package/dist/core/world-class.js.map +1 -0
  255. package/dist/index.d.ts +18 -0
  256. package/dist/public/assets/agent-sprites-DJFgj-zP.png +0 -0
  257. package/dist/public/assets/border-KHK37r8y.svg +83 -0
  258. package/dist/public/assets/index-C9kPXL6G.css +1 -0
  259. package/dist/public/assets/index-DOQEHGWt.js +96 -0
  260. package/dist/public/index.html +21 -0
  261. package/dist/server/api.d.ts +2 -0
  262. package/dist/server/api.js +1124 -0
  263. package/dist/server/index.d.ts +29 -0
  264. package/dist/server/sse-handler.d.ts +62 -0
  265. package/dist/server/sse-handler.js +234 -0
  266. package/package.json +15 -3
  267. package/scripts/launch-electron.js +0 -58
@@ -0,0 +1,298 @@
1
+ /**
2
+ * Google Direct Integration Module - Pure Client (LLM Provider Refactoring Phase 4)
3
+ *
4
+ * Features:
5
+ * - Direct Google Generative AI API integration
6
+ * - Streaming and non-streaming responses returning LLMResponse
7
+ * - Function/tool calling detection (NO execution)
8
+ * - Proper error handling and retry logic
9
+ * - Browser-safe configuration injection
10
+ * - Pure client: only calls APIs and returns structured data
11
+ *
12
+ * Implementation Details:
13
+ * - Uses official @google/generative-ai package for reliable API access
14
+ * - Converts AI SDK message format to Google Generative AI format
15
+ * - Returns LLMResponse with type='text' or type='tool_calls'
16
+ * - Streaming support with chunk-by-chunk processing via onChunk callback
17
+ * - Error handling with descriptive messages
18
+ * - Configuration injection from llm-config module
19
+ * - NO event emission, NO storage, NO tool execution
20
+ *
21
+ * Recent Changes:
22
+ * - 2026-02-15: Stopped replaying historical tool call/response parts as Google `functionCall`/`functionResponse` in conversation conversion to avoid 400 errors requiring `thought_signature` on replayed calls.
23
+ * - 2026-02-13: Added transport-level AbortSignal wiring to Google SDK request options where supported.
24
+ * - 2026-02-13: Added abort-signal checks for streaming and non-streaming execution paths.
25
+ * - 2025-11-09: Phase 4 - Removed ALL tool execution logic (~200 lines)
26
+ * - Provider is now a pure client - only API calls and data transformation
27
+ * - Returns LLMResponse interface with type discriminator
28
+ * - Filters invalid function calls (empty/missing names) and logs warnings
29
+ * - Note: Google API doesn't provide usage information in response
30
+ * - 2025-11-08: Removed ALL event emission from provider
31
+ * - Streaming uses onChunk callback instead of direct SSE emission
32
+ */
33
+ import { GoogleGenerativeAI } from '@google/generative-ai';
34
+ import { getLLMProviderConfig } from './llm-config.js';
35
+ import { createCategoryLogger } from './logger.js';
36
+ import { generateId } from './utils.js';
37
+ const logger = createCategoryLogger('llm.google');
38
+ const mcpLogger = createCategoryLogger('mcp.execution');
39
+ /**
40
+ * Google client factory
41
+ */
42
+ export function createGoogleClient(config) {
43
+ return new GoogleGenerativeAI(config.apiKey);
44
+ }
45
+ /**
46
+ * Create Google model instance
47
+ */
48
+ export function createGoogleModel(client, modelName, tools) {
49
+ return client.getGenerativeModel({
50
+ model: modelName,
51
+ ...(tools && tools.length > 0 && { tools: [{ functionDeclarations: tools }] })
52
+ });
53
+ }
54
+ /**
55
+ * Convert AI SDK messages to Google format
56
+ */
57
+ function convertMessagesToGoogle(messages) {
58
+ const googleMessages = [];
59
+ let systemInstruction = '';
60
+ for (const msg of messages) {
61
+ if (msg.role === 'system') {
62
+ systemInstruction = msg.content || '';
63
+ continue;
64
+ }
65
+ if (msg.role === 'tool') {
66
+ // Replay compatibility: avoid functionResponse replay because Gemini
67
+ // expects metadata coupling with prior functionCall traces.
68
+ // Keep tool outcomes as plain text context.
69
+ if (!msg.content?.trim()) {
70
+ continue;
71
+ }
72
+ googleMessages.push({
73
+ role: 'user',
74
+ parts: [{ text: `[Tool result]\n${msg.content}` }]
75
+ });
76
+ continue;
77
+ }
78
+ if (msg.role === 'assistant' && msg.tool_calls) {
79
+ // Replay compatibility: do NOT replay historical functionCall parts.
80
+ // Gemini may reject replayed calls without provider-issued thought_signature.
81
+ const parts = [];
82
+ if (msg.content) {
83
+ parts.push({ text: msg.content });
84
+ }
85
+ if (parts.length === 0) {
86
+ parts.push({ text: '[Tool call history omitted for Google replay compatibility]' });
87
+ }
88
+ googleMessages.push({
89
+ role: 'model',
90
+ parts
91
+ });
92
+ continue;
93
+ }
94
+ // Regular user/assistant messages
95
+ googleMessages.push({
96
+ role: msg.role === 'assistant' ? 'model' : 'user',
97
+ parts: [{ text: msg.content || '' }]
98
+ });
99
+ }
100
+ return { messages: googleMessages, systemInstruction };
101
+ }
102
+ /**
103
+ * Convert MCP tools to Google format
104
+ */
105
+ function convertMCPToolsToGoogle(mcpTools) {
106
+ return Object.entries(mcpTools).map(([name, tool]) => ({
107
+ name,
108
+ description: tool.description || '',
109
+ parameters: tool.inputSchema || { type: 'object', properties: {} },
110
+ }));
111
+ }
112
+ /**
113
+ * Streaming Google response handler - Pure client (no tool execution)
114
+ * Returns LLMResponse with type='text' or type='tool_calls'
115
+ */
116
+ export async function streamGoogleResponse(client, model, messages, agent, mcpTools, world, onChunk, messageId, abortSignal) {
117
+ const googleTools = Object.keys(mcpTools).length > 0 ? convertMCPToolsToGoogle(mcpTools) : undefined;
118
+ const { messages: googleMessages, systemInstruction } = convertMessagesToGoogle(messages);
119
+ const generativeModel = client.getGenerativeModel({
120
+ model,
121
+ systemInstruction: systemInstruction || undefined,
122
+ ...(googleTools && googleTools.length > 0 && { tools: [{ functionDeclarations: googleTools }] })
123
+ });
124
+ logger.debug(`Google Direct: Starting streaming request for agent=${agent.id}, model=${model}`, {
125
+ messageCount: messages.length,
126
+ hasTools: !!googleTools,
127
+ toolCount: googleTools?.length || 0,
128
+ });
129
+ let fullResponse = '';
130
+ let functionCalls = [];
131
+ try {
132
+ if (abortSignal?.aborted) {
133
+ throw new DOMException('Google stream aborted before start', 'AbortError');
134
+ }
135
+ const result = await generativeModel.generateContentStream({ contents: googleMessages }, abortSignal ? { signal: abortSignal } : undefined);
136
+ for await (const chunk of result.stream) {
137
+ if (abortSignal?.aborted) {
138
+ throw new DOMException('Google stream aborted', 'AbortError');
139
+ }
140
+ const chunkText = chunk.text();
141
+ if (chunkText) {
142
+ fullResponse += chunkText;
143
+ onChunk(chunkText);
144
+ }
145
+ // Check for function calls in the chunk
146
+ if (chunk.candidates?.[0]?.content?.parts) {
147
+ for (const part of chunk.candidates[0].content.parts) {
148
+ if (part.functionCall) {
149
+ functionCalls.push({
150
+ id: generateId(),
151
+ type: 'function',
152
+ function: {
153
+ name: part.functionCall.name,
154
+ arguments: JSON.stringify(part.functionCall.args || {}),
155
+ },
156
+ });
157
+ }
158
+ }
159
+ }
160
+ }
161
+ // Return LLMResponse based on whether we have function calls or text
162
+ if (functionCalls.length > 0) {
163
+ // Filter out invalid function calls (empty or missing names)
164
+ const validCalls = functionCalls.filter(fc => fc.function?.name && fc.function.name.trim() !== '');
165
+ const invalidCount = functionCalls.length - validCalls.length;
166
+ if (invalidCount > 0) {
167
+ logger.warn(`Google Direct: Filtered ${invalidCount} invalid function calls (streaming)`, {
168
+ agentId: agent.id,
169
+ totalCalls: functionCalls.length
170
+ });
171
+ }
172
+ logger.debug(`Google Direct: Completed streaming request with function calls for agent=${agent.id}`, {
173
+ toolCount: validCalls.length,
174
+ toolNames: validCalls.map(fc => fc.function?.name)
175
+ });
176
+ return {
177
+ type: 'tool_calls',
178
+ content: fullResponse,
179
+ tool_calls: validCalls,
180
+ assistantMessage: {
181
+ role: 'assistant',
182
+ content: fullResponse || '',
183
+ tool_calls: validCalls,
184
+ },
185
+ usage: undefined, // Google streaming doesn't provide usage in final chunk
186
+ };
187
+ }
188
+ logger.debug(`Google Direct: Completed streaming request for agent=${agent.id}, responseLength=${fullResponse.length}`);
189
+ return {
190
+ type: 'text',
191
+ content: fullResponse,
192
+ assistantMessage: {
193
+ role: 'assistant',
194
+ content: fullResponse,
195
+ },
196
+ usage: undefined, // Google streaming doesn't provide usage in final chunk
197
+ };
198
+ }
199
+ catch (error) {
200
+ logger.error(`Google Direct: Streaming error for agent=${agent.id}:`, error);
201
+ throw error;
202
+ }
203
+ }
204
+ /**
205
+ * Non-streaming Google response handler - Pure client (no tool execution)
206
+ * Returns LLMResponse with type='text' or type='tool_calls'
207
+ */
208
+ export async function generateGoogleResponse(client, model, messages, agent, mcpTools, world, abortSignal) {
209
+ const googleTools = Object.keys(mcpTools).length > 0 ? convertMCPToolsToGoogle(mcpTools) : undefined;
210
+ const { messages: googleMessages, systemInstruction } = convertMessagesToGoogle(messages);
211
+ const generativeModel = client.getGenerativeModel({
212
+ model,
213
+ systemInstruction: systemInstruction || undefined,
214
+ ...(googleTools && googleTools.length > 0 && { tools: [{ functionDeclarations: googleTools }] }),
215
+ generationConfig: {
216
+ temperature: agent.temperature,
217
+ maxOutputTokens: agent.maxTokens,
218
+ }
219
+ });
220
+ logger.debug(`Google Direct: Starting non-streaming request for agent=${agent.id}, model=${model}`, {
221
+ messageCount: messages.length,
222
+ hasTools: !!googleTools,
223
+ toolCount: googleTools?.length || 0,
224
+ });
225
+ try {
226
+ if (abortSignal?.aborted) {
227
+ throw new DOMException('Google generation aborted before start', 'AbortError');
228
+ }
229
+ const result = await generativeModel.generateContent({ contents: googleMessages }, abortSignal ? { signal: abortSignal } : undefined);
230
+ const response = result.response;
231
+ let content = response.text() || '';
232
+ let functionCalls = [];
233
+ // Check for function calls in the response
234
+ if (response.candidates?.[0]?.content?.parts) {
235
+ for (const part of response.candidates[0].content.parts) {
236
+ if (part.functionCall) {
237
+ functionCalls.push({
238
+ id: generateId(),
239
+ type: 'function',
240
+ function: {
241
+ name: part.functionCall.name,
242
+ arguments: JSON.stringify(part.functionCall.args || {}),
243
+ },
244
+ });
245
+ }
246
+ }
247
+ }
248
+ // Return LLMResponse based on whether we have function calls or text
249
+ if (functionCalls.length > 0) {
250
+ // Filter out invalid function calls (empty or missing names)
251
+ const validCalls = functionCalls.filter(fc => fc.function?.name && fc.function.name.trim() !== '');
252
+ const invalidCount = functionCalls.length - validCalls.length;
253
+ if (invalidCount > 0) {
254
+ logger.warn(`Google Direct: Filtered ${invalidCount} invalid function calls (non-streaming)`, {
255
+ agentId: agent.id,
256
+ totalCalls: functionCalls.length
257
+ });
258
+ }
259
+ logger.debug(`Google Direct: Completed non-streaming request with function calls for agent=${agent.id}`, {
260
+ toolCount: validCalls.length,
261
+ toolNames: validCalls.map(fc => fc.function?.name)
262
+ });
263
+ return {
264
+ type: 'tool_calls',
265
+ content: content,
266
+ tool_calls: validCalls,
267
+ assistantMessage: {
268
+ role: 'assistant',
269
+ content: content,
270
+ tool_calls: validCalls,
271
+ },
272
+ usage: undefined, // Google doesn't provide usage information in response
273
+ };
274
+ }
275
+ logger.debug(`Google Direct: Completed non-streaming request for agent=${agent.id}, responseLength=${content.length}`);
276
+ return {
277
+ type: 'text',
278
+ content: content,
279
+ assistantMessage: {
280
+ role: 'assistant',
281
+ content: content,
282
+ },
283
+ usage: undefined, // Google doesn't provide usage information in response
284
+ };
285
+ }
286
+ catch (error) {
287
+ logger.error(`Google Direct: Generation error for agent=${agent.id}:`, error);
288
+ throw error;
289
+ }
290
+ }
291
+ /**
292
+ * Factory function to create Google client for agent
293
+ */
294
+ export function createGoogleClientForAgent(agent) {
295
+ const config = getLLMProviderConfig(agent.provider);
296
+ return createGoogleClient(config);
297
+ }
298
+ //# sourceMappingURL=google-direct.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-direct.js","sourceRoot":"","sources":["../../core/google-direct.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Human-in-the-Loop (HITL) Option Runtime
3
+ *
4
+ * Purpose:
5
+ * - Provide a generic world-scoped request/response flow for option-based user approvals.
6
+ *
7
+ * Key Features:
8
+ * - Emits structured system events for option prompts (`hitl-option-request`)
9
+ * - Resolves pending requests when renderer/API submits a response
10
+ * - Supports timeout fallback with deterministic default option
11
+ * - Maintains pending request map for validation and lifecycle cleanup
12
+ *
13
+ * Implementation Notes:
14
+ * - Requests are keyed by `(worldId, requestId)` to avoid cross-world collisions.
15
+ * - Timeout fallback defaults to `no` when available, otherwise first option.
16
+ * - Runtime is in-memory and process-local by design.
17
+ *
18
+ * Recent Changes:
19
+ * - 2026-02-14: Added initial generic HITL option request/response runtime.
20
+ */
21
+ import { type World } from './types.js';
22
+ export interface HitlOption {
23
+ id: string;
24
+ label: string;
25
+ description?: string;
26
+ }
27
+ export interface HitlOptionRequest {
28
+ requestId?: string;
29
+ title: string;
30
+ message: string;
31
+ options: HitlOption[];
32
+ chatId?: string | null;
33
+ timeoutMs?: number;
34
+ defaultOptionId?: string;
35
+ metadata?: Record<string, unknown>;
36
+ }
37
+ export interface HitlOptionResolution {
38
+ requestId: string;
39
+ worldId: string;
40
+ chatId: string | null;
41
+ optionId: string;
42
+ source: 'user' | 'timeout';
43
+ }
44
+ export declare function requestWorldOption(world: World, request: HitlOptionRequest): Promise<HitlOptionResolution>;
45
+ export declare function submitWorldOptionResponse(params: {
46
+ worldId: string;
47
+ requestId: string;
48
+ optionId: string;
49
+ }): {
50
+ accepted: boolean;
51
+ reason?: string;
52
+ };
53
+ export declare function clearHitlStateForTests(): void;
54
+ //# sourceMappingURL=hitl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hitl.d.ts","sourceRoot":"","sources":["../../core/hitl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,KAAK,KAAK,EAAyB,MAAM,YAAY,CAAC;AAG/D,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AAoDD,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,oBAAoB,CAAC,CAmE/B;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAiCzC;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAO7C"}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Human-in-the-Loop (HITL) Option Runtime
3
+ *
4
+ * Purpose:
5
+ * - Provide a generic world-scoped request/response flow for option-based user approvals.
6
+ *
7
+ * Key Features:
8
+ * - Emits structured system events for option prompts (`hitl-option-request`)
9
+ * - Resolves pending requests when renderer/API submits a response
10
+ * - Supports timeout fallback with deterministic default option
11
+ * - Maintains pending request map for validation and lifecycle cleanup
12
+ *
13
+ * Implementation Notes:
14
+ * - Requests are keyed by `(worldId, requestId)` to avoid cross-world collisions.
15
+ * - Timeout fallback defaults to `no` when available, otherwise first option.
16
+ * - Runtime is in-memory and process-local by design.
17
+ *
18
+ * Recent Changes:
19
+ * - 2026-02-14: Added initial generic HITL option request/response runtime.
20
+ */
21
+ import { generateId } from './utils.js';
22
+ const DEFAULT_TIMEOUT_MS = 120_000;
23
+ const pendingHitlRequests = new Map();
24
+ function getPendingKey(worldId, requestId) {
25
+ return `${worldId}::${requestId}`;
26
+ }
27
+ function normalizeOptions(options) {
28
+ const seen = new Set();
29
+ const normalized = [];
30
+ for (const option of options) {
31
+ const id = String(option?.id || '').trim();
32
+ const label = String(option?.label || '').trim();
33
+ if (!id || !label || seen.has(id)) {
34
+ continue;
35
+ }
36
+ seen.add(id);
37
+ normalized.push({
38
+ id,
39
+ label,
40
+ description: option?.description ? String(option.description) : undefined,
41
+ });
42
+ }
43
+ return normalized;
44
+ }
45
+ function resolveDefaultOptionId(options, preferredDefaultOptionId) {
46
+ const preferred = String(preferredDefaultOptionId || '').trim();
47
+ if (preferred && options.some((option) => option.id === preferred)) {
48
+ return preferred;
49
+ }
50
+ const explicitNo = options.find((option) => option.id === 'no');
51
+ if (explicitNo) {
52
+ return explicitNo.id;
53
+ }
54
+ return options[0]?.id || 'no';
55
+ }
56
+ export async function requestWorldOption(world, request) {
57
+ const normalizedOptions = normalizeOptions(Array.isArray(request.options) ? request.options : []);
58
+ if (normalizedOptions.length === 0) {
59
+ throw new Error('HITL option request requires at least one valid option.');
60
+ }
61
+ const worldId = String(world.id || '').trim();
62
+ if (!worldId) {
63
+ throw new Error('Cannot request HITL option without a valid world ID.');
64
+ }
65
+ const requestId = String(request.requestId || '').trim() || generateId();
66
+ const chatId = request.chatId !== undefined
67
+ ? (request.chatId ? String(request.chatId) : null)
68
+ : (world.currentChatId ?? null);
69
+ const timeoutMsRaw = Number(request.timeoutMs ?? DEFAULT_TIMEOUT_MS);
70
+ const timeoutMs = Number.isFinite(timeoutMsRaw) && timeoutMsRaw > 0
71
+ ? Math.floor(timeoutMsRaw)
72
+ : DEFAULT_TIMEOUT_MS;
73
+ const defaultOptionId = resolveDefaultOptionId(normalizedOptions, request.defaultOptionId);
74
+ const pendingKey = getPendingKey(worldId, requestId);
75
+ return await new Promise((resolve) => {
76
+ const pending = {
77
+ worldId,
78
+ requestId,
79
+ chatId,
80
+ optionIds: new Set(normalizedOptions.map((option) => option.id)),
81
+ timeoutHandle: null,
82
+ resolve: (resolution) => resolve(resolution),
83
+ };
84
+ pending.timeoutHandle = setTimeout(() => {
85
+ const timeoutPending = pendingHitlRequests.get(pendingKey);
86
+ if (!timeoutPending) {
87
+ return;
88
+ }
89
+ pendingHitlRequests.delete(pendingKey);
90
+ timeoutPending.resolve({
91
+ requestId,
92
+ worldId,
93
+ chatId,
94
+ optionId: defaultOptionId,
95
+ source: 'timeout',
96
+ });
97
+ }, timeoutMs);
98
+ pendingHitlRequests.set(pendingKey, pending);
99
+ const event = {
100
+ messageId: generateId(),
101
+ timestamp: new Date(),
102
+ chatId,
103
+ content: {
104
+ eventType: 'hitl-option-request',
105
+ requestId,
106
+ title: String(request.title || '').trim(),
107
+ message: String(request.message || '').trim(),
108
+ options: normalizedOptions,
109
+ defaultOptionId,
110
+ timeoutMs,
111
+ metadata: request.metadata || null,
112
+ },
113
+ };
114
+ world.eventEmitter.emit('system', event);
115
+ });
116
+ }
117
+ export function submitWorldOptionResponse(params) {
118
+ const worldId = String(params.worldId || '').trim();
119
+ const requestId = String(params.requestId || '').trim();
120
+ const optionId = String(params.optionId || '').trim();
121
+ if (!worldId || !requestId || !optionId) {
122
+ return { accepted: false, reason: 'worldId, requestId, and optionId are required.' };
123
+ }
124
+ const pendingKey = getPendingKey(worldId, requestId);
125
+ const pending = pendingHitlRequests.get(pendingKey);
126
+ if (!pending) {
127
+ return { accepted: false, reason: `No pending HITL request found for requestId '${requestId}'.` };
128
+ }
129
+ if (!pending.optionIds.has(optionId)) {
130
+ return { accepted: false, reason: `Invalid option '${optionId}' for requestId '${requestId}'.` };
131
+ }
132
+ pendingHitlRequests.delete(pendingKey);
133
+ if (pending.timeoutHandle) {
134
+ clearTimeout(pending.timeoutHandle);
135
+ }
136
+ pending.resolve({
137
+ requestId,
138
+ worldId,
139
+ chatId: pending.chatId,
140
+ optionId,
141
+ source: 'user',
142
+ });
143
+ return { accepted: true };
144
+ }
145
+ export function clearHitlStateForTests() {
146
+ for (const pending of pendingHitlRequests.values()) {
147
+ if (pending.timeoutHandle) {
148
+ clearTimeout(pending.timeoutHandle);
149
+ }
150
+ }
151
+ pendingHitlRequests.clear();
152
+ }
153
+ //# sourceMappingURL=hitl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hitl.js","sourceRoot":"","sources":["../../core/hitl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Core Module - Curated Public API
3
+ *
4
+ * Features:
5
+ * - Essential world/agent/chat management functions for client applications
6
+ * - Event-driven messaging with clean subscription interface
7
+ * - Category-based logging system
8
+ * - Core types and utility functions
9
+ *
10
+ * Architecture:
11
+ * - Public API limited to client-facing functionality (~25 exports vs previous 60+)
12
+ * - Internal implementation details kept private
13
+ * - Clear separation between public and private interfaces
14
+ * - Tests can import from internal modules directly
15
+ *
16
+ * Public API Categories:
17
+ * - World Management: createWorld, getWorld, updateWorld, deleteWorld, listWorlds, getWorldConfig, exportWorldToMarkdown
18
+ * - Agent Management: getAgent, updateAgent, deleteAgent, listAgents, clearAgentMemory
19
+ * - Chat Management: createChatData, getChatData, restoreWorldChat
20
+ * - Event System: publishMessage, enableStreaming, disableStreaming
21
+ * - Core Types: World, Agent, AgentMessage, WorldChat, ChatData, WorldInfo, LLMProvider, LoggerConfig, LogLevel
22
+ * - Utilities: logger, createCategoryLogger, loggers, generateId, toKebabCase
23
+ * - Subscription System: subscribeWorld, ClientConnection (for server API)
24
+ *
25
+ * Private APIs (not exported):
26
+ * - Internal agent functions: createAgent (via world instance), updateAgentMemory, loadAgentsIntoWorld, syncWorldAgents, etc.
27
+ * - Internal chat functions: createChat, getChat, createWorldChat
28
+ * - Internal event functions: subscribeAgentToMessages, processAgentMessage, SSE functions
29
+ * - Parameter types: CreateAgentParams, UpdateAgentParams, etc.
30
+ * - Storage implementation: StorageAPI, storage factory functions
31
+ * - Internal utilities: initializeLogger, getCategoryLogLevel
32
+ *
33
+ * Recent Changes:
34
+ * - 2026-02-14: Exported generic HITL option request/response APIs for world-scoped user approval flows.
35
+ * - 2026-02-14: Exported `waitForInitialSkillSync` to allow callers to await startup skill-registry auto-sync completion.
36
+ * - 2026-02-13: Exported chat-scoped stop-message processing controls for Electron IPC stop action.
37
+ * - 2026-02-08: Exported LLM provider configuration helpers for npm core library consumers
38
+ *
39
+ * Version: 3.1.0
40
+ */
41
+ export { createWorld, getWorld, updateWorld, setWorldVariablesText, getWorldVariablesText, getWorldEnvMap, getWorldEnvValue, deleteWorld, listWorlds, getMemory, migrateMessageIds, removeMessagesFrom, editUserMessage, logEditError, getEditErrors } from './managers.js';
42
+ export { exportWorldToMarkdown, exportChatToMarkdown, } from './export.js';
43
+ export { createAgent, getAgent, updateAgent, deleteAgent, listAgents, clearAgentMemory, } from './managers.js';
44
+ export { clearToolsCache } from './mcp-server-registry.js';
45
+ export { skillRegistry, syncSkills, waitForInitialSkillSync, getSkills, getSkillsForSystemPrompt, getSkill, getSkillSourceScope, clearSkillsForTests, type SkillRegistryEntry, type SkillSourceScope, type SkillScopeFilterOptions, type SyncSkillsOptions, type SyncSkillsResult, } from './skill-registry.js';
46
+ export { requestWorldOption, submitWorldOptionResponse, clearHitlStateForTests, type HitlOption, type HitlOptionRequest, type HitlOptionResolution, } from './hitl.js';
47
+ export { executeShellCommand, getExecutionHistory, clearExecutionHistory, stopShellCommandsForChat, getProcessExecution, listProcessExecutions, cancelProcessExecution, deleteProcessExecution, subscribeProcessExecutionStatus, clearProcessExecutionStateForTests, type CommandExecutionResult } from './shell-cmd-tool.js';
48
+ export { stopMessageProcessing, type StopMessageProcessingResult } from './message-processing-control.js';
49
+ export { newChat, branchChatFromMessage, listChats, updateChat, deleteChat, restoreChat } from './managers.js';
50
+ export { enableStreaming, disableStreaming, publishMessage, publishMessageWithId, } from './events/index.js';
51
+ export { beginWorldActivity, trackWorldActivity, type WorldActivityEventPayload, type WorldActivityEventType, } from './activity-tracker.js';
52
+ export { type World, type Agent, type Chat, type AgentMessage, type RemovalResult, type EditErrorLog, LLMProvider, EventType, type LLMResponse } from './types.js';
53
+ export { configureLLMProvider, validateProviderConfig, isProviderConfigured, getConfiguredProviders, clearAllConfiguration, getConfigurationStatus, type BaseLLMConfig, type OpenAIConfig, type AnthropicConfig, type GoogleConfig, type AzureConfig, type XAIConfig, type OpenAICompatibleConfig, type OllamaConfig, type ProviderConfigMap, type ProviderConfig, } from './llm-config.js';
54
+ export { type LoggerConfig, type LogLevel, logger, createCategoryLogger, loggers, addLogStreamCallback } from './logger.js';
55
+ export { type ClientConnection, subscribeWorld } from './subscription.js';
56
+ export { getDefaultRootPath } from './storage/storage-factory.js';
57
+ export { runMigrations, getMigrationStatus, needsMigration, type MigrationContext, type MigrationFile } from './storage/migration-runner.js';
58
+ export declare const VERSION = "0.5.0";
59
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../core/index.ts"],"names":[],"mappings":"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"}