agent-world 0.11.0 → 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 +55 -4
  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 +21 -5
  267. package/scripts/launch-electron.js +0 -58
@@ -0,0 +1,478 @@
1
+ /**
2
+ * Manager Utilities - Helper functions for managers and agent processing
3
+ *
4
+ * Features:
5
+ * - Unique ID generation for events and messages using crypto.randomUUID()
6
+ * - Chat ID generation using nanoid for human-readable IDs
7
+ * - Manager-specific utility functions for string manipulation and processing
8
+ * - String manipulation utilities (kebab-case conversion for IDs and names)
9
+ * - Agent and message processing utilities with world-aware operations
10
+ * - LLM message preparation with conversation history and system prompts
11
+ * - Mention extraction with first-mention-only logic and case-insensitive matching
12
+ * - Sender type detection for humans, agents, and system messages
13
+ * - Agent memory filtering for LLM context (prevents irrelevant message pollution)
14
+ *
15
+ * Core Utilities:
16
+ * - generateId: Crypto-based unique ID generation for messages and events
17
+ * - generateChatId: Nanoid-based short ID generation for chat history
18
+ * - toKebabCase: String conversion for consistent naming conventions
19
+ * - getWorldTurnLimit: World-specific turn limit retrieval with fallback defaults
20
+ * - extractMentions: Case-insensitive mention extraction with first-mention-only logic
21
+ * - determineSenderType: Sender classification for message filtering and processing
22
+ * - prepareMessagesForLLM: Message formatting for LLM calls with history and system prompts
23
+ * - wouldAgentHaveRespondedToHistoricalMessage: Filters irrelevant messages from LLM context
24
+ *
25
+ * Implementation Details:
26
+ * - Uses native crypto.randomUUID() for ID generation ensuring uniqueness
27
+ * - Uses nanoid for human-readable chat IDs (8 characters, URL-safe)
28
+ * - Self-contained utility functions with no external dependencies
29
+ * - Ready for manager module integration with consistent interfaces
30
+ * - All types imported from types.ts for better organization and reusability
31
+ * - World-aware functions that respect world-specific configurations
32
+ * - Message processing utilities that handle AI SDK compatibility
33
+ * - Agent memory filtering prevents LLM context pollution from irrelevant messages
34
+ *
35
+ * Recent Changes:
36
+ * - 2026-02-19: Replaced raw `working directory: <value>` system-prompt suffix with explicit `shell_cmd` scope instructions and a no-echo directive.
37
+ * - 2026-02-16: Added env-driven global/project skill-scope filtering for the `## Agent Skills` system prompt section.
38
+ * - 2026-02-15: prepareMessagesForLLM now appends a concise, strict cross-agent addressing rule requiring `@<agent_id>, <message>` when targeting a specific agent.
39
+ * - 2026-02-14: prepareMessagesForLLM now injects an `## Agent Skills` section with registry-backed `<available_skills>` entries and `load_skill` guidance.
40
+ * - 2026-02-14: Added shared default working-directory resolver (env override -> user home -> `./`) and switched missing world `working_directory` fallback from `./` to user home.
41
+ * - 2026-02-13: prepareMessagesForLLM began appending execution-directory context from world `working_directory`.
42
+ * - 2026-02-08: Fixed wouldAgentHaveRespondedToHistoricalMessage to include assistant messages with tool_calls
43
+ * (prevents OpenAI error: "messages with role 'tool' must be a response to a preceeding message with 'tool_calls'")
44
+ * - Enhanced comment documentation with detailed feature descriptions
45
+ * - Improved function descriptions with implementation details
46
+ * - Added details about world-aware operations and LLM integration
47
+ * - Added nanoid support for chat ID generation
48
+ * - Added wouldAgentHaveRespondedToHistoricalMessage for LLM context filtering
49
+ * - Updated prepareMessagesForLLM to filter irrelevant conversation history
50
+ * - Consolidated with message-prep.ts filtering for client-side tool calls
51
+ */
52
+ import { nanoid } from 'nanoid';
53
+ import { homedir } from 'os';
54
+ import { getSkillSourceScope, getSkillsForSystemPrompt, waitForInitialSkillSync } from './skill-registry.js';
55
+ import { parseSkillIdListFromEnv } from './skill-settings.js';
56
+ import { createCategoryLogger } from './logger.js';
57
+ const logger = createCategoryLogger('core.utils');
58
+ /**
59
+ * Resolve default working directory when world variable is not configured.
60
+ * Priority:
61
+ * 1) AGENT_WORLD_DEFAULT_WORKING_DIRECTORY (runtime override)
62
+ * 2) OS user home directory
63
+ * 3) "./" hard fallback
64
+ */
65
+ export function getDefaultWorkingDirectory() {
66
+ const envValue = typeof process !== 'undefined'
67
+ ? process.env?.AGENT_WORLD_DEFAULT_WORKING_DIRECTORY
68
+ : undefined;
69
+ const trimmedEnvValue = typeof envValue === 'string' ? envValue.trim() : '';
70
+ if (trimmedEnvValue) {
71
+ return trimmedEnvValue;
72
+ }
73
+ try {
74
+ const homePath = homedir();
75
+ const trimmedHomePath = typeof homePath === 'string' ? homePath.trim() : '';
76
+ if (trimmedHomePath) {
77
+ return trimmedHomePath;
78
+ }
79
+ }
80
+ catch {
81
+ // Fall through to final static fallback.
82
+ }
83
+ return './';
84
+ }
85
+ /**
86
+ * Generate unique ID for messages and events
87
+ */
88
+ export function generateId() {
89
+ try {
90
+ return nanoid();
91
+ }
92
+ catch (error) {
93
+ // Fallback for environments where nanoid import fails
94
+ console.warn('[generateId] nanoid not available, using fallback');
95
+ return 'id-' + Math.random().toString(36).substr(2, 9) + '-' + Date.now().toString(36);
96
+ }
97
+ }
98
+ /**
99
+ * Generate short, human-readable ID for chat history
100
+ */
101
+ export function generateChatId() {
102
+ return nanoid(8); // 8 characters, URL-safe
103
+ }
104
+ /**
105
+ * Simple runtime environment detection
106
+ * Returns true for Node.js, false for browser
107
+ */
108
+ export function isNodeEnvironment() {
109
+ // Robust Node.js detection: process.versions.node is always present in Node
110
+ return typeof process !== 'undefined' && !!process.versions && !!process.versions.node;
111
+ }
112
+ /**
113
+ * Convert a string to kebab-case
114
+ * @param str - The string to convert
115
+ * @returns The kebab-case version of the string
116
+ */
117
+ export function toKebabCase(str) {
118
+ if (!str)
119
+ return '';
120
+ return str
121
+ .replace(/\s+/g, '-') // Replace spaces with hyphens
122
+ .replace(/([a-z])([A-Z])/g, '$1-$2') // Insert hyphen between camelCase
123
+ .replace(/[^a-zA-Z0-9-]/g, '-') // Replace special characters with hyphens
124
+ .replace(/-+/g, '-') // Replace multiple hyphens with single
125
+ .replace(/^-|-$/g, '') // Remove leading/trailing hyphens
126
+ .toLowerCase(); // Convert to lowercase
127
+ }
128
+ /**
129
+ * Parse .env-style text into key-value map.
130
+ * Supported:
131
+ * - Comments: # comment
132
+ * - Blank lines
133
+ * - KEY=value entries (optional whitespace around '=')
134
+ * Invalid lines are ignored.
135
+ */
136
+ export function parseEnvText(variablesText) {
137
+ const envMap = {};
138
+ if (!variablesText || typeof variablesText !== 'string') {
139
+ return envMap;
140
+ }
141
+ const lines = variablesText.split(/\r?\n/);
142
+ for (const rawLine of lines) {
143
+ const line = rawLine.trim();
144
+ if (!line || line.startsWith('#')) {
145
+ continue;
146
+ }
147
+ const separatorIndex = line.indexOf('=');
148
+ if (separatorIndex <= 0) {
149
+ logger.debug('Ignoring invalid env line', { line: rawLine });
150
+ continue;
151
+ }
152
+ const key = line.slice(0, separatorIndex).trim();
153
+ const value = line.slice(separatorIndex + 1).trim();
154
+ if (!key) {
155
+ logger.debug('Ignoring env line with empty key', { line: rawLine });
156
+ continue;
157
+ }
158
+ envMap[key] = value;
159
+ }
160
+ return envMap;
161
+ }
162
+ /**
163
+ * Get a single env value from .env-style text
164
+ */
165
+ export function getEnvValueFromText(variablesText, key) {
166
+ if (!key) {
167
+ return undefined;
168
+ }
169
+ const envMap = parseEnvText(variablesText);
170
+ if (Object.prototype.hasOwnProperty.call(envMap, key)) {
171
+ return envMap[key];
172
+ }
173
+ if (key === 'working_directory') {
174
+ return getDefaultWorkingDirectory();
175
+ }
176
+ return undefined;
177
+ }
178
+ function buildAgentMentionFormatRule() {
179
+ return [
180
+ 'Always use this format when addressing a specific agent: @<agent>, <message>.',
181
+ 'Put @<agent> at the very start of the reply.',
182
+ 'Do not use other addressing styles (e.g. To @<agent>, Hi @<agent>, Hey @<agent>, Hello @<agent>, or mid-sentence mentions).'
183
+ ].join('\n');
184
+ }
185
+ /**
186
+ * Interpolate template variables in form {{ variable }} from env map.
187
+ * Missing variables are replaced with empty string.
188
+ */
189
+ export function interpolateTemplateVariables(template, envMap) {
190
+ if (!template) {
191
+ return '';
192
+ }
193
+ return template.replace(/\{\{\s*([A-Za-z0-9_\-]+)\s*\}\}/g, (_match, variableName) => {
194
+ if (Object.prototype.hasOwnProperty.call(envMap, variableName)) {
195
+ return envMap[variableName] ?? '';
196
+ }
197
+ return '';
198
+ });
199
+ }
200
+ function escapeXmlText(value) {
201
+ return value
202
+ .replace(/&/g, '&amp;')
203
+ .replace(/</g, '&lt;')
204
+ .replace(/>/g, '&gt;');
205
+ }
206
+ async function buildAgentSkillsPromptSection() {
207
+ await waitForInitialSkillSync();
208
+ const includeGlobalSkills = String(process.env.AGENT_WORLD_ENABLE_GLOBAL_SKILLS ?? 'true').toLowerCase() !== 'false';
209
+ const includeProjectSkills = String(process.env.AGENT_WORLD_ENABLE_PROJECT_SKILLS ?? 'true').toLowerCase() !== 'false';
210
+ const availableSkills = getSkillsForSystemPrompt({
211
+ includeGlobal: includeGlobalSkills,
212
+ includeProject: includeProjectSkills,
213
+ });
214
+ const disabledGlobalSkillIds = parseSkillIdListFromEnv(process.env.AGENT_WORLD_DISABLED_GLOBAL_SKILLS);
215
+ const disabledProjectSkillIds = parseSkillIdListFromEnv(process.env.AGENT_WORLD_DISABLED_PROJECT_SKILLS);
216
+ const filteredAvailableSkills = availableSkills.filter((skill) => {
217
+ const skillId = String(skill?.skill_id || '').trim();
218
+ if (!skillId) {
219
+ return false;
220
+ }
221
+ const sourceScope = getSkillSourceScope(skillId);
222
+ if (sourceScope === 'project') {
223
+ return !disabledProjectSkillIds.has(skillId);
224
+ }
225
+ return !disabledGlobalSkillIds.has(skillId);
226
+ });
227
+ const lines = [
228
+ '## Agent Skills',
229
+ 'You have access to a library of agent skills. Find skill by:',
230
+ '1. Review the <available_skills> list below.',
231
+ "2. If the user's request matches a skill's purpose, use the load_skill with skill id tool",
232
+ ' to fetch the full instructions.',
233
+ '',
234
+ '<available_skills>',
235
+ ];
236
+ for (const skill of filteredAvailableSkills) {
237
+ lines.push(' <skill>');
238
+ lines.push(` <id>${escapeXmlText(skill.skill_id)}</id>`);
239
+ lines.push(` <description>${escapeXmlText(skill.description)}</description>`);
240
+ lines.push(' </skill>');
241
+ }
242
+ lines.push('</available_skills>');
243
+ return lines.join('\n');
244
+ }
245
+ // Import types for utility functions
246
+ import { SenderType } from './types.js';
247
+ /**
248
+ * Get world-specific turn limit or default value
249
+ */
250
+ export function getWorldTurnLimit(world) {
251
+ return world.turnLimit || 5; // Default to 5 if not configured
252
+ }
253
+ /**
254
+ * Extract @mentions from message content - returns only first valid mention
255
+ * Implements first-mention-only logic to prevent multiple agent responses
256
+ */
257
+ export function extractMentions(content) {
258
+ if (!content)
259
+ return [];
260
+ const mentionRegex = /@(\w+(?:[-_]\w+)*)/g;
261
+ const allMentions = [];
262
+ let firstValidMention = null;
263
+ let match;
264
+ while ((match = mentionRegex.exec(content)) !== null) {
265
+ const mention = match[1];
266
+ if (mention && mention.length > 0) {
267
+ const lowerMention = mention.toLowerCase();
268
+ allMentions.push(lowerMention);
269
+ // Only keep the first valid mention
270
+ if (firstValidMention === null) {
271
+ firstValidMention = lowerMention;
272
+ }
273
+ }
274
+ }
275
+ // Return array with first mention only
276
+ return firstValidMention ? [firstValidMention] : [];
277
+ }
278
+ /**
279
+ * Extract @mentions that appear at the beginning of paragraphs
280
+ * Implements paragraph-beginning-only logic for agent response triggering
281
+ *
282
+ * @param content - The message content to search for mentions
283
+ * @returns Array of mention names (lowercase) that appear at paragraph beginnings
284
+ */
285
+ export function extractParagraphBeginningMentions(content) {
286
+ if (!content)
287
+ return [];
288
+ const validMentions = [];
289
+ const mentionPattern = /^(?:hey|hi|hello|to)\s+@(\w+(?:[-_]\w+)*)\b|^@(\w+(?:[-_]\w+)*)\b/i;
290
+ const lines = content.split(/\n/);
291
+ for (const line of lines) {
292
+ const trimmed = line.trimStart();
293
+ const match = mentionPattern.exec(trimmed);
294
+ if (match) {
295
+ const mention = match[1] || match[2];
296
+ if (mention) {
297
+ validMentions.push(mention.toLowerCase());
298
+ }
299
+ }
300
+ }
301
+ return validMentions;
302
+ }
303
+ /**
304
+ * Determine sender type based on sender name (matches src/agent.ts logic)
305
+ */
306
+ export function determineSenderType(sender) {
307
+ if (!sender)
308
+ return SenderType.SYSTEM;
309
+ const lowerSender = sender.toLowerCase();
310
+ if (lowerSender === 'human' || lowerSender === 'user' || lowerSender === 'you') {
311
+ return SenderType.HUMAN;
312
+ }
313
+ if (lowerSender === 'system') {
314
+ return SenderType.SYSTEM;
315
+ }
316
+ if (lowerSender === 'world') {
317
+ return SenderType.WORLD;
318
+ }
319
+ return SenderType.AGENT;
320
+ }
321
+ /**
322
+ * Check if agent would have responded to a historical message
323
+ * Replicates shouldAgentRespond logic for saved messages to filter LLM context
324
+ *
325
+ * @param agent - The agent to check response logic for
326
+ * @param message - The historical message to evaluate
327
+ * @returns true if agent would have responded to this message
328
+ */
329
+ export function wouldAgentHaveRespondedToHistoricalMessage(agent, message) {
330
+ // Always include own messages (by agentId or sender)
331
+ if (message.agentId === agent.id || message.sender?.toLowerCase() === agent.id.toLowerCase()) {
332
+ return true;
333
+ }
334
+ const content = message.content || '';
335
+ // Never respond to turn limit messages (prevents endless loops)
336
+ if (content.includes('Turn limit reached')) {
337
+ return false;
338
+ }
339
+ // Never respond to system messages
340
+ if (message.sender === 'system') {
341
+ return false;
342
+ }
343
+ // Always include tool messages (they are results from previous interactions)
344
+ if (message.role === 'tool' || message.sender === 'tool') {
345
+ return true;
346
+ }
347
+ // Always include assistant messages with tool_calls (required for tool result context)
348
+ if (message.role === 'assistant' && message.tool_calls?.length) {
349
+ return true;
350
+ }
351
+ // Always respond to world messages
352
+ if (message.sender === 'world') {
353
+ return true;
354
+ }
355
+ const anyMentions = extractMentions(content);
356
+ const mentions = extractParagraphBeginningMentions(content);
357
+ // Determine sender type
358
+ const senderType = determineSenderType(message.sender);
359
+ // For HUMAN messages
360
+ if (senderType === SenderType.HUMAN) {
361
+ if (mentions.length === 0) {
362
+ // If there are ANY mentions anywhere but none at paragraph beginnings, don't respond
363
+ if (anyMentions.length > 0) {
364
+ return false;
365
+ }
366
+ else {
367
+ return true; // No mentions = public message
368
+ }
369
+ }
370
+ else {
371
+ return mentions.includes(agent.id.toLowerCase());
372
+ }
373
+ }
374
+ // For agent messages, only respond if this agent has a paragraph-beginning mention
375
+ return mentions.includes(agent.id.toLowerCase());
376
+ }
377
+ /**
378
+ * Convert MessageData to AgentMessage for memory storage
379
+ */
380
+ export function messageDataToAgentMessage(messageData) {
381
+ return {
382
+ role: 'user',
383
+ content: messageData.content || messageData.payload?.content || '',
384
+ sender: messageData.sender,
385
+ createdAt: new Date()
386
+ };
387
+ }
388
+ /**
389
+ * Prepare messages array for LLM using standard chat message format
390
+ * Filters conversation history by chatId if provided and excludes messages
391
+ * the agent would not have responded to (prevents irrelevant context pollution)
392
+ */
393
+ export async function prepareMessagesForLLM(worldId, agent, chatId, includeCurrentMessage) {
394
+ const messages = [];
395
+ let worldEnvMap = {};
396
+ let worldVariablesText = '';
397
+ // Load FRESH agent from storage to get original system prompt (not patched)
398
+ // This ensures we always use the clean system prompt from storage
399
+ let freshSystemPrompt;
400
+ try {
401
+ const { createStorageWithWrappers } = await import('./storage/storage-factory.js');
402
+ const storage = await createStorageWithWrappers();
403
+ const freshAgent = await storage.loadAgent(worldId, agent.id);
404
+ freshSystemPrompt = freshAgent?.systemPrompt;
405
+ const world = await storage.loadWorld(worldId);
406
+ worldVariablesText = world?.variables || '';
407
+ worldEnvMap = parseEnvText(worldVariablesText);
408
+ }
409
+ catch (error) {
410
+ const { logger } = await import('./logger.js');
411
+ logger.error('Could not load agent from storage for system prompt', {
412
+ agentId: agent.id,
413
+ worldId,
414
+ error: error instanceof Error ? error.message : error
415
+ });
416
+ // Fallback to in-memory agent's system prompt
417
+ freshSystemPrompt = agent.systemPrompt;
418
+ }
419
+ // IDEMPOTENCE: Always add a system message first.
420
+ // System messages are NEVER saved to storage.
421
+ const interpolatedPrompt = interpolateTemplateVariables(freshSystemPrompt || '', worldEnvMap);
422
+ const workingDirectory = getEnvValueFromText(worldVariablesText, 'working_directory') || getDefaultWorkingDirectory();
423
+ const shellExecutionRule = 'When using `shell_cmd`, execute commands only within this trusted working directory scope: ' + workingDirectory;
424
+ const promptWithShellExecutionRule = interpolatedPrompt.trim().length > 0
425
+ ? (interpolatedPrompt.endsWith('\n')
426
+ ? `${interpolatedPrompt}${shellExecutionRule}`
427
+ : `${interpolatedPrompt}\n${shellExecutionRule}`)
428
+ : shellExecutionRule;
429
+ const agentSkillsPromptSection = await buildAgentSkillsPromptSection();
430
+ const promptWithSkills = promptWithShellExecutionRule.endsWith('\n')
431
+ ? `${promptWithShellExecutionRule}\n${agentSkillsPromptSection}`
432
+ : `${promptWithShellExecutionRule}\n\n${agentSkillsPromptSection}`;
433
+ const mentionFormatRule = buildAgentMentionFormatRule();
434
+ const promptWithMentionRule = promptWithSkills.endsWith('\n')
435
+ ? `${promptWithSkills}\n${mentionFormatRule}`
436
+ : `${promptWithSkills}\n\n${mentionFormatRule}`;
437
+ messages.push({
438
+ role: 'system',
439
+ content: promptWithMentionRule,
440
+ createdAt: new Date()
441
+ });
442
+ // Load FRESH conversation history from storage (not from in-memory agent)
443
+ // This ensures we always have the latest messages
444
+ let conversationHistory = [];
445
+ try {
446
+ const { createStorageWithWrappers } = await import('./storage/storage-factory.js');
447
+ const storage = await createStorageWithWrappers();
448
+ conversationHistory = await storage.getMemory(worldId, chatId);
449
+ }
450
+ catch (error) {
451
+ const { logger } = await import('./logger.js');
452
+ logger.error('Could not load conversation history from storage', {
453
+ agentId: agent.id,
454
+ worldId,
455
+ chatId,
456
+ error: error instanceof Error ? error.message : error
457
+ });
458
+ }
459
+ // Filter to only include messages from THIS specific agent
460
+ // getMemory returns messages from ALL agents, but we only want this agent's memory
461
+ const agentMessages = conversationHistory.filter(msg => msg.agentId === agent.id);
462
+ // IDEMPOTENCE: Always filter out system messages from history
463
+ // System message should only come from agent.systemPrompt above, never from storage
464
+ const filteredHistory = agentMessages.filter(msg => msg.role !== 'system');
465
+ // Filter to only include messages this agent would have responded to
466
+ // This prevents irrelevant "not mentioned" messages from polluting LLM context
467
+ const relevantHistory = filteredHistory.filter(msg => wouldAgentHaveRespondedToHistoricalMessage(agent, msg));
468
+ // Add filtered conversation history
469
+ messages.push(...relevantHistory);
470
+ // Add current message if provided
471
+ if (includeCurrentMessage) {
472
+ messages.push(messageDataToAgentMessage(includeCurrentMessage));
473
+ }
474
+ // Filter out client-side tool calls and orphaned tool results.
475
+ const { filterClientSideMessages } = await import('./message-prep.js');
476
+ return filterClientSideMessages(messages);
477
+ }
478
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../core/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * World Class - Object-Oriented Wrapper for Core World Functions
3
+ *
4
+ * Provides a clean OOP interface wrapping core function-based API with automatic worldId management.
5
+ * Stateless design - each method delegates to core functions and fetches fresh data.
6
+ *
7
+ * Usage:
8
+ * ```typescript
9
+ * const world = new WorldClass(worldId);
10
+ * await world.delete();
11
+ * const agent = await world.createAgent({...});
12
+ * await world.clearAgentMemory('agent-name');
13
+ * ```
14
+ */
15
+ import { type World, type Agent, type Chat, type AgentMessage } from './index.js';
16
+ import type { CreateAgentParams, UpdateAgentParams, UpdateWorldParams } from './types.js';
17
+ /** Object-oriented wrapper for World management functions */
18
+ export declare class WorldClass {
19
+ private readonly worldId;
20
+ constructor(worldId: string);
21
+ delete(): Promise<boolean>;
22
+ update(updates: UpdateWorldParams): Promise<World | null>;
23
+ reload(): Promise<World | null>;
24
+ exportToMarkdown(): Promise<string>;
25
+ save(): Promise<void>;
26
+ createAgent(params: CreateAgentParams): Promise<Agent>;
27
+ getAgent(agentName: string): Promise<Agent | null>;
28
+ updateAgent(agentName: string, updates: UpdateAgentParams): Promise<Agent | null>;
29
+ deleteAgent(agentName: string): Promise<boolean>;
30
+ listAgents(): Promise<Agent[]>;
31
+ clearAgentMemory(agentName: string): Promise<Agent | null>;
32
+ listChats(): Promise<Chat[]>;
33
+ newChat(setAsCurrent?: boolean): Promise<World | null>;
34
+ restoreChat(chatId: string, setAsCurrent?: boolean): Promise<World | null>;
35
+ deleteChat(chatId: string): Promise<boolean>;
36
+ getMemory(chatId?: string | null): Promise<AgentMessage[] | null>;
37
+ get id(): string;
38
+ toString(): string;
39
+ toJSON(): {
40
+ id: string;
41
+ };
42
+ }
43
+ export default WorldClass;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"world-class.d.ts","sourceRoot":"","sources":["../../core/world-class.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAIL,KAAK,KAAK,EAAE,KAAK,KAAK,EAAE,KAAK,IAAI,EAAE,KAAK,YAAY,EACrD,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG1F,6DAA6D;AAC7D,qBAAa,UAAU;IACT,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,MAAM;IAKtC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAI1B,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAIzD,MAAM,IAAI,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAI/B,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAInC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAKrB,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC;IAItD,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAIlD,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAIjF,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIhD,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAI9B,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAK1D,SAAS,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAI5B,OAAO,CAAC,YAAY,GAAE,OAAc,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAI5D,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,GAAE,OAAc,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAQhF,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI5C,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC;IAKvE,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,QAAQ,IAAI,MAAM;IAIlB,MAAM,IAAI;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE;CAGzB;AAED,eAAe,UAAU,CAAC"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * World Class - Object-Oriented Wrapper for Core World Functions
3
+ *
4
+ * Provides a clean OOP interface wrapping core function-based API with automatic worldId management.
5
+ * Stateless design - each method delegates to core functions and fetches fresh data.
6
+ *
7
+ * Usage:
8
+ * ```typescript
9
+ * const world = new WorldClass(worldId);
10
+ * await world.delete();
11
+ * const agent = await world.createAgent({...});
12
+ * await world.clearAgentMemory('agent-name');
13
+ * ```
14
+ */
15
+ import { getWorld, updateWorld, deleteWorld, exportWorldToMarkdown, getMemory, createAgent, getAgent, updateAgent, deleteAgent, listAgents, clearAgentMemory, listChats, deleteChat, newChat, restoreChat, } from './index.js';
16
+ import { toKebabCase } from './utils.js';
17
+ /** Object-oriented wrapper for World management functions */
18
+ export class WorldClass {
19
+ worldId;
20
+ constructor(worldId) {
21
+ this.worldId = worldId;
22
+ this.worldId = toKebabCase(this.worldId);
23
+ }
24
+ // WORLD OPERATIONS
25
+ async delete() {
26
+ return await deleteWorld(this.worldId);
27
+ }
28
+ async update(updates) {
29
+ return await updateWorld(this.worldId, updates);
30
+ }
31
+ async reload() {
32
+ return await getWorld(this.worldId);
33
+ }
34
+ async exportToMarkdown() {
35
+ return await exportWorldToMarkdown(this.worldId);
36
+ }
37
+ async save() {
38
+ // Stateless design - use update() with specific changes
39
+ }
40
+ // AGENT OPERATIONS
41
+ async createAgent(params) {
42
+ return await createAgent(this.worldId, params);
43
+ }
44
+ async getAgent(agentName) {
45
+ return await getAgent(this.worldId, agentName);
46
+ }
47
+ async updateAgent(agentName, updates) {
48
+ return await updateAgent(this.worldId, agentName, updates);
49
+ }
50
+ async deleteAgent(agentName) {
51
+ return await deleteAgent(this.worldId, agentName);
52
+ }
53
+ async listAgents() {
54
+ return await listAgents(this.worldId);
55
+ }
56
+ async clearAgentMemory(agentName) {
57
+ return await clearAgentMemory(this.worldId, agentName);
58
+ }
59
+ // CHAT OPERATIONS
60
+ async listChats() {
61
+ return await listChats(this.worldId);
62
+ }
63
+ async newChat(setAsCurrent = true) {
64
+ return await newChat(this.worldId);
65
+ }
66
+ async restoreChat(chatId, setAsCurrent = true) {
67
+ if (setAsCurrent) {
68
+ return await restoreChat(this.worldId, chatId);
69
+ }
70
+ const chats = await listChats(this.worldId);
71
+ return chats.some(c => c.id === chatId) ? await getWorld(this.worldId) : null;
72
+ }
73
+ async deleteChat(chatId) {
74
+ return await deleteChat(this.worldId, chatId);
75
+ }
76
+ async getMemory(chatId) {
77
+ return await getMemory(this.worldId, chatId);
78
+ }
79
+ // UTILITY METHODS
80
+ get id() {
81
+ return this.worldId;
82
+ }
83
+ toString() {
84
+ return `WorldClass(${this.worldId})`;
85
+ }
86
+ toJSON() {
87
+ return { id: this.worldId };
88
+ }
89
+ }
90
+ export default WorldClass;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"world-class.js","sourceRoot":"","sources":["../../core/world-class.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Agent World - Main Package Entry Point
3
+ *
4
+ * Features:
5
+ * - World-centric agent management system
6
+ * - LLM provider abstraction layer
7
+ * - Event-driven architecture
8
+ * - TypeScript-native execution
9
+ * - Command-line and server interfaces
10
+ *
11
+ * This module re-exports the core functionality of Agent World for npm package usage.
12
+ */
13
+ export * from './core/index';
14
+ export declare const PACKAGE_INFO: {
15
+ readonly name: "agent-world";
16
+ readonly version: "0.5.0";
17
+ readonly description: "A agent management system for building AI agent teams with just words.";
18
+ };