illuma-agents 1.0.8 → 1.0.10

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 (250) hide show
  1. package/LICENSE +1 -5
  2. package/dist/cjs/common/enum.cjs +1 -2
  3. package/dist/cjs/common/enum.cjs.map +1 -1
  4. package/dist/cjs/events.cjs +11 -0
  5. package/dist/cjs/events.cjs.map +1 -1
  6. package/dist/cjs/graphs/Graph.cjs +2 -1
  7. package/dist/cjs/graphs/Graph.cjs.map +1 -1
  8. package/dist/cjs/instrumentation.cjs +3 -1
  9. package/dist/cjs/instrumentation.cjs.map +1 -1
  10. package/dist/cjs/llm/anthropic/types.cjs.map +1 -1
  11. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs +79 -2
  12. package/dist/cjs/llm/anthropic/utils/message_inputs.cjs.map +1 -1
  13. package/dist/cjs/llm/anthropic/utils/tools.cjs.map +1 -1
  14. package/dist/cjs/llm/bedrock/index.cjs +99 -0
  15. package/dist/cjs/llm/bedrock/index.cjs.map +1 -0
  16. package/dist/cjs/llm/fake.cjs.map +1 -1
  17. package/dist/cjs/llm/openai/index.cjs +102 -0
  18. package/dist/cjs/llm/openai/index.cjs.map +1 -1
  19. package/dist/cjs/llm/openai/utils/index.cjs +87 -1
  20. package/dist/cjs/llm/openai/utils/index.cjs.map +1 -1
  21. package/dist/cjs/llm/openrouter/index.cjs +175 -1
  22. package/dist/cjs/llm/openrouter/index.cjs.map +1 -1
  23. package/dist/cjs/llm/providers.cjs +13 -16
  24. package/dist/cjs/llm/providers.cjs.map +1 -1
  25. package/dist/cjs/llm/text.cjs.map +1 -1
  26. package/dist/cjs/messages/core.cjs +14 -14
  27. package/dist/cjs/messages/core.cjs.map +1 -1
  28. package/dist/cjs/messages/ids.cjs.map +1 -1
  29. package/dist/cjs/messages/prune.cjs.map +1 -1
  30. package/dist/cjs/run.cjs +18 -1
  31. package/dist/cjs/run.cjs.map +1 -1
  32. package/dist/cjs/splitStream.cjs.map +1 -1
  33. package/dist/cjs/stream.cjs +24 -1
  34. package/dist/cjs/stream.cjs.map +1 -1
  35. package/dist/cjs/tools/ToolNode.cjs +20 -1
  36. package/dist/cjs/tools/ToolNode.cjs.map +1 -1
  37. package/dist/cjs/tools/handlers.cjs +29 -25
  38. package/dist/cjs/tools/handlers.cjs.map +1 -1
  39. package/dist/cjs/tools/search/anthropic.cjs.map +1 -1
  40. package/dist/cjs/tools/search/content.cjs.map +1 -1
  41. package/dist/cjs/tools/search/firecrawl.cjs.map +1 -1
  42. package/dist/cjs/tools/search/format.cjs.map +1 -1
  43. package/dist/cjs/tools/search/highlights.cjs.map +1 -1
  44. package/dist/cjs/tools/search/rerankers.cjs.map +1 -1
  45. package/dist/cjs/tools/search/schema.cjs +27 -25
  46. package/dist/cjs/tools/search/schema.cjs.map +1 -1
  47. package/dist/cjs/tools/search/search.cjs +6 -1
  48. package/dist/cjs/tools/search/search.cjs.map +1 -1
  49. package/dist/cjs/tools/search/serper-scraper.cjs.map +1 -1
  50. package/dist/cjs/tools/search/tool.cjs +182 -35
  51. package/dist/cjs/tools/search/tool.cjs.map +1 -1
  52. package/dist/cjs/tools/search/utils.cjs.map +1 -1
  53. package/dist/cjs/utils/graph.cjs.map +1 -1
  54. package/dist/cjs/utils/llm.cjs +0 -1
  55. package/dist/cjs/utils/llm.cjs.map +1 -1
  56. package/dist/cjs/utils/misc.cjs.map +1 -1
  57. package/dist/cjs/utils/run.cjs.map +1 -1
  58. package/dist/cjs/utils/title.cjs +7 -7
  59. package/dist/cjs/utils/title.cjs.map +1 -1
  60. package/dist/esm/common/enum.mjs +1 -2
  61. package/dist/esm/common/enum.mjs.map +1 -1
  62. package/dist/esm/events.mjs +11 -0
  63. package/dist/esm/events.mjs.map +1 -1
  64. package/dist/esm/graphs/Graph.mjs +2 -1
  65. package/dist/esm/graphs/Graph.mjs.map +1 -1
  66. package/dist/esm/instrumentation.mjs +3 -1
  67. package/dist/esm/instrumentation.mjs.map +1 -1
  68. package/dist/esm/llm/anthropic/types.mjs.map +1 -1
  69. package/dist/esm/llm/anthropic/utils/message_inputs.mjs +79 -2
  70. package/dist/esm/llm/anthropic/utils/message_inputs.mjs.map +1 -1
  71. package/dist/esm/llm/anthropic/utils/tools.mjs.map +1 -1
  72. package/dist/esm/llm/bedrock/index.mjs +97 -0
  73. package/dist/esm/llm/bedrock/index.mjs.map +1 -0
  74. package/dist/esm/llm/fake.mjs.map +1 -1
  75. package/dist/esm/llm/openai/index.mjs +103 -1
  76. package/dist/esm/llm/openai/index.mjs.map +1 -1
  77. package/dist/esm/llm/openai/utils/index.mjs +88 -2
  78. package/dist/esm/llm/openai/utils/index.mjs.map +1 -1
  79. package/dist/esm/llm/openrouter/index.mjs +175 -1
  80. package/dist/esm/llm/openrouter/index.mjs.map +1 -1
  81. package/dist/esm/llm/providers.mjs +2 -5
  82. package/dist/esm/llm/providers.mjs.map +1 -1
  83. package/dist/esm/llm/text.mjs.map +1 -1
  84. package/dist/esm/messages/core.mjs +14 -14
  85. package/dist/esm/messages/core.mjs.map +1 -1
  86. package/dist/esm/messages/ids.mjs.map +1 -1
  87. package/dist/esm/messages/prune.mjs.map +1 -1
  88. package/dist/esm/run.mjs +18 -1
  89. package/dist/esm/run.mjs.map +1 -1
  90. package/dist/esm/splitStream.mjs.map +1 -1
  91. package/dist/esm/stream.mjs +24 -1
  92. package/dist/esm/stream.mjs.map +1 -1
  93. package/dist/esm/tools/ToolNode.mjs +20 -1
  94. package/dist/esm/tools/ToolNode.mjs.map +1 -1
  95. package/dist/esm/tools/handlers.mjs +30 -26
  96. package/dist/esm/tools/handlers.mjs.map +1 -1
  97. package/dist/esm/tools/search/anthropic.mjs.map +1 -1
  98. package/dist/esm/tools/search/content.mjs.map +1 -1
  99. package/dist/esm/tools/search/firecrawl.mjs.map +1 -1
  100. package/dist/esm/tools/search/format.mjs.map +1 -1
  101. package/dist/esm/tools/search/highlights.mjs.map +1 -1
  102. package/dist/esm/tools/search/rerankers.mjs.map +1 -1
  103. package/dist/esm/tools/search/schema.mjs +27 -25
  104. package/dist/esm/tools/search/schema.mjs.map +1 -1
  105. package/dist/esm/tools/search/search.mjs +6 -1
  106. package/dist/esm/tools/search/search.mjs.map +1 -1
  107. package/dist/esm/tools/search/serper-scraper.mjs.map +1 -1
  108. package/dist/esm/tools/search/tool.mjs +182 -35
  109. package/dist/esm/tools/search/tool.mjs.map +1 -1
  110. package/dist/esm/tools/search/utils.mjs.map +1 -1
  111. package/dist/esm/utils/graph.mjs.map +1 -1
  112. package/dist/esm/utils/llm.mjs +0 -1
  113. package/dist/esm/utils/llm.mjs.map +1 -1
  114. package/dist/esm/utils/misc.mjs.map +1 -1
  115. package/dist/esm/utils/run.mjs.map +1 -1
  116. package/dist/esm/utils/title.mjs +7 -7
  117. package/dist/esm/utils/title.mjs.map +1 -1
  118. package/dist/types/common/enum.d.ts +1 -2
  119. package/dist/types/llm/bedrock/index.d.ts +36 -0
  120. package/dist/types/llm/openai/index.d.ts +1 -0
  121. package/dist/types/llm/openai/utils/index.d.ts +10 -1
  122. package/dist/types/llm/openrouter/index.d.ts +4 -1
  123. package/dist/types/tools/search/types.d.ts +2 -0
  124. package/dist/types/types/llm.d.ts +3 -8
  125. package/package.json +16 -12
  126. package/src/common/enum.ts +1 -2
  127. package/src/common/index.ts +1 -1
  128. package/src/events.ts +11 -0
  129. package/src/graphs/Graph.ts +2 -1
  130. package/src/instrumentation.ts +25 -22
  131. package/src/llm/anthropic/llm.spec.ts +1442 -1442
  132. package/src/llm/anthropic/types.ts +140 -140
  133. package/src/llm/anthropic/utils/message_inputs.ts +757 -660
  134. package/src/llm/anthropic/utils/output_parsers.ts +133 -133
  135. package/src/llm/anthropic/utils/tools.ts +29 -29
  136. package/src/llm/bedrock/index.ts +128 -0
  137. package/src/llm/fake.ts +133 -133
  138. package/src/llm/google/llm.spec.ts +3 -1
  139. package/src/llm/google/utils/tools.ts +160 -160
  140. package/src/llm/openai/index.ts +126 -0
  141. package/src/llm/openai/types.ts +24 -24
  142. package/src/llm/openai/utils/index.ts +116 -1
  143. package/src/llm/openai/utils/isReasoningModel.test.ts +90 -90
  144. package/src/llm/openrouter/index.ts +222 -1
  145. package/src/llm/providers.ts +2 -7
  146. package/src/llm/text.ts +94 -94
  147. package/src/messages/core.ts +463 -463
  148. package/src/messages/formatAgentMessages.tools.test.ts +400 -400
  149. package/src/messages/formatMessage.test.ts +693 -693
  150. package/src/messages/ids.ts +26 -26
  151. package/src/messages/prune.ts +567 -567
  152. package/src/messages/shiftIndexTokenCountMap.test.ts +81 -81
  153. package/src/mockStream.ts +98 -98
  154. package/src/prompts/collab.ts +5 -5
  155. package/src/prompts/index.ts +1 -1
  156. package/src/prompts/taskmanager.ts +61 -61
  157. package/src/run.ts +22 -4
  158. package/src/scripts/ant_web_search_edge_case.ts +162 -0
  159. package/src/scripts/ant_web_search_error_edge_case.ts +148 -0
  160. package/src/scripts/args.ts +48 -48
  161. package/src/scripts/caching.ts +123 -123
  162. package/src/scripts/code_exec_files.ts +193 -193
  163. package/src/scripts/empty_input.ts +137 -137
  164. package/src/scripts/memory.ts +97 -97
  165. package/src/scripts/test-tools-before-handoff.ts +1 -5
  166. package/src/scripts/thinking.ts +149 -149
  167. package/src/scripts/tools.ts +1 -4
  168. package/src/specs/anthropic.simple.test.ts +67 -0
  169. package/src/specs/spec.utils.ts +3 -3
  170. package/src/specs/token-distribution-edge-case.test.ts +316 -316
  171. package/src/specs/tool-error.test.ts +193 -193
  172. package/src/splitStream.test.ts +691 -691
  173. package/src/splitStream.ts +234 -234
  174. package/src/stream.test.ts +94 -94
  175. package/src/stream.ts +30 -1
  176. package/src/tools/ToolNode.ts +24 -1
  177. package/src/tools/handlers.ts +32 -28
  178. package/src/tools/search/anthropic.ts +51 -51
  179. package/src/tools/search/content.test.ts +173 -173
  180. package/src/tools/search/content.ts +147 -147
  181. package/src/tools/search/direct-url.test.ts +530 -0
  182. package/src/tools/search/firecrawl.ts +210 -210
  183. package/src/tools/search/format.ts +250 -250
  184. package/src/tools/search/highlights.ts +320 -320
  185. package/src/tools/search/index.ts +2 -2
  186. package/src/tools/search/jina-reranker.test.ts +126 -126
  187. package/src/tools/search/output.md +2775 -2775
  188. package/src/tools/search/rerankers.ts +242 -242
  189. package/src/tools/search/schema.ts +65 -63
  190. package/src/tools/search/search.ts +766 -759
  191. package/src/tools/search/serper-scraper.ts +155 -155
  192. package/src/tools/search/test.html +883 -883
  193. package/src/tools/search/test.md +642 -642
  194. package/src/tools/search/test.ts +159 -159
  195. package/src/tools/search/tool.ts +641 -471
  196. package/src/tools/search/types.ts +689 -687
  197. package/src/tools/search/utils.ts +79 -79
  198. package/src/types/index.ts +6 -6
  199. package/src/types/llm.ts +2 -8
  200. package/src/utils/graph.ts +10 -10
  201. package/src/utils/llm.ts +26 -27
  202. package/src/utils/llmConfig.ts +13 -5
  203. package/src/utils/logging.ts +48 -48
  204. package/src/utils/misc.ts +57 -57
  205. package/src/utils/run.ts +100 -100
  206. package/src/utils/title.ts +165 -165
  207. package/dist/cjs/llm/ollama/index.cjs +0 -70
  208. package/dist/cjs/llm/ollama/index.cjs.map +0 -1
  209. package/dist/cjs/llm/ollama/utils.cjs +0 -158
  210. package/dist/cjs/llm/ollama/utils.cjs.map +0 -1
  211. package/dist/esm/llm/ollama/index.mjs +0 -68
  212. package/dist/esm/llm/ollama/index.mjs.map +0 -1
  213. package/dist/esm/llm/ollama/utils.mjs +0 -155
  214. package/dist/esm/llm/ollama/utils.mjs.map +0 -1
  215. package/dist/types/llm/ollama/index.d.ts +0 -8
  216. package/dist/types/llm/ollama/utils.d.ts +0 -7
  217. package/src/llm/ollama/index.ts +0 -92
  218. package/src/llm/ollama/utils.ts +0 -193
  219. package/src/proto/CollabGraph.ts +0 -269
  220. package/src/proto/TaskManager.ts +0 -243
  221. package/src/proto/collab.ts +0 -200
  222. package/src/proto/collab_design.ts +0 -184
  223. package/src/proto/collab_design_v2.ts +0 -224
  224. package/src/proto/collab_design_v3.ts +0 -255
  225. package/src/proto/collab_design_v4.ts +0 -220
  226. package/src/proto/collab_design_v5.ts +0 -251
  227. package/src/proto/collab_graph.ts +0 -181
  228. package/src/proto/collab_original.ts +0 -123
  229. package/src/proto/example.ts +0 -93
  230. package/src/proto/example_new.ts +0 -68
  231. package/src/proto/example_old.ts +0 -201
  232. package/src/proto/example_test.ts +0 -152
  233. package/src/proto/example_test_anthropic.ts +0 -100
  234. package/src/proto/log_stream.ts +0 -202
  235. package/src/proto/main_collab_community_event.ts +0 -133
  236. package/src/proto/main_collab_design_v2.ts +0 -96
  237. package/src/proto/main_collab_design_v4.ts +0 -100
  238. package/src/proto/main_collab_design_v5.ts +0 -135
  239. package/src/proto/main_collab_global_analysis.ts +0 -122
  240. package/src/proto/main_collab_hackathon_event.ts +0 -153
  241. package/src/proto/main_collab_space_mission.ts +0 -153
  242. package/src/proto/main_philosophy.ts +0 -210
  243. package/src/proto/original_script.ts +0 -126
  244. package/src/proto/standard.ts +0 -100
  245. package/src/proto/stream.ts +0 -56
  246. package/src/proto/tasks.ts +0 -118
  247. package/src/proto/tools/global_analysis_tools.ts +0 -86
  248. package/src/proto/tools/space_mission_tools.ts +0 -60
  249. package/src/proto/vertexai.ts +0 -54
  250. package/src/scripts/image.ts +0 -178
@@ -1,122 +0,0 @@
1
- // src/main_collab_global_analysis.ts
2
- import dotenv from 'dotenv';
3
- import { HumanMessage } from '@langchain/core/messages';
4
- import type * as t from '@/types';
5
- import {
6
- ChatModelStreamHandler,
7
- LLMStreamHandler,
8
- } from '@/stream';
9
- import { CollaborativeProcessor, Member } from '@/collab_design_v5';
10
- import { WeatherDataTool, TimeZoneTool, CurrencyConversionTool, IPGeolocationTool } from '@/tools/global_analysis_tools';
11
- import { supervisorPrompt } from '@/prompts/collab';
12
- import { GraphEvents, Providers } from '@/common';
13
- import { setupLogging } from '@/utils/logging';
14
-
15
- dotenv.config();
16
-
17
- // Setup logging
18
- setupLogging('global_analysis.log');
19
-
20
- async function testCollaborativeGlobalAnalysis() {
21
- const customHandlers = {
22
- [GraphEvents.LLM_STREAM]: new LLMStreamHandler(),
23
- [GraphEvents.CHAT_MODEL_STREAM]: new ChatModelStreamHandler(),
24
- [GraphEvents.LLM_START]: {
25
- handle: (event: string, data: t.StreamEventData) => {
26
- console.log('LLM Start:', event);
27
- }
28
- },
29
- [GraphEvents.LLM_END]: {
30
- handle: (event: string, data: t.StreamEventData) => {
31
- console.log('LLM End:', event);
32
- }
33
- },
34
- [GraphEvents.CHAT_MODEL_END]: {
35
- handle: (event: string, data: t.StreamEventData) => {
36
- console.log('Chat Model End:', event);
37
- }
38
- },
39
- [GraphEvents.TOOL_END]: {
40
- handle: (event: string, data: t.StreamEventData) => {
41
- console.log('Tool End:', event);
42
- console.dir(data, { depth: null });
43
- }
44
- },
45
- };
46
-
47
- // Define the collaborative members
48
- const members: Member[] = [
49
- {
50
- name: 'weather_analyst',
51
- systemPrompt: 'You are a weather analyst. Use the Weather Data tool to provide weather information for different cities.',
52
- tools: [WeatherDataTool],
53
- llmConfig: {
54
- provider: Providers.OPENAI,
55
- modelName: 'gpt-4o',
56
- temperature: 0,
57
- },
58
- },
59
- {
60
- name: 'time_zone_expert',
61
- systemPrompt: 'You are a time zone expert. Use the Time Zone tool to provide time information for different locations.',
62
- tools: [TimeZoneTool],
63
- llmConfig: {
64
- provider: Providers.OPENAI,
65
- modelName: 'gpt-4o',
66
- temperature: 0.2,
67
- },
68
- },
69
- {
70
- name: 'currency_converter',
71
- systemPrompt: 'You are a currency conversion expert. Use the Currency Conversion tool to convert between different currencies.',
72
- tools: [CurrencyConversionTool],
73
- llmConfig: {
74
- provider: Providers.OPENAI,
75
- modelName: 'gpt-4o',
76
- temperature: 0.2,
77
- },
78
- },
79
- {
80
- name: 'ip_analyst',
81
- systemPrompt: 'You analyze IP addresses. Use the IP Geolocation tool to provide information about IP addresses.',
82
- tools: [IPGeolocationTool],
83
- llmConfig: {
84
- provider: Providers.OPENAI,
85
- modelName: 'gpt-4o',
86
- temperature: 0.2,
87
- },
88
- },
89
- ];
90
-
91
- const supervisorConfig = {
92
- systemPrompt: supervisorPrompt,
93
- llmConfig: {
94
- provider: Providers.OPENAI,
95
- modelName: 'gpt-4o',
96
- temperature: 0,
97
- },
98
- };
99
-
100
- const collaborativeProcessor = new CollaborativeProcessor(members, supervisorConfig, customHandlers);
101
- await collaborativeProcessor.initialize();
102
-
103
- const config = {
104
- configurable: { thread_id: 'collaborative-global-analysis-1' },
105
- streamMode: 'events',
106
- version: 'v2',
107
- };
108
-
109
- console.log('\nCollaborative Test: Perform global analysis');
110
-
111
- const input = {
112
- messages: [new HumanMessage('Analyze the weather in New York and Tokyo, compare their time zones, convert 3500 USD to EUR, and provide geolocation information for the IP address 8.8.8.8.')],
113
- };
114
-
115
- await collaborativeProcessor.processStream(input, config);
116
- }
117
-
118
- async function main() {
119
- await testCollaborativeGlobalAnalysis();
120
- }
121
-
122
- main().catch(console.error);
@@ -1,153 +0,0 @@
1
- // src/main_collab_hackathon_event.ts
2
- import dotenv from 'dotenv';
3
- import { HumanMessage } from '@langchain/core/messages';
4
- import type * as t from '@/types';
5
- import {
6
- ChatModelStreamHandler,
7
- LLMStreamHandler,
8
- } from '@/stream';
9
- import { CollaborativeProcessor, Member } from '@/collab_design_v5';
10
- import { EmailNotifier, FileManager, UniqueIDGenerator, DatetimeFormatter } from '@/tools/hackathon_tools';
11
- import { supervisorPrompt } from '@/prompts/collab';
12
- import { GraphEvents, Providers } from '@/common';
13
- import fs from 'fs';
14
- import util from 'util';
15
-
16
- dotenv.config();
17
-
18
- // Create a write stream
19
- const logFile = fs.createWriteStream('hackathon_event.log', { flags: 'a' });
20
-
21
- // Redirect console.log and console.error
22
- const originalConsoleLog = console.log;
23
- const originalConsoleError = console.error;
24
-
25
- console.log = function(...args) {
26
- logFile.write(util.format.apply(null, args) + '\n');
27
- originalConsoleLog.apply(console, args);
28
- };
29
-
30
- console.error = function(...args) {
31
- logFile.write(util.format.apply(null, args) + '\n');
32
- originalConsoleError.apply(console, args);
33
- };
34
-
35
- // Redirect process.stdout.write
36
- const originalStdoutWrite = process.stdout.write;
37
- process.stdout.write = function(chunk: string | Uint8Array, encoding?: BufferEncoding, callback?: (error: Error | null | undefined) => void): boolean {
38
- logFile.write(chunk, encoding);
39
- return originalStdoutWrite.apply(process.stdout, [chunk, encoding, callback]);
40
- } as any;
41
-
42
- // Redirect process.stderr.write
43
- const originalStderrWrite = process.stderr.write;
44
- process.stderr.write = function(chunk: string | Uint8Array, encoding?: BufferEncoding, callback?: (error: Error | null | undefined) => void): boolean {
45
- logFile.write(chunk, encoding);
46
- return originalStderrWrite.apply(process.stderr, [chunk, encoding, callback]);
47
- } as any;
48
-
49
- async function testCollaborativeHackathonEvent() {
50
- const customHandlers = {
51
- [GraphEvents.LLM_STREAM]: new LLMStreamHandler(),
52
- [GraphEvents.CHAT_MODEL_STREAM]: new ChatModelStreamHandler(),
53
- [GraphEvents.LLM_START]: {
54
- handle: (event: string, data: t.StreamEventData) => {
55
- console.log('LLM Start:', event);
56
- }
57
- },
58
- [GraphEvents.LLM_END]: {
59
- handle: (event: string, data: t.streamEventData) => {
60
- console.log('LLM End:', event);
61
- }
62
- },
63
- [GraphEvents.CHAT_MODEL_END]: {
64
- handle: (event: string, data: t.StreamEventData) => {
65
- console.log('Chat Model End:', event);
66
- }
67
- },
68
- [GraphEvents.TOOL_END]: {
69
- handle: (event: string, data: t.StreamEventData) => {
70
- console.log('Tool End:', event);
71
- console.dir(data, { depth: null });
72
- }
73
- },
74
- };
75
-
76
- // Define the collaborative members
77
- const members: Member[] = [
78
- {
79
- name: 'email_notifier',
80
- systemPrompt: 'You are responsible for sending out email notifications regarding the hackathon event.',
81
- tools: [EmailNotifier],
82
- llmConfig: {
83
- provider: Providers.OPENAI,
84
- modelName: 'gpt-4o',
85
- temperature: 0,
86
- },
87
- },
88
- {
89
- name: 'file_manager',
90
- systemPrompt: 'You manage the file storage for hackathon materials. You can create, read, and delete files as needed.',
91
- tools: [FileManager],
92
- llmConfig: {
93
- provider: Providers.OPENAI,
94
- modelName: 'gpt-4o',
95
- temperature: 0.2,
96
- },
97
- },
98
- {
99
- name: 'unique_id_generator',
100
- systemPrompt: 'You generate unique IDs for participants and teams to ensure everyone has a unique identifier.',
101
- tools: [UniqueIDGenerator],
102
- llmConfig: {
103
- provider: Providers.OPENAI,
104
- modelName: 'gpt-4o',
105
- temperature: 0.2,
106
- },
107
- },
108
- {
109
- name: 'datetime_formatter',
110
- systemPrompt: 'You format and manipulate dates and times for scheduling purposes.',
111
- tools: [DatetimeFormatter],
112
- llmConfig: {
113
- provider: Providers.OPENAI,
114
- modelName: 'gpt-4o',
115
- temperature: 0.2,
116
- },
117
- },
118
- ];
119
-
120
- const supervisorConfig = {
121
- systemPrompt: supervisorPrompt,
122
- llmConfig: {
123
- provider: Providers.OPENAI,
124
- modelName: 'gpt-4o',
125
- temperature: 0,
126
- },
127
- };
128
-
129
- const collaborativeProcessor = new CollaborativeProcessor(members, supervisorConfig, customHandlers);
130
- await collaborativeProcessor.initialize();
131
-
132
- const config = {
133
- configurable: { thread_id: 'collaborative-hackathon-planning-1' },
134
- streamMode: 'events',
135
- version: 'v2',
136
- };
137
-
138
- console.log('\nCollaborative Test: Plan a hackathon event');
139
-
140
- const input = {
141
- messages: [new HumanMessage('Organize a hackathon event including sending invitations, managing files, generating unique IDs, and scheduling sessions.')],
142
- };
143
-
144
- await collaborativeProcessor.processStream(input, config);
145
- }
146
-
147
- async function main() {
148
- await testCollaborativeHackathonEvent();
149
- }
150
-
151
- main().catch(console.error).finally(() => {
152
- logFile.end();
153
- });
@@ -1,153 +0,0 @@
1
- // src/main_collab_space_mission.ts
2
- import dotenv from 'dotenv';
3
- import { HumanMessage } from '@langchain/core/messages';
4
- import type * as t from '@/types';
5
- import {
6
- ChatModelStreamHandler,
7
- LLMStreamHandler,
8
- } from '@/stream';
9
- import { CollaborativeProcessor, Member } from '@/collab_design_v5';
10
- import { NasaAPODTool, ISSLocationTool, LaunchScheduleTool, MissionIDGenerator } from '@/tools/space_mission_tools';
11
- import { supervisorPrompt } from '@/prompts/collab';
12
- import { GraphEvents, Providers } from '@/common';
13
- import fs from 'fs';
14
- import util from 'util';
15
-
16
- dotenv.config();
17
-
18
- // Create a write stream
19
- const logFile = fs.createWriteStream('space_mission.log', { flags: 'a' });
20
-
21
- // Redirect console.log and console.error
22
- const originalConsoleLog = console.log;
23
- const originalConsoleError = console.error;
24
-
25
- console.log = function(...args) {
26
- logFile.write(util.format.apply(null, args) + '\n');
27
- originalConsoleLog.apply(console, args);
28
- };
29
-
30
- console.error = function(...args) {
31
- logFile.write(util.format.apply(null, args) + '\n');
32
- originalConsoleError.apply(console, args);
33
- };
34
-
35
- // Redirect process.stdout.write
36
- const originalStdoutWrite = process.stdout.write;
37
- process.stdout.write = function(chunk: string | Uint8Array, encoding?: BufferEncoding, callback?: (error: Error | null | undefined) => void): boolean {
38
- logFile.write(chunk, encoding);
39
- return originalStdoutWrite.apply(process.stdout, [chunk, encoding, callback]);
40
- } as any;
41
-
42
- // Redirect process.stderr.write
43
- const originalStderrWrite = process.stderr.write;
44
- process.stderr.write = function(chunk: string | Uint8Array, encoding?: BufferEncoding, callback?: (error: Error | null | undefined) => void): boolean {
45
- logFile.write(chunk, encoding);
46
- return originalStderrWrite.apply(process.stderr, [chunk, encoding, callback]);
47
- } as any;
48
-
49
- async function testCollaborativeSpaceMission() {
50
- const customHandlers = {
51
- [GraphEvents.LLM_STREAM]: new LLMStreamHandler(),
52
- [GraphEvents.CHAT_MODEL_STREAM]: new ChatModelStreamHandler(),
53
- [GraphEvents.LLM_START]: {
54
- handle: (event: string, data: t.StreamEventData) => {
55
- console.log('LLM Start:', event);
56
- }
57
- },
58
- [GraphEvents.LLM_END]: {
59
- handle: (event: string, data: t.StreamEventData) => {
60
- console.log('LLM End:', event);
61
- }
62
- },
63
- [GraphEvents.CHAT_MODEL_END]: {
64
- handle: (event: string, data: t.StreamEventData) => {
65
- console.log('Chat Model End:', event);
66
- }
67
- },
68
- [GraphEvents.TOOL_END]: {
69
- handle: (event: string, data: t.StreamEventData) => {
70
- console.log('Tool End:', event);
71
- console.dir(data, { depth: null });
72
- }
73
- },
74
- };
75
-
76
- // Define the collaborative members
77
- const members: Member[] = [
78
- {
79
- name: 'astronomy_expert',
80
- systemPrompt: 'You are an astronomy expert. Use the NASA APOD tool to provide interesting astronomical information for the mission.',
81
- tools: [NasaAPODTool],
82
- llmConfig: {
83
- provider: Providers.OPENAI,
84
- modelName: 'gpt-4o',
85
- temperature: 0,
86
- },
87
- },
88
- {
89
- name: 'iss_tracker',
90
- systemPrompt: 'You track the International Space Station. Use the ISS Location tool to provide updates on its position.',
91
- tools: [ISSLocationTool],
92
- llmConfig: {
93
- provider: Providers.OPENAI,
94
- modelName: 'gpt-4o',
95
- temperature: 0.2,
96
- },
97
- },
98
- {
99
- name: 'launch_coordinator',
100
- systemPrompt: 'You coordinate space launches. Use the Launch Schedule tool to plan mission launches around other scheduled events.',
101
- tools: [LaunchScheduleTool],
102
- llmConfig: {
103
- provider: Providers.OPENAI,
104
- modelName: 'gpt-4o',
105
- temperature: 0.2,
106
- },
107
- },
108
- {
109
- name: 'mission_id_assigner',
110
- systemPrompt: 'You assign unique IDs to space missions. Use the Mission ID Generator to create identifiers for new missions.',
111
- tools: [MissionIDGenerator],
112
- llmConfig: {
113
- provider: Providers.OPENAI,
114
- modelName: 'gpt-4o',
115
- temperature: 0.2,
116
- },
117
- },
118
- ];
119
-
120
- const supervisorConfig = {
121
- systemPrompt: supervisorPrompt,
122
- llmConfig: {
123
- provider: Providers.OPENAI,
124
- modelName: 'gpt-4o',
125
- temperature: 0,
126
- },
127
- };
128
-
129
- const collaborativeProcessor = new CollaborativeProcessor(members, supervisorConfig, customHandlers);
130
- await collaborativeProcessor.initialize();
131
-
132
- const config = {
133
- configurable: { thread_id: 'collaborative-space-mission-planning-1' },
134
- streamMode: 'events',
135
- version: 'v2',
136
- };
137
-
138
- console.log('\nCollaborative Test: Plan a space mission');
139
-
140
- const input = {
141
- messages: [new HumanMessage('Plan a space mission to observe a newly discovered exoplanet. Consider astronomical events, ISS positioning, launch schedules, and assign a unique mission ID.')],
142
- };
143
-
144
- await collaborativeProcessor.processStream(input, config);
145
- }
146
-
147
- async function main() {
148
- await testCollaborativeSpaceMission();
149
- }
150
-
151
- main().catch(console.error).finally(() => {
152
- logFile.end();
153
- });
@@ -1,210 +0,0 @@
1
- // src/main_philosophical_cafe.ts
2
- import dotenv from 'dotenv';
3
- import { HumanMessage } from '@langchain/core/messages';
4
- import type * as t from '@/types';
5
- import {
6
- ChatModelStreamHandler,
7
- LLMStreamHandler,
8
- } from '@/stream';
9
- import { CollaborativeProcessor, Member } from '@/collab_design_v5';
10
- import { GraphEvents, Providers } from '@/common';
11
- import fs from 'fs';
12
- import util from 'util';
13
- import { DynamicStructuredTool } from '@langchain/core/tools';
14
- import { z } from 'zod';
15
-
16
- dotenv.config();
17
-
18
- // Create a write stream
19
- const logFile = fs.createWriteStream('philosophical_cafe.log', { flags: 'a' });
20
-
21
- // Redirect console.log and console.error
22
- const originalConsoleLog = console.log;
23
- const originalConsoleError = console.error;
24
-
25
- console.log = function(...args) {
26
- logFile.write(util.format.apply(null, args) + '\n');
27
- originalConsoleLog.apply(console, args);
28
- };
29
-
30
- console.error = function(...args) {
31
- logFile.write(util.format.apply(null, args) + '\n');
32
- originalConsoleError.apply(console, args);
33
- };
34
-
35
- // Redirect process.stdout.write
36
- const originalStdoutWrite = process.stdout.write;
37
- process.stdout.write = function(chunk: string | Uint8Array, encoding?: BufferEncoding, callback?: (error: Error | null | undefined) => void): boolean {
38
- logFile.write(chunk, encoding);
39
- return originalStdoutWrite.apply(process.stdout, [chunk, encoding, callback]);
40
- } as any;
41
-
42
- // Redirect process.stderr.write
43
- const originalStderrWrite = process.stderr.write;
44
- process.stderr.write = function(chunk: string | Uint8Array, encoding?: BufferEncoding, callback?: (error: Error | null | undefined) => void): boolean {
45
- logFile.write(chunk, encoding);
46
- return originalStderrWrite.apply(process.stderr, [chunk, encoding, callback]);
47
- } as any;
48
-
49
- // Define tools for thinking and speaking
50
- const ThinkTool = new DynamicStructuredTool({
51
- name: 'think',
52
- description: 'Think about the current topic or situation.',
53
- schema: z.object({
54
- thought: z.string().describe('The character\'s internal thought'),
55
- }),
56
- func: async ({ thought }) => {
57
- return `[Thinking: ${thought}]`;
58
- }
59
- });
60
-
61
- const SpeakTool = new DynamicStructuredTool({
62
- name: 'speak',
63
- description: 'Say something out loud in the conversation.',
64
- schema: z.object({
65
- speech: z.string().describe('What the character says out loud'),
66
- }),
67
- func: async ({ speech }) => {
68
- return speech;
69
- }
70
- });
71
-
72
- async function testPhilosophicalCafe() {
73
- const customHandlers = {
74
- [GraphEvents.LLM_STREAM]: new LLMStreamHandler(),
75
- [GraphEvents.CHAT_MODEL_STREAM]: new ChatModelStreamHandler(),
76
- [GraphEvents.LLM_START]: {
77
- handle: (event: string, data: t.StreamEventData) => {
78
- console.log('LLM Start:', event);
79
- }
80
- },
81
- [GraphEvents.LLM_END]: {
82
- handle: (event: string, data: t.StreamEventData) => {
83
- console.log('LLM End:', event);
84
- }
85
- },
86
- [GraphEvents.CHAT_MODEL_END]: {
87
- handle: (event: string, data: t.StreamEventData) => {
88
- console.log('Chat Model End:', event);
89
- }
90
- },
91
- [GraphEvents.TOOL_END]: {
92
- handle: (event: string, data: t.StreamEventData) => {
93
- console.log('Tool End:', event);
94
- console.dir(data, { depth: null });
95
- }
96
- },
97
- };
98
-
99
- // Define the fictional cafe patrons
100
- const members: Member[] = [
101
- {
102
- name: 'Luna',
103
- systemPrompt: 'You are Luna, a free-spirited artist with a penchant for existential questions. You often challenge conventional wisdom and believe in the power of individual expression. Speak casually and use artistic metaphors. Always either think or speak each turn, sometimes both.',
104
- tools: [ThinkTool, SpeakTool],
105
- llmConfig: {
106
- provider: Providers.BEDROCK,
107
- model: 'anthropic.claude-3-sonnet-20240229-v1:0',
108
- region: process.env.BEDROCK_AWS_REGION,
109
- credentials: {
110
- accessKeyId: process.env.BEDROCK_AWS_ACCESS_KEY_ID!,
111
- secretAccessKey: process.env.BEDROCK_AWS_SECRET_ACCESS_KEY!,
112
- },
113
- },
114
- },
115
- {
116
- name: 'Zephyr',
117
- systemPrompt: 'You are Zephyr, a tech-savvy futurist who believes in the potential of technology to solve human problems. You\'re optimistic but also concerned about ethical implications. Use tech jargon and futuristic concepts in your speech. Always either think or speak each turn, sometimes both.',
118
- tools: [ThinkTool, SpeakTool],
119
- llmConfig: {
120
- provider: Providers.BEDROCK,
121
- model: 'anthropic.claude-3-sonnet-20240229-v1:0',
122
- region: process.env.BEDROCK_AWS_REGION,
123
- credentials: {
124
- accessKeyId: process.env.BEDROCK_AWS_ACCESS_KEY_ID!,
125
- secretAccessKey: process.env.BEDROCK_AWS_SECRET_ACCESS_KEY!,
126
- },
127
- },
128
- },
129
- {
130
- name: 'Sage',
131
- systemPrompt: 'You are Sage, a retired professor with a dry sense of humor. You\'re skeptical of grand theories and prefer practical wisdom. Your speech is peppered with historical references and gentle sarcasm. Always either think or speak each turn, sometimes both.',
132
- tools: [ThinkTool, SpeakTool],
133
- llmConfig: {
134
- provider: Providers.BEDROCK,
135
- model: 'anthropic.claude-3-sonnet-20240229-v1:0',
136
- region: process.env.BEDROCK_AWS_REGION,
137
- credentials: {
138
- accessKeyId: process.env.BEDROCK_AWS_ACCESS_KEY_ID!,
139
- secretAccessKey: process.env.BEDROCK_AWS_SECRET_ACCESS_KEY!,
140
- },
141
- },
142
- },
143
- {
144
- name: 'Nova',
145
- systemPrompt: 'You are Nova, an enthusiastic environmental activist with a background in quantum physics. You see interconnections everywhere and often draw parallels between natural systems and human behavior. Your speech is energetic and filled with scientific analogies. Always either think or speak each turn, sometimes both.',
146
- tools: [ThinkTool, SpeakTool],
147
- llmConfig: {
148
- provider: Providers.BEDROCK,
149
- model: 'anthropic.claude-3-sonnet-20240229-v1:0',
150
- region: process.env.BEDROCK_AWS_REGION,
151
- credentials: {
152
- accessKeyId: process.env.BEDROCK_AWS_ACCESS_KEY_ID!,
153
- secretAccessKey: process.env.BEDROCK_AWS_SECRET_ACCESS_KEY!,
154
- },
155
- },
156
- },
157
- ];
158
-
159
- const supervisorPrompt = `
160
- You are the author orchestrating a casual, candid conversation between {members} at a local cafe. Your role is to guide the flow of the conversation.
161
-
162
- Consider the following:
163
- 1. Encourage natural, overlapping dialogue. Characters can interrupt or talk over each other.
164
- 2. Ensure all characters are actively participating by either speaking or thinking in each turn.
165
- 3. Introduce unexpected elements or topics to keep the conversation lively and unpredictable.
166
- 4. Allow for moments of humor, disagreement, or sudden insights.
167
- 5. Keep the tone casual and fitting for a cafe setting.
168
- 6. Multiple tools can be run at once.
169
-
170
- Remember, you're crafting a scene, not moderating a debate. Let the characters' personalities shine through their interactions.
171
- `;
172
-
173
- const supervisorConfig = {
174
- systemPrompt: supervisorPrompt,
175
- llmConfig: {
176
- provider: Providers.BEDROCK,
177
- model: 'anthropic.claude-3-sonnet-20240229-v1:0',
178
- region: process.env.BEDROCK_AWS_REGION,
179
- credentials: {
180
- accessKeyId: process.env.BEDROCK_AWS_ACCESS_KEY_ID!,
181
- secretAccessKey: process.env.BEDROCK_AWS_SECRET_ACCESS_KEY!,
182
- },
183
- },
184
- };
185
-
186
- const collaborativeProcessor = new CollaborativeProcessor(members, supervisorConfig, customHandlers);
187
- await collaborativeProcessor.initialize();
188
-
189
- const config = {
190
- configurable: { thread_id: 'philosophical-cafe-1' },
191
- streamMode: 'events',
192
- version: 'v2',
193
- };
194
-
195
- console.log('\nCafe: A Chance Encounter');
196
-
197
- const input = {
198
- messages: [new HumanMessage('It\'s a rainy Tuesday afternoon at a Cafe. Luna, Zephyr, Sage, and Nova find themselves sharing a table due to the crowded conditions. The aroma of coffee fills the air as a heated debate about the nature of reality unfolds at a nearby table. What happens next?')],
199
- };
200
-
201
- await collaborativeProcessor.processStream(input, config);
202
- }
203
-
204
- async function main() {
205
- await testPhilosophicalCafe();
206
- }
207
-
208
- main().catch(console.error).finally(() => {
209
- logFile.end();
210
- });