@dxos/assistant 0.8.2-main.fbd8ed0 → 0.8.2-staging.4d6ad0f

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 (289) hide show
  1. package/dist/lib/browser/index.mjs +1983 -64
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/node/index.cjs +1976 -63
  5. package/dist/lib/node/index.cjs.map +4 -4
  6. package/dist/lib/node/meta.json +1 -1
  7. package/dist/lib/node-esm/index.mjs +1984 -64
  8. package/dist/lib/node-esm/index.mjs.map +4 -4
  9. package/dist/lib/node-esm/meta.json +1 -1
  10. package/dist/types/{src/bin → bin}/chat.d.ts.map +1 -1
  11. package/dist/types/src/blueprint/blueprint.d.ts +79 -0
  12. package/dist/types/src/blueprint/blueprint.d.ts.map +1 -0
  13. package/dist/types/src/blueprint/blueprint.test.d.ts +2 -0
  14. package/dist/types/src/blueprint/blueprint.test.d.ts.map +1 -0
  15. package/dist/types/src/blueprint/index.d.ts +4 -0
  16. package/dist/types/src/blueprint/index.d.ts.map +1 -0
  17. package/dist/types/src/blueprint/logger.d.ts +3 -0
  18. package/dist/types/src/blueprint/logger.d.ts.map +1 -0
  19. package/dist/types/src/{ai-service/parser.d.ts → blueprint/machine.d.ts} +46 -68
  20. package/dist/types/src/blueprint/machine.d.ts.map +1 -0
  21. package/dist/types/src/blueprint/test-data.d.ts +3 -0
  22. package/dist/types/src/blueprint/test-data.d.ts.map +1 -0
  23. package/dist/types/src/extraction/extraction-llm-function/extraction-llm-function.d.ts +4 -0
  24. package/dist/types/src/extraction/extraction-llm-function/extraction-llm-function.d.ts.map +1 -0
  25. package/dist/types/src/extraction/extraction-llm-function/extraction-llm-function.test.d.ts +2 -0
  26. package/dist/types/src/extraction/extraction-llm-function/extraction-llm-function.test.d.ts.map +1 -0
  27. package/dist/types/src/extraction/extraction-llm-function/index.d.ts +2 -0
  28. package/dist/types/src/extraction/extraction-llm-function/index.d.ts.map +1 -0
  29. package/dist/types/src/extraction/extraction-ner-function/extraction-ner-function.d.ts +210 -0
  30. package/dist/types/src/extraction/extraction-ner-function/extraction-ner-function.d.ts.map +1 -0
  31. package/dist/types/src/extraction/extraction-ner-function/extraction-ner-function.test.d.ts +2 -0
  32. package/dist/types/src/extraction/extraction-ner-function/extraction-ner-function.test.d.ts.map +1 -0
  33. package/dist/types/src/extraction/extraction-ner-function/index.d.ts +3 -0
  34. package/dist/types/src/extraction/extraction-ner-function/index.d.ts.map +1 -0
  35. package/dist/types/src/extraction/extraction-ner-function/named-entity-recognition.d.ts +14 -0
  36. package/dist/types/src/extraction/extraction-ner-function/named-entity-recognition.d.ts.map +1 -0
  37. package/dist/types/src/extraction/extraction-ner-function/named-entity-recognition.test.d.ts +2 -0
  38. package/dist/types/src/extraction/extraction-ner-function/named-entity-recognition.test.d.ts.map +1 -0
  39. package/dist/types/src/extraction/extraction.d.ts +242 -0
  40. package/dist/types/src/extraction/extraction.d.ts.map +1 -0
  41. package/dist/types/src/extraction/index.d.ts +5 -0
  42. package/dist/types/src/extraction/index.d.ts.map +1 -0
  43. package/dist/types/src/extraction/quotes.d.ts +15 -0
  44. package/dist/types/src/extraction/quotes.d.ts.map +1 -0
  45. package/dist/types/src/extraction/quotes.test.d.ts +2 -0
  46. package/dist/types/src/extraction/quotes.test.d.ts.map +1 -0
  47. package/dist/types/src/index.d.ts +4 -2
  48. package/dist/types/src/index.d.ts.map +1 -1
  49. package/dist/types/src/research/exa.d.ts +7 -0
  50. package/dist/types/src/research/exa.d.ts.map +1 -0
  51. package/dist/types/src/research/graph.d.ts +39 -0
  52. package/dist/types/src/research/graph.d.ts.map +1 -0
  53. package/dist/types/src/research/graph.test.d.ts +2 -0
  54. package/dist/types/src/research/graph.test.d.ts.map +1 -0
  55. package/dist/types/src/research/index.d.ts +4 -0
  56. package/dist/types/src/research/index.d.ts.map +1 -0
  57. package/dist/types/src/research/research.d.ts +10 -0
  58. package/dist/types/src/research/research.d.ts.map +1 -0
  59. package/dist/types/src/research/research.test.d.ts.map +1 -0
  60. package/dist/types/src/session/index.d.ts +0 -1
  61. package/dist/types/src/session/index.d.ts.map +1 -1
  62. package/dist/types/src/session/session.d.ts +47 -22
  63. package/dist/types/src/session/session.d.ts.map +1 -1
  64. package/dist/types/src/session/version-pin.d.ts +3 -4
  65. package/dist/types/src/session/version-pin.d.ts.map +1 -1
  66. package/dist/types/src/summarization/summarization.test.d.ts +2 -0
  67. package/dist/types/src/summarization/summarization.test.d.ts.map +1 -0
  68. package/dist/types/src/testing/exa-search-1748337321991.d.ts +38 -0
  69. package/dist/types/src/testing/exa-search-1748337321991.d.ts.map +1 -0
  70. package/dist/types/src/testing/exa-search-1748337331526.d.ts +37 -0
  71. package/dist/types/src/testing/exa-search-1748337331526.d.ts.map +1 -0
  72. package/dist/types/src/testing/exa-search-1748337344119.d.ts +58 -0
  73. package/dist/types/src/testing/exa-search-1748337344119.d.ts.map +1 -0
  74. package/dist/types/src/testing/index.d.ts +2 -7
  75. package/dist/types/src/testing/index.d.ts.map +1 -1
  76. package/dist/types/src/types.d.ts +3 -0
  77. package/dist/types/src/types.d.ts.map +1 -0
  78. package/package.json +22 -38
  79. package/src/blueprint/blueprint.test.ts +142 -0
  80. package/src/blueprint/blueprint.ts +95 -0
  81. package/src/blueprint/index.ts +7 -0
  82. package/src/blueprint/logger.ts +66 -0
  83. package/src/blueprint/machine.ts +208 -0
  84. package/src/blueprint/test-data.ts +55 -0
  85. package/src/extraction/extraction-llm-function/extraction-llm-function.test.ts +95 -0
  86. package/src/extraction/extraction-llm-function/extraction-llm-function.ts +64 -0
  87. package/src/extraction/extraction-llm-function/index.ts +5 -0
  88. package/src/extraction/extraction-llm-function/instructions.tpl +28 -0
  89. package/src/extraction/extraction-ner-function/extraction-ner-function.test.ts +115 -0
  90. package/src/extraction/extraction-ner-function/extraction-ner-function.ts +54 -0
  91. package/src/extraction/extraction-ner-function/index.ts +6 -0
  92. package/src/extraction/extraction-ner-function/named-entity-recognition.test.ts +94 -0
  93. package/src/extraction/extraction-ner-function/named-entity-recognition.ts +97 -0
  94. package/src/extraction/extraction.ts +75 -0
  95. package/src/extraction/index.ts +8 -0
  96. package/src/extraction/quotes.test.ts +27 -0
  97. package/src/extraction/quotes.ts +57 -0
  98. package/src/index.ts +4 -4
  99. package/src/research/exa.ts +100 -0
  100. package/src/research/graph.test.ts +15 -0
  101. package/src/research/graph.ts +291 -0
  102. package/src/research/index.ts +7 -0
  103. package/src/research/instructions-research.tpl +97 -0
  104. package/src/research/research.test.ts +189 -0
  105. package/src/research/research.ts +89 -0
  106. package/src/session/index.ts +0 -1
  107. package/src/session/session.test.ts +7 -7
  108. package/src/session/session.ts +46 -19
  109. package/src/session/version-pin.ts +2 -3
  110. package/src/summarization/summarization.test.ts +216 -0
  111. package/src/testing/exa-search-1748337321991.ts +131 -0
  112. package/src/testing/exa-search-1748337331526.ts +144 -0
  113. package/src/testing/exa-search-1748337344119.ts +133 -0
  114. package/src/testing/index.ts +8 -8
  115. package/src/types.ts +8 -0
  116. package/src/typings.d.ts +8 -0
  117. package/dist/lib/browser/chunk-B4HAWUFW.mjs +0 -2786
  118. package/dist/lib/browser/chunk-B4HAWUFW.mjs.map +0 -7
  119. package/dist/lib/browser/testing/index.mjs +0 -658
  120. package/dist/lib/browser/testing/index.mjs.map +0 -7
  121. package/dist/lib/node/chunk-NOB7CIIC.cjs +0 -2791
  122. package/dist/lib/node/chunk-NOB7CIIC.cjs.map +0 -7
  123. package/dist/lib/node/testing/index.cjs +0 -672
  124. package/dist/lib/node/testing/index.cjs.map +0 -7
  125. package/dist/lib/node-esm/chunk-SAWYU3V5.mjs +0 -2788
  126. package/dist/lib/node-esm/chunk-SAWYU3V5.mjs.map +0 -7
  127. package/dist/lib/node-esm/testing/index.mjs +0 -659
  128. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  129. package/dist/types/src/ai-service/client.test.d.ts +0 -2
  130. package/dist/types/src/ai-service/client.test.d.ts.map +0 -1
  131. package/dist/types/src/ai-service/defs.d.ts +0 -9
  132. package/dist/types/src/ai-service/defs.d.ts.map +0 -1
  133. package/dist/types/src/ai-service/edge-client.d.ts +0 -18
  134. package/dist/types/src/ai-service/edge-client.d.ts.map +0 -1
  135. package/dist/types/src/ai-service/index.d.ts +0 -10
  136. package/dist/types/src/ai-service/index.d.ts.map +0 -1
  137. package/dist/types/src/ai-service/message-collector.d.ts +0 -82
  138. package/dist/types/src/ai-service/message-collector.d.ts.map +0 -1
  139. package/dist/types/src/ai-service/ollama-client.d.ts +0 -43
  140. package/dist/types/src/ai-service/ollama-client.d.ts.map +0 -1
  141. package/dist/types/src/ai-service/parser.d.ts.map +0 -1
  142. package/dist/types/src/ai-service/service.d.ts +0 -25
  143. package/dist/types/src/ai-service/service.d.ts.map +0 -1
  144. package/dist/types/src/ai-service/stream.d.ts +0 -40
  145. package/dist/types/src/ai-service/stream.d.ts.map +0 -1
  146. package/dist/types/src/ai-service/stream.test.d.ts +0 -2
  147. package/dist/types/src/ai-service/stream.test.d.ts.map +0 -1
  148. package/dist/types/src/ai-service/testing/index.d.ts +0 -3
  149. package/dist/types/src/ai-service/testing/index.d.ts.map +0 -1
  150. package/dist/types/src/ai-service/testing/mock.d.ts +0 -11
  151. package/dist/types/src/ai-service/testing/mock.d.ts.map +0 -1
  152. package/dist/types/src/ai-service/testing/test-stream.d.ts +0 -7
  153. package/dist/types/src/ai-service/testing/test-stream.d.ts.map +0 -1
  154. package/dist/types/src/ai-service/transform.d.ts +0 -27
  155. package/dist/types/src/ai-service/transform.d.ts.map +0 -1
  156. package/dist/types/src/ai-service/types.d.ts +0 -210
  157. package/dist/types/src/ai-service/types.d.ts.map +0 -1
  158. package/dist/types/src/ai-service/util/index.d.ts +0 -2
  159. package/dist/types/src/ai-service/util/index.d.ts.map +0 -1
  160. package/dist/types/src/ai-service/util/sse.d.ts +0 -39
  161. package/dist/types/src/ai-service/util/sse.d.ts.map +0 -1
  162. package/dist/types/src/experimental/conversation/conversation.d.ts +0 -61
  163. package/dist/types/src/experimental/conversation/conversation.d.ts.map +0 -1
  164. package/dist/types/src/experimental/conversation/conversation.test.d.ts +0 -2
  165. package/dist/types/src/experimental/conversation/conversation.test.d.ts.map +0 -1
  166. package/dist/types/src/experimental/conversation/index.d.ts +0 -2
  167. package/dist/types/src/experimental/conversation/index.d.ts.map +0 -1
  168. package/dist/types/src/experimental/conversation/types.d.ts +0 -78
  169. package/dist/types/src/experimental/conversation/types.d.ts.map +0 -1
  170. package/dist/types/src/experimental/cypher/ast.d.ts +0 -56
  171. package/dist/types/src/experimental/cypher/ast.d.ts.map +0 -1
  172. package/dist/types/src/experimental/cypher/combinators.d.ts +0 -14
  173. package/dist/types/src/experimental/cypher/combinators.d.ts.map +0 -1
  174. package/dist/types/src/experimental/cypher/combinators.test.d.ts +0 -2
  175. package/dist/types/src/experimental/cypher/combinators.test.d.ts.map +0 -1
  176. package/dist/types/src/experimental/cypher/echo-data-source.d.ts +0 -16
  177. package/dist/types/src/experimental/cypher/echo-data-source.d.ts.map +0 -1
  178. package/dist/types/src/experimental/cypher/execution-plan.d.ts +0 -49
  179. package/dist/types/src/experimental/cypher/execution-plan.d.ts.map +0 -1
  180. package/dist/types/src/experimental/cypher/execution-plan.test.d.ts +0 -2
  181. package/dist/types/src/experimental/cypher/execution-plan.test.d.ts.map +0 -1
  182. package/dist/types/src/experimental/cypher/index.d.ts +0 -5
  183. package/dist/types/src/experimental/cypher/index.d.ts.map +0 -1
  184. package/dist/types/src/experimental/cypher/parjs.d.ts +0 -4
  185. package/dist/types/src/experimental/cypher/parjs.d.ts.map +0 -1
  186. package/dist/types/src/experimental/cypher/parser.d.ts +0 -6
  187. package/dist/types/src/experimental/cypher/parser.d.ts.map +0 -1
  188. package/dist/types/src/experimental/cypher/query-executor.d.ts +0 -26
  189. package/dist/types/src/experimental/cypher/query-executor.d.ts.map +0 -1
  190. package/dist/types/src/experimental/cypher/query-executor.test.d.ts +0 -2
  191. package/dist/types/src/experimental/cypher/query-executor.test.d.ts.map +0 -1
  192. package/dist/types/src/experimental/cypher/schema.d.ts +0 -12
  193. package/dist/types/src/experimental/cypher/schema.d.ts.map +0 -1
  194. package/dist/types/src/experimental/cypher/schema.test.d.ts +0 -2
  195. package/dist/types/src/experimental/cypher/schema.test.d.ts.map +0 -1
  196. package/dist/types/src/experimental/index.d.ts +0 -3
  197. package/dist/types/src/experimental/index.d.ts.map +0 -1
  198. package/dist/types/src/experimental/ner/ner.test.d.ts +0 -2
  199. package/dist/types/src/experimental/ner/ner.test.d.ts.map +0 -1
  200. package/dist/types/src/experimental/research/exa.d.ts +0 -6
  201. package/dist/types/src/experimental/research/exa.d.ts.map +0 -1
  202. package/dist/types/src/experimental/research/research.test.d.ts.map +0 -1
  203. package/dist/types/src/session/tools.d.ts +0 -18
  204. package/dist/types/src/session/tools.d.ts.map +0 -1
  205. package/dist/types/src/testing/artifacts.test.d.ts +0 -1
  206. package/dist/types/src/testing/artifacts.test.d.ts.map +0 -1
  207. package/dist/types/src/testing/data.d.ts +0 -2
  208. package/dist/types/src/testing/data.d.ts.map +0 -1
  209. package/dist/types/src/testing/defs.d.ts +0 -5
  210. package/dist/types/src/testing/defs.d.ts.map +0 -1
  211. package/dist/types/src/testing/logger.d.ts +0 -12
  212. package/dist/types/src/testing/logger.d.ts.map +0 -1
  213. package/dist/types/src/testing/object-extraction.test.d.ts +0 -1
  214. package/dist/types/src/testing/object-extraction.test.d.ts.map +0 -1
  215. package/dist/types/src/testing/ollama.d.ts +0 -6
  216. package/dist/types/src/testing/ollama.d.ts.map +0 -1
  217. package/dist/types/src/testing/printer.d.ts +0 -6
  218. package/dist/types/src/testing/printer.d.ts.map +0 -1
  219. package/dist/types/src/testing/query-promts.d.ts +0 -5
  220. package/dist/types/src/testing/query-promts.d.ts.map +0 -1
  221. package/dist/types/src/testing/query.test.d.ts +0 -2
  222. package/dist/types/src/testing/query.test.d.ts.map +0 -1
  223. package/dist/types/src/testing/test-data.d.ts +0 -29
  224. package/dist/types/src/testing/test-data.d.ts.map +0 -1
  225. package/dist/types/src/testing/test-schema.d.ts +0 -52
  226. package/dist/types/src/testing/test-schema.d.ts.map +0 -1
  227. package/dist/types/src/util/index.d.ts +0 -2
  228. package/dist/types/src/util/index.d.ts.map +0 -1
  229. package/dist/types/src/util/trim.d.ts +0 -5
  230. package/dist/types/src/util/trim.d.ts.map +0 -1
  231. package/src/ai-service/client.test.ts +0 -247
  232. package/src/ai-service/defs.ts +0 -39
  233. package/src/ai-service/edge-client.ts +0 -60
  234. package/src/ai-service/index.ts +0 -13
  235. package/src/ai-service/message-collector.ts +0 -84
  236. package/src/ai-service/ollama-client.ts +0 -506
  237. package/src/ai-service/parser.ts +0 -369
  238. package/src/ai-service/service.ts +0 -31
  239. package/src/ai-service/stream.test.ts +0 -125
  240. package/src/ai-service/stream.ts +0 -118
  241. package/src/ai-service/testing/index.ts +0 -6
  242. package/src/ai-service/testing/mock.ts +0 -30
  243. package/src/ai-service/testing/test-stream.ts +0 -93
  244. package/src/ai-service/transform.ts +0 -121
  245. package/src/ai-service/types.ts +0 -112
  246. package/src/ai-service/util/index.ts +0 -5
  247. package/src/ai-service/util/sse.ts +0 -341
  248. package/src/bin/chat.ts +0 -79
  249. package/src/experimental/conversation/conversation.test.ts +0 -73
  250. package/src/experimental/conversation/conversation.ts +0 -142
  251. package/src/experimental/conversation/index.ts +0 -5
  252. package/src/experimental/conversation/types.ts +0 -126
  253. package/src/experimental/cypher/ast.ts +0 -75
  254. package/src/experimental/cypher/combinators.test.ts +0 -137
  255. package/src/experimental/cypher/combinators.ts +0 -148
  256. package/src/experimental/cypher/echo-data-source.ts +0 -105
  257. package/src/experimental/cypher/execution-plan.test.ts +0 -44
  258. package/src/experimental/cypher/execution-plan.ts +0 -208
  259. package/src/experimental/cypher/index.ts +0 -8
  260. package/src/experimental/cypher/parjs-shims.d.ts +0 -10
  261. package/src/experimental/cypher/parjs.ts +0 -10
  262. package/src/experimental/cypher/parser.ts +0 -19
  263. package/src/experimental/cypher/query-executor.test.ts +0 -47
  264. package/src/experimental/cypher/query-executor.ts +0 -145
  265. package/src/experimental/cypher/schema.test.ts +0 -17
  266. package/src/experimental/cypher/schema.ts +0 -86
  267. package/src/experimental/index.ts +0 -6
  268. package/src/experimental/ner/ner.test.ts +0 -163
  269. package/src/experimental/research/exa.ts +0 -38
  270. package/src/experimental/research/instructions.tpl +0 -64
  271. package/src/experimental/research/research.test.ts +0 -263
  272. package/src/session/tools.ts +0 -117
  273. package/src/testing/artifacts.test.ts +0 -182
  274. package/src/testing/data.ts +0 -13
  275. package/src/testing/defs.ts +0 -9
  276. package/src/testing/logger.ts +0 -129
  277. package/src/testing/object-extraction.test.ts +0 -71
  278. package/src/testing/ollama.ts +0 -15
  279. package/src/testing/printer.ts +0 -41
  280. package/src/testing/query-promts.ts +0 -75
  281. package/src/testing/query.test.ts +0 -88
  282. package/src/testing/test-data.ts +0 -379
  283. package/src/testing/test-schema.ts +0 -79
  284. package/src/util/index.ts +0 -5
  285. package/src/util/trim.ts +0 -15
  286. package/vendor/parjs-browser.mjs +0 -4
  287. package/vendor/parjs-default.mjs +0 -8
  288. /package/dist/types/{src/bin → bin}/chat.d.ts +0 -0
  289. /package/dist/types/src/{experimental/research → research}/research.test.d.ts +0 -0
@@ -1,129 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import type { ImageSource, MessageContentBlock } from '@dxos/artifact';
6
-
7
- import type { ConversationEvent } from '../experimental';
8
-
9
- export const createLogger = ({
10
- stream,
11
- filter,
12
- onImage,
13
- }: {
14
- stream?: boolean;
15
- filter?: (event: ConversationEvent) => boolean;
16
- onImage?: (img: { id: string; description?: string; source: ImageSource }) => void;
17
- } = {}) => {
18
- const images: Record<string, any> = {};
19
- let currentText = '';
20
-
21
- return (event: ConversationEvent) => {
22
- if (typeof filter === 'function' && !filter(event)) {
23
- return;
24
- }
25
-
26
- const printContentBlock = (content: MessageContentBlock) => {
27
- switch (content.type) {
28
- case 'text':
29
- process.stdout.write(content.text);
30
- break;
31
- case 'tool_use':
32
- process.stdout.write(`⚙️ [Tool Use] ${content.name}\n`);
33
- break;
34
- case 'image': {
35
- if (content.id && content.source) {
36
- images[content.id] = content.source;
37
- }
38
- process.stdout.write(`[Image id=${content.id} mediaType=${content.source?.mediaType}]`);
39
- break;
40
- }
41
- }
42
- };
43
-
44
- const onTextBlockPrinted = (text: string) => {
45
- const imageMatch = text.match(/<image id="([^"]+)"(?:\s+prompt="([^"]+)")?\s*\/>/);
46
- if (imageMatch && onImage && images[imageMatch[1]]) {
47
- onImage({
48
- id: imageMatch[1],
49
- description: imageMatch[2], // Extract prompt as description if present
50
- source: images[imageMatch[1]],
51
- });
52
- }
53
- };
54
-
55
- if (stream) {
56
- switch (event.type) {
57
- case 'message_start': {
58
- process.stdout.write(`${event.message.role.toUpperCase()}\n\n`);
59
- for (const content of event.message.content) {
60
- printContentBlock(content);
61
- }
62
- break;
63
- }
64
- case 'content_block_start': {
65
- currentText = '';
66
- printContentBlock(event.content);
67
- break;
68
- }
69
- case 'content_block_delta': {
70
- switch (event.delta.type) {
71
- case 'text_delta': {
72
- currentText += event.delta.text;
73
- process.stdout.write(event.delta.text);
74
- break;
75
- }
76
- case 'input_json_delta': {
77
- process.stdout.write(event.delta.partial_json);
78
- break;
79
- }
80
- }
81
- break;
82
- }
83
- case 'content_block_stop': {
84
- process.stdout.write('\n');
85
- onTextBlockPrinted(currentText);
86
- currentText = '';
87
- break;
88
- }
89
- case 'message_delta': {
90
- break;
91
- }
92
- case 'message_stop': {
93
- process.stdout.write('\n\n');
94
- break;
95
- }
96
- }
97
- }
98
-
99
- switch (event.type) {
100
- case 'message': {
101
- if (!stream || event.message.role !== 'assistant') {
102
- process.stdout.write(`${event.message.role.toUpperCase()}\n\n`);
103
- for (const block of event.message.content) {
104
- switch (block.type) {
105
- case 'text':
106
- process.stdout.write(block.text + '\n');
107
- onTextBlockPrinted(block.text);
108
- break;
109
- case 'tool_use':
110
- process.stdout.write(`⚙️ [Tool Use] ${block.name}\n`);
111
- process.stdout.write(` ${JSON.stringify(block.input)}\n`);
112
- break;
113
- case 'tool_result':
114
- if (block.isError) {
115
- process.stdout.write('❌ [Tool Error]\n');
116
- process.stdout.write(block.content + '\n');
117
- } else {
118
- process.stdout.write('✅ [Tool Success]\n');
119
- process.stdout.write(block.content + '\n');
120
- }
121
- }
122
- process.stdout.write('\n\n');
123
- }
124
- }
125
- break;
126
- }
127
- }
128
- };
129
- };
@@ -1,71 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- // import { AnthropicBackend } from '../conversation';
6
- // import { runLLM } from '../conversation';
7
- // import { createUserMessage } from '../conversation';
8
-
9
- // test('extract objects from the DXOS explainer', async () => {
10
- // const result = await runLLM({
11
- // model: DEFAULT_EDGE_MODEL,
12
- // messages: [
13
- // createUserMessage(`
14
- // # README
15
-
16
- // > Welcome to DXOS Composer.
17
-
18
- // Here, you can:
19
- // - Create and organize things
20
- // - Share and collaborate with others in real-time
21
- // - Work offline
22
-
23
- // Composer is:
24
- // - Free. Software built with DXOS requires no expensive server infrastructure to operate.
25
- // - Private. Your data never travels to or lives on any servers. Connections with collaborators are peer-to-peer.
26
- // - Local-first. Your data is stored entirely in your browser.
27
- // - Extensible. Add features by building plugins.
28
- // - Open source.
29
-
30
- // Your feedback is most welcome: feature requests, bug reports, questions: [Discord](https://discord.gg/uTYyx6srAW).
31
-
32
- // See also:
33
- // - [DXOS Documentation](https://docs.dxos.org) where you can build your own local-first, collaborative software.
34
- // `),
35
- // ],
36
- // system: `
37
- // <instructions>
38
- // Extract a list of objects that appear in the text.
39
- // Objects can include names, places, technologies, people, concepts, etc.
40
- // Extracts objects that are interesting or important in the context of the text.
41
- // </instructions>
42
-
43
- // <formatting>
44
- // Output a list of object names from text, each surrounded with an object <object> tag.
45
- // </formatting>
46
-
47
- // <example>
48
- // <input>
49
- // Czerniaków was born on 30 November 1880 in Warsaw, Poland (then part of the Congress Poland). He studied engineering in Warsaw and Dresden and taught in the Jewish community's vocational school in Warsaw.
50
- // </input>
51
- // <output>
52
- // <object>Czerniaków</object>
53
- // <object>30 November 1880</object>
54
- // <object>Warsaw</object>
55
- // <object>Poland</object>
56
- // <object>Congress Poland</object>
57
- // <object>engineering</object>
58
- // <object>Dresden</object>
59
- // </output>
60
- // </example>
61
- // `,
62
- // tools: [],
63
- // backend,
64
- // });
65
-
66
- // log('result', { result });
67
- // });
68
-
69
- // const backend = new AnthropicBackend({
70
- // apiKey: process.env.ANTHROPIC_API_KEY!,
71
- // });
@@ -1,15 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { DEFAULT_OLLAMA_MODEL, OllamaClient, type OllamaClientParams } from '../ai-service';
6
-
7
- /**
8
- * Create a test client with small local model and no temperature for predictable results.
9
- */
10
- export const createTestOllamaClient = (options?: Pick<OllamaClientParams, 'tools'>) => {
11
- return new OllamaClient({
12
- tools: options?.tools,
13
- overrides: { model: DEFAULT_OLLAMA_MODEL, temperature: 0 },
14
- });
15
- };
@@ -1,41 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { inspect } from 'node:util';
6
-
7
- import type { Message, MessageContentBlock } from '@dxos/artifact';
8
-
9
- export class ConsolePrinter {
10
- printMessage = (message: Message) => {
11
- // eslint-disable-next-line no-console
12
- console.log(`${message.role.toUpperCase()}\n`);
13
- for (const content of message.content) {
14
- this.printContentBlock(content);
15
- }
16
- };
17
-
18
- printContentBlock = (content: MessageContentBlock) => {
19
- switch (content.type) {
20
- case 'text':
21
- // eslint-disable-next-line no-console
22
- console.log(content.text);
23
- break;
24
- case 'tool_use':
25
- // eslint-disable-next-line no-console
26
- console.log(`⚙️ [Tool Use] ${content.name} ${inspect(content.input, { depth: null, colors: true })}`);
27
- break;
28
- case 'tool_result': {
29
- let data: any;
30
- try {
31
- data = JSON.parse(content.content);
32
- } catch {
33
- data = content.content;
34
- }
35
- // eslint-disable-next-line no-console
36
- console.log(`⚙️ [Tool Result] ${content.toolUseId} ${inspect(data, { depth: null, colors: true })}`);
37
- break;
38
- }
39
- }
40
- };
41
- }
@@ -1,75 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { Schema } from 'effect';
6
-
7
- import { defineTool, ToolResult } from '@dxos/artifact';
8
- import { toJsonSchema } from '@dxos/echo-schema';
9
- import { log } from '@dxos/log';
10
-
11
- import { executeQuery, formatJsonSchemaForLLM, type DataSource } from '../experimental';
12
- import { trim } from '../util';
13
-
14
- export const createCypherTool = (dataSource: DataSource, schemaTypes: Schema.Schema.Any[] = []) =>
15
- defineTool('dxos.org/echo', {
16
- name: 'query',
17
- description:
18
- 'Query the ECHO graph database in cypher query language. Returns data from the database.' +
19
- (schemaTypes.length > 0 ? `\n\n${createSystemPrompt(schemaTypes)}` : ''),
20
- schema: Schema.Struct({
21
- query: Schema.String.annotations({
22
- description: `
23
- A valid cypher query string to execute.
24
- Query must have one MATCH clause.
25
- Match clause can have multiple patterns but they must all be connected via a relationship chain.
26
- Query might have zero or one WHERE clauses.
27
- Query must have one RETURN clause.
28
- RETURN clause can have multiple expressions separated by commas.
29
- DISTINCT keyword is not allowed.
30
-
31
- <example>
32
- MATCH (n:Person) RETURN n.name
33
- </example>
34
-
35
- <example>
36
- MATCH (s:Studio)-[:PRODUCED]->(m:Movie)-[:PRODUCED_IN]->(c:City {name: "Las Vegas"}) RETURN s
37
- </example>
38
-
39
- <example>
40
- MATCH (a:Actor)-[:STARRED_IN]->(m:Movie)<-[:PRODUCED]-(s:Studio {name: "Cinema Pictures"}) WHERE m.name = "Once upon a time" RETURN m.name, a.name
41
- </example>
42
- `,
43
- }),
44
- }),
45
- execute: async ({ query }) => {
46
- try {
47
- log('cypher query', { query });
48
- const results = await executeQuery(dataSource, query);
49
- log('query complete', { results });
50
- return ToolResult.Success(results);
51
- } catch (e: any) {
52
- log.catch(e);
53
- return ToolResult.Error(e.message);
54
- }
55
- },
56
- });
57
-
58
- export const createSystemPrompt = (schemaTypes: Schema.Schema.Any[]) => trim`
59
- You have access to ECHO graph database. You can query the database to get data to satisfy user prompts.
60
-
61
- Database schema is defined in pseud-cypher syntax. The schema is:
62
-
63
- <schema>
64
- ${formatJsonSchemaForLLM(schemaTypes.map((schema) => toJsonSchema(schema)))}
65
- <schema>
66
-
67
- Before replying always think step-by-step on how to proceed.
68
- Print your thoughts inside <cot> tags.
69
-
70
- <example>
71
- <cot>To answer the question I need to ...</cot>
72
- </example>
73
-
74
- Before answering the user's question, decide what tools you need to use to answer the question.
75
- `;
@@ -1,88 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import { test } from 'vitest';
6
-
7
- import { createUserMessage } from '@dxos/artifact';
8
- import { EchoTestBuilder } from '@dxos/echo-db/testing';
9
- import { ObjectId } from '@dxos/echo-schema';
10
- import { SpaceId } from '@dxos/keys';
11
- import { log } from '@dxos/log';
12
-
13
- import { AI_SERVICE_ENDPOINT } from './defs';
14
- import { createLogger } from './logger';
15
- import { createCypherTool, createSystemPrompt } from './query-promts';
16
- import { createTestData, seedTestData } from './test-data';
17
- import { Contact, Organization, Project, Task } from './test-schema';
18
- import { AIServiceEdgeClient, DEFAULT_EDGE_MODEL } from '../ai-service';
19
- import { runLLM, EchoDataSource } from '../experimental';
20
-
21
- const client = new AIServiceEdgeClient({
22
- endpoint: AI_SERVICE_ENDPOINT.LOCAL,
23
- });
24
-
25
- test.skip('cypher query', async () => {
26
- const dataSource = createTestData();
27
- const schemaTypes = [Organization, Project, Task, Contact];
28
-
29
- const cypherTool = createCypherTool(dataSource);
30
-
31
- const spaceId = SpaceId.random();
32
- const threadId = ObjectId.random();
33
-
34
- const result = await runLLM({
35
- model: DEFAULT_EDGE_MODEL,
36
- tools: [cypherTool],
37
- spaceId,
38
- threadId,
39
- system: createSystemPrompt(schemaTypes),
40
- history: [
41
- createUserMessage(
42
- spaceId,
43
- threadId,
44
- 'Query the database and give me all employees from DXOS organization that work on Composer and what their tasks are.',
45
- ),
46
- ],
47
- client,
48
- logger: createLogger({ stream: false }),
49
- });
50
-
51
- log('DONE', { result: result.result });
52
- });
53
-
54
- test.skip('query ECHO', async () => {
55
- await using builder = await new EchoTestBuilder().open();
56
- const { db, graph } = await builder.createDatabase();
57
-
58
- const schemaTypes = [Organization, Project, Task, Contact];
59
- graph.schemaRegistry.addSchema(schemaTypes);
60
-
61
- seedTestData(db);
62
- await db.flush({ indexes: true });
63
-
64
- const dataSource = new EchoDataSource(db);
65
- const cypherTool = createCypherTool(dataSource);
66
-
67
- const spaceId = SpaceId.random();
68
- const threadId = ObjectId.random();
69
-
70
- const result = await runLLM({
71
- model: DEFAULT_EDGE_MODEL,
72
- tools: [cypherTool],
73
- spaceId,
74
- threadId,
75
- system: createSystemPrompt(schemaTypes),
76
- client,
77
- history: [
78
- createUserMessage(
79
- spaceId,
80
- threadId,
81
- 'Query the database and give me all employees from DXOS organization that work on Composer and what their tasks are.',
82
- ),
83
- ],
84
- logger: createLogger({ stream: false }),
85
- });
86
-
87
- log('DONE', { result: result.result });
88
- });